1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-26 18:14:05 +00:00
Files
PDP-10.its/src/imsrc/crash.9
2019-02-04 07:17:45 +01:00

698 lines
7.6 KiB
Groff
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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