BACK   EQU $B49A
SK1    EQU $B49F+1
SK2    EQU $B4A5+1
VOL1   EQU $B524+1
VOL2   EQU $B532+1
BCK2   EQU $B5CC
SK3    EQU $B5D3+1
VOL3   EQU $B650+1
FLICK  EQU $B703
RDKYS  EQU $B723
GMODE  EQU $B738
PCLS   EQU $B757
ENSD   EQU $B764
CALC   EQU $B77D
CALCM  EQU $B790
SP8    EQU $B7AC
SP16   EQU $B7F5
SP24   EQU $B860
SP32   EQU $B8ED
SP64   EQU $B99B
MULTAB EQU $BACF
ANDTAB EQU $BAD7
CONTRL EQU $BADF
MOVE   EQU $BB62
NEWLN  EQU $BC1E
RNUM   EQU $BC7C
EGNS   EQU $BC97
FEB    EQU $BCD6
SCALE  EQU $BD11
EBLS   EQU $BD2F
WOBBL  EQU $BD75
FILBUF EQU $BD97
CLRBF2 EQU $BDA3
FEX    EQU $BDB1
EGR    EQU $BDDC
BGEX   EQU $BDED
FSTB   EQU $BE29
FCAN   EQU $BE4B
FBMR   EQU $BE68
FSP1   EQU $BE7D
FDIR   EQU $BEA9
USTB   EQU $BEF1
UCAN   EQU $BF2F
UBMR   EQU $BF96
UROT   EQU $BFDA
BCOL   EQU $C017
MOVW   EQU $C04B
VTAB   EQU $C07C
FDEB   EQU $C08C
DBRS   EQU $C0B8
BARTAB EQU $C0F8
TCRDS  EQU $C108
PTBAR  EQU $C10E
DIST   EQU $C165
CLIP   EQU $C18A
FEL    EQU $C1CA
LSBLTS EQU $C1DE
USTB1  EQU $C215
USTB2  EQU $C21D
FSMK   EQU $C225
USMK   EQU $C23F
FEG    EQU $C26D
FLSR   EQU $C290
FTRT   EQU $C2B4
LSRS   EQU $C2E0
FHSK   EQU $C334
MOVWB  EQU $C390
UHSK   EQU $C3B4
FLASH  EQU $C493
MASKSC EQU $C4BC
TRTS   EQU $C56A
BBLTS  EQU $C646
FFLSH  EQU $C692
 
 ORG $400
 
SCRN RMB 2
FRM  RMB 1
OFF  RMB 1
OF2  RMB 1
BPTR RMB 2
DPTR RMB 2
BPR2 RMB 2
SFL  RMB 1
RND  RMB 2
CNT1 RMB 1
CNT2 RMB 1
LNDC RMB 2
LNDF RMB 1
CRDS RMB 2
DX   RMB 1
SHIPSP RMB 2
KTAB RMB 8
HT   RMB 1
MASK RMB 2
IMAGE RMB 2
HCNT RMB 1
SPAD RMB 2
LFTFL  RMB 1
RGTFL  RMB 1
UPFL   RMB 1
DWNFL  RMB 1
FIRFL  RMB 1
FIRDB  RMB 1
DEBC   RMB 1
DY     RMB 1
EXRG RMB 40
NXEX RMB 2
EBR RMB 48
GNR RMB 32
NXGN RMB 2
WOB RMB 2
WBFL RMB 1
TOF RMB 1
WTYP RMB 1
WLRF RMB 1
WFLF RMB 1
FCNT RMB 1
ANGL RMB 1
HITFL RMB 1
NXDB RMB 2
MAXD RMB 1
DCNT RMB 1
DCNT2 RMB 1
NXHIT RMB 2
SR1 RMB 1
SR2 RMB 1
SR3 RMB 1
NXLS RMB 2
NXSM RMB 2
NXTR RMB 2
CCRDS  RMB 2
CWD    RMB 1
CHT    RMB 1
CMASK  RMB 2
CIMAGE RMB 2
SR4    RMB 1
SCT1   RMB 1
SCT2   RMB 1
SCT3   RMB 1
SCT4   RMB 1
FCNT2  RMB 1
MSKFL RMB 1
MSKOF RMB 1
QUITFL RMB 1
SCT5 RMB 1
 
 ORG $500
 
WREG RMB 72
LASR RMB 20
LSBR RMB 24
SMKR RMB 48
TRRG RMB 36
TRKRG1 RMB 3
TRKRG2 RMB 3
FLRG RMB 10
BBLTR RMB 36
 
