mirror of
https://github.com/PDP-10/its.git
synced 2026-03-26 18:14:05 +00:00
698 lines
7.6 KiB
Groff
698 lines
7.6 KiB
Groff
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
|
||
|