JnX;xX; Initialize PlayfieldX; --------------------X; PLAYGM AUDOFF;;turn snd offPHITCLR;;clr collisionsQ>;;value forPDEAD;;ship 1 alivePDEAD;;ship 2 aliveQ>@;;value toPNMIEN;;enable VBI'sQ>PAGES;;pages to zeroPTEMP;;save in counterQ>4DRAM;;display addr loPGRPAGE;;display pntr loQ>5DRAM;;display addr hiPGRPAGE;;displa pntr hiQ>5PMM;;PM addr hi"PGRPM;;PM pointer hi,Q>!;;value for6PGPRIOR;;mulit-color PL@PAUDF4;;engine soundJQ>;;value forTPSIZEP2;;double width^PSIZEP3;;comets enabledhPENDGAM;;game onrQ>c;;max score value|PSCORES;;player 1PSCORES;;player 2$>;;move 25 bytesPLA3QTRAMI9;;from TRAMIPTRAM9;;to TRAM0;;dec indexIPLA3;;done? No.Q>5PM0;;player addr hiPGRPX;;pntr hi byte SCRCLR;;clear inverseQ>;;value forPSIZEM;;missile sizesQ>;;get zeroPHPOS;;comet X coordPFLASHF;;inverse flagPCOMETF;;comet flagPATRACT;;attract mode&PSCLOCK;;score sound0PMISSLE;;missile 0 flag:PMISSLE;;missile 1 flagD?;;zero Y indexNPLA0P@GRPAGE7;;scrn byte=0X3;;inc Y indexbHPLA0;;page done? No.l#GRPAGE;;do next pagev"TEMP;;page countHPLA0;;all done? No.Q>;;init Y coord ofPYPLR;;ship 1PYPLR;;ship 2C;;get zeroPLA1PPMM8;;zero missilesPPM08;;player 0+1PPM28;;player 2+33;;next byteHPLA1;;page done? No. RANFIL;;put asteroids$>;;do 2 playersPLA11QXSTRT9;;ship X startPHPOSP09;;set hardware PXPLR9;;and shadow0;;next ship IPLA11;;done? No.*2;;make it a one4&COLOR2;;black>&TEMP;;zero temporaryHQ>.;;value forRPSDMCTL;;P/M enable\PCOLOR1;;bright orangefQ>5PM;;set up P/MpPPMBASE;;base addresszQ>;;value toPGRACTL;;enable P/MQ>;;green forPPCOLR0;;first shipQ>4;;red/orange forPPCOLR1;;second shipQ>4GISR;;DLI addr loPVDSLST;;DLI pntr loQ>5GISR;;DLI addr hiPVDSLST;;DLI pntr hiQ>4DISPG;;DL addr loPSDLSTL;;DL pntr loQ>5DISPG;;DL addr hiPSDLSTL;;DL pntr hiQ>;;value toPNMIEN;;enable DLI'sX;$$X; Game Loops Here, Loops Here....$X; ------------------------------8X;B#ASHIFT LDGRRT;;set up pointersLWTEMP;;get saved carryVDART0;;bit #1=0? Yes.`Q@GRPAGE7;;get bytejL>;;set high bitt,;;clear carry~DART2;;skip nextART0Q@GRPAGE7;;get byteART2W?;;rotate rightP@GRPAGE7;;replace byte3;;next byteHART0;;page done? No.#GRPAGE;;inc page addr"TEMP;;dec page countHART0;;pages done? No.Q>PAGES;;pages to rotatePTEMP;;put someplaceQ>4ASTL;;area to shiftPGRPAGE;;gr pntr loQ>PAGES5ASTL;;hi addr PGRPAGE;;gr pntr hiALF11;;dec Y indexQ@GRPAGE7;;get graphic(U?;;move to left2P@GRPAGE7;;replace byte<C;;test Y indexFHALF1;;Zero? No.P"GRPAGE;;dec hi addrZ"TEMP;;dec page countdHALF1;;pages done? No.nUTEMP;;save carry bitxPGRP1;;zero low bytesPGRP2;;of these threePGRPAGE;;page zero pntrsQ>5ASTL;;scrn lf addr hiPGRP1;;scrn fl pntr hiQ>5ASTR;;scrn rt addr hiPGRP2;;scrn rt pntr hiQ>5DRAM;;display addr hiPGRPAGE;;displa pntr hiQ>4DRAM;;w/offset loPGRP20P;;offset pntr loQ>5DRAM;;w/offset hiPGRP20P;;offset pntr hi$>L;;76 scan linesORA0%>;;do 20 bytesORA1Q@GRP17;;to left fieldL@GRP27;;to right field"P@GRPAGE7;;lf half scrn,P@GRP20P7;;rt half scrn61;;dec index@IORA1;;line done? No.JQGRP1;;lf field loT,;;clear carry^O>;;20 byte offsethPGRP1;;do next line ofrPGRP2;;asteroid fields|DORA2;;overflow? No.#GRP1;;inc left, right#GRP2;;asteroid pntrsORA2,;;clear carryQGRPAGE;;graphic addr loO>(;;line offsetPGRPAGE;;new lo addrDORA3;;overflow? No.#GRPAGE;;inc hi addrORA3,;;clear carryQGRP20P;;gr addr2 loO>(;;line offsetPGRP20P;;new lo addr2DORA4;;overflow? No.#GRP20P;;inc high addr2ORA40;;decrement indexHORA0;;done? No.& CONC;;check console0DFLASH;;OPTION key? No.:!STOPTS;;run option menuDX;NX; Inverse Universe HandlerXX; ------------------------bX;lFLASHW?;;START -> carryvDFL0;;START pressed?!PLAYGM;;Yes. restartFL0QUNIV;;univ flagFCOMET;;inverse? No.QFLASHF;;flash flagFTRYFLA;;flash on? No. REVSCR;;flash screen"FLASHC;;decrement countQENDGAM;;game over flagFFL1;;game over? Yes.QFLASHC;;flash countV?;;make volumeL>;;make pure toneFL1PAUDC2;;universe soundQFLASHC;;flash count FFLAEND;;done? Yes.T?;;times 2 T?;;times 4*T?;;times 84N>;;flip bits>PUNIVS;;save univ soundHHCOMET;;continueRX;\SCRCLRQREVF;;reverse flagfW?;;check bit 0pDSC9;;zero? Yes.zREVSCR$>;;do colors 0..4REV0Q>;;flip brightnessNCOLOR09;;of colorsPCOLOR09;;replace values0;;decrement indexIREV0;;done? No."REVF;;clear flagSC9:;;returnX;!TRYFLAQRANDOM;;random numberM>?;;make 0..63HCOMET;;do flash? No. REVSCR;;Yes. flash scrnQ>;;value for PFLASHC;;flash count PFLASHF;;flash flag HCOMET;;continue$ X;. "FLAENDPFLASHF;;flash univ off8 PAUDC2;;flash sound offB X;L X; Comet MoverV X; -----------` X;j COMETQCOME;;comet flagt FCOMETX;;comets? No.~ QCOMETF;;comet on flag FTRYCOM;;on? No. COMETX!ASHIFT;;continue X; !TRYCOMQRANDOM;;random number M>?;;make 0..63 HCOMETX;;enable? No. PHINC;;comet H speed=0 >;;initialize X=0 TRY0PPM29;;clr players 2+3 0;;decrement index HTRY0;;done? No. PHPOSP2;;zero players 23 PHPOSP3;;horizontal pos PCSOUND;;zero comet snd TRY5QRANDOM;;random number M>;;make 0..3( R>;;allow only 0..22 ETRY5;;3? Yes, repeat< PVDIR;;save 0..2F "VDIR;;make -1..1P QRANDOM;;random numberZ M>;;make 0..3d >;;use as indexn Q>;;init incrementx TRY6V?;;divide by 2 0;;decrement index ITRY6;;done? No. PVINC;;vert increment QENDGAM;;end game flag FTRY7;;game over? Yes. Q>;;No. make sound TRY7PAUDC1;;comet sound QRANDOM;;random number M>?;;make 0..63 O>;;sorta 16..79 PVPOS;;vert start pos $>;;value -2 &COMETF;;comet on flag QRANDOM;;random number ITRY1;;flip a coin! $>;;value +2" TRY1&HDIR;;horiz direction, QRANDOM;;random number6 ICOMETX;;another coin!@ #HINC;;change speedJ !ASHIFT;;continueT X;^ X; Relocate programh X; ----------------r X;| RELOCQ> ;;$2000 load addr PGRP1;;from pntr hi Q>;;to $1000 addr PGRP2;;to pntr hi >;;move 16 pages Q>;;value for PGRP1;;from pntr lo PGRP2;;to pntr lo ?;;zero index REL0Q@GRP17;;from byte P@GRP27;;to byte 1;;dec index HREL0;;page done? No. #GRP1;;inc from hi #GRP2;;inc to hi 0;;page count HREL0;;done? No.& !RIS;;run program0 X;: ;;RUN addressD  RELOCN X;X