Adding calls to SHR routines in VDU driver

This commit is contained in:
Bobbi Webber-Manners 2022-12-22 20:58:38 -05:00
parent 3d84e270bc
commit 34083aeb81
4 changed files with 79 additions and 45 deletions

Binary file not shown.

View File

@ -25,7 +25,7 @@ HGRVDU22 JSR VDU12 ; Clear text and HGR screen
* Write character to HGR screen
PRCHRSOFT CMP #$A0 ; Convert to screen code
HGRPRCHAR CMP #$A0 ; Convert to screen code
BCS :B0
CMP #$80
BCC :B0
@ -37,7 +37,7 @@ PRCHRSOFT CMP #$A0 ; Convert to screen code
EOR #$40
TAX
:B1 PHX
JSR HCHARADDR ; Addr in VDUADDR
JSR HGRCHARADDR ; Addr in VDUADDR
>>> WRTMAIN
LDA VDUADDR+0
STA HGRADDR+0
@ -53,7 +53,7 @@ PUTCHRET >>> ENTAUX
* Calculate character address in HGR screen memory
* This is the address of the first pixel row of the char
* Add $0400 for each subsequent row of the char
HCHARADDR LDA VDUTEXTY
HGRCHARADDR LDA VDUTEXTY
ASL
TAY
CLC
@ -68,7 +68,7 @@ HCHARADDR LDA VDUTEXTY
* Forwards scroll one line
HSCR1LINE >>> WRTMAIN
HGRSCR1LINE >>> WRTMAIN
LDX TXTWINLFT
STX MTXTWINLFT
LDX TXTWINRGT
@ -78,8 +78,9 @@ HSCR1LINE >>> WRTMAIN
HSCR1RET >>> ENTAUX
RTS
* Reverse scroll one line
HRSCR1LINE >>> WRTMAIN
HGRRSCR1LINE >>> WRTMAIN
LDX TXTWINLFT
STX MTXTWINLFT
LDX TXTWINRGT
@ -87,7 +88,9 @@ HRSCR1LINE >>> WRTMAIN
>>> WRTAUX
>>> XF2MAIN,HGRRSCR1L
HSCRCLREOL LDA VDUTEXTY
* Clear from current location to EOL
HGRCLREOL LDA VDUTEXTY
ASL
TAX
>>> WRTMAIN
@ -102,8 +105,9 @@ HSCRCLREOL LDA VDUTEXTY
>>> WRTAUX
>>> XF2MAIN,HCLREOL
* VDU16 (CLG) clears the whole HGR screen right now
HSCRCLEAR >>> XF2MAIN,CLRHGR
HGRCLEAR >>> XF2MAIN,CLRHGR
VDU16RET >>> ENTAUX
STZ XPIXEL+0
STZ XPIXEL+1

View File

@ -5,9 +5,43 @@
* on Apple IIGS (640x200 4 colour, or 320x200 16 colour.)
*
SCB320 EQU $00 ; SCB for 320 mode
SCB640 EQU $80 ; SCB for 640 mode
* Enable SHR mode
SHRVDU22 JSR VDU12 ; Clear text and HGR screen
LDA #$80 ; Most significant bit
TSB NEWVIDEO ; Enable SHR mode
RTS
* Write character to SHR screen
SHRPRCHAR
RTS
* Calculate character address in SHR screen memory
SHRCHARADDR
RTS
* Forwards scroll one line
SHRSCR1LINE
RTS
* Reverse scroll one line
SHRRSCR1LINE
RTS
* Clear from current location to EOL
SHRCLREOL
RTS
* VDU16 (CLG) clears the whole SHR screen right now
SHRCLEAR
RTS

View File

@ -384,8 +384,12 @@ PRCHR5 BCC PRCHR6 ; Aux memory
PRCHR6 STA (VDUADDR),Y ; Store in aux
PRCHR7 PLA
BIT VDUSCREEN
BPL GETCHROK
JMP PRCHRSOFT ; Write character to graphics
BPL :NOTHGR
JMP HGRPRCHAR ; Write character to HGR
:NOTHGR BVC :NOTSHR
JMP SHRPRCHAR ; Write character to SHR
:NOTSHR BRA GETCHROK ; Text mode
* OSBYTE &87 - Read character at cursor
***************************************
@ -622,14 +626,16 @@ VDU12 STZ FXLINES
* Clear the text screen buffer
:L1 JSR CLREOL
BIT VDUSCREEN
BPL :S2
JSR HSCRCLREOL
:S2 LDA VDUTEXTY ; ROW
BPL :NOTHGR
JSR HGRCLREOL
:NOTHGR BVC :NOTSHR
JSR SHRCLREOL
:NOTSHR LDA VDUTEXTY ; ROW
CMP TXTWINBOT
BEQ :S3
BEQ :S1
INC VDUTEXTY ; ROW
BRA :L1
:S3 LDA TXTWINTOP
:S1 LDA TXTWINTOP
STA VDUTEXTY ; ROW
LDA TXTWINLFT
STA VDUTEXTX ; COL
@ -671,9 +677,11 @@ CLREOL JSR CHARADDR ; Set VDUADDR=>start of line
BMI :L2
CLREOLDONE DEC TXTWINRGT
BIT VDUSCREEN
BPL :NOHIRES
JMP HSCRCLREOL ; Clear an HGR line
:NOHIRES RTS
BPL :NOHGR
JMP HGRCLREOL ; Clear an HGR line
:NOHGR BVC :NOSHR
JMP SHRCLREOL ; Clear an SHR line
:NOSHR RTS
CLREOLGS BIT RD80VID
BPL :FORTY ; 40-col mode
:EIGHTY LDX VDUTEXTX ; Addr offset for column
@ -717,9 +725,11 @@ SCROLLER LDA TXTWINTOP
:L1 PHA
JSR SCR1LINE
BIT VDUSCREEN
BPL :S0
JSR SCR1SOFT ; Scroll graphics screen
:S0 PLA
BPL :NOTHGR
JMP HGRSCR1LINE ; Scroll HGR screen
:NOTHGR BVC :NOTSHR
JMP SHRSCR1LINE ; Scroll SHR screen
:NOTSHR PLA
INC
CMP TXTWINBOT
BNE :L1
@ -738,9 +748,11 @@ RSCROLLER DEC TXTWINTOP
:L1 PHA
JSR RSCR1LINE
BIT VDUSCREEN
BPL :S0
JSR RSCR1SOFT ; Scroll graphics screen
:S0 PLA
BPL :NOTHGR
JMP HGRRSCR1LINE ; Reverse scroll HGR screen
:NOTHGR BVC :NOTSHR
JMP SHRRSCR1LINE ; Reverse scroll SHR screen
:NOTSHR PLA
DEC A
CMP TXTWINTOP
BNE :L1
@ -863,14 +875,14 @@ SCR1LINEGS LDX TXTWINLFT
BMI :L2
BRA SCR1LNDONE
* Copy text line A+1 to line A for HGR bitmap gfx mode
SCR1SOFT JMP HSCR1LINE
* Copy text line A to line A+1 for HGR bitmap gfx mode
RSCR1SOFT JMP HRSCR1LINE
* VDU 16 - CLG, clear graphics window
VDU16 JMP HSCRCLEAR
VDU16 BIT VDUSCREEN
BPL :NOTHGR
JMP HGRCLEAR
:NOTHGR BVC :NOTSHR
JMP SHRCLEAR
:NOTSHR RTS
* Colour control
@ -1165,19 +1177,3 @@ BYTEA02 LDY VDUVARS+1,X
* VDU 1 - Send one character to printer
VDU01 RTS