mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-12 14:29:33 +00:00
New Full Screen Editor
This commit is contained in:
parent
4b5aa17180
commit
3c93b13921
239
BIN/EDIT.S.BUF.txt
Normal file
239
BIN/EDIT.S.BUF.txt
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
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.InsertA sta TmpChar
|
||||||
|
jsr BUF.ComputeCOffset
|
||||||
|
cpy #255
|
||||||
|
bne .10
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.10 ldy #FileLen
|
||||||
|
lda (pData),y
|
||||||
|
clc
|
||||||
|
adc #2
|
||||||
|
pha
|
||||||
|
iny
|
||||||
|
lda (pData),y
|
||||||
|
adc #0
|
||||||
|
ply
|
||||||
|
jsr BUF.GetNewYA
|
||||||
|
bcs .9
|
||||||
|
>STYA BufPtr
|
||||||
|
|
||||||
|
>LDYA BUF.COffset
|
||||||
|
>STYA TmpCount
|
||||||
|
|
||||||
|
ldy #hBufferBackup
|
||||||
|
lda (pData),y
|
||||||
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>STYA BufPtrBackup
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
.1 jsr DecTmpCount
|
||||||
|
beq .2
|
||||||
|
lda (BufPtrBackup),y
|
||||||
|
sta (BufPtr),y
|
||||||
|
iny
|
||||||
|
bne .1
|
||||||
|
inc BufPtrBackup+1
|
||||||
|
inc BufPtr+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.2 lda TmpChar
|
||||||
|
sta (BufPtr),y
|
||||||
|
inc BufPtr
|
||||||
|
bne .3
|
||||||
|
inc BufPtr+1
|
||||||
|
|
||||||
|
.3 lda (BufPtrBackup),y
|
||||||
|
beq .4
|
||||||
|
sta (BufPtr),y
|
||||||
|
iny
|
||||||
|
bne .3
|
||||||
|
inc BufPtrBackup+1
|
||||||
|
inc BufPtr+1
|
||||||
|
bra .3
|
||||||
|
|
||||||
|
.4 ldy #FileLen
|
||||||
|
lda (pData),y
|
||||||
|
inc
|
||||||
|
sta (pData),y
|
||||||
|
bne .5
|
||||||
|
iny
|
||||||
|
lda (pData),y
|
||||||
|
inc
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
.5 clc
|
||||||
|
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
* Out : Y = Line Length
|
||||||
|
*--------------------------------------
|
||||||
|
BUF.ComputeCOffset
|
||||||
|
ldy #FileY+1
|
||||||
|
lda (pData),y
|
||||||
|
tax
|
||||||
|
dey
|
||||||
|
lda (pData),y
|
||||||
|
jsr BUF.GetLineAX
|
||||||
|
bcs .9
|
||||||
|
phy save line length
|
||||||
|
ldy #FileX
|
||||||
|
lda (pData),y
|
||||||
|
clc
|
||||||
|
adc BUF.LOffset
|
||||||
|
sta BUF.COffset
|
||||||
|
lda #0
|
||||||
|
adc BUF.LOffset+1
|
||||||
|
sta BUF.COffset+1
|
||||||
|
ply
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
BUF.GetCharAtY tya
|
||||||
|
clc
|
||||||
|
adc BUF.LOffset
|
||||||
|
sta BUF.COffset
|
||||||
|
lda #0
|
||||||
|
adc BUF.LOffset+1
|
||||||
|
sta BUF.COffset+1
|
||||||
|
|
||||||
|
lda (BufPtr),y
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BUF.GetLineAX >STAX BUF.TmpLine1
|
||||||
|
|
||||||
|
stz BUF.LOffset
|
||||||
|
stz BUF.LOffset+1
|
||||||
|
|
||||||
|
ldy #hBuffer
|
||||||
|
lda (pData),y
|
||||||
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>STYA BufPtr
|
||||||
|
|
||||||
|
lda (BufPtr)
|
||||||
|
beq .99
|
||||||
|
|
||||||
|
stz BUF.TmpLine2
|
||||||
|
stz BUF.TmpLine2+1
|
||||||
|
|
||||||
|
.1 ldy #0
|
||||||
|
|
||||||
|
.2 lda (BufPtr),y
|
||||||
|
beq .7
|
||||||
|
cmp #13
|
||||||
|
beq .3
|
||||||
|
|
||||||
|
iny
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
.3 lda BUF.TmpLine1
|
||||||
|
cmp BUF.TmpLine2
|
||||||
|
bne .4
|
||||||
|
lda BUF.TmpLine1+1
|
||||||
|
cmp BUF.TmpLine2+1
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
.4 tya
|
||||||
|
sec
|
||||||
|
adc BufPtr
|
||||||
|
sta BufPtr
|
||||||
|
bcc .5
|
||||||
|
inc BufPtr+1
|
||||||
|
|
||||||
|
.5 tya
|
||||||
|
sec
|
||||||
|
adc BUF.LOffset
|
||||||
|
sta BUF.LOffset
|
||||||
|
bcc .6
|
||||||
|
inc BUF.LOffset+1
|
||||||
|
|
||||||
|
.6 inc BUF.TmpLine2
|
||||||
|
bne .1
|
||||||
|
inc BUF.TmpLine2+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.7 lda BUF.TmpLine1
|
||||||
|
cmp BUF.TmpLine2
|
||||||
|
bne .99
|
||||||
|
lda BUF.TmpLine1+1
|
||||||
|
cmp BUF.TmpLine2+1
|
||||||
|
bne .99
|
||||||
|
|
||||||
|
.8 lda BUF.LOffset
|
||||||
|
sta BUF.COffset
|
||||||
|
lda BUF.LOffset+1
|
||||||
|
sta BUF.COffset+1
|
||||||
|
clc Y = Line length
|
||||||
|
rts
|
||||||
|
|
||||||
|
.99 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BUF.GetNewYA >STYA TmpLen
|
||||||
|
ldy #hBufferBackup
|
||||||
|
lda (pData),y
|
||||||
|
beq .1
|
||||||
|
>SYSCALL SYS.FreeMemA
|
||||||
|
ldy #hBufferBackup
|
||||||
|
lda #0
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
.1 >PUSHW TmpLen
|
||||||
|
>PUSHBI S.MEM.F.INIT0
|
||||||
|
>SYSCALL SYS.GetMem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
phy
|
||||||
|
pha
|
||||||
|
|
||||||
|
ldy #hBuffer
|
||||||
|
lda (pData),y
|
||||||
|
ldy #hBufferBackup
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
txa
|
||||||
|
ldy #hBuffer
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
pla
|
||||||
|
ply
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE BIN/EDIT.S.BUF
|
||||||
|
LOAD BIN/EDIT.S
|
||||||
|
ASM
|
551
BIN/EDIT.S.CTRL.txt
Normal file
551
BIN/EDIT.S.CTRL.txt
Normal file
@ -0,0 +1,551 @@
|
|||||||
|
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
|
||||||
|
jsr UpdateStatusBar
|
||||||
|
bcs .9
|
||||||
|
rts
|
||||||
|
|
||||||
|
.1 cmp #13
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
|
||||||
|
.2
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 jmp Ctrl.Q
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE BIN/EDIT.S.CTRL
|
||||||
|
LOAD BIN/EDIT.S
|
||||||
|
ASM
|
436
BIN/EDIT.S.SCRN.txt
Normal file
436
BIN/EDIT.S.SCRN.txt
Normal file
@ -0,0 +1,436 @@
|
|||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
InitScreen ldy #ScreenH
|
||||||
|
lda (pData),y
|
||||||
|
dec
|
||||||
|
dec
|
||||||
|
>PUSHA
|
||||||
|
>LDYA L.SEQ.INIT
|
||||||
|
>SYSCALL SYS.PSTRoutYA
|
||||||
|
bcs .9
|
||||||
|
lda #12
|
||||||
|
>SYSCALL SYS.CoutA
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
ldy #FileX
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
ldy #FileY
|
||||||
|
sta (pData),y
|
||||||
|
iny
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
ldy #ScreenX
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
ldy #ScreenY
|
||||||
|
sta (pData),y
|
||||||
|
iny
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
jsr UpdateTopBar
|
||||||
|
bcs .9
|
||||||
|
jsr UpdateViewPort
|
||||||
|
bcs .9
|
||||||
|
jsr UpdateMain
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
UpdateTopBar ldy #hFileName
|
||||||
|
lda (pData),y
|
||||||
|
beq .1
|
||||||
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
bra .2
|
||||||
|
|
||||||
|
.1 >LDYA L.MSG.NEWFILE
|
||||||
|
|
||||||
|
.2 >PUSHYA
|
||||||
|
|
||||||
|
>LDYA L.MSG.TOPBAR
|
||||||
|
>SYSCALL SYS.PSTRoutYA
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
UpdateMain ldy #ScreenY
|
||||||
|
lda (pData),y
|
||||||
|
sta TmpIndex
|
||||||
|
iny
|
||||||
|
lda (pData),y
|
||||||
|
sta TmpIndex+1
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta TmpCount
|
||||||
|
|
||||||
|
.1 >LDAX TmpIndex
|
||||||
|
jsr BUF.GetLineAX Y = line length
|
||||||
|
bcs .5
|
||||||
|
|
||||||
|
lda TmpCount
|
||||||
|
jsr UpdateLineAtALenY
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.3 inc TmpIndex
|
||||||
|
bne .4
|
||||||
|
inc TmpIndex+1
|
||||||
|
|
||||||
|
.4 inc TmpCount
|
||||||
|
lda TmpCount
|
||||||
|
cmp #22
|
||||||
|
bne .1
|
||||||
|
jmp GotoCurXCurY
|
||||||
|
|
||||||
|
.5 ldx #0
|
||||||
|
ldy TmpCount
|
||||||
|
jsr GotoXY
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>LDYA L.SEQ.CEOL
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
inc TmpCount
|
||||||
|
lda TmpCount
|
||||||
|
cmp #22
|
||||||
|
bne .5
|
||||||
|
|
||||||
|
jmp GotoCurXCurY
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
UpdateCurrentLine
|
||||||
|
ldy #ScreenY+1
|
||||||
|
lda (pData),y
|
||||||
|
tax
|
||||||
|
dey
|
||||||
|
lda (pData),y
|
||||||
|
clc
|
||||||
|
ldy #CurY
|
||||||
|
adc (pData),y
|
||||||
|
bcc .1
|
||||||
|
inx
|
||||||
|
.1 jsr BUF.GetLineAX
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
phy
|
||||||
|
ldy #CurY
|
||||||
|
lda (pData),y
|
||||||
|
ply
|
||||||
|
jsr UpdateLineAtALenY
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
UpdateLineAtALenY
|
||||||
|
stz bSelected
|
||||||
|
sty TmpLen
|
||||||
|
ldx #0
|
||||||
|
tay
|
||||||
|
jsr GotoXY
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldy #ScreenW
|
||||||
|
lda (pData),y
|
||||||
|
tax
|
||||||
|
|
||||||
|
ldy #ScreenX
|
||||||
|
lda (pData),y
|
||||||
|
tay
|
||||||
|
|
||||||
|
.1 cpy TmpLen
|
||||||
|
bcs .3
|
||||||
|
|
||||||
|
jsr BUF.GetCharAtY
|
||||||
|
beq .3
|
||||||
|
cmp #13
|
||||||
|
beq .3
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
pha
|
||||||
|
jsr BUF.CheckSelected
|
||||||
|
jsr UpdateAttrC
|
||||||
|
pla
|
||||||
|
bcs .11
|
||||||
|
|
||||||
|
>SYSCALL SYS.COutA
|
||||||
|
.11 ply
|
||||||
|
plx
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.2 iny
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.3 sec
|
||||||
|
jsr UpdateAttrC
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>LDYA L.SEQ.CEOL
|
||||||
|
>SYSCALL SYS.PSTRoutYA
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
* CC = set INV, CS = set NORM
|
||||||
|
*--------------------------------------
|
||||||
|
UpdateAttrC bcc .1
|
||||||
|
bit bSelected
|
||||||
|
bpl .8
|
||||||
|
|
||||||
|
>LDYA L.SEQ.NORM
|
||||||
|
>SYSCALL SYS.PSTRoutYA
|
||||||
|
bcs .9
|
||||||
|
stz bSelected
|
||||||
|
rts
|
||||||
|
|
||||||
|
.1 bit bSelected
|
||||||
|
bmi .8
|
||||||
|
|
||||||
|
>LDYA L.SEQ.INV
|
||||||
|
>SYSCALL SYS.PSTRoutYA
|
||||||
|
bcs .9
|
||||||
|
lda #$ff
|
||||||
|
sta bSelected
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
UpdateStatusBar ldy #PromptMode
|
||||||
|
lda (pData),y
|
||||||
|
tax
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
ldy #FileY+1
|
||||||
|
lda (pData),y
|
||||||
|
tax
|
||||||
|
dey
|
||||||
|
lda (pData),y
|
||||||
|
inc
|
||||||
|
bne .1
|
||||||
|
inx
|
||||||
|
.1 >PUSHAX
|
||||||
|
|
||||||
|
ldy #FileX
|
||||||
|
lda (pData),y
|
||||||
|
inc
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
ldy #FileLen+1
|
||||||
|
>PUSHB (pData),y
|
||||||
|
dey
|
||||||
|
>PUSHB (pData),y
|
||||||
|
|
||||||
|
ldy #ScreenH
|
||||||
|
lda (pData),y
|
||||||
|
dec
|
||||||
|
>PUSHA
|
||||||
|
>LDYA L.MSG.STATUSBAR
|
||||||
|
>SYSCALL SYS.PSTRoutYA
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 >PUSHW pData
|
||||||
|
ldy #ScreenH
|
||||||
|
lda (pData),y
|
||||||
|
dec
|
||||||
|
>PUSHA
|
||||||
|
>LDYA L.MSG.STATUSBAR,x
|
||||||
|
>SYSCALL SYS.PSTRoutYA
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
GotoCurXCurY ldy #CurX
|
||||||
|
lda (pData),y
|
||||||
|
tax
|
||||||
|
ldy #CurY
|
||||||
|
lda (pData),y
|
||||||
|
tay
|
||||||
|
|
||||||
|
GotoXY txa
|
||||||
|
inc
|
||||||
|
>PUSHA
|
||||||
|
tya
|
||||||
|
inc
|
||||||
|
inc
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
>LDYA L.MSG.GOTOXY
|
||||||
|
>SYSCALL SYS.PSTRoutYA
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
UpdateViewPort lda #$ff
|
||||||
|
sta bNotRepaint
|
||||||
|
|
||||||
|
.1 ldy #FileX
|
||||||
|
lda (pData),y
|
||||||
|
ldy #ScreenX
|
||||||
|
cmp (pData),y
|
||||||
|
bcs .2 out of left border ?
|
||||||
|
|
||||||
|
ldy #ScreenX
|
||||||
|
lda (pData),y
|
||||||
|
dec
|
||||||
|
sta (pData),y
|
||||||
|
stz bNotRepaint
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.2 ldy #ScreenX
|
||||||
|
lda (pData),y
|
||||||
|
clc
|
||||||
|
adc #79
|
||||||
|
ldy #FileX
|
||||||
|
cmp (pData),y
|
||||||
|
bcs .3 out of right border ?
|
||||||
|
|
||||||
|
ldy #ScreenX
|
||||||
|
lda (pData),y
|
||||||
|
inc
|
||||||
|
sta (pData),y
|
||||||
|
stz bNotRepaint
|
||||||
|
bra .2
|
||||||
|
|
||||||
|
.3 sec
|
||||||
|
ldy #FileY
|
||||||
|
lda (pData),y
|
||||||
|
ldy #ScreenY
|
||||||
|
sbc (pData),y
|
||||||
|
ldy #FileY+1
|
||||||
|
lda (pData),y
|
||||||
|
ldy #ScreenY+1
|
||||||
|
sbc (pData),y
|
||||||
|
bcs .4 out of top border ?
|
||||||
|
|
||||||
|
sec
|
||||||
|
ldy #ScreenY
|
||||||
|
lda (pData),y
|
||||||
|
sbc #1
|
||||||
|
sta (pData),y
|
||||||
|
iny
|
||||||
|
lda (pData),y
|
||||||
|
sbc #0
|
||||||
|
sta (pData),y
|
||||||
|
bit bNotRepaint
|
||||||
|
bpl .3
|
||||||
|
jsr scrollDn
|
||||||
|
bcc .3
|
||||||
|
rts
|
||||||
|
|
||||||
|
.4 clc
|
||||||
|
ldy #ScreenY
|
||||||
|
lda (pData),y
|
||||||
|
adc #21
|
||||||
|
pha
|
||||||
|
iny
|
||||||
|
lda (pData),y
|
||||||
|
adc #0
|
||||||
|
tax
|
||||||
|
pla
|
||||||
|
sec
|
||||||
|
ldy #FileY
|
||||||
|
sbc (pData),y
|
||||||
|
txa
|
||||||
|
iny
|
||||||
|
sbc (pData),y
|
||||||
|
bcs .5 out of bottom border ?
|
||||||
|
|
||||||
|
clc
|
||||||
|
ldy #ScreenY
|
||||||
|
lda (pData),y
|
||||||
|
adc #1
|
||||||
|
sta (pData),y
|
||||||
|
iny
|
||||||
|
lda (pData),y
|
||||||
|
adc #0
|
||||||
|
sta (pData),y
|
||||||
|
bit bNotRepaint
|
||||||
|
bpl .4
|
||||||
|
jsr scrollUp
|
||||||
|
bcc .4
|
||||||
|
rts
|
||||||
|
|
||||||
|
.5 sec
|
||||||
|
ldy #FileX
|
||||||
|
lda (pData),y
|
||||||
|
ldy #ScreenX
|
||||||
|
sbc (pData),y
|
||||||
|
ldy #CurX
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
sec
|
||||||
|
ldy #FileY
|
||||||
|
lda (pData),y
|
||||||
|
ldy #ScreenY
|
||||||
|
sbc (pData),y
|
||||||
|
ldy #CurY
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
bit bNotRepaint
|
||||||
|
bmi .6
|
||||||
|
jsr UpdateMain
|
||||||
|
bcs .9
|
||||||
|
.6 jsr UpdateStatusBar
|
||||||
|
bcs .9
|
||||||
|
jsr GotoCurXCurY
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
scrollUp lda #$1B
|
||||||
|
>SYSCALL SYS.CoutA
|
||||||
|
bcs .9
|
||||||
|
lda #'M'
|
||||||
|
>SYSCALL SYS.CoutA
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldy #ScreenY+1
|
||||||
|
lda (pData),y
|
||||||
|
tax
|
||||||
|
dey
|
||||||
|
lda (pData),y
|
||||||
|
clc
|
||||||
|
adc #21
|
||||||
|
bcc .1
|
||||||
|
inx
|
||||||
|
.1 jsr BUF.GetLineAX
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda #21
|
||||||
|
jsr UpdateLineAtALenY
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
scrollDn lda #$1B
|
||||||
|
>SYSCALL SYS.CoutA
|
||||||
|
bcs .9
|
||||||
|
lda #'D'
|
||||||
|
>SYSCALL SYS.CoutA
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldy #ScreenY+1
|
||||||
|
lda (pData),y
|
||||||
|
tax
|
||||||
|
dey
|
||||||
|
lda (pData),y
|
||||||
|
jsr BUF.GetLineAX
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
jsr UpdateLineAtALenY
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE BIN/EDIT.S.SCRN
|
||||||
|
LOAD BIN/EDIT.S
|
||||||
|
ASM
|
445
BIN/EDIT.S.txt
445
BIN/EDIT.S.txt
@ -7,20 +7,20 @@ AUTO 6
|
|||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF /A2OSX.BOOT/BIN/EDIT
|
.TF /A2OSX.BOOT/BIN/EDIT
|
||||||
*--------------------------------------
|
|
||||||
* ^C = Exit (Cancel)
|
|
||||||
* ^KH = Help
|
|
||||||
* ^KB = Begin Block
|
|
||||||
* ^KK = End Block
|
|
||||||
* ^KC = Copy Block
|
|
||||||
* ^KV = Move Block
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/LIBSTR.I
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPPTR1 .EQ ZPBIN
|
ZPPTR1 .EQ ZPBIN
|
||||||
ZPPTR2 .EQ ZPBIN+2
|
ZPPTR2 .EQ ZPBIN+2
|
||||||
|
BufPtr .EQ ZPBIN+4
|
||||||
|
BufPtrBackup .EQ ZPBIN+6
|
||||||
|
*--------------------------------------
|
||||||
|
PromptBufferMax .EQ 64
|
||||||
|
PromptModeHelp .EQ 2
|
||||||
|
PromptModeFind .EQ 4
|
||||||
|
PromptModeReplace .EQ 6
|
||||||
|
PromptModeSave .EQ 8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -40,36 +40,85 @@ CS.START cld
|
|||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
|
L.SEQ.DETECT .DA SEQ.DETECT
|
||||||
|
L.SEQ.INIT .DA SEQ.INIT
|
||||||
|
L.SEQ.RESET .DA SEQ.RESET
|
||||||
L.SEQ.INV .DA SEQ.INV
|
L.SEQ.INV .DA SEQ.INV
|
||||||
L.SEQ.NORM .DA SEQ.NORM
|
L.SEQ.NORM .DA SEQ.NORM
|
||||||
|
L.SEQ.CEOL .DA SEQ.CEOL
|
||||||
L.MSG.TOPBAR .DA MSG.TOPBAR
|
L.MSG.TOPBAR .DA MSG.TOPBAR
|
||||||
|
L.MSG.STATUSBAR .DA MSG.STATUSBAR
|
||||||
|
L.MSG.STATUSBAR.H .DA MSG.STATUSBAR.H
|
||||||
|
L.MSG.STATUSBAR.F .DA MSG.STATUSBAR.F
|
||||||
|
L.MSG.STATUSBAR.R .DA MSG.STATUSBAR.R
|
||||||
|
L.MSG.STATUSBAR.S .DA MSG.STATUSBAR.S
|
||||||
L.MSG.NEWFILE .DA MSG.NEWFILE
|
L.MSG.NEWFILE .DA MSG.NEWFILE
|
||||||
|
L.MSG.GOTOXY .DA MSG.GOTOXY
|
||||||
|
L.MSG.HELP .DA MSG.HELP
|
||||||
|
J.PROMPT .DA Prompt.Editor
|
||||||
|
.DA Prompt.Help
|
||||||
|
.DA Prompt.Find
|
||||||
|
.DA Prompt.Replace
|
||||||
|
.DA Prompt.Save
|
||||||
|
J.CTRL .DA Ctrl.Invalid
|
||||||
|
.DA Ctrl.A
|
||||||
|
.DA Ctrl.B
|
||||||
|
.DA Ctrl.C
|
||||||
|
.DA Ctrl.D
|
||||||
|
.DA Ctrl.E
|
||||||
|
.DA Ctrl.F
|
||||||
|
.DA Ctrl.G
|
||||||
|
.DA Ctrl.BS
|
||||||
|
.DA Ctrl.TAB
|
||||||
|
.DA Ctrl.LF
|
||||||
|
.DA Ctrl.VT
|
||||||
|
.DA Ctrl.L
|
||||||
|
.DA Ctrl.CR
|
||||||
|
.DA Ctrl.N
|
||||||
|
.DA Ctrl.O
|
||||||
|
.DA Ctrl.P
|
||||||
|
.DA Ctrl.Q
|
||||||
|
.DA Ctrl.R
|
||||||
|
.DA Ctrl.S
|
||||||
|
.DA Ctrl.T
|
||||||
|
.DA Ctrl.FS
|
||||||
|
.DA Ctrl.V
|
||||||
|
.DA Ctrl.W
|
||||||
|
.DA Ctrl.X
|
||||||
|
.DA Ctrl.Y
|
||||||
|
.DA Ctrl.Z
|
||||||
|
.DA Ctrl.ESC
|
||||||
|
.DA Ctrl.Invalid
|
||||||
|
.DA Ctrl.Invalid
|
||||||
|
.DA Ctrl.Invalid
|
||||||
|
.DA Ctrl.Invalid
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT lda #0
|
CS.INIT stz hFile
|
||||||
ldy #DS.END-DS.START-1
|
stz TmpLen
|
||||||
|
stz TmpLen+1
|
||||||
|
|
||||||
.1 sta (pData),y
|
lda #$ff
|
||||||
dey
|
ldy #bSaved
|
||||||
bpl .1
|
sta (pData),y
|
||||||
|
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
beq .7
|
beq .3
|
||||||
|
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>STYA ZPPTR1
|
>STYA ZPPTR1
|
||||||
|
|
||||||
lda (ZPPTR1)
|
lda (ZPPTR1)
|
||||||
cmp #'/'
|
cmp #'/'
|
||||||
bne .10
|
bne .1
|
||||||
|
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
>SYSCALL SYS.PStrCpyA
|
>SYSCALL SYS.PStrCpyA
|
||||||
bra .3
|
bra .2
|
||||||
|
|
||||||
.10 ldy #S.PS.hARGS
|
.1 ldy #S.PS.hARGS
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #S.PS.hPREFIX
|
ldy #S.PS.hPREFIX
|
||||||
@ -77,50 +126,102 @@ CS.INIT lda #0
|
|||||||
>PUSHA
|
>PUSHA
|
||||||
>SYSCALL SYS.PStrCat
|
>SYSCALL SYS.PStrCat
|
||||||
|
|
||||||
.3 ldy #hFileName
|
.2 ldy #hFileName
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
>SYSCALL SYS.LoadFileA
|
>SYSCALL SYS.LoadFileA
|
||||||
bcs .9
|
bcc .21
|
||||||
bra .8
|
jmp .99
|
||||||
|
|
||||||
.7 >PUSHWI 2048
|
.21 stx hFile
|
||||||
>PUSHBI 0
|
>STYA TmpLen
|
||||||
>SYSCALL SYS.GetMem
|
|
||||||
bcs .9
|
|
||||||
>LDYAI 0
|
|
||||||
|
|
||||||
.8 pha Y,A = len,X=hMem
|
.3 >LDYA TmpLen
|
||||||
tya
|
|
||||||
ldy #FileLen
|
|
||||||
sta (pData),y
|
|
||||||
iny
|
iny
|
||||||
pla
|
bne .4
|
||||||
sta (pData),y
|
inc
|
||||||
|
|
||||||
|
.4 >PUSHYA
|
||||||
|
>PUSHBI S.MEM.F.INIT0
|
||||||
|
>SYSCALL SYS.GetMem
|
||||||
|
bcs .98
|
||||||
|
>STYA ZPPTR2
|
||||||
txa
|
txa
|
||||||
ldy #hBuffer
|
ldy #hBuffer
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
lda #$80
|
lda hFile
|
||||||
ldy #bSaved
|
beq .7
|
||||||
sta (pData),y
|
|
||||||
ldy #bInsert
|
|
||||||
sta (pData),y
|
|
||||||
|
|
||||||
jsr InitScreen
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>STYA ZPPTR1
|
||||||
|
|
||||||
|
>LDYA TmpLen
|
||||||
|
>STYA TmpCount
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.5 jsr DecTmpCount
|
||||||
|
beq .6
|
||||||
|
lda (ZPPTR1),y
|
||||||
|
sta (ZPPTR2),y
|
||||||
|
iny
|
||||||
|
bne .5
|
||||||
|
inc ZPPTR1+1
|
||||||
|
inc ZPPTR2+1
|
||||||
|
bra .5
|
||||||
|
|
||||||
|
.6 jsr .98
|
||||||
|
|
||||||
|
.7 ldy #FileLen
|
||||||
|
lda TmpLen
|
||||||
|
sta (pData),y
|
||||||
|
iny
|
||||||
|
lda TmpLen+1
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
lda (pPs)
|
lda (pPs)
|
||||||
ora #S.PS.F.EVENT Now accept events
|
ora #S.PS.F.EVENT Now accept events
|
||||||
sta (pPs)
|
sta (pPs)
|
||||||
clc
|
clc
|
||||||
.9 rts
|
rts
|
||||||
|
|
||||||
|
.98 lda hFile
|
||||||
|
beq .99
|
||||||
|
>SYSCALL SYS.FreeMemA
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN ldy #bCANCEL
|
CS.RUN ldy #bCancel
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
clc
|
ldy #bInit
|
||||||
|
lda (pData),y
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
>LDYA L.SEQ.DETECT
|
||||||
|
>SYSCALL SYS.PSTRoutYA Send Query for term W & H
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.1 ldy #bCancel
|
||||||
|
lda (pData),y
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
>SYSCALL SYS.Sleep
|
||||||
|
|
||||||
|
ldy #ScreenW Wait for Response from terminal
|
||||||
|
lda (pData),y for W & H
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
jsr InitScreen
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldy #bInit
|
||||||
|
lda #$ff
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
@ -138,19 +239,46 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
|||||||
|
|
||||||
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
bne .9
|
bmi .9 test only OA, bug in Applewin for #,@...
|
||||||
|
* bne .9
|
||||||
|
|
||||||
ldy #S.EVT.DATALO
|
ldy #S.EVT.DATALO
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
cmp #$03 Ctrl-C
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
lda #$FF
|
tax
|
||||||
ldy #bCANCEL
|
|
||||||
|
ldy #bEscMode
|
||||||
|
lda (pData),y
|
||||||
|
asl
|
||||||
|
txa
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
cmp #'['
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
ldy #EscBuffer
|
||||||
|
lda (pData),y
|
||||||
|
inc
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
bra .8
|
|
||||||
|
|
||||||
.1 cmp #$20
|
clc
|
||||||
|
adc #EscBuffer
|
||||||
|
tay
|
||||||
|
txa
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
cmp #64
|
||||||
|
|
||||||
|
bcc .8
|
||||||
|
jsr CS.DOEVENT.Esc
|
||||||
|
bcs .8 Not translated, exit
|
||||||
|
|
||||||
|
.1 pha
|
||||||
|
ldy #PromptMode
|
||||||
|
lda (pData),y
|
||||||
|
tax
|
||||||
|
pla
|
||||||
|
jmp (J.PROMPT,x)
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
@ -158,67 +286,210 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
|||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CS.DOEVENT.Esc ldy #bEscMode
|
||||||
|
lda #0
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
ldy #EscBuffer
|
||||||
|
lda (pData),y
|
||||||
|
clc
|
||||||
|
adc #EscBuffer
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda (pData),y
|
||||||
|
|
||||||
|
ldx EscChars
|
||||||
|
.1 cmp EscChars,x
|
||||||
|
beq .2
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
cmp #'R' Response to cursor position query?
|
||||||
|
beq .3
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 lda EscAscii,x
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 stz TmpChar
|
||||||
|
|
||||||
|
ldy #EscBuffer
|
||||||
|
.4 lda (pData),y
|
||||||
|
cmp #';'
|
||||||
|
beq .5
|
||||||
|
|
||||||
|
and #$0f
|
||||||
|
pha
|
||||||
|
lda TmpChar
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
clc
|
||||||
|
adc TmpChar
|
||||||
|
asl
|
||||||
|
sta TmpChar
|
||||||
|
pla
|
||||||
|
clc
|
||||||
|
adc TmpChar
|
||||||
|
sta TmpChar
|
||||||
|
iny
|
||||||
|
bra .4
|
||||||
|
|
||||||
|
.5 phy
|
||||||
|
lda TmpChar
|
||||||
|
ldy #ScreenH
|
||||||
|
sta (pData),y
|
||||||
|
ply
|
||||||
|
|
||||||
|
stz TmpChar
|
||||||
|
|
||||||
|
ldy #EscBuffer
|
||||||
|
.6 lda (pData),y
|
||||||
|
cmp #'R'
|
||||||
|
beq .7
|
||||||
|
|
||||||
|
and #$0f
|
||||||
|
pha
|
||||||
|
lda TmpChar
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
clc
|
||||||
|
adc TmpChar
|
||||||
|
asl
|
||||||
|
sta TmpChar
|
||||||
|
pla
|
||||||
|
clc
|
||||||
|
adc TmpChar
|
||||||
|
sta TmpChar
|
||||||
|
iny
|
||||||
|
bra .6
|
||||||
|
|
||||||
|
.7 lda TmpChar
|
||||||
|
ldy #ScreenW
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CS.QUIT ldy #hBuffer
|
CS.QUIT ldy #hBuffer
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
|
beq .1
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
ldy #hFileName
|
.1 ldy #hBufferBackup
|
||||||
|
lda (pData),y
|
||||||
|
beq .2
|
||||||
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
|
.2 ldy #hClipBoard
|
||||||
|
lda (pData),y
|
||||||
|
beq .3
|
||||||
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
|
.3 ldy #hFileName
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
beq .8
|
beq .8
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
InitScreen lda #0
|
|
||||||
ldy #cPos
|
|
||||||
sta (pData),y
|
|
||||||
ldy #rPos
|
|
||||||
sta (pData),y
|
|
||||||
|
|
||||||
lda #12
|
.8 >LDYA L.SEQ.RESET
|
||||||
>SYSCALL SYS.CoutA
|
|
||||||
bcs .9
|
|
||||||
jsr UpdateTopBar
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
clc
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
UpdateTopBar ldy #hFileName
|
|
||||||
lda (pData),y
|
|
||||||
beq .1
|
|
||||||
>SYSCALL SYS.GetMemPtrA
|
|
||||||
bra .2
|
|
||||||
|
|
||||||
.1 >LDYA L.MSG.NEWFILE
|
|
||||||
|
|
||||||
.2 >PUSHYA
|
|
||||||
|
|
||||||
>LDYA L.MSG.TOPBAR
|
|
||||||
>SYSCALL SYS.PSTRoutYA
|
>SYSCALL SYS.PSTRoutYA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
lda #12
|
||||||
|
>SYSCALL SYS.CoutA
|
||||||
clc
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
DecTmpCount lda TmpCount
|
||||||
|
bne .1
|
||||||
|
lda TmpCount+1
|
||||||
|
beq .9
|
||||||
|
dec TmpCount+1
|
||||||
|
.1 dec TmpCount
|
||||||
|
ora #$ff make sure NZ
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
.INB BIN/EDIT.S.BUF
|
||||||
|
.INB BIN/EDIT.S.CTRL
|
||||||
|
.INB BIN/EDIT.S.SCRN
|
||||||
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
|
SEQ.DETECT >PSTRING "Querying terminal capabilities...\e[999;999H\e[6n"
|
||||||
|
SEQ.INIT >PSTRING "\ec\e[2;%dr"
|
||||||
|
SEQ.RESET >PSTRING "\ec"
|
||||||
SEQ.INV >PSTRING "\e[7m"
|
SEQ.INV >PSTRING "\e[7m"
|
||||||
SEQ.NORM >PSTRING "\e[0m"
|
SEQ.NORM >PSTRING "\e[0m"
|
||||||
MSG.TOPBAR >PSTRING "\e[H\e[7mA2osX Edit:%S\e[K\e[0m"
|
SEQ.CEOL >PSTRING "\e[K"
|
||||||
|
MSG.TOPBAR >PSTRING "\e[1;1H\e[7mA2osX Edit:%S\e[K\e[0m"
|
||||||
|
MSG.STATUSBAR >PSTRING "\e[%d;1H\e[7mPress Ctrl-A For Help Length:%D Col:%d Line:%D\e[K\e[0m"
|
||||||
|
MSG.STATUSBAR.H >PSTRING "\e[%d;1H\e[7mPress any key to exit this screen%S\e[K\e[0m"
|
||||||
|
MSG.STATUSBAR.F >PSTRING "\e[%d;1H\e[7mFind:%S\e[K\e[0m"
|
||||||
|
MSG.STATUSBAR.R >PSTRING "\e[%d;1H\e[7mReplace:%S\e[K\e[0m"
|
||||||
|
MSG.STATUSBAR.S >PSTRING "\e[%d;1H\e[7mSave:%S\e[K\e[0m"
|
||||||
MSG.NEWFILE >PSTRING "(new file)"
|
MSG.NEWFILE >PSTRING "(new file)"
|
||||||
|
MSG.GOTOXY >PSTRING "\e[%d;%dH"
|
||||||
|
MSG.HELP >PSTRING "Commands:"
|
||||||
|
>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-F : Find a string..."
|
||||||
|
>PSTRING " Ctrl-G : Go to start of current line"
|
||||||
|
>PSTRING " Ctrl-L : Go to end of current line"
|
||||||
|
>PSTRING " Ctrl-N : Find next"
|
||||||
|
>PSTRING " Ctrl-O : Page up"
|
||||||
|
>PSTRING " Ctrl-P : Page down"
|
||||||
|
>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-Z : Undo previous change"
|
||||||
|
.HS 00
|
||||||
|
EscChars >PSTRING "DBAC"
|
||||||
|
EscAscii .HS 04080A0B15
|
||||||
|
hFile .BS 1
|
||||||
|
TmpChar .BS 1
|
||||||
|
TmpLen .BS 2
|
||||||
|
TmpCount .BS 2
|
||||||
|
TmpIndex .BS 2
|
||||||
|
BUF.LOffset .BS 2
|
||||||
|
BUF.COffset .BS 2
|
||||||
|
BUF.TmpLine1 .BS 2
|
||||||
|
BUF.TmpLine2 .BS 2
|
||||||
|
bNotRepaint .BS 1
|
||||||
|
bSelected .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
bCANCEL .BS 1
|
PromptBuffer .BS PromptBufferMax+1
|
||||||
hFileName .BS 1
|
PromptMode .BS 1
|
||||||
hBuffer .BS 1
|
bCancel .BS 1
|
||||||
FileLen .BS 2
|
bInit .BS 1
|
||||||
cPos .BS 1
|
|
||||||
rPos .BS 2
|
|
||||||
bInsert .BS 1
|
|
||||||
bSaved .BS 1
|
bSaved .BS 1
|
||||||
|
bEscMode .BS 1
|
||||||
|
EscBuffer .BS 16
|
||||||
|
hFileName .BS 1
|
||||||
|
hFind .BS 1
|
||||||
|
hReplace .BS 1
|
||||||
|
hBuffer .BS 1
|
||||||
|
hBufferBackup .BS 1
|
||||||
|
hClipBoard .BS 1
|
||||||
|
FileLen .BS 2
|
||||||
|
ScreenW .BS 1
|
||||||
|
ScreenH .BS 1
|
||||||
|
ScreenX .BS 1
|
||||||
|
ScreenY .BS 2
|
||||||
|
CurX .BS 1
|
||||||
|
CurY .BS 1
|
||||||
|
FileX .BS 1
|
||||||
|
FileY .BS 2
|
||||||
|
SelStart .BS 2
|
||||||
|
SelEnd .BS 2
|
||||||
DS.END
|
DS.END
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user