@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% }Dž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}GCEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}Nj8`  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( ySYS IIIIIIIIIIIIIIIC`0 ߩ0}}~} HE %|+-3G||DDOS PVDOSDOS[ `SYS sx}~}}"$},-~} CDOS SYS~}V 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$}G 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 FILEb M. RUN AT ADDRESSF. LOCK F-}ILE )N. CREATE MEM.SAVG. UNLOCK FILE- RO. DUPLICATE FILEH. WRITE DOS FILESW9!&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}GPdD#ELO- A.BJdD#E 1 1HH 0hh|DL^%1}:e# Lt% e#dD#EL%7}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}G% A., 1 <0 0 .@L# .BJ 1  DEHIB V L1 ,5 1 <0,L. I}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ӝDL1DEI|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}~VVHIBYTLOBYTPLRHPLRVPLRRATEPMWIDTHFRMLSTPTRMOVERATECLSEGTEMPHICHRSPEETEMPMOVEALLINITANIMATSNV}SNDSCONVVOWALINITAUTOMOVFST2BYTMFILFLAOBJECLST2NSPSCRLSTEFRSTPLNUMPLRSPOINTERCFLACHAPAINLFENCPTHEIGHW}WIDTGRNSCRLWILINELECLOUSCRSPCFLAROOMLEFSCRNSZSTORCHIMNESHRUANTENNTREODDHOUSTRUNTREETOBDIDLSZMEOBJFRMX}DATAFRAMESFRMSIZEPLRFRMMEMFRMLSTSIZETEMPTEMPTEMPFRAMEMETOTFRMLSTSIZBUFFERFRAMEMEMFRMLSTMEMHIBASLOBASDLBASSCRNY}HSCRNLSCROLSCROLLDLIROUDLIROUTPMOVERANIMATANIMATEAUTOMOVAUTOMOVEMFILLBUFFEPLRFRAMEFRMLSTMEWINDOPMBASCHRBAOFZ}GFSECHARTOTAOFFSETFRAMELISTDLITBLSZDLITABLEDLITABLPARAMBASPMBAPMBUSCRLINISCRLADSCRLLESCRLCLDLIADVVBLKCRITICA[}[ PPPP"$@*,@24@:<@BD@JL@RT@ Z\ bd jl st {\}&'./67>?FGNOVW^_fgnovw}]}  !!"")*#12$9:%@B@&HJ@'QR(YZ)ab*ij+qr,y-^}. /01$%2,-3454<=5DE6LM7TU8\]9de:lm;tu<|=_}>?@ A'(B/0C78D?@EGHFNP@GVX@H^`@Ifh@Jnp@KwxL}`}M NOP!#Q)+R13S:;TBCUJKVRSWZ[XbcYikZrs[y\a}] ^_`$&a,.b56c=>dEFeMNfUVg]^hefimnjuvk}b}l @mno!p()q01r89s@AtHIuPQvXYw`axhiypqzxy{}c}| }~"L %%ŠԠŠΠ%%]g報k(^^Prograd}m putting it all together - PM Graphics, Fine Scrolling, & Display List Interrupts288Copyright (C) 1982 by David Fox and Me}itchell Waite<F A@Pdn*6-P:'AV,*Calculate High Bytex(6-&$AVf}8(Calculate Low Byte$囖RR9@<C,9@GN,9@RY,9@]d,9@ho,9@s,9@g} ,&&;@$,;@$#,;@'3,V67@7<,.>:BK,367@$OT,.>:Zc,B67@g,.VFill with ASCII h}40* B*Initialize Routine strings' AP8['Set up memory locations# A`_#Set up Display List Ai}&Clear screen" Ap!?"Set up Player area% ACd%Load in Character Set$ Bh$Read frames into Rj}CAM0AV0Switch to Street character setgAY@GGgTurn screen DMA on again, Wide Playfield, PM 2 linek}% resolution, Players enabled) A()/ A03)Create a street* B *Set up parameter addresses"" B0l}C"Turn on interrupts6G-#'@+6&8,@:g* GFrame rate for walking man@/6-6@k/Temporary startm}m up conditionJ A  A$/T6-@3S^6-?:<,h r AWa|5#@ei@mouK:5n}UATAU36-O:F:Ad,&A(,+6-'@Y36-%K6-+A(&,'@ o} 52@ @K2@#)@-8+!>K!6-&+@Oc,+ Ap-"i 6-?:<,-6p}-6@ hF:A,"@"&:2,0@48@<@@DH\2NPVX^`fhFootstepsA+F:Aq}b,!A)F:Ab, @ ]5 APAReset ManK+F:Ad,!A))F:Ae, @ag5 AkKReset other plar}.yers F:AT,"AUAH)@2>6-&@HBZ0ATAU< `fH6-lu Ay s}> AXb(6-P:,"DL(6-@PalK6-&?Pek+2@ou@yAt}2@@/K A vX'6-?:<8@3>,<AV<D,XUse memory fill routine to clear Players 2 & 3M%6u}-P:H:@ ,$@%@O,MWhich object to display (if possible)(6-Uy(No object selected yetF7A}v}A AAA $A(.C"4F$6-?:<, 6"@w}%6-A(&$@7/ A@6Tree/"@;6-A%&' A@/Truck6-A2&Car'8@x},!8@%,'6-D8+>,A)&18@BV,A)&>"6@ZD6-   $y}7ӠҠӛ \%A@;?$@CG%@KYGA@]a$@ei%@m\Set color to z}peachB6-6-@ &% A*PBPoint to proper Frame List-8V[,@_g-8@kp,@t"{}@Ap$c8",@ &.-8@27,@(;C9!@GMN8Sd,Ac8@h,A&.%%6-P:H:|}@ ,$A%@ 8,8$BL V">R$`f%A@VZ$@^b%@ftGA@x$@}}%@ 5fBrown trunk and green leavesj-8@9J,A)-8@Nb,At-8@fk,@Bow-8@{,~}C@(~d6-@6-@"(% A,416-@8@=6-@DJG ANvdPoint to proper Frame List-8@z,}-8@,@$6-*R$ 뛺U%A@VZ$@^b%@fxUAP:H:@|,}$@ ,$@%@$-8@(9,A-8@=Q,A3-8@UZ,@w^f-8@jo,@wsB6-@} 6-@% ACBPoint to proper Frame List-8@GL,@PX-8@\a,@ep6-@t6-A}#$ "@'9$(o6-P:H:@=B,$@FO,G6-@S[&P:H:@_d,$@hm,$@qW6-$@}'%cAoA2-8@+.,4<-8@@E,@IT<9!@X`$8@du,A98@y,A}2F-8@,@%-8@).,@2=PB6-@AI6-@MS% AWBPoint to proper Frame ListZ-8}@ ,@-8@ ,@$/d6-@3;6-@@?n$x++}-8,&@K6-8<, A8%,8%,%@O $"l} v6-G)!A'6-&A()6-A(7 @KU6-&@2Y_) eo76-%@s6} -%%$@dH$) 6-B:, @$LV)67%@Zn,.6-%@r-} A""-@&L  6-$%6-@:7<,, AP_ +!%@ck$%%@#o+ A!0*}" A! 4"@$.6-%@d2A>)%%$@$EK%&@On) A!0H%%$%&@rR \}  f6-%%O:,%p6-&3z6-&@%7b&$团 @fyA"@j"@}}6-@:Q,$ A16-6@"=; A"PF6-@:E,P AAoV6-` A"Pj A"@T6-@:A, As%6-6@}/ A"P:6-@:D,D A"J6-T A"P$%%$%$` $$}j -!@%.t -48@$<M~ ""%$%&@%Q%F:%$%,     $ ( //};蠰2 6-?:<<<A,< $F  R6.Խ}CԽ$6-@06-@!)<6-@-5H6-@9?R A C_ D6. Խ 6-@cm.6-%@qy:6-@}}D A  P"6.,4.6-@8>:6-DLF6-@$PVP A Z $"   Š}ٛ͠ 56-K5Initialize Pointer to Scroll Window (6-@Oq(How tall is the window 6-w6-} 0%6-P:H:@,$@"&%@*A,0From 2-4 F H:@EJ,$ANR@EV^,6-@b6 A0F45% 2 Stories} F H:@,$@U@5',6-@+P6 A0F35% 3 Stories 6-@Tr20% 4 Stories )6-+H:@v,?`},)60% chance H"*(6-+H:@.3,?@7c,H40% chance (only if no shrub) > @gm6-s>Not eno}'ugh room left for a fence& )6-+H:@+0,?P4P,)50% chance0 36-+H:@TY,?P],350% yellow, 50% pink: 7 6.} -&@ A5A7!A9%+7 A /:D = @>D A$H$=No room for tree, exit routineN }X 6-6-"+b H#"15*";A*!@EP<6-+H:@TY,?0],HA4@l v} 6-@ 76. Find height of tree < H:@;@,$@DH@LT,6-@Xs6 A2`<10% < H:@w,$@ }@ ,6-@26 A2`<20% < H:@6;,$@?C@GO,6-@Sn6 A2`<40% < H:@rw,$@{}@,6-@-6 A2`<20% 6-@1F10% A)6-P:H:@JR,$+&@V[,%@_h,5"@lrA6-x 1 }6-&!@%6-&@ (16-@,8 ##6-+@<C&,$@GK%@Oi 67,. "@mA3@ -}@ &@ 6-%@"B67,.tt   6-%@F]67,. "@atA3 -@x&@}* 6-%@467,.BV4  > ,H:@8=,?PAK,67%@O,.KLH ((Add random spacing on side of tree}R C%6-P:H:@,$@ %@$-,C"@17) @;NA4p\ '"@R\6-%@`u' A4pf 6-@y }'A4pp z S%6-P:H:@+0,$@48%@<K,+6.7"@OWI67@ [v,.S A4p 67@z,.}   %6-6-%% A )4 I @8A1@IAdd another tree if not enough room for a house A0@}C 蠲 !@&6-@*5 6-@9D "@HP6-@T 67,.INZU A5` 67,}.IOZX 56-%@'5-%+&@+0,$@48@<G .H:@KP,?PT$67,.. A5 67,.} 67@ !,."':A6@$4H:@>C,?PGO*67@Sn,.WW4 A6@.67@r,.EQ8} $Bt 蠳~##6-+@$+&,$@/3%@7D&* @HR&67&@Vx,.`67,.ZTX,H:@|,}?P6"6., A7` 6.56-%@:I5-%+&@MR,$@VZ@^ 67,. 67@},.67@I,.WWW$< 蠴F##6-+@MT&,$@X\%@`kP'"@o67,.HTTJ}' A@PZ@,!@!))H:@%2,?33A@6p@Which type house?dCreate Odd House typen6-@tx)}67@ +,.INZU) A967@/D,.IOZX6-JU)67@ Yo,. ITTO) AAsCrea}'te Normal House type- *#67&@+N,.`HJYTTJ- A@P=67&@R`,.HJ%"f367,.HTTJ= A@P} 0H:@,?PO&67,.YTTJ0 A@P67,.HTTM56-%@Sb5-%+&@fk,$@os@w0}H:@ ,?%M&67,.0 A@67,. 67@Qh,.67@!l,.WEQW$}06-6A#6-@4E#Display List size76-A`7Horizontal length }of scrolling window/!6-@"&$@$*0%$@4/Screen size1 6-%1MEMory to reserve for DL and Screen # "} -9<@8,-9,9,9,9,9,-@< " 68,-68,-68,-68,-8,$8,%}@,6-%8,$8, 68,-8,%@0q6-%8,$8, (;A(,;,;,2'6-%@u'$A}EV AQp<.6-F:A,&.Find DL Hi and Lo bytesF6-KP6-$AV%Z, 6-%,Starting address }Zof Screen RAMd 6- An- 6-6--Find Screen Hi and Lo bytesx.6-%@H^.Beginning of Scroll window} 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:,$p}Cz4+@#'%@+Y4Set flags to Graphics mode 2+AY_+Turn off screen DMA2}5A2Set up top border, 24 scan lines%@9LA%@PcA(%@gk@qo(LMS for lin}e 1%@%@#01%@48@<_%A(1Line 2 (w/ DLI),-ei@m,Loop for line}s 3-9 6-%$6-@!<LMS and HSCRLT"@@F)"@JR-6-@V%A(TDLI, LMS and HSCRL for lines} 5 and 82"@6-@q#E2No scroll for line 9+%@IM%@Q$+LMS and HSCRL 6- A}%@ %@!$$%@ %)%@-C$. 8.%@(GK@Oq%A(.Last 3 linesB%@)uy@}} L%@0@*%A(V;%@1.2@e6e;Jump on VBLANK to beginning of DL`%@2ivj%@3z}t 6- A~8A8Address of DL for DLI handling routineA Tell ANTIC where the DL is}!A`Aa0'+@/3@7=70@AE@IM@QWQ0@[]cg@kqk0@uw}}@0@@ @"Brn, grn, wht, wht, blue$X((b<6-F:A} ,&&@<Set aside Player-Missile areal,BBy,Tell ANTIC where PM RAM isv(6-AV$(Find PM Base }address-@968,-%A($%A9Set addresses of Players568,-B2V%5Set addresses o}'f Player Widths 7A#@+^7Set priority - Players in front-B2w@b-Enable Player display} R'6-?:<8,<A<#,RUse memory fill routine to clear Players$@$$}J86-F:A,&&@8Reserve space (512 bytes)T/6-$AV/Find start of Character Set^,,Read in data, }#skip first 28 charactersh#6-@('+$@/7#6-@5;Ur #B0|"6-[p!!-%%%$@tx&@|}(" 6-% 6 +.3  In Character Set Data6''Clear out first char (background)} -%@Q $'',6-W]6-c"9,,#B$'-}C@).'68,-%8'6-%+8,%@-<,$8,B'-BK8,&@OL'068<,-%0Store addresses of frame da}etaV'6-%8,`'J8<,8,JPoke Frame size at beginning of each set of frame dataj'-@ir8,&@vt'"}~'8<,%'   '$'** ŠŠӛ+̠ +;A,+}mm67@ u,.ZPLbحHYZ01PQNPJNQP-mF PYP +mm67@y,.Z}E-FMԭPmDDED8mQDEE(DDEPBCPgP*+mm67A,.ZDQDE}ǭBmPBRCCSA))P )ȭRmRȭSmSP4+AA67Aq,..YZPFDE}/BCP\+ɠ堛f+;@3?,p+mm67@C,.ZP LbKHHH]^$%KHȱȱȌK}h / ԍЎЌЭ]^hz+67@3l,.hh@+&&ɠ+6-@p#BU+} ;,+ 6-C:,+-"(&@,x+"+ %, $,Ҡ.,;A,8,mm67@|,}h.ZPLb&0ߝShhhF&B,mm67@l,.ZFI}T`L*H *hMNNML,67A,.LP,Š}囒,;A,,mm67@!,.ZPLbآY0H PN򩀍+. 23P0ֽ:} ,mm67@,.Z>ɩ. %:IX.: 23>>,mm67A},.Z >PPPHȱh∱QNPmQJnRR8eeP*RR,++67Aq,.QP}2..P,Š,;@t6B,-]]67@F,.JPLbح0N G𩀍GI}&}9(0 (G&0P-̠Z-;@A=I,d-<<67@M,.)hhhhhhh̥ͥ`-}$--.!!.(6-A$(Parameter Base address.. 6-.Hi Byte of PLR0 Location} goes here.06-%@G0Address of a 128 byte buffer/46-%@K4Initialize Frame Animate routine/66-%@}46Initialize Player Automove routine/=6-%@8m=Poke a 1 to initialize the scroll routine&/-sw@{0}/=68,-%@K%=Player horizontal "shadow" registers:/;68,-%@O%;Player vertical "shadow" registersD/86} 8,-%@ A%8Animate rate "shadow" registersN/768,-%@EK%$@Ox7Pointer to Frame ListsX/968,-%@2|%}C89Horizontal movement for AUTOMOVEb/ l//6-%@&<g/Address of scrolling windowv/36-%@(k3Line length of }scrolling window/:6-%@0!W:Number of Color Clocks per screen byte/26-%@1[2Step size of scroll each jiffy} /(6-%@6l(Address of DLI table/:6-AH:Deferred Vertical Blank Interrupt Vector/6-@fpCritical F}lag/W6-@6-@&'6-@*236-@6WControl bits for the four Players/ 6-%/ 6-%6-%%%}/D6-?:<<@<N,DIMPORTANT: Clear out parameter area/H6-8T, A"HPoke Hi Byte of Playe}Kr 0 into PMBAS/2 6- A2Poke address of buffer/%@Ox/ 6- A0  0%@|}( 0 6- A*0 40%@,9>00@=0Set to 8 color clocks per byteH0 6- AR0 \0}%@ 9f0p0z09<@=I,0-@MX0-^g8,&@k0=8<,-8,%}ǎ$8,=Points to start of each Frame List06-8<, A0-8<,-Put in address of Frame Data08<,%}@0C-@^8,CMake up a Frame List (numbers 1 thru FRAMES)08<,%%@b0 0NHN55Number of Frames, Frame Size, Number of PlayersRN. (Walking Man)\N 5,19,2fN. (Tree Trunk)pN } 1,52,1zN. (Tree Top)N 1,26,1N. (Truck)N 1,25,2N. (Car)N 1,13,2NR }GRFrame 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,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,15NR}Frame 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,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,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, Player} 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,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,0R}UUPlayer 2, Tree TrunkVNN2,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,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,24,60,60,126,126,126,255,255,255,255,255,255,255,255,255,255,255,255,1266V}126,60,60,60,24,24@VTV^VPlayer 2, Truck CabhVBB0,0,0,0,0,15,25,17,17,17,17,17,31,31,255,2}55,255,255,255,255rV255,255,255,28,28|VPlayer 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,12VVVPlayer 2, Car backV..7,9,17,17,17,31},63,127,255,255,255,56,16VPlayer 3, Car frontV22192,64,32,32,16,248,255,255,255,254,255,28,8Y}Y 38646Y0,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,25}2,252,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,2}19}REMENT PLAYER NUMBER1480 CPX #$04 ;DONE WITH ALL 4 PLAYERS?1490 BNE LOOP ;NO, LOOP1500 LDA TEMP ;RESTORE ANIMINIT BYTE !?}TO1510 STA ANIMINIT ;WHAT IT WAS ORIGINALLY1520 INX ;SET X TO 51530 LOOP51540 .IF 1-ABASIC @NOREST1550 LDA PMSAVE,X !@};RESTORE ZERO PAGE TEMPORARIES1560 STA ZERO,X1570 DEX1580 BPL LOOP51590 NOREST1600 RTS ;BACK TO BASIC1610 ;1620 D!A}OIT1630 LDY #$7F ;MOVE PLAYER INTO TEMPORARY BUFFER1640 LOOP21650 LDA (ZERO),Y1660 STA (ONE),Y1670 DEY ;NEXT BYTE. A!B}RE WE DONE?1680 BPL LOOP2 ;NO, LOOP.1690 STX PM1 ;SAVE X-REG1700 LDA O0Y,X ;THIS GNARLED MESS OF CODE ENDS UP WITH1710!C} PHA ;THE "DESTINATION" COORDINATE IN THE1720 LDA VPLR,X ;X-REG, THE "SOURCE" Y COORDINATE IN1730 STA O0Y,X ;THE Y-REG,!D} AND MOVES THE DESTINATION1740 TAY ;Y COORDINATE INTO THE SOURCE Y1750 PLA ;COORDINATE LOCATION1760 TAX1770 STX PM2!E}Ǜ1780 LOOP31790 STY PM3 ;SAVE Y-REG1800 TXA ;TRANSFER X-REG TO Y-REG1810 TAY1820 LDA (ONE),Y ;GET DATA BACK FROM BUF!F}FER1830 LDY PM3 ;RESTORE Y-REG1840 STA (ZERO),Y ;STORE DATA IN PLAYER IN NEW SPOT1850 INY ;NEXT BYTE1860 BPL OK ;DID!G}G THE Y-REG HIT $80?1870 LDY #$00 ;SET IT BACK TO 0.1880 OK1890 INX1900 BPL OK2 ;DID THE X-REG HIT $80?1910 LDX #$00 !H}H;SET IT BACK TO 01920 OK21930 CPX PM2 ;HAVE WE COPIED ALL 128 BYTES?1940 BNE LOOP3 ;NO, COPY MORE1950 LDX PM1 ;RESTORE!I} X-REG1960 CLV ;BRANCH BACK TO 'NEXT' TO1970 BVC NEXT ;MOVE ANOTHER PLAYER1980 ;1990 .ENDPMOVER.ASM;v02.10-810713,82 b@@PLb&0ߝShhhF&FIT%K}Ǖ`L*H *hMNNMLPFIT$C26000 REM 26010 DATA PMOVER,11310,186,2215726020 DATA 184,80,16,76,98,228,162,3,189,38,4,157,0,208,)M}202,16,247,48,240,162,6,181,223,157,8326030 DATA 4,202,208,248,104,104,104,133,227,165,227,133,226,172,4,4,162,0,142,4,4,70,)N}226,144,626040 DATA 189,6,4,157,38,4,232,224,4,208,241,140,4,4,162,0,134,224,173,0,4,133,225,173,126050 DATA 4,133,228,173,)O}2,4,133,229,173,3,4,133,226,142,3,4,70,227,176,30,165,224,73,128,13326060 DATA 224,208,2,230,225,232,224,4,208,237,165,226,1)P}41,3,4,232,189,84,4,149,224,202,16,248,9626070 DATA 160,127,177,224,145,228,136,16,249,142,76,4,189,42,4,72,189,10,4,157,42,)Q}4,168,104,17026080 DATA 142,77,4,140,78,4,138,168,177,228,172,78,4,145,224,200,16,2,160,0,232,16,2,162,026090 DATA 236,77,4)R},208,229,174,76,4,184,80,16526010 DATA PMOVER,11310,186,2215726020 DATA 184,80,16,76,98,228,162,3,189,38,4,157,0,208,(11310 DIM PMOVER$(186)11320 PMOVER$(1)="PLb&0ߝShhhF&-T}"11330 PMOVER$(91)="FIT`L*H *hMNNM"11340 -U}PMOVER$(181)="LP"11320 PMOVER$(1)="PLb&0ߝShhhF&,10 ; Š20 ;30 ; COPYRIGHT (C) 1982 BY DAVID FOX AND MITCHELL WAITE40 ;0100 .TITLE "CLK-ANIMATE.ASM;v01.05-810714,1W}820619"0110 .PAGE "Interrupt-driven Player Animater"0120 ;0130 ; BY COREY L. KOSAK0140 ;0150 ; B=$4000,FREL0160 ;01701X} BASE=$40000180 ;0190 *=$4000200 ;0210 ;CASBUF DATABASE EQUATES0220 ;0230 PMBAS *=*+1 ;HIBYTE OF PLAYER MISSILE AREA (1Y}GLOBYTE EQUALS 0)0240 PMBUF *=*+2 ;ADDRESS OF 128 BYTE BUFFER (FOR PMOVER)0250 ANIMINIT *=*+1 ;INIT LOCATION FOR ANIMATE0261Z}Z0 AUTOINIT *=*+1 ;INIT LOCATION FOR AUTOMOVE0270 SCRLINIT *=*+1 ;INIT LOCATION FOR SCROLLER0280 HPLR *=*+4 ;PLAYERS 0-3 X C1[}OORDINATE (FOR PMOVER)0290 VPLR *=*+4 ;PLRS 0-3 Y COORD (FOR PMOVER)0300 RATE *=*+4 ;PLRS 0-3 RATE (FOR ANIMATE)0310 FLSTP1\}TR *=*+8 ;PLRS 0-3 FRAME LIST POINTERS (FOR ANIMATE)0320 SCRLADR *=*+2 ;SCREEN ADDRESS (FOR SCROLL)0330 SCRLLEN *=*+2 ;LINE1]} LENGTH OF SCROLLED AREA (FOR SCROLL)0340 SCRLCLK *=*+1 ;COLOR CLOCKS IN SCREEN BYTE (FOR SCROLL)0350 SCRLSTEP *=*+1 ;SCROL1^}L STEP (FOR SCROLL)0360 MOVERATE *=*+4 ;PLRS 0-3 HORIZONTAL STEP (FOR AUTOMOVE)0370 DLIADR *=*+2 ;ADDRESS OF COLOR TABLE031_}80 ;0390 ;*LOCAL* DATABASE EQUATES0400 ; THESE LOCATIONS ARE *LOCAL* TO THE ROUTINES0410 ; AND SHOULD *NOT* BE MODIFIED BY1`} THE HOST PROGRAM0420 ;0430 O0X *=*+4 ;PLRS 0-3 X COORDINATE0440 O0Y *=*+4 ;PLRS 0-3 Y COORD0450 ORATE0 *=*+4 ;PLRS 0-3 F1a}RAME CHANGE RATE0460 OADR0 *=*+8 ;PLRS 0-3 FRAME LIST ADDRESS0470 TIMR0 *=*+4 ;PLRS 0-3 COUNTDOWN TIMERS (HOW MANY JIFFIES 1b}UNTIL FRAME CHANGE)0480 POS0 *=*+4 ;PLRS 0-3 FRAME LIST POSITION0490 OSADR *=*+2 ;SCREEN ADDRESS FOR SCROLLER0500 CPOS *=*1c}+2 ;COARSE SCROLL POSITION FOR SCROLLER (0-LINELEN)0510 FPOS *=*+1 ;FINE SCROLL POSITION (0-7)0520 OXSTEP0 *=*+4 ;PLRS 0-3 1d}HORIZONTAL STEP0530 DLIPOS *=*+1 ;CURRENT POSITION IN COLOR TABLE0540 PM1 *=*+1 ;4 LOCATIONS RESERVED FOR PMOVER0550 PM2 *1e}=*+10560 PM3 *=*+10570 PM4 *=*+10580 EX1 *=*+1 ;4 LOCATIONS RESERVED FOR ANIMATE, AUTOMOVE, SCROLL, AND MFILL0590 EX2 *=*1f}+10600 EX3 *=*+10610 EX4 *=*+10620 PMSAVE *=*+5 ;ZERO PAGE SAVE AREA FOR PMOVER0630 ZSAVE *=*+4 ;ZERO PAGE SAVE AREA FOR 1g}ALL OTHER ROUTINES0640 ;0650 HPOSP0=$D0000660 XITVBV=$E4620670 ;0680 ZERO=$E00690 ONE=$E20700 ;0710 *=BASE0720 ;071q} bdB'DOS SYSB*+DUP )SYSBUEX14- BASB MFILL ASMBMFILL OBJBMFILL DATBMFILL STRB MFILL2 ASMB,PMOVER ASMBJPMOVER OBJBLPMOVER DATBSPMOVER STRB4VANIMATE ASMBANIMATE OBJB ANIMATE DATBANIMATE STRGBAUTOMOVEASMBAUTOMOVEOBJBAUTOMOVEDATBAUTOMOVESTRB5SCROLL ASMBSCROLL OBJB SCROLL DATBSCROLL STRlCIB DLIROUT ASMB)DLIROUT OBJB*DLIROUT DATB.DLIROUT STRB0EX14M P32Kq30 START0740 CLV0750 BVC START1 ;SKIP OVER VBLANK EXIT ROUTINE.0760 ;0770 EXIT0780 JMP XITVBV0790 ;0800 START108101r} CLD ;CLEAR DEC MODE FOR ATARI BASIC!0820 LDX #$03 ;SAVE ZERO PAGE TEMPS0830 LOOP40840 LDA ZERO,X0850 STA ZSAVE,X0861s}0 DEX0870 BPL LOOP40880 ;0890 LDA ANIMINIT ;READ INIT BYTE0900 BEQ EXIT ;IF IT'S ZERO, LEAVE.0910 BMI DOIT ;IF > 121t}7, OPERATE NORMALLY0920 ;0930 ASL A ;GET '+16' BIT INTO '+128' BIT0940 ASL A0950 ASL A0960 STA EX10970 ;0980 LDX 1u}#$00 ;X=CURRENT PLAYER #0990 ;1000 LOOP1010 LSR ANIMINIT ;PLAYER BIT SET?1020 BCS MOVE ;YES, INITIALIZE PLAYER1030 BC1v}C NEXT ;SKIP OVER BUCKET-BRIGADE1040 ;1050 BBEXIT1060 BEQ EXIT1070 ;1080 NEXT1090 INX ;NEXT PLAYER1100 CPX #$04 ;D1w}ONE?1110 BNE LOOP ;NO, LOOP1120 LDA #$80 ;SET INIT BYTE TO1130 STA ANIMINIT ;"ON"1140 ;1150 BNE DOIT ;UNCONDITIONAL 1x}BRANCH TO DOIT1160 ;1170 MOVE1180 LDA RATE,X ;DOES RATE=0?1190 BNE STORE ;NO, STORE IT1200 LDA #$FF ;YES, CHANGE IT T1y}O $FF1210 STORE1220 STA ORATE0,X ;MOVE PARAMS INTO LOCAL AREA1230 ;1240 TXA ;MULTIPLY X BY 21250 ASL A1260 TAY ;AND1z} PUT INTO Y1270 LDA FLSTPTR,Y ;MOVE ADR INTO LOCAL AREA1280 STA OADR0,Y1290 LDA FLSTPTR+1,Y1300 STA OADR0+1,Y1310 L1{}DA EX1 ;WAS '+16' BIT SET?1320 BMI NEXT ;YES, DON'T INITIALIZE FRAME #1330 LDA RATE,X1340 STA TIMR0,X1350 LDA #$01131|}60 STA POS0,X1370 BNE NEXT ;UNCOND. BRANCH1380 ;1390 DOIT1400 LDA #$00 ;'ZERO' POINTS TO CURRENT1410 STA ZERO ;PLAYE1}}GR1420 LDA PMBAS1430 STA ZERO+11440 ;1450 LDX #$00 ;START WITH PLAYER #01460 LOOP21470 LDA ORATE0,X ;IS THIS A SPECI1~}~AL1480 BEQ NEXT21490 CMP #$FF ;"RATE=0" PLAYER?1500 BEQ CHANGE2 ;YES. FILL PLAYER.1510 ;1520 NOTZERO1530 DEC TIMR0,1}X ;HAS TIME RUN OUT FOR THIS PLAYER?1540 BEQ CHANGEIT ;YES, CHANGE FRAME1550 ;1560 NEXT21570 LDA ZERO ;POINT TO NEXT PL1}AYER1580 EOR #$801590 STA ZERO1600 BNE INC1610 INC ZERO+11620 ;1630 INC1640 INX ;MOVE TO NEXT PLAYER1650 CPX #$1}04 ;LAST PLAYER?1660 BNE LOOP2 ;NO, LOOP1670 ;1680 LOOP51690 LDA ZSAVE-1,X ;RESTORE ZERO PAGE LOCS1700 STA ZERO-1,X11}710 DEX1720 BNE LOOP51730 BEQ BBEXIT ;UNCOND. BRANCH TO EXIT1740 ;1750 CHANGEIT1760 LDA ORATE0,X ;RESET TIMER1770 1}CMP #$FF1780 BNE NOTSPECIAL1790 CHANGE21800 LDA #$011810 NOTSPECIAL1820 STA TIMR0,X1830 TXA ;SET Y=X*21840 ASL A1}Ǜ1850 TAY1860 LDA OADR0,Y ;MOVE PLR ADDRESS1870 STA ONE ;INTO 'ONE'1880 LDA OADR0+1,Y1890 STA ONE+11900 ;1910 INC1} POS0,X ;INCREMENT POSITION IN TABLE1920 LDA POS0,X1930 ZAPPO1940 TAY1950 LDA (ONE),Y ;GET FRAME #1960 BNE OK ;IF IT1}'S NON-ZERO, JUMP T 'OK'1970 LDA #$02 ;RESET FRAME POSITION1980 STA POS0,X1990 BNE ZAPPO ;UNCOND. BRANCH TO ZAPPO2000 1}BBNEXT22010 BVC NEXT2 ;BUCKET-BRIGADE2020 ;2030 OK2040 STA EX1 ;STORE FRAME # MINUS ONE.2050 DEC EX12060 LDY #$0021}070 LDA (ONE),Y ;PUT ADDRESS OF2080 PHA ;FRAME DATA2090 INY ;INTO 'ONE'2100 LDA (ONE),Y2110 STA ONE+1 ;STORE IT211}20 PLA2130 STA ONE2140 DEY ;SET Y TO ZERO2150 LDA (ONE),Y ;STORE FRAME HEIGHT2160 STA EX2 ;FRAME HEIGHT2170 ;2180 1};PERFORM:2190 ;FRAMENUMBER TIMES HEIGHT + FRAME ADDRESS + 12200 ;2210 LDA #$00 ;THIS MULTIPLIES (FRAMENUMBER-1)*HEIGHT221}20 LDY #$082230 NEXTBIT2240 LSR EX1 ;FRAMENUMBER2250 BCC ALIGN2260 CLC2270 ADC EX22280 ;2290 ALIGN2300 LSR A231}10 ROR EX32320 DEY2330 BNE NEXTBIT2340 TAY ;HIBYTE OF RESULT INTO Y2350 ;2360 LDA EX3 ;LOBYTE OF RESULT IN A-REG21}E370 SEC ;+ 12380 ADC ONE ;+ FRAME ADDRESS2390 STA ONE2400 TYA ;NOW ADD THE HIBYTES2410 ADC ONE+12420 STA ONE+121}430 STX EX1 ;SAVE X2440 LDA O0Y,X ;GET PLAYER Y COORD2450 TAY ;PUT IN Y-REG2460 LDX #$002470 ;2480 LOOP32490 STY 1}EX3 ;SAVE Y2500 TXA ;MOVE X INTO Y2510 TAY2520 LDA (ONE),Y ;MOVE FRAME INTO PLAYER2530 LDY EX3 ;RESTORE Y2540 STA (1}ZERO),Y2550 INY2560 INX2570 CPX EX2 ;HAVE WE COPIED ALL BYTES?2580 BNE LOOP3 ;NO, LOOP2590 ;2600 LDX EX1 ;RESTORE 1}X2610 LDA ORATE0,X2620 CMP #$FF ;IS RATE=$FF?2630 BNE NOTFF2640 INC ORATE0,X ;YES, SET RATE=02650 NOTFF2660 CLV261}70 BVC BBNEXT22680 ;2690 .END (C) 1982 BY DAVID FOX AND MITCHELL WAITE40 ;0100 .TITLE "CLK-ANIMATE.ASM;v01.05-810714,0"@%APLbآY0H PN򩀍+. 23P0ֽ:>ɩ. %:5}IX.: 23>> >PPPHȱh∱QNPmQJnRR8e5}eP*RRQP..P򩀍+. 23P0ֽ:>ɩ. %:4227000 REM 27010 DATA ANIMATE,11410,294,3477927020 DATA 184,80,3,76,98,228,216,162,3,181,224,157,89,4,209}2,16,248,173,3,4,240,237,48,72,1027030 DATA 10,10,141,80,4,162,0,78,3,4,176,16,144,2,240,218,232,224,4,208,242,169,128,141,39}Ǜ27040 DATA 4,208,43,189,14,4,208,2,169,255,157,46,4,138,10,168,185,18,4,153,50,4,185,19,427050 DATA 153,51,4,173,80,4,48,219}4,189,14,4,157,58,4,169,1,157,62,4,208,201,169,0,133,22427060 DATA 173,0,4,133,225,162,0,189,46,4,240,9,201,255,240,37,222,59}8,4,240,25,165,224,73,12827070 DATA 133,224,208,2,230,225,232,224,4,208,227,189,88,4,149,223,202,208,248,240,149,189,46,4,209}127080 DATA 255,208,2,169,1,157,58,4,138,10,168,185,50,4,133,226,185,51,4,133,227,254,62,4,18927090 DATA 62,4,168,177,226,29}08,9,169,2,157,62,4,208,244,80,186,141,80,4,206,80,4,160,0,17727100 DATA 226,72,200,177,226,133,227,104,133,226,136,177,226,9}141,81,4,169,0,160,8,78,80,4,144,427110 DATA 24,109,81,4,74,110,82,4,136,208,240,168,173,82,4,56,101,226,133,226,152,101,2279}G,133,22727120 DATA 142,80,4,189,42,4,168,162,0,140,82,4,138,168,177,226,172,82,4,145,224,200,232,236,8127130 DATA 4,208,2379},174,80,4,189,46,4,201,255,208,3,254,46,4,184,80,15110,294,3477927020 DATA 184,80,3,76,98,228,216,162,3,181,224,157,89,4,208511410 DIM ANIMATE$(294)11420 ANIMATE$(1)="PLbآY0H PN򩀍+. 23P0=}ֽ:"11430 ANIMATE$(91)=">ɩ. %:IX.: 23>>"114=}40 ANIMATE$(181)=" >PPPHȱh∱QNPmQJnRR8eeP*RR"11450 ANIMATE$(=}271)="QP..P"IMATE$(1)="PLbآY0H PN򩀍+. 23P0< 10 ; Š20 ;30 ; COPYRIGHT (C) 1982 BY DAVID FOX AND MITCHELL WAITE40 ;0100 .TITLE "CLK-AUTOMOVE.ASM;v01.04-81072A}4,820619"0110 .PAGE "Automatic Player Mover"0120 ;0130 ;BY COREY L. KOSAK0140 ;0150 ;B=$4000,FREL0160 ;0170 BASE=$400A}00180 ;0190 *=$4000200 ;0210 ;CASBUF DATABASE EQUATES0220 ;0230 PMBAS *=*+1 ;HIBYTE OF PLAYER MISSILE AREA (LOBYTE EQUA}ALS 0)0240 PMBUF *=*+2 ;ADDRESS OF 128 BYTE BUFFER (FOR PMOVER)0250 ANIMINIT *=*+1 ;INIT LOCATION FOR ANIMATE0260 AUTOINITA} *=*+1 ;INIT LOCATION FOR AUTOMOVE0270 SCRLINIT *=*+1 ;INIT LOCATION FOR SCROLLER0280 HPLR *=*+4 ;PLAYERS 0-3 X COORDINATE A}(FOR PMOVER)0290 VPLR *=*+4 ;PLRS 0-3 Y COORD (FOR PMOVER)0300 RATE *=*+4 ;PLRS 0-3 RATE (FOR ANIMATE)0310 FLSTPTR *=*+8 ;A}PLRS 0-3 FRAME LIST POINTERS (FOR ANIMATE)0320 SCRLADR *=*+2 ;SCREEN ADDRESS (FOR SCROLL)0330 SCRLLEN *=*+2 ;LINE LENGTH OFA} SCROLLED AREA (FOR SCROLL)0340 SCRLCLK *=*+1 ;COLOR CLOCKS IN SCREEN BYTE (FOR SCROLL)0350 SCRLSTEP *=*+1 ;SCROLL STEP (FOA}R SCROLL)0360 MOVERATE *=*+4 ;PLRS 0-3 HORIZONTAL STEP (FOR AUTOMOVE)0370 DLIADR *=*+2 ;ADDRESS OF COLOR TABLE0380 ;0390 A};*LOCAL* DATABASE EQUATES0400 ; THESE LOCATIONS ARE *LOCAL* TO THE ROUTINES0410 ; AND SHOULD *NOT* BE MODIFIED BY THE HOST A}PROGRAM0420 ;0430 O0X *=*+4 ;PLRS 0-3 X COORDINATE0440 O0Y *=*+4 ;PLRS 0-3 Y COORD0450 ORATE0 *=*+4 ;PLRS 0-3 FRAME CHANGA}E RATE0460 OADR0 *=*+8 ;PLRS 0-3 FRAME LIST ADDRESS0470 TIMR0 *=*+4 ;PLRS 0-3 COUNTDOWN TIMERS (HOW MANY JIFFIES UNTIL FRAMA}GE CHANGE)0480 POS0 *=*+4 ;PLRS 0-3 FRAME LIST POSITION0490 OSADR *=*+2 ;SCREEN ADDRESS FOR SCROLLER0500 CPOS *=*+2 ;COARSEA} SCROLL POSITION FOR SCROLLER (0-LINELEN)0510 FPOS *=*+1 ;FINE SCROLL POSITION (0-7)0520 OXSTEP0 *=*+4 ;PLRS 0-3 HORIZONTALA} STEP0530 DLIPOS *=*+1 ;CURRENT POSITION IN COLOR TABLE0540 PM1 *=*+1 ;4 LOCATIONS RESERVED FOR PMOVER0550 PM2 *=*+10560 A}PM3 *=*+10570 PM4 *=*+10580 EX1 *=*+1 ;4 LOCATIONS RESERVED FOR ANIMATE, AUTOMOVE, SCROLL, AND MFILL0590 EX2 *=*+10600 EXA}3 *=*+10610 EX4 *=*+10620 PMSAVE *=*+5 ;ZERO PAGE SAVE AREA FOR PMOVER0630 ZSAVE *=*+4 ;ZERO PAGE SAVE AREA FOR ALL OTHER A}ROUTINES0640 ;0650 XITVBV=$E4620660 ;0670 ZERO=$E00680 ONE=$E20690 ;0700 *=BASE0710 ;0720 START0730 CLV0740 BVCA} START10750 ;0760 EXIT0770 JMP XITVBV0780 ;0790 START10800 CLD ;CLEAR DECIMAL MODE!!!0810 LDA AUTOINIT ;INIT BYTE A}SET?0820 BEQ EXIT ;NO, LEAVE0830 BMI MOVETHEM ;NORMAL OPERATION IF >1270840 ;0850 LDX #$00 ;START WITH PLAYER #00860 A}LOOP0870 LSR AUTOINIT ;IS THE BIT FOR THIS PLAYER SET?0880 BCC NEXT ;NO, SKIP OVER UPDATE0890 LDA MOVERATE,X ;MOVE PARAA}MS INTO LOCAL LOCATIONS0900 STA OXSTEP0,X0910 NEXT0920 INX0930 CPX #$04 ;ARE WE ALL DONE?0940 BNE LOOP ;NO, SO LOOPA}0950 LDA #$800960 STA AUTOINIT ;SET INIT BYTE TO $800970 ;0980 MOVETHEM0990 LDX #$03 ;START WITH PLAYER #31000 LOOP2A}1010 LDA OXSTEP0,X ;READ STEP1020 EOR #$80 ;REVERSE SIGN1030 PHP1040 CLC1050 ADC O0X,X ;ADD STEP TO OLD XCOORD1060 A} BCC CCLEAR1070 ;1080 PLP1090 BMI OK ;CARRY SET IS OK, IF STEP IS NEGATIVE1100 BPL BAD1110 ;1120 CCLEAR1130 PLP11A}40 BPL OK ;CARRY CLEAR IS OK, IF STEP IS POSITIVE1150 ;1160 BAD1170 LDA #$80 ;ZERO THE STEP. (STOP MOTION FOR THIS PLAYEA}R)1180 STA OXSTEP0,X1190 LDA #$00 ;ZERO THE XCOORD OF THIS PLAYER1200 ;1210 OK1220 STA O0X,X ;STORE XCOORD1230 DEX A};DO NEXT PLAYER1240 BPL LOOP2 ;LAST PLAYER? NO, LOOP1250 BMI EXIT ;YES, LEAVE.1260 .END "CLK-AUTOMOVE.ASM;v01.04-81072@^@I@PLbح0N G𩀍GI}&(0 (G&0E.1260 .END "CLK-AUTOMOVE.ASM;v01.04-81072DP28000 REM 28010 DATA AUTOMOVE,11510,74,656428020 DATA 184,80,3,76,98,228,216,173,4,4,240,247,48,23,162I}G,0,78,4,4,144,6,189,32,4,15728030 DATA 71,4,232,224,4,208,240,169,128,141,4,4,162,3,189,71,4,73,128,8,24,125,38,4,14428040 I}DATA 5,40,48,12,16,3,40,16,7,169,128,157,71,4,169,0,157,38,4,202,16,223,48,1854,80,3,76,98,228,216,173,4,4,240,247,48,23,162HO11510 DIM AUTOMOVE$(74)11520 AUTOMOVE$(1)="PLbح0N G𩀍GI}&(0 (G&0"3,162Lx10 ; ̠20 ;30 ; COPYRIGHT (C) 1982 BY DAVID FOX AND MITCHELL WAITE40 ;0100 .TITLE "CLK-SCROLL.ASM;v01.09-810719,82Q}0619"0110 .PAGE "Interrupt-driven Screen Scroller"0120 ;0130 ; BY COREY L. KOSAK0140 ;0150 ; B=$4000,FREL0160 ;0170 BQ}ASE=$40000180 ;0190 *=$4000200 ;0210 ; CASBUF DATABASE EQUATES0220 ;0230 PMBAS *=*+1 ;HIBYTE OF PLAYER MISSILE AREA (LQ}OBYTE EQUALS 0)0240 PMBUF *=*+2 ;ADDRESS OF 128 BYTE BUFFER (FOR PMOVER)0250 ANIMINIT *=*+1 ;INIT LOCATION FOR ANIMATE0260Q} AUTOINIT *=*+1 ;INIT LOCATION FOR AUTOMOVE0270 SCRLINIT *=*+1 ;INIT LOCATION FOR SCROLLER0280 HPLR *=*+4 ;PLAYERS 0-3 X COQ}ORDINATE (FOR PMOVER)0290 VPLR *=*+4 ;PLRS 0-3 Y COORD (FOR PMOVER)0300 RATE *=*+4 ;PLRS 0-3 RATE (FOR ANIMATE)0310 FLSTPTQ}R *=*+8 ;PLRS 0-3 FRAME LIST POINTERS (FOR ANIMATE)0320 SCRLADR *=*+2 ;SCREEN ADDRESS (FOR SCROLL)0330 SCRLLEN *=*+2 ;LINE Q}LENGTH OF SCROLLED AREA (FOR SCROLL)0340 SCRLCLK *=*+1 ;COLOR CLOCKS IN SCREEN BYTE (FOR SCROLL)0350 SCRLSTEP *=*+1 ;SCROLLQ} STEP (FOR SCROLL)0360 MOVERATE *=*+4 ;PLRS 0-3 HORIZONTAL STEP (FOR AUTOMOVE)0370 DLIADR *=*+2 ;ADDRESS OF COLOR TABLE038Q}0 ;0390 ;*LOCAL* DATABASE EQUATES0400 ; THESE LOCATIONS ARE *LOCAL* TO THE ROUTINES0410 ; AND SHOULD *NOT* BE MODIFIED BY Q}THE HOST PROGRAM0420 ;0430 O0X *=*+4 ;PLRS 0-3 X COORDINATE0440 O0Y *=*+4 ;PLRS 0-3 Y COORD0450 ORATE0 *=*+4 ;PLRS 0-3 FRQ}AME CHANGE RATE0460 OADR0 *=*+8 ;PLRS 0-3 FRAME LIST ADDRESS0470 TIMR0 *=*+4 ;PLRS 0-3 COUNTDOWN TIMERS (HOW MANY JIFFIES UQ}NTIL FRAME CHANGE)0480 POS0 *=*+4 ;PLRS 0-3 FRAME LIST POSITION0490 OSADR *=*+2 ;SCREEN ADDRESS FOR SCROLLER0500 CPOS *=*+Q}2 ;COARSE SCROLL POSITION FOR SCROLLER (0-SCRLLEN)0510 FPOS *=*+1 ;FINE SCROLL POSITION (0-7)0520 OXSTEP0 *=*+4 ;PLRS 0-3 HQ}ORIZONTAL STEP0530 DLIPOS *=*+1 ;CURRENT POSITION IN COLOR TABLE0540 PM1 *=*+1 ;4 LOCATIONS RESERVED FOR PMOVER0550 PM2 *=Q}G*+10560 PM3 *=*+10570 PM4 *=*+10580 EX1 *=*+1 ;4 LOCATIONS RESERVED FOR ANIMATE, AUTOMOVE, SCROLL, AND MFILL0590 EX2 *=*+Q}10600 EX3 *=*+10610 EX4 *=*+10620 PMSAVE *=*+5 ;ZERO PAGE SAVE AREA FOR PMOVER0630 ZSAVE *=*+4 ;ZERO PAGE SAVE AREA FOR AQ}LL OTHER ROUTINES0640 ;0650 XITVBV=$E4620660 HSCROLL=$D4040670 SDLSTL=$2300680 ;0690 ZERO=$E00700 ONE=$E20710 ;0720 Q} *=BASE0730 ;0740 START0750 CLV0760 BVC START1 ;SKIP OVER VBLANK EXIT ROUTINE0770 ;0780 EXIT0790 JMP XITVBV0800 ;Q}0810 START10820 CLD ;CLEAR DECIMAL MODE FOR ATARI BASIC!0830 LDA SCRLINIT ;IS THE INIT BYTE SET?0840 BEQ EXIT ;NO, LEAQ}VE0850 BPL BBINIT2 ;YES, INIT EVERYTHING0860 ;0870 LDA ZERO ;SAVE ZERO PAGE TEMPS0880 STA ZSAVE0890 LDA ZERO+10900 Q} STA ZSAVE+10910 LDA SDLSTL ;MOVE DISPLAY LIST POINTER0920 STA ZERO ;INTO TEMPORARY POINTER0930 LDA SDLSTL+10940 STA Q}ZERO+10950 ;0960 ; NOW WE SPLIT SCRLSTEP INTO A COARSE0970 ; AND FINE STEP, AND ALSO COMPUTE, VIA0980 ; SCRLCLK, THE NUMBQ}ER OF BYTES PER SCREEN LINE (IN WIDE PLAYFIELD)0990 ;1000 LDA SCRLCLK ;MOVE CLOCK VALUE TO EX11010 STA EX11020 LDA #$CQ}0 ;BYTES PER MODE LINE1030 STA EX21040 LDA SCRLSTEP ;SHIFT OUT FINE SCROLL1050 LDY #$00 ;OFFSET IN SCREEN BYTE TABLE10Q}60 CLOOP1070 LSR EX1 ;SHIFT RIGHT CLOCK VALUE1080 BCC CDONE ;ANY BITS LEFT?1090 LSR A ;YES, SHIFT SCROLL VALUE1100 LSQ}R EX2 ;DIVIDE MODE LINE LENGTH BY 21110 INY ;AND BUMP POINTER1120 BNE CLOOP ;ALWAYS TAKEN1130 CDONE1140 STA EX1 ;STOREQ} COARSE STEP1150 ;1160 LDA SCRLSTEP1170 AND SCRLCLK ;GET FINE STEP1180 ;1190 CLC1200 ADC FPOS ;ADD CURRENT FINESCROQ}LL VALUE1210 CMP SCRLCLK ;DID IT GO OVER CLOCK VALUE?1220 BEQ OK ;NOPE.1230 BCC OK ;NOPE.1240 BCS INCIT ;SKIP OVER BUQ}CKET-BRIGADES1250 ;1260 BBEXIT21270 BVC EXIT1280 BBINIT21290 BNE BBINIT1300 ;1310 INCIT1320 INC EX1 ;YES. INCREMENQ}T COARSE STEP1330 AND SCRLCLK ;AND PUT FINE STEP IN RANGE1340 ;1350 OK1360 STA FPOS ;STORE IN CURRENT SCROLL VALUE1370Q} EOR SCRLCLK ;HSCROLL REGISTER IS1380 STA HSCROLL ;'BACKWARDS'1390 ;1400 LDA EX1 ;GET COARSE SCROLL STEP1410 CLC1420Q} ADC CPOS ;ADD CURRENT SCROLL VALUE1430 STA CPOS ;AND STORE BACK1440 BCC OK41450 INC CPOS+11460 ;1470 OK41480 LDA Q}GCPOS ;ADD EX2+1 TO TEST FOR1490 SEC ;END OF SCREEN1500 ADC EX21510 STA CPOS1520 BCC OK51530 INC CPOS+11540 OK515Q}50 LDA CPOS+11560 CMP SCRLLEN+1 ;HAVE WE SCROLLED TO EDGE OF SCREEN?1570 BCC OK2 ;NO, WE'RE OK1580 BNE RESET ;YES, SETQ} BACK TO BEGINNING1590 LDA CPOS ;MAYBE?1600 CMP SCRLLEN1610 BCC OK2 ;NO, WE'RE OK1620 RESET1630 LDA #$00 ;SET POINTEQ}RS TO BEGINNING OF1640 STA CPOS ;SCREEN LINE1650 STA CPOS+11660 STA EX11670 LDA SCRLADR ;MOVE START ADDRESS1680 STAQ} OSADR ;OF SCROLL WINDOW1690 LDA SCRLADR+1 ;INTO LOCAL AREA1700 STA OSADR+11710 CLV ;JUMP OVER BUCKET BRIGADE BRANCHESQ}1720 BVC OK6 ;AND DON'T SUBTRACT EX21730 ;1740 BBINIT1750 BNE INIT1760 BBEXIT1770 BVC BBEXIT21780 ;1790 OK21800 LQ}DA CPOS ;SUBTRACT THE EX2 WE ADDED EARLIER1810 CLC1820 SBC EX21830 STA CPOS1840 BCS OK61850 DEC CPOS+11860 OK6187Q}0 LDA OSADR1880 CLC1890 ADC EX1 ;ADD STEP TO SCREEN ADDRESS1900 STA OSADR ;AND MOVE INTO EX3 AND EX41910 STA EX3192Q}0 BCC OK31930 INC OSADR+11940 ;1950 OK31960 LDA OSADR+11970 STA EX41980 LDY #$03 ;SKIP OVER FIRST THREE DL INSTRUCQ}TIONS1990 LOOP2000 LDA (ZERO),Y ;GET BYTE IN DISPLAY LIST2010 CMP #$41 ;JVB? (END OF DLIST?)2020 BEQ DONE ;YES, QUIT2Q}030 ;2040 AND #$50 ;HSCROLL OR LMS BITS SET?2050 BEQ NOCHANGE ;NO, FORGET IT2060 AND #$10 ;HSCROLL SET?2070 BEQ NSCROQ}LL ;NO, SKIP OVER NEXT TWO BYTES2080 INY ;NEXT 2 BYTES ARE MEMORY ADDRESS OF CURRENT LINE2090 LDA EX3 ;MOVE SCREEN ADDRESQ}S2100 STA (ZERO),Y ;INTO DISPLAY LIST2110 CLC2120 ADC SCRLLEN ;AND ADD SCRLLENGTH2130 STA EX32140 INY2150 LDA EX4Q} ;DO HIBYTE2160 STA (ZERO),Y2170 ADC SCRLLEN+12180 STA EX42190 ;2200 .BYTE $AD ;"LDA ABSOLUTE" OPCODE SKIPS NEXT 2 BQ}YTES2210 ;2220 NSCROLL2230 INY2240 INY2250 ;2260 NOCHANGE2270 INY2280 BNE LOOP ;ALWAYS (DISPLAY LIST MUSTN'T BE LQ}ONGER THAN 256 BYTES)2290 ;2300 BBEXIT32310 BVC BBEXIT2320 ;2330 DONE2340 LDA ZSAVE ;RESTORE ZERO PAGE TEMPS2350 STQ}A ZERO2360 LDA ZSAVE+12370 STA ZERO+12380 CLV2390 BVC BBEXIT2400 ;2410 INIT2420 LDA #$802430 STA SCRLINIT ;SET Q}INIT BYTE TO "ON"2440 LDA SCRLCLK ;SET SCROLL POINTERS TO LEFT OF SCREEN2450 STA FPOS2460 LDA #$002470 STA CPOS2480 Q}G STA CPOS+12490 LDA SCRLADR ;MOVE SCREEN ADDRESS TO LOCAL AREA2500 STA OSADR2510 LDA SCRLADR+12520 STA OSADR+12530 LQ}EAVE2540 CLV2550 BVC BBEXIT3 ;LEAVE.2560 ;2570 .END MITCHELL WAITE40 ;0100 .TITLE "CLK-SCROLL.ASM;v01.09-810719,82P;@;APLbحHYZ01PQNPJNQP-mF PYP-FMԭPmDDEU}D8mQDEE(DDEPBCPgPDQDEBmPBRCCSA))P )ȭRmU}RȭSmSPYZPFDEBCP-mF PYP-FMԭPmDDETH24000 REM ̠24010 DATA SCROLL,11020,316,2934924020 DATA 184,80,3,76,98,228,216,173,5,4,240,247,16,72,165,2Y}24,141,89,4,165,225,141,90,4,17324030 DATA 48,2,133,224,173,49,2,133,225,173,30,4,141,80,4,169,192,141,81,4,173,31,4,160,02Y}4040 DATA 78,80,4,144,7,74,78,81,4,200,208,244,141,80,4,173,31,4,45,30,4,24,109,70,424050 DATA 205,30,4,240,14,144,12,176,4,Z}80,173,208,89,238,80,4,45,30,4,141,70,4,77,30,424060 DATA 141,4,212,173,80,4,24,109,68,4,141,68,4,144,3,238,69,4,173,68,4,56Z},109,81,424070 DATA 141,68,4,144,3,238,69,4,173,69,4,205,29,4,144,40,208,8,173,68,4,205,28,4,14424080 DATA 30,169,0,141,68,Z}4,141,69,4,141,80,4,173,26,4,141,66,4,173,27,4,141,67,4,18424090 DATA 80,19,208,103,80,159,173,68,4,24,237,81,4,141,68,4,176Z},3,206,69,4,173,66,4,2424100 DATA 109,80,4,141,66,4,141,82,4,144,3,238,67,4,173,67,4,141,83,4,160,3,177,224,20124110 DATA 6Z}5,240,41,41,80,240,32,41,16,240,26,200,173,82,4,145,224,24,109,28,4,141,82,4,20024120 DATA 173,83,4,145,224,109,29,4,141,83,Z}4,173,200,200,200,208,211,80,166,173,89,4,133,224,17324130 DATA 90,4,133,225,184,80,153,169,128,141,5,4,173,30,4,141,70,4,16Z}9,0,141,68,4,141,6924140 DATA 4,173,26,4,141,66,4,173,27,4,141,67,4,184,80,2070,3,76,98,228,216,173,5,4,240,247,16,72,165,2XP11020 DIM SCROLL$(316)11030 SCROLL$(1)="PLbحHYZ01PQNPJNQP-mF ^}PYP"11040 SCROLL$(91)="-FMԭPmDDED8mQDEE(DDEPBCPgP"11050 ^ }SCROLL$(181)="DQDEBmPBRCCSA))P )ȭRmRȭSmSP"11060 SCROLL$(271)=^ }G"YZPFDEBCP"HYZ01PQNPJNQP-mF \1 10 ; Ԡ20 ;30 ; COPYRIGHT (C) 1982 BY DAVID FOX AND MITCHELL WAITE40 ;0100 .TITLE "CLK-DLIROUT.ASM;v01.06-810806,b }820619"0110 .PAGE "DLI Color Changer"0120 ;0130 ; BY COREY L. KOSAK0140 ;0150 ; B=$4000,FREL0160 ;0170 BASE=$4000018b }0 ;0190 *=$4000200 ;0210 ; CASBUF DATABASE EQUATES0220 ;0230 PMBAS *=*+1 ;HIBYTE OF PLAYER MISSILE AREA (LOBYTE EQUALS b}0)0240 PMBUF *=*+2 ;ADDRESS OF 128 BYTE BUFFER (FOR PMOVER)0250 ANIMINIT *=*+1 ;INIT LOCATION FOR ANIMATE0260 AUTOINIT *=*b}+1 ;INIT LOCATION FOR AUTOMOVE0270 SCRLINIT *=*+1 ;INIT LOCATION FOR SCROLLER0280 HPLR *=*+4 ;PLAYERS 0-3 X COORDINATE (FORb} PMOVER)0290 VPLR *=*+4 ;PLRS 0-3 Y COORD (FOR PMOVER)0300 RATE *=*+4 ;PLRS 0-3 RATE (FOR ANIMATE)0310 FLSTPTR *=*+8 ;PLRSb} 0-3 FRAME LIST POINTERS (FOR ANIMATE)0320 SCRLADR *=*+2 ;SCREEN ADDRESS (FOR SCROLL)0330 SCRLLEN *=*+2 ;LINE LENGTH OF SCRb}OLLED AREA (FOR SCROLL)0340 SCRLCLK *=*+1 ;COLOR CLOCKS IN SCREEN BYTE (FOR SCROLL)0350 SCRLSTEP *=*+1 ;SCROLL STEP (FOR SCb}ROLL)0360 MOVERATE *=*+4 ;PLRS 0-3 HORIZONTAL STEP (FOR AUTOMOVE)0370 DLIADR *=*+2 ;ADDRESS OF COLOR TABLE0380 ;0390 ;*LOb}CAL* DATABASE EQUATES0400 ; THESE LOCATIONS ARE *LOCAL* TO THE ROUTINES0410 ; AND SHOULD *NOT* BE MODIFIED BY THE HOST PROGb}RAM0420 ;0430 O0X *=*+4 ;PLRS 0-3 X COORDINATE0440 O0Y *=*+4 ;PLRS 0-3 Y COORD0450 ORATE0 *=*+4 ;PLRS 0-3 FRAME CHANGE RAb}TE0460 OADR0 *=*+8 ;PLRS 0-3 FRAME LIST ADDRESS0470 TIMR0 *=*+4 ;PLRS 0-3 COUNTDOWN TIMERS (HOW MANY JIFFIES UNTIL FRAME CHb}ANGE)0480 POS0 *=*+4 ;PLRS 0-3 FRAME LIST POSITION0490 OSADR *=*+2 ;SCREEN ADDRESS FOR SCROLLER0500 CPOS *=*+2 ;COARSE SCRb}OLL POSITION FOR SCROLLER (0-LINELEN)0510 FPOS *=*+1 ;FINE SCROLL POSITION (0-7)0520 OXSTEP0 *=*+4 ;PLRS 0-3 HORIZONTAL STEb}P0530 DLIPOS *=*+1 ;CURRENT POSITION IN COLOR TABLE0540 PM1 *=*+1 ;4 LOCATIONS RESERVED FOR PMOVER0550 PM2 *=*+10560 PM3 b}*=*+10570 PM4 *=*+10580 EX1 *=*+1 ;4 LOCATIONS RESERVED FOR ANIMATE, AUTOMOVE, SCROLL, AND MFILL0590 EX2 *=*+10600 EX3 *=b}*+10610 EX4 *=*+10620 PMSAVE *=*+5 ;ZERO PAGE SAVE AREA FOR PMOVER0630 ZSAVE *=*+4 ;ZERO PAGE SAVE AREA FOR ALL OTHER ROUTb}GINES0640 DLI1 *=*+10650 DLI2 *=*+10660 ;0670 COLPF2=$D0180680 COLPF3=$D0190690 COLBAK=$D01A0700 XITVBV=$E4620710 WSYNb}C=$D40A0720 ;0730 ZERO=$E00740 ;0750 *=BASE0760 ;0770 START0780 CLV0790 BVC DLIDO ;SKIP OVER VBLANK EXIT ROUTINE0b}800 ;0810 EXIT0820 JMP XITVBV0830 ;0840 VBINT0850 LDA #$00 ;ON VBLANK, ZERO THE COLOR TABLE POINTER0860 STA DLIPOS0b}870 BEQ EXIT ;LEAVE0880 ;0890 DLIDO0900 PHA ;SAVE A,X, & Y ON STACK0910 TXA0920 PHA0930 TYA0940 PHA0950 ;0960b } LDA ZERO ;SAVE ZERO PAGE LOCS0970 STA DLI10980 LDA ZERO+10990 STA DLI21000 LDA DLIADR ;MOVE ADDRESS OF COLOR TABLEb!}1010 STA ZERO ;INTO POINTER1020 LDA DLIADR+11030 STA ZERO+11040 ;1050 LDY DLIPOS ;GET COLOR TABLE POINTER INTO Y-REGb"}1060 LDA (ZERO),Y ;GET COLOR1070 PHA ;A=COLPF21080 ;1090 INY ;GET THE NEXT COLOR1100 LDA (ZERO),Y1110 TAX ;X=COLPF3b#}Ǜ1120 ;1130 INY ;AND THE NEXT1140 LDA (ZERO),Y1150 INY1160 STY DLIPOS ;STORE NEW COLOR TABLE POINTER1170 TAY ;Y=COLb$}BAK1180 PLA ;A=COLPF21190 NOP ;PUT 18 CYCLE DELAY IN FOR1200 NOP ;TIMING PROBLEM1210 NOP1220 NOP1230 NOP1240 NOb%}P1250 NOP1260 NOP1270 NOP1280 ;1290 STA WSYNC ;WAIT FOR HORIZONTAL SYNC1300 STA COLPF2 ;QUICK! STORE THOSE COLORS!b&}Ǜ1310 STX COLPF31320 STY COLBAK1330 ;1340 LDA DLI1 ;RESTORE ZERO PAGE LOCS1350 STA ZERO1360 LDA DLI21370 STA ZEROb'}+11380 ;1390 PLA ;AND REGISTERS FROM STACK1400 TAY1410 PLA1420 TAX1430 PLA1440 RTI ;AND RETURN FROM WHENCE.14b(}50 ;1460 .END0 ;30 ; COPYRIGHT (C) 1982 BY DAVID FOX AND MITCHELL WAITE40 ;0100 .TITLE "CLK-DLIROUT.ASM;v01.06-810806,`?@]@P LbKHHH]^$%KHȱȱȌKhHꀍ ԍЎЌЭ]^hhh@LIROUT.ASM;v01.06-810806,dd.25000 REM ɠ25010 DATA DLIROUT,210,94,1280325020 DATA 184,80,10,76,98,228,169,0,141,75,4,240,246,72,138,72,j+}152,72,165,224,141,93,4,165,22525030 DATA 141,94,4,173,36,4,133,224,173,37,4,133,225,172,75,4,177,224,72,200,177,224,170,200j,},17725040 DATA 224,200,140,75,4,168,104,234,234,234,234,234,234,234,234,234,141,10,212,141,24,208,142,25,20825050 DATA 140,j-}26,208,173,93,4,133,224,173,94,4,133,225,104,168,104,170,104,6420 DATA 184,80,10,76,98,228,169,0,141,75,4,240,246,72,138,72,h@C1c0 DIM DLIROUT$(94)11120 DLIROUT$(1)="P LbKHHH]^$%KHȱȱȌKhlꀍ ԍЎЌЭ]n/}/c^h"11130 DLIROUT$(91)="hh@"T$(1)="P LbKHHH]^$%KHȱȱȌKhlꀍ ԍЎЌЭ]l#IIHIBYTLOBYTPLRHPLRVPLRRATEPMWIDTHFRMLSTPTRMOVERATECLSEGTEMPHICHRSPEETEMPMOVEALLINITANIMATSNr1}SNDSCONVVOWALINITAUTOMOVFST2BYTMFILFLAOBJECLST2NSPSCRLSTEFRSTPLNUMPLRSPOINTERCFLACHAPAINLFENCPTHEIGHr2}WIDTGRNSCRLWILINELECLOUSCRSPCFLAROOMLEFSCRNSZSTORCHIMNESHRUANTENNTREODDHOUSTRUNTREETOBDIDLSZMEOBJFRMr3}DATAFRAMESFRMSIZEPLRFRMMEMFRMLSTSIZETEMPTEMPTEMPFRAMEMETOTFRMLSTSIZBUFFERFRAMEMEMFRMLSTMEMHIBASLOBASDLBASSCRNr4}HSCRNLSCROLSCROLLDLIROUDLIROUTPMOVERANIMATANIMATEAUTOMOVAUTOMOVEMFILLBUFFEPLRFRAMEFRMLSTMEWINDOPMBASCHRBAOFr5}FSECHARTOTAOFFSETFRAMELISTDLITBLSZDLITABLEDLITABLPARAMBASPMBAPMBUSCRLINISCRLADSCRLLESCRLCLDLIADVVBLKCRITICAr6} PPPP"$@*,@24@:<@BD@JL@RT@ Z\ bd jl st {r7}&'./67>?FGNOVW^_fgnovw}r8}  !!"")*#12$9:%@B@&HJ@'QR(YZ)ab*ij+qr,y-r9}. /01$%2,-3454<=5DE6LM7TU8\]9de:lm;tu<|=r:}>?@ A'(B/0C78D?@EGHFNP@GVX@H^`@Ifh@Jnp@KwxL}r;}M NOP!#Q)+R13S:;TBCUJKVRSWZ[XbcYikZrs[y\r<}] ^_`$&a,.b56c=>dEFeMNfUVg]^hefimnjuvk}r=}l @mno!p()q01r89s@AtHIuPQvXYw`axhiypqzxy{}r>}| }~" %%ŠԠŠΠ報򠳲˛(^^Programr?} putting it all together - PM Graphics, Fine Scrolling, & Display List Interrupts288Copyright (C) 1982 by David Fox and Mir@}Gtchell Waite<F A@Pdn6-P:'AV,x6-&$AV$rA}A 囖RR9@,9@",9@&-,9@18,9@<C,9@GN,9@R^,&&;@$bi,;@$mt,;@x,BrB}67@ ,.>:,367@$#(,.>:.7,B67@;T,. B APXa A`en A&r AprC}  A B<AVAY@G@I A(MS A0W B " B06*-rD}@ &8,@** @6-6@.7J A;A AEPT6-@Tt^6-?:<,h r Ax|5#rE}@ @vK:5ATAU36-O:F:Ad,&A(,+6-'@z36rF} -%K6-+A(&,'@ $*52@.4@8@K2@DJ@NY+!_l!6-&+@p,+ AprG}-" ' 6-?:<,-6-6@+?\F:A,"@CG:2MQ@UY@]a@ei\2oqwy}rH} 15+F:Ab,!A)F:Ab, @ 5f5 AP5+F:Ad,!A))F:Ae, @jp5 At F:rI}!AT,"AUAH)@%16-&@H5M0ATAU< SYH6-_h Al ArJ}1Xb(6-P:,"7?(6-@CTlK6-&?PX^+2@bh@ltA2@x@rK}"K A v''6-?:<8@&1,<AV<7G,%%6-P:H:@KP,$@TX%@\f,6-lwF7A{rL}A AAA"A&,C"2F$6-?:<, /"@rM}%6-A(&$@./ A@'"@2f6-A%&' A@6-A2&'8@ju,!8@y,rN}EN'6-D8',A)&18@+?,A)&>"6@CD6-   $ӠҠrO} ӛ G%A@$($@,0%@4BGA@FJ$@NR%@V_%6-em6-@qw% A{rP}-8 ,@-8@"',@+6"@:KAp$c8QV,@ Zb-8@fk,@(ow9!@{NrQ}8 ,Ac8@7,A&.%%6-P:H:@;@,$ADH%@ Ll,8$BL V"r$`G%ArR} @ $@%@+GA@/3$@7;%@?Jj-8@N_,A)-8@cw,At-8@{,rS}@B-8@,@('~G6-@+36-@7=% AAI16-@MU=6-@Y_G Acn-8@ru,{-rT}8@ ,@6-"J$ 뛺U%A@NR$@VZ%@^pUAP:H:@ty,$@}rU},$@ %@-8@ 1,A-8@5I,A3-8@MR,@wV^-8@bg,@wkv%6-@z6rV}-@ % A-8@"',@+3-8@7<,@@K6-@O6-A$ "@rW}$(o6-P:H:@,$@!*,G6-@.6&P:H:@:?,$@CH,$@LVW6-$@Z%cAoA2-8rX}@ ,-8@ ,@$/<9!@3;$8@?P,A98@Th,A2F-8@lq,@u-8@rY} ,@ P%6-@$6-@(.% A2=Z-8@AF,@JR-8@V[,@_jd6-@nv6-@@znrZ}=$x++-CL8,&@P6-8<, A8%,r[} 8%,%@ H $"lv6-N)!A'6-&A()6-A(7r\} @ 6-&@2) #-76-%@1F6-%%$@dJ$) 6-B:,r]} @$ )67%@,,.6-%@09-?N A"R]-@a  6-$%6-@:7<,r^} , A +!%@!)$%%@#-B+ A!0*"H[A! 4"@_i6-%@dm>)%%$@$r_}C %&@ ,) A!0H%%$%&@0[R \ f6-%%O:,%p6-anz6-&@%r&$r`}` 团 @$7A"@j"@;L6-@:Q,$ APY16-6@]x; A"PF6-@:E,P A|ra}-V6-` A"Pj A"@T6-@:A, A1:%6-6@>Y/ A"P:6-@:D,D A]J6-T A"P$rb}R%%$%$` $$j -X\@`it -os@$w~ ""rc} %$%&@%v%F:%$%,     $ ( //蠰2 6-?:<<<|,rd}L< $F  R6.ԽԽ$6-@PX06-@\d<6-@hpH6-@tR A re} D6. Խ 6-@!+.6-%@/7:6-@;AD A EO P"6.go.6-@sy:6-}rf} F6-@$P A H $"  Šٛ͠ 6-NY 6-@]f 6-lr6-x %%rg} 6-P:H:@,$@%@+, 6 H:@/4,$A8<@E@H,6-@La6 A0 6 H:@ej,$@Unr@5v,6-@rh}6 A0 6-@, 6-+H:@05,?`9C, ("IT(6-+H:@X],?@am,  @qw6-}ri}& 6-+H:@,?P*,0 6-+H:@.3,?P7I,: 7 6.-&@MQA5UYA7]aA9ek7 A oD  @rj} A$ /$N X 6-5;6-AJb H#"PT*"Z`*!@do<6-+H:@sx,?0|,rk}(HA4@l v 6-@,V6. Find height of tree 6 H:@Z_,$@cg@ks,6-@w6 A2rl}` 6 H:@,$@  @$,,6-@0E6 A2` 6 H:@IN,$@RV@Zb,6-@f6 A2` 6 H:@rm},$@ @,6-@46 A2` 6-@8G A)6-P:H:@KS,$+&@W\,%@`i,5"@msA6-y 1rn} 6-&!@%6-&@!)16-@-9 ##6-+@=D&,$@HL%@Pj 67,. "@nA3@ ro}-@&@ 6-%@#C67,.tt   6-%@G^67,. "@buA3 -@y&rp}@* 6-%@567,.BV4  > ,H:@9>,?PBL,67%@P,.KLH ((Add random spacing on side of trerq}CeR C%6-P:H:@,$@!%@%.,C"@28) @<OA4p\ '"@S]6-%@av' A4pf 6-@z rr}r(A4pp z S%6-P:H:@,1,$@59%@=L,+6.7"@PXI67@ \w,.S A4p 67@{,.rs}  %6-6- &% A *5  @9fA1@ A0@ 蠲 !@jr6-@v 6rt}-@ "@6-@#` 67,.INZU A5` 67,.IOZX 56-%@ds5-%+&@w,$@ru}@  .H:@,?P#Z$67,.. A5 67,. 67@ ^m,."sA6@$rv} 4H:@ ,?P*67@"=,.WW4 A6@.67@Al,.EQ8$Bt 蠳~##6-+@pw&,$@{%rw}@&* @!&67&@%G,.`67,.ZTX,H:@KP,?PT"6., A7` 6.56-rx}%@ 5-%+&@!,$@%)@-K 67,. 67@Oe,.67@i,.WWW$ry}< 蠴F##6-+@#&,$@'+%@/:P'"@>a67,.HTTJ' A@PZ,,!@em))H:@q,?33Arz}@+dCreate Odd House typen6-@/>x)67@Bc,.INZU) A967@g,.IOZX6-r{})67@ *,. ITTO) AA._Create Normal House type- *#67&@c,.`HJYTTJ- A@P=r|} 67&@ ,.HJ%"!D367,.HTTJ= A@P0H:@HM,?PQ&67,.YTTJ0 A@P67,.HTTMr}} 56-%@5-%+&@!&,$@*.@2=0H:@AF,?%J&67,.0 A@67,. r~}67@ #,.67@!'a,.WEQW$6-gr6-@4v6r}-A`!!6-@$@$%%$@)K 6-% # "-9<@Ov,-9,9,9,9,9,-@zr}@ " 68,-68,-68,-68,-8,$8,%@Dj6-%8,$8, 68,-8,%@n6-%8,$r}28, (;A(,;,;,2'6-%@6i'$AV AQp<6-F:A,&F6-oP6-$AVr}?%Z 6-%d 6- An 6-6-x6-%@HC 6-C:, 6-C:, 6-C:, 6-C:, 6-C:r}Cd, 6-C:, 6-C:, 6-C:, 6-C:,$pz+@hl%@pAYr}"A%@&9A%@=PA%@TX@q\g%@kx%@|r} %@@)%A(-/3@7O 6-%$6-@S^-"@bh)"@lt-6-@x%A(r}"@6-@q)%@-1%@5W$ 6- A%@[_%@cr$$%@ v%@r}$. 8%@(@#6%A(B%@):>@BML%@0QU@Yl%A(V%@1pt@ex`r}%@2 j%@3t 6- A~AA Tell ANTIC where the DL isA`r}Aa0 @$(@,270@6:@>B@FLQ0@PRX\@`fk0@jlrv@z0r}@ @ @c$X((b6-F:A,&&@glBByv6r}-AV$-@!k68,-%A($%A68,-B2V% A#@oB2wr}@''6-?:<8',<A<-v,$@$$J6-F:A,&&@zTr}E6-$AV^,,Read in data, skip first 28 charactersh#6-@(IM$@QY#6-@5]wr #B0|"6-}r}!!-%%%$@&@!J" 6-% 6 +P3  In Character Set Data6''Clear},r out first char (background)-%@09?s $'',6-y6r}-$"9,,#B$'-@(K.'68,-%8'6-%+8,%@O^,$8,B'-dm8,&@qL'68<,r}.-%V'6-%8,`'8<,8,j'-@2;8,&@?t'"~'8<,%'   '$'* r}GŠŠӛ+̠ +;A,+mm67@K,.ZPLbحHYZ01PQr}7NPJNQP-mF PYP +mm67@;,.Z-FMԭPmDDED8mQDEE(Dr}DEPBCPgP*+mm67A,.ZDQDEBmPBRCCSA))P )ȭRmRȭSmr}CnSP4+AA67Aq,..YZPFDEBCP\+ɠ堛f+;@r,p+mm67@r}B,.ZP LbKHHH]^$%KHȱȱȌKhKn ԍЎЌЭ]^hz+67@r,.hh@+r}.&&ɠ+6-@2[#BU+ ;,+ 6-C:,+-ag&@k+"+ %r}:, $,Ҡ.,;A,8,mm67@>,.ZPLb&0ߝShhhF&r}*B,mm67@.,.ZFIT`L*H *hMNNr}\ML,67A,.LP,Š囒,;A,,mm67@`,.ZPLbآY0H r}L PN򩀍+. 23P0ֽ:,mm67@P,.Z>ɩ. %:Ir}X.: 23>>,mm67A,.Z >PPPHȱh∱QNPmQJnRr}qR8eeP*RR,++67Aq,.QP..P,Š,;@tu,-]]6r}7@x,.JPLbح0N G𩀍GI}&(0 (G&0P-̠Z-;@A|,r} d-<<67@,.)hhhhhhh̥ͥ`-$-.!!.6-A$. r}6-.6-%@"/6-%@&3/6-%@7D/6-%@HQ&/-W[@_o0/68,-%@s%:/68r},-%@ %D/68,-%@"4%N/68,-%@8>%$@BRX/68,-%@2Vl%b/ l/6-%@&pv/6-%@(r}/6-%@0"/6-%@1&3/6-%@67Q/6-AH/6-@fU`/36-@dl6-@px'6-@|r}36-@ >/ 6-%/ 6-%6-%%%/6-?:<<@BD<JV,/"6-8\, A"/ 6- Ar}/%@A/ 6- A0  0%@En 0 6- A*0 40%@r>0r}@-H0 6- AR0 \0%@1^f0p0z09<@bn,0-@r0-r}8,&@a08<,-8,%$8,06-8<, A08<,08<,%@er0-@v8,r}C08<,%%@20 0!!8<,%8,%@68>0   0$02 2r}@26-%@6 A2 2%@:I26-%@Mb A3%@fs3%@w3r} 6-%@ " A"3%@&3,3%@7F636-%@J_ A@3%@cpJ3%@tT36r}-%@  A^3%@#0h3%@4?r3EP|3@T3BBA3$3 Nr}Š*NNumber of objects4N5>NHN55Number of Frames, Frame Size, Number of PlayersRN. (Walking Man)\N r}5,19,2fN. (Tree Trunk)pN 1,52,1zN. (Tree Top)N 1,26,1N. (Truck)N 1,25,2N. (Car)N 1,13,2r}ǶNR RFrame 1, Player 0R770,0,0,0,0,0,0,3,15,29,59,51,7,7,15,252,224,112,48&RFramr}e 2, Player 00R990,0,0,0,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,3r}1,31,222,254,251,231,206,15NRFrame 4, Player 0XR==1,3,3,3,1,7,15,31,30,62,62,63,63,60,124,120,112,112,252bRFrame 5,r} Player 0lR::0,0,1,1,1,0,7,31,31,31,31,31,15,15,13,31,123,112,124vRFrame 1, Player 1RHH0,28,62,62,62,28,240,240,240,r}240,251,255,220,192,192,227,118,60,24RFrame 2, Player 1RKK0,0,56,124,124,124,56,224,224,224,224,246,254,192,128,192,2r}24,224,248RFrame 3, Player 1REE0,112,248,248,248,112,192,192,128,128,128,224,224,0,0,0,0,0,128RFrame 4, Player 1r}ǛR55192,224,224,224,192,0,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,2r}40,0,128,192,128,192,0,0RUUPlayer 2, Tree TrunkVNN2,2,132,128,64,0,149,165,210,211,219,2r}51,255,254,126,126,126,126,126,126VUU126,126,126,126,126,126,126,126,126,122,126,126,126,126,126,126,126,126,126,126V55r}126,126,126,126,126,126,126,126,255,255,219,137"VPlayer 3, Tree Top,VQQ24,24,60,60,126,126,126,255,255,255,255,255,255,r}255,255,255,255,255,255,1266V126,60,60,60,24,24@VTV^VPlayer 2, Truck CabhVBB0,0,0,0,0,1r}5,25,17,17,17,17,17,31,31,255,255,255,255,255,255rV255,255,255,28,28|VPlayer 3, Truck BodyVUU255,255,255,255,255,2r}G55,255,255,255,255,255,255,255,255,255,255,255,255,255,255V255,255,255,12,12VVVPlayer 2r}, Car backV..7,9,17,17,17,31,63,127,255,255,255,56,16VPlayer 3, Car frontV22192,64,32,32,16,248,255,255,255,254,25r}5,28,8YY 38646Y0,3,15,31,63,63,127,127Y##0,192,240,248,252,252,254,254Z127,127,127,63r},63,31,15,7 Z%%254,254,254,252,252,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%r}%255,195,219,219,219,219,219,219