mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-26 13:49:18 +00:00
597 lines
9.2 KiB
Plaintext
597 lines
9.2 KiB
Plaintext
PR#3
|
||
PREFIX /A2OSX.SRC
|
||
NEW
|
||
INC 1
|
||
AUTO 6
|
||
.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 =
|
||
* ^X = Cut Block
|
||
* ^Y =
|
||
* ^Z = Undo
|
||
*--------------------------------------
|
||
Ctrl.Invalid
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.A ldy #PromptMode
|
||
lda #PromptModeHelp
|
||
sta (pData),y
|
||
|
||
ldx #0
|
||
ldy #0
|
||
jsr GotoXY
|
||
|
||
>LDYA L.MSG.HELP
|
||
>STYA ZPPTR1
|
||
|
||
.1 >LDYA ZPPTR1
|
||
>SYSCALL SYS.PSTROutYA
|
||
bcs .9
|
||
>LDYA L.SEQ.CEOL
|
||
>SYSCALL SYS.PSTROutYA
|
||
bcs .9
|
||
|
||
sec
|
||
lda (ZPPTR1)
|
||
adc ZPPTR1
|
||
sta ZPPTR1
|
||
bcc .2
|
||
inc ZPPTR1+1
|
||
|
||
.2 lda (ZPPTR1)
|
||
beq .8
|
||
|
||
lda #13
|
||
>SYSCALL SYS.CoutA
|
||
bcs .9
|
||
bra .1
|
||
|
||
.8 jsr 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 UpdateMain
|
||
bcs .9
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Ctrl.C ldy #SelEnd+1
|
||
lda (pData),y
|
||
tax
|
||
dey
|
||
lda (pData),y
|
||
|
||
sec
|
||
ldy #SelStart
|
||
sbc (pData),y
|
||
sta TmpLen
|
||
iny
|
||
txa
|
||
sbc (pData),y
|
||
bcs .8
|
||
sta TmpLen+1
|
||
|
||
ldy #hClipBoard
|
||
lda (pData),y
|
||
beq .1
|
||
|
||
>SYSCALL SYS.FreeMemA
|
||
|
||
.1
|
||
|
||
.8 clc
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Ctrl.D
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.E jsr BUF.ComputeCOffset
|
||
lda BUF.COffset
|
||
ldy #SelEnd
|
||
sta (pData),y
|
||
lda BUF.COffset+1
|
||
iny
|
||
sta (pData),y
|
||
jsr UpdateMain
|
||
bcs .9
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Ctrl.F lda #PromptModeFind
|
||
ldy #PromptMode
|
||
sta (pData),y
|
||
|
||
jsr UpdateStatusBar
|
||
bcs .9
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Ctrl.G ldy #FileX
|
||
lda (pData),y
|
||
beq .8
|
||
lda #0
|
||
sta (pData),y
|
||
jsr 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 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 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 UpdateViewPort
|
||
bcs .9
|
||
.8 clc
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Ctrl.L ldy #FileY+1
|
||
lda (pData),y
|
||
tax
|
||
dey
|
||
lda (pData),y
|
||
jsr BUF.GetLineAX
|
||
bcs .8
|
||
|
||
tya Y = line length
|
||
ldy #FileX
|
||
sta (pData),y
|
||
jsr UpdateViewPort
|
||
bcs .9
|
||
.8 clc
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Ctrl.CR lda #13
|
||
jsr BUF.InsertA
|
||
bcs .9
|
||
ldy #FileX
|
||
lda #0
|
||
sta (pData),y
|
||
jsr UpdateMain
|
||
bcs .9
|
||
|
||
clc
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Ctrl.N
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.O
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.P
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.Q lda #$FF
|
||
ldy #bCANCEL
|
||
sta (pData),y
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.R lda #PromptModeReplace
|
||
ldy #PromptMode
|
||
sta (pData),y
|
||
jsr UpdateStatusBar
|
||
bcs .9
|
||
|
||
clc
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Ctrl.S lda #PromptModeSave
|
||
ldy #PromptMode
|
||
sta (pData),y
|
||
|
||
ldy #hFileName
|
||
lda (pData),y
|
||
beq .2
|
||
|
||
>SYSCALL SYS.GetMemPtrA
|
||
>STYA ZPPTR1
|
||
|
||
lda (ZPPTR1)
|
||
tay
|
||
|
||
.1 lda (ZPPTR1),y
|
||
sta (pData),y
|
||
dey
|
||
bpl .1
|
||
|
||
.2 jsr UpdateStatusBar
|
||
bcs .9
|
||
|
||
clc
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Ctrl.T
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.FS ldy #FileY+1
|
||
lda (pData),y
|
||
tax
|
||
dey
|
||
lda (pData),y
|
||
jsr BUF.GetLineAX
|
||
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 UpdateViewPort
|
||
bcs .9
|
||
|
||
.8 clc
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Ctrl.V
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.W
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.X
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.Y
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.Z
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.ESC ldy #bEscMode
|
||
lda #$ff
|
||
sta (pData),y
|
||
inc
|
||
ldy #EscBuffer
|
||
sta (pData),y
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Ctrl.DEL
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
Prompt.Editor pha
|
||
ldy #bInit
|
||
lda (pData),y
|
||
asl
|
||
pla
|
||
bcs .1
|
||
|
||
cmp #$1B
|
||
beq Ctrl.ESC
|
||
|
||
cmp #3 Ctrl-C ?
|
||
beq .9
|
||
|
||
clc
|
||
rts
|
||
|
||
.1 cmp #127
|
||
beq .4
|
||
|
||
cmp #$20
|
||
bcs .7
|
||
|
||
asl
|
||
tax
|
||
jmp (J.CTRL,x)
|
||
|
||
.4 jmp Ctrl.DEL
|
||
|
||
.7 jsr BUF.InsertA
|
||
bcs .9
|
||
jsr UpdateCurrentLine
|
||
bcs .9
|
||
jsr Ctrl.FS
|
||
bcs .9
|
||
rts
|
||
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Prompt.Help ldy #PromptMode
|
||
lda #0
|
||
sta (pData),y
|
||
jsr UpdateMain
|
||
bcs .9
|
||
jsr UpdateStatusBar
|
||
bcs .9
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Prompt.Find cmp #3
|
||
bne .1
|
||
|
||
ldy #PromptMode
|
||
lda #0
|
||
sta (pData),y
|
||
jsr UpdateStatusBar
|
||
bcs .9
|
||
rts
|
||
|
||
.1 cmp #13
|
||
bne .2
|
||
|
||
.2
|
||
|
||
clc
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Prompt.Replace cmp #3
|
||
bne .1
|
||
|
||
ldy #PromptMode
|
||
lda #0
|
||
sta (pData),y
|
||
jsr UpdateStatusBar
|
||
bcs .9
|
||
rts
|
||
|
||
.1 cmp #13
|
||
bne .2
|
||
|
||
.2
|
||
|
||
|
||
clc
|
||
rts
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
Prompt.Save cmp #3
|
||
bne .1
|
||
|
||
ldy #PromptMode
|
||
lda #0
|
||
sta (pData),y
|
||
bra .80
|
||
|
||
.1 cmp #13
|
||
bne .2
|
||
|
||
lda (pData)
|
||
beq .8
|
||
|
||
ldy #hFileName
|
||
lda (pData),y
|
||
beq .11
|
||
>SYSCALL SYS.FreeMemA
|
||
.11 >LDYA pData
|
||
>SYSCALL SYS.NewPStrYA
|
||
ldy #hFileName
|
||
sta (pData),y
|
||
|
||
ldy #PromptMode
|
||
lda #0
|
||
sta (pData),y
|
||
|
||
jsr SaveFile
|
||
bcc .81
|
||
jsr UpdateStatusBarErrA
|
||
bra .80
|
||
|
||
.2 cmp #127
|
||
bne .3
|
||
|
||
lda (pData)
|
||
beq .8
|
||
|
||
dec
|
||
sta (pData)
|
||
bra .80
|
||
|
||
.3 cmp #$20
|
||
bcc .8
|
||
pha
|
||
lda (pData)
|
||
tay
|
||
pla
|
||
cpy #PromptBufferMax
|
||
beq .8
|
||
iny
|
||
sta (pData),y
|
||
tya
|
||
sta (pData)
|
||
bra .80
|
||
|
||
.8 clc
|
||
rts
|
||
|
||
.81 jsr UpdateTopBar
|
||
.80 jsr UpdateStatusBar
|
||
bcs .9
|
||
rts
|
||
|
||
.9 jmp Ctrl.Q
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE BIN/EDIT.S.CTRL
|
||
LOAD BIN/EDIT.S
|
||
ASM
|