 
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
 
 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
WREG RMB 27
WLRF RMB 1
FCNT RMB 1
HITFL RMB 1
SR1 RMB 1
SR2 RMB 1
 
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 #15064
BTM   EQU #16000
 
 ORG $BADF
 PUT $0C45
 
 SETDP $04
 
CONTRL LDA $FF23
 ANDA #$F7
 STA $FF23
 LDA $FF20
 PSHS A
 LDD #0
 STD LFTFL
 STD UPFL
 STD FIRFL
 LDA $FF01
 ORA #8
 STA $FF01
 LDA $FF03
 ANDA #$F7
 STA $FF03
 LDD #$48
 STA $FF20
 LDA $FF00
 BMI CTRL1
 COM UPFL
 BRA CTRL2
CTRL1 LDA #200
 STA $FF20
 LDA $FF00
 BPL CTRL2
 COM DWNFL
CTRL2 LDA $FF01
 ANDA #$F7
 STA $FF01
 LDA #48
 STA $FF20
 LDA $FF00
 BMI CTRL3
 COM LFTFL
 BRA CTRL4
CTRL3 LDA #200
 STA $FF20
 LDA $FF00
 BPL CTRL4
 COM RGTFL
CTRL4 BITA #1
 BNE CTRL5
 COM FIRFL
 LDA DEBC
 BNE CTRL6
 COM FIRDB
 COM DEBC
 BRA CTRL6
CTRL5 CLR DEBC
CTRL6 PULS A
 STA $FF20
 LDA $FF23
 ORA #8
 STA $FF23
 RTS
 
MOVE LDU #LIMTAB
 LDA CRDS
 LDB DX
 ASRB
 BPL LIMX1
 NEGB
LIMX1 CMPA B,U
 BHI LIMX2
 CLR LFTFL
 BRA LIMXOK
LIMX2 ADDB #4
 CMPA B,U
 BLO LIMXOK
 CLR RGTFL
 
LIMXOK LDA CRDS+1
 CMPA #12
 BHI LIMY2
 CLR UPFL
 BRA LIMYOK
LIMY2 CMPA #144-21-8
 BLO LIMYOK
 CLR DWNFL
 
LIMYOK LDD LFTFL
 TSTA
 BNE LEFT
 TSTB
 BNE RIGHT
 LDA DX
 BEQ DXOK
 BMI DXNEG
 SUBA #2
 BRA LROK
DXNEG ADDA #2
 BRA LROK
LEFT LDA DX
 SUBA #2
 CMPA #-6
 BGE LROK
 LDA #-6
 BRA LROK
RIGHT LDA DX
 ADDA #2
 CMPA #6
 BLE LROK
 LDA #6
LROK STA DX
 
MOV1 CMPA #-4
 BGE DXOK1
 LDA #-4
 BRA DXOK
DXOK1 CMPA #4
 BLE DXOK
 LDA #4
DXOK ADDA #4
 ANDA #14
 LDB #63
 MUL
 LDU #SHIPG
 LEAU D,U
 STU SHIPSP
 
 LDA UPFL
 BNE UP
 LDA DWNFL
 BNE DOWN
 LDA DY
 BEQ YOK2
 BMI DYNEG
 SUBA #2
 BRA UDOK
DYNEG ADDA #2
 BRA UDOK
UP LDA DY
 SUBA #2
 CMPA #-4
 BGE UDOK
 LDA #-4
 BRA UDOK
DOWN LDA DY
 ADDA #2
 CMPA #4
 BLE UDOK
 LDA #4
UDOK STA DY
 
YOK2 LDD CRDS
 ADDA DX
 ADDB DY
 STD CRDS
 RTS
 
LIMTAB FCB 5,5,7,11
       FCB 227,227,225,221
       FCB 5,5,7,11
       FCB 117,117,115,109
 
NEWLN LDU BPTR
 CMPU #BUFU
 BEQ RESB
 LDA #16
 STA CNT1
NLLP BSR RNDB
 LDD ,U
 STD 320,U
 DEC CNT1
 BNE NLLP
 STU BPTR
 RTS
RESB LDU #BUFL+32
 LDA #16
 STA CNT1
NLLP2 BSR RNDB
 DEC CNT1
 BNE NLLP2
 STU BPTR
 RTS
 
RNDB BSR RNUM
 ANDA #1
 LDX #GRFX
 TST LNDF
 BEQ RNDB1
 CMPD LNDC
 BHI RNDB3
 BRA RNDB2
RNDB1 CMPD LNDC
 BLO RNDB3
RNDB2 LDX #GRFX+128
RNDB3 LDA RND
 CLRB
 CMPA #128
 BLO STBG
 LDB #32
 CMPA #240
 BLO STBG
 LDB #64
 CMPA #255
 BLO STBG
 LDB #96
