No longer updates 'shadow' text screen in VDU5 mode

This commit is contained in:
Bobbi Webber-Manners 2023-01-15 17:00:18 -05:00
parent a4d9e389d3
commit 168a18ad6d
3 changed files with 52 additions and 45 deletions

Binary file not shown.

View File

@ -224,5 +224,5 @@ BYTE00 BEQ BYTE00A ; OSBYTE 0,0 - generate error
RTS ; %000x1xxx host type, 'A'pple RTS ; %000x1xxx host type, 'A'pple
BYTE00A BRK BYTE00A BRK
DB $F7 DB $F7
HELLO ASC 'Applecorn MOS 2022-01-14' HELLO ASC 'Applecorn MOS 2022-01-15'
DB $00 ; Unify MOS messages DB $00 ; Unify MOS messages

View File

@ -316,7 +316,13 @@ VDU127 JSR VDU08 ; Move cursor back
* Display character at current (TEXTX,TEXTY) * Display character at current (TEXTX,TEXTY)
PRCHRC PHA ; Save character PRCHRC PHA ; Save character
BIT ESCFLAG
LDA VDUSTATUS
AND #$20 ; Bit 5 VDU5 mode
BEQ :S1
JMP PRCHR7 ; Jump over text mode stuff
:S1 BIT ESCFLAG
BMI :RESUME BMI :RESUME
JSR ESCPOLL JSR ESCPOLL
BCS :RESUME BCS :RESUME
@ -532,106 +538,107 @@ CHARADDROK STA VDUBANK
* Move text cursor position * Move text cursor position
*************************** ***************************
* Move cursor left * Move cursor left
VDU08 LDA VDUTEXTX ; COL VDU08 LDA VDUSTATUS
AND #$20 ; Bit 5 -> VDU5 mode
BEQ VDU08VDU4 ; VDU5 not in effect
BIT VDUSCREEN
BVC VDU08DONE ; VDU5 but not SHR
>>> XF2MAIN,SHRVDU08
VDU08VDU4 LDA VDUTEXTX ; COL
CMP TXTWINLFT CMP TXTWINLFT
BEQ :S1 BEQ :S1
DEC VDUTEXTX ; COL DEC VDUTEXTX ; COL
BRA :S3 BRA VDU08DONE
:S1 LDA VDUTEXTY ; ROW :S1 LDA VDUTEXTY ; ROW
CMP TXTWINTOP CMP TXTWINTOP
BEQ :S3 BEQ VDU08DONE
DEC VDUTEXTY ; ROW DEC VDUTEXTY ; ROW
LDA TXTWINRGT LDA TXTWINRGT
STA VDUTEXTX ; COL STA VDUTEXTX ; COL
:S3 LDA VDUSTATUS
AND #$20 ; Bit 5 -> VDU5 mode
BEQ VDU08DONE
BIT VDUSCREEN
BVC VDU08DONE ; Not SHR, skip
>>> XF2MAIN,SHRVDU08
VDU08RET >>> ENTAUX
VDU08DONE RTS VDU08DONE RTS
VDU08RET >>> ENTAUX ; SHRVDU08 returns here
RTS
* Move cursor right * Move cursor right
VDU09 LDA VDUSTATUS VDU09 LDA VDUSTATUS
AND #$20 ; Bit 5 VDU 5 mode AND #$20 ; Bit 5 VDU 5 mode
BEQ VDU09SKIP BEQ VDU09VDU4 ; VDU5 not in effect
BIT VDUSCREEN BIT VDUSCREEN
BVC VDU09SKIP ; Not SHR, skip BVC VDU09DONE ; VDU5 but not SHR
>>> XF2MAIN,SHRVDU09 >>> XF2MAIN,SHRVDU09
VDU09RET >>> ENTAUX VDU09VDU4 LDA VDUTEXTX ; COL
VDU09SKIP LDA VDUTEXTX ; COL
CMP TXTWINRGT CMP TXTWINRGT
BCC :S2 BCC VDU09RGHT
LDA TXTWINLFT LDA TXTWINLFT
STA VDUTEXTX ; COL STA VDUTEXTX ; COL
LDA VDUTEXTY ; ROW LDA VDUTEXTY ; ROW
CMP TXTWINBOT CMP TXTWINBOT
BEQ SCROLL BEQ SCROLL
INC VDUTEXTY ; ROW INC VDUTEXTY ; ROW
:DONE RTS VDU09DONE RTS
:S2 INC VDUTEXTX ; COL VDU09RGHT INC VDUTEXTX ; COL
BRA :DONE BRA VDU09DONE
SCROLL LDA VDUSTATUS SCROLL JSR SCROLLER
AND #$20 ; Bit 5 VDU5 mode
BEQ :S3
RTS ; No scroll in VDU5
:S3 JSR SCROLLER
LDA TXTWINLFT LDA TXTWINLFT
STA VDUTEXTX STA VDUTEXTX
JSR CLREOL JSR CLREOL
RTS RTS
VDU09RET >>> ENTAUX ; SHRVDU09 returns here
RTS
* Move cursor down * Move cursor down
VDU10 LDA VDUSTATUS VDU10 LDA VDUSTATUS
AND #$20 ; Bit 5 -> VDU5 mode AND #$20 ; Bit 5 -> VDU5 mode
BEQ VDU10SKIP BEQ VDU10VDU4 ; VDU5 not in effect
BIT VDUSCREEN BIT VDUSCREEN
BVC VDU10SKIP ; Not SHR, skip BVC VDU10DONE ; VDU5 but not SHR
>>> XF2MAIN,SHRVDU10 >>> XF2MAIN,SHRVDU10
VDU10RET >>> ENTAUX VDU10VDU4 LDA VDUTEXTY ; ROW
VDU10SKIP LDA VDUTEXTY ; ROW
CMP TXTWINBOT CMP TXTWINBOT
BEQ VDU10SCRL BEQ VDU10SCRL
INC VDUTEXTY ; ROW INC VDUTEXTY ; ROW
VDU10DONE RTS VDU10DONE RTS
VDU10SCRL JMP SCROLL VDU10SCRL JMP SCROLL
VDU10RET >>> ENTAUX ; SHRVDU10 returns here
RTS
* Move cursor up * Move cursor up
VDU11 LDA VDUSTATUS VDU11 LDA VDUSTATUS
AND #$20 ; Bit 5 -> VDU5 mode AND #$20 ; Bit 5 -> VDU5 mode
BEQ VDU11SKIP BEQ VDU11VDU4 ; VDU5 not in effect
BIT VDUSCREEN BIT VDUSCREEN
BVC VDU11SKIP ; Not SHR, skip BVC VDU11DONE ; VDU5 but not SHR
>>> XF2MAIN,SHRVDU11 >>> XF2MAIN,SHRVDU11
VDU11RET >>> ENTAUX VDU11VDU4 LDA VDUTEXTY ; ROW
VDU11SKIP LDA VDUTEXTY ; ROW
CMP TXTWINTOP CMP TXTWINTOP
BNE :S1 BNE VDU11UP
LDA VDUTEXTX ; COL LDA VDUTEXTX ; COL
CMP TXTWINLFT CMP TXTWINLFT
BNE :DONE BNE VDU11DONE
JSR RSCROLLER JSR RSCROLLER
LDA TXTWINLFT LDA TXTWINLFT
STA VDUTEXTX STA VDUTEXTX
JSR CLREOL JSR CLREOL
RTS RTS
:S1 DEC VDUTEXTY ; ROW VDU11UP DEC VDUTEXTY ; ROW
:DONE RTS VDU11DONE RTS
VDU11RET >>> ENTAUX ; SHRVDU11 returns here
RTS
* Move to start of line * Move to start of line
VDU13 LDA #$BF VDU13 LDA VDUSTATUS
AND #$20 ; Bit 5 -> VDU5 mode
BEQ VDU13VDU4 ; VDU5 not in effect
BIT VDUSCREEN
BVC VDU13DONE ; VDU5 but not SHR
>>> XF2MAIN,SHRVDU13
VDU13VDU4 LDA #$BF
JSR CLRSTATUS ; Turn copy cursor off JSR CLRSTATUS ; Turn copy cursor off
LDA TXTWINLFT LDA TXTWINLFT
STA VDUTEXTX ; COL STA VDUTEXTX ; COL
LDA VDUSTATUS
AND #$20 ; Bit 5 -> VDU5 mode
BEQ VDU13DONE
BIT VDUSCREEN
BVC VDU13DONE ; Not SHR, skip
>>> XF2MAIN,SHRVDU13
VDU13RET >>> ENTAUX
VDU13DONE RTS VDU13DONE RTS
VDU13RET >>> ENTAUX ; SHRVDU13 returns here
RTS
* Move to (0,0) * Move to (0,0)
VDU30 LDA TXTWINTOP VDU30 LDA TXTWINTOP