ўїїџџџџџџџџџџџћPC99 а DSK (џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћINTERRUPT €2PЌаїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћHOONOS €JP‚P "Original Munchman" or "Munchman"їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћDATA €=щP=:Р source code for John Phillip'sїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ  їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћLEVEL0SUBS€=9P=ЪРїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћINITS €$‹P$ˆ0їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћGPLLNK € 0P w  MUNCH MAN II. (Not the same as їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћCOMUTL € P Both sides of this disk containїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћMAZES €ЄPД‘їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћLEVEL3SUBS€ нP ЅСїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћLEVEL1SUBS€7ёP7aaїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћMUNCHO :P­‘Boots MUNCH MAN II from EA3їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћMORE0SUBS €5€P5ЮAїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћMAIN €ЭPВїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћLEVEL2SUBS€ зP ˜СїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћUTIL1  њAёBoots MUNCH MAN II from EA5їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћMUNCHL €АP2їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ! BYTE 08*8+0,16*8+0 DOT 1! BYTE 08*8+0,17*8+0 DOT 2! BYTE 10*8+3,12*8+0 DOT 3! BYTE 10*8+3,16*8+0 DOT 4! BYTE 10*8+3,20*8+0 DOT 5*!RUNWY4 BYTE 08*8+0,14*8+6 DOT 0! BYTE 08*8+0,16*8+0 DOT 1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћWINLOSE €'щP' bїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ! BYTE 12*8-1,16*8+0 DOT 4! BYTE 10*8+4,24*8-1 DOT 5*!RUNWY7 BYTE 08*8+0,14*8+0 DOT 0! BYTE 08*8+0,16*8+0 DOT 1! BYTE 08*8+0,18*8-1 DOT 2! BYTE 09*8+0,08*8+0 DOT 3! BYTE 13*8-1,16*8+0 DOT 4џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ! BYTE 08*8+0,17*8+2 DOT 2! BYTE 11*8+1,10*8+2 DOT 3! BYTE 11*8+1,16*8+0 DOT 4! BYTE 11*8+1,22*8+2 DOT 5*!RUNWY5 BYTE 08*8+0,14*8+4 DOT 0! BYTE 08*8+0,16*8+0 DOT 1! BYTE 08*8+0,17*8+4 DOT 2џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ!RUNWY2 BYTE 08*8+0,15*8+2 DOT 0! BYTE 08*8+0,16*8+0 DOT 1! BYTE 08*8+0,16*8+6 DOT 2! BYTE 10*8-1,13*8+0 DOT 3! BYTE 10*8-1,16*8+0 DOT 4! BYTE 10*8-1,19*8+0 DOT 5*!RUNWY3 BYTE 08*8+0,15*8+0 DOT 0џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћMUNCHLIST € P"їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ! BYTE 09*8+0,24*8-1 DOT 5* RUNLIN BYTE 50 BYTE 0,2,0,3,2,5,1,4,3,5 CONNECTING LINES џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ! BYTE 12*8-2,08*8+3 DOT 3! BYTE 12*8-2,16*8+0 DOT 4! BYTE 12*8-2,23*8+3 DOT 5*!RUNWY6 BYTE 08*8+0,14*8+2 DOT 0! BYTE 08*8+0,16*8+0 DOT 1! BYTE 08*8+0,18*8-2 DOT 2! BYTE 10*8+4,08*8+0 DOT 3џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DEC R2 DONE? JNE NOSNDL NOT YET* CLR R3 INDEX LI R4,4 COUNTERNOSNDM MOVB @OFFSND(R3),@>8400" INC R3 NEXT BYTE DEC R4 DONE?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* FILE IS >> COMUTL <<'*======================================* ALL COMUTL RETURN LINK IN R11'*======================================"**********************************"* TURN OFF ALL SOUNDS *"**********************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ JNE NOSNDM NOT YET* LIMI 2) B *R11 RETURN TO CALLER*$************************************$* DELAY LOOP. RETURN IS NORMAL. *$************************************DELAY MOV *R11+,R1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћOFFSND BYTE >9F,>BF,>DF,>FF*!SNDOFF LIMI 0 INTS OFF0 LI R0,SNDADR START OF SOUND POINTERS' CLR R1 VALUE TO WRITE" LI R2,9 9*2 BYTES'NOSNDL MOV R1,*R0+ ZERO OUT BYTESџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%* THIS ROUTINE ASSUMES THAT THE *%* PARAMETERS ARE PASSED FOLLOWING *%* THE BL @WRTVCL STATEMENT. I.E.: *%* BL @WRTVCL *%* DATA SAL,2,MYWS+2 *%*************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ)SKYEX B *R11 RETURN TO CALLER'***************************************'* GENERATES A 16 BIT RANDOM NUMBER AND*'* PLACES IT IN R10. RETURN IS IN R11. *'***************************************SEED EQU >83C0RANDNO LI R9,28645џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ MOVB @INTFLG,R4 IN INT?3 JNE SNDRT YES, SO DON'T TURN BACK ON LIMI 2 SNDRT B *R11%*************************************%* STANDARD KEYBOARD SCAN ROUTINE *%*************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ)DLYOL LI R2,>2000 DELAY 1/8 SECOND DLYIL DEC R2 JNE DLYIL DEC R1 JNE DLYOL B *R11&**************************************&* CALL SOUND ROUTINE. R11 IS RETURN *&************************************** SOUND LIMI 0џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/WRTVCL MOV *R11+,VDPADD VDPADD EQU 0 (R3)/WRTCL MOV *R11+,WCOUNT WCOUNT EQU 2 (R2)/WRTL MOV *R11+,WLOC WLOC EQU 3 (R3)%WRITE LIMI 0 DISABLE INTS SWPB VDPADD' MOVB VDPADD,@VDPWA MYWS+1,>8C02џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ( MPY @SEED,R9 SEED EQU >83C0 AI R10,31417& MOV R10,@SEED MAKE NEW SEED) B *R11 RETURN TO CALLER%*************************************%* W R I T E T O V D P ROUTINE *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%SCANKY LIMI 0 DISABLE INTS( LWPI GPLWS GPLWS EQU >83E0' BL @SCAN SCAN EQU >000E LWPI MYWS$ MOVB @INTFLG,@INTFLG IN INTS? JNE SKYEX$ LIMI 2 ENABLE INTSџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* MOV *R11+,R4 GET WHICH SNDADR( DEC R4 MAKE ZERO BASED7 MOVB @H00,@SNDCNT(R4) ZERO OUT THE COUNT DOWN, SLA R4,1 MULT BY 2 FOR DATA- MOV *R11+,@SNDADR(R4) AND PLACE THEREџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ( SWPB VDPADD WASTE SOME TIME* ORI VDPADD,>4000 SET FLAG TO WRITE MOVB VDPADD,@VDPWA >8C02( NOP WASTE SOME TIME+W00010 MOVB *WLOC+,@VDPWD VDPWD EQU >8C00 DEC WCOUNT JGT W00010џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%READ LIMI 0 DISABLE INTS SWPB VDPADD' MOVB VDPADD,@VDPWA MYWS+1,>8C02( SWPB VDPADD WASTE SOME TIME MOVB VDPADD,@VDPWA >8C02( NOP WASTE SOME TIMEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%*************************************%* R E A D F R O M V D P ROUTINE *%* THIS ROUTINE ASSUMES THAT THE *%* PARAMETERS ARE PASSED FOLLOWING *%* THE BL @RDVCL STATEMENT. I.E.: *%* BL @RDVCL *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ- B *R11 AND RETURN TO CALLER%*************************************%* V D P T O V D P ROUTINE *%* THIS ROUTINE ASSUMES THAT THE *%* PARAMETERS ARE PASSED FOLLOWING *%* THE BL @VDPVDP STATEMENT. I.E.: *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%* DATA >1187 *%* THIS INSTANCE CHANGES VDP REG. 7 *%* TO >11 (CHANGES BACKGROUND COLOR) *%* RETURN LINKAGE IS R11. *%*************************************"VWTR MOV *R11+,R0 GET VALUEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+R00010 MOVB @VDPRD,*RLOC+ VDPRD EQU >8800 DEC RCOUNT JGT R00010( MOVB @INTFLG,RCOUNT IN INTERRUPT?- JNE RRTN YES, SO DON'T ENABLE$ LIMI 2 ENABLE INTS)RRTN B *R11 RETURN TO CALLERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%* DATA SAL,2,MYWS+2 *%*************************************/RDVCL MOV *R11+,VDPADD VDPADD EQU 0 (R0)/RDCL MOV *R11+,RCOUNT RCOUNT EQU 2 (R2)/RDL MOV *R11+,RLOC RLOC EQU 3 (R3)џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ LI WCOUNT,>4000' S WCOUNT,VDPADD RESTORE VDPADD( MOVB @INTFLG,WCOUNT IN INTERRUPT?- JNE WRTN YES, SO DON'T ENABLE$ LIMI 2 ENABLE INTS)WRTN B *R11 RETURN TO CALLERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%VWTRG LIMI 0 DISABLE INTS( MOVB R0,@VDPWA VDPWA EQU >8C02- SWPB R0 NOW SET UP HIGH BYTE MOVB R0,@VDPWA* SWPB R0 RESTORE PARAMETER* LIMI 2 ENABLE INTERRUPTSџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%*************************************%* VDP WRITE TO REGISTER ROUTINE. THE*%* PARAMETER IS PASSED DOWN IN R1 *%* USING THIS FORMAT: (LB, THEN HB) *%* VALUE TO WRITE/8/VDP REG. # *%* I.E. BL @VWTR *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%* BL @WRTVCL *%* DATA SAL,2,CT DEST,COUNT,SOURCE*%*************************************VDPVDP MOV *R11+,VDPADDVDPCL MOV *R11+,WCOUNTVDPL MOV *R11+,WLOC$VDP MOV R11,@TEMPRT SAVE RETURNџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ.SNDPNT EQU >83CC POINTER TO SOUND LIST#STRTSD EQU >83CE START BYTE$SVVDP1 EQU >83D4 SAVE VDP R1/RAMFLG EQU >83FD VDP RAM FLAG FOR SOUND&VDPRD EQU >8800 VDP READ DATA'VDPWD EQU >8C00 VDP WRITE DATAџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ(* DATE ENDED : ???????????????? *(*****************************************# DEF MUNCH,SFIRST,SLAST,SLOAD* AORG >A000MUNCH B @STARTSFIRST EQU MUNCHSLOAD EQU SFIRSTROMHDR BYTE >AA,1,1,0,0,0 DATA PROG DATA 0,0,0,0џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ! MOV @TEMPR0,VDPADD RESTORE! MOV @TEMPR0,@TEMPV RESTORE/VDPX MOV @TEMPRT,R11 RESTORE RETURN ADDRESS) B *R11 RETURN TO CALLER џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ% MOV VDPADD,@TEMPR0 SAVE VDPADD# MOV VDPADD,@TEMPV SAVE AGAIN! MOV WLOC,@TEMPL SAVE LOC# MOV WCOUNT,@TEMPC SAVE COUNT#VDP000 MOV @TEMPL,VDPADD GET SOURCE BL @RDCL' DATA 1,3*2+MYWS 1 BYTE INTO R3џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/VDPWA EQU >8C02 VDP READ/WRITE ADDRESS1SCAN EQU >000E ADDRESS OF KSCAN ROUTINE+SIT EQU >0000 SCREEN IMAGE TABLE.SAL EQU >0300 SPRITE ATTRIBUTE LIST$CT EQU >0380 COLOR TABLEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ PROG DATA 0 DATA START BYTE 11 TEXT 'MUNCHMAN II' EVEN'***************************************'* MEMORY MAPPED E Q U A T E S *'***************************************CPURAM EQU >8300 CPURAMџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* FILE IS >> DATA <<(****************************************(* M U N C H M A N I I *(* *(* PROGRAMED BY: JOHN PHILLIPS *(* DATE STARTED: JANUARY 24, 1987 *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ! MOV @TEMPV,VDPADD GET DEST( BL @WRTCL WRITE SAME BYTE DATA 1,3*2+MYWS FROM R3" INC @TEMPV NEXT DEST$ INC @TEMPL NEXT SOURCE DEC @TEMPC DONE? JNE VDP000 NOT YETџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ-ENGTIM EQU CPURAM+>3C ENG TIMER INIT VALUE,ENGCNT EQU CPURAM+>3E ENG COUNTDOWN TIMERLMONFLG EQU CPURAM+>40 MONSTER FLAGS 0=IN BOX 1=COMING OUT 2=OUT 3=IN SWAP5MONDIR EQU CPURAM+>44 MONSTER DIRECTION INDICATORSџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ0DOTLFT EQU CPURAM+>32 # DOTS LEFT 3900ENGLFT EQU CPURAM+>34 # ENGS LEFT 87TELDLY EQU CPURAM+>35 TELEPORTER PATTERN DELAY COUNT(MAZCOL EQU CPURAM+>36 MAZE COLOR BYTE4ENGFLG EQU CPURAM+>37 0=NOT ENERGIZED 1=ENERGIZEDџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ4SAVDGT EQU CPURAM+>24 SAVED SCREEN 10,000'S DIGIT2COMPET EQU CPURAM+>25 0=NOT IN COMPETITION MODE#TEMPV EQU CPURAM+>26 FOR VDPVDP*INIT1 EQU CPURAM+>26 TOP 10 INITIALS 1TEMPL EQU CPURAM+>28*INIT2 EQU CPURAM+>29 TOP 10 INITIALS 2џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ.SVT EQU >0780 SPRITE VELOCITY TABLE/SDL EQU >0400 SPRITE DESCRIPTOR LIST1PDT EQU >0800 PATTERN DESCRIPTOR TABLE'***************************************'* C P U R A M E Q U A T E S *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ2MONPIX EQU CPURAM+>48 # PIXELS MOVED OUT OF BOXAMONSEC EQU CPURAM+>4C # SECONDS DELAY BEFORE ENTERING NEW MAZE$SAVFLG EQU CPURAM+>50 SAVE MONFLG$SAVDIR EQU CPURAM+>54 SAVE MONDIR$SAVPIX EQU CPURAM+>58 SAVE MONPIXџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ,HOODLY EQU CPURAM+>38 HOONO DELAY COUNTER1HOOTIM EQU CPURAM+>39 HOONO STATIC DELAY VALUE:HOONFR EQU CPURAM+>3A MAZE HOONOS ON WHEN SWAPPED MAZES:SHRCPU EQU CPURAM+>3B SHARED BETWEEN INTERRUPT & NORMALџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћTEMPC EQU CPURAM+>2A TEMPR0 EQU CPURAM+>2C TEMP R0*KDELAY EQU CPURAM+>2E KEY DELAY COUNTER/KEYTIM EQU CPURAM+>2F KEY DELAY STATIC VALUE)TEMPKY EQU CPURAM+>30 TEMP KEY STORAGE)LASTKY EQU CPURAM+>31 LAST KEY PRESSEDџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'***************************************%MYWS EQU >8300 MY WORKSPACE2INTFLG EQU CPURAM+>20 1 INTERRUPT FLAG 0=NOT IN(MAZEF EQU CPURAM+>21 0=LEFT, 1=RIGHT&MMLEFT EQU CPURAM+>22 MUNCHMEN LEFTLEVEL EQU CPURAM+>23 LEVELџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ.MONPAT EQU CPURAM+>5C MONSTER PATTERN BYTES!MMANY EQU CPURAM+>60 MMAN Y,XMMANX EQU CPURAM+>61*HOOPOS EQU CPURAM+>62 4 MONS BY 2 BYTES"TELPY EQU CPURAM+>6A TELEP Y,XTELPX EQU CPURAM+>6B*)KEYBRD EQU CPURAM+>74 KEYBOARD TO SCANџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&TELDRL EQU CPURAM+>AE TELE DIR LEFT'TELDRR EQU CPURAM+>AF TELE DIR RIGHT0TELTIM EQU CPURAM+>B0 TELE STATIC DELAY VALUE+TELCNT EQU CPURAM+>B1 TELE DELAY COUNTER%MONEAT EQU CPURAM+>B2 # MONS EATENџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ(TEMPRT EQU CPURAM+>7E TEMPRARY RETURN*8HISCRS EQU CPURAM+>84 HI SCORE SAVE ADDRESSES 8 BYTES,CHEATF EQU CPURAM+>8D 0=NOT IN CHEAT MODE/EATTEL EQU CPURAM+>8E IF MMAN HIT TELEPORTER0TELPAT EQU CPURAM+>8F TELEPORTER PATTERN BYTE*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'* WORKSPACE E Q U A T E S *'***************************************R0LB EQU MYWS+1 R0R1LB EQU MYWS+3 R1R2LB EQU MYWS+5 R2R3LB EQU MYWS+7 R3R4LB EQU MYWS+9 R4R5LB EQU MYWS+11 R5џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ-INTWS EQU CPURAM+>C0 INTERRRUPT WORKSPACE&GPLWS EQU CPURAM+>E0 GPL WORKSPACE0TIMOUT EQU CPURAM+>D6 SCREEN TIME OUT COUNTER'***************************************'* R E G I S T E R E Q U A T E S *'***************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ1BEGDLY EQU CPURAM+>B3 MON ENTRY MOVEMENT DELAY3HOOPDL EQU CPURAM+>B4 HOONO CHANGE PATTERN DELAY0ENGCOL EQU CPURAM+>B5 COLOR OF HOOS ENERGIZED0MAZSEC EQU CPURAM+>B6 # SECS MMAN IN NEW MAZEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ(SNDADR EQU CPURAM+>90 SOUND ADDRESSES'SNDCNT EQU CPURAM+>9C SOUND COUNTERS/MONSAV EQU CPURAM+>A2 MONSTER SAVED Y,X LOCS* GOES THRU >A9-TELSVL EQU CPURAM+>AA TELE LEFT SAVED Y,X-TELSVR EQU CPURAM+>AC TELE RIGHT SAVED Y,Xџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%KEY EQU CPURAM+>75 KEY RETURNED#JOYY EQU CPURAM+>76 JOYSTICK Y#JOYX EQU CPURAM+>77 JOYSTICK X#TIMER EQU CPURAM+>79 TIMER BYTE$STATUS EQU CPURAM+>7C STATUS BYTE$MOTION EQU CPURAM+>7A MOTION BYTEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћVDPADD EQU 0 R0!RCOUNT EQU 2 R2 F V!WCOUNT EQU 2 R2 O D!RLOC EQU 1 R1 R PWLOC EQU 1 R1 DIGTHB EQU 6 CARYHB EQU 7'***************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ7BOXDLY EQU CPURAM+>B7 CAPTURE @BEGDLY FOR BOX ESCAPE2PAUSEF EQU CPURAM+>B8 PAUSE FLAG 0=NOT IN PAUSE0ENGPAT EQU CPURAM+>B9 ENG PATTERN FLAG 0 OR 1*.GPLR13 EQU CPURAM+>BA FOR INTERRUPT ROUTINEGPLR14 EQU CPURAM+>BCGPLR15 EQU CPURAM+>BE*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћR6LB EQU MYWS+13 R6DIGTLB EQU R6LBR7LB EQU MYWS+15 R7CARYLB EQU R7LBR8LB EQU MYWS+17 R8R9LB EQU MYWS+19 R9R10LB EQU MYWS+21 R10R11LB EQU MYWS+23 R11R12LB EQU MYWS+25 R12џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ* BYTE 11*8-1,19*8,>86,>08 MONSTER 3* BYTE 11*8-1,20*8,>87,>02 MONSTER 4+TELPLI BYTE 03*8-1,19*8,>88,>01 TELEPORTER9 BYTE >D0,>00 REST OF SPRITES ANNULLED** SAL FOR RIGHT MAZE* EVENџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћH0D BYTE >0DH0E BYTE >0EH0F BYTE >0FH10 BYTE >10H20 BYTE >20*H39 BYTE >39 FOR SCORE ROUTINE!H60 BYTE 60 1 SECOND"H120 BYTE 120 2 SECONDSHC0 BYTE >C0HD0 BYTE >D0HFF BYTE >FF*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ,SNAPR EQU >1900 SNAPSHOT RIGHT MAZE)MAXROW EQU 21 MAX ROWS OF MAZE)MAXCOL EQU 22 MAX COLS OF MAZE4TOPTEN EQU >2000 TOP 10 SCORES VDP SAVE AREA"**********************************"* BYTE STATEMENTS NEEDED *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћR13LB EQU MYWS+27 R13R14LB EQU MYWS+29 R14R15LB EQU MYWS+31 R15"**********************************"* OTHER EQUATES *"**********************************,SCORAD EQU 00*32+20 LAST DIGIT OF SCOREџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ)SALINR BYTE 21*8-1,12*8,>80,>0C MUNCHMAN* BYTE 11*8-1,12*8,>84,>06 MONSTER 1* BYTE 11*8-1,11*8,>85,>0D MONSTER 2* BYTE 11*8-1,12*8,>86,>08 MONSTER 3* BYTE 11*8-1,13*8,>87,>02 MONSTER 4џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћMMFAST BYTE >02HNSLOW BYTE >05*+VDPREG BYTE >00,>E0,>00,>0E,>01,>06,>00,>0F** SAL FOR LEFT MAZE* EVEN)SALINL BYTE 21*8-1,19*8,>80,>0C MUNCHMAN* BYTE 11*8-1,19*8,>84,>06 MONSTER 1* BYTE 11*8-1,18*8,>85,>0D MONSTER 2џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ"**********************************H00 BYTE >00H01 BYTE >01H02 BYTE >02H03 BYTE >03H04 BYTE >04H05 BYTE >05H06 BYTE >06H07 BYTE >07H08 BYTE >08H09 BYTE >09H0A BYTE >0AH0B BYTE >0BH0C BYTE >0Cџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ,THOUSN EQU 00*32+16 TEN THOUSANDS DIGIT1SCMMLF EQU 01*32+24 # MM REMAINING ON SCREEN0VLMAZE EQU >1000 UNCOMPRESSED LEFT MAZE0VRMAZE EQU >1300 UNCOMPRESSED RIGHT MAZE,SNAPL EQU >1600 SNAPSHOT LEFT MAZEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ BYTE 3,>80,>06,>90,3 BYTE 3,>80,>05,>90,2 BYTE 3,>80,>06,>90,2 BYTE 3,>80,>05,>90,1 BYTE 3,>80,>06,>90,1 BYTE 1,>9F,0*ENDSND BYTE 3,>81,>2C,>90,4 BYTE 3,>81,>30,>90,4 BYTE 3,>81,>34,>90,6џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ BYTE 2,>DF,>FF,0*ENGSND BYTE 3,>C0,>08,>D0,1 BYTE 3,>C0,>08,>D1,1 BYTE 3,>C0,>08,>D2,1 BYTE 1,>DF,0*EATSND BYTE 3,>C2,>1A,>D4,1 BYTE 3,>C2,>15,>D4,1 BYTE 3,>C2,>10,>D4,1 BYTE 1,>DF,0*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ BYTE 08,07,08,07,08# BYTE 07,07,07,06,06 2ND 20*%*************************************%* SOUND LISTS FOR VDP *%************************************* SLISTS EQU $'INESND BYTE 6,>87,>03,>9A,>A8,>03,>BA,1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ+TELPRI BYTE 03*8-1,12*8,>88,>01 TELEPORTER9 BYTE >D0,>00 REST OF SPRITES ANNULLED** MAZE COLOR VALUES*:CVALUS BYTE >40,>40,>C0,>C0,>D0,>D0,>10,>10 1ST 20 LEVELS+ BYTE >70,>70,>20,>20,>A0,>A0,>E0,>E0џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ BYTE 3,>81,>36,>90,8 BYTE 3,>81,>38,>90,10 BYTE 3,>81,>3A,>90,12 BYTE 3,>81,>3C,>90,16 BYTE 3,>81,>3E,>90,10 BYTE 3,>81,>3F,>90,20 BYTE 1,>9F,0* SLEND EQU $%*************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћWINSND BYTE 3,>80,>05,>90,10 BYTE 3,>80,>06,>90,10 BYTE 3,>80,>05,>90,6 BYTE 3,>80,>06,>90,6 BYTE 3,>80,>05,>90,5 BYTE 3,>80,>06,>90,5 BYTE 3,>80,>05,>90,4 BYTE 3,>80,>06,>90,4 BYTE 3,>80,>05,>90,3џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ' BYTE 6,>89,>03,>9A,>A6,>03,>BA,1' BYTE 6,>8B,>03,>9A,>A4,>03,>BA,1' BYTE 6,>8D,>03,>9A,>A2,>03,>BA,1 BYTE 2,>9F,>BF,0*HOOSND BYTE 4,>CC,>01,>E7,>F2,1 BYTE 3,>CC,>03,>E7,1 BYTE 3,>CC,>05,>E7,1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ BYTE >10,>30,>50,>F0** MUNCHMAN MOVE DELAY VALUES*KVALUS BYTE 09,08,09,08,09 BYTE 08,09,08,09,08 BYTE 09,08,09,08,09# BYTE 08,09,08,09,07 1ST 20* BYTE 08,07,08,07,08 BYTE 07,08,07,08,07џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ%* TEXT STATEMENTS NEEDED *%*************************************5NAME TEXT 'M U N C H M A N II' 20 BYTES5NAMESB TEXT 'THE MONSTER IS BACK!' 20 BYTES5CR1 TEXT 'DESIGNED BY: JOHN PHILLIPS' 26 BYTESџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ6SPACES TEXT ' ' 22 SPACES INITIA TEXT 'INITIALS? ___' 13 SURE TEXT 'CORRECT (Y/N)?' 14************************* REWARD MESSAGES ************************* MSGS EQU $ TEXT ' MUNCH A BUNCH! 'џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ BYTE >A2/ TEXT '000000' 20 BYTE >A35ZEROES TEXT '000000???' 6 BYTES-OVER TEXT 'GAME OVER' 10 BYTES5PRESS TEXT 'PRESS REDO OR BACK' 18 BYTESџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ# DATA >0A0A,>0A0A,>0A0A,>0A0A# DATA >5A5A,>5A5A,>5A5A,>5A5A# DATA >5F5F,>5F5F,>5F5F,>5F5F# DATA >5A5A,>5A5A,>5A42,>7E00*0 DATA >0A0B,>080F,>0F08,>0B0A >68# DATA >00FE,>02FA,>FA02,>FE00џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ# DATA >4040,>4040,>10C0,>1010# DATA >6060,>1010,>1010,>1010** ENERGIZER DELAYS IN 1/60THS*EVALUS DATA 300*%*************************************%* CHARACTER DEFINITIONS *%*************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ TEXT ' HOONOS BEWARE! ' TEXT 'IT''S A-MAZE-ING!' TEXT 'CHOMP ''EM FAST! '%*************************************%* DATA STATEMENTS NEEDED *%***************************************H0000 DATA 0 ZERO SPRITE VELS*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ5BEGIN TEXT 'PRESS T FOR TOURNAMENT' 22 BYTES PRSKEY TEXT 'PRESS ANY KEY!' 14* PTSMSG EQU $M125 TEXT ' 125'M250 TEXT ' 250'M500 TEXT ' 500'M1000 TEXT '1000'5PAUSEM TEXT '* PAUSE *' 9 BYTESџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ5CR2 TEXT '@1987 JOHN PHILLIPS' 20 BYTES CHEATM TEXT 'NO CHEATING!' 125YRSCOR TEXT 'YOUR SCORE: ' 20 BYTES BYTE >A2 TEXT '000000' BYTE >A35HISCOR TEXT 'HIGH SCORE: ' 26 BYTESџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ#CPYRIT DATA >3C42,>99A1,>A199,>423C*'* THESE NEXT 23*8 BYTES FOR MAZE BORDER*0BORDER DATA >0103,>070F,>0F08,>0B0A >60# DATA >FFFF,>FFFF,>FF00,>FF00# DATA >FFFF,>FFFF,>FF18,>DB5A# DATA >FEFD,>FBF7,>EF1F,>DF5Fџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћREMAIN DATA >2020,>2020 SHOW 0 DATA >A820,>2020 SHOW 1 DATA >A8A8,>2020 SHOW 2 DATA >A8A8,>A820 SHOW 3 DATA >A8A8,>A8A8 SHOW 4*#COLORS DATA >1010,>1010,>1010,>1010# DATA >1010,>1010,>4040,>4040џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ# DATA >007F,>405F,>5F5F,>5F5F# DATA >5EDC,>18F0,>0000,>0000# DATA >5E5D,>5B57,>5F40,>7F00# DATA >00FF,>FFFF,>FF00,>FF00# DATA >0A0B,>080F,>0000,>0000# DATA >00FE,>02FA,>0A0A,>0A0A*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ4 DATA >0000,>1B24,>241B,>2424 1 UL CORN4 DATA >0000,>B824,>24D8,>2424 2 UR CORN? DATA >2418,>BB44,>44BB,>2424 3 4-WAY INTERSECTION5 DATA >2418,>2424,>2418,>2424 4 VERTICALџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ0 DATA >4ECE,>CECE,>0E0C,>F800 >90# DATA >001F,>3F7F,>4040,>4F4E# DATA >00FC,>FAF6,>0E0E,>CE4E ** MISCELLANEOUS PATTERNS NEEDED*0ENERG1 DATA >3C42,>8181,>8181,>423C >A1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ# DATA >4E4E,>4E4E,>4E4E,>4E4E# DATA >4E4E,>4D4B,>4040,>7F00# DATA >0E0E,>0E0E,>0E0C,>F800# DATA >001F,>3F7F,>4040,>4040*0 DATA >00FC,>FAF6,>0E0E,>0E0E >A8# DATA >4040,>4040,>4040,>7F00џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ0 DATA >00FF,>00FF,>0000,>0000 >70# DATA >FAFA,>FAFA,>FA02,>FE00# DATA >0AFB,>FBFB,>FB00,>FF00# DATA >00FC,>FAF6,>FE04,>FC00# DATA >5FDF,>1FFF,>FF1F,>DF5F# DATA >00FF,>00FF,>FF00,>FF00џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ6 DATA >2424,>D824,>24D8,>0000 5 LR CORNER6 DATA >2424,>1B24,>241B,>0000 6 LL CORNER8 DATA >2418,>BB44,>44BB,>0000 7 HORZ/UP INT: DATA >0000,>BB44,>44BB,>2424 8 HORZ/DOWN INTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ0LARROW DATA >0008,>3878,>7838,>0800 >A20RARROW DATA >0010,>1C1E,>1E1C,>1000 >A3*#ENERG2 DATA >0000,>1824,>2418,>0000*** CHAINS* CHAINS EQU $7 DATA >0000,>BB44,>44BB,>0000 0 HORIZONTALџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ# DATA >4E4E,>4E4E,>4E4C,>7800# DATA >4040,>4040,>4040,>4040# DATA >0E0E,>0E0E,>0E0E,>0E0E# DATA >4ECE,>CDCB,>0000,>FF00# DATA >00FF,>FFFF,>0000,>0000# DATA >0000,>0000,>0000,>FF00*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ# DATA >007F,>405F,>5F40,>7F00*'* THESE NEXT 19*8 BYTES FOR MAZE INSIDE*0INSIDE DATA >001F,>3F7F,>4040,>7F00 >A0# DATA >00FC,>FAF6,>0E0C,>F800# DATA >00FF,>FFFF,>0000,>FF00# DATA >001C,>3A76,>4E4E,>4E4Eџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ CI R4,>F000 >F0?- JNE INCR NO, SO TRY NEXT BYTE- JMP GOTGRT FOUND RETURN ADDRESS*.INCR INC R3 TRY NEXT SET OF BYTES JMP GPLP*(GOTGRT MOV R3,@XML SET XML ADDRESSџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ5*****************************************************7GPL LI R3,>0300 START SCANNING ABOUT >300 GROM*+GPLP LIMI 0 DISABLE INTERRUPTS& MOVB R3,@GRMWA SET HIGH BYTE SWPB R3$ MOVB R3,@GRMWA SET LO BYTEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ* FILE IS > G P L L N K <4GRMWA EQU >9C02 GROM WRITE ADDRESS REGISTER1GRMRD EQU >9800 GROM READ DATA REGISTER%XML EQU >836E TEMP ADDRESS5*****************************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ: DATA >2418,>E424,>24D8,>2424 9 VERT/LEFT INT; DATA >2418,>2724,>241B,>2424 A VERT/RIGHT INT%*************************************%* SPRITE DEFINITIONS *%************************************* EVENџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ0 LIMI 2 ENABLE INTERRUPTS AGAIN) RT RETURN TO CALLER&**************************************&* THIS IS THE SUBROUTINE CODE TO *&* REPLACE GPLLNK. REGISTERS 0 AND 1 *&* OF YOUR CALLING WORKSPACE ARE *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ SWPB R3 RESTORE*' CLR R4 CLEAR REGISTER+ MOVB @GRMRD,R4 GET DATA FROM GROM CI R4,>0F00 >0F?- JNE INCR NO, SO TRY NEXT BYTE5 MOVB @GRMRD,R4 GOT THE >0F, SO NEED THE >F0џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ5* START SCANNING FOR A >0FF0 IN GROM FOR XML RETURN *5* THIS FIRST PIECE OF CODE MUST BE EXECUTED BEFORE *5* ANY CALLS TO @GPLLNK CAN BE MADE. YOU ONLY HAVE TO*5* EXECUTE THIS TOP CODE, ONCE! *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ SPRITE EQU $#MMANR DATA >1E75,>7F30,>3073,>7F1E#MMANL DATA >78AE,>FE0C,>0CCE,>FE78#MMANU DATA >0066,>E5C7,>C5FF,>7E66#MMAND DATA >667E,>FFA3,>E3A7,>6600*#TELEP1 DATA >FF81,>BD99,>9999,>81FF#TELEP2 DATA >FFFF,>C3E7,>E7E7,>E7FF*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ&* ALTERED. SO IS >8300 CPU RAM. *&************************************** JPLLNK LIMI 03 MOVB @>8373,R1 FETCH GPL SUBSTACK POINTER' SRL R1,8 MAKE IT A WORD' AI R1,>8302 ADD PAD OFFSETџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/ RT RETURN TO MAIN PROGRAMџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ3 MOVB R0,@GRMWA SET UP GPL PROGRAM COUNTER1 SWPB R0 SENDING HIGH BYTE FIRST. MOVB R0,@GRMWA FOLLOWED BY LOW BYTE3 LI R0,GPLRTN GET DESIRED RETURN ADDRESSџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ*#HOONOG DATA >3C5A,>7E3C,>3C3E,>3070# DATA >3C5A,>7E3C,>3C3C,>3E70# DATA >3C5A,>7E3C,>3C3C,>7C0E# DATA >3C5A,>7E3C,>3C7C,>0C0E*#HOONOH DATA >995A,>3C18,>1824,>42C3# DATA >1818,>FF18,>1824,>2466џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# DATA >183C,>183C,>FF3C,>780E*#HOONOD DATA >7EFF,>DBFF,>A581,>DB7E# DATA >7EFF,>DBFF,>A5DB,>FF7E# DATA >7EFF,>DBFF,>FFFF,>FF7E# DATA >7EFF,>DBFF,>8181,>817E*#HOONOE DATA >3C7E,>DBFF,>BD81,>663Cџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* FILE IS >> HOONOS <<%************************************* EVEN HOONOS EQU $*#HOONOA DATA >3C7E,>DBDB,>FF66,>663C# DATA >3C7E,>9999,>FF42,>423C# DATA >3C7E,>9999,>FF42,>423C# DATA >3C7E,>DBFF,>FF66,>7E3C*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ8 MOV R0,@>8300 PUT RETURN ADDRESS IN XML TABLE+* NOTE: THIS ADDRESS MUST ALWAYS BE >8300!!+ LWPI >83E0 LOAD GPL WORKSPACE+ B @>006A BRANCH TO GPL CODE GPLRTN LIMI 2- LWPI MYWS RESTORE MY WORKSPACEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ= MOV @XML,*R1 PUT XML INSTRUCTION ADDRESS ON STACK; SWPB R1 HIGH BYTE CONTAINS OFFSET INTO PAD4 MOVB R1,@>8373 UPDATE GPL SUBSTACK POINTER2 MOV *R11+,R0 GETCH GPL ROUTINE ADDRESSџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# DATA >3C7E,>DBFF,>FF81,>7E3C# DATA >3C7E,>DBE7,>81BD,>7E3C# DATA >3C7E,>DBFF,>FF81,>7E3C*#HOONOF DATA >3C7E,>DD99,>FFD5,>ABD5# DATA >3C7E,>BB99,>FFAB,>D5AB# DATA >3C7E,>99BB,>FFD5,>ABD5# DATA >3C7E,>99DD,>FFAB,>D5ABџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ#HOONOB DATA >3C42,>427E,>183C,>3C3C# DATA >3C66,>667E,>183C,>3C3C# DATA >3C7E,>667E,>183C,>3C3C# DATA >3C7E,>7E7E,>183C,>3C3C*#HOONOC DATA >183C,>18FF,>3C3C,>1E70# DATA >183C,>183C,>FF3C,>780E# DATA >183C,>183C,>3CFF,>1E70џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# DATA >1818,>3C5A,>9918,>183C# DATA >1818,>FF18,>1824,>2466*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ MOVB @H00,@STATUS" BL @JPLLNK GET CHARS DATA >18%*************************************%* ENTRY POINT FOR BACK KEY. CREATE *%* TITLE SCREEN. *%*************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%*************************************%* INITIALIZE TOP 10 SCORE AREAS *%*************************************- LI VDPADD,TOPTEN WHERE IN VDP TO SAVE# LI R3,10 TEN SCORESTTVDPL BL @WRTCL$ DATA 9,ZEROES 6 0'S + ???џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ2 MOVB @H00,@ENGFLG NO ENERGIZER SOUND NEEDED, BL @SNDOFF TURN ALL SOUNDS OFF* LI R0,>80 CLR R2LVDPR MOVB @VDPREG(R2),R0: MOVB @ZEROES,@HISCRS(R2) CLR HIGH SCORE WHILE THEREџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* FILE IS >> INITS <<%*************************************%* PRE-GAME INITIALIZATIONS *%**************************************START LWPI MYWS LOAD MY WORKSPACE1 BL @GPL FETCH GPL RETURN ADDRESS MOVB @H01,@PAUSEFџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%BACK BL @CLEAR CLEAR SCREEN MOVB @H01,@PAUSEF) MOVB @H00,@CHEATF NO CHEATING, YET BL @WRTVCL( DATA CT,32,COLORS LOAD COLOR SETS*, BL @WRTVCL NULLIFY ALL SPRITES DATA SAL,1,HD0* BL @WRTVCLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ! AI VDPADD,9 NEXT POS DEC R3 DONE? JNE TTVDPL%*************************************%* GET LOWER CASE CHAR SET *%************************************* LI VDPADD,PDT+>100 MOV R0,@>834A FACџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ1 BL @VWTRG INITIALIZE VDP REGISTERS& INC R0 NEXT REGISTER* INC R2 NEXT BYTE OF DATA CI R2,7 DONE? JLE LVDPR NOT YET- MOVB @VDPREG+1,@SVVDP1 PRESERVE VDP R1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/ LI R0,INTERR EXTERNAL INT. ROUTINES( MOV R0,@>83C4 LOAD THE VECTOR/ MOVB @H00,@INTFLG START WITH FIRST COLOR* LI R0,>8000 BIT 2 OF MSNYBBLE6 MOVB R0,@>83C2 DISABLE SYSTEM SOUND ROUTINESџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA PDT+>540,01*8,MMANR, BL @WRTVCL CHAIN PATTERNS DATA PDT+>600,11*8,CHAINS%*************************************%* LOAD SPRITE PATTERNS, ETC *%*************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ JMP LDCHP-INCHAL MOVB @H01,@COMPET SET COMPETITION FLAG%*************************************%* LOAD CHARACTER PATTERNS *%*************************************/LDCHP BL @WRTVCL MAZE BORDER CHARSџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ CI R3,'T' T KEY? JEQ INCHAL YES CI R3,>74 t KEY? JEQ INCHAL YES' CI R3,'*' WANT TO CHEAT?' JNE NOUSRC DON'T LET THEM%TRYCHT BL @CLEAR CLEAR SCREENџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ, DATA PDT+>200,8,CPYRIT COPYRIGHT CHAR BL @WRTVCL& DATA 0*32+3,26,CR1 DESIGNED BL @WRTVCL* DATA 10*32+6,20,NAME PUT UP TITLE BL @WRTVCL' DATA 12*32+6,20,NAMESB 2ND TITLE BL @WRTVCLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/ BL @WRTVCL LOAD MUNCHMAN PATTERNS DATA SDL,04*8,SPRITE1 BL @WRTVCL LOAD TELEPORTER PATTERNS DATA SDL+>40,02*8,TELEP1%*************************************%* UNCOMPRESS MAZES TO PERMANENT VDP *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA PDT+>300,23*8,BORDER* BL @WRTVCL MAZE INSIDES DATA PDT+>400,19*8,INSIDE( BL @WRTVCL MISC CHARS DATA PDT+>508,03*8,ENERG11 BL @WRTVCL MUNCHMAN RIGHT CHARџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ$ BL @WRTVCL REMIND THEM DATA 12*32+10,12,CHEATM BL @DELAY DATA 40% JMP BACK AND GO AGAIN%NOUSRC CI R3,'!' EXCLAMATION? JNE LDCHP NO& MOVB @H01,@CHEATF MY CHEAT MODEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+ DATA 16*32+6,20,CR2 COPYRIGHT MSG BL @WRTVCL, DATA 23*32+5,22,BEGIN AND KEY MESSAGE CLR @KEYBRD. MOVB @H00,@COMPET NOT IN CHALLENGE MODE! BL @DEBNCE DEBOUNCE'SCANL BL @GETKYS WAIT FOR A KEYџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%*************************************' MOVB @H01,@MAZEF FOR UNCOMPRESS' BL @UNCOMP SAME FOR RIGHT DATA MAZER,VRMAZE' MOVB @H00,@MAZEF FOR UNCOMPRESS0 BL @UNCOMP UNCOMPRESS MAZES TO VDPџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ*#* TRANSFER HI SCORE FROM CPU TO VDP*& LI VDPADD,1*32+15 START OF HIGH CLR R3 INDEX% LI R4,3 SIX DIGITS/2*TRNHIV MOV @HISCRS(R3),R5 GET 2 DIGITS BL @WRTCL! DATA 2,5*2+MYWS WRITE ITџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+ MOVB @COMPET,R0 IN CHALLENGE MODE?) JEQ MM2 NO. REGULAR GUYS) MOVB @H00,@MMLEFT YES. NO RESERVES JMP MENSET8MM2 MOVB @H02,@MMLEFT TOTAL OF 3 MM LEFT TO PLAY WITH.MENSET MOVB @ZEROES,@SAVDGT FOR SCORE ROUTINEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ MOVB @KVALUS(R10),@HOOTIM: MOVB @KVALUS(R10),@TELTIM TELEPORTER DELAY STATIC0 AB @H06,@TELTIM ALWAYS SLOWER THAN MMAN. SB @H01,@HOOTIM ALWAYS FASTER THAN MM**, MOV @ENGTIM,R3 GET ENERGIZER TIMERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ" MOVB @LEVEL,R10 GET LEVEL SRL R10,8 TO LSB MOV R10,R9 COPY' CI R9,20 PAST LEVEL 20? JL INF20 NO* AI R9,-20 FORCE TO FIRST 20џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' INCT VDPADD TWO CHARS OVER' INCT R3 INDEX OVER TWO DEC R4 DONE? JNE TRNHIV NOT YET#***********************************#* INITS ASSOCIATED WITH NEW LEVEL *#***********************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ8 MOV @EVALUS,@ENGTIM START ENERGIZER TIMER CYCLE** TEXT AT TOP OF SCREEN*/ BL @WRTVCL PUT OUT SCORE MESSAGES DATA 0*32+2,20,YRSCOR BL @WRTVCL DATA 1*32+2,20,HISCOR- BL @SHOWMM SHOW # MEN REMAININGџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' DATA MAZEL,VLMAZE WITH LEFT MAZE%*************************************%* INITIALIZE ANY REDO VARIABLES *%*************************************REDO BL @CLEAR MOVB @H01,@PAUSEF NO INTS# CLR @LEVEL START OVERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/INF20 MOVB @CVALUS(R9),R3 GET COLOR FOR MAZE% MOVB R3,@MAZCOL PUT INTO CPU3 BL @FILLCT FILL COLOR TABLE AS NEEDED7 MOVB @KVALUS(R10),@KEYTIM STATIC MM MOVE VALUE0* MOVB @KVALUS(R10),@KDELAY SET THE DELAYџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ-ADVANC MOVB @H01,@LASTKY NO MOVEMENT TO START) MOVB @H00,@MAZEF LEFT MAZE ALWAYS* MOVB @H08,@ENGLFT 8 ENERGIZERS LEFT& LI R0,390 390 DOTS LEFT MOV R0,@DOTLFT*#* BASED ON LEVEL, SET CPU VARIABLES*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ1 CI R3,120 TWO SECONDS BOTTOM LIMIT" JLE FSCN AT BOTTOM! AI R3,-5 DECREASE" MOV R3,@ENGTIM AND RESET** GET NEW HOONO PATTERN*" MOVB @LEVEL,WLOC GET LEVEL SRL WLOC,8 TO LSBџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* MOVB @H00,@MONEAT NO MONSTERS EATEN& BL @SHOWMZ SHOW THE MAZE) BL @DRWBOX DRAW SCORE BOXES. BL @SPRINI PUT SPRITES ON SCREEN* LI R0,MONFLG CLEAR THESE FLAGS( LI R1,16/2 SIXTEEN OF THEMџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA 0*32+24,2,4*2+MYWS'***************************************'* INITS ASSOC. WITH THE SAME LEVEL *'***************************************(SAMLVL BL @CLEARM CLEAR MAZE AREA3 MOVB @TELTIM,@TELCNT SET THE DELAY COUNTERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA SNAPR,24*32,VRMAZE*"SHOWLV MOVB @LEVEL,R4 GET LEVEL SRL R4,8 TO LSB. INC R4 ADD 1 FOR ZERO OFFSET+ CLR R3 PREPARE FOR DIVIDE LI R5,10 DIVISORџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ% ANDI WLOC,7 8 HOONO PATS SLA WLOC,5 *32+ AI WLOC,HOONOS POINTS TO RIGHT ON' LI VDPADD,SDL+>20 WHERE TO WRITE LI WCOUNT,32 4*8* BL @WRITE NEW PATTERN THEREџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ CLR R2!CLRMNC MOV R2,*R0+ NOW ZERO DEC R1 JNE CLRMNC*, BL @SAVEHN SAVE HOONO POSITION) MOVB @H00,@PAUSEF ALLOW INTERRUPTS*1 BL @WRTVCL TELL THEM TO PRESS A KEY DATA 23*32+9,14,PRSKEYџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ- MOVB @HOOTIM,@HOODLY SET HOONO DELAY MOVB @KEYTIM,@KDELAY- MOV @TELPLI,@TELSVL GET LEFT TELE Y,X% MOV @TELPRI,@TELSVR SAME HERE2 CLR @TELDRL INSURE LEGAL TEL MOVEMENT& MOVB @H00,@ENGFLG NOT ENERGIZEDџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ$ DIV R5,R3 ANS=3 REM=4# AI R3,>30 ASCII BIAS# AI R4,>30 ASCII BIAS SWPB R3 TO MSB0 MOVB R3,R4 HAVE 2 DIGIT ASCII IN 4% BL @WRTVCL WRITE TO VDPџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&**************************************&* FORMAT THE SCREEN WITH CHARACTERS *&**************************************3FSCN BL @VDPVDP TAKE SNAPSHOT OF LEFT MAZE DATA SNAPL,24*32,VLMAZE, BL @VDPVDP SAME FOR RIGHT MAZEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ JNE CEP NOT YET& MOVB @H06,@HOOPDL RESET PATTERN2 LI VDPADD,SAL+>04+2 PATTERN OF FIRST MON* LI R4,4 4 HOONOS TO CHECK CLR R5 INDEX(CHOONL MOVB @MONPAT(R5),R3 GET PATTERNџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ& SB @H01,@BEGDLY COUNT IT DOWN&**************************************&* MMAN # SECS IN NEW MAZE COUNTER *&**************************************&MMSECC MOVB @MAZSEC,R0 ALREADY DOWN? JEQ CHOONP& SB @H01,@MAZSEC COUNT IT DOWNџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ)INTERR MOVB @H01,@INTFLG NOW IN INTERRUPT. MOV R13,@GPLR13 SAVE RETURN REGISTERS MOV R14,@GPLR14 MOV R15,@GPLR15** MOVB @PAUSEF,R0 IN PAUSE ROUTINE?) JEQ GOINTS NO. GO INTO INTSџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ)PRESSK BL @GETKYS WAIT FOR ANY KEY. BL @WRTCL AND ERASE THE MESSAGE DATA 14,SPACES MOVB @H120,@BEGDLY џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ SRL R3,8 TO LSB! CI R3,>87 AT LAST?$ JNE CHOONI NOT AT LAST+ LI R3,>84 LOAD FIRST PATTERN% JMP CHOONO AND WRITE IT CHOONI INC R3CHOONO SWPB R3( BL @WRTCL REWRITE PATTERNџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ: JNE CHOONP ONCE MMAN HAS BEEN MAZE 1 SECOND,8 CLR @MONSEC ALLOW FIRST TWO HOONOS TO ENTER***************************** CHANGE MONSTER PATTERN *****************************1CHOONP SB @H01,@HOOPDL TIME TO CHANGE PATTERNS?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ- B @INTSND YES SO DO SOUND ONLY&**************************************&* MONSTER ESCAPE FROM BOX DELAY COUNT*&**************************************)GOINTS MOVB @BEGDLY,R0 HAS IT BEEN SET?) JEQ MMSECC NO, OR IT'S OVERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* FILE IS >> INTERRUPT <<'***************************************'* EXTERNAL INTERRUPT ROUTINES. DO NOT *'* DESTROY R13, R14, OR R15. ALSO, I *'* AM IN THE GPL WORKSPACE. *'***************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' DATA 1,3*2+GPLWS FROM R3LSB( C *VDPADD+,*VDPADD+ NEXT SPRITE* MOVB R3,@MONPAT(R5) RESAVE IN CPU INC R5 DEC R4 DONE? JNE CHOONL NOT YET****************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' JEQ TEL2 YES, PATTERN 1) DEC R3 CHG TO PATTERN 1" JMP TEL AND WRITE)TEL2 INC R3 CHG TO PATTERN 2TEL SWPB R3 TO MSB$ BL @WRTVCL REWRITE ITџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ1 JMP TELCHG CHANGE TELPORTER PATTERN%MAKBIG BL @WRTVCL BIG PATTERN DATA >A1*8+PDT,8,ENERG1! MOVB @H01,@ENGPAT SET FLAG****************************** CHANGE TELEPORTER PATTERN ******************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA 1,3*2+GPLWS FROM R3% C *VDPADD+,*VDPADD+ NEXT CB DEC R4 DONE? JNE MFLSHX NOT YET+ MOVB R3,@ENGCOL RESET COLOR IN CPU* * PREVENT MONSTERS FROM ESCAPING*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ#MFLSHL MOVB @ENGCOL,R3 READ COLOR SRL R3,8 TO LSB#TRYDB CI R3,4 DARK BLUE?& JNE TRYLB NO. TRY LIGHT( INC R3 MAKE LIGHT BLUE# JMP MFLSHI AND CHANGEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA SAL+>16,1,3*2+GPLWS' MOVB R3,@TELPAT REWRITE TO CPU ******************************** * CONTROL ENERGIZED INTERVAL * *********************************CTLENG MOVB @ENGFLG,R0 ARE WE ENERGIZED?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ(TELCHG SB @H01,@TELDLY TIME TO CHANGE? JNE CTLENG NOT YET$ MOVB @H0A,@TELDLY RESET DELAY) MOVB @TELPAT,R3 READ HIS PATTERN SRL R3,8 TO LSB# CI R3,>88 PATTERN 1?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* CHANGE ENERGIZER PATTERN *****************************1CEP MOVB @ENGPAT,R3 READ THE CURRENT PATTERN' JEQ MAKBIG ITS SMALL, NOW'MAKSML BL @WRTVCL SMALL PATTERN DATA >A1*8+PDT,8,ENERG2! MOVB @H00,@ENGPAT SET FLAGџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ$TRYLB CI R3,5 LIGHT BLUE?% JNE TRYCY NO. TRY CYAN" INCT R3 MAKE CYAN JMP MFLSHI.TRYCY LI R3,4 FORCE DARK BLUE AGAINMFLSHI SWPB R3&MFLSHX BL @WRTCL REWRITE COLORџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ: JEQ RHOONC NO. ENSURE HOONOS ARE ORIG COLORS' DEC @ENGCNT ONE LESS COUNT& JEQ ENGOVR CYCLE IS DONE** KEEP MONSTERS FLASHING*2 LI VDPADD,SAL+>04+3 COLOR BYTE OF FIRST# LI R4,4 4 MONSTERSџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' MOVB @HFF,@BEGDLY WE DO NOT WANT$ MOV @ENGCNT,R0 GET COUNTER) CI R0,60 ONE SECOND LEFT?' JNE NORED NO. KEEP GOING' LI R3,>6000 RED MAZE COLOR- BL @FILLCT FILL THE COLOR TABLE*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ4 MOV @SNDADR(R2),R3 GET THE SOUND LIST ADDRESS8 JNE GOTADR NOT ZERO, SO EXECUTE SOME SOUND"NEXTSD INC R1 NEXT BYTE" INCT R2 NEXT WORD CI R1,6 DONE? JNE ISLOOP NOT YETџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+ SB @H01,@MONSEC(R5) COUNT IT DOWN$NOENCD C *R0+,*R0+ NEXT SAL CB$ C *R3+,*R3+ NEXT ROM CB# INC R5 NEXT INDEX DEC R4 DONE? JNE RSTMCL NOT YETџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/ SB @HNSLOW,@HOOTIM MONSTERS FASTER NOW'***************************************'* RESTORE ORIGINAL HOONO COLORS *'***************************************&RHOONC LI VDPADD,SAL+>04+3 FIRST CB- LI R3,SALINL+>04+3 ORG COLOR BYTESџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ:NORED MOV @SNDADR+>04,R0 IS THE ENERGIZER HYPE GOING?) JNE INTSND YES, SO CONTINUE BL @SOUND/ DATA 3,INESND CREATE THE SOUND AGAIN JMP INTSND*&ENGOVR MOVB @H00,@ENGFLG CYCLE IS DONEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# JMP ISRTRN DONE . . .*+GOTADR MOVB @SNDCNT(R1),R5 IS COUNTER ZERO?7 JEQ NEWSND YES, SO LET'S MAKE A NEW SOUND1 SB @H01,@SNDCNT(R1) NO, SO DECREMENT TIMER/ JMP NEXTSD AND TRY THE NEXT SOUNDџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'***************************************'* SUBROUTINE TO DRIVE SOUND CHIP *'***************************************#INTSND CLR R1 BYTE INDEX#ISLOOP MOV R1,R2 WORD INDEX SLA R2,1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ% LI R4,4 4 MONS TO DO# CLR R5 BYTE INDEX.RSTMCL MOV R3,WLOC ADDRESS TO WRITE FROM LI WCOUNT,1 1 BYTE BL @WRITE3 MOVB @MONSEC(R5),R6 COUNTDOWN ENTRY SECS? JEQ NOENCD NOџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* MOVB @H00,@MONEAT NO MONSTERS EATEN0 MOVB @H00,@BEGDLY MONSTERS MAY NOW ESCAPE+ MOVB @MAZCOL,R3 RESTORE MAZE COLOR BL @FILLCT DO IT( BL @DRWBOX CLEAR OUT BOXES. AB @MMFAST,@KEYTIM SLOW HIM BACK DOWNџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ INPUT MOV R11,@TEMPRT KEEP IT& SB @H01,@KDELAY TIME TO MOVE? JEQ MOVTIM YES$ B @INPUTR NO, SO EXIT(MOVTIM MOVB @KEYTIM,@KDELAY RESET DELAY,INPUTM CLR @KEYBRD SCAN WHOLE KEYBOARDџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* FILE IS >> LEVEL0SUBS <<*==============================* ALL LEVEL ZEROS RETURN IS R12*==============================************************** KEY JUMP TABLE **************************WHERE DATA DOWN 0 DATA INPUTR 1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/ JMP NEXTSD AND TRY THE NEXT SOUND ISRTRN EQU $. MOV @GPLR13,R13 RST RETURN REGISTERS MOV @GPLR14,R14 MOV @GPLR15,R15) MOVB @H00,@INTFLG NO LONGER IN INT5 LWPI INTWS RESTORE INTERRUPT WORK SPACEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ:NEWSND MOVB *R3+,R6 GET THE LENGTH BYTE FOR THIS LIST& SRL R6,8 ADJUST TO LSB*MSBL MOVB *R3+,@>8400 MOVE A SOUND BYTE- DEC R6 DONE WITH ALL BYTES?" JNE MSBL NOT QUITEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' MOVB @HFF,@TEMPKY TEMP KEY VALUE$ MOVB @H01,@KEYBRD SCAN SIDE 1"INPUTL BL @SCANKY GET INPUT CLR R3 PREPARE! MOVB @KEY,R3 SAVE KEY% CI R3,>FF00 KEY PRESSED?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA LEFT 2 DATA RIGHT 3 DATA INPUTR 4 DATA UP 5&**************************************&* INPUT SUBROUTINE. RETURN IS IN R12 *&**************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ1 RTWP AND RETURN TO MY PROGRAMџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ. MOVB *R3+,@SNDCNT(R1) GET DURATION BYTE2 JNE SNDGO NOT ZERO, SO DO THE SOUND** CLR @SNDADR(R2) NO LONGER A SOUND( JMP NEXTSD SO TRY NEXT ONE*2SNDGO MOV R3,@SNDADR(R2) STORE SOUND LIST POINTERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ. JEQ CHKJOY NO, SO CHECK JOYSTICK$************************************$* DETERMINE WHAT KEY AND BRANCH *$************************************%CHKKEY CI R3,>0500 PAST ARROWS?( JH TRYPAU CHECK PAUSE KEYџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ#***********************************!LEFTJ LI R3,>0200 LEFT KEY JMP FRMJOY"RIGHTJ LI R3,>0300 RIGHT KEY JMP FRMJOY!DOWNJ CLR R3 DOWN KEY JMP FRMJOYUPJ LI R3,>0500 UP KEY JMP FRMJOY*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' BL @PAUSES PAUSE MUNCHMAN" BL @WRTVCL ERASE MSG DATA 23*32+14,9,SPACES+ JMP INPUTM AND SCAN LEGAL KEY*&CHKJOY MOV @JOYY,@JOYY DID JOY MOVE?! JEQ BRDINC NOT HEREџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ4TABLEW DATA 1*256,0,-1,1,0,-1*256 WHERE TO GO5TABLEP DATA >8300,0,>8100,>8000,0,>8200 PATTERNS******************************** UP SUBCODE. NO RETURN LINK ********************************+UP CB @LASTKY,@H00 WAS LAST KEY DOWN?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+ MOV @WHERE(R3),R10 GET ADDR TO GO TO B *R10 HIT IT!#***********************************#* RETURN POINT FOR MOVEMENT ROUTS *#***********************************,INPUTR MOV @TEMPRT,R12 RESTORE RETURN LINKџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&BRDINC AB @H01,@KEYBRD NEXT KEYBOARD, CB @KEYBRD,@H03 PAST ALL KEYBOARDS? JL INPUTL NOT YET*'* ALL KEYS HAVE BEEN SCANNED. DETERMINE* WHAT TO DO BASED UPON KEYS.*%KEYHIT CB @TEMPKY,@HFF ANY KEY HIT?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* MOVB @JOYY,@JOYY CHECK FOR UP DOWN JGT UPJ JLT DOWNJ*0 MOVB @JOYX,@JOYX CHECK FOR SIDE MOVEMENT JGT RIGHTJ JLT LEFTJ#***********************************#* JOYSTICK EQUATES FOR MOVEMENT *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ!FRMJOY MOVB R3,@TEMPKY SAVE KEY& JMP BRDINC AND TRY AGAIN*#TRYPAU CI R3,>0B00 PAUSE KEY?' JNE BRDINC NO, SCAN AGAIN*& BL @WRTVCL PAUSE MESSAGE DATA 23*32+14,9,PAUSEMџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ) B *R12 RETURN TO CALLER%*************************************%* TABLES NEEDED FOR MERGED ROUTINES *%*************************************;TABLEO DATA >0800,0,>0100,>0107,0,>0100 UL CORN OFFSETџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ JNE HITKEY YES.USELST MOVB @LASTKY,@TEMPKY USE PREVIOUS KEY)HITKEY MOVB @TEMPKY,R3 GET TEMP KEY HIT SRL R3,8& SLA R3,1 WORD BOUNDARY( MOV R3,R12 SAVE WORD INDEXџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ& JNE UPM LAST NOT DOWN$ JMP LSTD IT WAS DOWN)UPM CB @LASTKY,@H05 WAS LAST KEY UP?( JNE LSTND LAST KEY WAS UP JMP LSTD******************************** DOWN CODE. NO RETURN LINK *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* MOVB @TEMPKY,@LASTKY NEW LAST KEY! JMP UPEXIT AND EXIT* LSTND MOV @MMANY,R3 GET POS- AI R3,>0100 ADJUST TO CHAR BOUND+ ANDI R3,>0707 AT EVEN CHR BOUND?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'* HE CAN REVERSE THAT DIRECTION *'***************************************%LSTD MOV @TABLEO(R12),R9 PREPARE% MOV @TABLEW(R12),R10 PREPARE0 BL @CHKBND CHECK IF CAN MOVE THERE( MOV R10,R10 CAN HE MOVE UP?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+LEFTM CB @LASTKY,@H02 WAS LAST KEY LEFT? JNE LSTND NO JMP LSTD ******************************** * RIGHT CODE. NO RETURN LINK * ********************************+RIGHT CB @LASTKY,@H02 WAS LAST KEY LEFT?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ*******************************)DOWN CB @LASTKY,@H05 WAS LAST KEY UP?$ JNE DOWNM LAST NOT UP( JMP LSTD LAST KEY WAS UP+DOWNM CB @LASTKY,@H00 WAS LAST KEY DOWN? JNE LSTND NO JMP LSTDџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ7 JNE U1 NO, SO CONTINUE SAME DIRECTION*% MOV @TABLEO(R12),R9 PREPARE% MOV @TABLEW(R12),R10 PREPARE* BL @CHKBND CHECK THE UP CHAR. MOV R10,R10 CAN HE MOVE THAT WAY?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ JEQ UPEXIT NO* LSTD1 MOV @MMANY,R3 GET POS! A @TABLEW(R12),R3 TO WHERE& MOV R3,@MMANY RESAVE TO CPU* MOV @TABLEP(R12),R4 PATTERN BYTE% BL @WRTVCL AND WRITE IT DATA SAL,3,3*2+MYWSџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ$ JNE RIGHTM LAST NOT UP* JMP LSTD LAST KEY WAS LEFT,RIGHTM CB @LASTKY,@H03 WAS LAST KEY RIGHT? JNE LSTND NO'***************************************'* LAST KEY WAS OPPOSITE OF NOW. ASSUME*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ!*********************************!* LEFT SUBCODE. NO RETURN LINK *!*********************************+LEFT CB @LASTKY,@H03 WAS LAST KEY RIGHT& JNE LEFTM LAST NOT DOWN+ JMP LSTD LAST KEY WAS RIGHTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/GOTOM MOVB @H01,@PAUSEF DON'T ALLOW INTERRUPTS* MOVB @ENGFLG,R0 ARE WE ENERGIZED? JEQ RNOENG NO BL @SNDOFF9 MOVB @MAZCOL,R3 CHANGE MAZE BACK TO NORMAL COLOR BL @FILLCTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+ MOVB @H00,@HOONFR SAY FROM LEFT MAZE' JMP GOTOM AND GO TO MAZE3GTLM CI R3,2 HIT COLUMN 2 OF RIGHT MAZE" JNE NNSWP NO. EXIT., MOVB @H01,@HOONFR SAY FROM RIGHT MAZEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&MMRX BYTE 3 RIGHT ENTRY X&MMLX BYTE 30*8+7 LEFT ENTRY X7MMTELL BYTE 09*8-1,16*8 IF MMAN HITS TEL IN RIGHT MAZE7MMTELR BYTE 09*8-1,15*8 IF MMAN HITS TEL IN LEFT MAZE*$SWAPMZ MOV R11,R12 LEVEL 0 SUBџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ( JEQ U1 NO, SO CONTINUE) JMP LSTD1 YES, SO MOVE HIM3U1 B @USELST NO, KEEP THE WAY THEY WERE** AT ODD PIXEL BOUNDARY. CAN'T* POSSIBLY MOVE UP.**UPEXIT B @INPUTR EXIT THIS ROUTINEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ4 AB @MMFAST,@KEYTIM SET DELAY BACK TO NORMAL+ SB @HNSLOW,@HOOTIM MONSTERS SLOWER0 MOVB @H00,@ENGFLG AND NO LONGER ENERGIZED* MOVB @H00,@MONEAT NO MONSTERS EATEN*RNOENG BL @SAVEMZ SAVE CURRENT MAZEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' JMP GOTOM AND GO TO MAZE*4NNSWP B @SWMZEX NEITHER. EXIT THIS ROUTINE.********************** COMMON CODE USED ** TO GET SPACE BACK **===================** CREATE RIGHT MAZE **********************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ% MOV @MMANY,R3 GET POSITION( ANDI R3,>00FF HAVE X POSITION*%* THIS IS THE ENTRY POINT IF THE MMAN* HIT THE TELEPORTER.*3FRMTEL CI R3,31*8 HIT LAST COLUMN LEFT MAZE?. JNE GTLM NO. CHECK LEFTHT MAZEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&**************************************&* SWAPMZ. IF MUNCHMAN HAS GONE OUT THE%* DOOR, SAVE PICTURE OF EXISTING MAZE&* AND RESTORE PICTURE OF OTHER MAZE. *&* RETURN IN R12 *&**************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ< MOVB @MAZSEC,R0 WAS IN IN THE FORMER MAZE 1 SECOND?4 JNE AN1SEC NO, SO DON'T SAVE HOONO POS*5 BL @SAVEHN SAVE HOONO POSITIONS FOR NOW2 LI R0,>0303 SAY THEIR SWAPPED FOR NOW MOV R0,@MONFLGџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/ MOV @TELPRI,@TELPY RESET TELE TO HOME( MOVB @H00,@EATTEL RESET THIS FLAG. JMP MMNIMM MMAN NOW IN LEFT MAZE(DOORRE MOVB @MMRX,@MMANX NOW ENTRY X POS4 MOV @TELSVR,@TELPY UPDATE CPU WITH NEW LOC JMP MMNIMMџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ1 B @LN1SEC RIGHT MAZE GOING TO LEFT*5RN1SEC MOV @TELPY,@TELSVL GET TELEPORTER POSITION NOW*. BL @HIDSPR PUT SPRITES OFFSCREEN*% BL @CLEARM CLEAR SCREEN' MOVB @H01,@MAZEF NOW RIGHT MAZEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ$QUICK MOVB @MAZSEC,R0 QUICK SWAP? JEQ NOLQCK NO' BL @RSTRHN RESTORE HOONOS*== ADDED TO FIX BUG MOVB @H00,@MAZSEC CLR @MONSEC CLR @MONSEC+28 MOVB @H00,@BEGDLY IF ANY MON IN BOX, LET COME OUTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/ MOV @TELPLI,@TELPY RESET TELE TO HOME( MOVB @H00,@EATTEL RESET THIS FLAG. JMP MMNILM MMAN NOW IN LEFT MAZE(DOORLE MOVB @MMLX,@MMANX NOW ENTRY X POS' MOV @TELSVL,@TELPY UPDATE CPU MMNIMM EQU $џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ********************** CREATE LEFT MAZE **********************8LN1SEC MOV @TELPY,@TELSVR GET TELEPORTER RIGHT POSIT NOW*. BL @HIDSPR PUT SPRITES OFFSCREEN*% BL @CLEARM CLEAR SCREEN' MOVB @H00,@MAZEF NOW LEFT MAZEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+ BL @SHOWMZ RESTORE RIGHT MAZE# BL @DRWBOX DRAW BOXES*; MOVB @EATTEL,R1 DID HE HIT TELEPORTER TO GET HERE? JEQ DOORRE NO.+ MOV @MMTELR,@MMANY RESET POSITIONџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ MOV R0,@MONFLG+2*%* ALL THE CODE ABOVE WAS USED IN BOTH%* ROUTINES. I MERGED THEM TO GET SOME&* SPACE BACK. HERE IS WHERE THEY BREAK * OFF AGAIN.*-AN1SEC MOVB @HOONFR,R1 WHAT MAZE WAS HE IN?1 JEQ RN1SEC LEFT MAZE GOING TO RIGHTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ3MMNILM BL @WRTVCL WRITE NEW MUNCHMAN POSITON& DATA SAL,2,MMANY TO LEFT MAZE3 BL @WRTVCL RESTORE TELEPORTER TO LEFT DATA SAL+>14,2,TELPY*$* IF JUMPED BACK < 1 SECOND, RESTORE* MONSTER TO ORIGINAL POSITIONS*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+ BL @SHOWMZ RESTORE LEFT MAZE# BL @DRWBOX DRAW BOXES*; MOVB @EATTEL,R1 DID HE HIT TELEPORTER TO GET HERE? JEQ DOORLE NO.+ MOV @MMTELL,@MMANY RESET POSITIONџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ7 MOVB @H01,@HOODLY ALLOW MONS TO MOVE IMMEDIATELY*== END OF ADD! JMP SWLEXT AND EXIT*!TMRS DATA 54*256+54,110*256+110*00FF HAVE X POSџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&**************************************&* MOVTEL. THIS ROUTINE WILL MOVE THE *&* TELEPORTER AROUND THE MAZES. RETURN*&* IS IN R12. *&* *&* 0=UP 1=DOWN 2=LEFT 3=RIGHT *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ3 MOVB @H60,@MAZSEC TIMER HOW LONG IN NEW MAZE*!SWLEXT EQU $ AND EXIT*1SWMZEX MOVB @H00,@PAUSEF NOW ALLOW COUNTERS TO GO' B *R12 RETURN TO MAIN&**************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+NORGTD ANDI R3,>0707 AT EVEN CHR BOUND?4 JEQ TELRND MAY WANT TO MOVE THAT WAY!!& B @TELSAM TELE SAME DIR** 10% CHANCE HE WILL CHANGE DIR**TELRND BL @RANDNO GET RANDOM NUMBER ANDI R10,>000C MASKџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ2 CI R5,30*8 IN THE DOOR OF LEFT MAZE?) JL NOLFTD NOT IN LEFT DOOR-INLFTD LI R5,2*256 FORCE LEFT DIRECTION. MOVB R5,@TELDRL PUT IN LAST DIRECTION% B @TELIM AND MOVE HIMџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&**************************************$MOVTEL MOV R11,R12 SAVE RETURN% SB @H01,@TELCNT CAN HE MOVE? JEQ TELMOV YES.$ B @MVTLEX NO, SO EXIT)TELMOV MOVB @TELTIM,@TELCNT RESET DELAYџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&*============================ **:DIROFS DATA -1*256,1*256,-1,1 MOVEMENT OFFSETS FOR SPRITES9DIRADJ DATA 0,7*256,0,7 DIRECTION PIXEL ADJUSTMENTS*&*============================ *&* *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ& JEQ RNDTEL NO. TRY AGAIN, JMP NEWTLD YES. SAVE DIRECTION*(* TELEPORTER STAYS ON THE SAME DIRECTION*$TELSAM MOVB @MAZEF,R5 WHICH MAZE?* JEQ TELILM TELE IN LEFT MAZEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%* KEEP TRYING RANDOM DIRECTIONS UNTIL* A DIRECTION IS FOUND*'RNDTEL BL @RANDNO GET RANDOM DIR ANDI R10,>0300 MASK' MOV R10,R8 SAVE DIRECTION SRL R10,8 GOT IT' SLA R10,1 FOR WORD INDEXџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ(*TELRIM MOV R5,R8 SAVE DIRECTION* SRL R5,8 TO LSB'* SLA R5,1 FOR WORD INDEX-* MOV @DIRADJ(R5),R9 ADJUST UL CORNER.* MOV @DIROFS(R5),R10 WHERE WANTS TO GO' LI VDPADD,SAL+>14 TELEPORTER SALџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ SRL R10,2 0-F# CI R10,1 1/4 CHANCE, JEQ RNDTEL GET A NEW DIRECTION*%* SINCE HE WON'T GET A NEW DIRECTION,&* TRY GOING THE SAME WAY. IF HE CAN'T,* GET A RANDOM DIRECTION*$TRYSAM MOVB @MAZEF,R5 WHICH MAZE?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ1TELIRM MOVB @TELDRR,R5 GET RIGHT MAZE DIRECTION% JMP TELIM AND CONTINUE0TELILM MOVB @TELDRL,R5 GET LEFT MAZE DIRECTIONTELIM MOV R5,R8 SRL R5,8 TO LSB' SLA R5,1 FOR WORD INDEXџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ. MOV @DIRADJ(R10),R9 ADJUST UL CORNER/ MOV @DIROFS(R10),R10 WHERE WANTS TO GO' LI VDPADD,SAL+>14 TELEPORTER SAL- BL @TRYSPR TRY TO MOVE THAT WAY0 MOV R10,R10 COULD HE MOVE THAT WAY?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ- BL @TRYSPR TRY TO MOVE THAT WAY0 MOV R10,R10 COULD HE MOVE THAT WAY?3 JEQ RNDTEL NO. GET A RANDOM DIRECTION2 B @MVTLEX YES, SO EXIT THIS ROUTINE*** TEL COULD NOT MOVE IN DIRECTION DESIRED.џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* JEQ TELRLM TELE IN LEFT MAZE1TELRRM MOVB @TELDRR,R5 GET RIGHT MAZE DIRECTION% JMP TELRIM AND CONTINUE0TELRLM MOVB @TELDRL,R5 GET LEFT MAZE DIRECTION/TELRIM BL @ALLRIM SHARED CODE WITH HOONOџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ8 A @DIROFS(R5),R4 ADJUST HIS POSITION ACCORDINGLY$ MOV R4,@TELPY RESTORE CPU% BL @WRTVCL AND MOVE HIM DATA SAL+>14,2,TELPY JMP MVTLEX EXIT*$* IF A NEW DIRECTION WAS CHOSEN, PUTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ9 ŠB0BP№B B B B B B B B B B BBBBBBBBBBB‡BšF 9 КBЈBКB‰BšBІBКB‹BšBЄBКBBšBЂBКBŸBПBЬBчBђBЬBчBBЬBчF 9 ъBпBџBРBаBBРBбBРBвBBпBТBдBBТBдBТBдBBпB€BB B€F їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ NEWTDS EQU $*)MVTLEX B *R12 RETURN TO CALLERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ9ЃZB__B__BZZBZZBZBB~B BBB BўBњBњBўBB@_B__B__B^мB№BBB^]B[WF 9ЃŠB_@BBџBџџBџBџB BBBBўBњB B BџBџBBBњњBњњBњBўB ћBћћF 9ЃКBћBџBќBњіBўBќB_пBџBџBп_BџBџBџBџBB@_B_@BBB?B@@BBќBњіF їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ9Ђ:BPRBESBS BT BFOBR BTOBURBNABMEBNTBPRBESBS BANBY BKEBY!B 1B25B 2B50B 5B00F 9ЂjB10B00B* BPABUSBE B* B B B B B B B B B B B IBNIBTIBALBS?B _B__F 9ЂšBCOBRRBECBT B(YB/NB)?B MBUNBCHB AB BBUNBCHB! B HBOOBNOBS BBEBWABREB! BITF їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ9ЁB B€BBB€BB€BBB€BB€BBB€BB€BBB€BB€BBF 9ЁJB€BB€BBB€BBŸBB,BBB0BB4BBB6BB8B BB:B F 9ЁzBB B?BBŸBMB UB NB CB HB MB AB NB B IBITBHEB MBONBSTBERF їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ 9 B`BЉdBЊBBB BBBBBBЉdB MBUNBCHBMABN BIIBBBF 9 *BB B B BB B9F 9Љ*B0pBpBBи BЂBƒ„B BПŽB€B‚B‚BBєBи B ?BƒдBB F 9ЉКBB B BП,B BЂB B BBјBB BШBƒJBи B $Bƒ|B BВ,BB BОBи B %F 9ЉъBƒИBи B $BƒB BП*B€B BЂќB BП*BBB :B BП*B BBЃB BП*BBBЁГF їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ9­zBBŠB BП*BBBƒBBPBB­NBBBРCBBB BП0B#BB BОЪBBF 9­ЊBєBР BƒšB§B BОкBB кB BП*BBB 9B BОvB BОЪBBа Bƒ"BB BЛшBа F 9­кBƒBBx B %Bƒ"B BНєB BОЪBB`BЌBBBB/B BЏŠBРAB B BП*B/BF їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ9ЏКB BB‚FBBB‚‡BBBBBСB_BУЫBрBƒжB BОњB˜ BƒuB ;BјBарBƒuB ƒF 9ЏъB_BУЫB BОњB˜ BƒuB ;BњB_Bи B %Bƒ BШ BƒКBШBƒМBШBƒОBа BƒИBB`BБ–Bа F 9АBƒГBBx B %BƒГBа BƒЖBBx B %BƒЖBBрBƒLBx B %BƒДBBи B *BƒДBBBF їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ9ЎšBЂšB BЏвBƒBYBBƒBNBЭBїB BП*B WBBƒ&BрBƒ,B B BB BB B F 9ЎЪBЏŠBРABBРB BП,BBƒB BB BП,BBƒ)BРB BП,BBƒ B BB BП,BF 9ЎњBƒ&B Bƒ,B#B B$B B BоBР`Bƒ,BгB BОB BП*BBBЂBBBB B F їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ9ВŠBƒ.BрBƒtBи B ;Bƒ0Bи B %BƒtB BОњBУBарBƒuBƒBџBBƒBBBиBƒ0B)BƒF 9ВКB B&B BП*BюB BЂnB BНœB BП*BюB BЂwBкBШ BƒvBƒvBBи BƒvBƒvBB F 9ВъBи BƒwBƒwBBBBBмBBBйBУBзBBBдBИ B %BƒtB˜ BƒtB 'BТB˜ F їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ9БjBBB MBBBХBРCBBB BП0BбЅBƒLBBy`B %BƒLBŒ0BŒѓB…BB№BСBРF 9БšB BРтBƒBBBТBBBіBBбaBƒœBBx`B %BƒœBѓBбГB †Bи3B„BBќBиsF 9БЪBƒœBBтBƒBчBШƒBƒBфBУ`BƒКBУ BƒМBУрBƒОBи B $Bƒ BрBƒРB€BBBBF їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ9АJBBХBахBƒ\B ƒBƒB‡BBB„BBƒBУB BП,BBƒцBŒ0BйCBƒ\B…BBыBарF 9АzBƒЙB B BП*B BBЄŽBи B $BƒЙBB BП*B BBЄvBи B %BƒЙBx B %Bƒ5BBи F 9АЊB .Bƒ5BарBƒB ƒBƒBˆBBBBƒBУB BП*BBBƒцBиBƒBа Bƒ7BIB Bƒ>F їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ9Џ*B BРB BПbB Bƒ BРB BП,BBƒ B B B BП,BBƒB#B@B$B B BъB F 9ЏZBП*BЫB BЂB BП*BчBBЂ(B BЏвB˜ BƒuB *BB˜ BƒuB 3BBѕB`BЊђB`BЉтF 9ЏŠBУЫBРB BПbBBƒ B BB BПbBBƒ&BРB BПbBBƒB BB BПbBBƒ)B‚F їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ9Ў Bƒ BШBƒ„BШBƒ†BШBƒˆBи B %BƒИBа`Bƒ%BB`BЏXBBBB QB BЏŠBРABB`F 9Ў:BЏBРB BП,BBƒ B BОB BП*BjB BЂBBtBBBХBрBƒtB BЏьB BЏвF 9ЎjBƒBABћBƒBZBјBУBйCBƒ&B BП,BBƒB…B€BBыB BОЪBB BП*BЊBF їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ9БњBиBœBУBиBœBУBФBб B˜B„BBBб B˜B„B№BBBƒBъBШBƒnBBF 9В*B[BBBа`BƒsB B!BƒBФ`BƒnBСBиBƒsBР;BиBœBРBиBœBBВ`BШBƒBрF 9ВZBƒрB`BjBBBрBƒB[BГtBГ6BГˆBГœBГ6BГ`BШ Bƒ~Bx B %Bƒ.BB`BГ6Bи Bƒ/F їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ9АкB1BBBBBарBƒЕB ƒBƒBBBƒBBƒBBBУBBBBУB BП,BF 9Б BƒцBŒ0BBљBиBƒЕBи B ;BƒГBР Bƒ>B€BBа Bƒ7BBи B %Bƒ7Bx B  ?ŸM U N C H M A N IITHE MONSTER IS BACK!DESIGNED BY: JOHN PHILLIPS@1987 JOHN PHILLIPSNO CHEATING!YOUR SCORE: Ђїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў#їїџџџџџџџџџџџћ6 MUNCH 6 SFIRST6SLAST 6 SLOAD F : 99/4 AS 01739Ћ Bƒ"BBи B .Bƒ"Bи BЂBƒ$BШ BЃBƒ0ppи Ђƒ„ ПŽ€‚‚єи  ?ƒд   П, Ђ ј ШƒJи  $ƒ| В, Ои  %ƒИи  $ƒ П*€ їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў$їїџџџџџџџџџџџћ„ЪРЧШРТŠФfў№dЦРЩƒФ€ФŠФ€ФƒЪРХfўmmmrmФ„ЦШРЧРЧРШХ„Фvutў џРШРЩ…Ф€‚‚‚Ф€ЪРТfўpppoФƒЦШРУџРУРШХƒФfў№dФ…ФƒФ‡ŽŽŽˆФƒФ€Фfў№dЪРШХ„Ф‹№ŒФ„ЦШРЩfўaaaqФƒФ€Ф‰†Ф…ФƒФfў џРЩ„ЦШРЧРШРШРЧРШХ„ФfўpppoФ…Ф‘‚ФƒФ€‚’Ф€Фfў№dЦШРЩ„СРХ„ЦРТ„ЪРШХfў№hiФƒФŠФ€‚‚ФŠФƒФvtў№dСХ„Ъїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў$їїџџџџџџџџџџџћ ЮўxfхЧХџ~ff~џЃуЇfџН™™™џџџУччччџ`џabџabџacўdСРРТeСџРТeСРРТfўdЁ€ФgФ€‚‚‚ФgФ€ЁfўdЦШРУРЧРШРШРЧРУРШХfўhiФƒФ€‚ФƒФ€‚ФƒФjkўdРЩ„ЦРШРХ„ЦРШРХ„ФlџmўnoФ…‚Ф€‚‚Ф€‚ЪџР ў dЪџРУџРУџРЩjџpў dФ‘‚Ф‡ŽŽŽˆФ€‚’Фfџ ў dФ„СРЩ‹№ŒЪРТ„Фfџ ў`qФŠФƒФ‰†ФƒФŠФlџmўїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћиœУиœУФб ˜„б ˜„№ƒъШƒn[а`ƒs !ƒФ`ƒnСиƒsР;иœРиœВ`Шƒрƒр`jрƒ[ГtГ6ГˆГœГ6Г`Ш ƒ~x  %ƒ.`Г6и ƒ/ƒ.рƒtи  ;ƒ0и  %ƒt ОњУарƒuƒџƒиƒ0)ƒ & П*ю Ђn Нœ П*ю ЂwкШ ƒvƒvи ƒvƒv и ƒwƒwмїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћ_и  %ƒ Ш ƒКШƒМШƒОа ƒИ`Б–а ƒГx  %ƒГа ƒЖx  %ƒЖрƒLx  %ƒДи  *ƒДХахƒ\ ƒƒ‡„ƒУ П,ƒцŒ0йCƒ\…ыарƒЙ  П* ЄŽи  $ƒЙ П* Єvи  %ƒЙx  %ƒ5и  .ƒ5арƒ ƒƒˆƒУ П*ƒциƒа ƒ7I ƒ>1арƒЕ ƒƒƒƒїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћ ЏŠРA  П*/ƒ Шƒ„Шƒ†Шƒˆи  %ƒИа`ƒ%`ЏX Q ЏŠРA`ЏР П,ƒ  О П*j ЂtХрƒt Џь ЏвƒAћƒZјУйCƒ& П,ƒ…€ы ОЪ П*ЊЂš ЏвƒYƒNЭї П* Wƒ&рƒ,    ЏŠРAР П,ƒ  П,ƒ)Р П,ƒ   П,їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћ <Х#0$0Уб П*ƒ О:и ƒАƒБи ƒ9ƒ8и ƒ/ƒ.Ш  ZƒЊШ  tƒЌрƒЎи  $ƒ7и  $ƒВ К2 К Кжƒ@ТЬ§ М0и  $ƒИ П*щЂP Џв П,Ђwи  8ƒГрƒж Вv Еz Жn Иf Дѓ Оžарƒ6 ОXи  $ƒ7И  %ƒ#а`ƒ# (Сиƒ# ОкЁ П*ƒ  ОЪР ƒ˜%…„їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћйУздИ  %ƒt˜ ƒt 'Ҙ ƒ0 ;и ƒ1ƒ0арƒ0 ƒ УТЃВjZУ ƒ~\џџџƒ€‚˜ ƒ1 $"˜ ƒ1 )7˜ ƒ1 )˜ ƒ1 $-˜ ƒ1 '˜ ƒ1 &# ˜ ƒ1 &˜ ƒ1 'ТlГ<ТЌГH Л$ТŠ#Ррƒ` ьГHШƒ`С,ГT П*ƒи ƒ0ƒ1Ррƒ`#C ТlГ<ТЌГH Л$їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћУУ П,ƒцŒ0љиƒЕи  ;ƒГР ƒ>€<` ОXР ƒ”1 Ок Ж,и  $ƒ7и  $ƒВи  $ƒГарƒ6 ОX КИ  <ƒ/x  =ƒ9 MХРC П0бЅƒLy` %ƒLŒ0Œѓ…№СР РтƒТібaƒœx` %ƒœѓбГ †и3„ќиsƒœтƒчШƒƒфУ`ƒКУ ƒМУрƒОи  $ƒ рƒР€їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћƒ& ƒ,# $  оР`ƒ,г О П*Ђ  Р Пb ƒ Р П,ƒ   П,ƒ#@$  ъ П*Ы Ђ П*чЂ( Џв˜ ƒu *˜ ƒu 3ѕ`Њђ`ЉтУЫР Пbƒ   Пbƒ&Р Пbƒ  Пbƒ)‚ ‚F‚‡С_УЫрƒж Оњ˜ ƒu ;јарƒu ƒ_УЫ Оњ˜ ƒu ;њїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћ€э€ П*ƒ  П* : П ОЪJ0*ЂЈРJш П0 ОЪ  П*шЂw`ЋV~Z~~~~~<<~Zџџџ~<~лџ<~ Оž ОкЁ[Š П*ƒP­NРC П0# ОЪєР ƒš§ Ок к П* 9 Оv ОЪа ƒ" Лша ƒx  %ƒ" Нє ОЪ`Ќ/їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћТŠп`Г `Г6їG€GxУ Ррƒ`Cџƒји  $ƒ: ƒи  %ƒ:`Еbи  %ƒИа ƒ7 Оžарƒ6 ОXИ  <ƒ/x  =ƒ9и  $ƒ7и  $ƒВ Лша ƒЖ М0Шƒ@ШƒBа`ƒ:`ДаШ ƒjƒЊ Оv О:и  %ƒ! К2 Ка`ƒŽ Ш Д ƒ`Ш  tƒjи  $ƒŽ(и ДƒaШ ƒЌƒj!Ш ƒjƒЌ Оv О:и  $ƒ! К2 Ка`ƒŽ Ш Д ƒ`Ш їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћТЊЕjР ƒ, МІТŠябdƒDТ … Р ƒ, Рфƒb хЕjЩƒb  П,ƒйƒDрƒ,рƒ,„„`Ж’\%PУCУCйYйYУ Шƒ, Ш ƒ*ЩШ ƒ&Ррƒ`ССD „EџРрƒ&РуƒbСƒСУ †Gџa„aХFG†‡`ИЬрƒ,рƒ,рƒ& ƒ*л`ЙЌТ`ƒ,‰" Ок ка ƒ! ?Шƒ`и  &ƒ1 їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћ`Ж^ ПJТ Š ТjЕrТЊЕj МІТŠяб`ƒ!б`ƒЏб`ƒЎТ … Ё%ЕjШƒj П*ƒjб`ƒ!иƒЏиƒЎ\џџџљ?g?gУ x  %ƒ8`ИLи ƒ9ƒ8Шƒ,Фи ƒГƒЗа$ƒ@ а ƒЗ`И8й  %ƒ@й  $ƒH˜$ƒ@ %˜$ƒH 4СD Рхƒb хЖ`ЩCƒbР ƒ, П,ƒЙ  %ƒH`И8й  &ƒ@˜$ƒ@ &а$ƒL`їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћƒb ЪР   П,ƒЪCƒb Ъ]УKТ … ТeЕrТЅЕj]ТЛУ‹ЦЧР Пbƒ ТJJЁŠЁ‡ט ƒ  6и  %ƒx  .ƒ  П,ƒ Т‰ Jˆс П`ƒ˜ƒ$ иƒ$арƒ%И  %ƒ" Нє^У‹ Оžи  %ƒИрƒt Оњ˜ ƒu ;њрƒж Оњ˜ ƒu ;ји  $ƒИ^У‹арƒ4Ррƒ2`ЌЂ^УЫб`ƒ"їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћ П0Œ0uі П, :Ш Каƒ\Ш Квƒ^и Кдƒ]УKРрƒ`Сƒ&F Щ ЪС ГDџ 4 S Ф#Р Пbƒ ……РС†@ П, 5 ОкЁ Н, ƒ2 Нр0…Ё)С†+ П, 5 Ок юарƒ6 ОX Н,x  %ƒ4 Нри  (ƒЕШ ƒ<ƒ>а ƒ7и  %ƒ7x  <ƒ/И  =ƒ9…  Ъ]УKарƒ!JР@їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћјgШƒ`и  'ƒ1и  $ƒЖи  %ƒŽ`Да`ƒ7`­n Ок кС ƒ,&ќќ &й  $ƒ@И  %ƒВР ƒ,СЦ ' їа`ƒ!Рч FРч ` П,ƒЩƒƒbарƒВ ƒС  $РD!Ђ^а ƒ!Р#ИVР#И^ П0в ƒВ Š ТЊИN Н.`ИЖ\J@РћС;УKР € П,ƒ Рљб`ƒ! … СЅЙЎРбs ……§$…ў& є…џ їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћИ8а ƒ!арЖiУарЖhУафЖjСD ЩCƒbР ƒ, П,ƒй  &ƒ@Р ƒ,СD Рхƒb#СCEџ…№йƒD`И…йƒD`ИC`И  ПJ *Š бdƒD НР ƒ, МІТŠ`И8а`ƒ7`ЗшСD ˜%ƒbƒ`˜%ƒcƒa˜%ƒcƒa ˜%ƒbƒ`    Ъ  ПJТ Š ТjЕrїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћ Zƒjи  $ƒŽи Д ƒaШ ƒЊƒj П*ƒ` П*ƒjа ƒЖ Мjи  $ƒЖрƒLрƒNи  $ƒГи  %ƒ8 66nnШ ЕLƒLШ ЕNƒNи  7ƒЖи  $ƒИ\џџџУ x  %ƒБ`Ж^и ƒАƒБРрƒjС#СCEџ…№иƒЎ`Ж4…иƒЏ`Ж4C`Ж$ ПJ *Šб`ƒ!б`ƒЏб`ƒЎ Н МІТŠїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћ!ъ ПЊ ѕ@Р@!ч ПЊ ѕ]УKХ֘%ƒb 9 ЩeƒbƒЂйІƒ@ƒPйІƒDƒTйІƒHƒXХ†Œ0ы]УKХЦРхƒЂ П,ƒЩCƒbйІƒPƒ@йІƒTƒDйІƒXƒHХ†Œ0ъ]УKР@!ќќ ! РсƒbСƒ&Ё‰ТAЁŠСЦ ЖGџ 7 VЁ‡&Р Пbƒ ƒƒРƒЁƒ Рщїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћбsбѓ ‡ П,ƒ €љч…№ П,Ђw н П,ƒ €з]УKарƒ!JР@! ПЊ ѕ@Р@! ПЊ ѕ]ЂИ‡ŽŽŽŽˆ‹ Œ‰†УKа ƒ!С КzС К| К~РРG П0' ѕ&€ ь]„…†‡ˆ‰УKƒ`а`ƒ! F `ЭРEїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ …… %%ЂшРE8 П0_УЫ€  П,ƒРљ_УЫ@`  П,ƒРљ_УЫŒиƒ; П,ƒ;€љ_УЫФ П, 9й  9ƒbŒ0Фѕ_ŸПпџƒС Ь§Уи#Оš„ƒњ[Р{ ўњ[С;й  $ƒœ Щ;ƒб ƒ [їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ JNE UCLINE NOT YET** FINISHED WITH A LINE*' AI R6,32 NEXT LINE DOWN% JMP UCOUTR AND GO AGAIN** NOT FINISHED WITH A LINE, YET*%UCLINE CI R5,>FF REPEAT CHAR?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ DEC R7 DONE? JNE UNCCLR NOT YET*# MOVB @MAZEF,R5 WHICH MAZE SRL R5,8 TO LSB$ SLA R5,1 X2 FOR WORD4 MOV @MAZOFF(R5),R6 VDP START ADDRESS FOR MAZEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ#***********************************#* UNCOMPRESS MAZES TO VDP *#***********************************#UNCOMP MOV *R11+,R3 WHICH MAZE! MOV *R11+,R4 TO WHERE$ MOV R11,R13 SAVE RETURN*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћрƒр рƒи ƒ ƒ [ oх:`ƒР*zЙШ ƒР[Р;РЛР{РиŒР`@иŒи1Œќ@`а ƒ [Р;РЛР{РиŒРиŒм`ˆќа ƒ [Р;иŒРиŒР[Р;РЛР{Ш ƒ~Шƒ,Шƒ&Шƒ(Шƒ*Р ƒ( ПbƒР ƒ& П,ƒ ƒ& ƒ( ƒ*эР ƒ,Ш ƒ,ƒ&Трƒ~[їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ8 JNE SPACE3 NO, ONLY 1 LEFT IS THREE SPACES** FOUND A REPEAT*) MOVB *R3+,R5 GET CHAR FOR RPT' MOVB *R3+,R7 GET # OF CHARS% SRL R7,8 COUNT TO LSB%RPTL BL @WRTCL WRITE A CHARџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ"UCOUTR MOV R6,VDPADD SET IT UP*/UCINNR MOVB *R3+,R5 READ A COMPRESSED BYTE SRL R5,8 TO LSB" CI R5,>FD ALL DONE?& JEQ UCDONE YES, WITH ALL** CI R5,>FE DONE WITH A LINE?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ& MOV R4,R0 SAVE TO WHERE LI R6,>2020 SPACES+ LI R7,>300/2 CLEAR OUT VDP MAZE*%UNCCLR BL @WRTCL CLEAR IT OUT DATA 2,6*2+MYWS FROM R6$ INCT R0 NEXT VDPLOCџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ* FILE IS >> LEVEL1SUBS <<#*================================== * ALL LEVEL 1 RETURN LINK IN R13#*==================================4MAZOFF DATA 2*32+10+VLMAZE LEFT MAZE START OFFSET4 DATA 2*32+00+VRMAZE RIGHT MAZE START OFFSET*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ7 MOVB @HORZYL,@Y1+1 GET HORIZON X RIGHT VALUE MOVB @XCENTL,@X2+1 INC @X2 MOVB @HORIZY,@Y2+1 MOV R5,@TEMP1 MOV @STLEFT(R5),@PTSTAT*( JNE LSPTCH >> NO ERASING HERE# MOV @Y2,R3 >> YET HORIZYџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ1 BYTE 20*8,21*8-1,15*8-1,19*8 FUEL2 BYTE 13*8+3,18*8+4,28*8-1,29*8 PITCH BYTE 0,0,0,0*RUNWAY BYTE 6 6 DOTS*RUNTBL DATA RUNWY0 DA