mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-23 04:29:01 +00:00
Added Copy/paste functions
This commit is contained in:
parent
006d3904b7
commit
c182de64c0
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user