**************
*BLACK PLANET*
*TEXT #1     *
**************
 
 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
 
BUFU EQU $B000
BUFL EQU BUFU+288
BF2U EQU BUFU+608
BF2L EQU BF2U+270
 
GRFX EQU 15000
SHIPG EQU 15746
 
TIMER EQU 274
ILNDC EQU 801
 
 ORG BF2L+300
 PUT 1536
 
 SETDP $04
 
BACK LDY SCRN
 LDX BPTR
SK1 LDU #0
 STU SK4+1
SK2 LDU #0
 STU CH2+1
 CLR SFL
 LDA OFF
 LDB #32
 SUBB OFF
 JSR DLN1
 LEAX 32,X
 STS K1+2
 LDA #8
 STA CNT2
VLP LDA #16
 STA CNT1
HLP STX K2+1
 LDS ,X
 PULS D,X,U
 STD ,Y
 STX 32,Y
 STU 64,Y
 LEAY 96,Y
 PULS D,X,U
 STD ,Y
 STX 32,Y
 STU 64,Y
 LEAY 96,Y
 PULS D,X,U
 STD ,Y
 STX 32,Y
 STU 64,Y
 LEAY 96,Y
 PULS D,X,U
 STD ,Y
 STX 32,Y
 STU 64,Y
 LEAY 96,Y
 PULS D,X,U
 STD ,Y
 STX 32,Y
 STU 64,Y
 LDU ,S
 STU 96,Y
 LEAY -382,Y
K2 LDX #0
 LEAX 2,X
 COM SFL
 BEQ NSND
 LDA CNT2
 CMPA #5
 BLO CH2
SK4 LDA >0
VOL1 LDB #0
 MUL
 STA $FF20
 INC SK4+2
 BRA NSND
CH2 LDA >0
VOL2 LDB #0
 MUL
 STA $FF20
 INC CH2+2
NSND DEC CNT1
 BNE HLP
 LEAY 480,Y
 DEC CNT2
 LBNE VLP
K1 LDS #0
 CLRA
 LDB OFF
 BEQ NBL
DLN1 LSRB
DLINE LDU ,X
 LDU A,U
 STU ,Y
 LDU 2,X
 LDU A,U
 STU 2,Y
 LDU 4,X
 LDU A,U
 STU 4,Y
 LDU 6,X
 LDU A,U
 STU 6,Y
 LDU 8,X
 LDU A,U
 STU 8,Y
 LDU 10,X
 LDU A,U
 STU 10,Y
 LDU 12,X
 LDU A,U
 STU 12,Y
 LDU 14,X
 LDU A,U
 STU 14,Y
 LDU 16,X
 LDU A,U
 STU 16,Y
 LDU 18,X
 LDU A,U
 STU 18,Y
 LDU 20,X
 LDU A,U
 STU 20,Y
 LDU 22,X
 LDU A,U
 STU 22,Y
 LDU 24,X
 LDU A,U
 STU 24,Y
 LDU 26,X
 LDU A,U
 STU 26,Y
 LDU 28,X
 LDU A,U
 STU 28,Y
 LDU 30,X
 LDU A,U
 STU 30,Y
 LEAY 32,Y
 ADDA #2
 DECB
 BNE DLINE
NBL RTS
 
BCK2 LDY SCRN
 LEAY 1,Y
 LDX BPR2
SK3 LDU #0
 STU SK5+1
 LDA OF2
 LDB #32
 SUBB OF2
 JSR DL2A
 LEAX 30,X
 STS K3+2
 LDA #8
 STA CNT2
VLP2 LDA #15
 STA CNT1
 CLR SFL
HLP2 STX K4+1
 LDS ,X
 BEQ BLK2
 PULS D,X,U
 STD ,Y
 STX 32,Y
 STU 64,Y
 LEAY 96,Y
 PULS D,X,U
 STD ,Y
 STX 32,Y
 STU 64,Y
 LEAY 96,Y
 PULS D,X,U
 STD ,Y
 STX 32,Y
 STU 64,Y
 LEAY 96,Y
 PULS D,X,U
 STD ,Y
 STX 32,Y
 STU 64,Y
 LEAY 96,Y
 PULS D,X,U
 STD ,Y
 STX 32,Y
 STU 64,Y
 LDU ,S
 STU 96,Y
 LEAY -384,Y
