}~%171HIBYTLOBYTCLSEGTEMPHICHRSPEESCRLSTEBYTCFLACHAPAINLFENCPTHEIGHWIDTGRNSCRLWILINELECLOUSCRSPCFLAROOMLEFTEMMFILSCRNSZSTORCHIMNESHRUANTENNTREODDHOUSTRUNTREETOBDIDLSZMEHIBASLOBASDLBASSCRNHSCRNLSCROLSCROLLDLIROUDLIROUTMFILLWINDOCHRBAOFFSECHARTOTADLITBLSZDLITABLEDLITABLPARAMBASSCRLINISCRLADSCRLLESCRLCLDLIADVVBLKCRITICA  !"#$%&'()*+,-./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 High 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 Set0AV0Switch 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*"A! 4"@6-%@d>)%%$@$%&@) A!0H%%$%&@R \ f6-%%O:,%p6-z6-&@%&$团 @A"@j"@6-@:Q,$ A16-6@; A"PF6-@:E,P AV6-` A"Pj A"@T6-@:A, A%6-6@/ A"P:6-@:D,D AJ6-T A"P$%%$%$` $$j -@t -@$~ ""%$%&@%%F:%$%,     $ ( //蠰2 6-?:<<<,< $F  R6.ԽԽ$6-@06-@<6-@H6-@R A  D6. Խ 6-@.6-%@:6-@D A  P"6..6-@:6-F6-@$P A  $"   Šٛ͠ 56-5Initialize Pointer to Scroll Window (6-@(How tall is the window 6-6- 0%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 left 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-@6 A2`<20% 6-@10% A)6-P:H:@,$+&@,%@,5"@A6- 1 6-&!@%6-&@16-@ ##6-+@&,$@%@ 67,. "@A3@ -@&@ 6-%@67,.tt   6-%@67,. "@A3 -@&@* 6-%@67,.BV4  > ,H:@,?P,67%@,.KLH ((Add random spacing on side of treeR C%6-P:H:@,$@%@,C"@) @A4p\ '"@6-%@' A4pf 6-@ A4pp z S%6-P:H:@,$@%@,+6.7"@I67@ ,.S A4p 67@,.  %6-6-% A  I @A1@IAdd another tree if not enough room for a house A0@ 蠲 !@6-@ 6-@ "@6-@ 67,.INZU A5` 67,.IOZX 56-%@5-%+&@,$@@ .H:@,?P$67,.. A5 67,. 67@ ,."A6@$4H:@,?P*67@,.WW4 A6@.67@,.EQ8$Bt 蠳~##6-+@&,$@%@&* @&67&@,.`67,.ZTX,H:@,?P"6., A7` 6.56-%@5-%+&@,$@@ 67,. 67@,.67@,.WWW$< 蠴F##6-+@&,$@%@P'"@67,.HTTJ' A@PZ@,!@))H:@,?33A@@Which type house?dCreate Odd House typen6-@x)67@,.INZU) A967@,.IOZX6-)67@ ,. ITTO) AACreate Normal House type- *#67&@,.`HJYTTJ- A@P=67&@,.HJ%"367,.HTTJ= A@P0H:@,?P&67,.YTTJ0 A@P67,.HTTM56-%@5-%+&@,$@@0H:@,?%&67,.0 A@67,. 67@,.67@!,.WEQW$6-#6-@4#Display List size76-@H7Horizontal length of scrolling window/!6-@$@$%$@/Screen size1 6-%1MEMory to reserve for DL and Screen2'6-%@'$AV AQp<.6-F:A,&.Find DL Hi and Lo bytesF6-P6-$AV%Z, 6-%,Starting address of Screen RAMd 6- An- 6-6--Find Screen Hi and Lo bytesx.6-%@H.Beginning of Scroll window 6-C:, 6-C:, 6-C:,$pz4+@%@4Set flags to Graphics mode 2+AY+Turn off screen DMA2A2Set up top border, 24 scan lines%@A%@A(%@@q(LMS for line 1%@%@1%@@%A(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 VBLANK 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$@$$J86-F:A,&&@8Reserve space (512 bytes)T/6-$AV/Find start of Character Set^,,Read in data, skip first 28 charactersh#6-@($@#6-@5r #B0|"6-!!-%%%$@&@" 6-% 6 +3  In Character Set Data6''Clear out first char (background)-%@ $** ŠŠӛ+̠ +;A,+mm67@,.ZPLbحHYZ01PQNPJNQP-mF PYP +mm67@,.Z-FMԭPmDDED8mQDEE(DDEPBCPgP*+mm67A,.ZDQDEBmPBRCCSA))P )ȭRmRȭSmSP4+AA67Aq,..YZPFDEBCP\+ɠ堛f+;@,p+mm67@,.ZP LbKHHH]^$%KHȱȱȌKh ԍЎЌЭ]^hz+67@,.hh@+&&ɠ+6-@#BU+ ;,+ 6-C:,+-&@+"+ %, P-̠Z-;@A,d-<<67@,.)hhhhhhh̥ͥ`-$--.!!.(6-A$(Parameter Base address/=6-%@=Poke a 1 to initialize the scroll routinel//6-%@&/Address of scrolling windowv/36-%@(3Line length of scrolling window/:6-%@0:Number of Color Clocks per screen byte/26-%@12Step size of scroll each jiffy/(6-%@6(Address of DLI table/:6-AH:Deferred Vertical Blank Interrupt Vector/6-@fCritical Flag/D6-?:<<@<,DIMPORTANT: Clear out parameter area/ 6- A0  0%@ 0 6- A*0 40%@>00@0Set to 8 color clocks per byteH0 6- AR0 \0%@0$02 26@6Open CRITICAL "valve", set up detour26-%@ A2' 'Set VBLANK vector to SCROLL2%@26-%@ A3,%@,Points SCROLL to DLIROUT3%@r3<<Close CRITICAL "valve", routines installed|3@3$BBA$Enable DLI's3$3YY 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,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%%255,195,219,219,219,219,219,219