SHR: Optimized font drawing a bit

This commit is contained in:
Bobbi Webber-Manners 2023-01-08 03:17:29 -05:00
parent ca798e763a
commit 6440df6c03
2 changed files with 37 additions and 42 deletions

Binary file not shown.

View File

@ -160,39 +160,36 @@ SHRPRCHAR CMP CURSORED ; Edit cursor?
* Write character to SHR screen in 320 pixel mode * Write character to SHR screen in 320 pixel mode
SHRPRCH320 SEC SHRPRCH320 SEC
SBC #32 SBC #32
STA VDUADDR2+0 ; A*32 -> VDUADDR2
STZ VDUADDR2+1 PHP ; Disable interrupts
ASL VDUADDR2+0 SEI
ROL VDUADDR2+1 CLC ; 65816 native mode
ASL VDUADDR2+0 XCE
ROL VDUADDR2+1 REP #$30 ; 16 bit M & X
ASL VDUADDR2+0 MX %00 ; Tell Merlin
ROL VDUADDR2+1 AND #$00FF
ASL VDUADDR2+0 STA VDUADDR2 ; A*32 -> VDUADDR2
ROL VDUADDR2+1 ASL VDUADDR2
ASL VDUADDR2+0 ASL VDUADDR2
ROL VDUADDR2+1 ASL VDUADDR2
ASL VDUADDR2
ASL VDUADDR2
CLC ; SHRFONTXPLD+A*32 -> VDUADDR2 CLC ; SHRFONTXPLD+A*32 -> VDUADDR2
LDA VDUADDR2+0 LDA VDUADDR2
ADC #<SHRFONTXPLD ADC #SHRFONTXPLD
STA VDUADDR2+0 STA VDUADDR2
LDA VDUADDR2+1 SEP #$30 ; 8 bit M & X
ADC #>SHRFONTXPLD MX %11 ; Tell Merlin
STA VDUADDR2+1
LDA #$E1 LDA #$E1
STA VDUBANK2 STA VDUBANK2
JSR SHRCHARADDR ; Screen addr in VDUADDR JSR SHRCHARADDR ; Screen addr in VDUADDR
* 65816 code contributed by John Brooks follows ... * 65816 code contributed by John Brooks follows ...
PHP ; Disable interrupts
SEI
PHB ; Save data bank PHB ; Save data bank
LDA VDUBANK2 ; Push font Bank onto stack LDA VDUBANK2 ; Push font Bank onto stack
PHA PHA
PLB ; Set data bank to font bank PLB ; Set data bank to font bank
CLC ; 65816 native mode
XCE
REP #$30 ; 16 bit M & X REP #$30 ; 16 bit M & X
MX %00 ; Tell Merlin MX %00 ; Tell Merlin
LDY VDUADDR2 ; Font src ptr LDY VDUADDR2 ; Font src ptr
@ -256,37 +253,35 @@ SHRPRCH320 SEC
* Write character to SHR screen in 640 pixel mode * Write character to SHR screen in 640 pixel mode
SHRPRCH640 SEC SHRPRCH640 SEC
SBC #32 SBC #32
STA VDUADDR2+0 ; A*16 -> VDUADDR2
STZ VDUADDR2+1 PHP ; Disable interrupts
ASL VDUADDR2+0 SEI
ROL VDUADDR2+1 CLC ; 65816 native mode
ASL VDUADDR2+0 XCE
ROL VDUADDR2+1 REP #$30 ; 16 bit M & X
ASL VDUADDR2+0 MX %00 ; Tell Merlin
ROL VDUADDR2+1 AND #$00FF
ASL VDUADDR2+0 STA VDUADDR2 ; A*16 -> VDUADDR2
ROL VDUADDR2+1 ASL VDUADDR2
ASL VDUADDR2
ASL VDUADDR2
ASL VDUADDR2
CLC ; SHRFONTXPLD+A*16 -> VDUADDR2 CLC ; SHRFONTXPLD+A*16 -> VDUADDR2
LDA VDUADDR2+0 LDA VDUADDR2
ADC #<SHRFONTXPLD ADC #SHRFONTXPLD
STA VDUADDR2+0 STA VDUADDR2
LDA VDUADDR2+1 SEP #$30 ; 8 bit M & X
ADC #>SHRFONTXPLD MX %11 ; Tell Merlin
STA VDUADDR2+1
LDA #$E1 LDA #$E1
STA VDUBANK2 STA VDUBANK2
JSR SHRCHARADDR ; Screen addr in VDUADDR JSR SHRCHARADDR ; Screen addr in VDUADDR
* 65816 code contributed by John Brooks follows ... * 65816 code contributed by John Brooks follows ...
PHP ; Disable interrupts
SEI
PHB ; Save data bank PHB ; Save data bank
LDA VDUBANK2 ; Push font Bank onto stack LDA VDUBANK2 ; Push font Bank onto stack
PHA PHA
PLB ; Set data bank to font bank PLB ; Set data bank to font bank
CLC ; 65816 native mode
XCE
REP #$30 ; 16 bit M & X REP #$30 ; 16 bit M & X
MX %00 ; Tell Merlin MX %00 ; Tell Merlin
LDY VDUADDR2 ; Font src ptr LDY VDUADDR2 ; Font src ptr