A2osX/SYS/KERNEL.S.BLISTX.txt
2021-04-29 13:56:34 +02:00

111 lines
2.1 KiB
Plaintext
Raw 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
*--------------------------------------
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