Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-11-15 17:15:43 +01:00
parent 6f4c01182e
commit fe861c5179
3 changed files with 128 additions and 65 deletions

View File

@ -2,6 +2,63 @@ NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
BUF.InsertA sta TmpByte
jsr BUF.ComputeCOffset
cpy #255
beq .8
lda BUF.COffset
clc
>ADC.G BufBase
tax
lda BUF.COffset+1
>ADC.G BufBase+1
sta BufPtr+1
inx
bne .1
inc
.1 stx BufPtrDst
sta BufPtrDst+1
jsr BUF.MoveForwardTail
.2 lda TmpByte
sta (BufPtr)
inc FileLen
bne .8
inc FileLen+1
.8 clc
.9 rts
*--------------------------------------
BUF.DelCharAtCursor
lda (BufPtr)
pha Save deleted char for later
>LDYA BufPtr
>STYA BufPtrDst
iny
bne .1
inc
.1 >STYA BufPtr
jsr BUF.MoveBackTail
lda FileLen
bne .5
dec FileLen+1
.5 dec FileLen
jsr BUF.ResetSel
pla Get back deleted char
clc
.9 rts
*--------------------------------------
BUF.InsertClipboard
>LDA.G hClipBoard
beq .8
@ -82,37 +139,6 @@ BUF.InsertTAB jsr BUF.ComputeCOffset
.8 clc
.9 rts
*--------------------------------------
BUF.InsertA sta TmpByte
jsr BUF.ComputeCOffset
cpy #255
beq .8
lda FileLen
clc
adc #2
tay
lda FileLen+1
adc #0
cpy BufLen
sbc BufLen+1
bcs *
.2 lda TmpByte
sta (BufPtr)
inc BufPtr
bne .3
inc BufPtr+1
.3 jsr BUF.CopyTail
.4 inc FileLen
bne .8
inc FileLen+1
.8 clc
.9 rts
*--------------------------------------
BUF.DelSel jsr BUF.GetSelLen
bcs .8
@ -152,36 +178,6 @@ BUF.DelSel jsr BUF.GetSelLen
.8 clc
.9 rts
*--------------------------------------
* Erase char at CurXY
*--------------------------------------
BUF.DelCharAtCursor
>LDYA FileLen
jsr BUF.GetNewYA BufferLen-1
bcs .9
>LDYA BUF.COffset
jsr BUF.Start2YA
.3 lda (BufPtrBackup)
pha Save deleted char for later
inc BufPtrBackup
bne .4
inc BufPtrBackup+1
.4 jsr BUF.CopyTail
lda FileLen
bne .5
dec FileLen+1
.5 dec FileLen
jsr BUF.ResetSel
pla Get back deleted char
clc
.9 rts
*--------------------------------------
BUF.SelToClipboard
jsr BUF.GetSelLen
bcs .8
@ -339,6 +335,71 @@ BUF.CopyTail ldy #0
inc BufPtr+1
bra .1
.8 rts
*--------------------------------------
BUF.MoveBackTail
ldy #0
lda BufPtr+1
pha
.1 lda (BufPtr),y
sta (BufPtrDst),y
beq .8
iny
bne .1
inc BufPtr+1
inc BufPtrDst+1
bra .1
.8 pla
sta BufPtr+1
rts
*--------------------------------------
BUF.MoveForwardTail
ldy #0
ldx #$ff
phx
.1 lda (BufPtr),y
beq .4
dex
bne .2
pla
dec
pha
.2 iny
bne .1
inc BufPtr+1
inc BufPtrDst+1
bra .1
.4 lda (BufPtr),y
sta (BufPtrDst),y
tya
bne .5
dec BufPtr+1
dec BufPtrDst+1
.5 dey
inx
bne .4
pla
inc
beq .8
pha
bra .4
.8 rts
*--------------------------------------
* Out : Y = Line Length
@ -466,7 +527,7 @@ BUF.GetNewYA tax In 256 bytes page to avoid fragmentation
>SYSCALL GetMem
bcs .9
>STYA BufPtr
>STYA.G BufBase
txa
>STA.G hBuffer

View File

@ -7,7 +7,7 @@ FILE.New >LDYAI 4096
>SYSCALL GetMem
bcs .9
>STYA BufPtr
>STYA.G BufBase
txa
>STA.G hBuffer FileLen already set to 0
@ -182,8 +182,8 @@ FILE.GetBuffer >LDA.G STATBUF+S.STAT.SIZE+3
>STYA BufLen
>SYSCALL GetMem
bcs .99
>STYA BufPtr
>STYA.G BufBase
txa
>STA.G hBuffer

View File

@ -14,6 +14,7 @@ NEW
.OR ZPBIN
ZS.START
BufPtr .BS 2
BufPtrDst .EQ *
BufPtrBackup .BS 2
ClipboardPtr .BS 2
LineBufPtr .BS 2
@ -420,6 +421,7 @@ hFileName .BS 1
hFind .BS 1
hReplace .BS 1
hLineBuffer .BS 1
BufBase .BS 2
hBuffer .BS 1
hBufferBackup .BS 1
hClipBoard .BS 1