@L|}6CD l0C)HCC WhL/h `CmCDiD`  R@W1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD` D  C D     )16CS S)  C)D1 p p }0 C9DI pCDL~CiCDiD` DD˙` d J)L !}D L(( LL()  L| L( S LH 0p n  } CY?  q  L L  ` )} `A! d߰")-݆ "  $G@LLL&0") $G% }H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0 })8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH) }  hyhyB q L> Lm JJ  Ln*` dB%' }8  H H` 1 { LL   !L     Hh SY?  q  1L }  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF } G) *Gȩ GȽG GȌd q q G`  8   0G  `D}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR}1LJ舩9GIH`LJJ`HGHh l`} S gL   8 rii `дCDCG W  }C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}}26, |||DDOS DOSDOS SYS }}}}}CDOS SYS} 0`BDELV !B }`LVUQ   ]   TU J ]L!T  #      TU  } L ? .  t`GBJ V~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI   0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -'}LLu DEHILV 9 .l 9 .l  `` s$B VBH(}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVL)}1u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2e*}1i1232435ޥ<<8} 3E:}DISK OPERATING SYSTEM II VERSION 2.0SCOPYRIGHT 1980 ATARIA. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDGE J. D,}UPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRESSF. LOCK F-}ILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES9!&x#!7&p))'&X*./)L''-؆莟.}R'S  vW DEHHI 1A#! @ ~0ɛ8A0.) ȅ 1 1i/}il ! 1L NO SUCH ITEMSELECT ITEM OR FOR MENU! 0 .{z:*{}.|~ 1 0 00}JB 18L^%|DLl%DIRECTORY--SEARCH SPEC,LIST FILE? # 0 0 n&|D! 1L NOT A DISK FILE1}N !B 1L " 1 !BDED:}:1BJ|DE 1DEBH2}I 1 h0ߢ 0.  0?詛 1 ~0YЛ 1 "L<" "L 3} BL1TYPE "Y" TO DELETE...DELETE FILE SPECCOPY--FROM, TO?OPTION NOT ALLOWED160 FREE SECTORS COPYING---D2:DLIR4}OUT.STR# 0|D .L$A#B#C#JB|DE 1BHIDD#E 1D#0: B5} 1L B#C#C#B# B 1N#$0SYS1}:e#D# d# D# .d#ȽD# d# 𩛙d#X# 1,A#6}PdD#ELO- A.BJdD#E 1 1HH 0hh|DL^%1}:e# Lt% e#dD#EL%7} 1 0 . .0% 1L WILD CARDS NOT ALLOWED IN DESTINATION 0 A.|K@C}//3Hu ξL/L DRIVE TO WRITE DOS FILES TO?WRITING NEW DOS FILESTYPE "Y" TO WRITE DOS TO DRIVE 1.?}D1:DOS.SYSERROR - NOT VERSION 2 FORMAT. , &* բ( 1L `[) 0NΞ 0 L1M) 1@} L BAD LOAD FILELOAD FROM WHAT FILE?) 0 0#B 1L WHAT FILE TO LOCK?) 0 0$B 1L WHAT FILE TO UNLOCK?DUA}P DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO USE PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV. h  ,B}  `)  <0 2 2 0  ,   ,,ޢ* 1L ,K* 1 ~0 0C}FINSERT BOTH DISKS, TYPE RETURNERROR - DRIVES INCOMPATIBLE., 1 ~038  , 1L D}, &*  Lz+, 0 , 1 ~0 + Y,0!,0 ,L+ ,mm  v,"ǭE}0Ξ, 05,Lt+L +,Hh` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNF}INSERT DESTINATION DISK,TYPE RETURN`    `L,8,0( rG}L1(`ߢ) 1* 1 ~0Y`hhL S SL1) 8`NAME OF FILE TO MOVE?- 0 0|DLtH}% A., 1 <0 0 .@L# .BJ 1  DEHIB V L1 ,5 1 <0,L. I} JB|,A#Pd#DE 1 HI BDEHHII 1 B 1 , 1 <0,0Lf- B VJ},A#P, 1 <0 0L#L ߢ) 1* 1 ~0Yj383}mm ݭK}}`8}``|* ? ɛ,`|:(|/ 1L `DESTINATION CANT L}BE DOS.SYS0 0H{ $22Δ $28/L /) $2 Π $2 0 ξM}hAΞB,0 J 1 BޝDEHI,HDE 1HIHIDELSAVE-N}GIVE FILE,START,END(,INIT,RUN)O X0 1`BDEPHI V` X0H 1 L O}0 0 1L0`PLEASE TYPE 1 LETTER,0`hhL <0 1L0LA1 ,;ɛ7,"ɛ:ݦ1ݥP}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{Q}NAME TOO LONG B VL ` L1I H1EӝDL1|mDiE` V0`8d/8 i:"2!22 1R} L ERROR- 138ɛ+,' 20*.. өw2 1``2TOO MANY DIGITSINVALIDS} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D41uT} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D41uKBIRD1BIRD2BIRD3BIRD4 ǠĠV}報(YYDemonstration of Character Set Animation using Atari's built-in graphics characters288W}Copyright (C) 1982 by David Fox and Mitchell Waite<dn11;@,;@,;@,;@,sX}x6.   6.   6.   6.   AY}R@ }-@@-@@77AA A0Z}A@A0A #-@@% #Pause  A,6   $@   $J [}  $T   $ D:EX1.BAS4 ǠĠ$CD FRAMEFRMSZMANFRAMEERASEHICHRCHRBAOFFSECHARTOTATEMBYT ]}  ##ǠΠҠԠ## ^}堲(11Demonstration of user-defined character set288Copyright (C) 1982 by David Fox and Mitchel _}l Waite<dn"6-@"Number of framesxF6-@FCharacters in frame (including cursor contro `}l chars);$,;,;@,""6. abcde fghij++67@%,. klmnopqrst  a}67@I,. uvwxyz6.    +'AR@'Turn off cursor One moment plea b}se...% A%Read in Character Set }70@@70@@@(AV(S c}witch to new Char Set,696-@9Set starting horizontal position of Man@-@J d}6.7$&+&@,<$,T-@ ^="@12@@=Footstepsh1"@ e}12@@$@r6%2@6Turn off sound|4-@@ 4Slow him f} down a little 77Walk man across screen if Joystick button is downBT:,"&6-%@2"@6 g}8 }B A A @$$JK6-F:A,&@KReserve memory space (10 h}24 bytes) below screenT/6-$AV/Find start of Character Set^,,Read in data, skip first 97 charactersh#6-@ i}$@#6-@&|"6-!!-%%%$@&@" 6-% 6 +3 j}ERROR In Character Set Data6''Clear out first char (background)-%@ $ k} N*N. Checksum4N 16845>NHN. Frame 1RN0,0,0,0,0,0,28,62\N0,0,0,0,3,15,29,59fN""6 l}2,62,28,240,240,240,240,251pN51,7,7,15,252,224,112,48zN##255,220,192,192,227,118,60,24NN. Frame 2N0,0,0, m}0,0,0,0,56N0,0,0,0,1,7,15,31N$$124,124,124,56,224,224,224,224N 55,55,7,111,125,248,192,65N%%246,254,192,128,19 n}2,224,224,248NN. Frame 3N0,0,0,0,0,0,112,248N0,0,0,3,7,15,31,31N%%248,248,112,192,192,128,128,128N"" o}31,31,222,254,251,231,206,15O224,224,0,0,0,0,0,128OO. Frame 4$O0,0,0,0,0,1,3,3.O0,0,0,0,0,192,224,224 p}8O3,1,7,15,31,30,62,62BO224,192,0,0,0,0,0,0LO""63,63,60,124,120,112,112,252VO`O. Frame 5jO0,0,0,0,0,0,0 q},1tO0,0,0,0,0,0,224,240~O1,1,0,7,31,31,31,31O%%240,240,224,128,128,128,128,176O 31,15,15,13,31,123,112,124O! r}!240,0,128,192,128,192,128,0 D:EX2.BASCHRBAOFFSECHARTOTATEMBYT /67FRAMEHICHRBHICHROFFSECHARTOTATEMCHRBABYT@t} $$ǠŠϠ$$堳u}(MMExample using the technique of flipping through multiple character sets288Copyright (C) 1982 by David Fox anv}d Mitchell Waite<dn"6-@"Number of framesx 9, +'AR@'Turn ow}ff cursor One moment please...% A%Read in Character Set }Q0@@70@x}@@Q0@@@5AV8@,5Switch to Frame 1 Char Sety}-@ @-@@2@ -  abc-%@ defghi-%z}@ jklmno-%@ pqrstu   ",6-@@AV{}8,J`@12@@S2`Hoof BeatsTA-@Q:,|} AUse 15 if you don't have paddles^ h Ar@$$JL6-F:A,&@$}}LReserve mem space (5 X 1024 bytes) below screenT#6-@$@#6-@!^"6-h-@r~}? 68,-%@$+&@,?Find start of Character Sets|,,Read in data, skip first 97 characters6-8,$AV}!!-%%%$@&@" 6-% ''Clear out first char (background)-%@}  . 6 +3 ERROR In Character Set Data6$ N}*N. Checksum4N 46921>NHN Frame 1RNGG0,0,0,0,1,1,6,15,0,0,6,118,155,127,247,231,0,0,0,0,128,192,32,136\NE}E0,0,0,3,14,29,5,0,0,0,3,252,188,14,11,11,0,0,255,31,0,24,31,157fNJJ59,15,254,192,0,0,0,240,135,14,60,124,12,8,8,56,196,20}4,48,0,0,0,0,0pNOO0,0,0,0,0,0,0,0,15,5,126,127,97,99,103,99,207,223,243,224,192,192,128,128zNMM252,191,223,127,3,3,1,1,11}2,248,254,142,252,248,128,128,0,0,0,0,0,0,0,0NAA1,1,0,0,0,0,0,0,193,128,0,0,0,0,0,0,192,224,112,24,28,0,0,0N==1,1,1,0,0},0,0,0,128,192,224,48,56,0,0,0,0,0,0,0,0,0,0,0NN Frame 2NGG0,0,0,1,5,8,59,87,0,8,12,190,121,248,252,191,0,0,0,0,0},128,32,208NLL0,0,3,7,15,29,0,0,0,7,252,208,151,31,31,15,0,255,32,32,108,255,255,255NKK255,1,0,0,4,28,252,184,187,184,4}8,16,16,16,48,240,144,192,0,0,0,0,0,0NDD0,0,0,0,0,0,0,0,15,15,62,60,56,236,204,198,255,143,0,0,0,0,0,0NGG248,255,31,60,}48,112,96,192,28,254,6,12,56,48,0,0,0,0,0,0,0,0,0,0N>>0,0,0,0,0,0,0,0,220,216,192,96,112,0,0,0,1,1,1,0,0,0,0,0N550,0,0,}0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0NN Frame 3OCC0,0,0,0,0,1,0,63,0,0,2,3,62,239,223,127,0,0,0,0,128,192,32,}16OHH0,0,0,3,15,63,10,0,0,0,3,252,200,12,31,31,0,0,255,24,48,124,56,255ONN23,255,128,0,0,56,126,255,247,238,252,20,8,24},16,16,196,108,48,0,0,0,0,0$OKK0,0,0,0,0,1,3,6,31,31,61,121,243,195,1,0,191,224,224,192,128,0,128,96.OOO254,254,7,7,14,12},24,112,56,7,255,0,0,0,0,0,0,128,192,192,192,192,192,1288O<<12,24,24,56,24,0,0,0,0,0,0,0,0,0,0,0,51,62,0,0,0,0,0,0BO77192},0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0LOVO Frame 4`OBB0,0,0,0,0,0,0,1,0,0,6,118,155,127,247,231,0,0,0,0,0,0,}128,32jOHH0,0,0,3,7,10,0,0,0,0,3,255,204,141,15,14,0,0,252,127,16,239,63,111tONN1,11,29,224,0,12,142,220,127,255,254,122,}30,12,4,68,8,252,204,32,0,0,0,0~OJJ0,0,0,0,0,0,1,3,13,15,15,63,248,224,128,0,159,127,248,56,24,24,56,28OUU252,255,63,1,1},0,112,63,124,196,243,255,199,192,192,192,0,0,0,128,192,192,96,48O88118,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0O<}<0,128,192,192,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0OO Frame 5ONN0,0,0,6,15,30,28,61,48,56,254,231,227,255,25}3,255,0,0,0,0,128,32,144,232OLL0,1,3,7,13,0,0,0,3,255,232,78,142,15,7,15,255,124,80,24,60,247,239,159OII255,63,12,0,0,0},241,4,252,28,56,56,24,16,208,112,216,64,0,0,0,0,0,0OII0,0,1,1,3,3,118,60,60,255,240,128,0,0,0,0,112,240,112,48,56,24,12,6}ODD255,1,12,6,3,1,0,0,48,240,120,56,124,198,3,1,0,0,0,0,0,0,0,128O550,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,0,0,0,0,0,0O>}>0,192,224,0,0,0,0,0,0,0,0,0,0,0,0,0,192,112,56,0,0,0,0,0 D:EX3.BAS@LLMVOLUMFRAMEFRMSZEXPLFRAMEHICHRDLISCHRBAOFFSECHARTOTATEMBYT@}  $$}Ǡ ͠$$場@@Program to demonstrate the three color text mode - ANTI}C 4(88Copyright (C) 1982 by David Fox and Mitchell Waite2 A<F22H:,$A}P%@0a2@H:,$@%Au@2@H:,$AP%@0@$So}undPU-@@4AH:,$AU8 JAM$UFlashZe 0@8,=0@}@8@,Z0@@8@,]$eColordn"6-@"Number of framesxF6-@}FCharacters in frame (including cursor control chars);$,;,9@,&&6.abcdefghijklmnop} +'AR@'Turn off cursor One moment please...% A%Read in Character Set }}" A`"Alter Display List(AV(Switch to new Char Set,6N68,-@}-68@,-@B68@,-@N6-@@ AFalling BombJ @Set colorsT @pT}urn on sound^ @ Flash backgroundh-@r6.7$&+&@,<$,| -  @pChan}ge sound ,-@,Fade out explosion68,-8,&@!8, !68,- } @(6-&@ @p(Fade sound 8@,!A }B!6-&@' @}p1 ABFade sound off@--@P:H:,$A%@P,1 @Random pause AX}bQ0@@70@@@Q0@@@lg%6-P:H:,$@6%@},G6-P:H:,$@%@,gSelect random explosion pointv-&@//2$@%@}@@ -  q//2$@%@@@ + }+2}$pz9%6-F:A`,%F:Aa,$AV9Find Display List2%@}@h2LMS byte plus 4 (line 1)>-@@(%%@) >Lines 2 through 24$@$$}JK6-F:A,&@KReserve memory space (1024 bytes) below screenT/6-$AV/Find st}art of Character Set^,,Read in data, skip first 97 charactersh#6-@$@#6-@|"6-!!}-%%%$@&@" 6-% 6 +3 ERROR In Character Set Data6''Clear out f}irst char (background)-%@ $ N*N. Checksum4N 8264}>NHN. Frame 1RN0,0,0,0,3,50,10,2\N0,0,0,0,16,128,128,176fN58,10,2,1,3,0,0,0pN160,172,196,64,0,0,0,0z}NN. Frame 2N0,0,0,8,2,43,11,3N0,0,0,0,32,180,192,224N11,3,15,24,32,64,0,0N232,192,48,32,16,0,0,0}NN. Frame 3N0,0,0,65,17,34,43,11N0,0,16,32,128,208,228,249N27,91,26,2,10,8,24,0N228,208,192,160,}16,4,4,0NN. Frame 4O64,80,20,25,26,10,91,27O$$133,132,152,168,96,228,229,245O11,27,106,86,2,10,5,4$O!}!228,208,164,182,165,32,20,4.O8O . BombBO20,215,215,60,60,60,40,40 D:EX4.BAS@`  ,TEMLUCO ""ǠҠΠ""堵}(DDProgram to demonstrate Color Register Animation in GRAPHICS 102(GTIA chip required)<88Copyright (C) 1982 }by David Fox and Mitchell WaiteFP AZdn>6-F:A,%@&!AU,6}->Add a new colorx<-AA(F:%@,, <Rotate colorsA A}; +@;GTIA Mode - 80 X 192 with 9 color registersL6-@6-@LSet starting COLor Register & LUM}inance valuesSet initial colors+A+Background to black=-@@=Other registe}rs to different colorsA%$@% ", қ6-@y@}J,/AT5 @@6-&@)"56-@^5@@6-%@)"@ 56-}@h r A D:EX5.BAS ""ǠҠΠ""堵-M5FTEMPDPAUSCOYY $$ŠȠ}$$堶(KKProgram to create the illusion of flying through a trench by rotating2''t}he Color Registers in GRAPHICS 7<88Copyright (C) 1982 by David Fox and Mitchell WaiteFP AZd}nC%2@AU@CBackground roar (always on)xBBIf the trigger on PADDLE 0 is pressed, re}verse the directionuS:,"@'6-F:A,<AF:A ,QA F:A,]Ag APu}Not pressedR6-F:A,'AF:A ,<A F:A,HARPressedC6-Q:,'@CSpe}ed and sound controlled by PADDLE 0g2@C2@%@@g2@%A`}@-@  A0'6-@6-@E'6-@I,}6,+@%@,Full screen graphics@90@@9Set Color Register valuesJ0@}@@T0@@@^:-@@y:Increment horizontal coordinatesh=P:%?P},=Choose which Color Register to draw withr;,%@/%@-/@y&;/@y&|?6-&?`6-}%?`?Increase vertical line length. 6-.Prevent overflow!@6-@86-%+}@y&,'A`8Increment Color Register%%?P@%6-&@  A D:EX6.BASx./xTEMWFILXYXYFALCFLACORRSTARTCO }  ̠̠堷 }(HHDemonstration of animating a scene by rotating the Color Registers2))(Uses GRAPHICS 10 - GTIA is needed)<8 }8Copyright (C) 1982 by David Fox and Mitchell WaiteFP AZdn]6-F:A,'A }F:A,<AF:A,QAF:A,]Ax-@@  A }6-A +@5%A@ $@%@5Sky - COLOR 07%A@$@%@7 }Water - COLOR 17%A@$@%@7Water - COLOR 27%A@$@%@7Water - COLOR }3/0@@/Water - COLOR 450@@@5Tree shadow - COLOR 5"=0@@@ }=Cliff & tree trunks - COLOR 6,/0@@@/Grass - COLOR 7620@@@2Treetops }- COLOR 8@曚+ @Ae@+The grass[,@y@'/@y@E3 }6-@x?6-@K6-@fW6-@[ k6-@e6-@'6-@a36-@7 C6-@`O6-@ }[6-@Vg6-@%k k6-@V6-@%'6-@e36-@57 C6-@fO6-@5[6-@xg }6-@Ek + @Ae@+The cliff[,@y@F'/@yAE36-@V?6-@&K6- }@VW6-A[ _6-A6-@h'6-A2+ 76-@hC6-A2O6-@x[6-AE_ ,  }@Ae@,More grassm,A'/@yA9/@yAFE6-Q6-A]6- }i6-@m @6-@X6-@Draw the river on top of the cliff-@ }%@4 A-@y6@&0 ,:)6-&@")6-@D N6- }%@X b-6-6-6@-Draw the fallsl-@X@fv6-%@ A,@% }%-@0A @ /%)6-&@")6-@   q @,@X }@(1/@X@%C/@Y@%U,@f@8g/@fA)qCleanupU @,@s@3 }1/@y@3C,@h@4U/@y@4@6-@W6-@@Draw the river on the valley floor }-A!A( A-6@  ,)6-&@")6-@  *6 }-%@4 >-@@ " @TreetopO-@1, }&&@@%@$K/&&@ &@$O Q-6@6@3,&&@@&@$M/&&@ %@ }$Q  @Tree trunk ,/&@! @Shadow of treei,%@'/%@%@ }=,%@%@S/%@%@i/%@ %@E/%@ %@//%@%@E/%@ }%@[,%@%@//%@%@E/%@%@[/%@%@/ @/Fallen } leaves around tree trunk-@@5'6-%P:H:@,$@,&@5"A@-'6-%P:H:@,$ }@,&@-,$ . 8LV% %Same color as the sky`',@WA'/@e }A"j',@WA'/@eA#t',@WA'/@eA$~',@VA'/@eA% }',@VA'/@eA&',@VA'/@eA'',@VA'/@eA(' },@UA'/@dA(',@UA '/@cA(9-@ }52$@P@9  A: ,-7@@ }S::$(d%6-P:H:@,$@,%@3"AdNo two adjacent strips with same color p }attern4 6-%4Calculate next starting color to avoid"6-@"@6-@$ } OO7,106,13,96,30,100,40,112,47,145,7,179,15,155,27,164,35,173,60,181,66,174 D:EX7.B }AS./xTEMWFILXYXYFALCFLACORRSTARTCO PLR0HIBYTLOBYTBLANKPLRHPLRVEELASTIBOTTOXPOTIMHORISNDFLAYPOFRMNFRAMEFRAMEMEMFRMSIZBUFFERFRAM$}ENUMPLRPLRFRMMEFRAMEMETEMPMBASSTARVVTOFFSEBYT@@$} $} %%Ǡ̠͠%%$}堸(NNProgram to demonstrate Player-Missile Graphics using string manipulation288Copyright (C) 1982 by D$}avid Fox and Mitchell Waite<FK;A(, A@KThis MUST be the first variable in the programPd$}n*6-P:'AV,*Calculate High Bytex(6-&$AV(Calculate Low Byte$囖&$}&;A(,9@,9@,U67@,.>:,367A(,.>:,B67@,.UFill with blanksY +$}@AR@8 One moment please...YTurn off cursor, print message' AP'Set up memory locations$}" Ap"Set up Player area+ A+Point PLR0$ to Player 0 RAM$ B$Read frames into RAM',((( $}} Ǡ̠Ϡ166-@p6-?@0 Initial velocity: 0  Elasticity: J$}36-@6-@@'6-?P36-?u& A&Move Player off screen?$}6-@'6-&+$&@$$,'6-@%!@*!@0%6-@G 6-6-$#6-/6$}-@;!@G6-@!!!A )@A8,;$6.7+&@,$%@<$,;Se$}lect correct frame# 6.#Fill Buffer with blanks967<%&@,.9Move current frame into buffer) 6.)Mov$}e buffer into Player 0 RAM 6-%g"*+%!?P,92@AP@@E6-g2@$}&'!?P6-%?' A@036-&?!)6-@3 Ap:X$}b Al&AR&Turn on cursorv"" }Enter initial velocity:  A0J- %%}Enter the ball's elasticity (a numberJ  from 0-1 [or more]): .AR@  .Turn off cursor %}B A%%򠰠8,$%} " 6-$  6-$2;A(,;,;,$X((b:6-F:A%},&@:Set aside Player-Missile areal,BBy,Tell ANTIC where PM RAM isv(6-AV$(Find PM Base addr%}ess-@968,-%A($%A9Set addresses of Players;68,-B2H%;Horizontal Player P%}osition registers AAY@BASet PM 2 line resolution, Players enabled8%A@$@%@%}8Color ball green-B2w@-Enable Player display$(#!!Ұ򠰠͛2#B%6-F:A@%},%F:AA,$AVBStart of String Array area<#E%6-F:A4,%F:A5,$AVEStart of Variable Value TableF#E%}6-8,&ECalculate offset from String Array to Player 0P# 6- AZ#C%@CPoke offset of string % }into Variable Value Tabled#B%@BThis points the first string (PLR0$) to PLR(0)n#$x#'% }j'-@t'"~'67<,.>:,' '$' NŠ>NHN55Number of Frames, Frame Size, Numbe% }r of PlayersRN. (Bouncing Ball)\N 3,7,1R""R Frame 1R0,60,126,126,126,60,0&R % } Frame 20R24,60,60,60,60,60,24:R Frame 3DR0,0,0,126,255,126,0 D:EX8.BASFRAMEFRAMEMEMFRMSIZBUFFERFRAM$[hN_PLR0HIBYTLOBYTPLRHPLRVPLRVEELASTIBOTTOXPOTIMHORISNDFLAYPOFRMNTEMPMOVEPFRAMEFRAMEMEMFRMSIZ)}FRAMENUMPLRPLRFRMMEFRAMEMEBUFFERPMOVERMFILMFILLBUFFEPMBASSTARVVTOFFSEBYTPARAMBASPMBAPMBUVVBLKCRITICAPP)}PdD@TB8X@4AAA@D? @ @P @ ?u @`()}@B8RB8R@+2@@@@!@!B@8))B@y)}B @!B6R"A2#BWr$@"%&A$'A$(A%)AH*@f+@,@-@.)} %%Ǡ̠͠%%堹(bbProgram to demonstrate Player-Missi)}le Graphics with Machine Language routine to move players288Copyright (C) 1982 by David Fox and Mitchell Waite<FK)};A(, A@KThis MUST be the first variable in the programPdn*6-P:'AV,*)}Calculate High Bytex(6-&$AV(Calculate Low Byte$囖&&9@,9@,9@,Y )}+@AR@8 One moment please...YTurn off cursor, print message* B*Initialize Routine string)}s' AP'Set up memory locations" Ap"Set up Player area+ A+Point PLR0$ to Player 0 RAM$ B)}$Read frames into RAM* B *Set up parameter addresses"" B0"Turn on interrupts',((  } )}Ǡ̠Ϡ166-@p6-?@0 Initial velocity: 0  Elasticity: J)}36-@6-@@'6-?P36-?u& A&Move Player off screen?6-@)}'6-&+$&@$$,'6-@%!@*!@0%6-@G 6-6-$#6-/6-@)};!@G6-@!!!A )@A,8,!8,,6-?:<,;$6.7+&@,)}$%@<$,;Select correct frame+ 67,.+Move new frame into Player 0 6-%g"*+%!?P,92@)}AP@@E6-g2@&'!?P6-%?' A@036-&?)}!)6-@3 Ap:Xb Al&AR&Turn on cursorv") }" }Enter initial velocity:  A0J- %Enter the ball's elasticity (a numberJ  from 0-1 [or more]): )!}.AR@  .Turn off cursor B A%%򠰠8)"},6-?:<,$ " 6-$ 6-$(;A(,;,)#};, 6-C:, 6-C:, 6-C:,$X((b:6-F:A,&@:Set a)$}side Player-Missile areal,BBy,Tell ANTIC where PM RAM isv(6-AV$(Find PM Base address-)%}@968,-%A($%A9Set addresses of Players AAY@BASet PM 2 line resolution, Playe)&}rs enabled8%A@$@%@8Color ball green-B2w@-Enable Player displayR'6-?:<8)'},<A<,RUse memory fill routine to clear Players$(#!!Ұ򠰠͛2#B%6-F:A)(}@,%F:AA,$AVBStart of String Array area<#E%6-F:A4,%F:A5,$AVEStart of Variable Value TableF))}#E6-8,&ECalculate offset from String Array to Player 0P# 6- AZ#C%@CPoke offset of stri)*}ng into Variable Value Tabled#B%@BThis points the first string (PLR0$) to PLR(0)n#$x#')+}j'-@t'"~'67<,.>:,' '$'* ŠŠӛ*$,Ҡ),}.,;A,8,mm67@,.ZPLb&0ߝShhhF&)-}B,mm67@,.ZFIT`L*H *hMNNML,67A).},.LPP-̠Z-;@A,d-<<67@,.)hhhhhhh̥ͥ`-$-)/}-.!!.(6-A$(Parameter Base address.. 6-.Hi Byte of PLR0 Location goes here)0}.06-%@0Address of a 128 byte buffer&/-@0/=68,-%@%=Player horizontal "shadow" reg)1}isters:/;68,-%@%;Player vertical "shadow" registersb/ /:6-AH:Deferred Vertical Blank Interrupt V)2}ector/6-@fCritical Flag/W6-@6-@'6-@36-@WControl bits for the four Players)3}/D6-?:<<@<,DIMPORTANT: Clear out parameter area/H6-8, A"HPoke Hi Byte of Player)4} 0 into PMBAS/2 6- A2Poke address of buffer/%@0$02)5}26@6Open CRITICAL "valve", set up detour36-%@ A"3' 'Set VBLANK vector to PMOVER,3)6}%@r3;;Close CRITICAL "valve", routine installed3$3 NŠ>NHN55Number of Frames)7}, Frame Size, Number of PlayersRN. (Bouncing Ball)\N 3,7,1R""R Frame 1R0,60,1)8}26,126,126,60,0&R Frame 20R24,60,60,60,60,60,24:R Frame 3DR0,0,0,126,255,126,0 D:EX9.BASRAMEMEMFRMSIZ(n67HZHIBYTLOBYTPLRHPLRVPLRRATEFRMLSTPTRFRMDATAPPSFLAINITANIMATFST2SPEEBYTNUMPLRTEMPMOVEPOINTERF-:}RAMEFRMSIZPLRFRMMEFRAMEMEFRMLSTSIZTOTFRMLSTSIZBUFFERFRAMEMEMFRMLSTMEMPMOVERANIMATANIMATEMFILMFILLBUFFEPLRFRAME-;}FRMLSTMEPMBASOFFSETFRAMELISPARAMBASPMBAPMBUVVBLKCRITICAPPPP@@@@-<}@@ @-=} !"#$%->}&'()*+,-./012 %%Ǡ-?}ΠҠϠ%%報(TTProgram to introduce the Animate Machine Language routine-@} with the walking man288Copyright (C) 1982 by David Fox and Mitchell Waite<F A@Pd-A}n*6-P:'AV,*Calculate High Bytex(6-&$AV(Calculate Low Byte$囖GG9@,-B}9@,9@,9@,9@,9@,Y +@AR@8 One moment please...YTurn off cu-C}rsor, print message* B*Initialize Routine strings' AP'Set up memory locations" Ap"Set up Pl-D}ayer area$ B$Read frames into RAM* B *Set up parameter addresses"" B0"Turn on interrupts,'-E}' }ǠΠϠ6OO FPress a number from 1 to 9 to control his speed or 0's to single step.J6-A-F} 6-@wT A^6-@h r6-@ A|5#@@K:5AT-G}AULF:A,"42@@6-@LFootsteps@F:A-H},"42@$@@6-@%%2 F:AT,"AUAH-I})@6-&@H0ATAU< H6-!@ 6-@  A A-J}F:,A(A-&@ 8, %@ $-K} Man$ A$Point to Frame Lists-&@ 8,8,%$@-L}$ .6-?:<,8$B++-&@ 6-8, A-M} 8,8,%@ $" "6-$%@ 6-$ -N}6-%@ 6-$(;A(,;,;, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:,-O}$X((b:6-F:A,&@:Set aside Player-Missile areal,BBy,-P}Tell ANTIC where PM RAM isv(6-AV$(Find PM Base address-@968,-%A($%A9Se-Q}t addresses of Players9'A%@$@%@9Color him peach AAY@BASet PM 2 line r-R}esolution, Players enabled-B2w@-Enable Player displayR'6-?:<8,<A<,RUse me-S}mory fill routine to clear Players$$''6-.' 6-B'-&@L'.6-T}8,-%.Store addresses of frame dataV' 6-%`'E 8,EPoke Frame size at beginning of each set of frame dataj'-U}-@&@t'"~'8,%'   '$'* ŠŠӛ*$,Ҡ-V}.,;A,8,mm67@,.ZPLb&0ߝShhhF&-W}B,mm67@,.ZFIT`L*H *hMNNML,67A-X},.LP,Š囒,;A,,mm67@,.ZPLbآY0H PN򩀍+-Y}. 23P0ֽ:,mm67@,.Z>ɩ. %:IX.: -Z}23>>,mm67A,.Z >PPPHȱh∱QNPmQJnRR8eeP*R-[}R,++67Aq,.QP..PP-̠Z-;@A,d-<<67@,.)hhhhhhh-\}̥ͥ`-$--.!!.(6-A$(Parameter Base address.. 6-.-]}Hi Byte of PLR0 Location goes here.06-%@0Address of a 128 byte buffer/46-%@4Initialize Frame Animat-^}e routine&/-@0/=68,-%@%=Player horizontal "shadow" registers:/;68,-%@%;Player -_}vertical "shadow" registersD/868,-%@%8Animate rate "shadow" registersN/768,-%@%$@7Pointer t-`}o Frame Listsb/ /:6-AH:Deferred Vertical Blank Interrupt Vector/6-@fCritical Flag/W6-@-a}6-@'6-@36-@WControl bits for the four Players/ 6-%/D6-?:<<@<,DIMPORTANT:-b} Clear out parameter area/H6-8, A"HPoke Hi Byte of Player 0 into PMBAS/2 6- A2-c}Poke address of buffer/%@f0p0z09&@,0-&@058,-%-d}$5Points to start of each Frame List0 6-8, A0+ 8,+Put in address of Frame Data08,%@-e}0@-@@Make up a Frame List (numbers 1 thru FRAMES)08,%%@0 078,%%@7E-f}nd of frame list marker0 0$0226@6Open CRITICAL "valve", set up deto-g}ur36-%@ A"3' 'Set VBLANK vector to PMOVER,3%@636-%@ A@3,%@-q}7B'DOS SYSB*+DUP SYSBUEX1 BASB\EX2 BASB#sEX3 BASBEX4 BASB EX5 BASB EX6 BASB%EX7 BASBEX8 BASB, EX9 BASB99EX10 BASBF{EX11 BASB[EX12 BASBcEX13 BASBFLASH BASBSTRLOADRBAS,Points PMOVER to ANIMATEJ3%@r3;;Close CRITICAL "valve", routine installed3$3 N-r}Š>NHN55Number of Frames, Frame Size, Number of PlayersRN. (Walking Man)\N 5,19,2R -s}RFrame 1, Player 0R770,0,0,0,0,0,0,3,15,29,59,51,7,7,15,252,224,112,48&RFrame 2, Player 00R990,0,0,0,-t}0,0,0,1,7,15,31,55,55,7,111,125,248,192,193:RFrame 3, Player 0DR;;0,0,0,0,0,0,3,7,15,31,31,31,31,222,254,251,231,206,15-u}NRFrame 4, Player 0XR==1,3,3,3,1,7,15,31,30,62,62,63,63,60,124,120,112,112,252bRFrame 5, Player 0lR::0,0,1,1,1,0,-v}7,31,31,31,31,31,15,15,13,31,123,112,124vRFrame 1, Player 1RHH0,28,62,62,62,28,240,240,240,240,251,255,220,192,192,227-w},118,60,24RFrame 2, Player 1RKK0,0,56,124,124,124,56,224,224,224,224,246,254,192,128,192,224,224,248RFrame 3, Pl-x}ayer 1REE0,112,248,248,248,112,192,192,128,128,128,224,224,0,0,0,0,0,128RFrame 4, Player 1R55192,224,224,224,192,0-y},0,0,0,0,0,0,0,0,0,0,0,0,0RFrame 5, Player 1RII0,224,240,240,240,224,128,128,128,128,176,240,0,128,192,128,192,0,0-z} D:EX10.BASBYTLOBYTPLRHPLRVPLRRATEFRMLSTPTRFRMDATAPPSFLAINITANIMATFST2SPEEBYTNUMPLRTEMPMOVEPOINTERF,gh0##HIBYTLOBYTPLRHPLRVPLRRATEFRMLSTPTRFRMDATAMOVERATEMSPEEDTEMPPSFLAINITANIMATALLSPEEINITAUTOMOV1|}PMOVEBYTNUMPLRPOINTERFRAMEFRMSIZPLRFRMMEFRAMEMEFRMLSTSIZTOTFRMLSTSIZBUFFERFRAMEMEMFRMLSTMEMPMOVERANIMATANIMAT1}}EAUTOMOVAUTOMOVEMFILMFILLBUFFEPLRFRAMEFRMLSTMEPMBASOFFSETFRAMELISPARAMBASPMBAPMBUVVBLKCRITICAPPPPFST21~}@@@@@@@ @ 1}@1} !"#$%&'()*+,-.1}/012345678 %%Ǡ٠ҠϠ$$1}報(TTProgram to introduce the AUTOMOVE Machine Language routine and the running boy288Co1}pyright (C) 1982 by David Fox and Mitchell Waite<F A@Pdn*6-P:'AV,*C1}alculate High Bytex(6-&$AV(Calculate Low Byte$囖]]9@,9@,9@,9@1},9@,9@,9@,9@ ,Y +@AR@8 One moment please...YTurn off cursor, p1}rint message* B*Initialize Routine strings' AP'Set up memory locations" Ap"Set up Player ar1}ea$ B$Read frames into RAM* B *Set up parameter addresses"" B0"Turn on interrupts,'' }1}Ǡ٠Ϡ6OO FPress a number from 1 to 9 to control his speed or 0's to single step.@1 -@ 1}6@$"-68,-1 J6-@6-@dT A^6-@h r6-@ A|5#1}@@K:5ATAULF:A,"421}@@6-@LFootsteps@F:A,"42@$@@6-@%%21}/F:Ab, #6-?:<,/Reset Boy F:AT,"AUAH)@6-&@H0AT1}AU< H6-!@ 6-@  A A$$1}F:,A(A-&@8,A(%8, 8, %@  1}$ӠҠӛ $ A$Point to Frame Lists-&@ 8,1}8,%$@$ .6-?:<,8$B++-&@ 6-1}8, A 8,8,%@ $" "6-$%@1} 6-$ 6-%@ 6-$(;A(,;,;, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:,1} 6-C:, 6-C:,$X((b:6-F:A,&@:Set aside Player-Missi1}le areal,BBy,Tell ANTIC where PM RAM isv(6-AV$(Find PM Base address-@968,-1}%A($%A9Set addresses of Players9'A%@$@%@9Color him peach AAY1}@BASet PM 2 line resolution, Players enabled-B2w@-Enable Player displayR'6-?:<8,<A1}<,RUse memory fill routine to clear Players$''6-.' 6-B'-1}&@L'.68,-%.Store addresses of frame dataV' 6-%`'E 8,EPoke Frame size at beginning of each set 1}of frame dataj'-@&@t'"~'8,%'   '$'* ŠŠӛ*$,1}Ҡ.,;A,8,mm67@,.ZPLb&0ߝShhhF&1}B,mm67@,.ZFIT`L*H *hMNN1}ML,67A,.LP,Š囒,;A,,mm67@,.ZPLbآY0H PN1}򩀍+. 23P0ֽ:,mm67@,.Z>ɩ. %:IX1}.: 23>>,mm67A,.Z >PPPHȱh∱QNPmQJnRR8ee1}P*RR,++67Aq,.QP..P,Š,;@t,-]]67@,.1}JPLbح0N G𩀍GI}&(0 (G&0P-̠Z-;@A,d-<<67@1},.)hhhhhhh̥ͥ`-$--.!!.(6-A$(Parame1}ter Base address.. 6-.Hi Byte of PLR0 Location goes here.06-%@0Address of a 128 byte buffer/46-%@1}4Initialize Frame Animate routine/66-%@6Initialize Player Automove routine&/-@0/=68,-1}%@%=Player horizontal "shadow" registers:/;68,-%@%;Player vertical "shadow" registersD/868,-%@1}%8Animate rate "shadow" registersN/768,-%@%$@7Pointer to Frame ListsX/968,-%@2%9Horiz1}ontal movement for AUTOMOVEb/ /:6-AH:Deferred Vertical Blank Interrupt Vector/6-@fCritical Flag1}/W6-@6-@'6-@36-@WControl bits for the four Players/ 6-%/6-%%%/D6-?:<<1}@<,DIMPORTANT: Clear out parameter area/H6-8, A"HPoke Hi Byte of Player 0 into PMBA1}S/2 6- A2Poke address of buffer/%@f0p0z09&@,0-1}&@058,-%$5Points to start of each Frame List0 6-8, A0+ 8,+Put in address of F1}rame Data08,%@0@-@@Make up a Frame List (numbers 1 thru FRAMES)08,%%@0 01}78,%%@7End of frame list marker0 0$02 26@6Open1} CRITICAL "valve", set up detour36-%@ A"3' 'Set VBLANK vector to PMOVER,3%@636-%1}@ A@3,%@,Points PMOVER to ANIMATEJ3%@T36-%@ A^3.%@.1}Points ANIMATE to AUTOMOVEh3%@r3<<Close CRITICAL "valve", routines installed3$3 N1}Š>NHN55Number of Frames, Frame Size, Number of PlayersRN. (Running Boy)\N 4,31,4R 1}RFrame 1, Player 0R##0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&R((0,0,1,3,7,15,14,12,0,0,0,0,0,0,0,00RFrame 2, Player1} 0:R##0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DR%%0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0NRFrame 3, Player 0XR##0,0,0,0,0,0,0,0,0,0,0,1}0,0,0,0bR++0,0,0,0,0,0,0,0,1,3,15,30,30,28,30,30lRFrame 4, Player 0vR&&0,0,0,0,0,0,0,0,0,0,0,0,0,63,254R,,254,252,1}63,63,31,0,0,0,0,0,0,0,0,0,0,0RFrame 1, Player 1R&&0,0,0,0,0,0,0,0,0,1,3,7,14,14,12R331,7,207,207,223,255,255,239,1}195,3,3,1,1,0,0,0RFrame 2, Player 1R##0,0,0,0,0,0,0,0,0,0,0,1,3,7,6R>>6,6,15,63,127,255,255,127,127,255,239,207,301},127,255,252RFrame 3, Player 1R##0,0,0,0,0,0,0,0,0,0,0,0,0,0,0R..1,1,3,7,15,31,63,255,252,192,0,0,0,0,0,0RFra1}me 4, Player 1R''0,0,0,0,0,0,0,13,31,30,0,0,0,7,31R..63,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0SFrame 1, Player 2 S1}550,1,7,31,63,63,63,63,31,207,231,247,127,126,254SDD254,254,254,255,247,227,128,128,128,131,135,207,254,252,240,96 SF1}rame 2, Player 2*S000,0,0,0,0,3,15,31,63,63,31,159,207,231,2554S==127,254,252,252,252,253,223,143,128,192,192,0,0,128,0,01}>SFrame 3, Player 2HS++0,0,3,7,15,15,15,15,15,7,1,1,7,63,255RS99255,255,254,255,255,252,255,255,252,62,14,0,0,0,0,0\1}SFrame 4, Player 2fS551,7,15,15,15,15,7,199,227,121,63,63,254,255,255pS44255,240,224,192,240,248,63,31,15,6,0,0,0,0,0,1}0zSFrame 1, Player 3S==120,252,244,240,240,240,176,176,248,184,200,240,128,0,8S//120,120,240,192,128,0,0,0,0,0,0,0,1}0,0,0,0SFrame 2, Player 3S;;0,0,0,124,254,254,252,248,248,248,216,216,252,220,228S00248,0,0,96,224,224,192,128,0,01},0,0,0,0,0,0SFrame 3, Player 3S==0,126,255,255,255,252,236,236,254,238,242,252,224,128,0S++0,0,0,128,128,0,128,0,01},0,0,0,0,0,0,0SFrame 4, Player 3S==254,255,255,253,252,236,236,254,238,242,252,0,3,135,255S22252,0,0,96,224,224,191}2,192,128,0,0,0,0,0,0,0S0u''Ġ:u1,2,2,3,3,4,5,6,9,0 D:EX11.BASEINITAUTOMOV0p-(-HIBYTLOBYTPLRHPLRVPLRRATEPMWIDTHFRMLSTPTRMOVERATESPEETEMPMOVEALLINITANIMATSNSNDSCONVVOWAL5}INITAUTOMOVFST2BYTMFILFLAOBJECLST2NSPFRSTPLNUMPLRSPOINTEROBJFRMDATAFRAMESFRMSIZEPLRFRMMEMFRMLSTSIZETEMPTE5}MPTEMPFRAMEMETOTFRMLSTSIZBUFFERFRAMEMEMFRMLSTMEMPMOVERANIMATANIMATEAUTOMOVAUTOMOVEMFILLBUFFEPLRFRAMEFRMLSTMEP5}MBASOFFSEOFFSETFRAMELISTPARAMBASPMBAPMBUVVBLKCRITICAPPPP@@@@5}@@@ 5} @!@"#@$@%5}@&@'@()*+,-./0123455}6789:;<@=>?@ABCD5}EFGH $$ҠĠϠ$$報(BBProgram usi5}ng all four Players to create animated foreground288Copyright (C) 1982 by David Fox and Mitchell Waite<F A@5}Pdn*6-P:'AV,*Calculate High Bytex(6-&$AV(Calculate Low Byte$5}囖RR9@,9@,9@,9@,9@,9@,9@,Y +@AR@5}8 One moment please...YTurn off cursor, print message* B*Initialize Routine strings' AP'Set up me5}mory locations" Ap"Set up Player area$ B$Read frames into RAM* B *Set up parameter addresse5}s"" B0"Turn on interrupts,** "}ҠĠϠ6G-@&8,@* GFra5}me rate for walking man@/6-6@/Temporary start up conditionJ A AT6-@^6-?:<,h5} r A|5#@@K:5ATAU36-O:F:Ad,&5}A(,+6-'@36-%K6-+A(&,'@ 52@@K2@@+!!6-5}&+@,+ Ap-" 6-?:<,-6-6@hF:A,"@:2@@@5}\2hFootstepsA+F:Ab,!A)F:Ab, @ 5 APAReset ManK+F:Ad5},!A))F:Ae, @5 AKReset other players F:AT,"AUAH)@6-&@H05}ATAU< H6- A AXb(6-P:,"5}(6-@lK6-&?P+2@@A2@@K A vX'6-?:<8@,<AV<5},XUse memory fill routine to clear Players 2 & 3M%6-P:H:@,$@%@,MWhich object to display (if possibl5}e)(6-(No object selected yetF7AAAAAAC"F$6-?:<5}, 6"@%6-A(&$@/ A@6Tree/"@6-A%5}&' A@/Truck6-A2&Car'8@,!8@,'6-D8,A)&18@,5}A)&>"6@D6-  $ӠҠӛ \%A@$@%@G5}A@$@%@\Set color to peachB6-6-@% ABPoint to proper Frame List-5}8,@w-8@,@w"@Ap$c8,@ -8@,@(9!@N85},Ac8@,A&.%%6-P:H:@,$A%@ ,8$BL V"$`f%A5}@$@%@GA@$@%@fBrown trunk and green leavesj-8@,A)-8@5},At-8@,@2-8@,@~d6-@6-@% A16-@=6-@G A5}dPoint to proper Frame List-8@,-8@,@6-$ 뛺U%A5}@$@%@UAP:H:@,$@,$@%@-8@,A-8@,A3-5}8@,@W-8@,@WB6-@6-@% ABPoint to proper Frame List-8@,@5}-8@,@6-@6-A$ "@$(o6-P:H:@,$@,G6-5}@&P:H:@,$@,$@W6-$@%cAoA2-8@,-8@,@<95}!@$8@,A98@,A2F-8@,@v-8@,@vPB6-@6-@5}% ABPoint to proper Frame ListZ-8@,@-8@,@d6-@6-@@n$x5}++-8,&@6-8<, A8%,8%,%@5} $""-9<@,-9,9,9,9,9,-@ 5} " 68,-68,-68,-68,-8,$8,%@6-%8,$8, 68,-8,%@6-%8,$85}, (;A(,;,;, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:,$5}X((b:6-F:A,&@:Set aside Player-Missile areal,BBy,Tell5} ANTIC where PM RAM isv(6-AV$(Find PM Base address-@968,-%A($%A9Set add5}resses of Players568,-B2V%5Set addresses of Player Widths AAY@BASet PM 2 line resolution5}, Players enabled7A#@7Set priority - Players in front-B2w@-Enable Player displayR'6-5}?:<8,<A<,RUse memory fill routine to clear Players$''"6-5}6-"9,$'-@.'68,-%8'6-%+8,%@,$8,B'-8,&@L'068<,-%05}Store addresses of frame dataV'6-%8,`'J8<,8,JPoke Frame size at beginning of each set of frame dataj'5}-@8,&@t'"~'8<,%'   '$'* ŠŠӛ*$,5}Ҡ.,;A,8,mm67@,.ZPLb&0ߝShhhF&5}B,mm67@,.ZFIT`L*H *hMNNML,65}7A,.LP,Š囒,;A,,mm67@,.ZPLbآY0H PN5}+. 23P0ֽ:,mm67@,.Z>ɩ. %:IX.5}: 23>>,mm67A,.Z >PPPHȱh∱QNPmQJnRR8eeP*5}RR,++67Aq,.QP..P,Š,;@t,-]]67@,.JPLbح5}0N G𩀍GI}&(0 (G&0P-̠Z-;@A,d-<<67@,.)hh5}hhhhh̥ͥ`-$--.!!.(6-A$(Parameter Base ad5}dress.. 6-.Hi Byte of PLR0 Location goes here.06-%@0Address of a 128 byte buffer/46-%@4Initia5}lize Frame Animate routine/66-%@6Initialize Player Automove routine&/-@0/=68,-%@%5}=Player horizontal "shadow" registers:/;68,-%@%;Player vertical "shadow" registersD/868,-%@%8An6}imate rate "shadow" registersN/768,-%@%$@7Pointer to Frame ListsX/968,-%@2%9Horizontal movem6}ent for AUTOMOVEb/ /:6-AH:Deferred Vertical Blank Interrupt Vector/6-@fCritical Flag/W6-@6}6-@'6-@36-@WControl bits for the four Players/ 6-%/ 6-%6-%%%/D6-?:<<@6}<,DIMPORTANT: Clear out parameter area/H6-8, A"HPoke Hi Byte of Player 0 into PMBAS6}/2 6- A2Poke address of buffer/%@f0p0z09<@,0-@6}0-8,&@0=8<,-8,%$8,=Points to start of each Frame List06-8<, A0-6}8<,-Put in address of Frame Data08<,%@0C-@8,CMake up a Frame List (numbers 1 thru FRAME6}S)08<,%%@0 0NHN55Number of Frames, Frame Size, Nu6 }mber of PlayersRN. (Walking Man)\N 5,19,2fN. (Tree Trunk)pN 1,52,1zN. (Tree Top)N 1,26,1N. (Tr6 }uck)N 1,25,2N. (Car)N 1,13,2NR RFrame 1, Player 0R770,0,0,0,0,0,0,3,6}15,29,59,51,7,7,15,252,224,112,48&RFrame 2, Player 00R990,0,0,0,0,0,0,1,7,15,31,55,55,7,111,125,248,192,193:RFrame 6}3, Player 0DR;;0,0,0,0,0,0,3,7,15,31,31,31,31,222,254,251,231,206,15NRFrame 4, Player 0XR==1,3,3,3,1,7,15,31,30,62,626},63,63,60,124,120,112,112,252bRFrame 5, Player 0lR::0,0,1,1,1,0,7,31,31,31,31,31,15,15,13,31,123,112,124vRFrame 1, 6}Player 1RHH0,28,62,62,62,28,240,240,240,240,251,255,220,192,192,227,118,60,24RFrame 2, Player 1RKK0,0,56,124,124,16}24,56,224,224,224,224,246,254,192,128,192,224,224,248RFrame 3, Player 1REE0,112,248,248,248,112,192,192,128,128,128,26}24,224,0,0,0,0,0,128RFrame 4, Player 1R55192,224,224,224,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0RFrame 5, Player 1RII6}0,224,240,240,240,224,128,128,128,128,176,240,0,128,192,128,192,0,0RUUPlayer 2, Tree Trunk6}VNN2,2,132,128,64,0,149,165,210,211,219,251,255,254,126,126,126,126,126,126VUU126,126,126,126,126,126,126,126,126,122,126}6,126,126,126,126,126,126,126,126,126V55126,126,126,126,126,126,126,126,255,255,219,137"VPlayer 3, Tree Top,VQQ24,246},60,60,126,126,126,255,255,255,255,255,255,255,255,255,255,255,255,1266V126,60,60,60,24,24@VTV6}^VPlayer 2, Truck CabhVBB0,0,0,0,0,15,25,17,17,17,17,17,31,31,255,255,255,255,255,255rV255,255,255,28,28|VPlay6}er 3, Truck BodyVUU255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255V255,255,255,12,126}VVVPlayer 2, Car backV..7,9,17,17,17,31,63,127,255,255,255,56,16VPlayer 3, Car front6}V22192,64,32,32,16,248,255,255,255,254,255,28,8 D:EX12.BASRATESPEETEMPMOVEALLINITANIMATSNSNDSCONVVOWAL4D}~%171HIBYTLOBYTCLSEGTEMPHICHRSPEESCRLSTEBYTCFLACHAPAINLFENCPTHEIGHWIDTGRNSCRLWILINELECLOUSC:}RSPCFLAROOMLEFTEMMFILSCRNSZSTORCHIMNESHRUANTENNTREODDHOUSTRUNTREETOBDIDLSZMEHIBASLOBASDLBASSCRNHSCRNLS:}CROLSCROLLDLIROUDLIROUTMFILLWINDOCHRBAOFFSECHARTOTADLITBLSZDLITABLEDLITABLPARAMBASSCRLINISCRLADSCRLLESCRLCL:}DLIADVVBLKCRITICA : } :!} !"#$%&'()*+,:"}-./0123456789:;:#}<=>?@ABCD $$ǠԠŠ$$:$}報(QQProgram demonstrating Horizontal Fine Scrolling and Display List Interrupts288Copyright (C):%} 1982 by David Fox and Mitchell Waite<F A@Pdn*6-P:'AV,*Calculate Hi:&}gh Bytex(6-&$AV(Calculate Low Byte$因&&;@$,;@$,;@,V67@,.>:'}:,367@$,.>:,B67@,.VFill with ASCII 0* B*Initialize Routine strings' AP':(}Set up memory locations# A`#Set up Display List A&Clear screen% A%Load in Character Set:)}0AV0Switch to Street character set@AY@5@Turn screen DMA on again, Wide Playfield) A(:*} A0)Create a street* B *Set up parameter addresses"" B0"Turn on interruptsT6-@:+}|5#@@K:5ATAU F:AT,"AUAH)@:,}6-&@H0ATAU< H6-  Alv6:-}-)!A'6-&A()6-A(7 @6-&@2) 76-%@6-%%$@:.}d$) 6-B:, @$)67%@,.6-%@-:/} A"-@  6-$%6-@:7<,, A +!%@$%%@#+ A!0*":0}A! 4"@6-%@d>)%%$@$%&@) A!0H%%$%&@R \ f:1}6-%%O:,%p6-z6-&@%&$团 @A"@j"@6-@:Q:2},$ A16-6@; A"PF6-@:E,P AV6-` A"Pj A"@T6-@:A, A%6-6@/ A"P:3}:6-@:D,D AJ6-T A"P$%%$%$` $$:4}j -@t -@$~ ""%$%&@%%F:%$%,     $ ( //:5}蠰2 6-?:<<<,< $F  R6.ԽԽ:6}$6-@06-@<6-@H6-@R A  D6. Խ 6-@.6-%@:6-@D A :7} P"6..6-@:6-F6-@$P A  $"   Š͠:8}ٛ 56-5Initialize Pointer to Scroll Window (6-@(How tall is the window 6-6- 0:9}%6-P:H:@,$@%@,0From 2-4 F H:@,$A@E,6-@6 A0F45% 2 Stories F H:@::},$@U@5,6-@6 A0F35% 3 Stories 6-@20% 4 Stories )6-+H:@,?`,)60% :;}chance H"(6-+H:@,?@,H40% chance (only if no shrub) > @6->Not enough room l:<}eft for a fence& )6-+H:@,?P,)50% chance0 36-+H:@,?P,350% yellow, 50% pink: 7 6.-&@:=}A5A7A97 A D = @ A$$=No room for tree, exit routineN X :>}6-6-b H#"*"*!@<6-+H:@,?0,HA4@l v 6-@:?}6. Find height of tree < H:@,$@@,6-@6 A2`<10% < H:@,$@ @:@},6-@6 A2`<20% < H:@,$@@,6-@6 A2`<40% < H:@,$@@,6:A}-@6 A2`<20% 6-@10% A)6-P:H:@,$+&@,%@,5"@A6- 1 6-&:B}!@%6-&@16-@ ##6-+@&,$@%@ 67,. "@A3@ -@&:C}@ 6-%@67,.tt   6-%@67,. "@A3 -@&@* :D}6-%@67,.BV4  > ,H:@,?P,67%@,.KLH ((Add random spacing on side of treeR C%6-P::E}H:@,$@%@,C"@) @A4p\ '"@6-%@' A4pf 6-@ A4pp :F}z S%6-P:H:@,$@%@,+6.7"@I67@ ,.S A4p 67@,.  %6:G}-6-% A  I @A1@IAdd another tree if not enough room for a house A0@ :H}蠲 !@6-@ 6-@ "@6-@ 67,.INZU A5` 67,.IOZX :I}56-%@5-%+&@,$@@ .H:@,?P$67,.. A5 67,. 6:J}7@ ,."A6@$4H:@,?P*67@,.WW4 A6@.67@,.EQ8$Bt:K} 蠳~##6-+@&,$@%@&* @&67&@,.`67,.ZTX,H:@,?P":L}6., A7` 6.56-%@5-%+&@,$@@ 67,. 67@,.:M}67@,.WWW$< 蠴F##6-+@&,$@%@P'"@67,.HTTJ' A@P:N}Z@,!@))H:@,?33A@@Which type house?dCreate Odd House typen6-@x)67@:O},.INZU) A967@,.IOZX6-)67@ ,. ITTO) AACreate Normal :P}House type- *#67&@,.`HJYTTJ- A@P=67&@,.HJ%"367,.HTTJ= A@P0H::Q}@,?P&67,.YTTJ0 A@P67,.HTTM56-%@5-%+&@,$@@0H:@,:R}?%&67,.0 A@67,. 67@,.67@!,.WEQW$:S}6-#6-@4#Display List size76-@H7Horizontal length of scrolli:T}ng window/!6-@$@$%$@/Screen size1 6-%1MEMory to reserve for DL and Screen2'6-%@':U}$AV AQp<.6-F:A,&.Find DL Hi and Lo bytesF6-P6-$AV%Z, 6-%,Starting add:V}ress of Screen RAMd 6- An- 6-6--Find Screen Hi and Lo bytesx.6-%@H.Beginning of Scroll win:W}dow 6-C:, 6-C:, 6-C:,$pz4+@%@4Set flags to Graphics:X} mode 2+AY+Turn off screen DMA2A2Set up top border, 24 scan lines%@A:Y}%@A(%@@q(LMS for line 1%@%@1%@@%A(:Z}1Line 2 (w/ DLI),-@,Loop for lines 3-9 6-%$6-@LMS and HSCRLT"@)":[}@-6-@%A(TDLI, LMS and HSCRL for lines 5 and 82"@6-@q2No scroll for line 9+%:\}@%@$+LMS and HSCRL 6- A%@%@$$%@ %@$. 8.%@(:]}@%A(.Last 3 linesB%@)@L%@0@%A(V;%@1@e;Jump on VB:^}LANK to beginning of DL`%@2j%@3t 6- A~8A8Address of DL for DLI handling :_}routineA Tell ANTIC where the DL isA`Aa0@@70@:`}@@Q0@@k0@@0@@ @Brn, grn, wht, wht, blue$:a}@$$J86-F:A,&&@8Reserve space (512 bytes)T/6-$AV/Find st:b}art of Character Set^,,Read in data, skip first 28 charactersh#6-@($@#6-@5r #B0|"6-:c}!!-%%%$@&@" 6-% 6 +3  In Character Set Data6':d}'Clear out first char (background)-%@ $** ŠŠ:e}ӛ+̠ +;A,+mm67@,.ZPLbحHYZ01PQNPJNQP:f}-mF PYP +mm67@,.Z-FMԭPmDDED8mQDEE(DDEPB:g}CPgP*+mm67A,.ZDQDEBmPBRCCSA))P )ȭRmRȭSmSP4+AA6:h}7Aq,..YZPFDEBCP\+ɠ堛f+;@,p+mm67@,.ZP Lb:i}KHHH]^$%KHȱȱȌKh ԍЎЌЭ]^hz+67@,.hh@+&&:j}ɠ+6-@#BU+ ;,+ 6-C:,+-&@+"+ %, P-:k}̠Z-;@A,d-<<67@,.)hhhhhhh̥ͥ`-$--.!!:l}.(6-A$(Parameter Base address/=6-%@=Poke a 1 to initialize the scroll routinel//6-:m}%@&/Address of scrolling windowv/36-%@(3Line length of scrolling window/:6-%@0:Number of Color :n}Clocks per screen byte/26-%@12Step size of scroll each jiffy/(6-%@6(Address of DLI table/:6-AH:o}:Deferred Vertical Blank Interrupt Vector/6-@fCritical Flag/D6-?:<<@<,DIMPORTANT: Clear:p} out parameter area/ 6- A0  0%@ 0 6- A*0 40%@>00@:q}0Set to 8 color clocks per byteH0 6- AR0 \0%@0$02 26:r}@6Open CRITICAL "valve", set up detour26-%@ A2' 'Set VBLANK vector to SCROLL2%:s}@26-%@ A3,%@,Points SCROLL to DLIROUT3%@r3<<Close CRITI:t}CAL "valve", routines installed|3@3$BBA$Enable DLI's3$3YY 3:u}8646Y0,3,15,31,63,63,127,127Y##0,192,240,248,252,252,254,254Z127,127,127,63,63,31,15,7 Z%%254,254,254,252,252,:v}248,240,224Z4,31,4,31,4,4,4,4Z48,48,48,63,54,54,54,54(Z3,3,3,3,3,3,3,32Z%%255,195,219,219,219,219,219,219}Ơ̠ӠȠEEProgram to demonstrate the Memory Fill Machine Language Routine(288Copyright (C) 1982 by >}David Fox and Mitchell Waite<dn +x BStore routineJ%6-F:@,%F:@,$A>}VJAddress for start of screen memory-AU'6-?:<<A `<,'Call routine>}  AP- U-Z-;@A,d-<<67@,.)hhhhhhh̥ͥ`i->}n-& 6-C:,&Find address of routinex-$ D:FLASH.BAS <Cgh: Q BYTCHARDEVSTRNAMEQUOTEEOLQUOTEQTECNTEOLCNTSTRPNTSTARBYTETOLINSIZERRCHECSTRSTARSTRENLB}@@ B} ǠҠ((Program to convert data to strings88Copyright (C) 1982 by David Fox aB}nd Mitchell Waite( A2++<[[+!@&* @2,)+!A$* A(,)+B}!AU* A`,)+!AR,@F$P967@<@,.667@<@,.>:,9$ZdB}nGG;@,;@,9@,9@,;@,;@,x6.>:@4,?6-6-'6-@B}36-?6- "" A"Open Output Device%% @ DIM $(B})% 6-6-%@%!A6-%@%% @ $()= -6-%@B}!A-"6-%-"@4)"AUA`/ 6.>:,%7@<@,4E/ @` @ B}A@ @ "@4(68,-66-%@@ A 68,-6-%@ "( @6-B}%@( A, @6ᛚH 0 "} - Please recheck your data.>  IB} get H A"A-&@6-%@66 @B} $(8,,8, )=CHR$(34)& 0X""b"Al-&B}@v6-%@77 @ $(8,,8, )=CHR$(155)  ##B}*)) !} ǠҠ4-- %Please the enter storage device:>  E = Screen EditorH  B} D = Disk (D, D2)R  C = Cassette\)-@@%  (E,D,C): )f A`p 6-B:,z67%@,.B}:67%@,.67B:,%@,..STR @@ B/7@<@,4DB}/  Writing to $HqRqMFILL,11610,41,6244\qee104,104,133,204,104,133,203,104,13B}3,206,104,133,205,104,104,160,0,170,138,145,203,200,208,2,230fq@@204,165,205,208,2,198,206,198,205,165,205,5,206,208,234,96B}D1:STRLOADR.BASEVSTRNAMEQUOTEEOLQUOTEQTECNTEOLCNTSTRPNTSTARBYTETOLINSIZERRCHECSTRSTARSTRENL@