A2osX/SYS/KERNEL.S.BLISTX.txt

111 lines
2.1 KiB
Plaintext
Raw Normal View History

2021-04-29 11:56:34 +00:00
NEW
AUTO 3,1
*--------------------------------------
ZPBLISTXIBlkPtr .EQ ZPMEMMGR+12
ZPBLISTXDBlkPtr .EQ ZPMEMMGR+14
*--------------------------------------
BLISTX.BytePtr .BS 1
BLISTX.BlockPtr .BS 1
*--------------------------------------
BLISTX.New >LDYAI 128 32k Max before out of memory!!!
ldx #S.MEM.F.INIT0+8 index
jsr MEM.GetMem.YAX
bcs .9
>STYA ZPBLISTXIBlkPtr
stx .8+1
>LDYAI 256
ldx #4 data
jsr MEM.GetMem.YAX
bcs .9
>STYA ZPBLISTXDBlkPtr
lda #0
sta (ZPBLISTXDBlkPtr)
txa
sta (ZPBLISTXIBlkPtr)
.8 lda #$ff SELF MODIFIED
.9 rts
*--------------------------------------
BLISTX.Free pha
jsr K.GetMemPtr
>STYA .1+1
ldx #0
.1 lda $ffff,x SELF MODIFIED
beq .8
jsr K.FreeMem
inx
bra .1
.8 pla
jmp K.FreeMem
*--------------------------------------
BLISTX.GetNextByte
ldy BLISTX.BytePtr
lda (ZPBLISTXDBlkPtr),y
BLISTX.ToNextByte
inc BLISTX.BytePtr
bne .8
pha
jsr BLISTX.ToNextBlock
pla
.8 rts
*--------------------------------------
BLISTX.AddDataByte
phy
ldy BLISTX.BytePtr
sta (ZPBLISTXDBlkPtr),y
inc BLISTX.BytePtr
bne .8
phx
>LDYAI 256
ldx #4
jsr MEM.GetMem.YAX
bcs .9
>STYA ZPBLISTXDBlkPtr
txa
inc BLISTX.BlockPtr
ldy BLISTX.BlockPtr
sta (ZPBLISTXIBlkPtr),y
* stz BLISTX.BytePtr
plx
.8 ply
clc
rts
.9 plx
ply
rts
*--------------------------------------
BLISTX.SetBlockByte
ldy BLISTX.BytePtr
sta (ZPBLISTXDBlkPtr),y
inc BLISTX.BytePtr
bne BLISTX.ToNextBlock.RTS
*--------------------------------------
BLISTX.ToNextBlock
inc BLISTX.BlockPtr
ldy BLISTX.BlockPtr
lda (ZPBLISTXIBlkPtr),y
jsr K.GetMemPtr
>STYA ZPBLISTXDBlkPtr
BLISTX.ToNextBlock.RTS
rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.blistx
LOAD usr/src/sys/kernel.s
ASM