From 6645149c3f922d73f55fb0f435607bc537111d90 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Tue, 10 Jan 2023 11:08:54 -0500 Subject: [PATCH] Made the cursor code more robust --- applecorn.po | Bin 819200 -> 819200 bytes auxmem.chario.s | 16 +++++++++------- auxmem.shr.s | 42 ++++++++++++++++++++++-------------------- auxmem.vdu.s | 19 ++++++++++++++++--- 4 files changed, 47 insertions(+), 30 deletions(-) diff --git a/applecorn.po b/applecorn.po index b700207cff19a9f702f48eac0c74572754e0b3d8..223e066a821213b411a78cb3c39543c7555fdbb0 100644 GIT binary patch delta 13051 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 d7SziS7z2lDT8I^?J#n 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 diff --git a/auxmem.chario.s b/auxmem.chario.s index 64ef6af..3a5d2eb 100644 --- a/auxmem.chario.s +++ b/auxmem.chario.s @@ -157,7 +157,7 @@ INKEYGO CLI ; Enable IRQs JSR GETCHRC ; Get character under cursor STA COPYCHAR ; Save char under edit cursor LDA CURSORED - JSR PUTCURSOR ; Display edit cursor + JSR SHOWCURSOR ; Display edit cursor [ON] JSR COPYSWAP1 ; Swap to copy cursor INKEYGO2 JSR GETCHRC ; Get character under cursor STA OLDCHAR @@ -174,12 +174,14 @@ INKEY0 ADC FLASHER BNE INKEY3 ; Not time to toggle yet LDA OLDCHAR ; Prepare to remove cursor BIT FLASHER - BMI INKEY2 ; Remove cursor + BPL INKEY1 ; Do not remove cursor + JSR REMCURSOR ; Cursor off [OFF] + BRA INKEY3 INKEY1 LDA CURSOR ; Add cursor BIT VDUSTATUS BVC INKEY2 LDA CURSORCP -INKEY2 JSR PUTCURSOR ; Toggle cursor +INKEY2 JSR SHOWCURSOR ; Cursor on [ON] INKEY3 LDA #$27 ; Prepare to return CHR$27 if Escape state CLC BIT ESCFLAG ; Check Escape state @@ -213,10 +215,10 @@ INKEYOK PHA ; Save key or timeout LDA OLDCHAR ; Prepare for main cursor BIT VDUSTATUS BVC INKEYOFF2 ; No editing cursor - JSR PUTCURSOR ; Remove cursor + JSR REMCURSOR ; Remove cursor [OFF] JSR COPYSWAP1 ; Swap cursor back LDA COPYCHAR ; Remove main cursor -INKEYOFF2 JSR PUTCURSOR ; Remove cursor +INKEYOFF2 JSR REMCURSOR ; Remove cursor [OFF] PLP BCS INKEYOK3 ; Timeout LDA ESCFLAG ; Keypress, test for Escape @@ -540,7 +542,7 @@ KEYCURSOR CMP #$C9 BEQ KEYCOPY PHA LDA OLDCHAR - JSR PUTCURSOR ; Remove cursor + JSR REMCURSOR ; Remove cursor [OFF] PLA JSR COPYMOVE ; Move copy cursor JSR GETCHRC ; Save char under cursor @@ -553,7 +555,7 @@ KEYCOPYTAB LDA FXTABCHAR ; Prepare TAB if no copy cursor BVC KEYREADOK1 ; No copy cursor, return TAB LDA OLDCHAR ; Get the char under cursor PHA - JSR PUTCOPYCURS ; Output it to restore and move cursor + JSR PUTCOPYCURS ; Output it to restore and move cursor [OFF] JSR GETCHRC ; Save char under cursor STA OLDCHAR PLA diff --git a/auxmem.shr.s b/auxmem.shr.s index 2758088..bb7ac6c 100644 --- a/auxmem.shr.s +++ b/auxmem.shr.s @@ -147,10 +147,7 @@ SHRBGMASKA DW $0000 ; Keep a copy in aux mem too * Write character to SHR screen * On entry: A - character to write -SHRPRCHAR CMP CURSORED ; Edit cursor? - BNE :NOTEDIT - LDA #127 ; If so, use block char -:NOTEDIT LDX VDUPIXELS ; Pixels per byte +SHRPRCHAR LDX VDUPIXELS ; Pixels per byte CPX #$02 ; 2 is 320-mode (MODE 1) BNE :S1 JMP SHRPRCH320 @@ -158,17 +155,19 @@ SHRPRCHAR CMP CURSORED ; Edit cursor? * Plot or unplot a cursor on SHR screen -SHRCURSOR PHA ; Preserve character +* On entry: A - character to plot, CS show cursor/CC remove cursor +SHRCURSOR PHP ; Preserve flags + PHA ; Preserve character LDA VDUPIXELS ; Pixels per byte CMP #$02 ; 2 is 320-mode (MODE 1) BNE :MODE0 LDA #$04 ; 4 bytes in 320 mode - LDX #$77 ; Two white pixels + LDX #$71 ; White/red BRA :S1 :MODE0 LDA #$02 ; 2 bytes in 640 mode - LDX #$FF ; Two white pixels + LDX #%11011101 ; White/red/white/red :S1 STA :BYTES ; Bytes per char - STX :WHITE + STX :CURSBYTE LDA VDUSTATUS ; If VDU5 mode, bail AND #$20 BNE :BAIL @@ -184,23 +183,25 @@ SHRCURSOR PHA ; Preserve character STA VDUADDR+1 LDY #$00 PLA ; Recover character - CMP CURSOR - BEQ :CURSORON - CMP CURSORED - BEQ :CURSORON - CMP CURSORCP - BEQ :CURSORON - BRA :CURSOROFF + PLP ; Recover flags + BCC :CURSOROFF :CURSORON -:L1 LDA :WHITE - STAL [VDUADDR],Y + LDA [VDUADDR],Y ; See if cursor shown + CMP :CURSBYTE + BEQ :DONE + STA :SAVEBYTE ; Preserve byte under cursor + LDA :CURSBYTE +:L1 STAL [VDUADDR],Y INY CPY :BYTES BNE :L1 RTS :CURSOROFF -:L2 LDA SHRBGMASKA - STAL [VDUADDR],Y + LDA [VDUADDR],Y ; See if cursor shown + CMP :CURSBYTE + BNE :DONE + LDA :SAVEBYTE ; Restore byte under cursor +:L2 STAL [VDUADDR],Y INY CPY :BYTES BNE :L2 @@ -208,7 +209,8 @@ SHRCURSOR PHA ; Preserve character :BAIL PLA RTS :BYTES DB $00 ; 2 for 640-mode, 4 for 320-mode -:WHITE DB $00 ; White pixels for mode +:CURSBYTE DB $00 ; Cursor byte for mode +:SAVEBYTE DB $00 ; Byte under cursor * Write character to SHR screen in 320 pixel mode diff --git a/auxmem.vdu.s b/auxmem.vdu.s index c0ba0d4..3829e79 100644 --- a/auxmem.vdu.s +++ b/auxmem.vdu.s @@ -280,7 +280,7 @@ COPYMOVE PHA JSR GETCHRC STA COPYCHAR LDA CURSORED - JSR PUTCURSOR ; Edit cursor + JSR SHOWCURSOR ; Edit cursor [ON] SEC JSR COPYSWAP2 ; Initialise copy cursor ROR FLASHER @@ -390,13 +390,25 @@ PRCHR7 PLA :NOTSHR RTS -* Wrapper around PUTCHRC used when drawing cursor -PUTCURSOR TAX ; Preserve character +* Wrapper around PUTCHRC used when showing cursor +SHOWCURSOR TAX ; Preserve character BIT VDUSCREEN BVS :SHR TXA JMP PUTCHRC :SHR TXA ; Recover character + SEC ; Show cursor + JMP SHRCURSOR + + +* Wrapper around PUTCHRC used when removing cursor +REMCURSOR TAX ; Preserve character + BIT VDUSCREEN + BVS :SHR + TXA + JMP PUTCHRC +:SHR TXA ; Recover character + CLC ; Remove cursor JMP SHRCURSOR @@ -407,6 +419,7 @@ PUTCOPYCURS TAX ; Preserve character TXA JMP OUTCHARCP :SHR TXA ; Recover character + CLC ; Remove cursor JSR SHRCURSOR JMP OUTCHARCP2