Envision is a powerful utility consisting of two programs in one. The first is a character editor, which allows you to redefine the ATARI character set to your liking. The second program is a screen editor, which allows you to design your own screens using the character set you redefined. The size of your screens are not bound by the limits of the TV display, but can, in fact, be many times larger. A normal text screen is 40 characters across by 24 characters down, but with Envision, they can be 255 by 16, 20 by 204, 74 by 55, or any combination of rows and columns totalling no more than 4096 characters in all.
Of course, the applications for such a utility are various: menu screens, maps of cities or islands, etc. for an adventure game, scrolling backgrounds for games, static displays for games, and title pages for any program. There are more uses, but these are the most obvious.
The way Envision works is analogous to making your own jigsaw puzzle. The character editor allows you to make the pieces of the jigsaw puzzle, while the built-in screen editor lets you put the pieces in place, using any "puzzle piece" as many times as you like.
The character editor and the screen editor are both in memory at the same time, but behave as two independent programs, so that you can load any set of "puzzle pieces" for any given screen. That is, loading or saving many different character sets will not disturb the screen currently in memory. Likewise, you can load many different screens without losing the character set currently in memory.
What this feature allows you to do is 'mix & match' different fonts (same thing - 'character sets' tends to be a mouthful after a while) with different screens. For example, assume that you have many different character sets saved on disk, and you have just completed a screen of text. What you can now do is load a font, see what the screen looks like using that font, and, if you don't like it, load up another font and try that, and so on.
Another benefit of having both programs in memory at once is the unneeded disk access that is eliminated. Consider the old fashioned way, in which you have a character editor and a screen editor, but on separate disks: Load up your character editor. Create your font. Save it on disk. Load up your screen editor. Load your font into the screen editor and begin designing your screen. Halfway through, you notice that one of the major characters for your screen isn't right and must be redefined. So, save your screen. Load up your font. Make the necessary changes. Save the font. Load up the screen editor. Load up your screen. Load up the changed font. Continue work on your screen and pray that the rest of the font is flawless, should you have to go through the tedious burden of having to save everything, load up the proper program, make the proper change, save everything, load the proper program, load up the proper screen and font...again!Using Envision, you simply boot it up. Define your font. Press the OPTION key (you are now in the screen editor - no disk access involved here) and create your screen (no need to load up your font since it's still in memory). Halfway through, you notice that one of the major characters isn't right and must be redefined. So, press OPTION (enter the character editor), make the necessary change, and press OPTION again. Continue work on your screen with not a care in the least that you find another bug in the font and have to suffer the tedious burden of pressing the OPTION key again (see what I mean?).
Now let's take a look at Envision (you may wish to boot it up, at this time). We'll begin with the character editor, since it's the default program when the boot is complete.
At the top of the character editor screen, there are two status lines. At the middle of the first screen, it should read 'ATASCII= 65 A'. This tells you that you are currently editing the letter "A", and that its ATASCII (ATari ASCII) value is 65. The second status line gives you values for CR0,CR1,CR2,CR3, and CB. These are values for the color registers 0,1,2,3, and the background, respectively.
Now look at the text on either side of the large editing grid. These are the commands supported by the character editor, with the first letter of each command being highlighted. The highlighted character is the letter you would type to activate that command.
The large editing grid is where you can make changes to any given character with the joystick. The character you are editing will be enlarged and displayed on the grid.
Beneath the grid is the character set, itself. It defaults to the ROM images for each character (something has to be there to begin with), but each and every character can be changed and modified. This area is a normal Antic 2 (Graphics 0) text mode, and any changes made to any character will be displayed here. There is a gray-green flashing cursor sitting on the letter , its power-up default character. This cursor denotes the character you are currently editing and shall be known from now on as the character set cursor (mighty original name, at that!)
Lastly, beneath the character set display, there lies the text mode display area. It holds the character you are currently editing ("A" on power-up) in each of the Atari's six text modes. They are, from top to bottom, as follows.
ANTIC MODE | GRAPHICS MODE (BASIC) |
2 | 0 |
3 | - |
4 | - |
5 | - |
6 | 1 |
7 | 2 |
And now, here are the commands for the character editor, along with an explanation of each. You can escape from virtually every command by pressing the "ESC" key (of course).
This command will restore the character you are currently editing back to its original ROM version.
Will blank the current character (that you are editing).
Allows you to send the current character image to another character. When activated, this command will prompt you to type the character you wish to copy to on the keyboard. If you wish to copy the current character to an upper-case character such as "D" or "$", then you must type a shifted "D", or a shifted "4", as just the "D" key by itself will be interpreted as a lower-case "d". The same goes with control characters, too. This is because the "CAPS/LOWR" key is (what we commonly call in the key-masking business) a 'dead' key. The current character will be copied over to the character chosen.
This command will directory the disk in drive 1, and display all files with an extension of '.SET'. The editing grid will be temporarily removed from the screen, and the files will be listed in its place. If there isn't enough room in this area for all the files, a 'press any key' message will appear, prompting you to (what else?) press any key. The files on the screen will then scroll up one line and the next file will be displayed underneath. All of the files will have been displayed when the free sectors message appears. Pressing any key at this point will clear the files from the screen, restore the editing grid, and exit the directory command.
Will prompt you to select a new character to edit. Character input is the same as the COPY TO command. After making a selection, the chosen character will be enlarged to the editing grid, and will also be displayed in each text mode at the bottom of the screen.
This command essentially makes a negative of the current character by turning on all pixels in the current character that are off, and (conversely) turning off all pixels that are on. Here is an example using the letter "A" (a '-' denotes pixels that are off, and a '+' denotes a pixel that is on):
-------- ---++--- --++++-- -++--++- -++--++- -++++++- -++--++- -------- |
++++++++ +++--+++ ++----++ +--++--+ +--++--+ +------+ +--++--+ ++++++++ |
Before Inverse | After Inverse |
The LOAD command will prompt you for the filename of the character set that you wish to load. Since numbers are not allowed as the first character in a filename, the number keys will be 'dead' when the prompt cursor is in the first position. Use the "DELETE/BACK S" key to correct mistakes, and press "ESC" to abort the LOAD command altogether. Wildcards ('*') and question marks ('?') are not allowed in the filename). Press "RETURN" after you have typed in the filename. The screen will then blank while the character set is loaded, and will be restored when the load is complete.
This command will flip the current character horizontally as demonstrated below with the ROM version of the letter "C":
-------- --++++-- -++--++- -++----- -++----- -++--++- --++++-- -------- |
-------- --++++-- -++--++- -----++- -----++- -++--++- --++++-- -------- |
Before Mirror | After Mirror |
Allows you to take the image of another character and place it over top of the current character's image. The current image is, however, not replaced by the chosen character's image, as no pixels are turned off as a result of the overlay. Character input is the same as in the COPY TO command.
This command allows you to change the colors on the lower portion of the display. When activated, you will be prompted to select which color register you wish to change. This is a single key input (0,1,2,3, or B) and pressing the "RETURN" key is not necessary. Next, you will be asked for a new value for the chosen color register (The range is 0 to 255). You can enter a value in decimal, or, if you like, in hexadecimal by first typing a "$", and then a two digit hexadecimal number (from 00 to FF). Since this input requires more than one keypress, you must press "RETURN" after typing your number. You may back up the prompt cursor to correct mistakes by pressing the "DELETE/BACK S" key. Once you press "RETURN", the color register at the bottom of the screen will change to the color you specified, and the second status line will reflect your chosen color, as well. The screen editor will use the color values on the color register status line when you go to the screen editor.
This command will rotate the current character 90 degrees clockwise, as demonstrated below with the letter "A":
-------- ---++--- --++++-- -++--++- -++--++- -++++++- -++--++- -------- |
-------- -++++--- -+++++-- --+--++- --+--++- -+++++-- -++++--- -------- |
Before Rotate | After Rotate |
This command allows you to save the character set you have designed to disk. You will be prompted to enter the filename under which the character set is to be saved. See the LOAD command for filename input. The screen will blank while your character set is saved, and will be restored when the save is complete.
The TYPE command will allow you to enter a byte value for each row of the current character. A prompt will appear beside the first row of the editing grid, to which you type a decimal value in the range of 0 to 255, or a hexadecimal value in the range of 00 to FF, preceded by a dollar sign ("$"). When you press "RETURN", the first row of the editing grid will display the graphic equivalent of the value you entered, and the prompt will move down to the next row of the grid. Press the "ESC" key to back up to the previous row. Pressing "ESC" when the prompt is on the first row of the editing grid will exit the TYPE command.
This command is a great convenience, as activating it will cause the current character to revert back to what it had looked like when you first started editing it (eg, you really messed up a character trying to make it look better, so rather than start the character over from scratch, you just press 'U', and you're back to where you were before you started messing it up! (As I am not one of the world's greatest artists myself, I tend to use this command a lot.)
When you type "V", there will be a set of numbers printed on either side of the editing grid. The left column of numbers are the byte values in decimal for each row of the current character, while the right column contains the same values, only in hexadecimal. These Values will remain on the screen until a key is pressed. If the key pressed is a command key, then that command will be activated (I just use the "ESC" key, myself).
This command is the link between the fonts you design, and the programs that will use them. This command will generate data statements for BASIC, SynAssembler, or the Editor-Assembler cartridge (EASMD, for short). You will first be prompted as to which language you would like the character set data to be generated for. This is a single key input (S,E, or B) and pressing "RETURN" is not necessary. You will then be asked for the filename under which the data statements are to be written. See the LOAD command for filename input. Next you will see four headings, the first of which is 'Start Char.'. This heading has a prompt beside it, to which you would type the character at which the data statements will start. The character you type will replace the prompt, and the second heading, 'End Char.' will be prompted. The WRITE routine will stop writing data statements after it has written this character to disk (to write out data statements for the whole character set, simply type the space bar as the start character, and the "TAB" key as the end character). The next heading will require you to enter the starting line number for the data statements. The range is 0 to 32000, and this number must be entered in decimal only. The next prompt will require you to enter an increment for the line numbers. The range for this input is 1 to 9999 (I just use 10), and also must be entered in decimal. Now, finally, you will be asked if the parameters you have entered are correct. The "ESC" key will abort the whole thing and exit the WRITE command. If you type "N", you will go back to the 'Start Char.' parameter entry for corrections. Typing "Y" means everything's just peachy and proceed to create the data statements file on drive 1. As usual, the screen will blank while writing to the disk, and will be restored when the write is complete.
The XEROX command simply allows you to duplicate another character's image to the character you are editing, replacing the old image completely. But fret not if you copied the wrong character, for you have the UNDO command to fall back on.
The following commands do not appear on the character editor screen, and are as follows:
Note that when you press the space bar, the word 'Graphic' appears on the left side of the first status line. This toggle is for the benefit of the screen editor, and the reason is this - Antic modes 6 and 7 (GRAPHICS 1 and 2 in BASIC) are two color character modes, the first color being the background color, and the second color being one of the four other color registers. The color register used is determined from the high 2 bits of the ATASCII value of the character, as shown below with the ATASCII value of the letter "a":
01100001 |
Normal lower case 'a' (ATASCII=97) |
01 100001 |
Interpreted by Antic Modes 6 & 7 as Upper-Case 'A' Using Color Register 1 |
So, what we are left with is an upper-case 'A' using color register 1, and not a lower case "a". What this means is that we only have half of the character set to use in modes 6 and 7 (GRAPHICS 1 and 2). This is where the graphic toggle comes in. When 'Graphic' is printed on the first status line, the screen editor will use the lower-case and graphics characters in those two character modes, rather than the upper-case letters and the numbers. Pressing the space bar again will toggle back to upper-case.
This will scroll the current character image up by one row. Any part of the image that scrolls off the top of the editing grid will reappear at the bottom. Pressing the "-" key by itself will move the character set cursor up one row with wraparound.
Will scroll the character image down by one row. As above, any part of the image that scrolls off the bottom of the grid will reappear at the top. Pressing the "=" key by itself will move the character set cursor down one row with wraparound.
Scrolls the character image left by one column. Almost like before, any part of the image that scrolls off the left side of the editing grid will reappear on the right. Pressing the "+" key all by itself will move the character set cursor left by one character with wraparound to the last character of the previous row.
Scrolls the character image right by one column. And you guessed it! Any part of the image that scrolls off the right side of the editing grid will reappear on the left. And what a coincidence! Pressing the "*" key all by itself will move the character set cursor to the right by one character with wraparound to the first character of the next row.
Pressing the "OPTION" key will activate Envision's screen editor, but don't worry. Pressing "OPTION" again at any point will take you back to the character editor and nothing will have been touched. You'll even be on the same edit character as when you left!
When you press the "SELECT" key, notice that the words 'ROM Set' appear on the left side of the first status line, and if you have already made any modifications to the character set, they will vanish. You are now using the Atari ROM character set. However, you may still make changes to your redefined font, as the current character will still be displayed on the editing grid and at the bottom of the screen in its redefined form. When you go to the screen editor, it will also be using the ROM set. Press the "SELECT" key again to go back to your redefined set. By the way, if you are designing a picture and not a stylized font of some kind, and you are in the XEROX command, not knowing what the character you wish to xerox actually is because the whole character set has been redefined and you don't know what that 'tree' character actually is (you need to know since you have to type it on the keyboard), the "SELECT" key will work here so you can switch to the ROM set temporarily to see what character you want. This key also works in the EDIT, COPY TO, and OVERLAY commands, as well.
This key will restart the character editor. It will wipe out the redefined set in memory and replace it with the ROM set. It will also reset all the colors to the Atari's power-up defaults. However, you need not worry about hitting this key accidentally, as you are first prompted to confirm the devastation described above.
This brings us to the screen editor. The screen editor doesn't have as many commands as the character editor, but the commands it supports are powerful, indeed. Let's begin with the display.
To get to the screen editor from the character editor, press the "OPTION" key. The screen editor display is broken into three parts. The first part at the top of the display is the screen editor status line. It tells you the following pieces of information:
The second part of the screen editor lies directly beneath the status line. This is the command window. Any command that requires keyboard input from you, the user, will use this window for prompts, etc. Upon power-up, and whenever you are not using a command, a message will be printed in this window telling you the command keys for the screen editor. The commands listed are not the only functions that the screen editor performs, however, but more on that later.
The third and last part of the screen editor display is the actual display area for your screens. You will see a flashing cursor in this area. This is the screen cursor. When you type a letter on the keyboard, that characte will be printed on the screen right where the cursor lies, and the cursor will move to the next character position to the right. If the cursor is at the end of a line when you type a character, it will go to the beginning of the next line after it prints the character.
And now, here is a rundown of the commands supported by the screen editor:
This command allows you to change some of the parameters under which the screen editor operates. When this command is activated, you will see a command sub-menu displayed in the input area. There are four parameters that you can change:
This sub-command allows you to increase or decrease the number of rows on your screen. When selected, you will be informed of the current number of rows in your screen. At the bottom of the input area, you are informed of the 'Safe Range'. The safe range is described like this: The memory for a display cannot exceed 4K, or 4096 bytes of memory. This is because of the way the Antic chip addresses its display memory. Nevertheless, in order for the screen to reside within 4K of memory, the number of rows times the number of columns must not exceed 4096. Therefore, the safe range is given to let you know the maximum number of rows you can have before the columns have to be taken in to compensate for the extra rows.
Basically, if you enter a value beyond the safe range given, then the columns will have to be decreased in order to keep the screen within the 4K boundary. If you do this, then you will be asked if it is all right to decrease the columns, since you will lose part of you screen if you do. If you do not confirm this, then you will be prompted to enter a new number of rows. If you enter a number of rows that is less than what you currently have, you will be prompted as to whether it is all right to decrease the rows, as you, again, stand to lose part of your screen. Nevertheless, when you have entered a new number of rows, the CHANGE PARAMETERS sub-menu will again be displayed. To abort the CHANGE ROWS sub-command, press "ESC" during any of the prompts.
This sub-command works in much the same way as CHANGE ROWS above, but with a few extra rules. Again, you are informed of the current number of columns, along with the safe range. The slight difference is that the ABSOLUTE minimum number of columns you can EVER have is 20. Since every text mode needs at least enough characters to fill up one screen row, you must have at least 40 columns in Antic 2,3,4, and 5. You can never have less than 40 columns in these modes. In Antic modes 5 and 6, however, only 20 characters are required to complete one row on the screen. Therefore, the absolute minimum number of columns you can have in these modes is 20. You can abort this command as in the CHANGE ROWS sub-command.
This sub-command allows you to increase or decrease the speed at which the screen cursor moves when controlled with the joystick. The default speed at power-up is 3. When selected, this sub-command will tell you the current speed setting, and will prompt you for a new speed from 1 to 5. Speed 1 is the fastest, and speed 5 is the slowest. Since this is a single key input, you need not press the
This final sub-command of the CHANGE PARAMETERS menu allows you to change the text mode that you are working with. When selected, you will be informed of the current Antic mode that you are working with, and you will also be prompted to enter a new Antic mode from 2 to 7. Since this, too, is a single key input, pressing the "RETURN" key is not necessary. There is a small exception to the range mentioned. If you are currently working in Antic mode 6 or 7 and you have less than 40 columns on your screen, the range for this command will be only 6 to 7, instead of 2 to 7. This is because there are not enough columns in your screen to support a 40 column text mode. In order to switch to a 40 column text mode, you will have to first increase the number of columns in your display to at least 40 columns. To abort the CHANGE MODE command, press the "ESC" key.
To exit the CHANGE PARAMETERS menu, press the "ESC" key.
This command, when activated, will read the directory of the disk in drive 1, and display the filenames of all screen files on that disk. If there are no screen files on the disk, you will hear and beep, and will be informed that there are no screen files on the disk. The DIRECTORY command looks for all files with an extension of 'SCR'. If screen files do exist on the disk, then they will be displayed in the input area in two columns. If the input area becomes filled with filenames, a press any key message will appear, waiting for you to hit a key. When you hit a key, the filename portion of the input area will scroll up one row, and new filenames (if any) will appear. When the number of free sectors message appears in the filename portion, you have reached the end of the directory. At this point, pressing any key will exit the DIRECTORY command.
Here we are at the first (alphabetically, anyway) of the box/global commands. For each of the commands of this type, the first input required will be to choose either a Box command or a Global command. Respond with 'B' or 'G'. If you choose global, then the command will affect the entire screen. In this case, the FILL command, let us suppose you chose a Global Fill. The next input required is for you to input the character that is to be used as the fill character. Do this by typing the appropriate character on the keyboard. If necessary, you can use the "CAPS/LOWR" key and the Atari logo (inverse) key in order to type the exact character desired. Once you have done this, the screen will instantly fill with the character you entered, and the fill command is complete. Before going on to the Box Fill, let me dwell on one tiny little problem that you may encounter.
There is one specific character that cannot be typed at the prompt for the fill character (or any other single character entry prompt) by using what seems to be the appropriate key. The "ESC" key can be entered by simply hitting the "ESC" key at the prompt. However, you cannot enter an inverse "ESC" character using the "ESC" key itself, not even with the Atari logo key. This is because the inverse "ESC" character has an ATASCII value of 155, which is the ATASCII value for the "RETURN" key. Therfore, in order to enter an inverse "ESC" character, you must hit the "RETURN" key instead of "ESC". This is fine and dandy for character input at the command prompts, but what if you wanted to print an inverse "ESC" character on the screen, rather than a fill? Read on...
If you choose to do a Box Fill, then you will be asked to move the cursor (with the joystick only) to the upper left corner of the area that you wish to fill on the screen. When you have move the cursor there, push the joystick button, after which the characer beneath the cursor (if there is one) will be be highlighted. Then, you will be asked to move the cursor (again, with the joystick) to the lower right (opposite) corner of the area that you wish to fill. Move the cursor with the joystick, and, when you have positioned the cursor, hit the button again. Note that when you move the joystick here (before you press the button) that you are controlling the size and dimensions of a highlighted box, the upper left corner being where you first positioned the cursor, and the lower right corner being the cursors present position. Also note that you cannot move the cursor above the upper left corner that you defined (else it would then be the lower left corner, but that is irrelevant), nor can you move the cursor to the left of the upper left corner that you defined. After you press the button, you will be asked to input the character to be used as the fill character. Follow the charcter input directions discussed in the Global Fill command in the previous two paragraphs. Now, then, what do you do if you just simply wish to type an inverse "ESC" character on the screen? The only way to do it is to execute the Box Fill command, and, when prompted, move the cursor to the position where you wish to type the inverse "ESC", press the button (defining the upper left corner of the box area), and then, when you are prompted for the lower right corner of the box, press the button again without moving the joystick, thus defing the upper left corner and the lower right corner to be on the same character (essentially, you have defined a box that is one character by one character in its dimensions). Then, when prompted for the fill character, press the "RETURN" key. Voila, you've printed an inverse "ESC" character on the screen. You may abort the fill command at any time by pressing the "ESC" key (ironically) at any of the prompts.
This simple command can be a real convenience. It allows you to go directly to any specific position on the screen (the larger your screen dimensions, the more convenient it becomes). When selected, you will be prompted to enter an X coordinate. The range for this value varies with the dimensions of your screen, and the range is diplayed beside the prompt. You will then be asked for a Y coordinate. At this prompt, you may hit the "ESC" key to re-enter the X coordinate. The range for the Y coordinate value will also be displayed beside this prompt. Once you have supplied both values, the cursor will jump instantly to the X and Y coordinate that you specified. To abort this command, press the "ESC" key when prompted for the X coordinate.
This command allows you to load up a screen that has been previously saved to disk. When selected, you will be prompted to enter the name of the file that you wish to load. Press "RETURN" after entering the filename. Make sure that the disk is in drive 1 beforehand. The screen will blank temporarily while the file is loading, and will be restored when the load is complete. Note that, when the loaded screen appears, the colors that were set for that screen are now set here, along with the text mode that it was created in. When you save a screen file to disk, the screen colors, text mode, and the screen dimensions are saved as well, so that they are restored when you load it up later. To abort th LOAD command, press the "ESC" key when prompted for the load filename.
This is another of the box/global commands. This command allows you to mirror the screen, or part of the screen, horizontally or vertically. You will first be asked as to whether you would like a Box Mirror, or a Global Mirror. Respond by typing either 'B' or 'G'. If you choose a Global Mirror, then you will be prompted as to whether you wish to mirror the screen horizontally or vertically. Respond by typing either 'H' or 'V'. A vertical mirror will cause the screen to be flipped upside down, while a horizontal mirror will cause the screen to flip from right to left. If you choose a Box Mirror, you must first define the box area to be affected before chosing the mirror type. See the Box FILL command as to defining a box area. As in the FILL command, you may abort the MIRROR command at any time by pressing the "ESC" key at any prompt.
This command allows you to change the DRAW character for the joystick button. When you select this command, you will be asked to type the character that is to be the new DRAW character. See the FILL command as to single character input. Once you have entered the desired character, the 'Draw=' stat in the status line will be updated, completing the command. Since the "ESC" key is a legitimate DRAW character, there is no way to abort from this command.
This command works exactly the same way as the POKE COLOR REGISTER command in the characer editor.
Yet another of the box/global commands that you only seem to find in decent hi-res drawing programs. This is a very powerful command, indeed. It allows you to replace all occurrences of a character with another character. Doesn't sound like much, but its uses are many. When selected, you are (as usual) prompted as to whether you woould like a Box Replace, or a Global Replace. Respond by typing either 'B' or 'G'. If you select a Box Replace, you must first define the box area for the Replace command to affect. See the BOX FILL command as to defining the box area. You will be asked to type the character that is to be replaced on the screen. See the FILL command as to single character input. When you have selected the characer to be replaced, you will then be asked to type the character that is to replace the character (that you first entered). After you have done this, you will finally be asked if you would like the replace to be done randomly or not. Reply with 'Y' or 'N' (Yes or No). If you respond by typing 'N' (No), then all occurrences of the first character that you entered will be replaced with the second character entered. However, if you chose to have the replace done randomly by typing 'Y' (Yes), then approximately 50% of all the occurrences of the first character will be replaced by the second. You may ask, "Well, where's the sense in that?", so let me give you a little example of the power of the random replace (This is my favorite command!). Suppose you are designing a screen and it is to be a map of some kind. You went to the character editor and designed a tree character, and now you want to put trees on your screen. But, wait! You don't want the whole screen to be filled with trees, and it would be tedious to go all over the screen deciding whether to put a tree there or not. So, what do you do? Well, let's assume that the screen is made up of mostly space characters, and that the only non-space characters are characters that make up buildings on your map, or some such item where trees do not usually grow. All you have to do is select the REPLACE command, and choose a Global Replace. Now, when you are asked for the characer to be replaced, type the space character. When you are asked for the character that is to replace the space character, type the character that you have redefined as your tree. Now you will be asked if you would like the replace to be done randomly. Answer 'Y', and TA DA! Now you have trees spread randomly all over your map in an instant. Now (for the sake of argument), suppose that there are just too many trees on your screen, and you'd like to thin out the forest a little. No problem. Simply do a Global Replace again. Enter the tree character as the character to be replaced, and the space character as the character to replace it, and do the replace randomly (answer 'Y' to the randomly prompt). TA DA!! Now about 50% of your trees vanish, leaving you with a thinner forest! This is called power. This is called time saving. This is called ergonomics. This is called a lot of things, but this example is called scratching the surface. As usual, pressing the "ESC" key on any prompt (except the single character entry prompts) will abort the REPLACE command.
This command allows you to save your screen to disk. You will be prompted to enter a filename for your screen to be saved under. See the LOAD command as to filename entry. Pressing the "ESC" key when prompted for the filename will abort the save. While saving, the screen will blank temporarily, and will be restored when the save is complete.
This command differs from the other box/global commands, in that it doesn't support a global option. This is because of what the command does. The BOX TRANSFER command allows you to define a box area on the screen, and move the entire contents of that box to another place on the screen. Since, what with this being a transfer, you have to have a place to move the box to, there cannot be a global option, since there could be no destination area in which to move the entire screen. Anyways, when you select this command, you will be asked to select an upper left corner, and then an upper right corner, just as the FILL and MIRROR commands do. When you have supplied these two inputs, you will then be asked to move the box area (with the joystick) to the place on the screen where you would like the contents of the box to be moved. Note that, as you move the joystick around the screen, the highlighted box area will move with it, with the lower right corner of the box resting on the screen cursor. The box follows you around so that you may more accurately place the box over the destination area. When you have done this, press the button. Now you will be prompted to specify as to whether you would like the transfer done as a solid transfer, or an overlay. If you choose a solid transfer, EVERY character within the area you first defined will be moved into the destination area, and the area where those characters were moved from will be empty (filled with spaces). If you select the transfer to be done as an overlay, then only non-space characters will be moved to the destination area. That is, if there are any space characters in the area to be moved, they will not be transferred to the destination area. This option is handy, if, for example, you have a solid shape on the screen, and would like to transfer a pretty border from one area on the screen over top of the shape. With a solid transfer, all the characters will be moved, including the spaces inside the border shape, so doing a solid transfer would essentially wipe out the shape you're trying to put the border around. With an overlay, the space characters will not be moved, so that your result is a solid shape on the screen, with the border around it. Only the border characters were moved. To exit the BOX TRANSFER command, press the "ESC" key at any of its prompts.
This is another of the great convenience commands of the screen editor. With this command supported, you are now allowed to make mistakes on your screen. Supposing you wanted to fill a certain part of your screen with a single character. You use the BOX FILL command, and do the fill. But wait! You've just realized (too late, you think) that you filled the wrong portion of the screen, and now you've wiped out 3 buildings (or whatever data was there). No problem (again). All you have to do is activate the UNDO command, and the fill has been completely undone, and you have your buildings back, sparing you from having to redesign that whole section of the screen. Now you just redo the BOX FILL, only in the right place, and you're fine (don't worry, if you mess it up again, as I do, just use UNDO again). The UNDO command will undo the LAST BOX or GLOBAL command that was executed. This means that, if you do a Box Fill, and then a Box Transfer right after that, then activating the UNDO command will only undo the Box Transfer. Also note that any typing on the keyboard you have done since the last BOX or GLOBAL command will also vanish, so a little caution is sometimes needed so that you don't lose a lot of typing. What I do when I'm designing a screen is this: When I'm doing a lot of typing, rather than using the BOX or GLOBAL commands, every once in a while I'll do a BOX TRANSFER. However, I'll select a one character by one character box area, when prompted, and when asked to move the box to the destination, I just press the button, without moving the box anywhere (thus making the whole transfer seem pointless). When asked to choose a transfer type, I pick either the overlay or the solid transfer, it doesn't matter which. Since no transfer has been executed, but the editor thinks it has done one, it will have treated my inputs as a normal transfer. Now, when I hit the UNDO command, the editor will undo the last BOX or GLOBAL command, in this case, the TRANSFER. Essentially, the editor will undo nothing, as there wasn't really a transfer done. Only now, I still have all the text that I had typed in. Since the UNDO command's results are instantaneous, there isn't time to escape from this command.
This command is the screen editor equivalent of the WRITE command supported by the character editor. Although the parameter input for this command is relatively the same, there are fewer prompts in this WRITE command than in that of the character editor. This command will write out your screen to the disk in drive 1 in the form of data statements. The three types of data statements supported are BASIC (DATA statements), EASMD (Editor/Assembler Cartridge .BYTE statements), and SynAssembler (.HS statements). When you select this command, you will first be asked to select a data statement type from the three just mentioned. Respond by typing 'B' (BASIC), 'E' (EASMD), or 'S' (SynAssembler). This is a single key input, and pressing "RETURN" is not necessary. Next, you will be asked to enter a filename under which the data statements for your screen will be written. See the LOAD SCREEN command as to filename input. After entering the filename and pressing
This is the last of the great box/global commands. The BOX X-COPY command allows works in much the same way as the BOX TRANSFER command, except that the characters in the area of the screen that are to be moved are not erased when they are sent to the destination. Basically, this command allows you to make duplicates of portions of the screen and put them anywhere else on your screen. As with the TRANSFER command, there is no GLOBAL option, and for the same reason as the TRANSFER command. When selected, this command will first ask you to move the cursor to the upper left corner of the box area that you wish to copy. See the BOX TRANSFER command as to precisely how to do this. Next, you will be asked to move the joystick to the lower right corner of the box area that you wish to copy. Again, see the TRANSFER command for specifics on this. Now, you will be asked to move the box to the area that you wish to send the copy of the box first specified (see TRANSFER command). Finally, you will be asked to choose whether you would like the X-COPY done as a solid COPY, or an overlay (see TRANSFER command for explanations of these two selections). Make your choice by pressing either "S" or "O". This is a single key input, and pressing the "RETURN" key after making your selection is unnecessary. Once you have made your selection, a copy of the characters in the box you defined will be sent to the destination area that you specified. To exit the TRANSFER command, press the "ESC" key at any of the prompts. To wipe out the results of the transfer after you have done it, use the UNDO command.
While in the screen editor, the keyboard will function almost exactly as it does when you are in the Atari memo pad mode, with a few exceptions. The really damaging keys, like "SHIFT-CLEAR", and "CONTROL-CLEAR" have been disabled. After all, it wouldn't be nice to suddenly have all your work wiped out with a single keystroke (although you can get it back with the UNDO command). Besides, the RESTART SCREEN EDITOR command key ("START" key) is well out of the way, and requires confirmation for clearing the screen, making it a practical alternative. The "CONTROL-2" keypress combination no longer sounds the keyboard bell, but instead treats the keypress combination as if you had previously hit the "ESC" key, printing the 'bell' character. Here are the useful editing keys that are enabled while in the screen editor, and a brief explanation of the results of using them:
When you type this keypress combination, all rows (on your screen) below and including the row that the cursor occupies will move down by one row. The row that the cursor is on will now be blank. Any characters that were on the last row of your screen will be lost (but not to the UNDO command). The cursor position on your screen will not be altered whatsoever.
Typing this key combination will affect only the row that the cursor occupies. All characters to the left of and including the character that the cursor rests on will be shifted one character to the right. The character space that the cursor is on will then be blank (actually, a space character). The last character on the row that the cursor is on will be lost. Again, the cursor's position will not be altered as a result.
This key combination is the opposite of the "SHIFT-INSERT" keypress. Typing "SHIFT-DELETE" will cause all rows below (but not including) the cursor row will be moved up by one row. The last row of the screen will now be blank, and the row that was below the cursor's row now occupies the cursor row. As with the previous two keypresses, the cursor position is not altered.
Typing this keypress combination will affect only the row that the cursor is on. When you type this keypress, all characters to the right of (but not including) the cursor character will move one character to the left. The character that was to the right of the cursor character now lies beneath the cursor, and the last character space on that row will be blank (in reality, a space character). As with "SHIFT-DELETE", the cursor's postion is not altered as a result of using this keypress combination.
When you press the "RETURN" key, the screen cursor will jump to the first character of the next row on the screen. If you press this key while the cursor lies anywhere along the last row of the screen, you will hear a 'ding' sound, and the cursor will jump to the first character of the first row of your screen. The 'ding' sound is to let you know that the cursor has wrapped around back to the top of the screen (sort of like the way a typewriter will 'ding' you when you have reached the end of a line on the page).
The following keys all function normally (ie, they function in the same way as they do in the Atari memo pad mode):
CAPS/LOWRThe following keys DO NOT work and are disabled:
CONTROL 1Also, typing "CONTROL-2", "CONTROL-CLEAR", or "SHIFT-CLEAR" will result in their respective characters to be printed to the screen. "CONTROL-2" will print the bell character (instead of sounding the keyboard bell), and "SHIFT-CLEAR" and "CONTROL-CLEAR" will print the clear-screen character (rather than actually clearing the screen. In order to print an editing key character such as a right arrow (the character associated with the "CONTROL *" key, which normally causes the cursor to move one character to the right), press the "ESC" key first, followed by the appropriate keypress combination (in this case, the "CONTROL *" combination). To print the ESCape character, press the "ESC" key twice in succession.
Pressing the "START" key initiates the RESTART command. You will be prompted to confirm the restarting of the screen editor. Typing "N" (No) to this prompt will exit the RESTART command and go back, leaving everything untouched. If you type "Y" (Yes), then the screen editor will restart, with the following results:
As you have probably guessed by now, the "SELECT" key is used to activate the command keys on the keyboard. If, for example, you wanted to type an "X" to the screen, you would simply type the letter "X" on the keyboard. However, if you wanted to activate the BOX X-COPY command, you would hold down the "SELECT" key while pressing the "X" key. The "SELECT" key is what differentiates between interpreting the "X" key as a character to be printed to the screen, and a command key that activates the BOX X-COPY command. You need only use the "SELECT" key for the command keys listed in the input window. The "SELECT" key is not needed in order to use keyboard editing commands like "SHIFT-DELETE" and the such.
If you hit the "OPTION" key while in the screen editor, control will be sent to the character editor, and its display will appear. Do not worry that your screen has been erased or changed in any way when you press the "OPTION" key. Envision's character editor and screen editor are completely independent of one another, yet they work with each other hand-in-hand. If you press the "OPTION" key again, you will be back in the screen editor, and nothing will have been changed (unless you edited a character or two while in the character editor). Also note that being in the screen editor does no damage to your character set whatsoever.
Well, now that you understand how Envision works, let's take a look at a few of the example files that are included with it.
Boot up Envision now. When the character editor screen appears, press "OPTION" to go to the screen editor. Now, insert the fonts disk included with this package, and do a disk directory by typing "SELECT-C". The following screen files will be displayed:
TEST | LARGE |
ISLAND | TOWN1 |
TOWN2 |
I will explain each of these screen files as we go along. First, let's take a look at the TEST screen. Exit the directory by pressing any key until the COMMANDS message replaces the directory listing. Now, load up the TEST screen by typing "SELECT-L", and, when prompted to enter the filename to load, type: TEST "RETURN". The screen will blank while the file is loading. When the load is finished, you will see the test screen in front of you. It is a little self-explanatory, but, essentially, it allows you to see what different fonts (type-styles) look like when used in sentences and the like. There are a number of fonts included on the fonts disk. However, only some of them were designed to make the TEST screen readable. The others were designed with specific applications in mind. Press "OPTION" now to go back to the chracter editor.
Now that you are in the character editor, make sure that the included fonts disk is still in drive #1, and do a disk directory by typing the "D" key. Of the sets that are on this disk, here are the ones that were meant to be used with the TEST screen:
ARTDECO | (Art Decorative) |
GOTHIC | (medieval) |
SCRIPT | (like handwriting) |
CENTURY | (futuristic) |
BOX | (squarish letters) |
BYTE | (computer style) |
BYTE2 | (another computer style) |
STOP | (futuristic) |
OUTLINE | (outlined letters) |
The other three character sets on this disk (LARGE, ISLAND, and TOWN) have other purposes. You can still load them up and look at them using the TEST screen, but, as they were not designed for that screen, you will only see garbage (well, not garbage, really, but you won't be able to read much of the screen).
Let's start off by loading up the ARTDECO character set. Type "L", and enter 'ARTDECO' when prompted for the filename to load. When the load is complete, press the "OPTION" key to get to the screen editor. Now, you will see all the text displayed using the ARTDECO set. This set is one of my favorites, because of its simplicity. You may load up any of the character sets listed above and look at them using the TEST screen (you can just sit in the character editor and look at the character set, but it's nice to see the set actually used in some way, hence the TEST screen). You may notice that, with some of the sets, the lower case text line of the TEST screen looks exactly like the upper case text line. This is because the lower case letters have been deliberately designed to look like their upper case counterparts. The reason for this is because some character styles do not have a lower case version of the type-style. Hence, the lower case characters were made to look like the upper case characters so that the text would conform properly on the TEST screen (it wouldn't look very good if all the capital letters were displayed in the ARTDECO set, and the lower case characters were displayed using the standard ROM characters). If you like, you can RESTART the screen editor (your character set will not be erased), and type in your own text, should you wish to sample a character set in a little more depth. Have fun with these character sets, they are yours to use and/or modify.
Now, then, these type-styles are really fun to play with, and you may wish to design your own, but, what if the 8 by 8 grid is just to small for you to properly design your characters in? Maybe the font that you are designing needs more detail than is available in the 8 by 8 character grid. Well, if the program you are designing the font for will allow for it, you can combine more than one character in order to create larger letters. Go to the character editor, and load up the character set called LARGE. When it has loaded, go to the screen editor, and load up the screen file with the same name (LARGE). When the screen is loaded, you should see a text screen with some very large and fancy letters (specifically, the type-style used is called 'Old English'). If all you can see is little groups of ROM characters, then you may have accidentally hit the "SELECT" key while in the character editor. If this is the case, then go back to the character editor, and press the "SELECT" key again to go back to the redefined character set. The LARGE screen is not really of any use, but merely demonstrates the method of grouping together more than one character to form a larger letter. In the LARGE character set, 4 characters are used for each letter (A-Z). You may notice that, when you go to the character editor and look at the character set as a whole, you can only see garbage. Therefore, you may be wondering how one figures out which 4 characters form the old english "A". Well, there is a simple way to find out which 4 characters form a given letter. Press the "SELECT" key in the character editor to display the ROM character set. Now then, in order to print an old english "A", the 4 characters that comprise it are the exclamation point, the upper case "A", the "CONTROL-A", and the lower case "a". Note that these four characters are all in line on the character set display, in that they all occupy the same column. Therefore, to print an old english "A", you would type and exclamation point followed immediately by an upper case "A", then you would position the screen cursor underneath the exclamation point, and type a "CONTROL-A", followed immediately by a lower case "a". To print a given letter, the four characters that comprise it are all in the same column (on the character editor's character set display) as the upper case ROM equivalent.
Text screens and type-styles are a lot of fun, and have their uses, but, what if you were designing some sort of game, and needed pictures, and not text? Well, let's assume that you were writing some sort of adventure game, where your little adventurer travels around an imaginary realm. Make sure the fonts disk is in drive #1, and load up the 'ISLAND' character set from the character editor. Notice that, when the load is complete, the upper half of the character set is definitely not text. The characters in the upper half of the character set have been designed to look like little pieces and objects that you might find on (what else) an island. Now, to see this character set used in an actual application, go to the screen editor, and load up the screen called 'ISLAND'. When the load is complete, you will see the upper left corner of a white border, and a lot of "water". This is a rather large screen, so you may wish to move around it and examine it with the joystick (or keyboard, if you like). This screen is a picture of a huge island, with a much smaller island sitting in its southwest gulf. Notice that there is a large brown patch near the middle of the main island. Let's just say that this is a volcano. There are three doors at different points around the volcano (they're really kind of big, but their supposed to be symbolic. If they were proportional in size, you wouldn't be able to see them at all). Also notice the white "towns" here and there on the map. Notice, as well, the rivers, and mountains, and swamps, and the randomness of the rivers, coastlines, trees, etc. This map took only twenty minutes to create using Envision, thanks to the random REPLACE function of the screen editor. Since there are three different river characters for every direction (north to south, north to east, etc.), as well as three different coastline characters for every coast (east, north, southwest, etc.), deciding which coastline character to use next can be very time consuming ("Let's see, I used this northern coastline character before, so which one of the three should I use next?? Hmmm..."). The random replace was used to fill in all of the trees, coastlines, rivers, mountains, and swamp. A special method was used to confine the replace to certain areas of the screen. Since one begins with a screen composed entirely of spaces, one cannot simply do a random replace with each coastline character and expect to end up with an island shape. The whole screen would be filled with different coastline characters. Therefore, the method that I use is to select what is called a "marker" character. You may note that none of the lower half of the character set has been redefined. Since this island was created for Antic mode 7 (GRAPHICS 2), only one half of the character set is available. I chose to use the upper half of the set. Also notice that the "@" character has not been redefined. I could have used this character if I so desired, but, for the time-being, I chose to use it as a marker character (using it as a marker does not mean that it cannot be redefined and put to good use on the screen, but there is a reason for not using it, at least until near the completion of the screen, but, more on that in a minute). Using this marker character (the "@" character), I first went all around the screen with the joystick (I changed the DRAW character to the "@") and, wherever I wanted a northern coastline character, I hit the button, putting an "@" character there. When I had gone all over the map and "marked" all of the northern coastlines, I then did a global random REPLACE of the "@" character with the first coastline character. This changed about half of the "@" characters on the screen to the first coastline character. Next, I did another global random REPLACE of the "@" characters that were left, but this time I replaced the "@" with the second coastline character. This left a few marker characters here and there around the map. Next, I did a global REPLACE of the "@" character (note that this replace is not random) with the third (and last) coastline character. Now I had all of my northern coastline characters generated on the screen, but, since there were many more "@" characters on the screen when I did the first replace, there were many more occurrences of the first coastline character than of the other two, and hardly any occurrences of the third coastline character (since there weren't many markers left by the time the last replace was done). To remedy this, I did one last global random replace. I randomly replaced the first coastline character with the third coastline character. About half of the first coastline characters became third coastline characters. That's better. Now everything is evened out.
I used this same method with the other coastlines, and the rivers. The mountains, trees, and swamp were done a little differently, however. Instead of putting a marker wherever I wanted a mountain, I went over to where I wanted a mountain range (it's in the southeast area of the main map) and put a big solid patch of markers there (using the joystick). Then, since there are two different mountain characters, I did two global random REPLACEs of the "@" character with each mountain character. Now, since there were still some marker characters left, I simply did a global REPLACE of the "@" character with the space character, erasing the markers that were left (since they weren't needed anymore). This map is yours to examine, learn from, and/or modify.
Now, let's assume that if the adventurer enters a town, you want to go to a blown up version of the town that he enters. However, you want each town to look different in that you don't want all of the buildings to be in the same place in every town. Well, there just happens to be an example of such a situation on the fonts disk. Go to the character editor, and load up the character set entitled 'TOWN'. When the load is complete, notice that there is a mixture of text and picture characters in the upper half of the character set. Again, the lower half of the set is not used, and for the same reason as in the 'ISLAND' set. Also note that the letter characters are the same characters as found in the GOTHIC character set, except that these characters have been INVERSEd. Now, go to the screen editor, and load up the file called 'TOWN1'. When the load is complete, you will see before you the town of Pryll. Notice the cobblestone pathways, the randomly generated hedges and grass, and each of the buildings. The hedges were generated using the same "marker" technique as was used to create the coastlines on the ISLAND screen. The random grass (there are three different grass characters) was easier to create, since the grass was the last thing that was generated on the map. After all the buildings and hedges and cobblestone paths (not to mention the border around the city) were done, all that was left to do was to put in the grass. Since the only places where grass would go contained a space character, no marker character was necessary. I simply did three global random REPLACEs of the space character with the three grass characters. Lastly, I did another global random REPLACE of the first grass character with the third grass character, thus evening out the number of occurrences of each grass character. The buildings were created using the BOX FILL command. Some of the buildings, because of their shape, required two box FILLs to create.
Finally, there was the problem mentioned earlier of having different cities, rather than using the same map for each city. Without erasing anything, simply make sure the fonts disk is in drive #1, and load up the screen file called 'TOWN2'. When the load is complete, you will see another town, completely different from the town of Pryll in that the paths are all different, along with the positions and shapes of the buildings and hedges. This is the town of Jallik. Notice that the entrance of this town is on the east end of the town, rather than the west end as in the town of Pryll. Notice that we have an entirely different town, yet it uses the same character set as Pryll does. If you so desired, you could use the TOWN character set to design more towns. This set-up is the reverse of the TEST screen, in that, rather than matching different character sets with one screen, you can match different screens with one character set.
Envision is meant to be a great convenience and a lot of help, making designing your own screens and fonts much more easier than doing them by hand. Before Envision was created, it was taking me 6 hours to type in screens like the ISLAND screen, let alone the time it took me to draw them out on graph paper. As I previously mentioned, the ISLAND screen took me only 20 minutes to complete using Envision, and to add the screen to my program, I just used the WRITE command, and ENTERed the file into my program.