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