_ X;EXWALLX;BY JEFF & ANDY BARTON#X;(c)1989, ANTIC PUBLISHING INC.( LIST2EI< LISTFIPZEKdxiSTART.OF.CODEn!INIT.1;;START PROGRAMsX;xX;VARIABLES AND EQUATES}X;RTCLOK;;HI-MID-LOW BYTE DELAY PMBASEBASEp;;2K BOUNDARY BASEMsBASEP0tBASEP1uX;HPOSP0HPOSP1HPOSM0HPOSM1COLPM0;;+1,2,3COLPF0;;+1,2,3,4FLASHWALLCOLPF0 COLORճSVCOLORX;X;COLLISION REGISTERS M0PF M1PF P0PF P1PF M0PL M1PL P0PL HITCLR X; AUDF AUDCX; IOCB@" CIOVV' IOCOM , PUTCHR 1 GETCHR6GRACTL;DMACTL/@X;E TRIG0J TRIG1OSTICK0xTSTICK1yYX;^ VPOSP0 cPREVPOSP0 hSHDHPOSP0 mPREHPOSP0 r VPOSP1 wPREVPOSP1 |SHDHPOSP1 PREHPOSP1  VPOSM0 SHDHPOSM0  VPOSM1 SHDHPOSM1  WALLX0  WALLY0  WALLX1  WALLY1 HORDIR0 ;;HOR. DIRECTIONHORDIR1 ;;VALUES 1,0,-1VERDIR0 ;; 1,0,-1VERDIR1 ;; 1,0,-1X;EX0 ;;COUNT EXPLOSIONEX1 ;;SIZE=SKM0 ;;USED IN MISSLE EXPANSION=SKM1 ;;USED IN MISSLE EXPANSIONEXP;;PENETRATIONX;HITP0 ;;<>0=HIT,COUNTCHITP1 ;;CHANGE COLOR & INHIBIT JSTICKX;FIRE0 ;;1=ON 2=EXPLODE FIRE1 X;BUILD0 ;;<>1=NO 1=OK TOBUILD1 ;;BUILD BUILDCOUNT0 ;;<>0 ENABLESBUILDCOUNT1 ;;1-5 BLOCKSSECONDLAYER0 ;;0=LAYER 1SECONDLAYER1 ;;1=LAYER 2!X;&MONLYMOVE ;;0-3 START @ 3+X;0 TOPLIM  5 ROUND : BOTLIM ? LLIMIT 0D LLIMP1 PI RLIMP0 N RLIMM0 S RLIMIT X EXLIM0 ] EXLIM1 bX;g TEMP l TEMP2 q TEMP3 v TEMP4 { TEMP5  ZTEMPX; SCORE0  SCORE1 X; VOL0  VOL1  WAIT0  WAIT1 WAITLIMX; TXROW TXCOLSTRBUFBASEX;FR0;;FLOAT POINT NUM;FASC;;F.P. TO ASCII STRINGIFP;;INTEGER TO F.P.INBUF;;POINT TO STRINGX;EIX;X; MACROSX;CLEAR.PAGE X;%1 - START ADDRESSX;%2 - # OF PAGES$ Q> . PZTEMP8Q>B PZTEMPL$> V CPSUB`jX;t PLOT ~$ %  Q>PUTCHR PIOCOM IOSUBX; DRAWTO $ %  DRAWSUBX; COLOR   Q> (Q 2< PCOLORFZX;dHIT.WALL nX;%1 - (0-1) PLAYER#xCCOLOR ;;SET TO BKGRND TO ERASE WALL  SET.X.Y.MISSLE  &TEMP3 'TEMP4 HIT.SUBQEX0 FHW.1X;Q>REX0;;LIMIT EX DHW.1X;PEXLIM0;;SHORTEN EX EHW.1.1X;HW.1 M0.OFF HW.1.1"SET.X.Y.MISSLE , &TEMP36 'TEMP4@ HIT.SUBJQEX1T FHW.1YX;^Q>hREX1;;LIMIT EXr DHW.1wX;|PEXLIM1;;SHORTEN EX EHW.1.1X;HW.1 M1.OFF HW.1.1X;CLEAR.MISSLE X;%1 - VPOSM(0-1)X;%2 - MISSLE DATAX;%3 - EX(0-1)Q>  PTEMP2Q PTEMP;;LOOP COUNT,&O 0 CLR.M.SUB:DX;N FLASH XX;%1 - COLP(0-1)b,lQ v FLASH.SUBP X;MOVE.PLAYER X;%1 - (0-1) [PLAYER #]X;%2 - HORDIRP(0-1)X;%3 - VERDIRP(0-1)QSHDHPOSP0H PHPOSP0R !MP.VERT\MP1f$SHDHPOSP0p  z (RLIMP0 FMP.VERTX;&PREHPOSP0#SHDHPOSP0;; MOVE RIGHTQSHDHPOSP0 PHPOSP0IMP2;; RIGHTX;$SHDHPOSP1   (LLIMP1 FMP.VERTX; &PREHPOSP1 "SHDHPOSP1;; MOVE LEFT QSHDHPOSP1$ PHPOSP1. !MP.VERT8 MP2B $SHDHPOSP1L  V (RLIMIT` FMP.VERTe X;j t &PREHPOSP1~ #SHDHPOSP1;; MOVE RIGHT QSHDHPOSP1 PHPOSP1  MP.VERT Q  HMP.VERT.1 X; !MP.END X; MP.VERT.1   IMP.UP X; %VPOSP0   )BOTLIM FMP.END X;  'PREVPOSP0( #VPOSP0;; DOWN2 !MP37 X;< MP.UPF %VPOSP0P  Z )TOPLIMd FMP.ENDi X;n x 'PREVPOSP0 "VPOSP0;; UP MP3  VERT.DRAW.P0 X;  IMP1.UP X; %VPOSP1   )BOTLIM FMP.END X;  'PREVPOSP1 #VPOSP1;; DOWN !MP4 X; MP1.UP %VPOSP1"  , )TOPLIM6 FMP.END; X;@ J 'PREVPOSP1T "VPOSP1;; UP^ MP4h  VERT.DRAW.P1r | MP.END  X; SET.X.Y.WALL HX; CONVERT P/M COORDINATES -> SCREEN X,Y $X;& PUT VALUES IN X & Y REGISTERS X;%1 - (0-1) PLAYER'S # X; $>   :QDATAP09;;HEIGHT OF PLAYER V?;;DIVIDE BY 2 , 9OVPOSP0;;MIDDLE OF PLAYER PTEMP QSHDHPOSP0 , O> ;;2 SPACE INFRONT&  SETXY.SUB0 : QDATAP19;;PLAYER HEIGHTD V?;;DIVIDE BY 2N ,X OVPOSP1;;MID OF PLAYERb PTEMPl QSHDHPOSP1v ; S>;;2 SPACE INFRONT  SETXY.SUB   X; SET.X.Y.MISSLE HX; CONVERT P/M COORDINATES -> SCREEN X,Y $X;& PUT VALUES IN X & Y REGISTERS X;%1 - (0-1) MISSILE'S # X;   QVPOSM0 > ; SEX0;;NO EFFECT IF =0 PTEMP A ,* OEX04  SETXY.SUB.1> 'TEMP2H #SHDHPOSM0R QSHDHPOSM0\ "SHDHPOSM0f  SETXY.SUBp z QVPOSM1 > ; SEX1 PTEMP A , OEX1  SETXY.SUB.1 'TEMP2 QSHDHPOSM1  SETXY.SUB  X; ?WALL X;IS THERE A WALL HERE?$X;%1 - WALLX(0-1).X;%2 - WALLY(0-1)8X;%3 - JUMP LABLEBX;%4 - PLAYER #L$ V% ` Q>GETCHRj PIOCOMt IOSUB~R>;;WALL COLOR   HWL.0X;! WL.0 B0.SUB2 HWL.1X;! WL.1 B1.SUB2X; EXPAND.MISSILE X;%1 - (0-1) MISSILE #  (QEX02 PTEMP2<V?F EEM0.0KX;P QVPOSM0Z PTEMPdQ>n PTEMP4xT? PTEMP3 EX.M.SUB#EX0#EX0 EM0.0#EX0QEX1 PTEMP2V? EEM1.0X; QVPOSM1 PTEMPQ> PTEMP3T? PTEMP4" EX.M.SUB,#EX16#EX1@ EM1.0E#EX1JT^X;hCENTER.M rX;%1 - MISSILE #(0-1)|$>   QDATAP09 V?;;/2, OVPOSP0 PVPOSM0 QDATAP19V?, OVPOSP1 PVPOSM1?X;&CHECK.STICK 0X;%1 - (0-1) PLAYER #: CHECK.STICK.SUBD  N DCS.5ASX;X%>b'TEMP2;; LEFTl #TEMP3v CS.5AW? DCS.6X;%>'TEMP2;; RIGHT &TEMP3 DCS.5BX;%>'TEMP2;; LEFT &TEMP3 CS.5BW? DCS.6X;%> 'TEMP2;; RIGHT #TEMP3 *CS.64>X;H SOUND RX;%1 %2 %3 %4 SAME AS BASIC\ SOUND.SUBf $> p  zQ Q>  PAUDF9  Q Q> , O>  PAUDC9X; POS !X;%1,%2 = X,Y POS. TEXT WINDOW$Q> . PTXCOL8Q> B PTXROWLVX;` PRINT jX;%1 = STRING TO PRINTt !  yX;~STR  Q>4STR PZTEMP Q>5STR PZTEMP%> ;; STRING LENGTH PRINT.SUBX;PRINT.NUM X;%1 = VARIABLEX;SET POS FIRSTQ PFR0 Q> PFR0 PRINT.NUM.SUB(2X;'X;'X;INITIALIZE$'X;L' INIT.1V'Q>ROUND1`' PRDOFFSETj'Q>ROUND1t'PRDOFFSET~'X;'X;INITIALIZE ROUNDS'X;'INIT.ROUND'X;' X;CLOSE #6'$>`'Q> ;;CLOSE' PIOCB9' CIOV' X;GR. 5'$>`' Q>;;GR.5( PIOCB 9 (Q>( PIOCB 9(Q>SCREEN(( PIOCB92(Q>SCREEN<( PIOCB9F(Q>P( PIOCB9Z(Q>d( PIOCB 9n( Q>;;OPENx( PIOCB9( CIOV(X;(X;SET P/M BASES(X;(Q>BASE( PPMBASE(Q>( PGRACTL(Q>>( PDMACTL(X;(P;;CURSOR OFF(Q>)PR;;RH TEXT MARGIN)X;)X;PRINT TITLES")X;,)POS =6)PRINT AA@)POS =J)_PRINT A EXWALL   PLAYER 1 ZONE PLAYER 2  AT)POS =^))PRINT A<- RANK -> Ah)X;r)X;SOUNDS OFF|)$>)Q>)SF) PAUDF9)0)ISF)X;)X;CLEAR P/M AREA)X;)CLEAR.PAGE BASEM=)X;)X;CLEAR HIT REGISTERS)X;) PHITCLR)X;*X;DRAW SCREEN*X;* #ROUND&*X;0*R1.05*%>:*X;D* RDOFFSET.TO.ZTEMPN*COLOR ;;WATERX* DRAW.SUBb*X;l* INC.ZTEMPv*COLOR ;;WALLS* DRAW.SUB*X;* INC.ZTEMP* Q@ZTEMP7*PSHDHPOSP0* PHPOSP0* INC.ZTEMP* Q@ZTEMP7*PSHDHPOSP1* PHPOSP1* INC.ZTEMP* Q@ZTEMP7* PVPOSP0+ INC.ZTEMP + Q@ZTEMP7+ PVPOSP1 +; INC.ZTEMP;;POINT TO NEXT ROUND*+ ZTEMP.TO.RDOFFSET4+X;>+X;LOAD PLAYER DATAH+X;R+Q>;;GREEN\+ PCOLPM0f+Q>X;;PURPLEp+PCOLPM0z+ VERT.DRAW.P0+ VERT.DRAW.P1+X;+POS =+PRINT.NUM ROUND+POS =+PRINT.NUM SCORE0+POS =+PRINT.NUM SCORE1+X;+X; MAIN PROGRAM LOOP+X;,X;TIMER ROUTINE$,X;.,TIME.DELAY8,QRTCLOK;;JIFFSB, RDELAYL,?DTIME.DELAY;;LOOP UNTIL TIME UPV,Q>`,PRTCLOK;;RESET CLOCKj,"MONLYMOVE;;MISSILE MOVESt,IHIT?;;4X FOR EACHy,X;~,Q>;;PLAYER MOVE,=PMONLYMOVE;;=0 PLAYER CAN MOVE,HIT?,QP0PF;;PLAYER -> WALL, FH1.1,X;, QHORDIR0, FH0.1,X;,8N>;;REVERSE DIRECTION, PHORDIR0,H0.1, QVERDIR0, FH0.2,X;,N>, PVERDIR0-H0.2-%MOVE.PLAYER =HORDIR0=VERDIR0 -Q>- PHORDIR0- PVERDIR0(-H1.12-QP1PF;;PLAYER -> WALL<- FH2.1A-X;F- QHORDIR1P- FH1.2U-X;Z-8N>;;REVERSE DIRECTIONd- PHORDIR1n-H1.2s- QVERDIR1x- FH1.3}-X;-N>- PVERDIR1-H1.3-%MOVE.PLAYER =HORDIR1=VERDIR1-Q>- PHORDIR1- PVERDIR1-H2.1-QM0PF;;MISSLE -> WALL-M>;; IGNORE WATER- FH2.2-SOUND =(==-#HIT.WALL =SHDHPOSM0=VPOSM0-H2.2.QM1PF;;MISSLE -> WALL.M>;; IGNORE WATER. FH3.1.X;".SOUND =(==,.#HIT.WALL =SHDHPOSM1=VPOSM16.H3.1@.QM0PL;MISSLE -> PLAYERJ.M>T. FH4.1Y.X;^.X;PLAYER EXPLODING ROUTINEh. #SCORE0r. M0.OFF|. STOP.BUILD1.1. #HITP1.X;.H4.1.QM1PL;;MISSLE -> PLAYER.M>. FH4.2.X;. #SCORE1. M1.OFF. STOP.BUILD0.1. #HITP0.X;.H4.2/QP0PL;;PLAYER <--> PLAYER/ FH5.1/X;/ STOP.BUILD0.1&/ STOP.BUILD1.10/ #HITP0:/ #HITP1D/X;N/H5.1X/ QHITP0b/ FH6.1g/X;l/FLASH COLPM0v/ #HITP0/ QHITP0/V?/M>/N>/ PTEMP/SOUND =A==TEMP/Q>_;; LIMIT OF FLASHING/ RHITP0/EH6.1;; >= HITP0/Q>/ PHITP0/CLEAR.PAGE BASEP0=/ QHITP10HH6.1;;P1 EXPLODING 0 M1.OFF0 STOP.BUILD1.10!END.OF.ROUND 0H6.1*0 QHITP140FCLEAR.HIT>0FLASH COLPM0H0 #HITP1R0 QHITP1\0V?f0M>p0N>z0 PTEMP0SOUND =<==TEMP0Q>_;; LIMIT OF FLASHING0 RHITP10ECLEAR.HIT;; >= HITP10Q>0 PHITP10CLEAR.PAGE BASEP1=0 QHITP00HCLEAR.HIT;; P0 EXPLODING0 M0.OFF0 STOP.BUILD0.10!END.OF.ROUND0X;0 CLEAR.HIT1 PHITCLR1X;1X;$1X;^^^^^ CHECK BUTTONA ^^^^^.1X;81 BUTTON1.1B1 QWAIT0L1 FBT1.1V1 "WAIT0`1 !BT2.1j1 BT1.1t1 QHITP0~1HBT2.1;;CAN'T FIRE WHEN HIT1QEX01 HBT2.11 QTRIG01HBT2.1;; NOT PRESSED1 Q>WAITLIM1 PWAIT01 QFIRE01 HBT1.21 #FIRE01Q>1 PVOL01 !BT2.12 BT1.2 2 Q>EXP2PSKM0;;PENETRATION OF EXPLO2#EX0;;SET MISSLE EXPLOTION(2Q> 22 PVOL0<2 BT2.1F2 QWAIT1P2 FBT2.1.1Z2 "WAIT1d2 !M0.0n2 BT2.1.1x2 QHITP12HM0.0;;CAN'T FIRE WHEN HIT2QEX12 HM0.02 QTRIG12HM0.0;; NOT PRESSED2 Q>WAITLIM2 PWAIT12 QFIRE12 HBT2.22 #FIRE12Q>2 PVOL12 !M0.02X;3 BT2.23 Q>EXP3PSKM1;;PREPAR OF EXPLOSO"3#EX1;;SET MISSLE EXPLOTION,3Q> 63 PVOL1T3X; MOVE MISSILE ROUTINEh3M0.0r3 QFIRE0|3 HM0.013X;3 !M1.03X;3 M0.013R>3 HM0.13X;3QSHDHPOSP03,3O>3PSHDHPOSM03CENTER.M 3Q>3 LBASEM83 PBASEM83 #FIRE04M0.14#SHDHPOSM04%SHDHPOSM0&4 'TEMP04SOUND =TEMP==VOL0:4 'HPOSM0D4 )RLIMM0N4 DM0.2S4X;X4 M0.OFFb4 !M1.0g4X;l4M0.2v4QEX04 FM1.04X;4 REXLIM04 DM0.214X;4 M0.OFF4 !M1.04X;4 M0.214 "SKM04 HM1.04X;4 Q>EXP4 PSKM04EXPAND.MISSILE 4X;4M1.05 QFIRE1 5 HM1.015X;5!CK.M.ONLY5X; 5 M1.01*5R>45 HM1.195X;>5%SHDHPOSP1H51R5'SHDHPOSM1\5CENTER.M f5Q> p5 LBASEM8z5 PBASEM85 #FIRE15M1.15"SHDHPOSM15%SHDHPOSM15C5N>5 PTEMP5SOUND =TEMP==VOL15 'HPOSM15 )LLIMIT5 EM1.25X;5 M1.OFF5!CK.M.ONLY6X;6M1.26QEX16FCK.M.ONLY6X;$6 REXLIM1.6 DM1.2136X;86 M1.OFFB6!CK.M.ONLYG6X;L6 M1.21V6 "SKM1`6HCK.M.ONLYe6X;j6 Q>EXPt6 PSKM1~6EXPAND.MISSILE 6X;6 CK.M.ONLY6QMONLYMOVE;;MISSLE MOVES6FCHECK.STICK06X;6!TIME.DELAY6X;6CHECK.STICK06Q>6$>6 %BUILD06)>7 FS0.17X; 7 PBUILD07S0.17%HITP0;;CAN'T MOVE IF HIT(7 HS0.1.1-7X;27Q><7 NSTICK0F7HS0.2;;MOVEMENT DETECTEDK7X;P7 S0.1.1Z7 PVERDIR0d7 PHORDIR0n7 $BUILD0x7 HS0.1.2}7X;7SOUND ===7 S0.1.27!CHECK.STICK17X;7S0.2757A757SOUND ===777>777%>7 'TEMP8 'TEMP28 %BUILD08 'TEMP3"8CHECK.STICK ,8 QTEMP68 PVERDIR0@8 QTEMP2J8 PHORDIR0T8 QTEMP3^8 PBUILD0h8R>r8FCHECK.STICK1w8X;|8QBUILDCOUNT08FCHECK.STICK18X;8 STOP.BUILD08X;8CHECK.STICK18Q>8$>8 %BUILD18)>8 FS1.18X;8 PBUILD18S1.18%HITP1;;CAN'T MOVE IF HIT8 HS1.1.19X;9Q>9 NSTICK19HS1.2;;MOVEMENT DETECTED!9X;&9 S1.1.109 PVERDIR1:9 PHORDIR1D9 $BUILD1N9 HS1.1.2S9X;X9SOUND ===b9 S1.1.2l9 !MP0.0q9X;v9S1.2959A959SOUND ===979>979%>9 'TEMP9 'TEMP29 %BUILD19 'TEMP39CHECK.STICK : QTEMP : PVERDIR1: QTEMP2 : PHORDIR1*: QTEMP34: PBUILD1>:R>H: FMP0.0M:X;R:QBUILDCOUNT1\: FMP0.0a:X;f: STOP.BUILD1p:X;:X; MOVE PLAYER ROUTINE: MP0.0:(MOVE.PLAYER =HORDIR0=VERDIR0=: MP1.0:(MOVE.PLAYER =HORDIR1=VERDIR1=:X;:X; BUILD WALLS ROUTINE:B0.0: QBUILD0:R>; FB0.01;X;; !B1.0 ;X;; B0.01;SOUND =<==$; $WALLX0.; HB0.02/;X;8;Q>B;PBUILDCOUNT0L;SET.X.Y.WALL V; &WALLX0`; 'WALLY0j; B0.02t;Q>~;RBUILDCOUNT0; HB0.1;X;;TBUILDCOUNT0;#?WALL WALLX0=WALLY0=B0.1=; !B1.0;X;;B0.1;Q>;RBUILDCOUNT0; HB0.2;X;;TBUILDCOUNT0; B0.SUB1; "WALLY0;#?WALL WALLX0=WALLY0=B0.2=< !B1.0<X; <B0.2<Q><RBUILDCOUNT0(< HB0.3-<X;2<TBUILDCOUNT0<< B0.SUB1F< #WALLY0P< #WALLY0Z<#?WALL WALLX0=WALLY0=B0.3=d< !B1.0j<X;n<B0.3x<Q><RBUILDCOUNT0< HB0.4<X;<TBUILDCOUNT0< B0.SUB1< "WALLY0< "WALLY0< "WALLY0<#?WALL WALLX0=WALLY0=B0.4=< !B1.0<X;<B0.4<Q><RBUILDCOUNT0< HB0.5<X;=TBUILDCOUNT0= B0.SUB1= #WALLY0"= #WALLY0,= #WALLY06= #WALLY0@=#?WALL WALLX0=WALLY0=B0.5=J= !B1.0O=X;T=B0.5^= B0.SUB1h=QSECONDLAYER0r= HB0.6w=X;|=#SECONDLAYER0= "WALLX0= "WALLY0= "WALLY0=Q>=PBUILDCOUNT0= !B1.0=X;=B0.6= STOP.BUILD0=X;=B1.0= QBUILD1=R>= FB1.01=X;>!B2 >X;> B1.01>SOUND =<==&> $WALLX10> HB1.025>X;:>Q>D>PBUILDCOUNT1N>SET.X.Y.WALL X> &WALLX1b> 'WALLY1l> B1.02v>Q>>RBUILDCOUNT1> HB1.1>X;>TBUILDCOUNT1>#?WALL WALLX1=WALLY1=B1.1=>!B2>X;>B1.1>Q>>RBUILDCOUNT1> HB1.2>X;>TBUILDCOUNT1> B1.SUB1> "WALLY1>#?WALL WALLX1=WALLY1=B1.2=?!B2?X; ?B1.2?Q> ?RBUILDCOUNT1*? HB1.3/?X;4?TBUILDCOUNT1>? B1.SUB1H? #WALLY1R? #WALLY1\?#?WALL WALLX1=WALLY1=B1.3=f?!B2k?X;p?B1.3z?Q>?RBUILDCOUNT1? HB1.4?X;?TBUILDCOUNT1? B1.SUB1? "WALLY1? "WALLY1? "WALLY1?#?WALL WALLX1=WALLY1=B1.4=?!B2?X;?B1.4?Q>?RBUILDCOUNT1? HB1.5@X;@TBUILDCOUNT1@ B1.SUB1@ #WALLY1$@ #WALLY1.@ #WALLY18@ #WALLY1B@#?WALL WALLX1=WALLY1=B1.5=L@!B2Q@X;V@B1.5`@ B1.SUB1j@QSECONDLAYER1t@ HB1.6y@X;~@#SECONDLAYER1@ #WALLX1@ "WALLY1@ "WALLY1@Q>@PBUILDCOUNT1@!B2@X;@B1.6@ STOP.BUILD1@B2@!TIME.DELAY@X; AEND.OF.ROUNDA%>A RDOFFSET.TO.ZTEMP(A Q@ZTEMP72AR>ROUND1ZA PRDOFFSETdAQ>ROUND1nAPRDOFFSETxAER1A!INIT.ROUNDAX;ASCREEN AS:AAX; NX;SUBROUTINES>N CPSUBHN%>RNCPS.1P@ZTEMP7\N3fN HCPS.1kNX;pN0zN HCPS.2NX;N:NCPS.2#ZTEMPN !CPS.1NX;N INC.ZTEMPN #ZTEMPN HIT1.1NX;N #ZTEMPN IT1.1:NX;NSET.UP.PLOTN INC.ZTEMPN Q@ZTEMP7O PTEMPO INC.ZTEMPO Q@ZTEMP7$O PTEMP2.O:8OX;BOVERT.DRAW.P0LO%>VO!QDATAP08;; # OF BYTES TO LOAD`O?jO$VPOSP0;; OFFSET FROM BASEtO VD1.0~O QDATAP08O PBASEP09O2O1O HVD1.0OX;O:OX;OVERT.DRAW.P1O%>O!QDATAP18;; # OF BYTES TO LOADO?O$VPOSP1;; OFFSET FROM BASEO VD1.1P QDATAP18 P PBASEP19P2P1(P HVD1.1-PX;2P:nPPV;; MSB COLCRSxP$>`PPIOCB9;;BUFF LENGTHPPIOCB 9;; " "PQIOCOM;;PUTCHR / GETCHRP PIOCB9PQCOLOR;; PLAYFIELD #P CIOVP:PX;P DRAWSUBP QCOLORP!PSVCOLOR;; COLOR TO DRAW WITHPQTPPZ;;OLD ROWCRSQ"UQQUQP[;;OLD COLCRS"Q'T;;ROWCRS,Q&U;;COLCRS6QQ>@Q PV;;MSBJQ$>`;;IOCB #6TQ Q>;;DRAW^Q PIOCB9hQ CIOVrQ:|QX;Q M0.OFFQSOUND ===Q!CLEAR.MISSLE VPOSM0==EX0Q M0.OFF.1QQ>QPSHDHPOSM0Q PHPOSM0Q PFIRE0QPEX0Q PSKM0QQ>Q PEXLIM0Q:RX;R M1.OFFRSOUND ===&R!CLEAR.MISSLE VPOSM1==EX10R M1.OFF.1:RQ>DRPSHDHPOSM1NR PHPOSM1XR PFIRE1bRPEX1lR PSKM1vRQ>R PEXLIM1R:RX;R CLR.M.SUBR>RTTEMP;;COUNT * 2RCM.1R QBASEM9R MTEMP2R PBASEM9R0R "TEMPR ICM.1RX;S: SX;S FLASH.SUB SO>;;INC HUE*S PTEMP4SM>;;GET LUMIN.>S FFL1.1CSX;HSQ>RSMTEMP;;INVERT LUMIN.\S:aSX;fS FL1.1pSQ>zSLTEMP;;INVERT LUMIN.S:SX;SCHECK.STICK.SUBSW?S DCS.3SX;S%>S 'TEMP;;UPS &TEMP3SCS.3SW?S DCS.4SX;S%>S'TEMP;; DOWNT &TEMP3TCS.4TW?$T:.TX;8T SETXY.SUBBT;LTS>0;;START OF SCREEN LEFTVTV?;;DIV BY 2`T>;;= SCREEN X COORDINATEjT QTEMPtTSETXY.SUB.1~T;TS> ;;START OF SCREEN TOPTV?;;DIV BY 4TV?TR>2;;IF OFF TOPTDSETXY.SUB.2;;OF SCREENTX;TQ>;;SET TO = 0TSETXY.SUB.2T?;;= SCREEN Y COORDINATET:TX;T B0.SUB1T COLOR UPLOT WALLX0=WALLY0 U:UX;U B0.SUB2(U COLOR 2UPLOT WALLX0=WALLY0W 'WALLY0W 'WALLX0W 'BUILD0W'BUILDCOUNT0W'SECONDLAYER0W:WX;XSTOP.BUILD1 X B1.SUB1XSTOP.BUILD1.1 XSOUND ===*X%>4X 'WALLY1>X 'WALLX1HX 'BUILD1RX'BUILDCOUNT1\X'SECONDLAYER1fX:pXX;zX SOUND.SUBXQ>XP;;AUDCTLXQ>XP;;SKCTLXP2;;& SHADOWX:XX;XPUTCHR.SUBX$>X &IOCBX &IOCB X Q>PUTCHRX PIOCBY PCLOOPY %TEMPY QSTRBUF8$Y CIOV.Y "TEMP8Y IPCLOOP=YX;BY:LYX;VY PRINT.SUB`Y1jY 'TEMPtY$>~Y SLOOPYQ@ZTEMP7;;REVERSE ORDERYPSTRBUF9;;OF CHARACERSY2;;IN STRINGY1Y ISLOOPYX;Y PUTCHR.SUBY:YX;YPRINT.NUM.SUBY IFP;;INT. TO F.P.Y FASC;;F.P. TO ASCII STRINGYX;Z%> ZPN1ZQ@INBUF7;;COUNT CHARACTERSZGPN2;;IN STRING#ZX;(Z32Z!PN17ZX;ZZPN3dZQ@INBUF7;;REVERSE STRING &nZM>;;CLEAR BIT 7xZ PSTRBUF9Z2Z1ZIPN3ZX;Z PUTCHR.SUBZ:ZX;Z DRAW.SUBZQ@ZTEMP7;;NUM OF X,Y; X,YZFR1.2;;SKIP IF "0"ZX;ZPTEMP5;;# PLOT DRAWTO SETSZR1.1Z SET.UP.PLOTZ INC.ZTEMP[ Q@ZTEMP7[ PTEMP3[ INC.ZTEMP"[ Q@ZTEMP7,[ PTEMP46[PLOT TEMP=TEMP2@[DRAWTO TEMP3=TEMP4J[%>T[ "TEMP5^[HR1.1;;DO NEXT SETc[X;h[R1.2r[ INC.ZTEMP|["Q@ZTEMP7;; NUM PLOT POINT SETS[FR1.4;;SKIP IF "0"[X;[PTEMP5;; SETS[R1.3[ SET.UP.PLOT[PLOT TEMP=TEMP2[%>[ "TEMP5[ HR1.3[X;[R1.4[:[X;[ HIT.SUB[ HS.LOOP\ Q>GETCHR\ PIOCOM\ IOSUB&\R>0\FHS.LOOP.15\X;:\ Q>PUTCHRD\ PIOCOMN\ $TEMP3X\ %TEMP4b\ IOSUBl\ HS.LOOP.1v\ %TEMP4\ )TEMP2\ FHS.1\X;\ $TEMP3\ #TEMP4\ %TEMP4\ !HS.LOOP\X;\HS.1\:\X;\EIHqRqX;^^^^^^^^^^^^\qX;PLAYER DATA FormataqX; 1- # of data bytesfqX; 2- '0' first bytekq@X; 3- player byte data in reverse orderpqX; 4- '0' last byteuqX;^^^^^^^^^^^^zq(DATAP0  ==f==8=====q(DATAP1  ==V=======qX;q COLPM0q =t0u%X;********************************:u8X;DATA FOR SCREEN DISPLAY OF EACH ROUNDDuX;Format: COLOR 2 waterNu$X; 1- # of plot/drawto setsXu#X; 2- 4 byte sets x,y, x,ybu#X; 3- # of plot point setsluX; 4- 2 byte sets x,yvuX; COLOR 1 wallsu$X; 5- # of plot/drawto setsu#X; 6- 4 byte sets x,y, x,yu#X; 7- # of plot point setsuX; 8- 2 byte sets x,yu#X; 9- P0 horz. pos. X*2+48u X; 10- P1 " " "u%X; 11- P0 vert. offset Y*4+32u"X; 12- P1 " " "uX;uiX; 13- "255" FLAGS END OF DATA. AFTER LAST SCREEN ONLY !!u%X;********************************u+RDOFFSET ;;ROUNDS DATA OFFSET POINTERu(ROUND1 ='=='='=(==(='=vr $= == == == == == == == ===================== vc === ==== ==== == ==== ==== ==========vc ================6==1==7==2==8==3==0==0= vc 1==1==2==2==1= =6=%=2= =7=%=3= =8=%=@==@= =A==A= =B==B= *v6 C==C= =D==D= =E==E= ==4==P=4vmROUND2 ='=='==(==(==)==)==*==*==(==(= ='==%=#='= =%=%=&=%='='>vo &=&=&='=========8==<==8==;=== == == == == == == == Hvc ====>= =@= === =A= === =A= === =A= =>==@===$==&==$==&Rv 3=$=6=&=4=$=6=&=\vf = ====== ==F==B==B==F== == = =!==!= ="=="= =#==#= fvW $==$= =*==*= =+==+= =,==,= =-==-= =.==.= ====pvZ =====!==%=>==9==7==:==<=!=<=%=== =;= =0==m=mzvyROUND3  ===F=&= ==G=&=========H=%=K=&=G='=O='===='===='=@==G=v A==J==vr ==== = == = = == = ===== == == == === ==== ==== ==vc ========?= =?==@==@==?==?==@==@==A==A==F==F=vB G==G==H==H==F==F= =G==G= =H==H= =v 4==D=vpROUND4 =&====== == ====== === ==!= =!= ="=="==$==%==&=vi '=='==)=!=,==-==.==/==/= =2==3==4==5==8==9==9==<= ===v! E==G==G= =H= =K=vf = ==== ==== ====================== =%vc == =%=== =%=C==<==D=====E==>==<==<========>==>=vN @==@==<==C=%====D=%=>==E=%==A==A== == =v @===vmROUND5 ===8= ===8= =9= =C= =9= =B==?= =@==C==@==?====?===wK == ====== ==== ======6=&===6='w ===@====7='w- ===7====7====7==$w P==`=x.w"ROUND6 ====2==(=d8w"ROUND7 ====l==l=lBwUROUND8  ===='=@==@='===;====;====;===$=;=$Lw` ==?=== =?= ===?=== =?= =====?====?===R==d=ttw- ;; *** FLAG END OF LAST SCREEN DATA ***~wX;y"y START.OF.CODE,y