From fe861c51790665e2b5fcd6e554c012f23ace9856 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 15 Nov 2019 17:15:43 +0100 Subject: [PATCH] Kernel 0.93+ --- BIN/EDIT.S.BUF.txt | 185 +++++++++++++++++++++++++++++--------------- BIN/EDIT.S.FILE.txt | 6 +- BIN/EDIT.S.txt | 2 + 3 files changed, 128 insertions(+), 65 deletions(-) diff --git a/BIN/EDIT.S.BUF.txt b/BIN/EDIT.S.BUF.txt index f7104675..5d647c88 100644 --- a/BIN/EDIT.S.BUF.txt +++ b/BIN/EDIT.S.BUF.txt @@ -2,6 +2,63 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- +BUF.InsertA sta TmpByte + jsr BUF.ComputeCOffset + cpy #255 + beq .8 + + lda BUF.COffset + clc + >ADC.G BufBase + tax + + lda BUF.COffset+1 + >ADC.G BufBase+1 + sta BufPtr+1 + + inx + bne .1 + inc +.1 stx BufPtrDst + sta BufPtrDst+1 + + jsr BUF.MoveForwardTail + +.2 lda TmpByte + sta (BufPtr) + + inc FileLen + bne .8 + inc FileLen+1 + +.8 clc +.9 rts +*-------------------------------------- +BUF.DelCharAtCursor + lda (BufPtr) + pha Save deleted char for later + + >LDYA BufPtr + >STYA BufPtrDst + iny + bne .1 + inc + +.1 >STYA BufPtr + + jsr BUF.MoveBackTail + + lda FileLen + bne .5 + dec FileLen+1 +.5 dec FileLen + + jsr BUF.ResetSel + pla Get back deleted char + + clc +.9 rts +*-------------------------------------- BUF.InsertClipboard >LDA.G hClipBoard beq .8 @@ -82,37 +139,6 @@ BUF.InsertTAB jsr BUF.ComputeCOffset .8 clc .9 rts *-------------------------------------- -BUF.InsertA sta TmpByte - jsr BUF.ComputeCOffset - cpy #255 - beq .8 - - lda FileLen - clc - adc #2 - tay - lda FileLen+1 - adc #0 - - cpy BufLen - sbc BufLen+1 - bcs * - -.2 lda TmpByte - sta (BufPtr) - inc BufPtr - bne .3 - inc BufPtr+1 - -.3 jsr BUF.CopyTail - -.4 inc FileLen - bne .8 - inc FileLen+1 - -.8 clc -.9 rts -*-------------------------------------- BUF.DelSel jsr BUF.GetSelLen bcs .8 @@ -152,36 +178,6 @@ BUF.DelSel jsr BUF.GetSelLen .8 clc .9 rts *-------------------------------------- -* Erase char at CurXY -*-------------------------------------- -BUF.DelCharAtCursor - >LDYA FileLen - jsr BUF.GetNewYA BufferLen-1 - bcs .9 - - >LDYA BUF.COffset - jsr BUF.Start2YA - -.3 lda (BufPtrBackup) - pha Save deleted char for later - - inc BufPtrBackup - bne .4 - inc BufPtrBackup+1 - -.4 jsr BUF.CopyTail - - lda FileLen - bne .5 - dec FileLen+1 -.5 dec FileLen - - jsr BUF.ResetSel - pla Get back deleted char - - clc -.9 rts -*-------------------------------------- BUF.SelToClipboard jsr BUF.GetSelLen bcs .8 @@ -339,6 +335,71 @@ BUF.CopyTail ldy #0 inc BufPtr+1 bra .1 +.8 rts +*-------------------------------------- +BUF.MoveBackTail + ldy #0 + + lda BufPtr+1 + pha + +.1 lda (BufPtr),y + sta (BufPtrDst),y + beq .8 + + iny + bne .1 + + inc BufPtr+1 + inc BufPtrDst+1 + bra .1 + +.8 pla + sta BufPtr+1 + + rts +*-------------------------------------- +BUF.MoveForwardTail + ldy #0 + + ldx #$ff + phx + +.1 lda (BufPtr),y + beq .4 + dex + bne .2 + + pla + dec + pha + +.2 iny + bne .1 + inc BufPtr+1 + inc BufPtrDst+1 + bra .1 + +.4 lda (BufPtr),y + sta (BufPtrDst),y + + tya + bne .5 + + dec BufPtr+1 + dec BufPtrDst+1 + +.5 dey + + inx + bne .4 + + pla + inc + beq .8 + pha + bra .4 + .8 rts *-------------------------------------- * Out : Y = Line Length @@ -466,7 +527,7 @@ BUF.GetNewYA tax In 256 bytes page to avoid fragmentation >SYSCALL GetMem bcs .9 - >STYA BufPtr + >STYA.G BufBase txa >STA.G hBuffer diff --git a/BIN/EDIT.S.FILE.txt b/BIN/EDIT.S.FILE.txt index 64534909..6753c327 100644 --- a/BIN/EDIT.S.FILE.txt +++ b/BIN/EDIT.S.FILE.txt @@ -7,7 +7,7 @@ FILE.New >LDYAI 4096 >SYSCALL GetMem bcs .9 - >STYA BufPtr + >STYA.G BufBase txa >STA.G hBuffer FileLen already set to 0 @@ -182,8 +182,8 @@ FILE.GetBuffer >LDA.G STATBUF+S.STAT.SIZE+3 >STYA BufLen >SYSCALL GetMem bcs .99 - >STYA BufPtr - + + >STYA.G BufBase txa >STA.G hBuffer diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 29343a05..8b3ac2c4 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -14,6 +14,7 @@ NEW .OR ZPBIN ZS.START BufPtr .BS 2 +BufPtrDst .EQ * BufPtrBackup .BS 2 ClipboardPtr .BS 2 LineBufPtr .BS 2 @@ -420,6 +421,7 @@ hFileName .BS 1 hFind .BS 1 hReplace .BS 1 hLineBuffer .BS 1 +BufBase .BS 2 hBuffer .BS 1 hBufferBackup .BS 1 hClipBoard .BS 1