gh0##HIBYTLOBYTPLRHPLRVPLRRATEFRMLSTPTRFRMDATAMOVERATEMSPEEDTEMPPSFLAINITANIMATALLSPEEINITAUTOMOVPMOVEBYTNUMPLRPOINTERFRAMEFRMSIZPLRFRMMEFRAMEMEFRMLSTSIZTOTFRMLSTSIZBUFFERFRAMEMEMFRMLSTMEMPMOVERANIMATANIMATEAUTOMOVAUTOMOVEMFILMFILLBUFFEPLRFRAMEFRMLSTMEPMBASOFFSETFRAMELISPARAMBASPMBAPMBUVVBLKCRITICAPPPPFST2@@@@@@@ @ @ !"#$%&'()*+,-./012345678 %%Ǡ٠ҠϠ$$報(TTProgram to introduce the AUTOMOVE Machine Language routine and the running boy288Copyright (C) 1982 by David Fox and Mitchell Waite<F A@Pdn*6-P:'AV,*Calculate High Bytex(6-&$AV(Calculate Low Byte$囖]]9@,9@,9@,9@,9@,9@,9@,9@ ,Y +@AR@8 One moment please...YTurn off cursor, print message* B*Initialize Routine strings' AP'Set up memory locations" Ap"Set up Player area$ B$Read frames into RAM* B *Set up parameter addresses"" B0"Turn on interrupts,'' }Ǡ٠Ϡ6OO FPress a number from 1 to 9 to control his speed or 0's to single step.@1 -@ 6@$"-68,-1 J6-@6-@dT A^6-@h r6-@ A|5#@@K:5ATAULF:A,"42@@6-@LFootsteps@F:A,"42@$@@6-@%%2/F:Ab, #6-?:<,/Reset Boy F:AT,"AUAH)@6-&@H0ATAU< H6-!@ 6-@  A A$$F:,A(A-&@8,A(%8, 8, %@  $ӠҠӛ $ A$Point to Frame Lists-&@ 8,8,%$@$ .6-?:<,8$B++-&@ 6-8, A 8,8,%@ $" "6-$%@ 6-$ 6-%@ 6-$(;A(,;,;, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:,$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 Players9'A%@$@%@9Color him peach AAY@BASet PM 2 line resolution, Players enabled-B2w@-Enable Player displayR'6-?:<8,<A<,RUse memory fill routine to clear Players$''6-.' 6-B'-&@L'.68,-%.Store addresses of frame dataV' 6-%`'E 8,EPoke Frame size at beginning of each set of frame dataj'-@&@t'"~'8,%'   '$'* ŠŠӛ*$,Ҡ.,;A,8,mm67@,.ZPLb&0ߝShhhF&B,mm67@,.ZFIT`L*H *hMNNML,67A,.LP,Š囒,;A,,mm67@,.ZPLbآY0H PN򩀍+. 23P0ֽ:,mm67@,.Z>ɩ. %:IX.: 23>>,mm67A,.Z >PPPHȱh∱QNPmQJnRR8eeP*RR,++67Aq,.QP..P,Š,;@t,-]]67@,.JPLbح0N G𩀍GI}&(0 (G&0P-̠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 Animate routine/66-%@6Initialize Player Automove routine&/-@0/=68,-%@%=Player horizontal "shadow" registers:/;68,-%@%;Player vertical "shadow" registersD/868,-%@%8Animate rate "shadow" registersN/768,-%@%$@7Pointer to Frame ListsX/968,-%@2%9Horizontal movement for AUTOMOVEb/ /:6-AH:Deferred Vertical Blank Interrupt Vector/6-@fCritical Flag/W6-@6-@'6-@36-@WControl bits for the four Players/ 6-%/6-%%%/D6-?:<<@<,DIMPORTANT: Clear out parameter area/H6-8, A"HPoke Hi Byte of Player 0 into PMBAS/2 6- A2Poke address of buffer/%@f0p0z09&@,0-&@058,-%$5Points to start of each Frame List0 6-8, A0+ 8,+Put in address of Frame Data08,%@0@-@@Make up a Frame List (numbers 1 thru FRAMES)08,%%@0 078,%%@7End of frame list marker0 0$02 26@6Open CRITICAL "valve", set up detour36-%@ A"3' 'Set VBLANK vector to PMOVER,3%@636-%@ A@3,%@,Points PMOVER to ANIMATEJ3%@T36-%@ A^3.%@.Points ANIMATE to AUTOMOVEh3%@r3<<Close CRITICAL "valve", routines installed3$3 NŠ>NHN55Number of Frames, Frame Size, Number of PlayersRN. (Running Boy)\N 4,31,4R 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, Player 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,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,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,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,30,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,0RFrame 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 S550,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 SFrame 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,0>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\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,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,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,0,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,0,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,192,192,128,0,0,0,0,0,0,0S0u''Ġ:u1,2,2,3,3,4,5,6,9,0 D:EX11.BAS