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