A2osX/SYS/KERNEL.S.RDR.txt

152 lines
2.8 KiB
Plaintext
Raw Normal View History

2015-03-14 21:48:35 +00:00
PR#3
2015-06-03 18:30:57 +00:00
PREFIX /A2OSX.SRC
2015-03-14 21:48:35 +00:00
NEW
INC 1
AUTO 6
.LIST OFF
.OP 65C02
*--------------------------------------
* S.NewBufRdr
* In :
* PULLB = DATA hMem
* PULLB = Delim Char
* PULLW = Size of DATA
* Out :
* A = hMem To newly created BufRdr
*--------------------------------------
S.NewBufRdr >PUSHWI S.BUFRDR.SIZE
>PUSHBI 0 0 = no option
jsr S.GetMem
bcs .98
phx save hMem
>STYA ZPQuickPtr1
ldy #S.BUFRDR.hMEM
>PULLB (ZPQuickPtr1),y
ldy #S.BUFRDR.DELIM
>PULLB (ZPQuickPtr1),y
ldy #S.BUFRDR.LEN+1
>PULLB (ZPQuickPtr1),y
dey
>PULLB (ZPQuickPtr1),y
ldy #S.BUFRDR.IDX
lda #0
sta (ZPQuickPtr1),y
iny
sta (ZPQuickPtr1),y
pla
clc
rts
.98 pha
>PULLA
>PULLYA
pla
.99 rts
*--------------------------------------
* S.BufRdrReadA
* In :
* A = hMem To BufRdr
* Out :
* CC: Y,A = PTR to line (PSTR)
* CS: EOF
*--------------------------------------
S.BufRdrReadA jsr S.GetMemPtrA
>STYA ZPQuickPtr1
ldy #S.BUFRDR.hMEM
jsr S.GetMemPtrA
>STYA ZPQuickPtr2 PTR to DATA
ldy #S.BUFRDR.IDX
lda (ZPQuickPtr1),y
sta ZPQuickPtr3 IDX
clc
adc ZPQuickPtr2 PTR=PTR+IDX
sta ZPQuickPtr2
iny
lda (ZPQuickPtr1),y
sta ZPQuickPtr3+1
adc ZPQuickPtr2+1
sta ZPQuickPtr2+1
ldy #S.BUFRDR.LEN
lda (ZPQuickPtr1),y
sta ZPQuickPtr4
iny
lda (ZPQuickPtr1),y
sta ZPQuickPtr4+1
stz TmpBuffer256
ldy #S.BUFRDR.DELIM
.1 lda ZPQuickPtr4
bne .2
lda ZPQuickPtr4
beq .8
dec ZPQuickPtr4+1
.2 dec ZPQuickPtr4
lda (ZPQuickPtr2)
inc ZPQuickPtr2
bne .3
inc ZPQuickPtr2+1
.3 inc ZPQuickPtr3
bne .4
inc ZPQuickPtr3+1
.4 cmp (ZPQuickPtr1),y DELIM
beq .8
inc TmpBuffer256
beq .8
ldx TmpBuffer256
sta TmpBuffer256,x
bra .1
.8 lda TmpBuffer256
bne .81
sec
rts
.81 ldy #S.BUFRDR.IDX
lda ZPQuickPtr3
sta (ZPQuickPtr1),y
iny
lda ZPQuickPtr3+1
sta (ZPQuickPtr1),y
ldy #S.BUFRDR.LEN
lda ZPQuickPtr4
sta (ZPQuickPtr1),y
iny
lda ZPQuickPtr4+1
sta (ZPQuickPtr1),y
>LDYAI TmpBuffer256
clc
rts
*--------------------------------------
* S.BufRdrCloseA
* In :
* A = hMem To BufRdr
*--------------------------------------
S.BufRdrCloseA pha
jsr S.GetMemPtrA
>STYA S.BUFRDR.hMEM
ldy #S.BUFRDR.hMEM
lda (S.BUFRDR.hMEM),y
jsr S.FreeMemA
pla
jsr S.FreeMemA
clc
rts
*--------------------------------------
* PRIVATE
*--------------------------------------
MAN
SAVE SYS/KERNEL.S.RDR
LOAD SYS/KERNEL.S
ASM