From 5de1f7a839fa537856a2e055525a9c7aae13cd8e Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Mon, 16 Jan 2023 17:10:17 -0500 Subject: [PATCH] SHR: Implement erasure for BS in VDU5 mode. Fix #250. --- applecorn.po | Bin 819200 -> 819200 bytes mainmem.shr.s | 38 ++++++++++++++++++++++++++++---------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/applecorn.po b/applecorn.po index 8430ef7c2f0f0dd920febee89ccadd24454955b7..58711b31c8325522b2c4fa1931d0553a9dbfbeeb 100644 GIT binary patch delta 5356 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 N02r(`qlrs({|g&T_4fb( diff --git a/mainmem.shr.s b/mainmem.shr.s index 72289d2..63df0e2 100644 --- a/mainmem.shr.s +++ b/mainmem.shr.s @@ -588,7 +588,7 @@ SHRVDU127 >>> ENTMAIN MX %00 ; Tell Merlin LDA SHRXPIXEL ; Screen col (X-coord) LSR A ; Divide by 2 - BRA :S1 + BRA :MODE1 :MODE0 CLC ; 65816 native mode XCE REP #$30 ; 16 bit M & X @@ -596,11 +596,26 @@ SHRVDU127 >>> ENTMAIN LDA SHRXPIXEL ; Screen col (X-coord) LSR A ; Divide by 2 LSR A ; Divide by 4 -:S1 TAY + TAY LDX #$00 SEP #$30 ; 8 bit M & X MX %11 ; Tell Merlin :L1 LDA SHRGFXBGMASK + STAL [A3L],Y + INY + STAL [A3L],Y + DEY + JSR NEXTROW ; Advance A3L/H to next pixel row + INX + CPX #$08 ; Erased all 8 rows? + BNE :L1 + BRA :DONE +:MODE1 MX %00 ; Tell Merlin it's 16 bit M&X + TAY + LDX #$00 + SEP #$30 ; 8 bit M & X + MX %11 ; Tell Merlin +:L2 LDA SHRGFXBGMASK STAL [A3L],Y INY STAL [A3L],Y @@ -611,20 +626,23 @@ SHRVDU127 >>> ENTMAIN DEY DEY DEY - LDA A3L ; Advance A3L/H to next row + JSR NEXTROW ; Advance A3L/H to next pixel row + INX + CPX #$08 ; Erased all 8 rows? + BNE :L2 +:DONE SEC ; 65816 emulation mode + XCE + >>> XF2AUX,VDUXXRET + +* Advance A3L/H to next pixel row on screen +NEXTROW LDA A3L ; Advance A3L/H to next row CLC ADC #160 STA A3L LDA A3H ADC #$00 STA A3H - INX - CPX #$08 ; Erased all 8 rows? - BNE :L1 - SEC ; 65816 emulation mode - XCE - >>> XF2AUX,VDUXXRET - + RTS * Plot actions: PLOT k,x,y * k is in SHRVDUQ+4