A2osX/BIN/EDIT.S.BUF.txt
Rémy GIBERT 83358c18c3 SAVE
2016-01-09 23:33:47 +01:00

300 lines
4.7 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.

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
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 TmpByte
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 .8
iny
lda (pData),y
inc
sta (pData),y
.8 clc
.9 rts
*--------------------------------------
BUF.Del ldy #FileLen
lda (pData),y
iny
ora (pData),y
bne .10
clc
rts
.10 lda (pData),y
pha
dey
lda (pData),y
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 inc BufPtrBackup
bne .3
inc BufPtrBackup+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
sec
sbc #1
sta (pData),y
iny
lda (pData),y
sbc #0
sta (pData),y
.8 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