mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-15 22:30:13 +00:00
Kernel 0.92+
This commit is contained in:
parent
fac33c60ce
commit
a3d66b0b6c
@ -446,34 +446,35 @@ A = hMem
|
||||
Y,A = PTR to MemBlock
|
||||
(X unmodified)
|
||||
|
||||
# SListAddData
|
||||
|
||||
## ASM
|
||||
`PUSHB DataLen`
|
||||
`PUSHB DataPtr`
|
||||
`PUSHW KeyID`
|
||||
`lda hSList`
|
||||
`>SYSCALL SListAddData`
|
||||
|
||||
## RETURN VALUE
|
||||
Y,A = Next DataID
|
||||
|
||||
# SListGetData
|
||||
|
||||
## ASM
|
||||
`PUSHB DataLen`
|
||||
`PUSHB DataPtr`
|
||||
`PUSHW DataOfs`
|
||||
`PUSHW DataLen`
|
||||
`PUSHW DataPtr`
|
||||
`PUSHW KeyID`
|
||||
`lda hSList`
|
||||
`>SYSCALL SListGetData`
|
||||
|
||||
## RETURN VALUE
|
||||
Y,A = Byte Count
|
||||
|
||||
# SListAddData
|
||||
|
||||
## ASM
|
||||
`PUSHW DataLen`
|
||||
`PUSHW DataPtr`
|
||||
`PUSHW KeyID`
|
||||
`lda hSList`
|
||||
`>SYSCALL SListAddData`
|
||||
|
||||
## RETURN VALUE
|
||||
|
||||
# SListSetData
|
||||
|
||||
## ASM
|
||||
`PUSHB DataLen`
|
||||
`PUSHB DataPtr`
|
||||
`PUSHW DataLen`
|
||||
`PUSHW DataPtr`
|
||||
`PUSHW KeyID`
|
||||
`lda hSList`
|
||||
`>SYSCALL SListSetData`
|
||||
@ -511,6 +512,7 @@ Y,A = PTR to MemBlock
|
||||
|
||||
## RETURN VALUE
|
||||
Y,A = KeyID
|
||||
X = Key Length
|
||||
|
||||
# SListNew
|
||||
|
||||
@ -528,16 +530,6 @@ A=hSList
|
||||
|
||||
## RETURN VALUE
|
||||
|
||||
# GetStkObjData
|
||||
|
||||
## ASM
|
||||
`PUSHW DataLen`
|
||||
`PUSHW DataPtr`
|
||||
`lda hStkObj`
|
||||
`>SYSCALL GetStkObjData`
|
||||
|
||||
## RETURN VALUE
|
||||
|
||||
# NewStkObj
|
||||
Y,A = Size Requested
|
||||
|
||||
@ -566,6 +558,16 @@ Load a file in AUX memory (Stock Objects)
|
||||
Y,A = File Length
|
||||
X = hMem of Loaded Object in AUX mem
|
||||
|
||||
# GetStkObjData
|
||||
|
||||
## ASM
|
||||
`PUSHW DataLen`
|
||||
`PUSHW DataPtr`
|
||||
`lda hStkObj`
|
||||
`>SYSCALL GetStkObjData`
|
||||
|
||||
## RETURN VALUE
|
||||
|
||||
# ExecL
|
||||
|
||||
## C
|
||||
|
Binary file not shown.
@ -537,16 +537,17 @@ CMD.FUNC lda (ZPArgVBufPtr)
|
||||
|
||||
jsr CORE.StkGetCtx
|
||||
bcc .9 NO context allowed
|
||||
|
||||
|
||||
>LDA.G hFuncList
|
||||
bne .1
|
||||
|
||||
>SYSCALL SListNew
|
||||
bcs .9
|
||||
bcs .99
|
||||
>STA.G hFuncList
|
||||
|
||||
.1 >PUSHW ZPArgVBufPtr
|
||||
>LDA.G hFuncList
|
||||
|
||||
>SYSCALL SListNewKey
|
||||
bcs .99
|
||||
|
||||
|
@ -131,7 +131,19 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
||||
jsr CORE.LookupInputBuf
|
||||
bcc .41
|
||||
|
||||
jsr CORE.ArgV.Add external cmd, go check context
|
||||
>LDA.G hFuncList
|
||||
beq .40
|
||||
|
||||
>PUSHYA ZPInputBufPtr
|
||||
>LDA.G hFuncList
|
||||
>DEBUG
|
||||
>SYSCALL SListLookup
|
||||
bcs .40
|
||||
|
||||
|
||||
jmp .43
|
||||
|
||||
.40 jsr CORE.ArgV.Add external cmd, go check context
|
||||
bra .42
|
||||
|
||||
.41 jsr CORE.SkipCharsA
|
||||
@ -140,7 +152,7 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
||||
>STA.G CORE.IntCmd
|
||||
|
||||
.42 jsr CORE.StkGet
|
||||
bcs .7 no particular context, exec...
|
||||
bcs CORE.Run.7 no particular context, exec...
|
||||
tax
|
||||
|
||||
>LDA.G CORE.IntCmd
|
||||
@ -148,13 +160,13 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
||||
|
||||
and #$3F
|
||||
cmp #C.SWITCH SWITCH....FI ?
|
||||
bcs .7
|
||||
bcs CORE.Run.7
|
||||
|
||||
.45 txa
|
||||
bpl .43 context is FALSE, skip line
|
||||
|
||||
asl
|
||||
bmi .7 parent context is true, exec
|
||||
bmi CORE.Run.7 parent context is true, exec
|
||||
|
||||
.43 jsr CORE.GetCharNB
|
||||
|
||||
@ -173,23 +185,23 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
||||
clc
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
.5 >LDYA L.CORE.IO
|
||||
CORE.Run.5 >LDYA L.CORE.IO
|
||||
jsr CORE.LookupInputBuf
|
||||
bcs .6
|
||||
bcs CORE.Run.6
|
||||
|
||||
jsr CORE.SkipCharsA
|
||||
|
||||
jsr CORE.IO.JMP
|
||||
bcs CORE.Run.RTS
|
||||
bra .7
|
||||
bra CORE.Run.7
|
||||
|
||||
.6 jsr CORE.ArgV.Add
|
||||
CORE.Run.6 jsr CORE.ArgV.Add
|
||||
|
||||
.7 jsr CORE.GetCharNB
|
||||
CORE.Run.7 jsr CORE.GetCharNB
|
||||
bcs CORE.ExecCmd.1 Nothing to skip
|
||||
|
||||
jsr CORE.IsEndCmd
|
||||
bcs .5
|
||||
bcs CORE.Run.5
|
||||
|
||||
cmp #'|'
|
||||
bne CORE.ExecCmd skip CR, ;
|
||||
|
@ -109,6 +109,7 @@ E.IUSR .EQ $F2 Invalid User
|
||||
|
||||
E.NOKEY .EQ $EF Undefined Key
|
||||
E.DUPKEY .EQ $EE Duplicate Key
|
||||
E.NODATA .EQ $ED No Data
|
||||
*--------------------------------------
|
||||
* A2osX.SYSCALL Constants
|
||||
*--------------------------------------
|
||||
@ -283,13 +284,13 @@ SYS.GetMem0 .EQ $E2
|
||||
SYS.GetMemPtr .EQ $E4
|
||||
SYS.FreeMem .EQ $E6
|
||||
|
||||
SYS.LoadStkObj .EQ $E8
|
||||
SYS.NewStkObj .EQ $EA
|
||||
SYS.FreeStkObj .EQ $EC
|
||||
SYS.NewStkObj .EQ $E8
|
||||
SYS.FreeStkObj .EQ $EA
|
||||
SYS.LoadStkObj .EQ $EC
|
||||
SYS.GetStkObjData .EQ $EE
|
||||
|
||||
SYS.SListAddData .EQ $F0
|
||||
SYS.SListGetData .EQ $F2
|
||||
SYS.SListGetData .EQ $F0
|
||||
SYS.SListAddData .EQ $F2
|
||||
SYS.SListSetData .EQ $F4
|
||||
SYS.SListGetByID .EQ $F6
|
||||
|
||||
|
@ -141,13 +141,13 @@ K.SYSCALL.JMP .DA K.GetMemStat $00
|
||||
.DA K.GetMemPtr
|
||||
.DA K.FreeMem
|
||||
|
||||
.DA K.LoadStkObj
|
||||
.DA K.NewStkObj
|
||||
.DA K.FreeStkObj
|
||||
.DA K.LoadStkObj
|
||||
.DA K.GetStkObjData
|
||||
*--------------------------------------
|
||||
.DA K.SListAddData $F0
|
||||
.DA K.SListGetData
|
||||
.DA K.SListGetData $F0
|
||||
.DA K.SListAddData
|
||||
.DA K.SListSetData
|
||||
.DA K.SListGetByID
|
||||
|
||||
|
@ -5,12 +5,6 @@ AUTO 4,1
|
||||
ZPMemMgrSPtr .EQ ZPMEMMGR Pointer To Slot selected
|
||||
ZPMemMgrTmp1 .EQ ZPMEMMGR+2
|
||||
ZPMemMgrSize .EQ ZPMEMMGR+4
|
||||
ZPSListID .EQ ZPMEMMGR+6
|
||||
ZPSListKeyPtr .EQ ZPMEMMGR+8
|
||||
ZPSListDataPtr .EQ ZPMEMMGR+8
|
||||
ZPSListDataLen .EQ ZPMEMMGR+10
|
||||
ZPSListIBlkPtr .EQ ZPMEMMGR+12
|
||||
ZPSListDBlkPtr .EQ ZPMEMMGR+14
|
||||
*/--------------------------------------
|
||||
* # GetMem0
|
||||
* Y,A = Size Requested
|
||||
@ -385,42 +379,52 @@ MEM.GetMemByID sta ZPMemMgrSPtr
|
||||
rol
|
||||
sta ZPMemMgrSPtr+1
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # SListAddData
|
||||
* ## ASM
|
||||
* `PUSHB DataLen`
|
||||
* `PUSHB DataPtr`
|
||||
* `PUSHW KeyID`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListAddData`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = Next DataID
|
||||
*\--------------------------------------
|
||||
K.SListAddData
|
||||
*--------------------------------------
|
||||
ZPSListKeyID .EQ ZPMEMMGR+6
|
||||
ZPSListKeyPtr .EQ ZPMEMMGR+8
|
||||
ZPSListDataPtr .EQ ZPMEMMGR+8
|
||||
ZPSListDataLen .EQ ZPMEMMGR+10
|
||||
ZPSListIBlkPtr .EQ ZPMEMMGR+12
|
||||
ZPSListDBlkPtr .EQ ZPMEMMGR+14
|
||||
*/--------------------------------------
|
||||
* # SListGetData
|
||||
* ## ASM
|
||||
* `PUSHB DataLen`
|
||||
* `PUSHB DataPtr`
|
||||
* `PUSHW DataOfs`
|
||||
* `PUSHW DataLen`
|
||||
* `PUSHW DataPtr`
|
||||
* `PUSHW KeyID`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListGetData`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = Byte Count
|
||||
*\--------------------------------------
|
||||
K.SListGetData
|
||||
K.SListGetData pha
|
||||
>PULLW ZPMemMgrSize
|
||||
pla
|
||||
*/--------------------------------------
|
||||
* # SListAddData
|
||||
* ## ASM
|
||||
* `PUSHW DataLen`
|
||||
* `PUSHW DataPtr`
|
||||
* `PUSHW KeyID`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListAddData`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SListAddData
|
||||
*/--------------------------------------
|
||||
* # SListSetData
|
||||
* ## ASM
|
||||
* `PUSHB DataLen`
|
||||
* `PUSHB DataPtr`
|
||||
* `PUSHW DataLen`
|
||||
* `PUSHW DataPtr`
|
||||
* `PUSHW KeyID`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListSetData`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SListSetData pha
|
||||
>PULLW ZPSListID
|
||||
bra K.SListPullA
|
||||
>PULLW ZPSListDataLen
|
||||
pla
|
||||
*/--------------------------------------
|
||||
* # SListGetByID
|
||||
* ## ASM
|
||||
@ -432,9 +436,10 @@ K.SListSetData pha
|
||||
* Y,A = Next KeyID
|
||||
*\--------------------------------------
|
||||
K.SListGetByID pha
|
||||
>PULLW ZPSListID
|
||||
>PULLW ZPSListKeyPtr
|
||||
bra K.SListPullA
|
||||
>PULLW ZPSListKeyID
|
||||
pla
|
||||
bra K.SListFree
|
||||
*/--------------------------------------
|
||||
* # SListNewKey
|
||||
* ## ASM
|
||||
@ -454,11 +459,11 @@ K.SListNewKey
|
||||
* `>SYSCALL SListLookup`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = KeyID
|
||||
* X = Key Length
|
||||
*\--------------------------------------
|
||||
K.SListLookup pha
|
||||
*--------------------------------------
|
||||
>PULLW ZPSListKeyPtr
|
||||
K.SListPullA pla
|
||||
pla
|
||||
*/--------------------------------------
|
||||
* # SListNew
|
||||
* ## ASM
|
||||
@ -466,7 +471,7 @@ K.SListPullA pla
|
||||
* ## RETURN VALUE
|
||||
* A=hSList
|
||||
*\--------------------------------------
|
||||
K.SListNew
|
||||
K.SListNew
|
||||
*/--------------------------------------
|
||||
* # SListFree
|
||||
* ## ASM
|
||||
@ -474,40 +479,15 @@ K.SListNew
|
||||
* `>SYSCALL SListFree`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SListFree
|
||||
*--------------------------------------
|
||||
sta SETREADAUX
|
||||
K.SListFree sta SETREADAUX
|
||||
sta SETWRITEAUX
|
||||
jsr X.SLIST
|
||||
|
||||
jsr X.SLIST
|
||||
|
||||
sta CLRREADAUX
|
||||
sta CLRWRITEAUX
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # GetStkObjData
|
||||
* ## ASM
|
||||
* `PUSHW DataLen`
|
||||
* `PUSHW DataPtr`
|
||||
* `lda hStkObj`
|
||||
* `>SYSCALL GetStkObjData`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.GetStkObjData sta SETREADAUX
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPMemMgrTmp1
|
||||
|
||||
>PULLW ZPSListDataLen
|
||||
>PULLW ZPSListDataPtr
|
||||
|
||||
lda (ZPMemMgrTmp1),y
|
||||
pha
|
||||
iny
|
||||
lda (ZPMemMgrTmp1),y
|
||||
ply
|
||||
|
||||
|
||||
sta CLRREADAUX
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # NewStkObj
|
||||
* Y,A = Size Requested
|
||||
* ## RETURN VALUE
|
||||
@ -528,16 +508,16 @@ K.NewStkObj ldx #SYS.GetMem
|
||||
*\--------------------------------------
|
||||
K.FreeStkObj ldx #SYS.FreeMem
|
||||
|
||||
MEM.GoStkObj sta SETREADAUX
|
||||
sta SETREADAUX
|
||||
sta SETWRITEAUX
|
||||
|
||||
jsr .1
|
||||
jsr MEM.Kernel.JMP
|
||||
|
||||
sta CLRREADAUX
|
||||
sta CLRWRITEAUX
|
||||
rts
|
||||
|
||||
.1 jmp (SYS.Kernel.JMP,x)
|
||||
MEM.Kernel.JMP jmp (SYS.Kernel.JMP,x)
|
||||
*/--------------------------------------
|
||||
* # LoadStkObj
|
||||
* Load a file in AUX memory (Stock Objects)
|
||||
@ -596,6 +576,31 @@ K.LoadStkObj >SYSCALL LoadFile
|
||||
pla
|
||||
sec
|
||||
.99 rts
|
||||
*/--------------------------------------
|
||||
* # GetStkObjData
|
||||
* ## ASM
|
||||
* `PUSHW DataLen`
|
||||
* `PUSHW DataPtr`
|
||||
* `lda hStkObj`
|
||||
* `>SYSCALL GetStkObjData`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.GetStkObjData sta SETREADAUX
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPMemMgrTmp1
|
||||
|
||||
>PULLW ZPSListDataLen
|
||||
>PULLW ZPSListDataPtr
|
||||
|
||||
lda (ZPMemMgrTmp1),y
|
||||
pha
|
||||
iny
|
||||
lda (ZPMemMgrTmp1),y
|
||||
ply
|
||||
|
||||
|
||||
sta CLRREADAUX
|
||||
rts
|
||||
*--------------------------------------
|
||||
* in Y,A = buf size
|
||||
*--------------------------------------
|
||||
|
@ -2,68 +2,134 @@ NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
*--------------------------------------
|
||||
X.SLIST jmp (.1-SYS.SListAddData,x)
|
||||
.1 .DA SLIST.AddData
|
||||
.DA SLIST.GetData
|
||||
X.SLIST jmp (.1-SYS.SListGetData,x)
|
||||
.1 .DA SLIST.GetData
|
||||
.DA SLIST.AddData
|
||||
.DA SLIST.SetData
|
||||
.DA SLIST.GetByID
|
||||
.DA SLIST.NewKey
|
||||
.DA SLIST.Lookup
|
||||
.DA SLIST.New
|
||||
.DA SLIST.Free
|
||||
.DA SLIST.Free
|
||||
*--------------------------------------
|
||||
SLIST.AddData jsr SLIST.Select
|
||||
SLIST.GetData jsr SLIST.Select
|
||||
jsr SLIST.SkipKey
|
||||
|
||||
jsr SLIST.GetDataLen
|
||||
|
||||
lda ZPMemMgrSize Get Offset
|
||||
cmp SLIST.DataLen
|
||||
lda ZPMemMgrSize+1
|
||||
sbc SLIST.DataLen+1
|
||||
bcs .99
|
||||
|
||||
lda ZPMemMgrSize
|
||||
ldx ZPMemMgrSize+1
|
||||
jsr SLIST.SkipDataAX
|
||||
|
||||
lda SLIST.DataLen
|
||||
sec
|
||||
sbc ZPMemMgrSize
|
||||
eor #$ff
|
||||
sta SLIST.nDataCnt
|
||||
lda SLIST.DataLen+1
|
||||
sbc ZPMemMgrSize
|
||||
eor #$ff
|
||||
sta SLIST.nDataCnt+1 Data remaining
|
||||
|
||||
lda ZPSListDataLen
|
||||
ora ZPSListDataLen
|
||||
clc
|
||||
beq .1 String Mode
|
||||
|
||||
lda ZPSListDataLen
|
||||
eor #$ff
|
||||
sta SLIST.nBufCnt
|
||||
lda ZPSListDataLen+1
|
||||
eor #$ff
|
||||
sta SLIST.nBufCnt+1
|
||||
sec
|
||||
|
||||
.1 ror SLIST.bStringMode
|
||||
|
||||
|
||||
bcs .99 Lookup succeeded...DUP
|
||||
stz ZPSListDataLen
|
||||
stz ZPSListDataLen+1
|
||||
|
||||
ldy #$ff
|
||||
.2 inc SLIST.nDataCnt
|
||||
bne .3
|
||||
inc SLIST.nDataCnt+1
|
||||
beq .8
|
||||
|
||||
.1 iny
|
||||
jsr MEM.GetKeyCharY
|
||||
bcc .1
|
||||
.3 inc SLIST.nBufCnt
|
||||
bne .4
|
||||
inc SLIST.nBufCnt+1
|
||||
beq .8
|
||||
|
||||
sty .8+1
|
||||
tya
|
||||
beq .9 CS
|
||||
.4 jsr SLIST.GetNextByte
|
||||
bit SLIST.bStringMode
|
||||
bpl .5
|
||||
|
||||
jsr SLIST.AddBlockByte
|
||||
bcs .9
|
||||
cmp #C.CR
|
||||
beq .8
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 jsr MEM.GetKeyCharY
|
||||
bcs .3
|
||||
|
||||
jsr SLIST.AddBlockByte
|
||||
bcs .9
|
||||
iny
|
||||
.5 jsr MEM.SetDataByte
|
||||
inc ZPSListDataLen
|
||||
bne .2
|
||||
inc ZPSListDataLen+1
|
||||
bra .2
|
||||
|
||||
.3 jsr MEM.GetDataByte
|
||||
tax
|
||||
|
||||
jsr SLIST.AddBlockByte
|
||||
bcs .9
|
||||
|
||||
.4 jsr MEM.GetDataByte
|
||||
|
||||
jsr SLIST.AddBlockByte
|
||||
bcs .9
|
||||
|
||||
dex
|
||||
bne .4
|
||||
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
|
||||
.8 >LDYA ZPSListDataLen
|
||||
clc
|
||||
rts
|
||||
|
||||
.99 lda #E.NOPKEY
|
||||
.99 lda #E.NODATA
|
||||
sec
|
||||
.9 rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.GetData
|
||||
SLIST.AddData jsr SLIST.Select
|
||||
jsr SLIST.SkipKey
|
||||
|
||||
>LDYA SLIST.KeyID Save DataLen location
|
||||
>STYA ZPSListKeyID to update later
|
||||
|
||||
jsr SLIST.SkipData
|
||||
|
||||
lda ZPSListDataLen
|
||||
pha
|
||||
clc
|
||||
adc SLIST.DataLen
|
||||
sta SLIST.DataLen
|
||||
pla
|
||||
eor #$ff
|
||||
sta ZPSListDataLen
|
||||
|
||||
lda ZPSListDataLen+1
|
||||
pha
|
||||
adc SLIST.DataLen+1
|
||||
sta SLIST.DataLen+1
|
||||
pla
|
||||
eor #$ff
|
||||
sta ZPSListDataLen+1
|
||||
|
||||
.1 inc ZPSListDataLen
|
||||
bne .2
|
||||
inc ZPSListDataLen+1
|
||||
beq .8
|
||||
|
||||
.2 jsr MEM.GetDataByte
|
||||
|
||||
jsr SLIST.AddBlockByte
|
||||
bcc .9
|
||||
rts
|
||||
|
||||
.8 jsr SLIST.Select go back to DataLen Location
|
||||
lda SLIST.DataLen
|
||||
jsr SLIST.SetBlockByte
|
||||
lda SLIST.DataLen+1
|
||||
jsr SLIST.SetBlockByte
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SLIST.SetData
|
||||
clc
|
||||
@ -102,15 +168,15 @@ SLIST.GetByID jsr SLIST.Select
|
||||
clc
|
||||
.HS B0 BCS
|
||||
.9 sec
|
||||
ldx SLIST.BlockOfs
|
||||
ldy SLIST.IndexOfs
|
||||
>LDYA SLIST.KeyID
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.NewKey jsr SLIST.Search
|
||||
bcc .99
|
||||
|
||||
>LDYA SLIST.IndexOfs
|
||||
>STYA ZPSListID
|
||||
>LDYA SLIST.KeyID Not Found...
|
||||
>STYA ZPSListKeyID save new KeyID
|
||||
|
||||
lda SLIST.KeyLen
|
||||
jsr SLIST.AddBlockByte
|
||||
@ -118,7 +184,7 @@ SLIST.NewKey jsr SLIST.Search
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda (ZPSListKeyPtr),y
|
||||
.1 jsr MEM.GetKeyCharY
|
||||
jsr SLIST.AddBlockByte
|
||||
bcs .9
|
||||
iny
|
||||
@ -133,7 +199,7 @@ SLIST.NewKey jsr SLIST.Search
|
||||
jsr SLIST.AddBlockByte
|
||||
bcs .9
|
||||
|
||||
>LDYA ZPSListID
|
||||
>LDYA ZPSListKeyID
|
||||
clc
|
||||
rts
|
||||
|
||||
@ -141,35 +207,10 @@ SLIST.NewKey jsr SLIST.Search
|
||||
sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SLIST.UpdateByID
|
||||
jsr SLIST.Select
|
||||
|
||||
jsr SLIST.GetBlockByte
|
||||
tax
|
||||
|
||||
.1 jsr SLIST.GetNextBlockByte
|
||||
dex
|
||||
bne .1
|
||||
|
||||
jsr SLIST.GetNextBlockByte set pos at DATALEN
|
||||
|
||||
jsr MEM.GetDataByte
|
||||
tax
|
||||
|
||||
jsr SLIST.SetBlockByte
|
||||
|
||||
.4 jsr MEM.GetDataByte
|
||||
jsr SLIST.SetBlockByte
|
||||
dex
|
||||
bne .4
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.Lookup jsr SLIST.Search
|
||||
bcs .9
|
||||
|
||||
>LDYA ZPSListID
|
||||
>LDYA SLIST.KeyID
|
||||
ldx SLIST.KeyLen
|
||||
|
||||
.9 rts
|
||||
@ -211,29 +252,29 @@ SLIST.Free sta .8+1
|
||||
SLIST.Select jsr K.GetMemPtr
|
||||
>STYA ZPSListIBlkPtr
|
||||
|
||||
ldy ZPSListID+1
|
||||
sty SLIST.IndexOfs
|
||||
ldy ZPSListKeyID+1
|
||||
sty SLIST.BlockPtr
|
||||
|
||||
lda (ZPSListIBlkPtr),y
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPSListDBlkPtr
|
||||
|
||||
lda ZPSListID
|
||||
sta SLIST.BlockOfs
|
||||
lda ZPSListKeyID
|
||||
sta SLIST.BytePtr
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.Search jsr K.GetMemPtr
|
||||
>STYA ZPSListIBlkPtr
|
||||
|
||||
stz SLIST.IndexOfs
|
||||
stz ZPSListID+1
|
||||
stz SLIST.BlockPtr
|
||||
stz ZPSListKeyID+1
|
||||
|
||||
lda (ZPSListIBlkPtr)
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPSListDBlkPtr
|
||||
|
||||
stz SLIST.BlockOfs
|
||||
stz ZPSListID
|
||||
stz SLIST.BytePtr
|
||||
stz ZPSListKeyID
|
||||
|
||||
ldy #$ff
|
||||
|
||||
@ -247,13 +288,15 @@ SLIST.Search jsr K.GetMemPtr
|
||||
beq .9
|
||||
|
||||
.2 cmp SLIST.KeyLen
|
||||
bne .4
|
||||
bne .5
|
||||
|
||||
ldy #0
|
||||
|
||||
.3 jsr SLIST.GetNextBlockByte
|
||||
cmp (ZPSListKeyPtr),y
|
||||
bne .4
|
||||
sta .4+1
|
||||
jsr MEM.GetKeyCharY
|
||||
.4 cmp #$ff SELF MODIFIED
|
||||
bne .5
|
||||
|
||||
iny
|
||||
cpy SLIST.KeyLen
|
||||
@ -262,13 +305,7 @@ SLIST.Search jsr K.GetMemPtr
|
||||
clc
|
||||
rts
|
||||
|
||||
.4
|
||||
jsr SLIST.GetNextBlockByte
|
||||
|
||||
ldx SLIST.IndexOfs
|
||||
stx ZPSListID+1
|
||||
ldx SLIST.BlockOfs
|
||||
stx ZPSListID
|
||||
.5 jsr SLIST.Next
|
||||
|
||||
jsr SLIST.GetBlockByte
|
||||
bne .2
|
||||
@ -277,29 +314,82 @@ SLIST.Search jsr K.GetMemPtr
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.Skip
|
||||
SLIST.Next jsr SLIST.SkipKey
|
||||
|
||||
SLIST.SkipData jsr SLIST.GetDataLen
|
||||
|
||||
lda SLIST.DataLen
|
||||
ldx SLIST.DataLen+1
|
||||
SLIST.SkipDataAX
|
||||
clc
|
||||
adc SLIST.BytePtr
|
||||
sta SLIST.BytePtr
|
||||
|
||||
txa
|
||||
adc SLIST.BlockPtr
|
||||
sta SLIST.BlockPtr
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPSListDBlkPtr
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.SkipKey ldy SLIST.BytePtr
|
||||
lda (ZPSListDBlkPtr),y Get KeyLen
|
||||
sec
|
||||
adc SLIST.BytePtr
|
||||
sta SLIST.BytePtr
|
||||
bcc .8
|
||||
|
||||
inc SLIST.BlockPtr
|
||||
lda SLIST.BlockPtr
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPSListDBlkPtr
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
SLIST.GetDataLen
|
||||
jsr SLIST.GetNextByte Get DataLenLo
|
||||
sta SLIST.DataLen
|
||||
jsr SLIST.GetNextByte Get DataLenHI
|
||||
sta SLIST.DataLen+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.GetNextByte
|
||||
ldy SLIST.BytePtr
|
||||
lda (ZPSListDBlkPtr),y
|
||||
inc SLIST.BytePtr
|
||||
bne .8
|
||||
|
||||
pha
|
||||
inc SLIST.BlockPtr
|
||||
lda SLIST.BlockPtr
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPSListDBlkPtr
|
||||
pla
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
SLIST.GetNextBlockByte
|
||||
phy
|
||||
ldy SLIST.BlockOfs
|
||||
ldy SLIST.BytePtr
|
||||
iny
|
||||
beq .1
|
||||
|
||||
lda (ZPSListDBlkPtr),y
|
||||
sty SLIST.BlockOfs
|
||||
sty SLIST.BlockPtr
|
||||
ply
|
||||
rts
|
||||
|
||||
.1 ldy SLIST.IndexOfs
|
||||
.1 ldy SLIST.BytePtr
|
||||
iny
|
||||
lda (ZPSListIBlkPtr),y
|
||||
beq .9 Exit with A=0
|
||||
|
||||
sty SLIST.IndexOfs
|
||||
sty SLIST.BytePtr
|
||||
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPSListDBlkPtr
|
||||
stz SLIST.BlockOfs
|
||||
stz SLIST.BlockPtr
|
||||
|
||||
lda (ZPSListDBlkPtr)
|
||||
.9 ply
|
||||
@ -307,16 +397,16 @@ SLIST.GetNextBlockByte
|
||||
|
||||
SLIST.GetBlockByte
|
||||
phy
|
||||
ldy SLIST.BlockOfs
|
||||
ldy SLIST.BlockPtr
|
||||
lda (ZPSListDBlkPtr),y
|
||||
ply
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.AddBlockByte
|
||||
phy
|
||||
ldy SLIST.BlockOfs
|
||||
ldy SLIST.BytePtr
|
||||
sta (ZPSListDBlkPtr),y
|
||||
inc SLIST.BlockOfs
|
||||
inc SLIST.BytePtr
|
||||
bne .8
|
||||
|
||||
phx
|
||||
@ -326,11 +416,11 @@ SLIST.AddBlockByte
|
||||
>STYA ZPSListDBlkPtr
|
||||
txa
|
||||
|
||||
inc SLIST.IndexOfs
|
||||
ldy SLIST.IndexOfs
|
||||
inc SLIST.BlockPtr
|
||||
ldy SLIST.BlockPtr
|
||||
sta (ZPSListIBlkPtr),y
|
||||
|
||||
* stz SLIST.BlockOfs
|
||||
* stz SLIST.BytePtr
|
||||
|
||||
plx
|
||||
|
||||
@ -344,27 +434,31 @@ SLIST.AddBlockByte
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.SetBlockByte
|
||||
phy
|
||||
ldy SLIST.BlockOfs
|
||||
ldy SLIST.BlockPtr
|
||||
sta (ZPSListDBlkPtr),y
|
||||
inc SLIST.BlockOfs
|
||||
inc SLIST.BlockPtr
|
||||
bne .8
|
||||
|
||||
inc SLIST.IndexOfs
|
||||
inc SLIST.BytePtr
|
||||
|
||||
ldy SLIST.IndexOfs
|
||||
ldy SLIST.BytePtr
|
||||
lda (ZPSListIBlkPtr),y
|
||||
beq *
|
||||
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPSListDBlkPtr
|
||||
* stz SLIST.BlockOfs
|
||||
* stz SLIST.BlockPtr
|
||||
|
||||
.8 ply
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.KeyLen .BS 1
|
||||
SLIST.IndexOfs .BS 1
|
||||
SLIST.BlockOfs .BS 1
|
||||
SLIST.DataLen .BS 2
|
||||
SLIST.nDataCnt .BS 2
|
||||
SLIST.nBufCnt .BS 2
|
||||
SLIST.bStringMode .BS 1
|
||||
SLIST.KeyID .EQ *
|
||||
SLIST.BytePtr .BS 1
|
||||
SLIST.BlockPtr .BS 1
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.SLIST
|
||||
|
Loading…
x
Reference in New Issue
Block a user