BLK2 LEAY 2,Y
K4 LDX #0
 LEAX 2,X
 COM SFL
 BEQ NSD2
SK5 LDA >0
VOL3 LDB #0
 MUL
 STA $FF20
 INC SK5+2
NSD2 DEC CNT1
 BNE HLP2
 LEAY 482,Y
 DEC CNT2
 LBNE VLP2
K3 LDS #0
 CLRA
 LDB OF2
 BNE DL2A
 RTS
DL2A LSRB
DLN2 LDU ,X
 BEQ NA
 LDU A,U
 STU ,Y
NA LDU 2,X
 BEQ NB
 LDU A,U
 STU 2,Y
NB LDU 4,X
 BEQ NC
 LDU A,U
 STU 4,Y
NC LDU 6,X
 BEQ ND
 LDU A,U
 STU 6,Y
ND LDU 8,X
 BEQ NE
 LDU A,U
 STU 8,Y
NE LDU 10,X
 BEQ NF
 LDU A,U
 STU 10,Y
NF LDU 12,X
 BEQ NG
 LDU A,U
 STU 12,Y
NG LDU 14,X
 BEQ NH
 LDU A,U
 STU 14,Y
NH LDU 16,X
 BEQ NI
 LDU A,U
 STU 16,Y
NI LDU 18,X
 BEQ NJ
 LDU A,U
 STU 18,Y
NJ LDU 20,X
 BEQ NK
 LDU A,U
 STU 20,Y
NK LDU 22,X
 BEQ NL
 LDU A,U
 STU 22,Y
NL LDU 24,X
 BEQ NM
 LDU A,U
 STU 24,Y
NM LDU 26,X
 BEQ NN
 LDU A,U
 STU 26,Y
NN LDU 28,X
 BEQ NO
 LDU A,U
 STU 28,Y
NO LEAY 32,Y
 ADDA #2
 DECB
 LBNE DLN2
 RTS
 
FLICK LDA $FF02
 SYNC
 COM FRM
 BEQ FLCK2
 LDX #$8000
 STX SCRN
 STA $FFCB
 STA $FFCD
 RTS
FLCK2 LDX #$9800
 STX SCRN
 STA $FFCA
 STA $FFCC
 RTS
 
RDKYS LDX #KTAB
 LDA #254
 STA $FF02
 ORCC #1
LP LDB $FF00
 STB ,X+
 ROL $FF02
 BCS LP
 RTS
 
GMODE LDA #$F8
 STA $FF22
 LDU #$FFC0
 STA ,U
 STA 3,U
 STA 5,U
 STA 6,U
 STA 8,U
 STA 10,U
 STA 12,U
 STA 14,U
 STA 16,U
 STA 19,U
 RTS
 
PCLS LDX #$8000
 CLRA
 CLRB
PCLSLP STD ,X++
 CMPX #$B000
 BLO PCLSLP
 RTS
 
ENSD LDA $FF01
 ANDA #$F7
 STA $FF01
 LDA $FF03
 ANDA #$F7
 STA $FF03
 LDA $FF23
 ORA #8
 STA $FF23
 RTS
 
CALC LDX SCRN
 LDD ,Y
 LSRA
 LSRA
 LSRA
 LEAX A,X
 LDA #32
 MUL
 LEAX D,X
 LDB ,Y
 ANDB #7
 RTS
 
CALCM LDX SCRN
 LDD ,Y
 LSRA
 LSRA
 LSRA
 LEAX A,X
 LDA #32
 MUL
 LEAX D,X
 LDB ,Y
 ANDB #7
 LDU #MULTAB
 LDA B,U
 ADDB #8
 LDB B,U
 RTS
 
SP8 BSR CALCM
 STX SPAD
 STA M8C+1
 STA I8A+1
 STB M8A+1
 COMB
 STB M8A+2
 LDU MASK
 LDA HT
 STA HCNT
M8LP LDA ,U+
M8C LDB #0
 BEQ M8A
 MUL
