Not Just A Pretty Face
by David DubermanTraditionally, program listings in computer magazines have frustrated readers because of poor-quality reproduction. Listings are usually photocopies of dot-matrix printouts. Legibility generally is not high to begin with, and deteriorates further on reproduction.
A look at the program listings in this month's ANTIC will reveal that our new typeset listings are remarkably easier to read than the dot-matrix type. Also note that programs containing special ATASCII graphics characters now show them as they appear on the monitor screen. A customized typesetting font was designed for us to reproduce special characters accurately and unambiguously (see Fig. 1).
We now prepare our listings on diskette, and transmit them to the typesetter via the phone lines. Equipment used in this operation include an ATARI 800 computer with 48K RAM, a PERCOM Disk Drive, the ATARI 850 Interface Module, and the Hayes Smartmodem 1200. Datasoft's Tele-Talk terminal program for the ATARI performs admirably as our communication software.
The process begins at the ANTIC office with a program which has been accepted for publication. Usually we've received a version of the program on disk, or converted it from cassette. A few codes are added to the beginning and end of the program to identify it to the computer at the typesetter's end. The program is then LlSTed to disk, so it will be represented as a string of ATASCII symbols.
Once the program has been prepared, it is ready to be transmitted. One of the Smartmodem's advantages is that it can dial a phone number and automatically establish a link with the receiving computer. Once contact has been made, we simply transfer the program from disk to the ATARI, and subsequently from the ATARI to the computer on the other end of the link.
The first step is accomplished with a few keystrokes, as Tele-Talk is menu-driven. To transmit text files, Tele-Talk has a special spooling feature. Normally, this option is used for storing received (downloaded) data to a disk file, so at this point a prompt for a disk filename appears (i.e. "D1:"). To send the text to the other computer, it must be spooled through the RS-232 interface. Therefore, simply use the screen editor to change "D1:" to "R1:" and press RETURN. The text will be transmitted, though not displayed on the screen.
The typesetter's computer receives a stream of numbers from 0 to 255, each of which represents an ATASCII character. Most of these characters (i.e. Ietters, nurrtbers, and punctuation) furfill a direct correspondence with the ASCII character set, and therefore don't need translation by the typesetter. That is, the typesetter knows which characters are represented by the corresponding decimal value for the standard ASCII character set and doesn't need any special instructions to set those characters.
However, ATARI BASIC contains many special characters which have no representation in the normal ASCII character set. These include graphics characters (obtained by pressing CONTROL and certain keys in combination), control characters (cursor movement symbols and the clear screen symbol), and inverse video characters, all of which are used frequently in ATARI BASIC programs. Each of these is represented by a specific decimal value from 0 to 255. Therefore, the typesetter needs merely to know the list of special characters and their corresponding decimal value, and he can substitute accordingly.
Of course, the set of special characters must be defined by the typesetter so that his machine will know what to print when it encounters certain decimal codes during the translation process. He does this by combining rules (short thin lines) to form the character within the character space. Once it has been defined, the special character can be reused indefinitely, just like any other character used in typesetting.
The upshot of all this is that most program listings published in ANTIC from now on will be easier to read and to type in than any listings from any source you've previously encountered. When a programmer uses a special character, it will appear in the printed listing exactly as it does on the monitor screen.
One drawback of the typesetting system we are using is that spaces cannot be represented as characters of fixed length. So, program lines will not have the same length relationships in a published listing as they do on the screen. We considered using monospacing and a 40-column format, but decided that the legibility of our system is preferable. Therefore, if there is any doubt concerning the number of spaces to type in a given program line, we will insert a REM (remark) statement immediately before the line to indicate how many spaces are present in the dubious area.
Table Information
Our custom font listings represent eact ATASCII character as it appears on the video screen. You generate some characters by a single keystroke, for example, the regular alphabet. Others require a combination or sequence of keystrokes. In this table, ESC means press and release the escape key before pressing another key. CTRL or SHIFT means press and hold the control or shift key while simultaneously pressing the following key.The Atari logo key "toggles" inverse video for all alphanumeric and punctuation characters. Press the logo key once to turn it on; press again to turn it off. On the 1200XL there is no logo key; inverse video is controlled by a key on the function row. Decimal values are given as reference, and correspond to the CHR$ values often used in BASIC listings.
Normal Video
For this.........Type this...Decimal Value
CTRL , 0 CTRL A 1 CTRL B 2 CTRL C 3 CTRL D 4 CTRL E 5 CTRL F 6 CTRL G 7 CTRL H 8 CTRL I 9 CTRL J 10 CTRL K 11 CTRL L 12 CTRL M 13 CTRL N 14 CTRL O 15 CTRL P 16 CTRL Q 17 CTRL R 18 CTRL S 19 CTRL T 20 CTRL U 21 CTRL V 22 CTRL W 23 CTRL X 24 CTRL Y 25 CTRL Z 26 ESC ESC 27 ESC CTRL - 28 ESC CTRL = 29 ESC CTRL + 30 ESC CTRL * 31 CTRL . 96 CTRL ; 123 CTRL = 124 ESC SHIFT CLEAR 125 ESC DELETE 126 ESC TAB 127
Inverse Video
ATARI CTRL , 128 ATARI CTRL A 129 ATARI CTRL B 130 ATARI CTRL C 131 ATARI CTRL D 132 ATARI CTRL E 133 ATARI CTRL F 134 ATARI CTRL G 135 ATARI CTRL H 136 ATARI CTRL I 137 ATARI CTRL J 138 ATARI CTRL K 139 ATARI CTRL L 140 ATARI CTRL M 141 ATARI CTRL N 142 ATARI CTRL O 143 ATARI CTRL P 144 ATARI CTRL Q 145 ATARI CTRL R 146 ATARI CTRL S 147 ATARI CTRL T 148 ATARI CTRL U 149 ATARI CTRL V 150 ATARI CTRL W 151 ATARI CTRL X 152 ATARI CTRL Y 153 ATARI CTRL Z 154 ESC SHIFT DELETE 156 ESC SHIFT INSERT 157 ESC CTRL TAB 158 ESC SHIFT TAB 159 ATARI CTRL . 224 ATARI CTRL ; 251 ATARI SHIFT = 252 ESC CTRL 2 253 ESC CTRL DELETE 254 ESC CTRL INSERT 255