A2osX/BIN/EDIT.S.BUF.txt

282 lines
4.6 KiB
Plaintext
Raw Normal View History

2016-01-04 07:25:43 +00:00
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 TmpByte
2016-01-04 07:25:43 +00:00
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
>LDYA BUF.COffset
>STYA TmpCount
ldy #0
2016-01-21 07:05:23 +00:00
2016-01-28 17:03:51 +00:00
.1 jsr BUF.CopyCount
2016-01-04 07:25:43 +00:00
.2 lda TmpByte
2016-01-04 07:25:43 +00:00
sta (BufPtr),y
inc BufPtr
bne .3
inc BufPtr+1
2016-01-28 17:03:51 +00:00
.3 jsr BUF.CopyTail
2016-01-04 07:25:43 +00:00
.4 ldy #FileLen
lda (pData),y
inc
sta (pData),y
2016-01-09 22:33:47 +00:00
bne .8
2016-01-04 07:25:43 +00:00
iny
lda (pData),y
inc
sta (pData),y
2016-01-09 22:33:47 +00:00
.8 clc
.9 rts
*--------------------------------------
BUF.Del ldy #FileLen
lda (pData),y
iny
ora (pData),y
bne .10
2016-01-28 17:03:51 +00:00
clc exit with A=0
2016-01-09 22:33:47 +00:00
rts
2016-01-28 17:03:51 +00:00
2016-01-22 16:29:11 +00:00
.10 jsr BUF.ComputeCOffset
lda BUF.COffset
clc
2016-01-28 17:03:51 +00:00
ldy #FileLen
2016-01-22 16:29:11 +00:00
sbc (pData),y
2016-01-28 17:03:51 +00:00
lda BUF.COffset+1
2016-01-22 16:29:11 +00:00
iny
sbc (pData),y
2016-01-28 17:03:51 +00:00
bcc .11
lda #0 exit with A=0
clc
2016-01-22 16:29:11 +00:00
rts
2016-01-28 17:03:51 +00:00
2016-01-22 16:29:11 +00:00
.11 lda (pData),y
2016-01-09 22:33:47 +00:00
pha
dey
lda (pData),y
2016-01-22 16:29:11 +00:00
tay
pla
2016-01-09 22:33:47 +00:00
jsr BUF.GetNewYA
2016-01-28 17:03:51 +00:00
bcs .9
2016-01-09 22:33:47 +00:00
>LDYA BUF.COffset
>STYA TmpCount
ldy #0
2016-01-21 07:05:23 +00:00
2016-01-28 17:03:51 +00:00
jsr BUF.CopyCount
2016-01-09 22:33:47 +00:00
2016-01-28 17:03:51 +00:00
lda (BufPtrBackup),y
tax Save deleted char for later
2016-01-22 16:29:11 +00:00
inc BufPtrBackup
2016-01-09 22:33:47 +00:00
bne .3
inc BufPtrBackup+1
2016-01-28 17:03:51 +00:00
.3 jsr BUF.CopyTail
2016-01-09 22:33:47 +00:00
2016-01-28 17:03:51 +00:00
ldy #FileLen
2016-01-09 22:33:47 +00:00
lda (pData),y
sec
sbc #1
sta (pData),y
iny
lda (pData),y
sbc #0
sta (pData),y
2016-01-28 17:03:51 +00:00
txa Get back deleted char
2016-01-21 07:05:23 +00:00
clc
2016-01-04 07:25:43 +00:00
.9 rts
*--------------------------------------
2016-01-28 17:03:51 +00:00
BUF.CopyCount jsr DecTmpCount
beq .9
lda (BufPtrBackup),y
sta (BufPtr),y
iny
bne BUF.CopyCount
inc BufPtrBackup+1
inc BufPtr+1
bra BUF.CopyCount
.9 rts
*--------------------------------------
BUF.CopyTail lda (BufPtrBackup),y
beq .9
sta (BufPtr),y
iny
bne BUF.CopyTail
inc BufPtrBackup+1
inc BufPtr+1
bra BUF.CopyTail
.9 rts
*--------------------------------------
2016-01-04 07:25:43 +00:00
* 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.GetLineAX >STAX BUF.TmpLine1
stz BUF.LOffset
stz BUF.LOffset+1
ldy #hBuffer
lda (pData),y
>SYSCALL SYS.GetMemPtrA
>STYA BufPtr
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
2016-01-28 17:03:51 +00:00
bne .9
2016-01-04 07:25:43 +00:00
lda BUF.TmpLine1+1
cmp BUF.TmpLine2+1
2016-01-28 17:03:51 +00:00
bne .9
2016-01-04 07:25:43 +00:00
2016-01-28 17:03:51 +00:00
.8 clc Y = Line length
2016-01-04 07:25:43 +00:00
rts
2016-01-28 17:03:51 +00:00
.9 sec
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
2016-01-04 07:25:43 +00:00
rts
*--------------------------------------
BUF.GetNewYA >STYA TmpLen
ldy #hBufferBackup
lda (pData),y
beq .1
>SYSCALL SYS.FreeMemA
2016-01-22 16:29:11 +00:00
.1 ldy #hBuffer
lda (pData),y
2016-01-04 07:25:43 +00:00
ldy #hBufferBackup
sta (pData),y
2016-01-22 16:29:11 +00:00
>SYSCALL SYS.GetMemPtrA
>STYA BufPtrBackup
2016-01-04 07:25:43 +00:00
2016-01-22 16:29:11 +00:00
>PUSHW TmpLen
2016-01-04 07:25:43 +00:00
>PUSHBI S.MEM.F.INIT0
>SYSCALL SYS.GetMem
bcs .9
2016-01-22 16:29:11 +00:00
>STYA BufPtr
2016-01-04 07:25:43 +00:00
txa
ldy #hBuffer
sta (pData),y
2016-01-22 16:29:11 +00:00
.9 rts
2016-01-04 07:25:43 +00:00
*--------------------------------------
MAN
SAVE BIN/EDIT.S.BUF
LOAD BIN/EDIT.S
ASM