M8A ADDD #0
 ANDA ,X
 ANDB 1,X
 STD ,X
 LEAX 32,X
 DEC HCNT
 BNE M8LP
 LDX SPAD
 LDU IMAGE
 LDA HT
 STA HCNT
I8LP LDA ,U+
I8A LDB #0
 BEQ Z8A
 MUL
Z8A ADDD ,X
 STD ,X
 LEAX 32,X
 DEC HCNT
 BNE I8LP
 RTS
 
SP16 BSR CALCM
 STX SPAD
 STA M16C+1
 STA M16D+1
 STA I16A+1
 STA I16B+1
 STB M16A+1
 COMB
 STB M16B+1
 LDU MASK
 LDA HT
 STA HCNT
M16LP LDA ,U+
M16C LDB #0
 BEQ M16A
 MUL
M16A ORA #0
 ANDA ,X
 STA ,X
 STB T16A+1
 LDA ,U+
M16D LDB #0
 BEQ T16A
 MUL
T16A ORA #0
 ANDA 1,X
M16B ORB #0
 ANDB 2,X
 STD 1,X
 LEAX 32,X
 DEC HCNT
 BNE M16LP
 LDX SPAD
 LDU IMAGE
 LDA HT
 STA HCNT
I16LP LDA ,U+
I16A LDB #0
 BEQ Z16A
 MUL
Z16A ADDD ,X
 STD ,X
 LDA ,U+
I16B LDB #0
 BEQ Z16B
 MUL
Z16B ADDD 1,X
 STD 1,X
 LEAX 32,X
 DEC HCNT
 BNE I16LP
 RTS
 
SP24 JSR CALCM
 STX SPAD
 STA M24C+1
 STA M24D+1
 STA M24E+1
 STA I24A+1
 STA I24B+1
 STA I24C+1
 STB M24A+1
 COMB
 STB M24B+1
 LDU MASK
 LDA HT
 STA HCNT
M24LP LDA ,U+
M24C LDB #0
 BEQ M24A
 MUL
M24A ORA #0
 ANDA ,X
 STA ,X
 STB T24A+1
 LDA ,U+
M24D LDB #0
 BEQ T24A
 MUL
T24A ORA #0
 ANDA 1,X
 STA 1,X
 STB T24B+1
 LDA ,U+
M24E LDB #0
 BEQ T24B
 MUL
T24B ORA #0
 ANDA 2,X
M24B ORB #0
 ANDB 3,X
 STD 2,X
 LEAX 32,X
 DEC HCNT
 BNE M24LP
 LDX SPAD
 LDU IMAGE
 LDA HT
 STA HCNT
I24LP LDA ,U+
I24A LDB #0
 BEQ Z24A
 MUL
Z24A ADDD ,X
 STD ,X
 LDA ,U+
I24B LDB #0
 BEQ Z24B
 MUL
Z24B ADDD 1,X
 STD 1,X
 LDA ,U+
I24C LDB #0
 BEQ Z24C
 MUL
Z24C ADDD 2,X
 STD 2,X
 LEAX 32,X
 DEC HCNT
 BNE I24LP
 RTS
 
SP32 JSR CALCM
 STX SPAD
 STA M32C+1
 STA M32D+1
 STA M32E+1
 STA M32F+1
 STA I32A+1
 STA I32B+1
 STA I32C+1
 STA I32D+1
 STB M32A+1
 COMB
 STB M32B+1
 LDU MASK
 LDA HT
 STA HCNT
M32LP LDA ,U+
M32C LDB #0
 BEQ M32A
 MUL
M32A ORA #0
 ANDA ,X
 STA ,X
 STB T32A+1
 LDA ,U+
M32D LDB #0
 BEQ T32A
 MUL
T32A ORA #0
 ANDA 1,X
 STA 1,X
 STB T32B+1
 LDA ,U+
M32E LDB #0
 BEQ T32B
 MUL
T32B ORA #0
 ANDA 2,X
 STA 2,X
 STB T32C+1
 LDA ,U+
M32F LDB #0
 BEQ T32C
 MUL
T32C ORA #0
 ANDA 3,X
