entire character set to use. In GR.1 and GR.2, you can use only one half of the set at a time. You can't POKE it with 225 because the number POKEd must be evenly divisible by two. The characters stored here aren't in ATASCII order; they have their own internal order for storage. The order of the characters is listed on page 55 of your BASIC Reference Manual. Here's an example of how a letter (A) is stored in ROM. Each line represents a byte. The decimal values are those you'd find if you PEEKed the eight locations where "A" is stored (starting at 57608; $E108): Bit 76543210 Decimal +--------+ 00000000 0 | | 00011000 24 | ## | 00111100 60 | #### | 01100110 102 | ## ## | 01100110 102 | ## ## | 01111110 126 | ###### | 01100110 102 | ## ## | 00000000 0 | | +--------+ When you create your own character sets (or alter the Atari set when you move it to RAM -- see location 756; $2F4 for a routine to do this), you do a "bit-map" for each character as in the example above. It could as easily be a spaceship, a Hebrew letter, an APL character, or a face. Chris Crawford's game Eastern Front 1941 (APX) shows excellent use of an altered character set to create his large map of Russia, plus the symbols for the armies. Here's an example of using the bit-mapping of the character set to provide text in GRAPHICS 8: 1 GRAPHICS 8 5 DLIST = PEEK(560) + PEEK(561)*256 6 LOBYTE = DLIST+4: HIBYTE = DLIST + 5 7 REAL = PEEK(LOBYTE) + PEEK(HIBYTE) *256: SCREEN = REAL: TV = SCREEN 10 CHBASE = 57344 20 DIM A$(128),BYTE(128),WANT(128) 27 PRINT "INPUT A 40 CHARACTER STRIN G:" 30 INPUT A$ 35 TIME = TIME + 1 40 FOR LOOK = 1 TO LEN(A$) 50 BYTE(LOOK) = ASC(A$(LOOK,LOOK))