A2osX/SYS/KERNEL.S.STRVX.txt
2021-05-15 16:35:24 +02:00

196 lines
2.5 KiB
Plaintext
Raw Permalink 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.

NEW
AUTO 3,1
*--------------------------------------
STRVX.StrVFree jsr K.FreeMem
clc
rts
*--------------------------------------
STRVX.StrVNew jsr K.GetMem
bcs .9
>STYA ZPPtr1 strV
lda #0
sta (ZPPtr1)
txa
* clc
.9 rts
*--------------------------------------
STRVX.StrVSet jsr STRVX.GetID
bcs .7
ldy #$ff
.1 iny
jsr SHARED.FORPNTgY
bne .1
tya
* clc
adc #4 LEN+IDlo+IDhi+\0
bcs .9
cmp (ZPPtr1)
bne .4
lda ZPPtr1 Same Length, replace
clc
adc #3
sta ZPPtr1
bcc .2
inc ZPPtr1+1
.2 ldy #$ff
.3 iny
jsr SHARED.FORPNTgY
sta (ZPPtr1),y
bne .3
clc
.9 rts
*--------------------------------------
.4 >LDYA ZPPtr1
>STYA ZPPtr2
jsr STRVX.Next
.40 lda (ZPPtr1)
beq .6
tax
ldy #0
.5 lda (ZPPtr1),y
sta (ZPPtr2),y
iny
dex
bne .5
jsr SHARED.AddY2P1
jsr SHARED.AddY2P2
bra .40
.6 >LDYA ZPPtr2
>STYA ZPPtr1
*--------------------------------------
.7 ldy #$ff
.8 iny
jsr SHARED.FORPNTgY
bne .8
tya
clc
adc #4
bcs .99
sta (ZPPtr1)
ldy #1
lda TXTPTR
sta (ZPPtr1),y
iny
lda TXTPTR+1
sta (ZPPtr1),y
lda ZPPtr1
clc
adc #3
sta ZPPtr1
bcc .10
inc ZPPtr1+1
.10 ldy #$ff
.11 iny
jsr SHARED.FORPNTgY
sta (ZPPtr1),y
bne .11
iny
sta (ZPPtr1),y StrV Ending \0
clc
rts
.99 lda #E.OOM
sec
rts
*--------------------------------------
STRVX.StrVGet jsr STRVX.GetID
bcs .9
lda ZPPtr1
* clc
adc #3
sta ZPPtr1
bcc .1
inc ZPPtr1+1
.1 ldy #$ff
.5 iny
lda (ZPPtr1),y
jsr SHARED.FORPNTpY
bne .5
>LDYA FORPNT
clc
rts
.8 >LDYA ZPPtr1
clc
.9 rts
*--------------------------------------
STRVX.GetID jsr K.GetMemPtr
>STYA ZPPtr1 strV
.1 lda (ZPPtr1)
beq .9
ldy #1
lda (ZPPtr1),y
cmp TXTPTR
bne .2
iny
lda (ZPPtr1),y
cmp TXTPTR+1
beq .8
.2 jsr STRVX.Next
bra .1
.8 clc
rts
.9 lda #E.NOKEY
sec
rts
*--------------------------------------
STRVX.Next lda (ZPPtr1)
clc
adc ZPPtr1
sta ZPPtr1
bcc .8
inc ZPPtr1+1
.8 rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.strvx
LOAD usr/src/sys/kernel.s
ASM