M32B ORB #0
 ANDB 4,X
 STD 3,X
 LEAX 32,X
 DEC HCNT
 BNE M32LP
 LDX SPAD
 LDU IMAGE
 LDA HT
 STA HCNT
I32LP LDA ,U+
I32A LDB #0
 BEQ Z32A
 MUL
Z32A ADDD ,X
 STD ,X
 LDA ,U+
I32B LDB #0
 BEQ Z32B
 MUL
Z32B ADDD 1,X
 STD 1,X
 LDA ,U+
I32C LDB #0
 BEQ Z32C
 MUL
Z32C ADDD 2,X
 STD 2,X
 LDA ,U+
I32D LDB #0
 BEQ Z32D
 MUL
Z32D ADDD 3,X
 STD 3,X
 LEAX 32,X
 DEC HCNT
 BNE I32LP
 RTS
 
SP64 JSR CALCM
 STX SPAD
 STA M64C+1
 STA M64D+1
 STA M64E+1
 STA M64F+1
 STA M64G+1
 STA M64H+1
 STA M64I+1
 STA M64J+1
 STA I64A+1
 STA I64B+1
 STA I64C+1
 STA I64D+1
 STA I64E+1
 STA I64F+1
 STA I64G+1
 STA I64H+1
 STB M64A+1
 COMB
 STB M64B+1
 LDU MASK
 LDA HT
 STA HCNT
M64LP LDA ,U+
M64C LDB #0
 BEQ M64A
 MUL
M64A ORA #0
 ANDA ,X
 STA ,X
 STB T64A+1
 LDA ,U+
M64D LDB #0
 BEQ T64A
 MUL
T64A ORA #0
 ANDA 1,X
 STA 1,X
 STB T64B+1
 LDA ,U+
M64E LDB #0
 BEQ T64B
 MUL
T64B ORA #0
 ANDA 2,X
 STA 2,X
 STB T64C+1
 LDA ,U+
M64F LDB #0
 BEQ T64C
 MUL
T64C ORA #0
 ANDA 3,X
 STA 3,X
 STB T64D+1
 LDA ,U+
M64G LDB #0
 BEQ T64D
 MUL
T64D ORA #0
 ANDA 4,X
 STA 4,X
 STB T64E+1
 LDA ,U+
M64H LDB #0
 BEQ T64E
 MUL
T64E ORA #0
 ANDA 5,X
 STA 5,X
 STB T64F+1
 LDA ,U+
M64I LDB #0
 BEQ T64F
 MUL
T64F ORA #0
 ANDA 6,X
 STA 6,X
 STB T64G+1
 LDA ,U+
M64J LDB #0
 BEQ T64G
 MUL
T64G ORA #0
 ANDA 7,X
M64B ORB #0
 ANDB 8,X
 STD 7,X
 LEAX 32,X
 DEC HCNT
 LBNE M64LP
 LDX SPAD
 LDU IMAGE
 LDA HT
 STA HCNT
I64LP LDA ,U+
I64A LDB #0
 BEQ Z64A
 MUL
Z64A ADDD ,X
 STD ,X
 LDA ,U+
I64B LDB #0
 BEQ Z64B
 MUL
Z64B ADDD 1,X
 STD 1,X
 LDA ,U+
I64C LDB #0
 BEQ Z64C
 MUL
Z64C ADDD 2,X
 STD 2,X
 LDA ,U+
I64D LDB #0
 BEQ Z64D
 MUL
Z64D ADDD 3,X
 STD 3,X
 LDA ,U+
I64E LDB #0
 BEQ Z64E
 MUL
Z64E ADDD 4,X
 STD 4,X
 LDA ,U+
I64F LDB #0
 BEQ Z64F
 MUL
Z64F ADDD 5,X
 STD 5,X
 LDA ,U+
I64G LDB #0
 BEQ Z64G
 MUL
Z64G ADDD 6,X
 STD 6,X
 LDA ,U+
I64H LDB #0
 BEQ Z64H
 MUL
Z64H ADDD 7,X
 STD 7,X
 LEAX 32,X
 DEC HCNT
 BNE I64LP
 RTS
 
MULTAB FCB 0,128,64,32,16,8,4,2
ANDTAB FCB 0,128,192,224,240
 FCB 248,252,254
 
 
