mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-29 02:49:54 +00:00
152 lines
2.8 KiB
Plaintext
152 lines
2.8 KiB
Plaintext
PR#3
|
||
PREFIX /A2OSX.SRC
|
||
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
|