A2osX/BIN/EDIT.S.CTRL.txt

685 lines
11 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
PREFIX
AUTO 4,1
.LIST OFF
*--------------------------------------
* ^A = Help
* ^B = Begin Block
* ^C = Copy Block
* ^D = Delete Block
* ^E = End Block
* ^F = Find...
* ^G = Go To SOL
***** ^H
* ^I =
***** J,K
* ^L = Go To EOL
***** ^M
* ^N = Find Next
* ^O = Page Up
* ^P = Page Down
* ^Q = Quit
* ^R = Replace...
* ^S = Save
* ^T = Go To Top of file
***** ^U
* ^V = Paste Block
* ^W = Erase line
* ^X = Cut Block
* ^Y = End Of File
* ^Z = Undo
*--------------------------------------
Ctrl.Invalid
clc
rts
*--------------------------------------
Ctrl.A lda #PromptModeHelp
>STA.G PromptMode
>LDYA L.MSG.HELP
>STYA ZPPTR1
stz .1+1
.1 ldy #0
ldx #0
jsr GotoXY
lda (ZPPTR1)
beq .8
>PUSHW ZPPTR1
>PUSHBI 2
>LDYA L.MSG.HELPLINE
>SYSCALL printf
bcs .9
inc .1+1
lda (ZPPTR1)
sec
adc ZPPTR1
sta ZPPTR1
bcc .1
inc ZPPTR1+1
bra .1
.8 jsr SCRN.UpdateStatusBar
bcs .9
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.B jsr BUF.ComputeCOffset
lda BUF.COffset
ldy #SelStart
sta (pData),y
lda BUF.COffset+1
iny
sta (pData),y
jsr SCRN.UpdateMain
bcs .9
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.C jsr BUF.SelToClipboard
bcs .9
.8 clc
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.E jsr BUF.ComputeCOffset
lda BUF.COffset
ldy #SelEnd
sta (pData),y
lda BUF.COffset+1
iny
sta (pData),y
jsr SCRN.UpdateMain
bcs .9
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.F lda #PromptModeFind
>STA.G PromptMode
jsr SCRN.UpdateStatusBar
bcs .9
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.G ldy #FileX
lda (pData),y
beq .8
lda #0
sta (pData),y
jsr SCRN.UpdateViewPort
bcs .9
.8 clc
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.BS ldy #FileX
lda (pData),y
beq .1 already at begining of line
dec
sta (pData),y
bra .3
.1 ldy #FileY+1
lda (pData),y
tax
dey
ora (pData),y
beq .8
lda (pData),y
bne .2
dex
.2 dec
jsr BUF.GetLineAX
bcs .8
tya
ldy #FileX
sta (pData),y
sec
ldy #FileY
lda (pData),y
sbc #1
sta (pData),y
iny
lda (pData),y
sbc #0
sta (pData),y
.3 jsr SCRN.UpdateViewPort
bcs .9
.8 clc
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.TAB
clc
rts
*--------------------------------------
Ctrl.LF ldy #FileY+1
lda (pData),y
tax
dey
lda (pData),y
inc
bne .1
inx
.1 jsr BUF.GetLineAX
bcs .8
tya Y = line length
ldy #FileX
cmp (pData),y
bcs .2
sta (pData),y
.2 ldy #FileY
lda (pData),y
inc
sta (pData),y
bne .3
iny
lda (pData),y
inc
sta (pData),y
.3 jsr SCRN.UpdateViewPort
bcs .9
.8 clc
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.VT ldy #FileY+1
lda (pData),y
tax
dey
ora (pData),y
beq .8
lda (pData),y
bne .1
dex
.1 dec
jsr BUF.GetLineAX
bcs .8
tya Y = line length
ldy #FileX
cmp (pData),y
bcs .2
sta (pData),y
.2 sec
ldy #FileY
lda (pData),y
sbc #1
sta (pData),y
iny
lda (pData),y
sbc #0
sta (pData),y
jsr SCRN.UpdateViewPort
bcs .9
.8 clc
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.L jsr BUF.GetLine
bcs .8
tya Y = line length
ldy #FileX
sta (pData),y
jsr SCRN.UpdateViewPort
bcs .9
.8 clc
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.CR lda #C.CR
jsr BUF.InsertA
bcs .9
ldy #FileX
lda #0
sta (pData),y
jsr SCRN.UpdateMain
bcs .9
clc
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.N
clc
rts
*--------------------------------------
Ctrl.O ldy #FileY+1
lda (pData),y
tax
dey
lda (pData),y
ldy #ViewPortH
sec
sbc (pData),y
pha
txa
sbc #0
bcc .8
ldy #FileY+1
sta (pData),y
dey
pla
sta (pData),y
lda #0
ldy #FileX
sta (pData),y
jsr SCRN.UpdateViewPort
bcs .9
rts
.9 jmp Ctrl.Q
.8 pla
jmp Ctrl.T
*--------------------------------------
Ctrl.P ldy #FileY+1
lda (pData),y
tax
dey
lda (pData),y
ldy #ViewPortH
clc
adc (pData),y
bcc .1
inx
.1 pha
phx
jsr BUF.GetLineAX A,X = FileY+PAGE
bcs .8
tya Y = line length
ldy #FileX
sta (pData),y
ldy #FileY+1
pla
sta (pData),y
dey
pla
sta (pData),y
jsr SCRN.UpdateViewPort
bcs .9
rts
.9 jmp Ctrl.Q
.8 pla
pla
jmp Ctrl.Y
*--------------------------------------
Ctrl.Q lda #$FF
>STA.G bCANCEL
clc
rts
*--------------------------------------
Ctrl.R lda #PromptModeReplace
>STA.G PromptMode
jsr SCRN.UpdateStatusBar
bcs .9
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.S lda #PromptModeSave
>STA.G PromptMode
>LDA.G hFileName
beq .2
>SYSCALL GetMemPtr
>STYA ZPPTR1
ldy #$ff
.1 iny
lda (ZPPTR1),y
sta (pData),y
bne .1
tya
.2 >STA.G PromptBufPtr
jsr SCRN.UpdateStatusBar
bcs .9
clc
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.T >STZ.G FileX
>STZW.G FileY
jsr SCRN.UpdateViewPort
bcs .9
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.FS jsr BUF.GetLine
bcs .8
tya Y = line length
ldy #FileX
cmp (pData),y
beq .1 already at end of line
lda (pData),y
inc
sta (pData),y
bra .3
.1 ldy #FileY+1
lda (pData),y
tax
dey
lda (pData),y
inc
bne .2
inx
.2 jsr BUF.GetLineAX
bcs .8
ldy #FileY CC
lda (pData),y
adc #1
sta (pData),y
iny
lda (pData),y
adc #0
sta (pData),y
ldy #FileX
lda #0
sta (pData),y
.3 jsr SCRN.UpdateViewPort
bcs .9
.8 clc
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.V jsr BUF.InsertClipboard
bcs .9
jsr SCRN.UpdateMain
bcs .9
jsr SCRN.UpdateStatusBar
bcs .9
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.W jsr BUF.ComputeCOffset Y=line len
phy
lda BUF.LOffset
ldy #SelStart
sta (pData),y
lda BUF.LOffset+1
iny
sta (pData),y
pla
sec +1 for CR
adc BUF.LOffset
ldy #SelEnd
sta (pData),y
lda BUF.LOffset+1
adc #0
iny
sta (pData),y
bra Ctrl.D
*--------------------------------------
Ctrl.X jsr BUF.SelToClipboard
bcs Ctrl.X.RTS
Ctrl.D jsr BUF.DelSel
bcs .9
jsr SCRN.UpdateMain
bcs .9
jmp SCRN.UpdateStatusBar
.9 jmp Ctrl.Q
Ctrl.X.RTS rts
*--------------------------------------
Ctrl.Y ldy #FileY+1
lda (pData),y
tax
dey
lda (pData),y
inc
bne .1
inx
.1 jsr BUF.GetLineAX
bcs .2
ldy #FileY
lda (pData),y
inc
sta (pData),y
bne Ctrl.Y
iny
lda (pData),y
inc
sta (pData),y
bra Ctrl.Y
.2 jsr BUF.GetLine Y=linelen
tya Y = line length
>STA.G FileX
jsr SCRN.UpdateViewPort
bcs .9
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.Z clc
rts
*--------------------------------------
Ctrl.ESC clc
rts
*--------------------------------------
Prompt.Editor cmp #C.DEL
beq .4
cmp #C.SPACE
bcs .7
asl
tax
jmp (J.CTRL,x)
.4 jsr BUF.Del
bcs .9
cmp #C.CR did we DEL a CR ?
bne .5
jsr SCRN.UpdateMain
bcs .9
bra .6
.5 jsr SCRN.UpdateCurrentLine
bcs .9
.6 jsr SCRN.UpdateStatusBar
bcs .9
rts
.7 jsr BUF.InsertA
bcs .9
jsr SCRN.UpdateCurrentLine
bcs .9
jsr Ctrl.FS
bcs .9
rts
.9 jmp Ctrl.Q
*--------------------------------------
Prompt.Help >STZ.G PromptMode
jsr SCRN.UpdateMain
bcs .9
jsr SCRN.UpdateStatusBar
bcs .9
rts
.9 jmp Ctrl.Q
*--------------------------------------
Prompt.Find cmp #3
bne .1
>STZ.G PromptMode
jsr SCRN.UpdateStatusBar
bcs .9
rts
.1 cmp #13
bne .2
.2
clc
rts
.9 jmp Ctrl.Q
*--------------------------------------
Prompt.Replace cmp #3
bne .1
>STZ.G PromptMode
jsr SCRN.UpdateStatusBar
bcs .9
rts
.1 cmp #13
bne .2
.2
clc
rts
.9 jmp Ctrl.Q
*--------------------------------------
Prompt.Save cmp #3 Ctrl-C
bne .1
>STZ.G PromptMode
bra .80
.1 cmp #C.CR
bne .2
>LDA.G PromptBufPtr
beq .8
>LDYA pData
>SYSCALL RealPath
bcs .12
phx
>LDA.G hFileName
beq .11
>SYSCALL FreeMem
.11 pla
>STA.G hFileName
>STZ.G PromptMode
jsr SaveFile
bcc .81
.12 jsr SCRN.UpdateStatusBarErrA
bcs .9
rts
.2 cmp #127
bne .3
>LDA.G PromptBufPtr
beq .8
dec
sta (pData),y
tay
lda #0
sta (pData),y
bra .80
.3 cmp #C.SPACE
bcc .8
pha
>LDA.G PromptBufPtr
tay
pla
cpy #PromptBufMax
beq .8
sta (pData),y
iny
lda #0
sta (pData),y
tya
>STA.G PromptBufPtr
bra .80
.8 clc
rts
.81 jsr SCRN.UpdateTopBar
bcs .9
.80 jsr SCRN.UpdateStatusBar
bcs .9
rts
.9 jmp Ctrl.Q
*--------------------------------------
MAN
SAVE USR/SRC/BIN/BIN/EDIT.S.CTRL
LOAD USR/SRC/BIN/BIN/EDIT.S
ASM