diff --git a/BIN/EDIT.S.BUF.txt b/BIN/EDIT.S.BUF.txt index df8eaf98..07f898fc 100644 --- a/BIN/EDIT.S.BUF.txt +++ b/BIN/EDIT.S.BUF.txt @@ -5,28 +5,16 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -BUF.CheckSelected - sec - lda BUF.COffset - ldy #SelStart - sbc (pData),y - lda BUF.COffset+1 - iny - sbc (pData),y - bcc .9 - - lda BUF.COffset - ldy #SelEnd - sbc (pData),y - lda BUF.COffset+1 - iny - sbc (pData),y - rts CC if in selection - -.9 sec - rts -*-------------------------------------- BUF.InsertClipboard + ldy #hClipBoard + lda (pData),y + beq .8 + + >SYSCALL SYS.GetMemPtrA + >STYA ClipboardPtr + + jsr BUF.ComputeCOffset + ldy #FileLen lda (pData),y sec @@ -41,40 +29,36 @@ BUF.InsertClipboard jsr BUF.GetNewYA bcs .9 - jsr BUF.ComputeCOffset >LDYA BUF.COffset >STYA TmpCount - ldy #0 - jsr BUF.CopyCount - phy - - - clc - lda BufPtr ldy #ClipboardLen - adc (pData),y - sta BufPtr + lda (pData),y + sta TmpCount iny - lda BufPtr+1 - adc (pData),y - sta BufPtr+1 + lda (pData),y + sta TmpCount+1 + + jsr BUF.CopyClipboard - ply jsr BUF.CopyTail -.4 ldy #FileLen +.4 ldy #ClipboardLen+1 lda (pData),y - inc - sta (pData),y - bne .8 + tax + dey + lda (pData),y + clc + ldy #FileLen + adc (pData),y + sta (pData),y iny - lda (pData),y - inc + txa + adc (pData),y sta (pData),y - + .8 clc .9 rts *-------------------------------------- @@ -100,12 +84,10 @@ BUF.InsertA sta TmpByte >LDYA BUF.COffset >STYA TmpCount - ldy #0 - .1 jsr BUF.CopyCount .2 lda TmpByte - sta (BufPtr),y + sta (BufPtr) inc BufPtr bne .3 inc BufPtr+1 @@ -125,6 +107,82 @@ BUF.InsertA sta TmpByte .8 clc .9 rts *-------------------------------------- +BUF.DelSel jsr BUF.GetSelLen + bcs .8 + >STYA SelLen + +.10 jsr BUF.ComputeCOffset + + ldy #SelStart + lda (pData),y + sta TmpCount + sec + sbc BUF.COffset + iny + lda (pData),y + sta TmpCount+1 + sbc BUF.COffset+1 + bcs .11 + + ldy #FileY + lda (pData),y + sec + sbc #1 + sta (pData),y + iny + lda (pData),y + sbc #0 + sta (pData),y + + ldy #FileX + lda #0 + sta (pData),y + + bra .10 + +.11 ldy #FileLen + lda (pData),y + sec + sbc SelLen + pha + iny + lda (pData),y + sbc SelLen+1 + ply + iny + bne .1 + inc +.1 jsr BUF.GetNewYA + bcs .9 + + jsr BUF.CopyCount + + lda BufPtrBackup + clc + adc SelLen + sta BufPtrBackup + + lda BufPtrBackup+1 + adc SelLen+1 + sta BufPtrBackup+1 + + jsr BUF.CopyTail + + ldy #FileLen + lda (pData),y + sec + sbc SelLen + sta (pData),y + ldy #FileLen+1 + lda (pData),y + sbc SelLen+1 + sta (pData),y + + jsr BUF.ResetSel + +.8 clc +.9 rts +*-------------------------------------- BUF.Del ldy #FileLen lda (pData),y iny @@ -158,11 +216,9 @@ BUF.Del ldy #FileLen >LDYA BUF.COffset >STYA TmpCount - ldy #0 - jsr BUF.CopyCount - lda (BufPtrBackup),y + lda (BufPtrBackup) tax Save deleted char for later inc BufPtrBackup @@ -180,28 +236,17 @@ BUF.Del ldy #FileLen lda (pData),y sbc #0 sta (pData),y + + jsr BUF.ResetSel txa Get back deleted char + clc .9 rts *-------------------------------------- BUF.SelToClipboard - ldy #SelEnd+1 - lda (pData),y - tax - dey - lda (pData),y - - sec - ldy #SelStart - sbc (pData),y - sta TmpCount - iny - txa - sbc (pData),y - bcc .8 - sta TmpCount+1 - ora TmpCount - beq .8 + jsr BUF.GetSelLen + bcs .8 + >STYA TmpCount ldy #hClipBoard lda (pData),y @@ -231,6 +276,19 @@ BUF.SelToClipboard >SYSCALL SYS.GetMemPtrA >STYA BufPtr + lda BufPtr + clc + ldy #SelStart + adc (pData),y + sta BufPtr + + lda BufPtr+1 + iny + adc (pData),y + sta BufPtr+1 + + ldy #0 + .2 jsr DecTmpCount beq .8 lda (BufPtr),y @@ -240,27 +298,47 @@ BUF.SelToClipboard inc BufPtr+1 inc ClipboardPtr+1 bra .2 + + jsr BUF.ResetSel .8 clc .9 rts *-------------------------------------- +BUF.CopyClipboard + jsr DecTmpCount + beq .9 + lda (ClipboardPtr) + sta (BufPtr) + inc ClipboardPtr + bne .1 + inc ClipboardPtr+1 +.1 inc BufPtr + bne BUF.CopyClipboard + inc BufPtr+1 + bra BUF.CopyClipboard +.9 rts +*-------------------------------------- BUF.CopyCount jsr DecTmpCount beq .9 - lda (BufPtrBackup),y - sta (BufPtr),y - iny - bne BUF.CopyCount + lda (BufPtrBackup) + sta (BufPtr) + inc BufPtrBackup + bne .1 inc BufPtrBackup+1 +.1 inc BufPtr + bne BUF.CopyCount inc BufPtr+1 bra BUF.CopyCount .9 rts *-------------------------------------- -BUF.CopyTail lda (BufPtrBackup),y +BUF.CopyTail lda (BufPtrBackup) beq .9 - sta (BufPtr),y - iny - bne BUF.CopyTail + sta (BufPtr) + inc BufPtrBackup + bne .1 inc BufPtrBackup+1 +.1 inc BufPtr + bne BUF.CopyTail inc BufPtr+1 bra BUF.CopyTail .9 rts @@ -387,6 +465,67 @@ BUF.GetNewYA >STYA TmpLen .9 rts *-------------------------------------- +BUF.ResetSel lda #0 + ldy #SelStart + sta (pData),y + iny + sta (pData),y + ldy #SelEnd + sta (pData),y + iny + sta (pData),y + rts +*-------------------------------------- +BUF.CheckSelected + sec + lda BUF.COffset + ldy #SelStart + sbc (pData),y + lda BUF.COffset+1 + iny + sbc (pData),y + bcc .9 + + lda BUF.COffset + ldy #SelEnd + sbc (pData),y + lda BUF.COffset+1 + iny + sbc (pData),y + rts CC if in selection + +.9 sec + rts +*-------------------------------------- +* Out : CC if ok, YA=SelLen +*-------------------------------------- +BUF.GetSelLen ldy #SelEnd + lda (pData),y + sec + ldy #SelStart + sbc (pData),y + + tax + + ldy #SelEnd+1 + lda (pData),y + sec + ldy #SelStart+1 + sbc (pData),y + bcc .9 + + phx + ply + bne .8 + tax + beq .9 + +.8 clc + rts + +.9 sec + rts +*-------------------------------------- MAN SAVE BIN/EDIT.S.BUF LOAD BIN/EDIT.S diff --git a/BIN/EDIT.S.CTRL.txt b/BIN/EDIT.S.CTRL.txt index 3e26c595..ea818a9f 100644 --- a/BIN/EDIT.S.CTRL.txt +++ b/BIN/EDIT.S.CTRL.txt @@ -26,9 +26,9 @@ AUTO 6 * ^T = Go To Top of file ***** ^U * ^V = Paste Block -* ^W = +* ^W = Erase line * ^X = Cut Block -* ^Y = +* ^Y = End Of File * ^Z = Undo *-------------------------------------- Ctrl.Invalid @@ -91,9 +91,12 @@ Ctrl.C jsr BUF.SelToClipboard rts .9 jmp Ctrl.Q *-------------------------------------- -Ctrl.D - clc - rts +Ctrl.D jsr BUF.DelSel + bcs .9 + jsr SCRN.UpdateMain + bcs .9 + jmp SCRN.UpdateStatusBar +.9 jmp Ctrl.Q *-------------------------------------- Ctrl.E jsr BUF.ComputeCOffset lda BUF.COffset @@ -328,9 +331,17 @@ Ctrl.S lda #PromptModeSave rts .9 jmp Ctrl.Q *-------------------------------------- -Ctrl.T - clc +Ctrl.T lda #0 + ldy #FileX + sta (pData),y + ldy #FileY + sta (pData),y + iny + sta (pData),y + jsr SCRN.UpdateViewPort + bcs .9 rts +.9 jmp Ctrl.Q *-------------------------------------- Ctrl.FS ldy #FileY+1 lda (pData),y @@ -395,9 +406,15 @@ Ctrl.W clc rts *-------------------------------------- -Ctrl.X - clc - rts +Ctrl.X jsr BUF.SelToClipboard + bcs .99 + jsr BUF.DelSel + bcs .9 + jsr SCRN.UpdateMain + bcs .9 + jmp SCRN.UpdateStatusBar +.9 jmp Ctrl.Q +.99 rts *-------------------------------------- Ctrl.Y clc diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index a2c6452c..6c8456d0 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -476,13 +476,13 @@ MSG.STATUSBAR.S >PSTRING "\e[%d;1H\e[7mSave:%S\e[K\e[0m" MSG.STATUSBAR.E >PSTRING "\e[%d;1H\e[7mError:%h\e[K\e[0m" MSG.NEWFILE >PSTRING "(new file)" MSG.GOTOXY >PSTRING "\e[%d;%dH" -MSG.HELP >PSTRING "All commands:" - >PSTRING "(* = Not yet implemented)" +MSG.HELP >PSTRING "All commands: (* = Not yet implemented)" + >PSTRING "------------" >PSTRING " Ctrl-A : This help screen" - >PSTRING " Ctrl-B : Mark begining of block" - >PSTRING " Ctrl-C : * Copy block to clipboard" - >PSTRING " Ctrl-D : * Delete marked block" - >PSTRING " Ctrl-E : Mark end of block" + >PSTRING " Ctrl-B : Mark beginning of selection" + >PSTRING " Ctrl-C : Copy selection to clipboard" + >PSTRING " Ctrl-D : Delete selection" + >PSTRING " Ctrl-E : Mark end of selection" >PSTRING " Ctrl-F : * Find a string..." >PSTRING " Ctrl-G : Go to start of current line" >PSTRING " Ctrl-L : Go to end of current line" @@ -492,11 +492,11 @@ MSG.HELP >PSTRING "All commands:" >PSTRING " Ctrl-Q : Quit" >PSTRING " Ctrl-R : * Replace found string with..." >PSTRING " Ctrl-S : Save file to disk..." - >PSTRING " Ctrl-T : * Go to top of file" - >PSTRING " Ctrl-V : * Past clipboard" - >PSTRING " Ctrl-W : " - >PSTRING " Ctrl-X : * Cut block to clipboard" - >PSTRING " Ctrl-Y : " + >PSTRING " Ctrl-T : Go to top of file" + >PSTRING " Ctrl-V : Past clipboard at cursor position" + >PSTRING " Ctrl-W : * Erase current line" + >PSTRING " Ctrl-X : Cut block to clipboard" + >PSTRING " Ctrl-Y : * Go to bottom of file" >PSTRING " Ctrl-Z : * Undo previous change" .HS 00 EscChars >PSTRING "DBAC" @@ -506,6 +506,7 @@ TmpByte .BS 1 TmpLen .BS 2 TmpCount .BS 2 TmpIndex .BS 2 +SelLen .BS 2 BUF.LOffset .BS 2 BUF.COffset .BS 2 BUF.TmpLine1 .BS 2