VSSFS@iB6A%A&A$@A`''** * /6-/@@K: q +AAH1@C-q((ɠ󠠠 (堠 SS(K If you have faithfully read the ATARI manual, you already know how to useSS(K If you have faithfully read the ATARI manual, you already know how to useVV(NBASIC graphic commands. Unfortunately, the dictionary of commands provided doTT(Lnot let you utilize ATARI graphics to their fullest potential. There is noTT(Lcommand to allow you to redesign a character, no command to let you mix#SS(Kgraphics modes, nothing that let's you print characters in hi-res graphics(PP(Hmodes, no way to access Players and missiles without complicated and-VV(Nroundabout subroutines. Our goal in thislesson is to let you know ways you can2_6(.utilize more of the capability of your ATARI._($ First of all, you should never use7`V(NSETCOLOR command. You can 'POKE' colors onto the screen utilizing less memory.` B<WW(OReading the manual informs you there are5 color registers (0-4). Locations 708,AWW(O709,710,711,and 712 correspond to these registers. As you can see, the color ofFTT(La GR.0 screen is blue when first turn onyour ATARi. Translated to a SETCOLORK[;(3command, the same color can be achieved as follows:>([( SETCOLOR 2,,PV(V(K This loads color register 2 with color9, and luminance 4...blue. LocationUVV(N710 is the shadow register for color register 2. To get the same blue colorZqM(Eon your screen you would POKE 710,148. Here's how we arrived at 148:P(q( * 16 + = 148_G(=(2where 9 is the color number and 4 is theluminance.G BdTT(L You can use the same idea to get any color onto your screen, using any ofiw(the 5 color registers.!(w(P You can also change the character set very easily by knowing and understandingnUU(Ma few locations in memory. The first is 57344 (decimal). This is the start ofsTT(Lthe character table in ROM. The table takes up 1K of RAM (1024 bytes), abdxYY(Pends at 58367. Another location we need to know is 106. value in this byte let's}WW(Ous know where the top of memory is.The last location we need is 756. The valueWW(Oin here tells us where the character table starts. Let's take a look at what<(( is in these locations right now:2 A< Bd A(d(O If you multiply the value found in location 106 by 256, you'll end up withVV(Nthe location of the top of memory. If you multiply the value in location 756UU(Mby 256, you have 57344...which as we said is the location of the beginningt(of the character table."(t(M Before we can go any further, we have to understand how the character tableVV(Nis set up. We know there are 256 ATASCII characters. However, there areRR(Jonly 128 different characters. The rest are the same characters printed inVV(Ninverse. Since we that the character table is 1024 bytes long, and 1024/128a.(&is equal to 8, we can deduce that your8 B;(a(!ATARI uses 8 bytes to define eachUU(MATASCII character. It's not hard to change the character set with what weUU(Mnow know...the only problem is that the character set is in ROM, and we can'tWW(Ochange the contents. What we have to do is move the character table from ROM toPP(HRAM, change the pointer in location 756 to point to the new start of theYY(Pcharacter set, and lower the top of RAM below the table so we don't accidentallyRR(Jwrite over it. To change a character, all we have to do is change any ofRR(Jthe 8 byte combinations that correspond to a character you want to change.WW(OThere are some other things to keep in mind when changing characters, so let's'(look at an example...' BTT(L Take a look at the following figures. Notice that they occupy an 8X8 grid,K;(3which is the size of all ATASCII characters:>(H AK(WW(O Somehow we have to translate these two potential characters into 8 numbers for_U(Meach character. Well, everyone should know that each bytes contains 8 bits._ Bf A(f(P The easiest way to understand bytes andbits is to know that 1 bit can either beVV(Na 1 (ON) or a 0 (OFF). One byte can be any number between 0 and 255. Each bitYY(Pin a byte has it's own value range. Bit 'A' = 128 if it's on, and 0 if it's off.[Q(IBit 'B' = 64 on and 0 off. Look at the list to the right of the figures.[ B A,$(!( ABCDEFGH ABCDEFGH$(-))(! 1 A = 128.))(! 2 B = 64/))(! 3 C = 320yy(q 4 D = 16 5 E = 8 6 F = 41TQ(I 7 G = 2 8 H = 1T$*('( ABCDEFGH ABCDEFGH*(//(' 1 = 126 = 126 //(' 2 = 255 = 255 //(' 3 = 153 = 189 zz(r 4 = 219 = 153 5 = 255 = 255 6 = 195 = 219ZW(O 7 = 219 = 195 8 = 126 = 126 Z$f A(f(P Above are results of the calculations we made for each byte. The first byte of\8(0the left character was figured as follows:;(\( 7 6 5 4 3 2 1 0J!( $(J(! 64+32+16+ 8+ 4 = 126Q(G(