Added support for background colour

This commit is contained in:
Bobbi Webber-Manners 2022-12-26 02:25:49 -05:00
parent 4f686de090
commit af9845389a
2 changed files with 27 additions and 5 deletions

Binary file not shown.

View File

@ -49,7 +49,8 @@ PALETTE640 DB $00, $00 ; BLACK
DB $80, $08 ; YELLOW
DB $88, $08 ; WHITE
SHRCOLMASK DB $00 ; Colour mask
SHRCOLMASK DB $00 ; Colour mask foreground
SHRBGMASK DB $00 ; Colour mask background
* Addresses of start of text rows in SHR
@ -220,7 +221,6 @@ SHRCHAR640 PHY
BNE :L1
PHA
LDA ZP2
AND SHRCOLMASK ; Mask to set colour
STA [VDUADDR]
PLA
STZ ZP2
@ -235,7 +235,6 @@ SHRCHAR640 PHY
BNE :L2
LDA ZP2
LDY #$01
AND SHRCOLMASK ; Mask to set colour
STA [VDUADDR],Y
PLY
RTS
@ -269,12 +268,14 @@ SHRPRCHAR SEC
LDX #$00 ; First row of char
:L1 LDY #$00
LDA [VDUADDR2] ; Load exploded font data 1st byte
JSR SHRCOLBYTE
STA [VDUADDR] ; Store on screen
INY
INC VDUADDR2+0 ; Increment exploded font ptr
BNE :S1
INC VDUADDR2+1
:S1 LDA [VDUADDR2] ; Load exploded font data 2nd byte
JSR SHRCOLBYTE
STA [VDUADDR],Y ; Store on screen
INC VDUADDR2+0 ; Increment exploded font ptr
BNE :S2
@ -286,6 +287,17 @@ SHRPRCHAR SEC
RTS
* Apply colour masks to byte of character data
SHRCOLBYTE PHA ; Keep A
AND SHRCOLMASK ; Mask to set foreground colour
STA ZP1 ; Keep foreground
PLA ; Get original A back
EOR #$FF ; Invert bits
AND SHRBGMASK ; Apply background colour mask
EOR ZP1 ; Combine with foreground
RTS
* Calculate character address in SHR screen memory
* This is the address of the first pixel row of the char
* Add $00A0 for each subsequent row
@ -420,10 +432,20 @@ SHRCLEAR PHP ; Disable interrupts
* Set text colour
* A=txt colour
* TODO: Need to add support for 320 mode also
SHRSETTCOL AND #$03
SHRSETTCOL PHA
AND #$80
BEQ :FOREGND
PLA
AND #$03
TAX
LDA :MASKS640,X ; Lookup mask in table
STA SHRCOLMASK ; Set colour mask
STA SHRBGMASK ; Set colour mask (BG)
RTS
:FOREGND PLA
AND #$03
TAX
LDA :MASKS640,X ; Lookup mask in table
STA SHRCOLMASK ; Set colour mask (FG)
RTS
:MASKS640 DB %00000000
DB %01010101