816 lines
9.5 KiB
NASM
Executable File
816 lines
9.5 KiB
NASM
Executable File
;*
|
|
;* Draw player viewport
|
|
;*
|
|
DRAWVIEW
|
|
STA VIEWPORT
|
|
;*
|
|
;* Render ground from bottom -> up
|
|
;*
|
|
DRAWGRND LDA ANGLE ; Calc S,T,DS,DT table address
|
|
AND #$7F ; ST table offset = angle * horizon * 8
|
|
LSR ; horizon * 8 = 16 * 8 = 128
|
|
TAX ; angle * 128 = angle << 7 == (angle<<8) >> 1
|
|
LDA #$00 ;
|
|
STA SCANLN ; for later...
|
|
ROR
|
|
; CLC ; Carry = 0 from above
|
|
ADC #<ST_TBL ; Add ST table address to offset
|
|
STA STPTRL
|
|
TXA
|
|
ADC #>ST_TBL
|
|
STA STPTRH
|
|
;*
|
|
;* Draw even and odd scanlines together
|
|
;*
|
|
DRAWGRNDSCN
|
|
LDA VIEWPORT ; Max scanline number/2
|
|
SEC
|
|
SBC SCANLN
|
|
TAX
|
|
LDA TXT_TBLL,X
|
|
STA GBASL
|
|
LDA TXT_TBLH,X
|
|
ORA GPAGE
|
|
STA GBASH
|
|
;*
|
|
;* Draw right half of odd scanline
|
|
;*
|
|
LDY #$00 ; Copy and update working values from ST table
|
|
STY S_MIDFL ; Convert ST_TBL from 6.10 fixpt to 8.16 fixpt and add XYVIEW
|
|
STY T_MIDFL
|
|
LDA (STPTR),Y
|
|
STA S_MIDFH
|
|
INY
|
|
LDA (STPTR),Y
|
|
CMP #$80
|
|
ROR
|
|
ROR S_MIDFH
|
|
ROR S_MIDFL
|
|
CMP #$80
|
|
ROR
|
|
ROR S_MIDFH
|
|
ROR S_MIDFL
|
|
STA S_MIDI
|
|
LDA S_MIDFH
|
|
CLC
|
|
ADC XVIEWF
|
|
STA S_MIDFH
|
|
LDA S_MIDI
|
|
ADC XVIEWI
|
|
STA S_MIDI
|
|
INY
|
|
LDA (STPTR),Y
|
|
STA T_MIDFH
|
|
INY
|
|
LDA (STPTR),Y
|
|
CMP #$80
|
|
ROR
|
|
ROR T_MIDFH
|
|
ROR T_MIDFL
|
|
CMP #$80
|
|
ROR
|
|
ROR T_MIDFH
|
|
ROR T_MIDFL
|
|
STA T_MIDI
|
|
LDA T_MIDFH
|
|
CLC
|
|
ADC YVIEWF
|
|
STA T_MIDFH
|
|
LDA T_MIDI
|
|
ADC YVIEWI
|
|
STA T_MIDI
|
|
INY
|
|
LDA (STPTR),Y
|
|
STA DS_FRACL
|
|
LDX #$00
|
|
INY
|
|
LDA (STPTR),Y
|
|
CMP #$80
|
|
BCC +
|
|
DEX
|
|
+ STA DS_FRACH
|
|
STX DS_INT
|
|
ROR ; S = S_MID + DS/2
|
|
STA S_FRACH
|
|
LDA DS_FRACL
|
|
ROR
|
|
CLC
|
|
ADC S_MIDFL
|
|
STA S_FRACL
|
|
LDA S_FRACH
|
|
ADC S_MIDFH
|
|
STA S_FRACH
|
|
TXA
|
|
ADC S_MIDI
|
|
STA S_INT
|
|
INY
|
|
LDA (STPTR),Y
|
|
STA DT_FRACL
|
|
LDX #$00
|
|
INY
|
|
LDA (STPTR),Y
|
|
CMP #$80
|
|
BCC +
|
|
DEX
|
|
+ STA DT_FRACH
|
|
STX DT_INT
|
|
ROR ; T = T_MID + DT/2
|
|
STA T_FRACH
|
|
LDA DT_FRACL
|
|
ROR
|
|
CLC
|
|
ADC T_MIDFL
|
|
STA T_FRACL
|
|
LDA T_FRACH
|
|
ADC T_MIDFH
|
|
STA T_FRACH
|
|
TXA
|
|
ADC T_MIDI
|
|
STA T_INT
|
|
TYA ; Update STPTR to next scanline
|
|
SEC
|
|
ADC STPTRL
|
|
STA STPTRL
|
|
BCC +
|
|
INC STPTRH
|
|
+ LDY #15 ; Right-middle of screen
|
|
BNE GRNDRO
|
|
- LDA #$00
|
|
BEQ +
|
|
GRNDRO LDA S_INT
|
|
CMP #$40
|
|
BCS -
|
|
LDX T_INT
|
|
CPX #$40
|
|
BCS -
|
|
ORA MAP_TBLL,X
|
|
STA RDTEXRO+1
|
|
LDA MAP_TBLH,X
|
|
STA RDTEXRO+2
|
|
RDTEXRO LDA MAP
|
|
AND #$F0
|
|
+ STA (GBASE),Y
|
|
LDA S_FRACL ; S = S + DS
|
|
CLC
|
|
ADC DS_FRACL
|
|
STA S_FRACL
|
|
LDA S_FRACH
|
|
ADC DS_FRACH
|
|
STA S_FRACH
|
|
LDA S_INT
|
|
ADC DS_INT
|
|
STA S_INT
|
|
LDA T_FRACL ; T = T + DT
|
|
CLC
|
|
ADC DT_FRACL
|
|
STA T_FRACL
|
|
LDA T_FRACH
|
|
ADC DT_FRACH
|
|
STA T_FRACH
|
|
LDA T_INT
|
|
ADC DT_INT
|
|
STA T_INT
|
|
INY
|
|
CPY #30
|
|
BNE GRNDRO
|
|
;*
|
|
;* Draw left half of odd scanline
|
|
;*
|
|
LDA DS_FRACL
|
|
STA TMP
|
|
LDA DS_FRACH
|
|
CMP #$80
|
|
ROR ; S = S_MID - DS/2
|
|
STA TMP+1
|
|
ROR TMP
|
|
LDA S_MIDFL
|
|
SEC
|
|
SBC TMP
|
|
STA S_FRACL
|
|
LDA S_MIDFH
|
|
SBC TMP+1
|
|
STA S_FRACH
|
|
LDA S_MIDI
|
|
SBC DS_INT
|
|
STA S_INT
|
|
LDA DT_FRACL
|
|
STA TMP
|
|
LDA DT_FRACH
|
|
CMP #$80
|
|
ROR ; T = T_MID - DT/2
|
|
STA TMP+1
|
|
ROR TMP
|
|
LDA T_MIDFL
|
|
SEC
|
|
SBC TMP
|
|
STA T_FRACL
|
|
LDA T_MIDFH
|
|
SBC TMP+1
|
|
STA T_FRACH
|
|
LDA T_MIDI
|
|
SBC DT_INT
|
|
STA T_INT
|
|
LDY #14 ; Left-middle of screen
|
|
BNE GRNDLO
|
|
- LDA #$00
|
|
BEQ +
|
|
GRNDLO LDA S_INT
|
|
CMP #$40
|
|
BCS -
|
|
LDX T_INT
|
|
CPX #$40
|
|
BCS -
|
|
ORA MAP_TBLL,X
|
|
STA RDTEXLO+1
|
|
LDA MAP_TBLH,X
|
|
STA RDTEXLO+2
|
|
RDTEXLO LDA MAP
|
|
AND #$F0
|
|
+ STA (GBASE),Y
|
|
LDA S_FRACL ; S = S + DS
|
|
SEC
|
|
SBC DS_FRACL
|
|
STA S_FRACL
|
|
LDA S_FRACH
|
|
SBC DS_FRACH
|
|
STA S_FRACH
|
|
LDA S_INT
|
|
SBC DS_INT
|
|
STA S_INT
|
|
LDA T_FRACL ; T = T + DT
|
|
SEC
|
|
SBC DT_FRACL
|
|
STA T_FRACL
|
|
LDA T_FRACH
|
|
SBC DT_FRACH
|
|
STA T_FRACH
|
|
LDA T_INT
|
|
SBC DT_INT
|
|
STA T_INT
|
|
DEY
|
|
BPL GRNDLO
|
|
;*
|
|
;* Draw right half of even scanline
|
|
;*
|
|
DEC VDLY
|
|
BNE +
|
|
BIT SPEAKER
|
|
LDA VTONE
|
|
STA VDLY
|
|
+ LDY #$00 ; Copy and update working values from ST table
|
|
STY S_MIDFL ; Convert ST_TBL from 6.10 fixpt to 8.16 fixpt and add XYVIEW
|
|
STY T_MIDFL
|
|
LDA (STPTR),Y
|
|
STA S_MIDFH
|
|
INY
|
|
LDA (STPTR),Y
|
|
CMP #$80
|
|
ROR
|
|
ROR S_MIDFH
|
|
ROR S_MIDFL
|
|
CMP #$80
|
|
ROR
|
|
ROR S_MIDFH
|
|
ROR S_MIDFL
|
|
STA S_MIDI
|
|
LDA S_MIDFH
|
|
CLC
|
|
ADC XVIEWF
|
|
STA S_MIDFH
|
|
LDA S_MIDI
|
|
ADC XVIEWI
|
|
STA S_MIDI
|
|
INY
|
|
LDA (STPTR),Y
|
|
STA T_MIDFH
|
|
INY
|
|
LDA (STPTR),Y
|
|
CMP #$80
|
|
ROR
|
|
ROR T_MIDFH
|
|
ROR T_MIDFL
|
|
CMP #$80
|
|
ROR
|
|
ROR T_MIDFH
|
|
ROR T_MIDFL
|
|
STA T_MIDI
|
|
LDA T_MIDFH
|
|
CLC
|
|
ADC YVIEWF
|
|
STA T_MIDFH
|
|
LDA T_MIDI
|
|
ADC YVIEWI
|
|
STA T_MIDI
|
|
INY
|
|
LDA (STPTR),Y
|
|
STA DS_FRACL
|
|
LDX #$00
|
|
INY
|
|
LDA (STPTR),Y
|
|
CMP #$80
|
|
BCC +
|
|
DEX
|
|
+ STA DS_FRACH
|
|
STX DS_INT
|
|
ROR ; S = S_MID + DS/2
|
|
STA S_FRACH
|
|
LDA DS_FRACL
|
|
ROR
|
|
CLC
|
|
ADC S_MIDFL
|
|
STA S_FRACL
|
|
LDA S_FRACH
|
|
ADC S_MIDFH
|
|
STA S_FRACH
|
|
TXA
|
|
ADC S_MIDI
|
|
STA S_INT
|
|
INY
|
|
LDA (STPTR),Y
|
|
STA DT_FRACL
|
|
LDX #$00
|
|
INY
|
|
LDA (STPTR),Y
|
|
CMP #$80
|
|
BCC +
|
|
DEX
|
|
+ STA DT_FRACH
|
|
STX DT_INT
|
|
ROR ; T = T_MID + DT/2
|
|
STA T_FRACH
|
|
LDA DT_FRACL
|
|
ROR
|
|
CLC
|
|
ADC T_MIDFL
|
|
STA T_FRACL
|
|
LDA T_FRACH
|
|
ADC T_MIDFH
|
|
STA T_FRACH
|
|
TXA
|
|
ADC T_MIDI
|
|
STA T_INT
|
|
TYA ; Update STPTR to next scanline
|
|
SEC
|
|
ADC STPTRL
|
|
STA STPTRL
|
|
BCC +
|
|
INC STPTRH
|
|
+ LDY #15 ; Right-middle of screen
|
|
BNE GRNDRE
|
|
- LDA #$00
|
|
BEQ +
|
|
GRNDRE LDA S_INT
|
|
CMP #$40
|
|
BCS -
|
|
LDX T_INT
|
|
CPX #$40
|
|
BCS -
|
|
ORA MAP_TBLL,X
|
|
STA RDTEXRE+1
|
|
LDA MAP_TBLH,X
|
|
STA RDTEXRE+2
|
|
RDTEXRE LDA MAP
|
|
AND #$0F
|
|
+ ORA (GBASE),Y
|
|
STA (GBASE),Y
|
|
LDA S_FRACL ; S = S + DS
|
|
CLC
|
|
ADC DS_FRACL
|
|
STA S_FRACL
|
|
LDA S_FRACH
|
|
ADC DS_FRACH
|
|
STA S_FRACH
|
|
LDA S_INT
|
|
ADC DS_INT
|
|
STA S_INT
|
|
LDA T_FRACL ; T = T + DT
|
|
CLC
|
|
ADC DT_FRACL
|
|
STA T_FRACL
|
|
LDA T_FRACH
|
|
ADC DT_FRACH
|
|
STA T_FRACH
|
|
LDA T_INT
|
|
ADC DT_INT
|
|
STA T_INT
|
|
INY
|
|
CPY #30
|
|
BNE GRNDRE
|
|
;*
|
|
;* Draw left half of even scanline
|
|
;*
|
|
LDA DS_FRACL
|
|
STA TMP
|
|
LDA DS_FRACH
|
|
CMP #$80
|
|
ROR ; S = S_MID - DS/2
|
|
STA TMP+1
|
|
ROR TMP
|
|
LDA S_MIDFL
|
|
SEC
|
|
SBC TMP
|
|
STA S_FRACL
|
|
LDA S_MIDFH
|
|
SBC TMP+1
|
|
STA S_FRACH
|
|
LDA S_MIDI
|
|
SBC DS_INT
|
|
STA S_INT
|
|
LDA DT_FRACL
|
|
STA TMP
|
|
LDA DT_FRACH
|
|
CMP #$80
|
|
ROR ; T = T_MID - DT/2
|
|
STA TMP+1
|
|
ROR TMP
|
|
LDA T_MIDFL
|
|
SEC
|
|
SBC TMP
|
|
STA T_FRACL
|
|
LDA T_MIDFH
|
|
SBC TMP+1
|
|
STA T_FRACH
|
|
LDA T_MIDI
|
|
SBC DT_INT
|
|
STA T_INT
|
|
LDY #14 ; Left-middle of screen
|
|
BNE GRNDLE
|
|
- LDA #$00
|
|
BEQ +
|
|
GRNDLE LDA S_INT
|
|
CMP #$40
|
|
BCS -
|
|
LDX T_INT
|
|
CPX #$40
|
|
BCS -
|
|
ORA MAP_TBLL,X
|
|
STA RDTEXLE+1
|
|
LDA MAP_TBLH,X
|
|
STA RDTEXLE+2
|
|
RDTEXLE LDA MAP
|
|
AND #$0F
|
|
+ ORA (GBASE),Y
|
|
STA (GBASE),Y
|
|
LDA S_FRACL ; S = S + DS
|
|
SEC
|
|
SBC DS_FRACL
|
|
STA S_FRACL
|
|
LDA S_FRACH
|
|
SBC DS_FRACH
|
|
STA S_FRACH
|
|
LDA S_INT
|
|
SBC DS_INT
|
|
STA S_INT
|
|
LDA T_FRACL ; T = T + DT
|
|
SEC
|
|
SBC DT_FRACL
|
|
STA T_FRACL
|
|
LDA T_FRACH
|
|
SBC DT_FRACH
|
|
STA T_FRACH
|
|
LDA T_INT
|
|
SBC DT_INT
|
|
STA T_INT
|
|
DEY
|
|
BPL GRNDLE
|
|
DEC VDLY
|
|
BNE +
|
|
BIT SPEAKER
|
|
LDA VTONE
|
|
STA VDLY
|
|
+ INC SCANLN ; Move on to next even/odd scanlines
|
|
LDY SCANLN
|
|
CPY #HORIZON/2
|
|
BEQ DRAWBACK
|
|
JMP DRAWGRNDSCN
|
|
;*
|
|
;* Draw background
|
|
;*
|
|
DRAWBACK LDA VIEWPORT ; Max scanline number/2
|
|
SEC
|
|
SBC SCANLN
|
|
TAY
|
|
LDA TXT_TBLL,Y
|
|
STA STBCK1+1
|
|
LDA TXT_TBLH,Y
|
|
ORA GPAGE
|
|
STA STBCK1+2
|
|
LDA TXT_TBLL-1,Y
|
|
STA STBCK2+1
|
|
LDA TXT_TBLH-1,Y
|
|
ORA GPAGE
|
|
STA STBCK2+2
|
|
LDY #29
|
|
LDA ANGLE
|
|
CLC
|
|
ADC #15
|
|
- AND #$7F
|
|
TAX
|
|
LDA WALLS,X
|
|
STBCK1 STA $0400,Y
|
|
AND #$F0
|
|
STBCK2 STA $0400,Y
|
|
DEX
|
|
TXA
|
|
DEY
|
|
BPL -
|
|
;*
|
|
;* Draw top-down map view
|
|
;*
|
|
DRAWMAP LDA VIEWPORT
|
|
TAY
|
|
STY SCANLN
|
|
SEC
|
|
SBC #9 ; 20 - 2
|
|
STA VIEWPORT
|
|
DRAWMAPSCN
|
|
LDA TXT_TBLL,Y
|
|
STA STMAP+1
|
|
LDA TXT_TBLH,Y
|
|
ORA GPAGE
|
|
STA STMAP+2
|
|
LDX #$80
|
|
TYA
|
|
CLC
|
|
ADC YVIEWI
|
|
SEC
|
|
SBC #$05
|
|
; SEC
|
|
SBC VIEWPORT
|
|
CMP #$40
|
|
BCS + ; Scanline is off the map, so force black coordinates
|
|
TAX
|
|
LDA MAP_TBLL,X
|
|
STA LDMAP+1
|
|
LDA MAP_TBLH,X
|
|
STA LDMAP+2
|
|
LDA XVIEWI
|
|
SEC
|
|
SBC #$04
|
|
TAX
|
|
+ LDY #31
|
|
- CPX #$40
|
|
BCC LDMAP
|
|
LDA #$00
|
|
BEQ STMAP
|
|
LDMAP LDA MAP,X
|
|
STMAP STA $0400,Y
|
|
INX
|
|
INY
|
|
CPY #40
|
|
BNE -
|
|
DEC MDLY
|
|
BNE +
|
|
BIT SPEAKER
|
|
LDA MTONE
|
|
STA MDLY
|
|
+ DEC SCANLN
|
|
LDY SCANLN
|
|
CPY VIEWPORT
|
|
BNE DRAWMAPSCN
|
|
LDA P1XI ; Plot player 1 on map
|
|
SEC
|
|
SBC XVIEWI
|
|
CLC
|
|
ADC #$04
|
|
BMI +
|
|
CMP #9
|
|
BCS +
|
|
ADC #31
|
|
TAY
|
|
LDA P1YI
|
|
SEC
|
|
SBC YVIEWI
|
|
CLC
|
|
ADC #$04
|
|
BMI +
|
|
CMP #9
|
|
BCS +
|
|
SEC
|
|
ADC VIEWPORT
|
|
TAX
|
|
LDA TXT_TBLL,X
|
|
STA TMP
|
|
LDA TXT_TBLH,X
|
|
ORA GPAGE
|
|
STA TMP+1
|
|
LDA P1CYCLE
|
|
STA (TMP),Y
|
|
+ LDA P2XI ; Plot player 2 on map
|
|
SEC
|
|
SBC XVIEWI
|
|
CLC
|
|
ADC #$04
|
|
BMI +
|
|
CMP #9
|
|
BCS +
|
|
ADC #31
|
|
TAY
|
|
LDA P2YI
|
|
SEC
|
|
SBC YVIEWI
|
|
CLC
|
|
ADC #$04
|
|
BMI +
|
|
CMP #9
|
|
BCS +
|
|
SEC
|
|
ADC VIEWPORT
|
|
TAX
|
|
LDA TXT_TBLL,X
|
|
STA TMP
|
|
LDA TXT_TBLH,X
|
|
ORA GPAGE
|
|
STA TMP+1
|
|
LDA P2CYCLE
|
|
STA (TMP),Y
|
|
+ RTS
|
|
;*
|
|
;* Draw enemy light cycle
|
|
;*
|
|
DRAWENEMY
|
|
ASL
|
|
STA EBTTM
|
|
INC EBTTM
|
|
INC EBTTM
|
|
; SEC
|
|
SBC #HORIZON-1
|
|
STA VIEWPORT
|
|
LDA #$00
|
|
STA SCANLN
|
|
TXA
|
|
ASL
|
|
STA TMP
|
|
CMP #$80
|
|
ROR
|
|
CMP #$80
|
|
ROR
|
|
CLC
|
|
ADC TMP
|
|
STA TMP
|
|
LDA #15
|
|
SEC
|
|
SBC TMP
|
|
CMP #30
|
|
BCS ++
|
|
STA ECNTR
|
|
LDA PPSIZE
|
|
CMP #$01
|
|
BNE +
|
|
LDY VIEWPORT ; Only one pixel to plot
|
|
INY
|
|
LDX ECNTR
|
|
JMP GPLOT
|
|
+ LDA SCANLN
|
|
- CLC
|
|
ADC VIEWPORT
|
|
TAY
|
|
LDA ECNTR
|
|
SEC
|
|
SBC SCANLN
|
|
BPL +
|
|
LDA #$00
|
|
+ TAX
|
|
LDA ECNTR
|
|
CLC
|
|
ADC SCANLN
|
|
CMP #30
|
|
BCC +
|
|
LDA #29
|
|
+ JSR GHLIN
|
|
INC SCANLN
|
|
LDA SCANLN
|
|
CMP PPSIZE
|
|
BCC -
|
|
ASL
|
|
; CLC
|
|
ADC VIEWPORT
|
|
STA VIEWPORT
|
|
- SEC
|
|
SBC SCANLN
|
|
CMP EBTTM
|
|
BCS ++
|
|
TAY
|
|
LDA ECNTR
|
|
SEC
|
|
SBC SCANLN
|
|
BPL +
|
|
LDA #$00
|
|
+ TAX
|
|
LDA ECNTR
|
|
CLC
|
|
ADC SCANLN
|
|
CMP #30
|
|
BCC +
|
|
LDA #29
|
|
+ JSR GHLIN
|
|
LDA VIEWPORT
|
|
DEC SCANLN
|
|
BPL -
|
|
++ RTS
|
|
ECNTR !BYTE $00
|
|
EBTTM !BYTE $00
|
|
;*
|
|
;* Draw boost amount
|
|
;*
|
|
UPDTBST LSR
|
|
LSR
|
|
LSR
|
|
LSR
|
|
STA TMP
|
|
JSR GOTOXY
|
|
JSR NORMAL
|
|
LDX #$0F
|
|
EMPTYBST CPX TMP
|
|
BEQ +
|
|
LDA #' '
|
|
JSR PUTC
|
|
DEX
|
|
BPL EMPTYBST
|
|
BMI ++
|
|
+ CPX #$00
|
|
BEQ ++
|
|
JSR INVERSE
|
|
FULLBST LDA #'='
|
|
JSR PUTC
|
|
DEX
|
|
BNE FULLBST
|
|
++ JSR INVERSE
|
|
RTS
|
|
;*
|
|
;* Draw paddle position
|
|
;*
|
|
UPDTPDL TYA
|
|
LSR
|
|
LSR
|
|
LSR
|
|
CMP GCPREVY
|
|
BEQ ++
|
|
STX TMP
|
|
PHA
|
|
LDX #0
|
|
LDY #22
|
|
JSR GOTOXY
|
|
LDA GCPREVY
|
|
CMP #14
|
|
BCC +
|
|
LDA #14
|
|
+ CLC
|
|
ADC #3
|
|
TAY
|
|
LDA (TBAS1),Y
|
|
AND #$7F
|
|
STA (TBAS1),Y
|
|
STA (TBAS2),Y
|
|
PLA
|
|
STA GCPREVY
|
|
CMP #14
|
|
BCC +
|
|
LDA #14
|
|
+ CLC
|
|
ADC #3
|
|
TAY
|
|
LDA (TBAS1),Y
|
|
ORA #$80
|
|
STA (TBAS1),Y
|
|
STA (TBAS2),Y
|
|
LDX TMP
|
|
++ TXA
|
|
LSR
|
|
LSR
|
|
LSR
|
|
CMP GCPREVX
|
|
BEQ ++
|
|
PHA
|
|
LDX #0
|
|
LDY #22
|
|
JSR GOTOXY
|
|
LDA GCPREVX
|
|
CMP #14
|
|
BCC +
|
|
LDA #14
|
|
+ CLC
|
|
ADC #22
|
|
TAY
|
|
LDA (TBAS1),Y
|
|
AND #$7F
|
|
STA (TBAS1),Y
|
|
STA (TBAS2),Y
|
|
PLA
|
|
STA GCPREVX
|
|
CMP #14
|
|
BCC +
|
|
LDA #14
|
|
+ CLC
|
|
ADC #22
|
|
TAY
|
|
LDA (TBAS1),Y
|
|
ORA #$80
|
|
STA (TBAS1),Y
|
|
STA (TBAS2),Y
|
|
++ LDY GCPREVY
|
|
LDX GCPREVX
|
|
RTS
|
|
GCPREVX !BYTE $00
|
|
GCPREVY !BYTE $00
|