Melbourne Draw 48K MELBOURNE DRAW FOR THE 48K SPECTRUM Now you can create dazzling, intricate colour graphics and pictures on your Spectrum screen without special programming skills. Written by Philip Mitchell, creator of all the stunning graphic effects used in Melbourne House programs, this amazing graphics program will enable you to design and illustrate sophisticated images yourself. You can use Melbourne Draw to explore all artistic possibilities offered by the exciting new creative medium of computer graphics and create any illustration or picture you want. Melbourne Draw has hundreds of practical and technical applications too: design circuit diagrams, create vehicle designs, draw maps, or even do a layout of your floor plan. In fact with Melbourne Draw the graphics potential of your Spectrum becomes unlimited. Just look what you can do: * Create more exciting graphics and characters in your own programs. * Reduce or enlarge images to any size. Add special effects and depth to your game backgrounds. * Enlarge sections of the screen display up to sixteen times for intricate detailing, then reduce them back to their original size. Create personalised titles and lettering anywhere on the screen in any direction - even backwards or upside down. * Control and alter the colours of your Spectrum at will. * Store all your graphics on to cassette. * Easily create and define UDG (User Defined Graphics) characters - you can even store your custom UDG areas on cassette. Whether you're a computer enthusiast interested in art, or an artist interested in computer graphics, Melbourne Draw will turn you into a micro-chip Michelangelo. 131 Trafalgar Road, London SE10, United Kingdom 4/75 Palmerston Cres., South Melbourne, 3205, Australia INTRODUCTION Having written a number of graphic games for the Spectrum I have found that the most time consuming task is that of designing and drawing the screens and graphics needed for a game. This program is the end result of much experimentation and frustration trying to produce something that would enable quick and accurate entry of graphic data onto the computer. Its single most important feature is its ability to magnify a portion of the screen enabling easier viewing. The dot size of the standard screen is just too small to accurately put fine detail into a picture. This program is suitable for drawing static screens (such as the title page of a game), for checking how a shape or object looks on the screen, or for designing and storing User Defined Graphics. It gives you full control not only of the screen but also of the attributes including FLASH and BRIGHT. Pictures may be saved to, or loaded from, tape (three sample pictures are included on the reverse side of the tape), and the program also has the capability of working with pictures created by other programs. A lot of effort has been put into making this program easy to use while still being powerful enough to create top quality pictures with a minimum of work. I hope you will find it as useful as I have. Philip Mitchell GETTING STARTED The chapters in this booklet have been written to teach you how to use MELBOURNE DRAW by having you experiment with the program while you read. So the first thing to do is to load the program, using the command: LOAD "M draw" or LOAD "" This will load the BASIC control program which, since it is auto running, will load the machine language drawing program. The control program will now display a command menu from which you can choose the action to perform. All of the available commands are fairly self explanatory and they will be described in more detail in later sections. But for now just press the "p" key to execute the machine language drawing program and read on. SOME PRELIMINARY CONCEPTS This section is to explain some of the terms used throughout the booklet. Firstly the word 'display' refers to the 24 line by 32 column area that is used to list programs and display the results of PRINT commands in BASIC. As you know, the display is really made up of two areas of the computer's memory, the first (refered to as the 'screen' in MELBOURNE DRAW, BASIC calls it the display file) is the block of memory that defines which dots are on or off on your television screen. The second area (called the 'attributes' by both MELBOURNE DRAW and BASIC) is what specifies the colours for the picture. A 'pixel' is just another name for any dot on the display. And lastly the 'cursor' is a visual indication on the display of where any actions you perform on the display will take place. You will probably remember that BASIC splits the screen into two sections, the upper 22 lines are for your programs while the lower 2 lines are used by the BASIC system for commands and reports and cannot normally be accessed from BASIC programs. MELBOURNE DRAW however allows you to use the entire screen for your pictures. THE INFORMATION WINDOW There are two lines on the display that normally give the current status of the program. These two lines are usually situated at the bottom of the screen but can be moved to the top of the screen to allow drawing on the bottom two lines. The information presented in this window is as follows (don't worry if some of this does not make sense as all will be made clear in later sections). The first message tells you the MODE that the program is in, either SKIP, SET, RESET, INVERT, SCROLL or TEXT. The next word tells you what you are editing either the SCREEN or the ATTRibutes. Below these are two numbers labelled X and Y. These are the co-ordinate address of the cursor, with the numbering system being the same as that used by the BASIC PLOT command. As you know, this numbering system puts the co- ordinate (0,0) at the lower left corner of the display. Unfortunately, because BASIC does not allow access to the bottom two lines on the screen, this co-ordinate is not the true lower left hand corner. Since MELBOURNE DRAW allows you to draw on the entire screen we need a numbering system that caters for this lower section of the screen but still maintains compatibility with the numbering system used by BASIC. This has been achieved by using negative values for the Y co-ordinate on the lower two lines of the screen. This means that the true lower left corner is actually co-ordinate (0,-16). To the right of the messages is a square block that tells you which magnification you are using and what section of the display is being shown in the magnified modes. Next to this is the section that shows you the current settings for the attribute parameters. CLEARING THE SCREEN If you have just loaded MELBOURNE DRAW then you will need to clear the screen. This is necessary because the screen may contain an old picture or just rubbish that was in the memory when you loaded the program. The clear screen command is activated by pressing CAPS SHIFT and "R" together. The following message will appear in the information window on the screen: CLEAR PAPER(P), INK(I), BOTH(B) SCREEN(S), ALL(A), OR NONE(N) This is a reminder to you of the options that are available to you for this command, they refer to the action taken if you press the key in the brackets. The actions performed are: Pressing Results in P Clears the PAPER colour of the attributes to the current setting also sets the FLASH and BRIGHT of the attributes to the current settings. I Clears the INK colour of the attributes to the current setting but does not effect FLASH and BRIGHT B Performs both of the above operations S Clears the screen area only - does not affect the attributes. A Performs all of P, I and S as above. N Exit without changing the screen. Now that you know how to clear the rubbish off the display you should try it: Press CAPS SHIFT and R, followed by A to erase everything and leave you with a clean white screen. One last point about the screen. Often you may find that the BORDER colour does not suit the picture you have drawn or that you would feel more comfortable using the program with the border in a particular colour. You can set the border to any of the available colours by pressing the 'B' key. The message "BORDER ?" will appear on the information window along with a flashing block prompting you to specify the desired colour. To tell the program which colour to use press any of the number keys 0 - 7. This will set the border to the colour written above the appropriate key. Pressing 'ENTER' will leave the border unchanged. MOVING THE CURSOR By now you should have a blank white screen which, if you look carefully, should have a small black flashing dot in the very center of the screen. This is your cursor and it tells you where things are going to happen on the screen. If you have just loaded MELBOURNE DRAW then the co-ordinate address of the cursor should be X = 127, Y = 87, and this should be displayed in the information window. (Don't worry if this is not the actual position of the cursor since you may have accidentally moved it). Now obviously we cannot do much with the picture unless we can move this cursor around the screen. In the MELBOURNE DRAW program there are 8 directions available for moving the cursor and they are UP, DOWN, LEFT, RIGHT and the diagonal directions UP/LEFT, UP/RIGHT, DOWN/LEFT and DOWN/RIGHT. Each of these directions is controlled by a single key on the keyboard and these keys have been laid out to make remembering the directions easy. UP/LEFT UP UP/RIGHT 'Q' 'W' 'E' LEFT 'A' 'D' RIGHT 'Z' 'X' 'C' DOWN/LEFT DOWN DOWN/RIGHT All these keys (and in fact most of the keys used within this program) have an auto repeat function built in if the key is held down for about 1 second. If you now try using these keys to move the cursor around the screen you should notice a number of things. Firstly the cursor stops at the edges of the display and does not wrap around to the opposite edge. This is to make positioning the cursor at the edge of the screen easier. You may have also noticed that it takes a while to move the cursor from one edge to another and you might be thinking that having the cursor wrap around would make it easier to move the cursor from one side to another. Do not despair, there are easy ways of moving the cursor a large distance that will be explained in the section entitled MOVING THE CURSOR FASTER. Lastly if you remember that MELBOURNE DRAW allows you to draw on the 'entire screen you may be wondering why the cursor will not move onto the lower section of the screen. This is because the information window would be overwritten if the cursor moved over it. The information window must be first moved out of the way before the cursor is moved down to the bot tom (see the section MOVING THE INFORMATION WINDOW). MAKING YOUR MARK ON THE SCREEN By now you should be able to move the cursor so now you will learn how to use it to draw a picture. Firstly if the screen is not blank you should clear it as described in the CLEARING THE SCREEN section. Now, next to the word MODE in the information window you should see the word SKIP (if another word is there press the 'SPACE' key). This word tells you which drawing mode the cursor will use as you move it. There are actually 6 possible modes but for the moment only 4 of them will be described. The first mode SKIP is the one that you should be in now. As the name suggests the cursor skips over the screen as it is moved without changing anything. Unless you are actually drawing something this is the mode that you will want to be in when you move the cursor so it is usually a good idea to glance at the information window to check the mode before you start moving the cursor. This mode is activated by pressing the 'SPACE' key. The next mode is SET and as the name implies, it is used to set the screen pixels ON as the cursor is moved. You should keep in mind when drawing with the cursor on the screen that only the screen will change, the attributes will not be altered so if you try to change pixels on an area that has the same PAPER and INK colours you will not see anything although the change will have been made. The SET mode is activated by pressing the 'ENTER' key. Try drawing some lines on the screen in this mode to see how it works. The third mode is RESET and is the opposite of SET since it will turn all the pixels OFF that the cursor is moved over. This mode is activated by pressing the 'O' key. The last mode for now is the INVERT mode which is activated by the 'I' key. Its effect is to invert the state of the pixels that the cursor is move over. That is if the pixel was on then it will be turned off and vice versa. Drawing mode summary: KEY MODE ACTION SPACE SKIP no change to the screen ENTER SET turn pixels on O RESET turn pixels off I INVERT invert the pixels One very important fact should be kept in mind while drawing pictures on the screen and that is that the pixel at the current cursor position will not be changed (according to the current drawing mode) until the cursor is moved to another position. The practical effect of this is that you should remember to move the cursor one more position at the end of a line so that the last pixel will be changed. The reason that the program works in this way is because, if the pixels were changed as soon as the cursor was on them, they would also change as soon as the drawing mode was changed. This would result in pixels being set and reset by accident much more easily than in the system used. As an alternative to moving the cursor one more position to change the pixel under the cursor, the 'S' key may be used. The action of the 'S' key is to perform the current mode on the pixel at the current cursor position. MAKING THINGS LARGER As mentioned earlier it is very difficult to draw accurately on the Spectrum screen with the pixels as small as they are. If you have been playing with the commands so far presented you may have discovered this for yourself. To make things easier to see you can magnify a portion of the screen by either 4X or 16X. To illustrate this, first clear the screen and move the cursor to the position (0,0) (remember to put the program in SKIP mode before moving the cursor). Now put the program in SET mode and move the cursor up until the Y co-ordinate is equal to 87, then move the cursor right until the X co-ordinate is equal to 127. You should now have two lines in the lower left quarter of the picture. To see how the 4X magnification works press the 'M' key once. You should see a number of changes on the screen. 1) The two lines are now along the left and top edges of the screen and are thicker than before. 2) The block in the information window has changed from all blue to three quarters green with the lower left quarter being blue. Firstly the magnification indicator in the information window should be explained. The blue section represents the section of the picture that is currently displayed on the screen. You will remember that in normal size mode the entire block was blue, showing you that all of the picture was on the screen. Now only 1/4 of the picture is on the screen (since everything has been enlarged 4 times there is only room to show 1/4 of the original) and as indicated by the blue block it is the lower left quarter of the picture. To see further how it works you should now move the cursor down until it bumps into the bottom edge and then left until it is back at (0,0). You now have a rectangle around the edge of the screen which judging by the magnification indicator should really be a rectangle in the lower left quarter of the picture. To check this press the 'N' key once, and sure enough it is a quarter screen rectangle (notice that the indicator is now all blue again). Pressing the 'M' key, once again will being the rectangle back to full screen size. Now if you look carefully at the cursor you should see that it is bigger than it was be fore and much easier to see. Because of this pictures are much easier to draw and change and just as importantly the cursor is easier to find when the screen has a lot of stuff on it. Now if this is not enough the screen can be, magnified again by pressing the 'M' key once more (i. e. press it once from normal mode to get to 4X and twice to get to 16X). If you do this you should see two thick lines and a huge cursor while the indicator has changed to a much smaller blue block. If you now move the cursor carefully to the top of the screen (until Y = 43) then across until X = 63 then down until Y = 0, you should have a border around the screen. To return to normal mode press the 'N' key twice (the 'N' key works the same way as the 'M' key but reduces magnification). You should now have a smaller rectangle inside the quarter screen rectangle drawn before. Since we only work on a portion of the picture at a time in the magnified modes we need some way to move to another block of the picture. Happily, this is all done automatically by the program. To demonstrate this go back into 16X magnification. You should have the cursor at position (63,0) which at this size is on the right edge of the screen. Now press the 'D' key to move the cursor right on pixel. You should now see only two lines on the screen and the blue indicator should have moved a little to the right. So as you can see the program automatically displays the correct picture block as you move the cursor. MOVING A BLOCK AT A TIME The last section described how to magnify the picture and move to different blocks of the picture in the magnified mode by just moving the cursor. There is an easier way to move to another block which works by moving the cursor a full block's width in any of the 8 cursor movement directions. To move the cursor an entire block you use the same keys that control the cursor normally but hold down either SHIFT key at the same time (note that just like in BASIC you should press the SHIFT key first and then the other key while holding the SHIFT key). If you still have the display from the last section you can try this on the two rectangles, otherwise on any picture that you currently have on the screen. (You may like to load one of the sample pictures from the other side of the tape and try out the magnification features on that. If so skip forward to the section entitled THE MAIN MENU PROGRAM to see how to load a program). You may find at first that you quickly get lost and are not sure exactly where on the picture you are. Don't worry, a bit of practice and you will feel at home with these magnified displays. If you do get lost there are three things that you can do, firstly check the magnification indicator. If you are still not sure check the cursor X,Y address and finally as a last ditch measure revert to normal magnification. PLAYING WITH THE ATTRIBUTES Now that you know all about moving the cursor around and drawing on the screen it is a simple step to working with the attributes. Firstly you should remember that the attributes can only be changed over a block of 8 X 8 screen pixels and so when working with the attributes everything changes to reflect this. The cursor is 8 times larger, when the cursor is moved it moves 8 pixels at a time etc. All the other controls presented so far work in exactly the same way. To change from screen editing mode (identified by the word SCREEN in the information window) to attribute mode press the 'H' key once (note the word ATTR replaces the word SCREEN). You should note that the cursor is now a character in size (presuming that you are in normal magnification) and you should experiment with moving it around the screen. In case you are wondering the X,Y co-ordinates given are of the bot tom left corner of the attribute cursor. One point that should be made is that, of the four drawing modes, only SKIP and SET are active in the attribute mode since, if you think about it, RESET and INVERT do not really apply to the attributes. SKIP mode is the same as for the screen i.e. the cursor skips over the attribute blocks. SET mode however combines the current settings for PAPER, INK, FLASH and BRIGHT and sets the current position to this (see the next section for how to change these settings). There is one last thing that must be mentioned about attribute mode and it concerns only the 16X magnified screen. If you now move the attribute cursor to position (0,32) then go into 16X magnification you will notice that the cursor is a very large block. If you now move the cursor up one position (hit the 'W' key) you will notice that half the cursor has disappeared. This is because along this row of the picture the attributes overlap the screen block boundary. If you move up once more you will notice that the other half of the old position is now below your cursor. Any changes you make to the picture will be performed correctly, just keep in mind that at this magnification the cursor sometimes gets chopped off. To get back to screen editing mode just press the 'H' key once more. CHANGING THE ATTRIBUTE SETTINGS By now you should know how to clear the screen and edit the attributes and you probably want to know how to change the settings to get different colours on the screen. It's really quite simple, so here goes. To change the INK colour (shown by the colour of the block next to the "I" at the bottom right of the information window) just press the number key (0-7) of the desired colour i. e. to get blue press 1, to get white press 7. To change the PAPER colour (shown by the colour of the block next to the "P" at the right of the information window) press either SHIFT key and the number key of the desired colour. To change the state of the BRIGHT setting press either the CAPS SHIFT key or the SYMBOL SHIFT key and while holding one of these keys press the 'B' key (whenever you see the word SHIFT it means that you may use either the CAPS SHIFT or the SYMBOL SHIFT keys along with any other key required by the command). If bright was turned off it will now be on and vice versa. When bright is on a bright white block will come on between the magnification indicator and the PAPER setting indicator. To change the state of the FLASH setting press either SHIFT key and the 'V' key. If flash was turned off it will now be on and vice versa. When flash is on a flashing black block will come on between the magnification indicator and the INK setting indicator. To experiment with these controls try pressing '4' to set the INK colour to green then 'SHIFT 0' to set the PAPER colour to black. Now press 'SHIFT R' then 'B' to clear the attributes to green ink on black paper. Your screen should now have a black background with green lines (if there was nothing on the screen try drawing a few lines and watch them come out in green). To demonstrate the 'bright' feature turn the BRIGHT setting on and set the paper and ink to white and yellow respectively. Then clear the entire screen notice how much brighter the screen is than the border. If you now set FLASH on and clear the screen again you should have quite an eye catching screen. To return to a more normal display turn off BRIGHT and FLASH and set the paper and ink colours to those that you prefer and clear the screen once more. I should like to make a few suggestions about colours at this stage. Obviously everyone has different tastes and eventually uses their own system when drawing pictures. Personally I prefer to draw a picture entirely in black and white (that is a white background with black ink) and then fill in the attributes when the main outline is finished. While you are starting out with this program you may like to try this until you settle upon a system that suits you. An important note It, has been said before but it is worth emphasising that unlike other drawing programs that set the screen pixels to the current colour settings as the cursor is moved, MELBOURNE DRAW only changes the attributes of your picture when specifically told to do so. This was done mainly because of the inability of the Spectrum computer to individually specify the colour of every pixel on the screen. FILLING IT ALL IN A feature that is very useful when drawing pictures is the ability to automatically fill in an area on the screen. MELBOURNE DRAW lets you do this by pressing the 'SHIFT F' keys. Filling will start from the current cursor position and continue until either the boundary of the area or the edge of the screen is met. The boundary is defined by the edge of the screen and any pixels on the screen but it MUST be continuous i. e. if there are any holes in it you may end up with more than you wanted being filled. To illustrate these ideas first clear the screen then draw a box in the centre of the screen. The box can be as large as you like but don't make it too small (about 80 by 60 is about right). Once you have drawn it set the mode to SKIP and move the cursor to the inside of the box. Before proceeding check very carefully that all the edges of the box meet and that there are no holes. Once you are sure that all is well press 'SHIFT F' and watch it fill up. If you see the entire screen start to fill up then you had a hole somewhere in the edge of the box and you really should have been more careful. Now that you know how to fill something I should mention exactly what makes up a continuous border for an area to be filled. Basically so long as you can trace your way completely around the area to be filled jumping from pixel to pixel in any of the 8 cursor movement directions or by following the edge of the screen then the boundary is continuous. To illustrate what happens when the boundary is not continuous (in case you have not already seen it) clear the screen and redraw your box only this time leave a small hole somewhere along the edge. Now fill it and watch the fill overflow onto the rest of the screen. You may be thinking that this fill is not really very fast especially if you want to fill a large area and you are right, the screen can be filled much much faster. The reason that it goes slowly is because there is a way out if you have made a mistake. Yes if you have left a hole in your boundary and are sitting there feeling miserable because your whole picture is being filled, relax, hit any key and lo and behold the original picture is returned to you intact. Remember though that once the fill has finished there is no way of recovering the original picture. If the picture was filled as fast as possible you would need to be pretty quick to stop a mistake. THE MAIN MENU PROGRAM The machine language program that does all the work in MELBOURNE DRAW is controlled by a BASIC program that allows your pictures to be saved and loaded from tape. It also allows blocks of UDG characters to be saved or loaded to tape (MELBOURNE DRAW allows you to use and define the UDG characters of the Spectrum, how to do this will be described later). When the menu is displayed, pressing any of the keys in the brackets will perform the command described. These commands will now be described in more detail. KEY COMMAND p Calls the machine language program to work on the picture currently in memory e Exit the BASIC program to thc normal BASIC system. Note if this key is pressed by accident the program can be re-entered by typing RUN 30 or GOTO 30 s Save the picture in memory to tape. The program first asks you for the name to be used for saving the picture. l Loads a picture from tape. The program firsts asks for the picture's name. v Verifies a picture that has been saved on tape. Firsts asks for the picture's name. S, L, V As for s, l, v but saves the UDG character area instead of the picture When supplying a name for the tape commands the same rules apply as for BASIC programs. That is - the name is limited to ten characters with a name being compulsory for a save but optional for a load or verify. One feature exists in MELBOURNE DRAW that is very useful, if the name that you type in is the word 'quit' (in lower case) then the tape operation will be aborted and you will be returned to the main menu. This means that if you hit the wrong key accidentally then you can return to the menu without breaking out of the program and restarting it. If no name is given for a load or verify then the first block of bytes found on the tape will be used. If by any chance an error is encountered during a load or verify then the program will stop and an error report will be displayed on the screen. In this case the program can be restarted by typing RUN 30 or GOTO 30. If the load or verify is successful then a message will be displayed on the screen and pressing any key will return you to the main menu. To return to the main menu from the machine language program simply press 'CAPS SHIFT SPACE'. CHARACTERS I have found that no matter which picture is being drawn somewhere on it someone will want some text or numbers or characters of some sort. Since it would be a laborious task to individually draw each character on the screen, MELBOURNE DRAW enables a limited form of text entry onto your pictures. I say it is a limited form because it lacks such nice features as inserting characters between other characters or inserting lines. In other words it is not, and makes no claim to be, a word processor or editor. On the plus side the text mode does allow you to put characters on the screen oriented in any of four directions. That is you can have them going normally across the screen from left to right, upside down from right to left, going up the screen from bot tom to top or coming down the screen from top to bottom. To demonstrate the text entry mode first clear the screen then press the 'T' key. You will notice that the word next to MODE in the information window has changed to TEXT and that the word screen has disappeared. Secondly the flashing cursor has changed to an arrow pointing right. This arrow is your text cursor and is there to tell you where the characters that you will type are to go on the screen. There are a number of things that you will need to know and remember to use the text mode properly. 1) The cursor movement keys are no longer the same as for normal picture drawing. Instead the text cursor is controlled by the arrow keys on the keyboard. This is one reason why an arrow is used as a cursor - to remind you to use the arrow keys to move it around. So to move the text cursor press 'CAPS SHIFT 5' to move left, 'CAPS SHIFT 6' to move down, 'CAPS SHIFT 7' to move up, and 'CAPS SHIFT 8' to move right. 2) You can enter any of the available characters that are on the keyboard provided that they are single characters only. You cannot type in any of the BASIC keywords (such as LIST or <= ) using only a single key press. Also the graphic blocks on the keys '1' - '8' are unavailable. The rest of the symbols are obtained as follows. To get Press Upper case alphabetic characters Press only the desired key. Lower case alphabetic characters Press 'CAPS SHIFT' and the desired key Numbers Press the desired number key Symbols in red that appear on the Press 'SYMBOL SHIFT' and the desired key key top Symbols in red that appear under Press 'SYMBOL SHIFT' and the desired key the key There is one exception to the above rules and that is the Copyright symbol found under the 'P' key. Since the " symbol appears on the 'P' key pressing 'SYMBOL SHIFT P' will give you a double quote ("). To get the Copyright symbol press 'SYMBOL SHIFT I' instead. The simplest way to learn how it works is to try it so now you should experiment with typing in some characters (one word of warning though - at this stage do not press 'SHIFT 9', 'CAPS SHIFT and SYMBOL SHIFT' or 'CAPS SHIFT SPACE' these will be explained later). 3) If you have been experimenting with the text mode you may have noticed that whenever you type a character over an old one the old one is completely erased. This is true no matter what was under the text cursor when a character is typed, whether it was another character or part of your picture. Because of this you should be careful when placing text that you do not overwrite any of your picture. Alternatively you could put all of the text onto the screen be fore you draw the picture. Do not worry however, if when moving the cursor around the screen it goes over part of your picture - it will NOT erase any of your picture unless a character is typed in. One advantage of this is to allow you to erase a large area of your picture with a minimum of effort, just enter text mode and put SPACEs on the screen where you want to erase your picture. 4) Also you may have seen that the cursor wraps around at the edges of the screen, however, it does not cause the screen to scroll if you try to move it off the bot tom of the screen. Instead it simply wraps around back up to the top of the screen again. Up till now you have only been entering characters from the normal character set. It is, however, possible to enter characters from the User Defined Character set (the UDG area). Keep in mind however that until the UDC set has been changed by you, either from BASIC or with MELBOURNE DRAW, that typing in UDG characters will merely give you the letters 'A' -'U'. Putting the program into graphics entry mode is done by pressing 'CAPS SHIFT 9' at which time you will see the word GRAPHICS appear on the information window. To go back to normal character mode press 'CAPS SHIFT 9' again. Once in graphics mode the only keys that will enter any characters are the letter keys 'A' to 'U'. Any other keys will be ignored. The next thing you will need to know about the text entry mode, is changing the direction of the cursor. You will remember that above I said that when a key is pressed the corresponding symbol is put onto the screen and the cursor MOVES IN THE DIRECTION THAT IT IS POINTING. Since you can point it in any of four directions you can, obviously enough, type in characters in any of four directions. To change the direction of the cursor first press 'CAPS SHIFT' and 'SYMBOL SHIFT' together. You will see that the arrow cursor is now filled in was a solid arrow. This is to remind you that you are changing its direction. To set the desired direction press one of the keys '5', '6', '7' or '8'. This will set the direction to that of the arrow printed above the appropriate key on the keyboard. Pressing any other key will leave the cursor direction unchanged, in either case the cursor will go back to an open arrow. Try this now, setting the cursor to all four directions. Now that you know how to change the direction of the cursor try putting it in another direction (other than right) and typing characters. Notice how the characters come out facing in the same direction as the cursor. It's almost like being able to turn the screen on its side or upside down. You will notice that the cursor still wraps around from side to side and top to bottom in the same manner as when typing from left to right. Lastly to return to normal picture mode from text mode press the 'CAPS SHIFT SPACE' combination. (Be careful only to press it once otherwise you may find yourself back at the main menu instead). GRIDS Before describing how to set the UDC character set with MELBOURNE DRAW you will need to know about the ability of the program to overlay a character grid onto your picture. You will remember that the screen is divided into 24 lines by 32 characters by the BASIC system for printing characters. This is the same system that the text entry mode uses (described in the last section). Since it is often useful to be able to see exactly how your picture is positioned with respect to these character positions you can lay a grid over the screen. This grid is available in two forms both of which use the BRIGHT facility of the attributes to achieve the desired effect. To illustrate this clear the screen, then go into text mode and type in some characters anywhere on the screen. Return to normal mode and press the 'G' key. Notice now the screen now has a checkerboard pattern of white and bright white squares and that each character that you typed is positioned exactly within one square. Each of these squares is exactly one character space in size (8 X 8 pixels). If you press the 'G' key once more the grid will disappear and whatever attributes were originally on the screen will return. The grid has no effect on your picture except to show you where the character boundaries are. You may enter text and draw lines normally with the grid in place. You may also use the program in the magnified modes and the grid will be magnified along with everything else. However you may not edit the attributes while the grid is displayed; this is because you cannot see the attributes to change them. The second form of the grid is very similar to the first except that it does not take away the current attributes before setting bright to make the checkerboard effect. What this means is that you will still see the picture with the colours as you defined them except that some of the PAPER colours will be brighter than normal. In most cases this form of the grid is not quite as useful mainly because the bright control does not work very well on the darker colours. In other words BRIGHT black is still black, BRIGHT blue is barely noticeable and you need to look very hard to see BRIGHT red and BRIGHT magenta. Because of this if you use these colours in your picture you will not see the grid very well unless you use the first form. This second form of the grid is placed on the screen by pressing either shift key and the 'G' key together. SETTING UDG CHARACTERS Now that you know all about characters and grids you are ready to learn how to set any of the UDC characters. If you remember there are 22 of them and they are referenced by the letter keys 'A' to 'U'. MELBOURNE DRAW refers to them in the same way so if you change the UDG character 'A' from BASIC or MELBOURNE DRAW the same character will be changed. The basis of changing a UDG character is the character grid on the screen, by this I mean that any of the 760 character positions on the screen may be copied into any of the 22 UDG characters. What you need to remember is that the UDG character is built up from the contents of a character position: if the shape you wish to use is not well positioned on character boundaries you will have to move it first (see the section on SCROLLING THE SCREEN). To actually set a UDG character position the cursor within the character that you wish to use then press the 'U' key. The message "UDG CHARACTER ?" will appear in the information window with two flashing blocks next to it. You should now press the letter key of the character that you wish to change (if you press the 'U' key by accident just press the 'SPACE' key to return without changing any characters). Once you have pressed the correct key press the 'ENTER' key to change the character. This gives you a chance to check that you have actually pressed the correct key since the letter of the key that you hit will now be in the position of the first. flashing block. If it is the correct key press 'ENTER', if however you have hit the wrong key press 'SPACE' instead to get the two flashing blocks back again. Once the correct key and 'ENTER' have been pressed the information window will display eight numbers separated by commas. These values are what you would use if you wished to define the same UDG character from a BASIC program. Pressing any key will now return you to the program. SCROLLING THE SCREEN The comment was made earlier that your UDG characters must be positioned exactly within a character. So what do you do if you have drawn up 20 characters only to find thatthey are all slightly out in terms of the character boundaries. (Well firstly if you are going to define a set of UDG characters then it is probably better to do it with the grid turned on). You may sometimes have a picture a portion of which you wish to save as UDG characters. In this case it is unlikely that what you want to save will be lined up within characters. To allow you to position things where you want them MELBOURNE DRAW will let you scroll the entire screen in any of the eight cursor movement directions. The screen wraps around in all directions so that if you scroll it to the right then whatever falls off the right edge will come back on the left edge. You may be familiar with the way BASIC scrolls the screen up by one character when you print a screen full of information. MELBOURNE DRAW allows a much finer scroll since it only scrolls by 1 pixel in all directions. At this stage you may be wondering what is done with the attributes when the screen is scrolled since, if we only scroll the screen by 1 pixel, then the attributes will not fit the screen any longer and we do not have the ability to scroll the attributes by 1 pixel - they can only be scrolled on a character basis. In actual fact MELBOURNE DRAW scrolling works in two modes, it only scrolls that section of the screen that you were working on before you entered scroll mode. That is if you were editing the SCREEN then the screen only will be scrolled (by 1 pixel) and the attributes will not be changed. If you were editing the ATTRibutes then only the attributes will be scrolled (by 1 character at a time) and the screen will not be changed. Entering SCROLL mode is controlled by the 'K' key. Pressing it will change the word next to MODE to SCROLL telling you that you are now scrolling the display. The next word will tell you which part you are scrolling either SCREEN or ATTRibutes. To actually scroll the display use the same cursor control keys that are used for moving the normal cursor. Most of the other commands that are available from the other modes are available in scroll mode (see the table at the end for which commands apply to which modes). You can get out of scroll mode by pressing any of the other mode control keys (SPACE, ENTER, O, P or T) and you will then be put in the mode corresponding to the key pressed. Remember that no matter how much you scroll the screen you can not lose any of your picture so do not be afraid to experiment with this mode. MOVING THE INFORMATION WINDOW Up till now we have assumed that the information window has been on the bottom two lines of the display. In everything we have done we have ignored these two lines but in many cases you may wish to draw part of your picture down there. To do so you must first move the window since while it is there you cannot position the cursor on these two lines (note some commands such as clearing the screen and filling an area always work on the entire screen no matter where the window is). To move the window press 'SHIFT 9' and the window will move up to the top two lines of the display. There is one situation in which the window will not move and that is if the cursor is anywhere within the area of the display where the window wants to go. If this happens just move the cursor and try again. Lastly, to move the window back to the bottom, press 'SHIFT 9' again. Once you have moved the window up to the top try moving the cursor down onto the bottom two lines and watch the Y co-ordinate value. As you can see the Y value becomes negative as described in the introduction. THE AMAZING SHRINKING AND EXPANDING SCREEN You already know how to magnify a portion of your picture in order to more easily change it. What you don't know is that you can scale the entire picture down by 7/8ths or up to 1 1/7th. What this means is that the picture is physically enlarged or reduced by the appropriate factor. A word of caution though if you are going to use this feature you should save your picture first since the results are NOT reversible. If you are good at maths you may be curious about that last statement since the given sealing factors are complementary, i. e. if you shrink something to 7/8ths and then enlarge it to 1 1/7th you should end up with the same thing. If you do this in MELBOURNE DRAW you will end up with the same sized picture but it will have a number of vertical and horizontal blank lines through the picture. This is because when the picture is reduced some information is lost and it is very very difficult to recover this information when the picture is enlarged. On a similar note if you enlarge a picture to a size greater than the screen you will lose whatever falls off the edges. Despite all this you may still find a use for this feature (if only to impress your friends) so why not play with it, perhaps with one of the pictures provided on the reverse side of the tape. ONE LAST TRICK Just in ease you haven't had enough already there is one small trick that MELBOURNE DRAW can do for you and that is to perform a left/right inversion of the screen and attributes. This is controlled by the 'SHIFT L' key combination. Try it now with whatever picture you have on the screen to see what it does (obviously it doesn't do anything if the screen is blank). MOVING THE CURSOR FASTER It was mentioned in the section on moving the cursor that it takes time to move the cursor from one side of the screen to the other. There are three ways to increase the speed at which you move the cursor. 1) Magnify the picture and move the cursor to the approximate section that you want with the block move commands. 2) Go into attribute editing mode and move the cursor (make sure that you are in mode SKIP when you do or you may end up changing the colours on the screen without meaning to), 3) Go into text mode and use the text cursor movement keys to position the cursor where you want it then return to normal mode. In the last two eases you are actually moving the cursor 8 times faster than when editing the screen. WHAT IS MELBOURNE DRAW GOOD FOR? Basically anytime that you need to create some form of graphic image for your Spectrum computer you can use MELBOURNE DRAW to assist you. Whether it's just an artistic masterpiece for people to look at or a spaceship for that great new game that you're writing. But to effectively use the results from the program some technical information may be of assistance. Firstly the program actually has two copies of your picture in memory at once. The first is the display that you see on the television screen and which was referred to throughout this booklet. Since the display can be magnified up to 16 times it does not always hold all of your picture. So we need a copy of the entire picture somewhere else. This second copy of the picture is located in memory starting at address 32768 and is 6912 bytes long. It is an exact duplicate of the layout of the screen display and it is this block that is saved to and loaded from tape. What this means is that if you load a MELBOURNE DRAW picture from another program with the command: LOAD "name" CODE then it will load at the above address. If you are going to work with the picture from a machine language program this may be a reasonable address to load the picture at. However most BASIC programs would prefer to load the picture directly onto the screen display. If this is the case you can use the command: LOAD "name" SCREEN$ to position it correctly. An alternative that allows you to load the picture anywhere in memory is to use the command: LOAD "name" CODE xxxxx where xxxxx is the address of where you want the start of the picture to be. As an example: LOAD "name" CODE 16384 is equivalent to the above command LOAD "name" SCREEN$ . Another way that MELBOURNE DRAW can make life easier for you is in designing UDG characters. You can draw the shape that you want to be made up with UDG's on the screen and change it until it is right, then save it as UDG characters. After your shape has been defined you can save your UDG characters onto tape to be reloaded at a later stage. To reload your block of UDG characters back into the machine, use the command: LOAD "name" CODE USR 'a' which will place the characters in the UDG area no matter where it has been moved in the computer's memory. Alternatively you can write down the values that the program displays for you when you define a UDG and use them in your program. As an example of this last method, suppose that you have drawn a solid circle within a character and wish to use it as a UDG character from another program. You define it as a UDG with MELBOURNE DRAW and the values: 0,60,126,126,126,126,60,0 are displayed. The following short BASIC program will define the UDG character 'A' as the above circle. 10 FOR i=0 TO 7 20 READ b: POKE USR "a"+i,b 30 NEXT i 40 DATA 0,60,126,126,126,126,60,0 MELBOURNE DRAW always takes the start address of the UDG character set from the BASIC system variable UDG (located at address 23675 in the system variable area). This means that if you move the UDG area before loading and running MELBOURNE DRAW it will use and store UDG characters at the new address. In a similar fashion MELBOURNE DRAW takes the address of the normal character set from the system variable CHARS (located at address 23606). This means that, if the character set has been moved elsewhere in the computer's memory, MELBOURNE DRAW will print characters from the new address when in text entry mode. Note this does not affect the printing in the information window since the built in character set is always used for this section, it will however affect the main menu program. If you are planning on moving either character set then you should keep in mind that MELBOURNE DRAW uses a large portion of the available memory of your Spectrum computer. The actual memory used is as follows. 23755 - 25596 Basic control program. 32768 - 39679 Internal copy of the picture. 40960 - 47103 Machine language MELBOURNE DRAW program When the machine language program is run it saves the current value of the machine stack pointer and moves the stack to memory location 40959. This means that while the machine language is running the stack will grow downwards from this address so that some of the memory between the internal picture and the program is used as well. The address given for the BASIC program assumes that you are using a standard 48K Spectrum with no Microdrives attached. SUGGESTED USES FOR MELBOURNE DRAW 1. Title pages, such as those on THE HOBBIT and PENETRATOR 2. Creating UDG files that allow BASIC programs to save on memory by not having lots of long data statements. 3. Creating a background for BASIC or machine language programs. By creating a picture and loading it from tape early on in your program your own shapes and characters can move around within a very elaborate scenery. 4. Specialist applications such as circuit diagrams. You can set up common items such as resistors, capacitors and transistors as UDG characters then position and link them easily. To obtain a printout of your design simply load it onto the screen form BASIC and do a COPY command. e. g. 10 LOAD "" SCREEN$ 20 COPY AFTERWORD Every effort has been made to ensure that this program is as error free and easy to use as possible. If you have any comments, criticisms or suggestions about MELBOURNE DRAW please feel free to write to me with your ideas. Philip Mitchell 131 Trafalgar Road, London SE10, United Kingdom 4/75 Palmerston Cres., South Melbourne, 3205, Australia COMMAND SUMMARY NOTE: 'SHIFT' means either CAPS SHIFT or SYMBOL SHIFT may be used (but not both) otherwise the required keys will be specified exactly. The columns labelled T, Sc, S and A stand for TEXT, SCROLL, SCREEN and ATTRibutes respectively and denote which commands are available in the relevant mode. If an X appears in the column opposite a command then that command is available in that mode. Lastly the letters and numbers that are in brackets are the key options available to the relevant command. Keys(s) Command T Sc S A Q Move cursor up/left X X X W Move cursor up X X X E Move cursor up/right X X X A Move cursor left X X X D Move cursor right X X X Z Move cursor down/left X X X X Move cursor down X X X C Move cursor down/right X X X (when combined with either SHIFT key the above keys move the cursor block by a block when in magnified picture mode) SHIFT 5 Move cursor left X SHIFT 6 Move cursor down X SHIFT 7 Move cursor up X SHIFT 8 Move cursor right X S Set pixel to current mode X X M Magnify screen X X X N Reduce magnification X X X B Set border colour (0-7) X X X 0-7 Set INK attribute X X X SHIFT 0-7 Set PAPER attribute X X X SHIFT B Toggle BRIGHT attribute X X X SHIFT V Toggle FLASH attribute X X X SHIFT R Clear screen (P, I, B, S, A, N) X X X O Enable RESET mode X X X I Enable INVERT mode X X X ENTER Enable SET mode X X X SPACE Enable SKIP mode X X X H Toggle ATTR edit mode X X X K Enter SCROLL mode X X T Enter TEXT mode X X X U Define a UDG character (A-U) X X X SHIFT F Fill an area of the screen X X X G Toggle grid form 1 on/off X X X SHIFT G Toggle grid form 2 on/off X X X SHIFT 9 Move information window X X X SHIFT L Reverse screen left - right X X X SHIFT 8 Scale picture (I, D, E) X X X CAPS SHIFT/ Change cursor direction X SYMBOL SHIFT (pressed together) - (5, 6, 7, 8) CAPS SHIFT Exit text mode or program X X X X and SPACE (must be pressed together)