DBRG EQU $600
HITRGT EQU $F000
HITRGB EQU $F000+150
 
BUFU EQU $B000
BUFL EQU BUFU+288
BF2U EQU BUFU+608
BF2L EQU BF2U+270
ENDBF EQU BF2L+300
 
GRFX  EQU $D100
SHIPG EQU $D800
 
TIMER EQU 274
ILNDC EQU 801
TOP   EQU #14912
BTM   EQU #16000
 
 ORG $4000
 PUT *
 
 SETDP $04
 
 PSHS CC,DP
 
 ORCC #$10
 LDA #4
 TFR A,DP
 STA $FFDF
 
 LDX #$400
CLVARS CLR ,X+
 CMPX #$C00
 BLO CLVARS
 
 JSR PCLS
 JSR GMODE
 JSR ENSD
 CLR FRM
 JSR FLICK
 
 LDX #BUFU
 STX BPTR
 LDX #BF2U
 STX BPR2
 LDX #BTM
 STX DPTR
 CLR OFF
 CLR OF2
 LDX #GNR
 STX NXGN
 LDX #LASR
 STX NXLS
 LDX #TRRG
 STX NXTR
 LDX #SMKR
 STX NXSM
 LDX #HITRGB
 STX NXHIT
 LDX #EXRG
 STX NXEX
 LDX #DBRG
 STX NXDB
 LDA #8
 STA MAXD
 STA DCNT2
 
 CLR LNDF
 LDD #ILNDC
 STD LNDC
 JSR FILBUF
 JSR CLRBF2
 LDD TIMER
 STD RND
 LDD #$7464
 STD CRDS
 CLR DX
 CLR DY
 LDU #SHIPG+252
 STU SHIPSP
 LDA #1
 STA WTYP
 LDA #8
 STA MSKFL
 CLR MSKOF
 
MAINLP LDD RND
 ADDD CRDS
 ADDD #$8B77
 STD RND
 
 JSR CONTRL
 JSR BGEX
 JSR BACK
 JSR BCK2
 
 JSR FLASH
 
 JSR TRTS
 JSR USMK
 JSR EGNS
 JSR LSRS
 JSR EBLS
 JSR LSBLTS
 JSR BBLTS
 JSR DBRS
 
 JSR FIRE
 
 LDA WTYP
 CMPA #6
 BNE MN0
 LDB FIRFL
 BEQ MN0
 LDD #0
 STD LFTFL
 STD UPFL
 BRA MN1
MN0 CMPA #7
 BNE MN1
 JSR UTRK
MN1 JSR WPNRY
 
 LDU SHIPSP
 STU MASK
 LEAU 63,U
 STU IMAGE
 LDA #21
 STA HT
 LDY #CRDS
 JSR SP24
 
 LDA MSKFL
 BEQ MSK0
 JSR MASKSC
 LDA MSKOF
 ADDA MSKFL
 STA MSKOF
 CMPA #64
 BLO MSK0
 CLR MSKFL
MSK0 JSR FLICK
 
 LDA QUITFL
 BEQ Q1
 LDA MSKFL
 BNE Q1
 JMP QUIT
 
Q1 JSR SFX
 
 JSR MOVE
 LDA CRDS
 CMPA #256-24
 BLS MV3
 CMPA #256-12
 BHI MV1
 LDA #256-24
 BRA MV2
MV1 CLRA
MV2 STA CRDS
 
MV3 LDA FRM
 BEQ FRM0
 JSR SCRLB1
FRM0 JSR SCRLB2
 LDX TIMER
 LEAX 1,X
 STX TIMER
 
 JSR RDKYS
 LDD KTAB+3
 BITA #32
 BNE KY1
 LDA WTYP
 CMPA #7
 BHS KY1
 INC WTYP
KY1 BITB #32
 BNE KY2
 LDA WTYP
 CMPA #1
 BLS KY2
 DEC WTYP
KY2 LDA KTAB+1
 BITA #64
 LBNE MAINLP
 LDA #56
 STA MSKOF
 LDA #-8
 STA MSKFL
 STA QUITFL
 JMP MAINLP
QUIT STA $FFDE
 PULS CC,DP,PC
 
SCRLB1 LDA OFF
 SUBA #2
 ANDA #30
 STA OFF
 BCC SCRL1
 JSR NEWLN
SCRL1 LDD LNDC
 SUBD #2
 BPL SCRL2
 COM LNDF
 LDD #ILNDC
SCRL2 STD LNDC
 RTS
 
SCRLB2 LDA OF2
 SUBA #2
 ANDA #30
 STA OF2
 BCS NWLN2
 RTS
 