STBG ABX
 STX ,--U
 RTS
 
RNUM LDD RND
 LSLB
 ROLA
 ROLB
 ROLA
 ROLB
 ROLA
RN1 ADCB $4400
RN2 ADCA $4400
 INC RN1+2
 DEC RN2+2
 EORA RND+1
 EORB RND
 STD RND
 RTS
 
EGNS LDY #GNR
 LDA #8
 STA ,-S
GNLP LDX ,Y
 BEQ NGN
 LDD ,X
 CMPD #GRFX+288
 BNE KILG
 LDA 3,Y
 INCA
 STA 3,Y
 CMPA #138
 BEQ KILG
 CMPA #-12
 BHS NGN
 CMPA #4
 BLO NGN
 JSR RNUM
 CMPB #10
 BHI NGN
 LDU 2,Y
 BSR FEB
NGN LEAY 4,Y
 DEC ,S
 BNE GNLP
 PULS A,PC
KILG LDD #0
 STD ,Y
 BRA NGN
 
FEB LDX #EBR
 LDA #8
 STA ,-S
FBLP LDA 5,X
 BNE FBLE
 STU ,X
 LDB CRDS
 ADDB #8
 CLRA
 SUBB ,X
 SBCA #0
 ASRA
 RORB
 STB 2,X
 LDB CRDS+1
 ADDB #6
 CLRA
 SUBB 1,X
 SBCA #0
 ASRA
 RORB
 LDA 2,X
 BSR SCALE
 STD 2,X
 LDA RND+1
 LDB #1
 STD 4,X
 BRA FEXT
FBLE LEAX 6,X
 DEC ,S
 BNE FBLP
FEXT PULS A,PC
 
SCALE CMPA #4
 BGT SCLP2
 CMPA #-4
 BLT SCLP2
 CMPB #4
 BGT SCLP2
 CMPB #-4
 BLT SCLP2
 CMPD #0
 BNE SCLD
 LDD #$0002
SCLD RTS
SCLP2 ASRA
 ASRB
 BRA SCALE
 
EBLS LDU #EBR
 LDX #$DA76
 STX MASK
 LDA #8
 STA CNT1
EBLP LDA 5,U
 BEQ NBUL
 PSHS U
BG LDX #$DA7E
 LDB 4,U
 ADDB #8
 ANDB #24
 STB 4,U
 ABX
 STX IMAGE
 LDA #8
 STA HT
 LEAY ,U
 JSR SP8
 PULS U
 LDD ,U
 ADDA 2,U
 CMPA #248
 BHS KBL
 ADDB 3,U
 CMPB #136
 BHS KBL
 STD ,U
 BRA NBUL
KBL CLR 5,U
NBUL LEAU 6,U
 DEC CNT1
 BNE EBLP
 RTS
 
WOBBL DEC WBFL
 LDA OF2
 STA TOF
 CMPA #14
 BLS WOBD
 SUBA WOB
 BRA NXTW
WOBD ADDA WOB
NXTW ANDA #30
 STA OF2
 LDD WOB
 EXG A,B
 STD WOB
 JSR BCK2
 LDA TOF
 STA OF2
 RTS
 
FILBUF LDA #9
 STA CNT2
FLBFLP JSR NEWLN
 DEC CNT2
 BNE FLBFLP
 RTS
 
CLRBF2 LDX #BF2U
 LDD #0
CLBFLP STD ,X++
 CMPX #ENDBF
 BLO CLBFLP
 RTS
 
FEX LDX NXEX
 LDA ,X
 BEQ ERCL
 LDY ,X
 LDD 2,X
 STD ,Y
 CMPY #BF2L+30
 BHS LWR
 CMPY #BF2L
 BHS ERCL
 STD 300,Y
 BRA ERCL
LWR STD -300,Y
ERCL STU ,X
 LDD #$D000
 STD ,U
EGR LDD #$0000
 STD 2,X
 LEAX 4,X
 CMPX #EXRG+40
 BNE ROK
 LDX #EXRG
ROK STX NXEX
 RTS
 
BGEX LDY #EXRG
 LDA #10
 STA CNT1
EXLP LDU ,Y
 BEQ NOEX
 LDX ,U
 LEAX 32,X
 CMPX #$D100
 BLO EXNF
 LDX #0
 STX ,Y
 LDX 2,Y
EXNF STX ,U
 CMPU #BF2L+30
 BHS LWR2
 CMPU #BF2L
 BHS NOEX
 STX 300,U
 BRA NOEX
LWR2 STX -300,U
NOEX LEAY 4,Y
 DEC CNT1
 BNE EXLP
 RTS
 
 
 
