TITLE CRASH PDS4=1 MAXADR=37777 .INSRT IMLAC;IMDEFS > .INSRT IMLAC;DISFIX > .ADDR.=1 DEFINE INFORM A,B,C,D,E PRINTX\A!B!C!D!E \ TERMIN LOC 30000 JMP BEGIN JMP START LOC 30030 BEGIN: RCF JMS RESET JMP START RESET: 0 LAC NUMTAB+11. DAC NUM1 DAC NUM2 DAC NUM3 LAC NUMTAB+3 DAC NUM4 LAC ABSLEVEL DAC LEVEL LAC [22600] DAC HIGHT LAC [600] DAC FUEL CLA DAC SP DAC VEL DAC UP LWC 3 DAC GSUB COA DAC IGNORE LWC 40. DAC TIME LAC AFC DAC DF LAC CJ DAC CRACKL LAC [DGD] DAC SHPFOO JMP @RESET START: ISZ RANDN NOP JMS DISP1 KSF JMP START CAL KRC AND [1377] JMS KEYCHK JMP START KEYCHK: 0 SAD CR2 JMP .+3 SAM CR JMP COMDV JMS RESET JMP @KEYCHK COMDV: SAD DV2 JMP .+3 SAM DV JMP COMUV STA ADD UP ASP CLA DAC UP JMP @KEYCHK COMUV: SAD UV2 JMP .+3 SAM UV JMP COMHOME COA SAM IGNORE JMP @KEYCHK ISZ UP JMP @KEYCHK COMHOME:SAD HOME2 JMP @[100] SAM HOME JMP COMLH JMP @[100] COMLH: SAD LH2 JMP .+3 SAM LH JMP COML LAC IGNORE ASN JMP @KEYCHK LAW 3 DAC UP JMP @KEYCHK COML: SAD CL2 JMP .+3 SAM CL JMP COMF LAC CJ SAM CRACKL JMP @KEYCHK LAC FUEL ASN JMP @KEYCHK COA DAC IGNORE DAC SP LWC 3 DAC GSUB JMP @KEYCHK COMF: SAD FF2 JMP .+3 SAM FF JMP COMNUMS LAW 200. ADD FUEL DAC TEMP AND [3777] SAM TEMP JMP @KEYCHK LAC TEMP DAC FUEL JMP @KEYCHK COMNUMS:DAC TEMP AND [200] ASZ JMP IMKBD LAC TEMP ADD [257] DAC TEMP SUB [272] ASZ JMP IMKBD LAC [260] DAC TEMP IMKBD: LAC TEMP SUB F260 ASP JMP @KEYCHK SUB [10.] ASM JMP @KEYCHK LAC TEMP SUB F260 DAC ABSLEVEL JMP @KEYCHK F260: 260 TEMP: 0 SP: 0 HTEMP: 0 ELJ: DJMP SHPFOO ABSLEVEL: 2 UP: 0 FUEL: 1000 IGNORE: 1 N1: 0 N2: 0 N3: 0 N4: 0 LEVEL: 2 RANDN: 0 NUMTAB: .+1 DJMS RTN0 DJMS RTN1 DJMS RTN2 DJMS RTN3 DJMS RTN4 DJMS RTN5 DJMS RTN6 DJMS RTN7 DJMS RTN8 DJMS RTN9 DJMS RTNBLANK VEL: 0 GSUB: -3 TIME: -20. DNOPER: DNOP AFC: DJMP AFCL CJ: DJMP DF HOME: 1372 ;CTRL-Z EXITS PROGRAM UV: 206 DV: 204 LH: 210 CL: 354 FF: 346 CR: 215 HOME2: 20 UV2: 42 DV2: 43 LH2: 41 CL2: 57 FF2: 52 CR2: 62 FNDLVI: 0 LAC XVAL AND [1777] DAC INST1 LAC XVAL ASM JMP FNDLV1 CIA AND [1777] IOR [2000] DAC INST1 FNDLV1: LAC YVAL AND [1777] DAC INST2 LAC YVAL ASM JMP FNDLV2 CIA AND [1777] IOR [2000] DAC INST2 FNDLV2: LAC INST1 AND [1777] DAC XVAL LAC INST2 AND [1777] DAC YVAL LAC XVAL SUB YVAL ASM JMP FNDLV3 LAC INST1 IOR [14000] ; Y > X, BEAM ON XAM INST2 IOR [40000] DAC INST1 JMP @FNDLVI FNDLV3: LAC INST1 IOR [40000] DAC INST1 LAC INST2 IOR [10000] ; BEAM ON, Y <,= X DAC INST2 JMP @FNDLVI XVAL: 0 YVAL: 0 INST1: 0 INST2: 0 DISP1: 0 DSF SSF JMP @DISP1 SCF LAC DS1 DLA DON LAC LEVEL ASZ JMP INAIR LAC DNOPER DAC ELINE JMP AELCHK INAIR: LAC ELJ DAC ELINE AELCHK: LAC VEL ADD HIGHT DAC HTEMP CLA SAM LEVEL JMP LCHKS LAC HTEMP SUB [20220] ASM JMP LCHKS LAC [20217] DAC HIGHT COA SAM SP JMP NOSP CLA DAC VEL JMP NUMSE2 NOSP: CLA DAC IGNORE DAC UP DAC GSUB XAM VEL ASP CIA AND [177774] ASN JMP NUMSE2 AND [177760] ASZ JMP EXPLD LAC DNOPER DAC CRACKL JMP NUMSE2 LCHKS: CLA DAC SP LAC HTEMP SUB [23612] ASP JMP BCHK ISZ LEVEL LAC [20120] DAC HTEMP JMP NUMS BCHK: LAC HTEMP SUB [20120] ASM JMP NUMS STA ADD LEVEL DAC LEVEL LAC [23612] DAC HTEMP NUMS: LAC HTEMP DAC HIGHT NUMSE2: CLA DAC N1 DAC N2 DAC N3 DAC N4 LAC LEVEL AND [17777] LP1: SUB [1000.] ASP JMP NN2 ISZ N1 JMP LP1 NN2: ADD [1000.] LP2: SUB [100.] ASP JMP NN3 ISZ N2 JMP LP2 NN3: ADD [100.] LP3: SUB [10.] ASP JMP NN4 ISZ N3 JMP LP3 NN4: ADD [10.] ADD NUMTAB DAC N4 LAC @N4 DAC NUM4 CLA SAM N1 JMP LASTNS LAW 10. DAC N1 CLA SAM N2 JMP LASTNS LAW 10. DAC N2 CLA SAM N3 JMP LASTNS LAW 10. DAC N3 LASTNS: LAC N1 ADD NUMTAB DAC N1 LAC @N1 DAC NUM1 LAC N2 ADD NUMTAB DAC N2 LAC @N2 DAC NUM2 LAC N3 ADD NUMTAB DAC N3 LAC @N3 DAC NUM3 NOHIT: ISZ TIME JMP @DISP1 LWC 5 DAC TIME LAC GSUB ADD VEL ADD UP DAC VEL LAC FUEL SUB UP DAC FUEL ASM JMP STILLF CLA DAC UP DAC SP DAC IGNORE DAC FUEL NOF: LAC AFC DAC DF JMP @DISP1 STILLF: LAC FUEL DAC YVAL JMS FNDLVI LAC INST1 DAC L LAC INST2 DAC L+1 LAC UP SAL 2 CIA ASN JMP NOF DAC YVAL JMS FNDLVI LAC INST1 DAC DF LAC INST2 DAC DF+1 JMP @DISP1 RTN0: DDSP INC E,D20 INC B0M2,BM1M1 INC BM20,BM11 INC B02,B02 INC B11,B20 INC B1M1,B0M2 INC D20,D30 INC D00,X RTN1: INC E,DM21 INC B22,B0M3 INC B0M3,DM20 INC B20,B20 INC D03,D20 INC D30,X RTN2: INC E,DM21 INC B12,B20 INC B1M2,BM2M2 INC BM2M2,B20 INC B20,D03 INC D20,D20 INC D10,X RTN3: INC E,DM23 INC B30,B1M1 INC BM1M2,BM30 INC D0M3,B30 INC B11,BM12 INC D10,D30 INC D20,X RTN4: INC E,D1M3 INC B03,B03 INC BM3M3,B20 INC B20,D20 INC D30,X RTN5: INC E,DM2M3 INC B30,B11 INC B01,BM11 INC BM20,B03 INC B30,D0M3 INC D10,D20 INC D20,X RTN6: INC E,DM2M1 INC B21,B2M1 INC B0M1,BM1M1 INC BM20,BM11 INC B03,B22 INC B10,B1M1 INC D0M2,D20 INC D30,X RTN7: INC E,DM23 INC B20,B20 INC BM1M3,BM1M3 INC D23,D20 INC D30,X RTN8: INC E,B2M1 INC B0M1,BM1M1 INC BM20,BM11 INC B01,B21 INC B21,BM12 INC BM20,BM1M2 INC B2M1,D20 INC D10,D20 INC D20,X RTN9: INC E,D0M3 INC B23,BM20 INC BM11,B01 INC B11,B20 INC B0M3,D20 INC D30,X RTNBLANK: INC E,D20 INC D20,D20 INC D10,X RANDOM: 0 ;RANDOM NUMBER GEN. LAC RANDN RAL 2 XOR RANDN ASM ADD [3] DAC RANDN JMP @RANDOM NBITS==30. ;NUMBER OF PIECES WHEN IT EXPLODES. BITS: REPEAT NBITS, DBITS+<.RPCNT*7> DBITS: REPEAT NBITS,[ 0 ;X VELOCITY 0 ;Y VELOCITY DGD ;DJMP TO HERE DLYA 0 ;Y POSITION DLXA 0 ;X POSITION DJMS CHUNK ;DRAW THE FROB IFE .RPCNT, DJMP AFCL-1 ;JUMP BACK INTO REGULAR CODE IFN .RPCNT, DJMP .-4-7 ;JUMP TO PREVIOUS BIT ] BIT1=.-1-4 ;WHERE TO DJMP TO TO START THINGS. CHUNK: INC E,B23 INC BM32,BM2M3 INC B3M2,X EXPLD: ;HAVE HIT HARD, DRAW EXPLOSION. LWC NBITS DAC CTR1' LAC [BITS-1] DAC 10 EXPLD1: STA ADD @10 DAC 11 JMS RANDOM ;GET X-VELOCITY AND [17] ADD [4] DAC TEMP LAC 11 ;KLUDGE WHICH RELIES ON LENGTH=7 RAR 1 LAC TEMP LSZ CIA DAC @11 ;STORE X-VELOCITY JMS RANDOM ;GET Y-VELOCITY AND [17] ADD [8] DAC @11 LAC [DGD] ;THIS MAY HAVE BEEN PATCHED DAC @11 LAC HIGHT DAC @11 ;Y-POS LAC SHIPX DAC @11 ISZ CTR1 JMP EXPLD1 LWC 3*40. ;EXPLODE FOR 3 SECONDS DAC TIME LAC [DJMP BIT1,] DAC SHPFOO ;PATCH INTO DISPLAY LIST EXPLDZ: ;KEEP DISPLAYING BITS AND ACCOUNT FOR VELOCITY DSF SSF JMP EXPLDZ SCF LAC DS1 DLA DON ISZ TIME JMP .+2 ;MORE. JMP BEGIN ;DONE, START NEW GAME. LWC NBITS DAC CTR1 LAC [BITS-1] DAC 10 EXPLDT: LAC @10 DAC PNTR' DAC CURBIT' LAC @PNTR ;X-VELOCITY DAC XVELOC' ISZ PNTR LAC @PNTR ;Y-VELOCITY ISZ PNTR ISZ PNTR ADD @PNTR DAC TEMP SUB [023600] ASM JMP DISAPR ;WENT OFF TOP OF SCREEN LAC TEMP DAC @PNTR ISZ PNTR LAC XVELOC ADD @PNTR DAC TEMP SUB [013600] ASM JMP DISAPR ;WENT OFF RIGHT SIDE OF SCREEN ADD [3600] ASP JMP DISAPR ;WENT OFF LEFT SIDE OF SCREEN LAC TEMP DAC @PNTR EXPLDN: ISZ CTR1 JMP EXPLDT JMP EXPLDZ DISAPR: ;THIS GUY DISAPPEARS LAW 2 ADD CURBIT DAC TEMP ;-> DGD ADD [4] ;-> DJMP DAC PNTR LAC @PNTR ;PICK UP HIS DJMP DAC @TEMP ;CLOBBER HIS DGD (PATCH THIS BIT OUT) JMP EXPLDN VARIABLES CONSTANTS DS1: .+1 DSTS 3 DADR DSTB 3 DGD DLXA 1600 DLYA 1710 NUM1: DJMS RTNBLANK NUM2: DJMS RTNBLANK NUM3: DJMS RTNBLANK NUM4: DJMS RTN0 DSTS 1 DGD DLXA 0 DLYA 100 ELINE: DJMP SHPFOO DLV B,1777,0 SHPFOO: DGD SHIPX: DLXA 1000 HIGHT: DLYA 1300 DLV B,20,-10 DLV B,-20,100 DLV B,-20,-100 DLV B,20,10 CRACKL: DJMP DF DLV X,-5,15 DLV X,-5,5 DLV X,10,10 DLV X,-3,10 DLV D,5,-25 DF: DLV D,0,-1 DGD AFCL: DLXA 1700 DLYA 200 DLV B,40,0 DLV D,-20,0 L: DLV B,0,1000 DLV D,-20,0 DLV B,40,0 DHLT IF2 INFORM PROGRAM BREAK IS ,\. END BEGIN