SHR 640 mode - support for text colours

This commit is contained in:
Bobbi Webber-Manners 2022-12-23 23:26:16 -05:00
parent 0395d56012
commit e5eabbac97
4 changed files with 29 additions and 10 deletions

Binary file not shown.

View File

@ -121,7 +121,7 @@ CLRLNRET >>> ENTAUX
* A=txt colour * A=txt colour
HSCRSETTCOL RTS HGRSETTCOL RTS
* A=gfx colour, X=gcol action * A=gfx colour, X=gcol action
@ -134,7 +134,7 @@ HSCRSETTCOL RTS
* 5 = NUL no change to pixel * 5 = NUL no change to pixel
* 6 = CLR clear pixel to background * 6 = CLR clear pixel to background
* 7 = UND undefined * 7 = UND undefined
HSCRSETGCOL PHA HGRSETGCOL PHA
LDA #$00 ; Normal drawing mode LDA #$00 ; Normal drawing mode
CPX #$04 ; k=4 means toggle CPX #$04 ; k=4 means toggle
BNE :NORM BNE :NORM

View File

@ -8,6 +8,7 @@
SCB320 EQU $00 ; SCB for 320 mode SCB320 EQU $00 ; SCB for 320 mode
SCB640 EQU $80 ; SCB for 640 mode SCB640 EQU $80 ; SCB for 640 mode
* Colours in the following order. * Colours in the following order.
* For 16 colour modes ... * For 16 colour modes ...
* BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, ... * BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, ...
@ -48,6 +49,9 @@ PALETTE640 DB $00, $00 ; BLACK
DB $80, $08 ; YELLOW DB $80, $08 ; YELLOW
DB $88, $08 ; WHITE DB $88, $08 ; WHITE
SHRCOLMASK DB $00 ; Colour mask
* Enable SHR mode * Enable SHR mode
SHRVDU22 JSR VDU12 ; Clear text and SHR screen SHRVDU22 JSR VDU12 ; Clear text and SHR screen
LDA #$80 ; Most significant bit LDA #$80 ; Most significant bit
@ -149,7 +153,7 @@ SHRCHAR640 PHY
BNE :L1 BNE :L1
PHA PHA
LDA :TEMP LDA :TEMP
AND #%10101010 AND SHRCOLMASK ; Mask to set colour
STA [VDUADDR] STA [VDUADDR]
PLA PLA
STZ :TEMP STZ :TEMP
@ -164,7 +168,7 @@ SHRCHAR640 PHY
BNE :L2 BNE :L2
LDA :TEMP LDA :TEMP
LDY #$01 LDY #$01
AND #%10101010 AND SHRCOLMASK ; Mask to set colour
STA [VDUADDR],Y STA [VDUADDR],Y
PLY PLY
RTS RTS
@ -232,3 +236,15 @@ SHRCLEAR PHP ; Disable interrupts
RTS RTS
* Set text colour
* A=txt colour
SHRSETTCOL TAX
LDA :MASKS640,X ; Lookup mask in table
STA SHRCOLMASK ; Set colour mask
RTS
:MASKS640 DB %00000000
DB %01010101
DB %10101010
DB %11111111

View File

@ -900,26 +900,29 @@ VDU20LP STA TXTFGD,X ; Clear all colours
* THE FOLLOWING LINE IS FOR GS ONLY & NOT SAFE ON //c * THE FOLLOWING LINE IS FOR GS ONLY & NOT SAFE ON //c
* STA CLOCKCTL ; Set border * STA CLOCKCTL ; Set border
LDA #$80 LDA #$80
JSR HSCRSETTCOL ; Set txt background JSR HGRSETTCOL ; Set txt background
JSR SHRSETTCOL ; Set txt background
LDX #$00 LDX #$00
LDA #$80 LDA #$80
JSR HSCRSETGCOL ; Set gfx background JSR HGRSETGCOL ; Set gfx background
LDA VDUCOLOURS LDA VDUCOLOURS
AND #$07 AND #$07
PHA PHA
STA TXTFGD ; Note txt foreground STA TXTFGD ; Note txt foreground
JSR HSCRSETTCOL ; Set txt foreground JSR HGRSETTCOL ; Set txt foreground
JSR SHRSETTCOL ; Set txt background
LDX #$00 LDX #$00
PLA PLA
STA GFXFGD ; Note gfx foreground STA GFXFGD ; Note gfx foreground
JMP HSCRSETGCOL ; Set gfx foreground JMP HGRSETGCOL ; Set gfx foreground
* VDU 17 - COLOUR n - select text or border colour * VDU 17 - COLOUR n - select text or border colour
VDU17 LDA VDUQ+8 VDU17 LDA VDUQ+8
CMP #$C0 CMP #$C0
BCS VDU17BORDER BCS VDU17BORDER
* TO DO * * TO DO *
JMP HSCRSETTCOL JSR HGRSETTCOL
JMP SHRSETTCOL
VDU17BORDER AND #$0F VDU17BORDER AND #$0F
STA VDUBORDER STA VDUBORDER
TAX TAX
@ -946,7 +949,7 @@ VDU18A LDA VDUQ+7 ; GCOL action
ROL A ROL A
PLP PLP
ROR A ; Get bit 7 back ROR A ; Get bit 7 back
JMP HSCRSETGCOL JMP HGRSETGCOL
* VDU 19 - Select palette colours * VDU 19 - Select palette colours
VDU19 RTS VDU19 RTS