NWLN2 LDX BPR2
 LDY DPTR
 CMPY #TOP
 BHI NAT
 LDY #BTM
NAT LEAY -1,Y
 CMPX #BF2U
 BEQ RSB2
 
 LDA #15
 STA CNT1
NLP1 BSR DCOD
 LDD ,X
 STD 300,X
 DEC CNT1
 BNE NLP1
 STX BPR2
 STY DPTR
 RTS
RSB2 LDX #BF2L+30
 LDA #150
 STA NXHIT+1
 LDA #15
 STA CNT1
NLP2 BSR DCOD
 DEC CNT1
 BNE NLP2
 STX BPR2
 STY DPTR
 RTS
 
DCOD DEC NXHIT+1
 CLR [NXHIT]
 LDA ,-Y
 BEQ NGRF
 CMPA #32
 BLO DCOD1
 CMPA #43
 BHI DCOD1
 LDB ,Y
 SUBB #32
 LSLB
 LDU #BKJTAB
 LEAU B,U
 LDU ,U
 BEQ DCOD1
 JSR ,U
DCOD1 LDB #32
 MUL
 LDU #GRFX
 LEAU D,U
 STU ,--X
 RTS
NGRF LDU #0
 STU ,--X
 RTS
 
BKJTAB FDB 0,FEG,0,FLSR,FTRT,0
       FDB 0,0,0,0,0,0
 
FIRE LDA WTYP
 CMPA #1
 BEQ WP4
 CLR DEBC
WP4 LDA FIRDB
 BEQ WP2
 CLR FCNT
 BRA WP3
WP2 LDA FCNT
 CMPA #1
 BLS WP1
 DEC FCNT
WP3 LDX #WREG
 LDB #12
FWLP LDA 5,X
 BNE WRNE
 LDA WTYP
 STA 5,X
 LSLA
 LDU #FTAB-2
 JMP [A,U]
WRNE LEAX 6,X
 DECB
 BNE FWLP
WP1 LDA FIRFL
 BNE WP5
 LDA #192
 STA ANGL
 CLR FCNT2
WP5 RTS
 
WPNRY LDX #WREG
WP1LP LDA 5,X
 BEQ NWP1
 ANDA #31
 LSLA
 LDU #UTAB-2
 PSHS X
 JSR [A,U]
 LDA HITFL
 BEQ WBAK
 JMP HIT
WBAK PULS X
NWP1 LEAX 6,X
 CMPX #WREG+72
 BLO WP1LP
 RTS
 
FTAB FDB FSTB,FSTB,FCAN,FBMR
     FDB FSP1,FDIR,FHSK
UTAB FDB USTB1,USTB2,UCAN,UBMR
     FDB UROT,UROT,UHSK
 
UTRK LDY #TRKRG1
 BSR CKTRGT
 LEAY 3,Y
 BSR CKTRGT
 
 LEAY -3,Y
 LDA 2,Y
 BNE UTRK1
 BSR FGUNT
 BNE UTRK1
 BSR FLSRT
 BNE UTRK1
 BSR FTRTT
 BNE UTRK1
 RTS
UTRK1 LEAY 3,Y
 LDA 2,Y
 BEQ UTRK4
 LDU -3,Y
 CMPU ,Y
 BEQ UTRK4
 RTS
UTRK4 BSR FGUNT
 BEQ UTRK2
 CMPU -3,Y
 BNE UTRKXX
 BSR FGUN1
 BNE UTRKXX
UTRK2 BSR FLSRT
 BEQ UTRK3
 CMPU -3,Y
 BNE UTRKXX
 BSR FLSR1
 BNE UTRKXX
UTRK3 BSR FTRTT
 BEQ UTRKX
 CMPU -3,Y
 BNE UTRKXX
 BSR FTRT1
 BNE UTRKXX
 
UTRKX LDD -3,Y
 STD ,Y
 LDA -1,Y
 STA 2,Y
UTRKXX RTS
 
CKTRGT LDA 2,Y
 BEQ XCKT
 LDU ,Y
 LDA -2,U
 BNE XCKT
 CLR 2,Y
XCKT RTS
 
FGUNT LDX #GNR
FGNLP LDA ,X
 BEQ FGUN1
 LEAU 2,X
 STU ,Y
 LDA #1
 STA 2,Y
 RTS
FGUN1 LEAX 4,X
 CMPX #GNR+32
 BLO FGNLP
 RTS
 
FLSRT LDX #LASR
FLSLP LDA ,X
 BEQ FLSR1
 LEAU 2,X
 STU ,Y
 LDA #2
 STA 2,Y
 RTS
FLSR1 LEAX 5,X
 CMPX #LASR+20
 BLO FLSLP
 RTS
 
FTRTT LDX #TRRG
FTTLP LDA ,X
 BEQ FTRT1
 LEAU 2,X
 STU ,Y
 LDA #1
 STA 2,Y
 RTS
FTRT1 LEAX 6,X
 CMPX #TRRG+36
 BLO FTTLP
 RTS
 
HIT SUBA #$D5
 LSRA
 RORB
 LDY #HITTAB
 LEAY D,Y
 LDA ,Y
 BEQ DSTRY
 CLR 5,X
 PSHS U
 TFR U,D
 SUBD #BF2U+300
 BHS HIT2
 ADDD #300
HIT2 LSRA
 RORB
 LDU #HITRGT
 LEAU D,U
HIT1 LDA ,U
 BNE HIT9
 LDA ,Y
HIT9 SUBA 4,X
 BHI HIT3
 CLR ,U
 PULS U
 BRA DST2
HIT3 STA ,U
 LDA 4,X
 STA DCNT
 JSR FDEB
 PULS U
 JSR FFLSH
 LDA #64
 STA SR3
 JMP WBAK
 
DSTRY LDA 4,X
 SUBA 2,Y
 BHI DST1
 CLR 5,X
DST1 STA 4,X
DST2 LDD 4,Y
 STD EGR
 LDA 3,Y
 STA DCNT
 LDA 6,Y
 CMPA SR2
 BLS DST7
 STA SR2
DST7 LDA 1,Y
 BEQ DST5
 LDB 1,X
 CMPB #144-15
 BLO DST3
DST5 LDD 4,Y
 STD ,U
 CMPU #BF2L+30
 BHS DST6
 CMPU #BF2L
 BHS DST4
 STD 300,U
 BRA DST4
DST6 STD -300,U
 BRA DST4
DST3 JSR FEX
 LDX ,S
DST4 LDA DCNT
 BEQ HNX1
 JSR FDEB
HNX1 JMP WBAK
 
SFX CLRB
 LDA SR1
 BEQ SFX2
 STB SR1
 CMPA SCT2
 BLS SFX2
 STA SCT1
SFX2 LDA SR2
 BEQ SFX3
 STB SR2
 CMPA SCT2
 BLS SFX3
 STA SCT2
SFX3 LDA SR3
 BEQ SFX4
 STB SR3
 CMPA SCT2
 BLS SFX4
 STA SCT2
SFX4 LDA SR4
 BEQ SFX5
 STB SR4
 CMPA #1
 BEQ SFX4A
 CMPA #2
 BEQ SFX4B
 BRA SFX5
SFX4A LDA #96
 STA SCT4
 BRA SFX5
SFX4B LDA #192
 STA SCT5
SFX5 NOP
 
SND CLR VOL1
 CLR VOL2
 CLR VOL3
 
 LDA SCT2
 BEQ SND2
 STA VOL1
 STA VOL2
 STA VOL3
 LDU #16200
 STU SK1
 STU SK2
 STU SK3
 LDB #160
 MUL
 STA SCT2
SND2 LDA SCT1
 BEQ SND3
 STA VOL1
 LDU #$4000
 STU SK1
 SUBA #100
 STA SCT1
 BCC SND3
 CLR SCT1
SND3 LDA SCT3
 BEQ SND4
 STA VOL1
 LDU #16200
 STU SK1
 SUBA #64
 STA SCT3
 BCC SND4
 CLR SCT3
SND4 LDA SCT4
 BEQ SND5
 STA VOL1
 LDU #16264
 STU SK1
 SUBA #48
 STA SCT4
 BCC SND5
 CLR SCT4
SND5 LDA SCT5
 BEQ SND6
 LDU #16296
 STA VOL2
 STU SK2
 STA VOL3
 STU SK3
 LSR SCT5
SND6 NOP
 RTS
 
HITTAB EQU *
 
 FDB $0001,$0100,$D680,$8000
 FDB $0000,$0000,$0000,$0000
 
 FDB $0601,$0008,$D6A0,$FF00
 FDB $DCA6,$0000,$0000,$0000
 
 FDB $0000,$0102,$D6C0,$8000
 FDB $0000,$0000,$0000,$0000
 
 FDB $0000,$0308,$D6E0,$C000
 FDB $0000,$0000,$0000,$0000
 
 FDB $1400,$0008,$D5A0,$FF00
 FDB $DCA6,$0000,$0000,$0000
 
 FDB $0A01,$0008,$D700,$FF00
 FDB $DCA6,$0000,$0000,$0000
 
 
 
