From 24669a7ce0be043d4aaf51f8e5d63ee94af1166a Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Mon, 16 Jan 2023 22:47:04 -0500 Subject: [PATCH] Moved SHR cursor code to mainmem --- applecorn.po | Bin 819200 -> 819200 bytes auxmem.shr.s | 74 ++++++++++---------------------------------------- mainmem.shr.s | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 59 deletions(-) diff --git a/applecorn.po b/applecorn.po index 569ba5921b4e8ed4ca1667ced6ef6ecbaa2071e0..51f2efb4da9afdb4941f2502bfc252e9ac846d31 100644 GIT binary patch delta 14396 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 delta 14322 zcma)j3qVvw_xRm=7g#PLYd%`Z$M`BxOVU!l(i9O}YV!pdqS+O-mdXUZ$x7PZ%I)(b zFRf->G_Y+GJ}!A_sb4A8=0;{Lf-c|_HSvwfsTwnKS2{ znK?6a=E8B~Ic~h|HKm$-m56w3OkaXKPaq6@kf!`+no+c)bp!ZaTw3C;#Mo6L0`v- ztM6h&4@T(RN)HLW$hS~pJb#Uf&E;Duv4WRzwwXe22opc0A0I^ASrpQV$eYMtDF2Ke_}IBSWBs|5K4t3b#I0E?k#5Obuf4tG zwdI6Hg*-)b>O{hHN90VMmOzv(^cCn44|)pJ{)plVWWT)DGIfK#rU0E2UJ&ST;XQ%= zNaNiFRczJgRTZ~$4xc?d{>ZCGHXq$}jW+q&=U^DIjgiteku>Q6qzP9L{xxBUxjx4im<1qlZO(Rz1=kF&(|s zVVe^1w6m{k5`YooZMU3#T-UkL65&vfisg`B2T%=!Vhyi$U}Q%u=j$1It0Y7V7)xRxmxyPr%^X6Rn3&WPNjn^4;`KX&Vldoh~(C^Yv{lvieG_Mi#1 zx*i6tdvRqx%W&?ex$- z%MUXiodBw+>4pS+R|j0~Y0M|NcC_YL zSE1`@4;G^g*7cZ0|Dkv5C~+O#!$-Q?dCFkT^Ry$Beoprp_Eir~2SpOyBhzq$war7T z6!)SX!UNg#B*kCCbJ_H$=N4A-F47)X$sZ!^ODp+GQf0_iI{3zr)*tiIe(t6H=Q({S*vEBgq-#zPI#4ABpT6C&@xO#p*CUN7xeHkFI>nk{-9DdI_!1b z^3#%obgJb?q`f3v05F{ol$s2K_1~Edl=V%)`2{^{N$m+>93B!}djbkidAcaG$=3T&*N-gOOPCbey{P4S?P0< zhe0{=aD;-f`k}=qtqS}gJkr^JCUcsS>S|T4>v$mHv3gdd2MV_>^az#dBPXRMUnL29ALydz`JX>Qn@p{V?%!CHjnd`-Y|3K?J0dOwWZCA57> z4^=b?4_fKDiY-F2l@1$X@){_&iZ4#et>%C9*hz1&W?~LYJRF`(U|=%R`I_RJCs*W? zFxPLLOeRd#j7RvwEHd-wq{8iFroGF?b=_43`YSppJSe>xRL+CBd%8o{(El*J$wd+RygG(T$C=v z1ItcAe%?7v4skMoTmGlh49Pctdg}o(zegCmlOCwxaWjL}dy=H#XL$du(ugyBz*cFb zVBbj(QoQzm6}oX@=;(W@o#9nmVSMwwwtAZINEd$7nI%7Huzu%Jh%#7DcmR)09!S8{ z!_UAN{wc=URF|_zxZj~mPF;(SOCo4_W76N8;*c@dY{Fw*t zuBynbl}GKa%E_yha%+XEy3+EUwXP<{Q{d`l&-39%xLO t80HMP5M#9zQ+AH;b2f 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 bKI;WJx)-T%?|yuM{~-ksN96VHwd#KX;2t#! diff --git a/auxmem.shr.s b/auxmem.shr.s index 6d38171..198232d 100644 --- a/auxmem.shr.s +++ b/auxmem.shr.s @@ -119,70 +119,25 @@ SHRPRCHAR LDX VDUPIXELS ; Pixels per byte * VS read cursor / VC write cursor * The read and write cursors have separate save-unders in :SAVEBYTES SHRCURSOR PHP ; Preserve flags - PHA ; Preserve character + PHA ; Preserve A LDA VDUSTATUS ; If VDU5 mode, bail AND #$20 - BNE :BAIL - LDA VDUPIXELS ; Pixels per byte - CMP #$02 ; 2 is 320-mode (MODE 1) - BNE :MODE0 - LDA #$04 ; 4 bytes in 320 mode - LDX #$71 ; White/red - BRA :S1 -:MODE0 LDA #$02 ; 2 bytes in 640 mode - LDX #%11011101 ; White/red/white/red -:S1 STA :BYTES ; Bytes per char - STX :CURSBYTE - LDA #$E1 - STA VDUBANK2 + BNE SHRCURSBAIL JSR SHRCHARADDR ; Screen addr in VDUADDR - LDA VDUADDR+0 ; LSB - CLC - ADC #<$460 ; $460 is seven rows - STA VDUADDR+0 - LDA VDUADDR+1 ; MSB - ADC #>$460 ; $460 is seven rows - STA VDUADDR+1 - LDY #$00 - LDX #$00 - PLA ; Recover character - PLP ; Recover flags - BVC :S2 ; VC: Write cursor - INX ; Advance to 2nd half of :SAVEBYTES - INX - INX - INX -:S2 BCC :CURSOROFF ; CC: Remove cursor -:CURSORON - LDA [VDUADDR],Y ; See if cursor shown - CMP :CURSBYTE - BEQ :DONE ; Cursor shown already, skip -:L1 LDAL [VDUADDR],Y - STA :SAVEBYTES,X ; Preserve bytes under cursor - LDA :CURSBYTE ; Byte of cursor data - STAL [VDUADDR],Y - INX - INY - CPY :BYTES - BNE :L1 + >>> WRTMAIN + LDA VDUADDR+0 ; Copy addr to SHRVDUQ + STA SHRVDUQ+0 + LDA VDUADDR+1 + STA SHRVDUQ+1 + >>> WRTAUX + PLA ; Recover A + PLY ; Flags -> Y + >>> XF2MAIN,SHRCURSM +SHRCURSRET >>> ENTAUX RTS -:CURSOROFF - LDA [VDUADDR],Y ; See if cursor shown - CMP :CURSBYTE - BNE :DONE ; Cursor not shown, skip -:L2 LDA :SAVEBYTES,X ; Restore bytes under cursor - STAL [VDUADDR],Y - INX - INY - CPY :BYTES - BNE :L2 -:DONE RTS -:BAIL PLA ; Fix stack - PLA +SHRCURSBAIL PLA + PLP RTS -:BYTES DB $00 ; 2 for 640-mode, 4 for 320-mode -:CURSBYTE DB $00 ; Cursor byte for mode -:SAVEBYTES DS 8 ; Bytes under cursors * Write character to SHR screen in 320 pixel mode @@ -689,6 +644,7 @@ SHRSETGCOL PHA >>> WRTAUX RTS + * Wrapper to call SHRDEFPALM (which sets up default palette) SHRDEFPAL >>> XF2MAIN,SHRDEFPALM SHRDEFPALRET >>> ENTAUX diff --git a/mainmem.shr.s b/mainmem.shr.s index 7ee1ad8..a7fdcea 100644 --- a/mainmem.shr.s +++ b/mainmem.shr.s @@ -275,6 +275,74 @@ SHRCHAR640 PHY ; Preserve Y RTS +* Handle plotting & unplotting cursors +* On entry: character in A, flags in Y +* pointer to screen address in SHRVDUQ+0..1 +SHRCURSM >>> ENTMAIN + PHY ; Preserve flags + PHA ; Preserve character + LDA SHRVDUQ+0 ; Copy pointer to A3L/H + STA A3L + LDA SHRVDUQ+1 + STA A3H + LDA #$E1 ; Bank $E1 + STA A4L + LDA SHRPIXELS ; Pixels per byte + CMP #$02 ; 2 is 320-mode (MODE 1) + BNE :MODE0 + LDA #$04 ; 4 bytes in 320 mode + LDX #$71 ; White/red + BRA :S1 +:MODE0 LDA #$02 ; 2 bytes in 640 mode + LDX #%11011101 ; White/red/white/red +:S1 STA :BYTES ; Bytes per char + STX :CURSBYTE + LDA A3L ; LSB + CLC + ADC #<$460 ; $460 is seven rows + STA A3L + LDA A3H ; MSB + ADC #>$460 ; $460 is seven rows + STA A3H + LDY #$00 + LDX #$00 + PLA ; Recover character + PLP ; Recover flags + BVC :S2 ; VC: Write cursor + INX ; Advance to 2nd half of :SAVEBYTES + INX + INX + INX +:S2 BCC :CURSOROFF ; CC: Remove cursor +:CURSORON + LDAL [A3L],Y ; See if cursor shown + CMP :CURSBYTE + BEQ :DONE ; Cursor shown already, skip +:L1 LDAL [A3L],Y + STA :SAVEBYTES,X ; Preserve bytes under cursor + LDA :CURSBYTE ; Byte of cursor data + STAL [A3L],Y + INX + INY + CPY :BYTES + BNE :L1 + >>> XF2AUX,SHRCURSRET +:CURSOROFF + LDAL [A3L],Y ; See if cursor shown + CMP :CURSBYTE + BNE :DONE ; Cursor not shown, skip +:L2 LDA :SAVEBYTES,X ; Restore bytes under cursor + STAL [A3L],Y + INX + INY + CPY :BYTES + BNE :L2 +:DONE >>> XF2AUX,SHRCURSRET +:BYTES DB $00 ; 2 for 640-mode, 4 for 320-mode +:CURSBYTE DB $00 ; Cursor byte for mode +:SAVEBYTES DS 8 ; Bytes under cursors + + * VDU5 plot char at graphics cursor position SHRVDU5CH >>> ENTMAIN CLC ; 65816 native mode