ўїїџџџџџџџџџџџћ4AFLYER а DSK (џџќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћINPUT €4ПP4х0їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћGPLLNK € ФP ТїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћCRASH €FPPFBPїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћMAIN €„PAїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћINITS €щPЬ€їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћDATA €:JP:ˆїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћCOMUTL € VP "№їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћSUBS3 €SкPS!"їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћSUBS1 €:СP:Ѕ‘їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћSTARSOBJ :PЌh‘їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћMANUAL €HЬPHqїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћTABLES € eP tЂїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћSUBS2 €B*PBпїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћSTARSROM €MPЂ!їїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћSTARS €ЅPfїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћUTIL1  Ађїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* FILE IS > C O M U T L < EVEN!*********************************!* SUBROUTINE TO TRIGGER SOUND *!********************************* SNDSUB LIMI 0. MOV *R11+,@>83CC ADDRESS OF SOUND LIST& MOVB @H01,@>83CE SET THE FLAGSџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ. SOCB @H01,@>83FD SOUND LIST IN VDP RAM& MOVB @INTF,@INTF IN INTS? JNE SNDSBX LIMI 2 SNDSBX RT%*************************************%* STANDARD KEYBOARD SCAN ROUTINE *%*************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%*************************************%* VDP WRITE TO REGISTER ROUTINE. THE*%* PARAMETER IS PASSED DOWN AS DATA *%* USING THIS FORMAT: (LB, THEN HB) *%* VALUE TO WRITE/8/VDP REG. # *%* I.E. BL @VWTR *џ RETURN TO CALLERџџ***џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ JNE NO8REP NO0REPZ8 BL @WRTCL WRITE 8 BYTES OF ZEROES DATA 8,ZEROES, AI VDPADD,8 ADJUST VDP POSITION AI R5,-8 8 DOWN JMP REPSDN DONEџF SPRITE DATA CI R3,>1234 TOKEN?џ***џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ) B *R11 RETURN TO CALLER'***************************************'* GET SPRITE DESCRIPTOR LISTS. *'* MUST UNCOMPRESS. >1234 MEANS 8 BYTES*'* OF ZEROES *'***************************************џ************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%SCANKY LIMI 0 DISABLE INTS( LWPI GPLWS GPLWS EQU >83E0' BL @SCAN SCAN EQU >000E LWPI MYWS$ LIMI 2 ENABLE INTS) B *R11 RETURN TO CALLER'***************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%* DATA >0711 *%* THIS INSTANCE CHANGES VDP REG. 7 *%* TO >11 (CHANGES BACKGROUND COLOR) *%* RETURN LINKAGE IS R11. *%*************************************JPVWTR MOV *R11+,R0%JPVWTG LIMI 0 DISABLE INTSџRџџ***џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ6NO8REP BL @WRTCL WRITE THE TWO BYTES JUST READ DATA 2,3*2+MYWS) INCT VDPADD NEXT VDP ADDRESS DECT R5'REPSDN MOV R5,R5 DONE WITH ALL? JNE GSDLL NOT YET) B *R12 RETURN TO CALLERџџ***џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ-GETSDL MOV *R11+,R5 GET # OF BYTES TOTAL$ MOV R11,R12 SAVE RETURN% LI VDPADD,SDL START OF SDL- LI R4,SPRITE START OF SPRITE DATA3GSDLL MOV *R4+,R3 GET 2 BYTES OF SPRITE DATA CI R3,>1234 TOKEN?џ***џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'* GENERATES A 16 BIT RANDOM NUMBER AND*'* PLACES IT IN R10. RETURN IS IN R11. *'***************************************RANDNO LI R9,28645( MPY @SEED,R9 SEED EQU >83C0 AI R10,31417& MOV R10,@SEED MAKE NEW SEEDџ***************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ! ORI R0,>8000 SET FLAG+ SWPB R0 SET LOW BYTE FIRST( MOVB R0,@VDPWA VDPWA EQU >8C02- SWPB R0 NOW SET UP HIGH BYTE" MOVB R0,@VDPWA SET VDPWA# AI R0,->8000 RESTORE R0џISABLE INTSџRџџ***џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ" SWPB R1 LOW FIRST* MOVB R1,@VDPWA R1LB2 EQU MYWS2+3% SWPB R1 RESTORE HIGH' ORI R1,>4000 SET WRITE FLAG) MOVB R1,@VDPWA SET UP HIGH BYTE) NOP VDPWA EQU >8C02џM OLD R0џџџ***џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'* CALLED BY BLWP @VSBW *'* 1. MUST HAVE SECOND WORKSPACE *'* 2. VDPADD MUST BE PRELOADED *'* 3. MSB OF R1 MUST BE PRELOADED WITH'* VALUE TO BE WRITTEN *'* 4. R13,14,15 OF 2ND WS MUST BE *џLE INTSџRџџ***џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ.JPVSWX RTWP RETURN AND RESTORE ME%*************************************%* 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.: *џ BYTE FIRSTџ *џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'* 5. R1 OF NEW WORKSPACE IS DESTROYED'***************************************)JPVSBR DATA MYWS2,VSBRGO NEW WORKSPACE,PC%VSBRGO LIMI 0 DISABLE INTS0 MOV *R13,R1 GETS VDPADD FROM OLD R0' SWPB R1 LOW BYTE FIRSTџ *џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ0 MOVB @2(R13),@VDPWD VALUE FROM OLD R1 MSB$ LIMI 2 ENABLE INTS.JPVSRX RTWP RETURN AND RESTORE ME'***************************************'* SINGLE BYTE READ FROM VDP . . . *'* CALLED BY BLWP @VSBR *џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'* PRESERVED *'* 5. R1 OF NEW WORKSPACE IS DESTROYED'***************************************)JPVSBW DATA MYWS2,VSBWGO NEW WORKSPACE,PC%VSBWGO LIMI 0 DISABLE INTS0 MOV *R13,R1 GETS VDPADD FROM OLD R0џџџ***џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ! MOVB @INTF,@INTF IN INTS? JNE JPVWTX* LIMI 2 ENABLE INTERRUPTS-JPVWTX B *R11 AND RETURN TO CALLER '***************************************'* SINGLE BYTE WRITE TO VDP . . . *џ RESTORE R0џISABLE INTSџRџџ***џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* MOVB R1,@VDPWA R1LB2 EQU MYWS2+3* SWPB R1 RESTORE HIGH BYTE) MOVB R1,@VDPWA SET UP HIGH BYTE) NOP VDPWA EQU >8C020 MOVB @VDPRD,@2(R13) VALUE FROM OLD R1 MSB LIMI 2џ LOW BYTE FIRSTџ *џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'* 1. MUST HAVE SECOND WORKSPACE *'* 2. VDPADD MUST BE PRELOADED *'* 3. MSB OF R1 IS WHERE THE BYTE *'* WILL BE WRITTEN *'* 4. R13,14,15 OF 2ND WS MUST BE *'* PRESERVED *џ *џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%* BL @RDVCL *%* DATA SAL,2,MYWS+2 *%*************************************/RDVCL MOV *R11+,VDPADD VDPADD EQU 0 (R0)/RDCL MOV *R11+,RCOUNT RCOUNT EQU 3 (R3)џRDVCL STATEMENT. I.E.: *џ BYTE FIRSTџ *џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%*************************************%* V D P T O V D P ROUTINE *%* THIS ROUTINE ASSUMES THAT THE *%* PARAMETERS ARE PASSED FOLLOWING *%* THE BL @VDPVDP STATEMENT. I.E.: *%* BL @WRTVCL *џRN TO CALLERџSTE SOME TIMEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%WRITE LIMI 0 DISABLE INTS SWPB VDPADD' MOVB VDPADD,@VDPWA SEND LO BYTE( SWPB VDPADD WASTE SOME TIME* ORI R0,>4000 SET FLAG TO WRITE MOVB VDPADD,@VDPWA >8C02( NOP WASTE SOME TIMEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%*************************************%* W R I T E T O V D P ROUTINE *%* THIS ROUTINE ASSUMES THAT THE *%* PARAMETERS ARE PASSED FOLLOWING *%* THE BL @WRTVCL STATEMENT. I.E.: *%* BL @WRTVCL *џRN TO CALLERџE FIRSTџ *џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/RDL MOV *R11+,RLOC RLOC EQU 4 (R4)%READ LIMI 0 DISABLE INTS SWPB VDPADD' MOVB VDPADD,@VDPWA SEND LO BYTE( SWPB VDPADD WASTE SOME TIME( MOVB VDPADD,@VDPWA SEND HI BYTEџ I.E.: *џ BYTE FIRSTџ *џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%* DATA SAL,2,CT DEST,COUNT,SOURCE*%*************************************VDPVDP MOV *R11+,VDPADDVDPCL MOV *R11+,WCOUNTVDPL MOV *R11+,WLOC%VDP LIMI 0 DISABLE INTS$ MOV VDPADD,@XML SAVE VDPADDџ *џRN TO CALLERџSTE SOME TIMEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+W00010 MOVB *WLOC+,@VDPWD VDPWD EQU >8C00 DEC WCOUNT JGT W00010' AI VDPADD,->4000 RESTORE VDPADD MOVB @INTF,@INTF JNE WRITEX$ LIMI 2 ENABLE INTS)WRITEX B *R11 RETURN TO CALLERџSTE SOME TIMEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%* DATA SAL,2,MYWS+2 *%*************************************/WRTVCL MOV *R11+,VDPADD VDPADD EQU 0 (R0)/WRTCL MOV *R11+,WCOUNT WCOUNT EQU 3 (R3)/WRTL MOV *R11+,WLOC WLOC EQU 4 (R4)џ *џRN TO CALLERџE FIRSTџ *џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ( NOP WASTE SOME TIME+R00010 MOVB @VDPRD,*RLOC+ VDPRD EQU >8800 DEC RCOUNT JGT R00010 MOVB @INTF,@INTF JNE READX$ LIMI 2 ENABLE INTS)READX B *R11 RETURN TO CALLERџE FIRSTџ *џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# MOV R10,@KDELAY SAVE MSG #' CI R10,10 LANDED SAFELY?2 JHE CMSG YES, SO JUST SHOW MESSAGE' BL @SNDSUB MAKE EXPLOSION$ DATA EXPSND SPRITES OFF BL @WRTVCL DATA SAL,1,HD0џINK IS *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ BYTE 07*8+6,19*8 1 BYTE 08*8+5,16*8 2 BYTE 09*8+5,12*8 3 BYTE 0,0'OSAL EQU SAL+>10 SAL OF OBJECTS%RAMTST DATA 0 FOR RAM TEST'***************************************'* CRASH SEQUENCE. NO RETURN LINK IS *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ LIMI 2 ENABLE LIST)VDPX B *R11 RETURN TO CALLERџMPC DONE? JNE VDP000 NOT YET MOV @XML,VDPADD RESTORE MOV @XML,@TEMPV RESTORE MOVB @INTF,@INTF JNE VDPXџ A BYTEџTIMEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# MOV VDPADD,@TEMPV SAVE AGAIN! MOV WLOC,@TEMPL SAVE LOC# MOV WCOUNT,@TEMPC SAVE COUNT#VDP000 MOV @TEMPL,VDPADD GET SOURCE$ BLWP @JPVSBR READ A BYTE! MOV @TEMPV,VDPADD GET DEST$ BLWP @JPVSBW READ A BYTEџTIMEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# MOVB @H00,@BULLFL NO BULLETS& BL @GAUGES UPDATE GAUGES LI R4,10 10 REPS"CRASHL BL @JPVWTR FLASH RED DATA >0766$ BL @CDELAY CRASH DELAY BL @JPVWTR$ DATA >0711 BLACK AGAINџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'* NEEDED. PASS CRASH MESSAGE NUMBER *'* TO THIS ROUTINE IN R10. *'***************************************;CRASH LIMI 0 NO LONGER NEED AN INTERRUPT VECTOR CLR @EXINTR MOVB @H00,@INTF LIMI 2џRETURN LINK IS *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* FILE IS > > > CRASH < < <8MISSNL DATA >05B8 ADDRESS OF MISSIONS LEFT STRINGBLTBL BYTE 06*8+5,08*8 0 BYTE 07*8+5,12*8 1 BYTE 09*8+2,16*8 2 BYTE 10*8+0,19*8 3 BYTE 0,0BRTBL BYTE 06*8+5,22*8 0џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ" INC @TEMPV NEXT DEST$ INC @TEMPL NEXT SOURCE DEC @TEMPC DONE? JNE VDP000 NOT YET MOV @XML,VDPADD RESTORE MOV @XML,@TEMPV RESTORE MOVB @INTF,@INTF JNE VDPXџ A BYTEџTIMEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ BL @CDELAY& DEC R4 DONE WITH 10? JNE CRASHL NOT YET*CMSG LI R0,>F6F64 BL @FILL FILL CENTER WINDOW WITH RED BYTE 4,8,8,162 MOV @KDELAY,R10 RESTORE ADDRESS OF STRING*џ BLACK AGAINџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ SRL WLOC,8 TO LSB% AI WLOC,>30 ASCII OFFSET" SLA WLOC,3 MULT BY 8' AI WLOC,RAMSET POINTS TO CHAR4 MOV @MISSNL,VDPADD ADDRESS TO PLACE THIS CHAR LI WCOUNT,8 8 BYTESџ6 AGAINџ BLACK AGAINџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ& LI R5,16 16 CHARS LONG+ CLR R8 HORIZONTAL MESSAGE( BL @WRT WRITE A MESSAGE*) LI VDPADD,6*256+64+PDT SECOND LINE$ AI R10,16 POINT TO IT! LI R5,16 16 AGAINџ BLACK AGAINџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/PLNMOV MOV *R11+,R8 GET INDEX TO DIR TABLE$ MOV R11,R14 SAVE RETURN% MOVB @ETHERE,R4 ENEMY THERE?$ JEQ PLMVEX NO, SO EXIT. CB @ETHERE,@H02 THERE, BUT EXPLODING?& JEQ PLMVEX YES, SO EXIT!*џ1џ*џџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ% MOVB R3,@KEY PUT INTO KEY5STARSW B @BACK DO NOT DO TITLE SCREEN AGAIN%STARSA B @STARS AND GO AGAIN***************************** CRASH DELAY *****************************CDELAY LI R1,>0800 CDELYL DEC R1џ*џџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ- BL @VDP SHOW # MISSIONS LEFT*NOCARG BL @WRTMSG BYTE 9,9 DATA DONEM,>FCFC 9CDBNCE BL @SCANKY WAIT FOR THIS KEY TO BE RELEASED CB @KEY,@HFF JNE CDBNCE- BL @PAUSE AND WAIT FOR NEW KEY*џџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+ BL @WRT WRITE SECOND LINE!*+ MOV @KDELAY,R10 GET MESSAGE NUMBER6 CI R10,10 LANDED SAFELY? X CARGOS LEFT? JNE NOCARG NO.*/ MOVB @MISSNS,WLOC GET # OF MISSIONS LEFTџ 16 AGAINџ BLACK AGAINџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ- SLA R10,5 MULTIPLY MSG # BY 32/ AI R10,CRASHM POINTS TO STRING START. LI VDPADD,5*256+64+PDT VDP START OF MSG/ MOV R10,R3 MOVE ADDRESS OF STRING# LI R4,>F6F6 WHITE/BLUEџ OF STRING*џ BLACK AGAINџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ JNE CDELYL RT%*************************************%* MOVE PLANE BASED ON KEY PRESS. *%* LEVEL 2 SUB, SO RETURN IN R14. *%*************************************#PLNDIR DATA >FF00,>0100,>FFFF,>0001PLNSAL EQU 3*4+SAL*џDELYL DEC R1џ*џџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ$ MOV @KDELAY,R3 GET MESSAGE/ CI R3,11 DID WE FINISH MISSION? JEQ STARSA*) MOVB @WEATHR,R3 RETRIEVE WEATHER# JEQ STARSW WAS NORMAL- LI R3,87*256 RANDOM WEATHER AGAINџAND WAIT FOR NEW KEY*џџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ! BL @RDVCL READ Y,X% DATA PLNSAL,2,3*2+MYWS INTO R3& SLA R8,1 FOR DATA STMT A @PLNDIR(R8),R3 NEW POS$ MOV R0,R10 SAVE VDPADD2 AI R0,3 POINT TO PLANE COLOR BYTE** TEST PLANE BOUNDSџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ/ JEQ INTPLN NO, SO TEST PLANE ONLY- LI R1,>E4F0 TRIGGER BULLET SOUND MOVB R1,@>8400 SWPB R1 MOVB R1,@>8400- BL @RDVCL READ LEFT BULLET POS DATA SAL+4,2,3*2+GPLWSџLETS ON SCREEN?џDPADDџDSџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ'***************************************%INTERR MOVB @H01,@INTF IN INTERRUPT!* MOV @MYWS+6,@SEED NEW SEED* BL @WRTVCL SAVE OUT GPL REGS& DATA 13*2+TEMPWS,3*2,13*2+GPLWS*# MOVB @ONGRND,R3 ON GROUND?џ RESTORE VDPADDџDSџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ, JH PLTRAN MORE, SO MAKE TRANS*) LI R1,>0100 MAKE PLANE BLACK BLWP @JPVSBW& JMP PLNCLR PLANE COLORED*(PLTRAN CLR R1 MAKE PLANE TRAN BLWP @JPVSBW'PLNCLR MOV R10,R0 RESTORE VDPADDџDSџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ* MOV R3,R4 COPY MOV R4,R5 COPY SRL R4,8 Y IN 4 ANDI R5,>00FF X IN 5*)THEYS CI R4,4*8-1 TEST UPPER BOUND- JL PLTRAN LOWER, SO MAKE TRANSџLANE COLOR BYTE** TEST PLANE BOUNDSџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ- AI R3,-4*256+4 UP 1 CHAR, IN 1 CHAR BL @WRTCL DATA 2,3*2+GPLWS* BL @RDVCL READ RIGHT BULLET DATA SAL+8,2,3*2+GPLWS- AI R3,-4*256-4 UP 1 CHAR, IN 1 CHAR BL @WRTCL DATA 2,3*2+GPLWSџADDџDSџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ' JNE INTLB1 NO, SO PROCEED' B @BYE YES, SO IGNORE(INTLB1 MOVB @COMBFL,R3 IN COMBAT MODE?( JNE INTLB2 YES, SO PROCEED& B @INTERX NO, SO IGNORE+INTLB2 MOVB @BULLFL,R3 BULLETS ON SCREEN?џDPADDџDSџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ&THEYXK BL @WRTCL PUT HIM THERE DATA 2,3*2+MYWS*PLMVEX B *R14 RETURN'***************************************'* INTERRUPT ROUTINE. IN GPLWS. DO NOT *'* DESTROY R13, 14, 15. *џR MOV R10,R0 RESTORE VDPADDџDSџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ) CI R4,11*8+3 TEST LOWER BOUND. JH PLTRAN HIGHER, SO MAKE TRANS(THEXS CI R5,8*8 TEST LEFT BOUND, JL PLTRAN LESS, SO MAKE TRANS) CI R5,22*8 TEST RIGHT BOUNDџANE COLOR BYTE** TEST PLANE BOUNDSџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ- JLE MISM2 YES, BUT CHECK PITCH JMP OUTBR*$MISM2 MOVB @LPITCH,R3 IS PITCH 0? JEQ GETPY*OUTBR B @INTERX** WITHIN RANGE NOW!*0GETPY BL @RANDNO GET RANDOM NUMBER FOR Y ANDI R10,>F 0-15џE OF HIM*џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ#MISAME MOV @ALT,R3 GET MY ALT$ MOV @EALT,R4 GET HIS ALT S R3,R4 DELTA! ABS R4 POSITIVE) CI R4,50 WITHIN 50 FEET?. JLE MISM1 YES, SO CHECK HEADINGџIF I AM IN RANGE OF HIM*џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ1 B @PLISON YES, SO PROCESS HIS CODE** PLANE IS NOT ON.* SEE IF I NEED A PLANE, YET.*0DINEED MOVB @ENEED,R3 ARE ENEMY BEARINGS SET?: JNE MISAME YES, SO DON'T CREATE NEW BEARINGS%GETEAL BL @RANDNO GET ALTITUDEџONџSџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ/ SB @H01,@BULLSZ DONE WITH THIS BULLET?5 JNE INTPLN NOT YET, SO TEST PLANE STUFF*> TEST COINC NOW BL @COINC' BL @WRTVCL REMOVE BULLETS DATA SAL+4,8,SALINI+4- MOVB @H00,@BULLFL BULLETS NO LONGER ONџSџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ) AI R10,4*8+5 INTO VALID RANGE% MOV R10,R8 SAVE Y VALUEGETPX BL @RANDNO ANDI R10,>7F 0-127 CI R10,14*8 >96?* JH GETPX YES, SO TRY AGAIN' AI R10,8*8 IN VALID RANGEџE OF HIM*џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ& JMP OUTBR NO, SO IGNORE*$MISM1 MOV @HEAD,R3 GET MY ALT% MOV @EHEAD,R4 GET HIS ALT S R3,R4 DELTA! ABS R4 POSITIVE+ CI R4,10 WITHIN 10 DEGREES?џGџIF I AM IN RANGE OF HIM*џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ ANDI R10,>0FFF 0-4095 AI R10,3000 MOV R10,@EALTGETEHD BL @RANDNO ANDI R10,>FF 0-255 AI R10,50 MOV R10,@EHEAD' MOVB @H02,@ENEED SET THIS FLAG.*/* HEADINGS ARE SET, SEE IF I AM IN RANGE OF HIM*џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ! CB @ETHERE,@H02 GET HIM?7 JEQ INTPLN YES, SO LET EXPLOSION SOUND GO1 MOVB @HFF,@>8400 NO, SO KILL BULLET SOUND *%INTPLN MOVB @ETHERE,R3 IS PLANE ON?* JEQ DINEED NO. DO I NEED?ENTџULLFL BULLETS NO LONGER ONџSџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ SWPB R10 TO MST" MOVB R10,R8 8 HAS X,Y SWPB R8 NOW Y,X- BL @WRTVCL PUT SPRITE ON SCREEN DATA 3*4+SAL,2,8*2+GPLWS' CLR @ESIZE SIZE AND DELAYџ8 IN VALID RANGEџE OF HIM*џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ, CB @ESEC,@PLNSEC(R4) TIME TO CHANGE?+ JLE INTERX NOT TIME TO CHANGE& CLR @ESEC CLEAR SECONDS% AB @H01,@ESIZE ONE MOR SIZE+ CB @ESIZE,@H04 PAST BIGGEST SIZE?+ JEQ PLPAST YES, SO PLANE PASTџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ%PLNSEC BYTE 6,4,3,1 DELAY SECONDS*.PLISON AB @H01,@ETIMER ONE MORE TIMING CYCLE" MOVB @ETIMER,R3 GET TIMER SRL R3,8 TO LSB+ CI R3,60 ONE SECOND PASSED? JL INTERX NOT YET*џ**************џIM*џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ- LWPI MYWS RESTORE MY WORKSPACE' LI R10,2 SECOND MESSAGE B @CRASH*0ANOTHH BL @JPVWTR RESTORE SCREEN TO BLACK DATA >0711*(PLNHIT CLR @ETHERE NO LONGER THEREџ JNE ANOTHH NOT YET*џEXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ*'PLPAST BL @WRTVCL PUT SPRITE OFF DATA 3*4+SAL,4,3*4+SALINI* CB @ETHERE,@H02 WAS HE EXPLODING?, JEQ PLNHIT YES, SO ALL IS FINE*% LI R0,>E4F0 LITTLE SOUND MOVB R0,@>8400 SWPB R0џ AND EXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ** BL @RDVCL GET Y,X,CH IN 3&4 DATA PLNSAL,3,3*2+GPLWS. AI R4,4*256 INCREASE PATTERN SIZE*(* TO MAKE THE PLANE HARDER TO HIT, SHIFT!* HIM +/- 4 PIXELS ON SIZE CHANGE*% BL @RANDNO RANDOM SHIFTџSO PLANE PASTџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ* CB @ETHERE,@H02 WAS HE EXPLODING?+ JEQ PLPAST YES, SO REMOVE HIM*(NOEXPL AB @H01,@ESEC ONE MORE SECOND( MOVB @H00,@ETIMER AND RESET TIMER) MOVB @ESIZE,R4 GET CURRENT SIZE SRL R4,8 TO LSBџ**џIM*џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ0 CLR @ESEC CLEAR SECONDS AND TIMER, MOVB @H01,@ETHERE PLANE IS NOW THERE!! B @INTERX AND EXIT'***************************************'* PLANE IS ALREADY ON. PROCESS *'***************************************џIM*џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ MOVB R0,@>8400* BL @JPVWTR FLASH RED SCREEN! DATA >0766* LI R0,>800 INTRD DEC R0 JNE INTRD % AB @H01,@HITS ONE MORE HIT' CB @HITS,@H03 TOO MANY HITS? JNE ANOTHH NOT YET*џEXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ ANDI R10,>F CI R10,8' JHE SHFTPR SHIFT TO RIGHT SHFTPL AI R3,-4 TO LEFT! JMP SHFTPC COMPLETESHFTPR AI R3,4&SHFTPC BL @WRTCL REWRITE PLANE DATA 3,3*2+GPLWS! JMP INTERX AND EXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ- MOVB @HFF,@>8400 EXPLOSION SOUND OFF!* INTERX EQU $$************************************$* THE 2ND HALF CHECKS FOR SCENERY *$* I KNOW THAT I AM NOT ON THE GROUND$* IF I REACH THIS POINT *$************************************џ*џEXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ LI R0,BLTBL JMP JUMPASCENEG LI R0,BRTBL'JUMPA MOV *R0+,R4 HAVE START Y,X MOV R0,@OLIST BL @WRTVCL DATA OSAL,4,4*2+GPLWS# SETO @OTHERE HE'S THERE LI R3,15" MOV R3,@ODELAY SET DELAYџXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ,* ANDI R5,>F HAVE COLOR BYTE NOW& LI R5,1 BLACK SCENERY*! MOV @SEED,R3 GET SEED$ A @RANDOM,R3 MAKE RANDOM MOV R3,@SEEDSCENEL BL @RANDNO ANDI R10,>00C0 SRL R10,6 0,1,2,3џXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ SCEN2 MOVB @ROT,R3 GET ROT SRA R3,8 TO LSB& ABS R3 MAKE POSITIVE CI R3,16 16-32?& JL SCENBR NO, SO IGNORE* ELIGIBLE FOR SCENERY * BL @RANDNO ANDI R10,>0FF0џ*****џ*џEXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ*SCENES MOV @OTHERE,R3 OBJECT ON SCREEN?2 JNE OMOVE YES, SO FINISH MOVING HIM( MOVB @LANDNG,R3 ARE WE LANDING?/ JEQ SCEN1 NO, SO CAN HAVE OBJECT%SCENBR B @BYE YES, SO EXITџ************************џ*џEXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ! JMP BYE AND EXIT*$* SCENERY IS ON. JUST MOVE IF NEEDED**&OMOVE DEC @ODELAY TIME TO MOVE? JNE BYE NOT YET LI R3,15$ MOV R3,@ODELAY RESET TIMER) MOV @OLIST,R3 GET LIST POINTERџDELAYџXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ JEQ SCENEL 1,2,3 DEC R10 0,1,2" SLA R10,2 MULT BY 4 AI R10,>00A0 PATTERN SWPB R10$ MOVB R10,R5 HAVE CH,COL*% MOVB @ROT,R3 GET ROTATION JGT SCENEGџ 0,1,2,3џXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ SRL R10,4& JNE SCENBR 1-31 CHANCE* PUT OUT SCENERY *$* MOVB @WEATHR,R3 GET WEATHER* SRL R3,8 TO LSB&* SLA R3,1 BY 2 FOR DATA2* MOV @WEATHC(R3),R5 GET COLOR NEEDED (SKY)џ*****џ*џEXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ&SCEN1 MOV @ALT,R3 GET ALITITUDE$ CI R3,1000 ABOVE 1000?* JL SCENBR NO, SO NO SCENERY3 MOVB @PITCH,R3 PITCH AT ZERO OR NEGATIVE? JLT SCEN2 JEQ SCEN2 JMP SCENBR NOџ************џ*џEXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ JH COINCE" CI R9,1 SAME HERE JH COINCE*) C *R4+,*R4+ CH PAT=EXPLOSION SLA R4,8' AI R4,>6 RED EXPLOSION) AI R3,-4*256 CENTER EXPLOSION*$ BL @WRTCL CHANGE ALL!џ****џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ7 JNE COINCE NO, SO NO NEED TO TEST FURTHER*# MOV @SALINI,R8 GET XHAIRS MOV R8,R9 COPY SRL R8,8 Y IN 8 ANDI R9,>00FF X IN 9*" MOV R6,R7 PLANE Y,XџLARGEST SIZE?џ***************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ*BYEEXT BL @RDVCL SAVE OUT GPL REGS& DATA 13*2+TEMPWS,3*2,13*2+GPLWS MOVB @H00,@INTF LWPI INTWS RTWP'***************************************'* TEST COINCIDENCE ON ENEMY PLANE *'***************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ MOV *R3+,R4 GET Y,X JEQ OGONE DONE MOV R3,@OLIST BL @WRTVCL DATA OSAL,2,4*2+GPLWS JMP BYE*OGONE BL @WRTVCL DATA OSAL,4,4*4+SALINI CLR @OTHERE** ANOTHER CARTRIDGE TEST*џDELAYџXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ DATA 4,3*2+GPLWS" CLR @ESEC NEW TIMER- MOVB @H02,@ETHERE THERE, BUT EXPLODING LI R3,>E6F0( MOVB R3,@>8400 EXPLOSION SOUND SWPB R3 MOVB R3,@>8400COINCE B *R12 RETURNџ CHANGE ALL!џ****џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ SRL R6,8 Y IN 6+ AI R6,-4 ADJUST UP A LITTLE ANDI R7,>00FF X IN 7* S R6,R8 Y DELTA ABS R8 S R7,R9 X DELTA ABS R9& CI R8,1 TWO PIXEL TOLџ***********џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ$COINC MOV R11,R12 SAVE RETURN* BL @RDVCL READ PLANE Y,X,CH DATA PLNSAL,3,3*2+GPLWS* MOV R3,R6 COPY Y,X OF PLANE* SRL R4,8 CHARACTER PATTERN) CI R4,>98 AT LARGEST SIZE?џ***************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ#BYE SETO R0 TEST VALUE% MOV R0,@RAMTST PUT TO "RAM"' MOV @RAMTST,R0 GET VALUE BACK.BYEBYE JEQ BYEEXT ZERO, SO ROM IS THERE. JMP BYEBYE KEEP THEM IN SUSPENSE *BYE EQU $џTHER CARTRIDGE TEST*џDELAYџXITџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ'***************************************'* LANDING ROUTINE. THIS CONTROLS RUNWY*'* SIZE, MONITORS ALTITUDE, SETS FLAGS,*'* ETC. LEVEL 1, SO RETURN IS IN R13. *'***************************************$LANDIT MOV R11,R13 SAVE RETURNџ CHANGE ALL!џ****џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ@* CI R3,1000 ABOVE 1000 FT? <<< CHANGE FOR FINAL >>>* JHE STRIP4* JMP TOPEXT NO#STRIP4 MOVB @H00,@RUNSIZ FIRST SIZE' BL @GTRNWY GET ROM TO RAM( BL @DRWRUN DRAW THE RUNWAY DATA 0џGE ALL!џ****џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/ JNE VISRUN YES, SO SKIP FOLLOWING/* DETERMINE IF RUNWAY IS ELIGIBLE TO BE VISIBLE6STRIP0 C @HEAD,@RHEAD USER HEADING = RUNWAY HEADING JEQ STRIP1 YES$ JMP TOPEXT NO, SO EXITџE?џ SAVE RETURNџ CHANGE ALL!џ****џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* BL @DRWRUN ERASE THIS RUNWAY DATA 1 AB @H01,@RUNSIZ, BL @GTRNWY GET NEW SIZE RUNWAY( BL @DRWRUN DRAW NEW RUNWAY DATA 0$ MOV @SPDDLY,R1 >> FOR TIMING" SRL R1,1 >> DECREASEџ**џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ1 C @ALT,@LNDTBL+2(R4) CHECK LOW ALT LIMIT. JL LNDINC NOT IN THIS ALT RANGE- JMP FNDRNG FOUND ALTITUDE RANGE"LNDINC INCT R4 NEW INDEX DEC R3 DONE? JNE LNDTST NOT YETџGE ALL!џ****џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+ MOVB @H01,@RUNVIS RUNWAY NOW VISIBLE! B @LANDIE AND EXIT*'* AT THIS POINT, THE RUNWAY IS VISIBLE.$* NEED TO CHECK FOR NEXT SIZE AND IF* TOUCHED DOWN.*,LNDTBL DATA 1000,750,500,350,250,150,50,20,0џ RUNWAY DATA 0џGE ALL!џ****џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ,STRIP1 MOVB @ROT,R3 ROTATION 0 (LEVEL)? JEQ STRIP2 YES JMP TOPEXT NO#STRIP2 MOVB @PITCH,R3 PITCH +-0? JEQ STRIP3 YES JMP TOPEXT NO STRIP3 EQU $!*STRIP3 MOV @ALT,R3 GET ALTџGE ALL!џ****џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# MOV @ONGRND,R3 ON GROUND?) JEQ TOPEXT YES, SO EXIT NOW! MOVB @LANDNG,R3 LANDING? JNE STRIP YES%TOPEXT B @LANDIE NO, SO EXITT(STRIP MOVB @RUNVIS,R3 RUNWAY VISIBLE?џ SAVE RETURNџ CHANGE ALL!џ****џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* JMP LANDIE FALL/THROUGH STOP*FNDRNG SRL R4,1 DIVIDE INDEX BY 2 SWPB R4 TO MSBK CB @RUNSIZ,R4 IS THE RUNWAY SIZE PROPORTIONAL TO ALTITUDE RANGE?/ JEQ LANDIE YES, SO EXIT (FOR NOW)*џ ALL!џ****џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ,* 0 1 2 3 4 5 6 7 8* VISRUN EQU $% LI R3,8 LOOP 8 TIMES CLR R4 INDEX2LNDTST C @ALT,@LNDTBL(R4) CHECK HIGH ALT LIMIT3 JH LNDINC NOT IN THIS ALTITUDE RANGEџ DATA 0џGE ALL!џ****џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ! MOV R1,@SPDDLY >> @SPDDLY*)LANDIE B *R13 RETURN TO CALLER џ BL @GTRNWY GET NEW SIZE RUNWAY( BL @DRWRUN DRAW NEW RUNWAY DATA 0$ MOV @SPDDLY,R1 >> FOR TIMING" SRL R1,1 >> DECREASEџ**џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ(HIVDP EQU >3800 FREE VDP AT TOP%RAMSET EQU HIVDP RAM CHAR SET6REGVDP EQU >3FE0 VDP SPOT FOR REGISTER STORAGE4SCREEN EQU >0000 SCREEN FOR MULTI COLOR MODE%PAB EQU >0F80 PAB VDP SPOTџBLEџ*************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&VDPRD EQU >8800 VDP READ DATA'VDPWD EQU >8C00 VDP WRITE DATA/VDPWA EQU >8C02 VDP READ/WRITE ADDRESS1SCAN EQU >000E ADDRESS OF KSCAN ROUTINE+SIT EQU >1800 SCREEN IMAGE TABLEџ*********************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћCPURAM EQU >8300 CPURAM$SEED EQU >83C0 RAND # SEED2DISINT EQU >83C2 DISABLE INTERRUPT ADDRESS* * 8=ALL 4=AUTOMOT 2=SOUND 1=QUIT*>EXINTR EQU >83C4 ADDRESS OF EXTERNAL INTERRUPT ROUTINEџ**********************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* FILE IS > D A T A <(****************************************(* FLIGHT SIMULATOR *(* *(* WRITTEN BY: JOHN PHILLIPS *(* DESIGNED BY: JOHN PHILLIPS *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'***************************************'* C P U R A M E Q U A T E S *'***************************************%MYWS EQU >8300 MY WORKSPACE)MYWS2 EQU >8320 SECOND WORKSPACEPTSTAT EQU >8320 PTSTATџ**********џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ.SAL EQU >1B00 SPRITE ATTRIBUTE LIST$CT EQU >2000 COLOR TABLE.SVT EQU >1F00 SPRITE VELOCITY TABLE/SDL EQU >1C00 SPRITE DESCRIPTOR LIST1PDT EQU >0000 PATTERN DESCRIPTOR TABLEџ*************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ.SNDPNT EQU >83CC POINTER TO SOUND LIST#STRTSD EQU >83CE START BYTE$SVVDP1 EQU >83D4 SAVE VDP R10SCNTIM EQU >83D6 SCREEN TIME OUT COUNTER/RAMFLG EQU >83FD VDP RAM FLAG FOR SOUNDџNEџ**********************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ(* DATE STARTED: 1/15/86 *(* *(****************************************'***************************************'* MEMORY MAPPED E Q U A T E S *'***************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ#LPOWER EQU >834A LAST POWER"LGEAR EQU >834B LAST GEAR#LSPEED EQU >834C LAST SPEED"LFUEL EQU >834D LAST FUEL&LALT EQU >834E LAST ALTITUDE* EQU >834F " HEAD EQU >8350 HEADINGџFLAPџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&* EQU >833A FOR VSBW,VSBR* EQU >833C "* EQU >833E "**>>> GAUGES RAM LOCATIONS*GEAR EQU >8340 0=UPSPEED EQU >8341 0-150!ALT EQU >8342 0-10,000* EQU >8343 "џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ(HORIZY EQU >8332 HORIZON Y PIXEL-HORZYL EQU >8333 HORIZON Y LEFT PIXEL(HORZYR EQU >8334 HORIZON Y RIGHT'HORZXL EQU >8335 HORIZON X LEFT(HORZXR EQU >8336 HORIZON X RIGHTџEMP3 EQU SAVBXAџ832E "џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&* EQU >8322 FOR VSBW,VSBR#Y1 EQU >8324 FOR LINALGX1 EQU >8326 "Y2 EQU >8328 "X2 EQU >832A "9ROWS EQU >832C FOR BOX ROUTINE (ONLY TEMPORARY)COLS EQU >832E "џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћLHEAD EQU >8352,ROT EQU >8354 ROTATION -45 TO +45&LROT EQU >8355 LAST ROTATIONJINTF EQU >8356 INTERRUPT FLAG 0=NOT IN INTERRUPT SERVICE ROUTINE.BRAKE EQU >8357 BRAKE FLAG 0=OFF 1=ONџ50 HEADINGџFLAPџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ#PITCH EQU >8344 -79 TO +79%FLAP EQU >8345 0-29 DEGREES#FUEL EQU >8346 0-29 UNITSPOWER EQU >8347 0-77**>>> SAVED GAUGES RAM LOCATIONS*#LPITCH EQU >8348 LAST PITCH"LFLAP EQU >8349 LAST FLAPџ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћDHORIZF EQU >8337 HORIZON FLAG FOR LINALG 0=NOT DOING HORIZON1SECOND EQU >8338 SECONDS COUNTER FOR FUEL,HITS EQU >8339 HITS ON ME BY ENEMY*P* THESE LOCATIONS MAY BE USED AS TEMPS AS LONG AS VDP SINGLE BYTES AREN'T CALLED*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћSAVBXA EQU >8330 "(TEMPV EQU ROWS TEMP FOR VDPADD(TEMPC EQU COLS TEMP FOR WCOUNT&TEMPL EQU SAVBXA TEMP FOR WLOCTEMP1 EQU ROWS+TEMP2 EQU COLS FOR TEMP LOCATIONSTEMP3 EQU SAVBXAџ832E "џ*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ(LBRAKE EQU >8358 LAST BRAKE FLAG3ONGRND EQU >8359 ON GROUND FLAG 0=ON GROUND(KDELAY EQU >835A KEY DELAY VALUE* FREE EQU >835B6SPDDLY EQU >835C 2 BYTES FOR SPEED DELAY VALUE*RUNSIZ EQU >835E RUNWAY SIZE VALUEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ2EDELAY EQU >8369 ENEMY DELAY VALUE (0-255)%RDELAY EQU EDELAY RUNWAY DELAY,ESEC EQU >836A ENEMY SECONDS VALUE'RSEC EQU ESEC RUNWAY SECONDS$ETIMER EQU >836B ENEMY TIMER%RTIMER EQU ETIMER RUNWAY TIMERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ6COMBFL EQU >8360 COMBAT FLAG - 0=NOT IN COMBAT6BULLFL EQU >8361 BULLET FLAG - 0=NOT ON SCREEN2BULLSZ EQU >8362 BULLET SIZE - 0 THROUGH 5'EDIST EQU >8363 ENEMY DISTANCE$RDIST EQU EDIST RUNWAY DISTџSIZE VALUEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'* RESERVED AT ALL TIMES *'***************************************)KEYBRD EQU CPURAM+>74 KEYBOARD TO SCAN%KEY EQU CPURAM+>75 KEY RETURNED#JOYY EQU CPURAM+>76 JOYSTICK Y#JOYX EQU CPURAM+>77 JOYSTICK Xџ*џ VISџAY TIMERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&DOTYOR EQU >839C DOTS Y ORIGIN(DOTDLY EQU >839D DOT DELAY VALUE6DOTCNT EQU >839E # OF DOT/LINES PASSED (8 MAX)3DOTY EQU >839F CURRENT RUNWAY DOT Y COORD*+XML EQU >837E XML RETURN ADDRESS*џ VISџAY TIMERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ2ETHERE EQU >836C ENEMY THERE (0=NOT THERE)%RTHERE EQU ETHERE RUNWAY THERE8ENEED EQU >836D ENEMY BEARINGS NEEDED 0=DO NEED&RNEED EQU ENEED RUNWAY NEEDED6RUNVIS EQU >836E RUNWAY VISIBLE FLAG 0=NOT VISџAY TIMERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ"EALT EQU >8364 ENEMY ALT#RALT EQU EALT RUNWAY ALT#EHEAD EQU >8366 ENEMY HEAD'RHEAD EQU EHEAD RUNWAY HEADING)ESIZE EQU >8368 ENEMY SIZE (0-3)*RSIZE EQU ESIZE RUNWAY SIZE (0-7)џ DISTџSIZE VALUEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ.LANDNG EQU >835F LANDING 0=NOT LANDING'***************************************'* >8360 - >836F ALL ARE USED FOR TEMP *'* STORAGE DURING COMBAT/LANDING MODE. *'***************************************џUNSIZ EQU >835E RUNWAY SIZE VALUEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ/MISSNS EQU >8382 # OF MISSIONS COMPLETE1OLIST EQU >8384 OBJECT TRAJ LIST POINTER+ODELAY EQU >8386 OBJECT DELAY VALUE+OTHERE EQU >8388 OBJECT THERE 1=YES'***************************************џDDRESS*џ VISџAY TIMERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+WEATHR EQU >836F WEATHER CONDITIONS'***************************************'* RAM DOTS FOR LANDING STRIPS *'***************************************6RAMDOT EQU >8390 TEMP RAM RUNWAY DOT LOCATIONS*џBLE FLAG 0=NOT VISџAY TIMERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&RANDOM EQU CPURAM+>78 RANDOM NUMBER#TIMER EQU CPURAM+>79 TIMER BYTE$STATUS EQU CPURAM+>7C STATUS BYTE$MOTION EQU CPURAM+>7A MOTION BYTE-INTWS EQU CPURAM+>C0 INTERRRUPT WORKSPACE&GPLWS EQU CPURAM+>E0 GPL WORKSPACEџџ VISџAY TIMERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ"EXPSND EQU SNDBUF EXPLOSIONPLNSND EQU EXPSND+SNDLN1 PLANE#OFFSND EQU PLNSND+SNDLN2 SOUNDS OFF'***************************************'* D A T A S T A T E M E N T S *'***************************************џ00 VDP ADDR OF SOUND LISTSџ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ4SOUND1 BYTE 7,>9F,>BF,>DF,>E7,>F0,>C0,>07,5 EXPLODE BYTE 1,>F1,18* BYTE 1,>F2,10 BYTE 1,>F3,26* BYTE 1,>F4,14 BYTE 1,>F5,34* BYTE 1,>F7,18 BYTE 1,>F9,20 BYTE 1,>FF,0SNDLN1 EQU $-SOUND1*џ EQU $џ R11џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћR3LB EQU MYWS+7 R3R4LB EQU MYWS+9 R4R5LB EQU MYWS+11 R5R6LB EQU MYWS+13 R6R7LB EQU MYWS+15 R7R8LB EQU MYWS+17 R8R9LB EQU MYWS+19 R9R10LB EQU MYWS+21 R10R11LB EQU MYWS+23 R11џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'***************************************'* R E G I S T E R E Q U A T E S *'***************************************VDPADD EQU 0 R0!RLOC EQU 1 R1 R PWLOC EQU 1 R1!RCOUNT EQU 2 R2 F VџIMERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћBVDPREG DATA >02E2,>06FF,>0336,>0304 VDP REGS BIT MAP MODE4ZEROES DATA 0,0,0,0 CLEAR COLOR TABLE'***************************************'* B Y T E S T A T E M E N T S *'***************************************џSOUND LISTSџ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ9SOUND2 BYTE 6,>A7,>3F,>C9,>3F,>B4,>D4,255 PLANE SOUND BYTE 2,>BF,>DF,0SNDLN2 EQU $-SOUND2*6SOUND3 BYTE 4,>9F,>BF,>DF,>FF,0 SOUND OFFSNDLN3 EQU $-SOUND3 SOUNDL EQU $-SOUNDS*0SNDBUF EQU HIVDP+>300 VDP ADDR OF SOUND LISTSџ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћR12LB EQU MYWS+25 R12R13LB EQU MYWS+27 R13R14LB EQU MYWS+29 R14R15LB EQU MYWS+31 R15'***************************************'* S O U N D L I S T E Q U A T E S *'*************************************** SOUNDS EQU $џ R11џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ!WCOUNT EQU 2 R2 O D'***************************************'* WORKSPACE E Q U A T E S *'***************************************R0LB EQU MYWS+1 R0R1LB EQU MYWS+3 R1R2LB EQU MYWS+5 R2џ F VџIMERџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ( TEXT 'DESIGNED BY: JOHN PHILLIPS'POWERM BYTE 10 TEXT 'ENGINE PWR' FUELM BYTE 4 TEXT 'FUEL' GEARM BYTE 4 TEXT 'GEAR' ZERO3 BYTE 3 TEXT '000' ZERO5 BYTE 5 TEXT '00000' UPM BYTE 4 TEXT ' UP 'џLETџ*џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ. BYTE 11*8+1,21*8,>88,>00 RIGHT BULLET' DATA >C080,>8C01 ENEMY DATA >C080,>A001* DATA >D000 REST ARE OFF'***************************************'* T E X T S T A T E M E N T S *џ LEFT BULLETџ*џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'*>>> SCREEN PIXEL ORIGINS AND RANGES <<*FLPOY1 BYTE 18*8FLPX1 BYTE 5*8FLPX2 BYTE 6*8-1*PWROX1 BYTE 4*8-1PWRY1 BYTE 20*8+1PWRY2 BYTE 21*8-2*GASOX1 BYTE 15*8-1GASY1 BYTE 20*8+1GASY2 BYTE 21*8-2*PITOYP BYTE 16*8-1PITOYN BYTE 16*8џ2*џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћH00 BYTE >00H01 BYTE >01H02 BYTE >02H03 BYTE >03H04 BYTE >04*H05 BYTE >05H06 BYTE >06H07 BYTE >07H08 BYTE >08*H09 BYTE >09H0A BYTE >0A*H0B BYTE >0B*H0C BYTE >0C*H0D BYTE >0D*H0E BYTE >0EџLISTSџ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DOWNM BYTE 4 TEXT 'DOWN' FLAPM BYTE 4 TEXT 'FLAP' PITCHM BYTE 5 TEXT 'PITCH' BLANKM BYTE 5 TEXT ' 'DONEM BYTE 14 TEXT 'PRESS ANY KEY!'&**************************************џ BYTE 4 TEXT ' UP 'џLETџ*џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'*************************************** OPTH BYTE 8 TEXT '4A FLYER'WEATHM BYTE 26( TEXT 'PRESS W FOR RANDOM WEATHER'COPYRM BYTE 18 TEXT '@1986 J. PHILLIPS'PRESSM BYTE 18 TEXT 'RELEASE ALPHA LOCK'EGOM BYTE 26џULLETџ*џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћPITX1 BYTE 28*8PITX2 BYTE 29*8-1*GRNOY1 BYTE 12*8-1GRNDY1 BYTE 8*8-1GRNX1 BYTE 08*8GRNX2 BYTE 24*8-1*BLUOY1 BYTE 8*8-1BLUDY1 BYTE 4*8-1* EVEN(SALINI BYTE 5*8+1,15*8,>80,>00 XHAIRS- BYTE 11*8+1,9*8,>84,>00 LEFT BULLETџ*џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ*H0F BYTE >0F*HC0 BYTE >C0HD0 BYTE >D0HFF BYTE >FF*%*>>> THE FOLLOWING ARE FOR GAUGES <<<*FLPMAX BYTE 32SPDMAX BYTE 154ALTMAX DATA 30000PITMIN BYTE -79PITMAX BYTE 79GASMAX BYTE 32PWRMAX BYTE 80ROTMIN BYTE -32ROTMAX BYTE +32*џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&* CRASH MESSAGES *&**************************************"CRASHM TEXT ' SPEED TOO HIGH ' 0 TEXT ' ON GROUND! '" TEXT ' GEAR DOWN ' 1 TEXT ' OVER 125 KNOTS '! TEXT ' BATTLE LOST! ' 2џ'џLETџ*џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'***************************************#CPYRIT DATA >3C42,>99A1,>A199,>423C#SPEEDP DATA >FF80,>9BA2,>BB8A,>B2FF# DATA >FF00,>BBA2,>B322,>3BFF# DATA >FF01,>B129,>2929,>B1FF#HEADP DATA >FF80,>9292,>9E92,>92FFџ E R D E F I N E S *џџLETџ*џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ" TEXT ' SPEED TOO LOW ' 6 TEXT ' ON APPROACH! '" TEXT ' WINGS BROKE DUE' 7 TEXT ' TO HEAVY ICE! '" TEXT 'ENGINE EXPLOSION' 8 TEXT ' DUE TO HEAT! '" TEXT ' SPEED TOO HIGH ' 9џOST! ' 2џ'џLETџ*џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# DATA >0102,>0408,>1020,>4080 DATA >12340RBULL DATA >8040,>2010,>0804,>0201 >88 DATA >1234 DATA >1234 DATA >1234* ENEMYS EQU $*4 DATA >00F8,>20F8,>5000,>0000 >8C PLANE 0 DATA >1234џ,>0000џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ#POSPLN DATA >1C24,>42F2,>FF0F,>0000# DATA >0000,>1C24,>42F2,>FF0F'***************************************'* S P R I T E D E F I N I T I O N S *'*************************************** SPRITE EQU $*џ4F,>FFF0# DATA >3824,>424F,>FFF0,>0000џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# DATA >FF00,>F384,>E784,>F4FF# DATA >FF01,>39A5,>A5A5,>B9FF#BRAKEP DATA >FF80,>BBAA,>B3AB,>BAFF# DATA >FF00,>92AA,>3B2A,>AAFF# DATA >FF01,>B9A1,>31A1,>B9FF#ALTP DATA >FF80,>8995,>959D,>95FF# DATA >FF00,>1D08,>0808,>C9FFџ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ TEXT 'ON SLICK RUNWAY!'# TEXT 'LANDED SAFELY. ' 10 TEXT 'CARGO BAYS LEFT!'# TEXT 'MISSION COMPLETE' 11 TEXT 'CONGRATS . . JMP''***************************************'* C H A R A C T E R D E F I N E S *џџLETџ*џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ TEXT ' SHOT BY ENEMY! '" TEXT ' CRASHED INTO ' 3 TEXT ' GROUND! '" TEXT ' PLANE RAN OFF ' 4 TEXT ' END OF RUNWAY '" TEXT ' GEAR UP ' 5 TEXT ' WHILE LANDING! 'џLE LOST! ' 2џ'џLETџ*џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ0XHAIRS DATA >F080,>8080,>0000,>0101 >80# DATA >0701,>0100,>8080,>80F0# DATA >0F01,>0101,>0000,>0000# DATA >C000,>0000,>0101,>010F0LBULL DATA >1234 >84 DATA >1234џATA >3824,>424F,>FFF0,>0000џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# DATA >FF00,>DD89,>8989,>C9FF# DATA >FF00,>5C52,>5252,>DCFF# DATA >FF01,>E181,>C181,>E1FF#ZERPLN DATA >0000,>0018,>2442,>FFFF# DATA >0000,>0018,>2442,>FFFF#NEGPLN DATA >0000,>3824,>424F,>FFF0# DATA >3824,>424F,>FFF0,>0000џ1џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA >1234 DATA >1234*4 DATA >00FE,>38FE,>2800,>0000 >90 PLANE 1 DATA >1234 DATA >1234 DATA >1234*4 DATA >00FB,>2E2E,>FF11,>0000 >94 PLANE 2 DATA >1234# DATA >0000,>8080,>E000,>0000џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ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 SWPB R3 RESTORE*џL RETURN *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* FILE IS > G P L L N K <4GRMWA EQU >9C02 GROM WRITE ADDRESS REGISTER1GRMRD EQU >9800 GROM READ DATA REGISTER5*****************************************************5* START SCANNING FOR A >0FF0 IN GROM FOR XML RETURN *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ3 DATA >1028,>4422,>110A,>050A >A4 RUNWAY# DATA >152A,>54E8,>7123,>0000# DATA >1038,>5CA8,>50A0,>40A0# DATA >10A0,>401C,>BEC0,>1000*5 DATA >0008,>1412,>2140,>8080 >A8 MOUNTAIN# DATA >100C,>0202,>0100,>0000џ0џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA >1234*4 DATA >FE23,>23FF,>0302,>0200 >98 PLANE 3 DATA >1234# DATA >7FC4,>C4FF,>C040,>4000 DATA >1234*< DATA >000E,>1F3F,>7F4F,>743F >9C EXPLODING PLANE# DATA >1E19,>373E,>3E1F,>0C00џ000,>0000џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' 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 CI R4,>F000 >F0?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ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! *5*****************************************************џ GROM FOR XML RETURN *џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# DATA >0000,>40A0,>1088,>4442# DATA >0100,>0000,>0080,>4040 џ8,>7123,>0000# DATA >1038,>5CA8,>50A0,>40A0# DATA >10A0,>401C,>BEC0,>1000*5 DATA >0008,>1412,>2140,>8080 >A8 MOUNTAIN# DATA >100C,>0202,>0100,>0000џ0џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# DATA >0000,>80E0,>787C,>EEDE# DATA >DEFC,>78F0,>E0C0,>0000*1SCENER DATA >0000,>6066,>7677,>7F7F >A0 CITY# DATA >FFFF,>FFFE,>D56A,>351F# DATA >0000,>00C0,>C0E0,>ECFC# DATA >FEFE,>DEAC,>58B0,>60C0*џE1F,>0C00џ000,>0000џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ*FILE IS > I N I T S <&**************************************&* INITIALIZATIONS FOR STARS PROGRAM *&************************************** EVEN MAIN EQU $*STARS LWPI MYWS LOAD MY WORKSPACEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ1 SWPB R0 SENDING HIGH BYTE FIRST. MOVB R0,@GRMWA FOLLOWED BY LOW BYTE3 LI R0,GPLRTN GET DESIRED RETURN ADDRESS8 MOV R0,@>8300 PUT RETURN ADDRESS IN XML TABLE+* NOTE: THIS ADDRESS MUST ALWAYS BE >8300!!џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&************************************** JPLLNK LIMI 03 MOVB @>8373,R1 FETCH GPL SUBSTACK POINTER' SRL R1,8 MAKE IT A WORD' AI R1,>8302 ADD PAD OFFSET= MOV @XML,*R1 PUT XML INSTRUCTION ADDRESS ON STACKџNџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ- 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 ADDRESS0 LIMI 2 ENABLE INTERRUPTS AGAINџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ2 BL @GPL GET >0FF0 FOR GROM RETURN+ BL @RANDNO SET RANDOM SEED UP******************************** SET TO BIT MAP MODE, NOW ********************************/ CLR R0 CHANGE TO BIT MAP MODEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+ LWPI >83E0 LOAD GPL WORKSPACE+ B @>006A BRANCH TO GPL CODE GPLRTN LIMI 2- LWPI MYWS RESTORE MY WORKSPACE/ RT RETURN TO MAIN PROGRAMџXML TABLE+* NOTE: THIS ADDRESS MUST ALWAYS BE >8300!!џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ; SWPB R1 HIGH BYTE CONTAINS OFFSET INTO PAD4 MOVB R1,@>8373 UPDATE GPL SUBSTACK POINTER2 MOV *R11+,R0 GETCH GPL ROUTINE ADDRESS3 MOVB R0,@GRMWA SET UP GPL PROGRAM COUNTERџL INSTRUCTION ADDRESS ON STACKџNџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ) RT RETURN TO CALLER&**************************************&* THIS IS THE SUBROUTINE CODE TO *&* REPLACE GPLLNK. REGISTERS 0 AND 1 *&* OF YOUR CALLING WORKSPACE ARE *&* ALTERED. SO IS >8300 CPU RAM. *џRUPTS AGAINџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ3 LI R1,VDPREG POINT TO VDP REGISTER DATA, LI R2,8 8 REGISTERS TO LOAD.BMLOOP MOVB *R1+,@R0LB GET DATA FOR REGISTER, BL @JPVWTG WRITE TO REGISTER& AI R0,>0100 NEXT REGISTERџT MAP MODEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DEC R2 DONE? JNE THIRDS NOT YET'***************************************'* LOAD CHARACTER SETS INTO CPU BUFFER *'*************************************** * UPPER CASE7 LI R0,HIVDP+>100 WRITE CHAR SET TO HIVDP, FIRSTџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ0 BL @CLRCAP CLEAR COLOR AND PATTERN2* BL @CLRVDP CLEAR EVERYTHING OUT* DATA CT,>1800,>0000* BL @CLRVDP* DATA PDT,>1800,>0000+ BL @JPVWTR BLACK BACKGROUND DATA >0711*џEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA PRESSM,>F4F4*$ BL @JPVWTR SCREEN ON DATA >01E2 BL @PAUSE%*************************************%* STATIC VARIABLES. MUST NEVER BE *%* CHANGED BY ZEROING CPU. *%*************************************џTџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'* CREATE TITLE SCREEN SEQUENCE *'*************************************** BL @JPVWTR# DATA >01A2 SCREEN OFF( BL @WRTVCL NULLIFY SPRITES DATA SAL,1,HD0* BL @WRTMSG BYTE 12,12џ****џHIVDP, FIRSTџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ MOV R0,@>834A SET FAC& MOVB @R0LB,@STATUS CLEAR STATUS# BL @JPLLNK USE GPLLNK# DATA >18 SMALL CAPS* BL @WRTVCL DATA RAMSET+>200,8,CPYRIT* * LOWER CASEџVDP+>100 WRITE CHAR SET TO HIVDP, FIRSTџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ( LI VDPADD,SIT START OF SCREEN( CLR R1 START CHAR OF 00 LI R2,>300 >300 PATTERNS TO SCREEN*THIRDS BLWP @JPVSBW WRITE A PATTERN% AI R1,>0100 NEXT PATTERN) INC VDPADD NEXT SCREEN SPOTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DEC R2 DONE? JNE BMLOOP NOT YET7 MOVB @VDPREG+1,@SVVDP1 KEEP SPRITES DOUBLE SIZED&**************************************&* FORMAT SCREEN >00 TO >FF 3 TIMES *&**************************************џEџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA OPTH,>F0F0* BL @WRTMSG BYTE 15,3 DATA WEATHM,>F6F6* BL @WRTMSG BYTE 17,7 DATA COPYRM,>F0F0* BL @WRTMSG BYTE 2,3 DATA EGOM,>F0F0* BL @WRTMSG BYTE 23,7џDP, FIRSTџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ7* LI R0,HIVDP+>300 WRITE CHAR SET TO HIVDP, FIRST * MOV R0,@>834A SET FAC&* MOVB @R0LB,@STATUS CLEAR STATUS#* BL @JPLLNK USE GPLLNK#* DATA >4A SMALL CAPS'***************************************џHIVDP, FIRSTџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ) MOVB @H04,@MISSNS 4 MISSIONS TO GO&**************************************&* CREATE OPTION SCREEN *&* ENTRY POINT FOR BACK KEY *&**************************************#BACK BL @JPVWTR SCREEN OFF DATA >01A2џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ? MOVB @RUNWY0,@HORIZY SET HORIZON Y NOW (@GTRNWY NEEDS). CLR @OTHERE NO OBJECTS THERE&**************************************&* GET RANDOM WEATHER IF W KEY WAS *&* PRESSED. *џRџ 80 BYTES TO CLEARџ2џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ MOVB @GASMAX,@FUEL* MOVB @FUEL,@LFUEL5 MOVB @H07,@RUNSIZ LARGEST RUNWAY SIZE POSSIBLE*&* >> THE FOLLOWING PREPARE FOR TAKEOFF*3 MOVB R0,@DOTDLY READY FOR IMMEDIATE UPDATE LI R3,1џMOVB R0,@LGEARџ 80 BYTES TO CLEARџ2џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'***************************************'* INITIALIZE ANY VARIABLES FOR THE *'* GAME. *'***************************************- LI R3,PTSTAT CLEAR OUT ALL MY CPU+ LI R4,40 80 BYTES TO CLEARџ2џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ0 BL @CLRCAP CLEAR COLOR AND PATTERN'***************************************'* LOAD ANY SPRITE PATTERNS HERE *'***************************************/ BL @GETSDL GET SPRITE DESCRIPTORSџ SCREEN OFF DATA >01A2џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&**************************************3GTWTHR MOVB @KEY,R3 GET KEY PRESSED FROM PAUSE SRL R3,8 TO LSB! CI R3,87 'W' KEY?, JNE OFFTOR NO, BUT OFF TO RAM?%GTWTHL BL @RANDNO GET RANDOM #џ TO CLEARџ2џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* MOV R3,@SPDDLY >> SPEED DELAY VALUE LI R3,8*8+1*256 ORIGIN MOVB R3,@DOTYOR ITS SET6 MOVB R3,@DOTY CURRENT DOTS WILL BE SET HERE9 MOVB @H0A,@DOTCNT 1 SET OF DOTS, THEN RUNWAY MOVESџ0,@LGEARџ 80 BYTES TO CLEARџ2џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* CLR R0 HERE IS THE VALUE)LOGGS MOV R0,*R3+ ZERO THESE BYTES DEC R4 DONE? JNE LOGGS NOT YET* LI R0,1*256% MOVB R0,@GEAR GEAR IS DOWN* MOVB R0,@LGEARџ 80 BYTES TO CLEARџ2џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+ DATA 11*32 11 SPRITE PATTERNS&**************************************&* LOAD SOUND LISTS TO VDP RAM *&**************************************) BL @WRTVCL LOAD SOUND LISTS DATA SNDBUF,SOUNDL,SOUNDSџ DATA >01A2џџџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA LAND 12 F" DATA IFIRE 13 V POWER( DATA COMBAT 14 C COMBAT MODE0 DATA BRDINC 15 Z NOSE DOWN ROLL LEFT# DATA IBRAKE 16 B BRAKES! DATA IGEAR 17 G GEARџA BRDINC 11 Tџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* FILE IS > I N P U T <$WHERE1 DATA INOSEU 0 X NOSE UP DATA BRDINC 1 A& DATA IROLLL 2 S ROLL LEFT' DATA IROLLR 3 D ROLL RIGHT. DATA BRDINC 4 W NOSE UP ROLL LEFTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ5FTPSN BL @GTRNWY GET RUNWAY FROM ROM INTO RAM0 BL @PLAYSC MAKE THE PLAYING SCREEN' BL @WRTVCL SET UP SPRITES DATA SAL,5*4+1,SALINI$ BL @GAUGES MARK GAUGES*$ BL @JPVWTR SCREEN ONџ******џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ ANDI R10,>3 0-3 JEQ GTWTHL SWPB R10 TO MSB) MOVB R10,@WEATHR HAVE WEATHER VAR JMP FTPSN&**************************************&* PROVISION FOR FUTURE EXPANSION *&**************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ! DATA IFIRE 18 Q FIRE% DATA IPWRUP 19 1 POWER UP*&WHERE2 DATA IFLAPD 0 M FLAP DOWN DATA BRDINC 1 H( DATA BRDINC 2 J RUDDER LEFT) DATA BRDINC 3 K RUDDER RIGHT DATA BRDINC 4 Wџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ& DATA INOSED 5 E NOSE DOWN/ DATA BRDINC 6 R NOSE UP ROLL RIGHT' DATA IPWRDW 7 2 POWER DOWN DATA BRDINC 8 3 DATA BRDINC 9 4 DATA BRDINC 10 5 DATA BRDINC 11 Tџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA >01E2'***************************************'* SETUP INTERRUPT SERVICE ROUTINE *'*************************************** LIMI 0 LI R0,INTERR MOV R0,@EXINTR* MOVB @H00,@INTF LIMI 2 џ SCREEN ONџ******џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ OFFTOR CI R3,132 CTRL-D?! JNE FTPSN NO. EXIT. B @>A000 GOTO MEMORY EXPANSION'***************************************&* FORMAT THE SCREEN FOR GAME PLAY. *&**************************************џ**********************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ$ DATA IFLAPU 5 I FLAP UP DATA BRDINC 6 O DATA BRDINC 7 7 DATA BRDINC 8 8 DATA BRDINC 9 9 DATA BRDINC 10 10 DATA BRDINC 11 P$ DATA LAND 12 L LANDINGџ 4 Wџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ*BRDINC AB @H01,@KEYBRD ADD 1 TO KEYBOARD$ CB @KEYBRD,@H03 PAST SPLIT?( JNE GOBRD NO, SO CONTINUE% B @INPTRT YES, SO EXIT%GOBRD BL @SCANKY SCAN FOR KEY( CLR R3 PREPARE FOR KEYџLG NO FIRE, YETџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ********************************************* *** ROUTINE TO TEST KEYBOARD AND JOYSTICKS *** RETURN LINK IN R13 *********************************************$INPUT MOV R11,R13 SAVE RETURNџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&**************************************INPTRT B *R13 RETURN*%*>>>>> TYPICALLY DOWN ROUTINES <<<<<<*#IGEAR MOVB @ONGRND,R3 ON GROUND?- JEQ DOWNSE YES, SO CAN'T ADJUST** BL @DEBOUN SAME AS LAST KEY?*џџ GET DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ JMP SCANGSCANG2 MOV @WHERE2(R3),R10'SCANG B *R10 BRANCH TO DEST#CHKJOY MOV @JOYY,R3 JOY MOVED?) JEQ BRDINC NO, SO TRY AGAIN" MOVB @JOYY,R3 JOY MOVED! JGT JNOSED MOVED UPџE1(R3),R10 GET DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ MOVB @KEY,R3 COPY& CI R3,>FF00 KEY PRESSED ?( JEQ CHKJOY NO, CHECK JOYST'*CHKKEY CI R3,7*256 7 OR GREATER?=* JLE KVALID YES, SO ONLY CHECK FOR FIRE OR PAUSE"*OVER7 CI R3,13*256 OVER 19?џE, YETџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# MOVB @KDELAY,R3 MOVE TIME? JEQ GINPUT YES SB @H01,@KDELAY NO JMP INPTRT$GINPUT LI R3,>90*256 RESET DELAY MOVB R3,@KDELAY, CLR @KEYBRD CHECK THE KEYBOARDY%* MOVB @H00,@FIRFLG NO FIRE, YETџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA IFIRE 13 . DATA COMBAT 14 , DATA BRDINC 15 N# DATA IBRAKE 16 / BRAKES! DATA IGEAR 17 ; GEAR! DATA IFIRE 18 Y FIRE DATA BRDINC 19 6џATA LAND 12 L LANDINGџ 4 Wџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ# JLT JNOSEU MOVED DOWN MOVB @JOYX,R3 JGT JROLLR JLT JROLLL*JNOSEU B @INOSEUJNOSED B @INOSEDJROLLR B @IROLLRJROLLL B @IROLLL&**************************************&* RETURN POINT FOR MOVING SUBROUTINES*џ GET DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* JHE KVALID%* JMP GOBRD INVALID KEY!*$KVALID SWPB R3 MOVE TO LOW& SLA R3,1 MULTIPLY BY 2( CB @KEYBRD,@H01 SCANNING FIRST?' JNE SCANG2 NO, SCANNING 2&SCANG1 MOV @WHERE1(R3),R10 GET DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ$IGEARK CB @GEAR,@H01 IS IT DOWN?' JEQ PLGUP YES, SO PUT UP! MOVB @H01,@GEAR PUT DOWN JMP IGEARX#PLGUP MOVB @H00,@GEAR GEAR IS UPIGEARX JMP DOWNSG&**************************************џSAME AS LAST KEY?*џџ GET DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ)DOWNSE B @BRDINC SAVE KEY PRESSED*'*>>>>>> TYPICALLY UP SUBROUTINES <<<<<<*IFLAPU CB @FLAP,@FLPMAX JEQ UPSE AB @H01,@FLAP# MOVB @ONGRND,R3 ON GROUND?5 JEQ IFLPUX YES, SO FLAP HAS NO BEARING!џ DO GAUGESџ DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&**************************************#IROLLL MOVB @ONGRND,R3 ON GROUND?( JEQ DOWNSE YES, SO NO ROLL( MOVB @RUNVIS,R3 RUNWAY VISIBLE?, JNE DOWNSE YES, SO DO NOT ROLL$ CB @ROT,@ROTMIN ROLLED -45?џP DOWNSGџ DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' BL @IUSPEE INCREASE SPEEDIFLPDX JMP DOWNSG&**************************************IPWRDW MOVB @POWER,R3 JEQ DOWNSE SB @H01,@POWER' BL @SNDCHG DECREASE SOUND DATA 0 LOWER JMP DOWNSGџ DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ'IBRAKE MOVB @ONGRND,R3 ON THE GROUND?3 JNE IBRAKX NO, SO BRAKE HAS NO EFFECT* BL @DEBOUN*"IBRAKK CB @BRAKE,@H01 IS IT ON?' JEQ PBROFF YES, SO PUT UP MOVB @H01,@BRAKE PUT ON JMP IBRAKXџ*џџ GET DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' BL @IDSPEE DECREASE SPEEDIFLPUX JMP UPSG&**************************************IPWRUP CB @POWER,@PWRMAX JEQ UPSE" MOVB @FUEL,R3 CHECK GAS/ JEQ UPSE NONE LEFT, SO NO POWER AB @H01,@POWERџGAUGESџ DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ. JEQ IRLPL YES, SO CAN'T GO MORE SB @H01,@ROT( BL @HORIZL LEFT HORIZON UP!IRLPL BL @PLNMOV PLANE UP DATA 3IROLLX JMP DOWNSG&**************************************"DOWNSG BL @GAUGES DO GAUGESџ DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&**************************************INOSED MOVB @ONGRND,R3 JEQ DOWNSE CB @PITCH,@PITMIN JEQ INDPL SB @H01,@PITCH% BL @HORIZU HORIZON UP!!!INDPL BL @PLNMOV PLANE UP DATA 0 JMP DOWNSGџ DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%PBROFF MOVB @H00,@BRAKE BRAKE IS OFFIBRAKX JMP DOWNSG&**************************************IFLAPD MOVB @FLAP,R3 JEQ DOWNSE SB @H01,@FLAP# MOVB @ONGRND,R3 ON GROUND?3 JEQ IFLPDX YES, SO FLAP HAS NO EFFECTџ GET DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ0 JNE UPSE YES, SO NO ROLL ALLOWED CB @ROT,@ROTMAX JEQ IRRPL AB @H01,@ROT) BL @HORIZR HORIZON RIGHT UP#IRRPL BL @PLNMOV PLANE LEFT DATA 2IROLRX JMP UPSGџ MOVB @RUNVIS,R3 RUNWAY VISIBLEџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ8 JEQ INOSI2 NO, SO CAN RAISE PITCH NORMALLY"INOSI1 MOVB @PITCH,R3 GET PITCH7 JLT INOSI2 NEGATIVE, SO THEY MAY INCREASE> JMP UPSG FUEL OUT . . CAN'T RAISE NOSE PAST 0*INOSI2 CB @PITCH,@PITMAX JEQ INUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ+ MOVB @LANDNG,R3 LANDED OR LANDING?5 JNE INOSIA YES, SO CAN'T TAKEOFF AGAIN!" MOVB @SPEED,R3 GET SPEED SRL R3,8 TO LSB# CI R3,60 SPEED >60?- JL UPSE NOT YET! NO TAKEOFF!џџ DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ% BL @SNDCHG CHANGE SOUND! DATA 1 INCREASE CB @WEATHR,@H03 HEAT?& JNE IPWRUX NO, SO IGNORE" MOVB @POWER,R3 GET POWER SRL R3,8 TO LSB CI R3,72 >72?џRџGAUGESџ DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&**************************************"UPSG BL @GAUGES DO GAUGESUPSE B @BRDINC&**************************************&* TOGGLE COMBAT MODE ON/OFF *&**************************************#COMBAT MOVB @ONGRND,R3 ON GROUND?џISIBLEџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ AB @H01,@PITCH, BL @HORIZD HORIZON MOVES DOWN!#INUPL BL @PLNMOV PLANE DOWN DATA 1 JMP UPSG&**************************************IROLLR MOVB @ONGRND,R3 JEQ UPSE' MOVB @RUNVIS,R3 RUNWAY VISIBLEџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* B @DOTAKE LET THEM TAKE OFF*#INOSIA MOVB @POWER,R3 POWER OUT?$ JNE INOSI0 NO, PROCEED: JMP INOSI1 YES, SO CAN'T RAISE PITCH OVER +0(INOSI0 MOVB @RUNVIS,R3 RUNWAY VISIBLE?џ NOT YET! NO TAKEOFF!џџ DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ JLE IPWRUX NO+ LI R10,8 YES, SO EXPLOSION! B @CRASH*IPWRUX JMP UPSG&**************************************#INOSEU MOVB @ONGRND,R3 ON GROUND?# JNE INOSIA NO, IN AIRџI R3,72 >72?џRџGAUGESџ DESTџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* JEQ COMBEX YES, SO NO EFFECT! MOVB @LANDNG,R3 LANDING?/ JNE COMBEX YES, SO NO COMBAT MODE*CKSAME BL @DEBOUN*(ICOMBK MOVB @COMBFL,R3 IN COMBAT MODE?) JNE COMBOF YES, SO TURN OFFџ ON GROUND?џISIBLEџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ, BL @WRTVCL NULLIFY ALL SPRITES DATA SAL,4*4,SALINICOMBEX B @BRDINC&**************************************&* THEY WISH TO LAND *&**************************************#LAND MOVB @ONGRND,R3 ON GROUND?џNTS OFFџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' MOVB @ETHERE,R3 ENEMY VISIBLE?4 JNE COMBEX YES, SO CAN'T CANCEL COMBAT*, CLR @COMBFL NO LONGER IN COMBAT**>>> FIX BUG LOCATED 4/25*+ CLR @ETHERE NO LONGER AN ENEMY*!* LIMI 0 INTS OFFџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ) CB @ETHERE,@H02 ENEMY EXPLODING?2 JEQ FIRESE YES, SO DON'T FIRE AT HIM2 LI R0,SAL+7 COLOR BYTE OF LEFT BULLET$ LI R1,>0600 RED BULLETS" BLWP @JPVSBW ON SCREENџFIRESE YES, SO EXITџNTS OFFџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ, BL @DIGTAL SHOW RUNWAY BEARING DATA 16*256+104+PDT DATA 5,EHEAD*LANDEX B @BRDINC'***************************************'* FIRE BULLETS. RETURN TO @BRDINC *'***************************************џ6,13,1,5џ?џNTS OFFџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* JEQ LANDEX YES, SO NO EFFECT( MOVB @COMBFL,R3 IN COMBAT MODE?+ JNE LANDEX YES, SO CAN'T LAND) MOVB @LANDNG,R3 ALREADY LANDING? JNE LANDEX- MOVB @H01,@LANDNG TURN ON LANDING FLAG*џOUND?џNTS OFFџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ.* LI R0,COMBFL CLEAR OUT COMBAT AREA* LI R1,8 * CLR R2*COMOFL MOV R2,*R0+ * DEC R1* JNE COMOFL * LIMI 2* LI R0,>F4F41 BL @FILL CLEAR OFF ENEMY READOUTS BYTE 15,13,3,5*џ INTS OFFџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ COMBON MOVB @H01,@COMBFL TURN ON- BL @WRTVCL COLOR BYTE OF XHAIRS% DATA SAL+3,1,H01 BLACK XHAIRS JMP COMBEX1COMBOF MOVB @BULLFL,R3 BULLETS STILL ON SCREEN?6 JNE COMBEX YES, SO CAN'T TURN OFF COMBATџND?џISIBLEџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ#IFIRE MOVB @ONGRND,R3 ON GROUND?+ JEQ FIRESE NO, SO IGNORE FIRE( MOVB @COMBFL,R3 IN COMBAT MODE?& JEQ FIRESE NO, SO IGNORE+ MOVB @BULLFL,R3 BULLETS ON SCREEN?% JNE FIRESE YES, SO EXITџNTS OFFџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ7 BL @RANDNO GET RANDOM DIRECTION FOR STRIP ANDI R10,>FF AI R10,505 MOV R10,@EHEAD USE @EHEAD FOR LANDING, TOO! LI R0,>F6F63 BL @FILL RED STRIP FOR LANDING HEAD BYTE 16,13,1,5џ?џNTS OFFџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ4 C *R0+,*R0+ POINT TO RIGHT BULLET COLOR$ BLWP @JPVSBW DO IT, TOO!- MOVB @H0A,@BULLSZ 9 BULLET SIZES TO GO' MOVB @H01,@BULLFL BULLETS NOW ONFIRESE B @BRDINC&**************************************џ, SO EXITџNTS OFFџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ4 DATA PLNSND+1,2,3*2+MYWS INTO R3+ ANDI R3,>0FFF MASK OFF SOUND BIT& MOVB R3,R4 MOVE HIGH MSB SLA R3,4 ADJUST& ANDI R3,>0FF0 GET RID OF LO AB R4,@R3LB RESETџSTџH TO LSBџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ MOVB @PITCH,R3$ SRL R3,10 /PITCH BY 4 A R3,@ALT MOV @ALT,R3$ CI R3,10000 OVER LIMIT? JLE IUALTE LI R3,10000 MOV R3,@ALT IUALTE B *R10&**************************************џH TO LSBџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ& ABS R3 MAKE POSITIVE$ SRL R3,2 DIVIDE BY 4* S R3,@ALT DECREASE ALTITUDE! JGT IDALTE STILL >0# CLR @ALT RESET TO 0IDALTE B *R10 EXITџ3,8 MOVE PITCH TO LSBџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ"* COMMOM GAUGE ALTER SUBROUTINES *"**********************************IDGAS MOV R11,R10 MOVB @FUEL,R3 JEQ IDGASE EXIT SB @H01,@FUELIDGASE B *R10 EXIT&**************************************IDSPEE MOV R11,R10џџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ$ MOV R10,R10 UP OR DOWN? JEQ LOWERS DOWNHIGHRS AI R3,-4 JMP LOHIRSLOWERS C *R3+,*R3+1LOHIRS MOV R3,R5 START DOING SECOND VOICE5 INCT R5 ALWAYS TWO HIGHER THAN FIRST MOV R3,R4џH TO LSBџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&* CHANGE SOUND. 0 GOES DOWN 1 GOES UP*&* RETURN IS IN R12 *&**************************************)SNDCHG MOV *R11+,R10 GET UP/DOWN FLAG$ MOV R11,R12 SAVE RETURN, BL @RDVCL READ RAM SOUND LISTџH TO LSBџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ&**************************************IUSPEE MOV R11,R10 CB @SPEED,@SPDMAX JEQ IUSPEX AB @H01,@SPEED IUSPEX B *R10&**************************************IUALT MOV R11,R10 C @ALT,@ALTMAX JEQ IUALTEџE PITCH TO LSBџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ MOVB @SPEED,R3 JEQ IDSPEX SB @H01,@SPEED IDSPEX B *R10&**************************************IDALT MOV R11,R10 MOV @ALT,R3 JEQ IDALTE# MOVB @PITCH,R3 GET SPEED* SRA R3,8 MOVE PITCH TO LSBџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ) JEQ CAREXT YES, MAY PROCEED1 BLWP @PLNSEC THIS SHOULD DO THE TRICK%CAREXT RT EXIT ROUTINE џ MULT BY 4 LI R1,>5500 >AA/2" SLA R1,1 MULT BY 2& CB *R0,R1 IS >6000 >AA?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ% MOVB @POWER,R3 IS POWER ON?. JEQ NOPLNS NO, SO NO PLANE SOUND= BL @SNDSUB YES, SO CONTINUE TO MAKE PLANE SOUND DATA PLNSND JMP MAINLG*#NOPLNS BL @SNDSUB SOUNDS OFF DATA OFFSND*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ* FILE IS > M A I N <&**************************************&* M A I N P L A Y I N G L O O P *&**************************************&* TEST FOR CARTRIDGE POSITION HERE *&**************************************џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ MOV R5,R6 ANDI R4,>000F ANDI R6,>000F SWPB R4 SWPB R6 SRL R3,4 SRL R5,4 AB R4,R3 AB R6,R5 ORI R3,>A000 ORI R5,>C000 MOV R5,R4 BL @WRTVCLџ MOV R3,R4џH TO LSBџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ.LM 1 .RM 36 .SP 2 @4A-FLYER .SP 6 !Programmed by: John M. Phillips  !Manual developed and written by: Martee Phillips .SP 12 "Copyright^^c^^1986 by Triton, Inc.!Solid State Cartridge program and!data base contents copyright^^c^^џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ%MAINLG JMP MAINL AND GO AGAIN(**************************************** TSTCAR LI R0,>1800 >6000/4" SLA R0,2 MULT BY 4 LI R1,>5500 >AA/2" SLA R1,1 MULT BY 2& CB *R0,R1 IS >6000 >AA?џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ' BL @TSTCAR TEST CARTRIDGEMAINL CLR @SCNTIM" BL @INPUT GET INPUT+ BL @TAKOFF CHECK FOR TAKEOFF!) BL @REALTM REAL TIME UPDATE* BL @LANDIT CHECK FOR LANDING*џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ DATA PLNSND+1,4,3*2+MYWS B *R12*"* DEBOUNCE FOR BRAKE, GEAR, COMBAT*DEBOUN MOV R11,R14 MOVB @KEY,R3DEBNL BL @SCANKY CB @KEY,R3 JEQ DEBNL B *R14џ0 MOV R5,R4 BL @WRTVCLџ MOV R3,R4џH TO LSBџџUPLџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћ1986 by John M. Phillips. .SP 2 See important warranty information at back of book. .BP #&@Introduction^^^^^^^^^^^^^^^^^^^^ .SP 2 #@Fasten^your^seat^belt^and^prepare @for^take-off^with^4A^Flyer!#@You're^the^pilot^of^the^4A^Flyer^ џџїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ%@* Face dangerous weather conditions  @* Monitor your fuel and power ^^gauges  @* Hear exciting sound effects  @* Use keyboard or Joystick ^^Controllers .BP %@&Flying^Weather^^^^^^^^^^^^^^^^^^^^   #@It's^perfect^flying^weather--or^isџanes  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ$&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   $@the^excitement^and^motion^of^flight"@as^you^pilot^your^own^plane^with @4A^Flyer! .SP 7 $&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .BP .SP 13 %&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  In 4A Flyer, you  џ.SP 3 џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ"high altitudes. Watch out for iceforming on the wings.  #Rain presents dangers when landing.#Be careful not to reduce your speedto quickly during a rainstorm.  $Heat can be dangerous during flight.#Monitor your engine power carefullyџeather isџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ clear skies.  There are four types of weather,three which provide additional"challenges to the pilot. The four!random weather conditions are the following:  !1. Clear--blue sky, green ground  2. Snow--blue sky, white ground  џult weather isџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ@it?^^Develop^your^skills^under@clear^blue^skies^or^hone^your"@skills^under^a^variety^of^weather"@conditions.^^The^choice^is^yours."@Just^remember,^different^types^of @weather^bring^different^dangers@during^flight! .SP3 џying^weather--or^isџanes  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ%@* Pilot the plane through take-off, ^^flight, combat, and landing ^^sequences.  $@* View the sky and horizon through ^^the cockpit window  "@* Control the motion of the plane ^^as you rush to intercept enemy ^^planes  @* Battle enemy planes  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ#@combat^plane!^^Start^your^engine, $@fly^into^the^sky,^navigate^through @hazardous^weather^conditions, @search^for^and^destroy^enemy!@planes,^and^land^safely--without!@running^out^of^fuel!^^Experience $&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .SP 3 џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ 3. Rain--grey sky, green ground  4. Heat--blue sky, red ground .BP .SP 13 %&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  Clear weather is perfect flying$weather, presenting no danger to theflight.  $Snow becomes a hazard when flying atџt weather isџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў їїџџџџџџџџџџџћ$&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  @Selecting^the^Weather^Option  "When the title screen appears, you"can press any key to play or press!@W to activate the random weather#option. If @W is not pressed on the$title screen, the default weather isџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў!їїџџџџџџџџџџџћto avoid overheating. .BP $@&The^Cockpit^^^^^^^^^^^^^^^^^^^^^^ .SP 2 "@You^see^the^instrument^panel^and $@the^view^through^the^front^window. $@The^instruments^show^the^status^of @the^flap^and^landing^gear,^the@amount^of^fuel^and^power,^theџr isџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў!їїџџџџџџџџџџџћgear must be up shortly aftertake-off to allow for a smooth!flight, and down during landing.  @6.^^Artificial^Horizon^Display  $The artificial horizon display looks!like two side by side triangles. When the plane is turned in oneџThe landingџow  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў!їїџџџџџџџџџџџћ Displays your altitude in feet, based on ground level.  @4.^^Pitch^Indicator  "A line divides the pitch indicator!in half. When blue appears above the center line, the nose of the#plane is heading up toward the sky.џr  џ feet) andџckpit^Window  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў!їїџџџџџџџџџџџћShows the runway, sky, horizon,"enemy planes, and current weather conditions.  @2.^^Flight^Computer  The center rectangle below thecockpit window is the flight"computer. When in combat mode, it#displays the altitude (in feet) andџckpit^Window  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў!їїџџџџџџџџџџџћ"@speed,^heading,^altitude,^and^the#@pitch^of^the^plane.^^An^artificial#@horizon^indicator^shows^the^actual@tilt^of^the^plane.^^The^flight %&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .SP 3 %&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .SP 2 џd^power,^theџr isџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў!їїџџџџџџџџџџџћ$direction, the sky and ground appearto be slanted in the opposite#direction. The triangles tilt left"or right, indicating the directionthe plane is banking. Use the"artificial horizon display to keep"track of which direction the plane is banking.  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў!їїџџџџџџџџџџџћ#When green appears below the centerline, the nose of the plane is heading down toward the ground. .BP .SP 13 $&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @5.^^Gear^Indicator  "Displays the status of the landing$gear, either up or down. The landingџow  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў!їїџџџџџџџџџџџћheading (in degrees) of enemy#planes, and the number of times youhave been hit by the enemy.  During the landing procedure, it$shows the heading that you must taketo find the nearest airport.  @3.^^Altitude^Indicator  џ feet) andџckpit^Window  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў!їїџџџџџџџџџџџћ@computer^displays^exact $@information^about^the^altitude^and "@heading^of^enemy^planes,^and^the "@location^of^the^closest^airport. .SP 6 $&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .BP .SP 13 %&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  @1.^^Cockpit^Window  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў"їїџџџџџџџџџџџћ!Left^^^^^^^^^^^^^^^^^^Banks the #^^^^^^^^^^^^^^^^^^^^^^plane to the ^^^^^^^^^^^^^^^^^^^^^^left   Right^^^^^^^^^^^^^^^^^Banks the#^^^^^^^^^^^^^^^^^^^^^^plane to the ^^^^^^^^^^^^^^^^^^^^^^right   %FIRE button^^^^^^^^^^^Fires at enemy џ^Indicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў"їїџџџџџџџџџџџћ#@&Controlling^the^Plane^^^^^^^^^^^ .SP 2 !@Pilot^the^4A^Flyer^by^using^the @Joystick^Controllers^or^the @keyboard. .SP 7 #&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  @Using^the^Joystick^Controllers  !To pilot the 4A Flyer plane, use џ.BP џding^Indicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў"їїџџџџџџџџџџџћ@9.^^Flap^Indicator  #The flap is a moveable part of eachwing. When the flap is fully#raised, it causes the plane to slow down by 10 knots if in the air.  @10.^Speed^Indicator  "Measures the speed of the plane inknots.  @11.^Heading^Indicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў"їїџџџџџџџџџџџћ@7.^^Fuel^Gauge  $Shows the amount of fuel in the fuel#tank. This rectangle is filled with#the color red when the fuel tank is"full. When engine power is at its"maximum, the fuel is consumed more quickly. .BP .SP 13 џrection the plane is banking.  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў"їїџџџџџџџџџџџћ^^^^^^^^^^^^^^^^^^^^^^planes .BP .SP 13 $&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  @Using^the^Keyboard  To pilot the 4A Flyer plane, use these keys.   #&Press^^^^^^^^^^^^^^^^Action^^^^^^  #@E ^^^^^^^^^^^^^^^^^^^Pushes nose џs at enemy џ^Indicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў"їїџџџџџџџџџџџћ the joystick as outlined below.   $&Press^^^^^^^^^^^^^^^^^Action^^^^^^  #Forward (toward^^^^^^^Pushes nose $the FIRE button)^^^^^^of plane down   $Backward (away^^^^^^^^Pulls nose of from FIRE button)^^^^^plane up   џ use џ.BP џding^Indicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў"їїџџџџџџџџџџџћDisplays the plane's heading indegrees. The heading can rangefrom 0 to 359 degrees, as in acircle.  @12.^Brake^Indicator  The word "brake" appears in the$lower right corner of the instrument panel when the brake is engaged..BP џding^Indicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў"їїџџџџџџџџџџџћ&&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  @8.^^Engine^Power^Gauge  #Displays the level of engine power. The rectangle is filled with redwhen the engine power is at its$maximum. The amount of engine power$needed varies depending on the speed desired.  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў"їїџџџџџџџџџџџћ#^^^^^^^^^^^^^^^^^^^^^of plane down   !@X ^^^^^^^^^^^^^^^^^^^Pulls nose !^^^^^^^^^^^^^^^^^^^^^of plane up   @S ^^^^^^^^^^^^^^^^^^^Banks the "^^^^^^^^^^^^^^^^^^^^^plane to the ^^^^^^^^^^^^^^^^^^^^^left   !@D ^^^^^^^^^^^^^^^^^^^Banks the џicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў#їїџџџџџџџџџџџћ^^^^^^^^^^^^^^^^^^^^^brake .BP .SP 13 %&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .SP 8 $&Press^^^^^^^^^^^^^^^^Action^^^^^^^  !@C,^','^(comma)^^^^^^ Enter/exit !^^^^^^^^^^^^^^^^^^^^^combat mode   $@L,^F ^^^^^^^^^^^^^^^^Begin landing џanks the џicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў#їїџџџџџџџџџџџћ#The following keys perform specific$functions necessary for a successfulflight.   #&Press^^^^^^^^^^^^^^^^Action^^^^^^   @1 ^^^^^^^^^^^^^^^^^^^Increases "^^^^^^^^^^^^^^^^^^^^^engine power   @2 ^^^^^^^^^^^^^^^^^^^Decreases џ^^Banks the џicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў#їїџџџџџџџџџџџћ#^^^^^^^^the joystick lever when the$^^^^^^^^speed reaches adequate level^^^^^^^^to pull the nose of the^^^^^^^^plane up .BP .SP 13 %&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  &Short^Take-off^Procedure  Step 1: Press and hold @1 to џks the џicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў#їїџџџџџџџџџџџћ!take-off procedures. Although one$method is longer than the other, the"longer method may be easier to use"until you get a feel for the speedneeded for take-off. These twomethods are explained below.  &Long^Take-off^Procedure  џџџanks the џicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў#їїџџџџџџџџџџџћ^^^^^^^^^^^^^^^^^^^^^sequence   @W ^^^^^^^^^^^^^^^^^^^Selects $^^^^^^^^^^^^^^^^^^^^^weather option %^^^^^^^^^^^^^^^^^^^^^on title screen .BP %@&Your^First^Flight^^^^^^^^^^^^^^^^^ .SP 2 $@Prepare^for^take-off!^^It's^time^toџding џanks the џicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў#їїџџџџџџџџџџџћ"^^^^^^^^^^^^^^^^^^^^^engine power   "@I ^^^^^^^^^^^^^^^^^^^Raises flap   "@M ^^^^^^^^^^^^^^^^^^^Lowers flap   "@G,^';'^(semi-colon) ^Raise/lower "^^^^^^^^^^^^^^^^^^^^^landing gear   $@B,^'/'^(slash) ^^^^^^Apply/release џs џ^^Banks the џicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў#їїџџџџџџџџџџџћ"^^^^^^^^^^^^^^^^^^^^^plane to the ^^^^^^^^^^^^^^^^^^^^^right   $@Q^'.'^(period)^^^^^^ Fire at enemy @V,^Y ^^^^^^^^^^^^^^^^planes .BP .SP 13 $&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  @Additional^Keys^and^Functions  џ^^^^^^^^^^^^^Banks the џicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў#їїџџџџџџџџџџџћ#Step 1: Press @B or @'/' (slash) to^^^^^^^^apply^the^brake.  Step 2: Press and hold @1 to$^^^^^^^^increase^the^engine power.  #Step 3: Press @B or @'/' (slash) to^^^^^^^^release the brake.  Step 4: Press @X or pull back onџџџџanks the џicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў#їїџџџџџџџџџџџћ!@guide^the^plane^down^the^runway,!@then^into^the^sky.^^You're^ready@for^your^first^flight! .SP 6 %&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  @Getting^Off^the^Ground  !There are two methods that can beused to guide the plane throughџџanks the џicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў$їїџџџџџџџџџџџћ#^^^^^^^^increase the engine power.  Step 2: Press @X or pull back on#^^^^^^^^the joystick lever when the$^^^^^^^^speed reaches adequate level^^^^^^^^to pull the nose of the^^^^^^^^plane up .BP %@&Battling^Enemy^Planes^^^^^^^^^^^^^ .SP 2 џџicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў$їїџџџџџџџџџџџћ$flash, and hear a short sound. A hit$is recorded directly below the enemy flight information on the flight computer.  4. Once a plane is destroyed,!another enemy plane's location is!displayed on the flight computer."You must face yet another battle! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў$їїџџџџџџџџџџџћ"2. Pilot the plane until you reach"the altitude and heading displayed!on the flight computer. Once you$reach the enemy plane's location and$reduce your pitch to zero, the enemy appears.  $3. Maneuver the 4A Flyer plane untilџrmation.  џne^toџicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў$їїџџџџџџџџџџџћ%&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .BP .SP 13 &&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  @Preparing^to^Meet^the^Enemy  "Once you have successfully piloted#the plane through take-off and into$the air, you can choose to enter theџ8 џ^plane^toџicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў$їїџџџџџџџџџџџћ#@Your^purpose^in^the^combat^mode^is"@to^face^and^destroy^enemy^planes.!@The^flight^computer^displays^the#@altitude^and^heading^of^each^enemy!@plane^and^the^number^of^hits^you#@have^sustained^during^battle.^^You!@must^pilot^the^4A^Flyer^plane^toџicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў$їїџџџџџџџџџџџћ!Be sure to keep the enemy in your#viewing range. Even though you may#try to fly away from the enemy, theenemy can still fire on you.  5. An unlimited number of enemy#planes await to face you in battle.$You can leave the combat mode at anyџ battle! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў$їїџџџџџџџџџџџћthe enemy plane appears in the crosshair lense displayed in thecockpit window, then fire. .BP .SP 13 $&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  !If your ammunition hits the enemy"plane, the plane explodes. If the#enemy plane hits you, you see a redџor  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў$їїџџџџџџџџџџџћcombat mode and battle enemy$planes. Follow these steps to enter into battle:  $1. Press @C or @',' (comma) to enterthe combat mode. The flight$computer, located directly below thecockpit window, displays enemyflight information.  џne^toџicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў$їїџџџџџџџџџџџћ$@the^enemy^plane's^location,^get^the!@enemy^plane^within^the^sight^of  %&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .SP 2 $&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^.SP 2 @your^crosshair^and^destroy^it-- @before^the^enemy^destroys^you! .SP 8 џ^plane^toџicator  џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћ!Additionally, the pitch cannot be"raised past the center line markeron the pitch indicator. Simply"stated, once you begin the landingprocedure, you cannot abort the$procedure by attempting to raise the"pitch and fly to higher altitudes.џ џeџ youџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћ$correct heading, steady the plane sothat the artificial horizon#indicator is level (not tilted) and$the pitch is level (no blue or green$showing). The runway will appear onthe ground below.  4. Begin your descent toward theџ flying in theџ youџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћ can do it! Follow these steps tosuccessfully land your 4A Flyerplane.  1. Press @L to alert the flight$computer that you are ready to begin"the landing procedure. The flight$computer displays the heading of thenearest airport.  џcky, but youџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћ%time by pressing @C or^@',' (comma). .BP %@&Ending^Your^Flight^^^^^^^^^^^^^^^^^  $@The^final^step^of^any^flight^is^the#@landing^procedure.^^When^landing, @several^instruments^must^be"@monitored,^including^the^flap^andџe combat mode at anyџ battle! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћYou must complete the landing procedure.  5. Press @G or @'/' to lower the$landing gear once the speed is at orunder 125 knots.  6. A successful touchdown of thelanding gear on the runway is"indicated by the appearance of theџitudes.џ џeџ youџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћ"runway. Although you will need to lower the pitch to fly the plane!toward the runway, the plane willnot be allowed to turn, the!artificial horizon indicator willalways stay level. .BP .SP 13 %&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .SP 3 џeџ youџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћ"@Note: Once you begin the landing !^^^^^^procedure, you cannot stop ^^^^^^this process.  #2. Guide your plane to the airport.#Your heading must exactly match theheading displayed on the flight computer.  "3. Once the plane is flying in theџ youџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћ#@landing^gear^indicators,^the^speed#@of^the^plane,^and^the^engine^power#@gauge.^^A^flight^is^not^successful#@until^the^plane^is^on^the^ground! .SP 2 %&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  @Landing^Your^Plane  "Landing a plane is tricky, but youџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў%їїџџџџџџџџџџџћ$runway markers (two pairs of dots on either side of the center runwayline).  To bring the plane to a complete#stop, you can do one or more of the following:  @* raise the flaps  @* decrease engine power  @* apply the brakes .BP џџ џeџ youџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћ@has^been^damaged^by^accident,@unreasonable^use,^neglect,!@improper^service^or^other^causes@not^arising^out^of^defects^in@materials^or^workmanship.  @Warranty^Duration  The Hardware is warranted for a$period of three months from the dateџyouџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћ#This warranty covers the electronic#and case components of the software$cartridge. These components includeall semiconductor chips and all other hardware contained in this!cartridge ("the Hardware"). This#limited warranty does not extend toџ youџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћreplacement Hardware will be$warranted for three months from dateof replacement. Other than the#postage requirement, no charge willbe made for replacement.  #Triton strongly recommends that you#insure the Hardware for value prior to mailing. .BP џџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћ$warranties or consequential damages,so the above limitations or"exclusions may not apply to you inthose states. .BP @Legal^Remedies .SP 2 This warranty gives you specific#legal rights, and you may also have$other rights that vary from state toџ џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћof the original purchase by the consumer. .BP .SP 4 @Warranty^Disclaimers  #@Any^implied^warranties^arising^out @of^this^sale,^including^but^not!@limited^in^duration^to^the^above@three-month^period.^^Triton@Products^Company^shall^not^beџeџyouџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћthe programs contained in thesoftware cartridge and in the!accompanying book materials ("the Programs").  !The Hardware is warranted againstmalfunction due to defective!materials or construction. @This!@warranty^is^void^if^the^Hardwareџ toџ youџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћ#@Three-Month^Limited^Warranty^Home @Computer^Software^Cartridge .SP 2 $&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ !@Triton^Products^Company^extends $@this^consumer^warranty^only^to^the @original^consumer^purchaser. .SP 2 @Warranty^Coverage  џџ youџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћstate.  @Performance^by^Triton @Under^Warranty  During the above three-month#warranty period, defective Hardware$will be replaced when it is returned"postage prepaid to Triton ProductsCompany, P.O. Box 8123, San Francisco, CA 94128. Theџte toџ џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў&їїџџџџџџџџџџџћ@liable^for^loss^of^use^of^the @Hardware^or^other^incidental^or"@consequential^costs,^expenses,^or$@damages^incurred^by^the^consumer^or@any^other^user.  Some states do not allow the"exclusion or limitation of impliedџs^Company^shall^not^beџeџyouџe! џ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ @Important^Notice^of^Disclaimer @Regarding^the^Programs .SP 2 %&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  "@The^following^should^be^read^and $@understood^before^purchasing^and/or@using^the^software^cartridge.  Triton Products Company does notџ. .BP џџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ DEF STARS DEF SFIRST,SLAST,SLOADSFIRST B @STARSSLOAD EQU SFIRST UNL COPY "DSK2.DATA" COPY "DSK2.TABLES" COPY "DSK2.INITS" COPY "DSK2.MAIN" COPY "DSK2.INPUT" COPY "DSK2.SUBS1"џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ$@form^of^action^shall^not^exceed^the@purchase^price^of^the^software@cartridge.^^Moreover,^Triton@Products^Company^shall^not^be!@liable^for^any^claim^of^any^kind@whatsoever^by^any^other^party#@against^the^user^of^the^programs. .BP .SP 4 џџ. .BP џџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ@to^any^implied^warranties^of^ "@merchantability^and^fitness^for^a"@particular^purpose,^regarding^the @programs^and^makes^all^programs@available^solely^on^an^"as^is""@basis.^^In^no^event^shall^Triton @Products^Company^be^liable^to џ does notџ. .BP џџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ!warrant that the Programs will be free from error or will meet thespecific requirements of theconsumer. The consumer assumescomplete responsibility for any$decision made or actions taken based!on information obtained using theџany does notџ. .BP џџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ COPY "DSK2.SUBS2" COPY "DSK2.SUBS3" COPY "DSK2.CRASH" COPY "DSK2.GPLLNK" COPY "DSK2.COMUTL" LIST SIZE EQU $ SLAST END џ" COPY "DSK2.MAIN" COPY "DSK2.INPUT" COPY "DSK2.SUBS1"џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћSome states do not allow the"exclusion or limitation of implied$warranties or consequential damages,so the above limitations or"exclusions may not apply to you inthose states.  €†€Њ†ееееееееееееее分џthe^user^of^the^programs. .BP .SP 4 џџ. .BP џџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћ @anyone^for^special,^collateral,@incidental,^or^consequential@damages^in^connection^with^or#@arising^out^of^the^purchase^or^use!@of^the^programs^and^the^sole^and@exclusive^liability^of^Triton$@Products^Company,^regardless^of^theџ џ does notџ. .BP џџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџў'їїџџџџџџџџџџџћPrograms. Any statements madeconcerning the utility of the#Programs are not to be construed asexpress or implied warranties.  "@Triton^Products^Company^makes^no @warranty,^either^express^or^ #@implied,^including^but^not^limitedџy does notџ. .BP џџ џїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўїїџџџџџџџџџџџћхххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххх