mirror of https://github.com/A2osX/A2osX.git
Kernel 0.9.1 : KERNEL, better SList API for Symbol Dump
This commit is contained in:
parent
4f2ee9a6bd
commit
9d5ad1ee19
|
@ -284,6 +284,17 @@ Create a new copy of this C-String
|
|||
+ CS : error
|
||||
+ A = SYS error code
|
||||
|
||||
# SListGetByID
|
||||
|
||||
## In:
|
||||
+ PUSHB = hSList
|
||||
+ PUSHW = Key Ptr
|
||||
+ PUSHW = Data Ptr
|
||||
+ PUSHW = KeyID
|
||||
|
||||
## Out:
|
||||
+ X,Y = Next KeyID
|
||||
|
||||
# SListAdd
|
||||
|
||||
## In:
|
||||
|
@ -306,16 +317,6 @@ Create a new copy of this C-String
|
|||
+ A = Key Length
|
||||
+ X,Y = KeyID
|
||||
|
||||
# SListGetByID
|
||||
|
||||
## In:
|
||||
+ PUSHB = hSList
|
||||
+ PUSHW = KeyID
|
||||
+ PUSHW = Data Ptr (KEY+DATA)
|
||||
|
||||
## Out:
|
||||
+ X,Y = Next KeyID
|
||||
|
||||
# SListUpdateByID
|
||||
|
||||
## In:
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -79,56 +79,76 @@ SYM.Dump stz ZPLinePtr
|
|||
.1 >PUSHB.G SYM.hGlobalList
|
||||
>PUSHW ZPLinePtr
|
||||
>PUSHW ZPGlobalBuf
|
||||
>PUSHW ZPNameBuf
|
||||
>SYSCALL SListGetByID
|
||||
bcs .8
|
||||
bcc .10
|
||||
|
||||
stx ZPLinePtr Save Next ID
|
||||
clc
|
||||
rts
|
||||
|
||||
.10 stx ZPLinePtr Save Next ID
|
||||
sty ZPLinePtr+1
|
||||
|
||||
>LDA.G ASM.LI.ON
|
||||
bpl .1
|
||||
|
||||
lda (ZPGlobalBuf)
|
||||
sec
|
||||
adc ZPGlobalBuf
|
||||
sta ZPPtr1
|
||||
lda ZPGlobalBuf+1
|
||||
adc #0
|
||||
sta ZPPtr1+1
|
||||
|
||||
ldy #SYMG.F Get Symbol Size
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPGlobalBuf),y
|
||||
and #SYMG.F.SIZE
|
||||
|
||||
tax
|
||||
beq .3
|
||||
|
||||
asl
|
||||
pha
|
||||
tax
|
||||
|
||||
iny SYMG.V
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
|
||||
.2 iny
|
||||
lda (ZPGlobalBuf),y
|
||||
>PUSHA
|
||||
iny
|
||||
dex
|
||||
bne .2
|
||||
|
||||
pla
|
||||
asl
|
||||
plx
|
||||
|
||||
.3 tax
|
||||
ldy L.MSG.EQU0,x
|
||||
.3 ldy L.MSG.EQU0,x
|
||||
lda L.MSG.EQU0+1,x
|
||||
>SYSCALL PrintF.YA
|
||||
|
||||
>PUSHW ZPGlobalBuf Label (PString)
|
||||
>PUSHW ZPNameBuf Label (PString)
|
||||
|
||||
>LDYA L.MSG.PSTRCRLF
|
||||
>LDYA L.MSG.PSTR
|
||||
>SYSCALL PrintF.YA
|
||||
bcs .9
|
||||
>DEBUG
|
||||
ldy #SYMG.SIZE-1
|
||||
|
||||
.4 tya
|
||||
|
||||
cmp (ZPGlobalBuf)
|
||||
beq .7 No Local Symbol
|
||||
|
||||
iny
|
||||
lda (ZPGlobalBuf),y Get ID
|
||||
pha
|
||||
|
||||
ldx #4
|
||||
|
||||
.5 iny
|
||||
lda (ZPGlobalBuf),y
|
||||
>PUSHA
|
||||
dex
|
||||
bne .5
|
||||
|
||||
pla
|
||||
>PUSHA
|
||||
phy
|
||||
>LDYA L.MSG.PSTR
|
||||
>SYSCALL PrintF.YA
|
||||
ply
|
||||
bne .4
|
||||
|
||||
.7 >LDYA L.MSG.CRLF
|
||||
>SYSCALL PrintF.YA
|
||||
jmp .1
|
||||
rts
|
||||
|
||||
|
|
|
@ -101,10 +101,13 @@ L.MSG.EQU0 .DA MSG.EQU0
|
|||
.DA MSG.EQU2
|
||||
.DA MSG.EQU3
|
||||
.DA MSG.EQU4
|
||||
L.MSG.LSYMBOL .DA MSG.LSYMBOL
|
||||
L.MSG.SRCLINE .DA MSG.SRCLINE
|
||||
L.MSG.ERROR .DA MSG.ERROR
|
||||
L.MSG.SYMBOLS .DA MSG.SYMBOLS
|
||||
L.MSG.PSTRCRLF .DA MSG.PSTRCRLF
|
||||
L.MSG.PSTR .DA MSG.PSTR
|
||||
L.MSG.CRLF .DA MSG.CRLF
|
||||
L.MSG.SUMMARY .DA MSG.SUMMARY
|
||||
L.MSG.PASS .DA MSG.PASS
|
||||
L.MSG.SRC.FILE .DA MSG.SRC.FILE
|
||||
|
@ -424,10 +427,13 @@ MSG.EQU1 .AZ " [ %h]"
|
|||
MSG.EQU2 .AZ " [ %h%h]"
|
||||
MSG.EQU3 .AZ " [ %h%h%h]"
|
||||
MSG.EQU4 .AZ " [%h%h%h%h]"
|
||||
MSG.LSYMBOL .AZ ", .%d %h%h%h%h"
|
||||
MSG.SRCLINE .AZ " %05D %s\r\n"
|
||||
MSG.ERROR .AZ "*** Fatal Error $%h "
|
||||
MSG.SYMBOLS .AZ "Symbol Table:\r\n"
|
||||
MSG.PSTRCRLF .AZ " %S\r\n"
|
||||
MSG.PSTR .AZ " %S"
|
||||
MSG.CRLF .AZ " \r\n"
|
||||
MSG.SUMMARY .AZ "\r\nSymbol Table Size : %5D Bytes.\r\nEnd Of Assembly.\r\n"
|
||||
SRC.MOD.RESERVED >PSTR "#/^<>"
|
||||
SRC.EXP.RESERVED >PSTR "^!|&<=>+-*/"
|
||||
|
|
|
@ -4,13 +4,12 @@ AUTO 4,1
|
|||
*--------------------------------------
|
||||
ZPMemMgrSPtr .EQ ZPMEMMGR Pointer To Slot selected
|
||||
ZPMemMgrTmp1 .EQ ZPMEMMGR+2
|
||||
Mem.ReqSize .EQ ZPMEMMGR+4 store requested Size
|
||||
Mem.ReqFlags .EQ ZPMEMMGR+6 store requested Flags
|
||||
|
||||
ZPSListBlock .EQ ZPMEMMGR+8
|
||||
ZPSListIndex .EQ ZPMEMMGR+10
|
||||
ZPSListKey .EQ ZPMEMMGR+12
|
||||
ZPSListData .EQ ZPMEMMGR+14
|
||||
ZPSListID .EQ ZPMEMMGR+6
|
||||
ZPSListIBlkPtr .EQ ZPMEMMGR+8
|
||||
ZPSListDBlkPtr .EQ ZPMEMMGR+10
|
||||
ZPSListKeyPtr .EQ ZPMEMMGR+12
|
||||
ZPSListDataPtr .EQ ZPMEMMGR+14
|
||||
*--------------------------------------
|
||||
* TODO :
|
||||
* - Create a 256 bytes table
|
||||
|
@ -210,6 +209,9 @@ MEM.GetMem.YAX stx Mem.ReqFlags
|
|||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
Mem.ReqSize .BS 2 store requested Size
|
||||
Mem.ReqFlags .BS 1 store requested Flags
|
||||
*--------------------------------------
|
||||
* Mem.AddSlot
|
||||
* In:
|
||||
* Y,A = Requested size
|
||||
|
@ -484,6 +486,31 @@ K.NewStr.YA >STYA .1+1
|
|||
clc
|
||||
.9 rts
|
||||
*/--------------------------------------
|
||||
* # SListGetByID
|
||||
* ## In:
|
||||
* PUSHB = hSList
|
||||
* PUSHW = KeyID
|
||||
* PUSHW = Data Ptr
|
||||
* PUSHW = Key Ptr
|
||||
* ## Out:
|
||||
* X,Y = Next KeyID
|
||||
*\--------------------------------------
|
||||
K.SListGetByID >PULLW ZPSListKeyPtr
|
||||
*/--------------------------------------
|
||||
* # SListUpdateByID
|
||||
* ## In:
|
||||
* PUSHB = hSList
|
||||
* PUSHW = KeyID
|
||||
* PUSHW = Data Ptr
|
||||
* ## Out:
|
||||
* A = Key Length
|
||||
* X,Y = KeyID
|
||||
*\--------------------------------------
|
||||
K.SListUpdateByID
|
||||
>PULLW ZPSListDataPtr
|
||||
>PULLW ZPSListID
|
||||
bra K.SListPullH
|
||||
*/--------------------------------------
|
||||
* # SListAdd
|
||||
* ## In:
|
||||
* PUSHB = hSList
|
||||
|
@ -505,31 +532,10 @@ K.SListAdd
|
|||
* X,Y = KeyID
|
||||
*\--------------------------------------
|
||||
K.SListLookup
|
||||
*/--------------------------------------
|
||||
* # SListGetByID
|
||||
* ## In:
|
||||
* PUSHB = hSList
|
||||
* PUSHW = KeyID
|
||||
* PUSHW = Data Ptr (KEY+DATA)
|
||||
* ## Out:
|
||||
* X,Y = Next KeyID
|
||||
*\--------------------------------------
|
||||
K.SListGetByID
|
||||
*/--------------------------------------
|
||||
* # SListUpdateByID
|
||||
* ## In:
|
||||
* PUSHB = hSList
|
||||
* PUSHW = KeyID
|
||||
* PUSHW = Data Ptr
|
||||
* ## Out:
|
||||
* A = Key Length
|
||||
* X,Y = KeyID
|
||||
*\--------------------------------------
|
||||
K.SListUpdateByID
|
||||
*--------------------------------------
|
||||
>PULLW ZPSListData
|
||||
>PULLW ZPSListKey
|
||||
>PULLA
|
||||
>PULLW ZPSListDataPtr
|
||||
>PULLW ZPSListKeyPtr
|
||||
K.SListPullH >PULLA
|
||||
*/--------------------------------------
|
||||
* # SListNew
|
||||
* ## In:
|
||||
|
@ -553,7 +559,7 @@ K.SListFree.A
|
|||
rts
|
||||
*--------------------------------------
|
||||
MEM.GetKeyCharY sta CLRREADAUX
|
||||
lda (ZPSListKey),y
|
||||
lda (ZPSListKeyPtr),y
|
||||
sta SETREADAUX
|
||||
beq .9
|
||||
|
||||
|
@ -585,22 +591,22 @@ MEM.GetKeyCharY sta CLRREADAUX
|
|||
rts
|
||||
*--------------------------------------
|
||||
MEM.SetKeyCharY sta CLRWRITEAUX
|
||||
sta (ZPSListKey),y
|
||||
sta (ZPSListKeyPtr),y
|
||||
sta SETWRITEAUX
|
||||
rts
|
||||
*--------------------------------------
|
||||
MEM.GetDataByte sta CLRREADAUX
|
||||
lda (ZPSListData)
|
||||
lda (ZPSListDataPtr)
|
||||
sta SETREADAUX
|
||||
bra MEM.SetDataByte.1
|
||||
*--------------------------------------
|
||||
MEM.SetDataByte sta CLRWRITEAUX
|
||||
sta (ZPSListData)
|
||||
sta (ZPSListDataPtr)
|
||||
sta SETWRITEAUX
|
||||
MEM.SetDataByte.1
|
||||
inc ZPSListData
|
||||
inc ZPSListDataPtr
|
||||
bne .8
|
||||
inc ZPSListData+1
|
||||
inc ZPSListDataPtr+1
|
||||
.8 rts
|
||||
*/--------------------------------------
|
||||
* # LoadStkObj
|
||||
|
|
|
@ -56,8 +56,8 @@ SLIST.Add jsr SLIST.Search
|
|||
.HS B0 BCS
|
||||
|
||||
.99 sec
|
||||
ldx SLIST.ID
|
||||
ldy SLIST.ID+1
|
||||
ldx ZPSListID
|
||||
ldy ZPSListID+1
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
@ -77,8 +77,8 @@ SLIST.Lookup jsr SLIST.Search
|
|||
bne .1
|
||||
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
ldx SLIST.ID
|
||||
ldy SLIST.ID+1
|
||||
ldx ZPSListID
|
||||
ldy ZPSListID+1
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
|
@ -90,10 +90,13 @@ SLIST.GetByID jsr SLIST.Select
|
|||
tax
|
||||
beq .9
|
||||
|
||||
jsr MEM.SetDataByte
|
||||
ldy #0
|
||||
|
||||
jsr MEM.SetKeyCharY
|
||||
|
||||
.1 jsr SLIST.GetNextBlockByte
|
||||
jsr MEM.SetDataByte
|
||||
iny
|
||||
jsr MEM.SetKeyCharY
|
||||
dex
|
||||
bne .1
|
||||
|
||||
|
@ -145,14 +148,14 @@ SLIST.UpdateByID
|
|||
SLIST.New >LDYAI 160 40k Max before out of memory!!!
|
||||
jsr K.GetMem0.YA
|
||||
bcs .9
|
||||
>STYA ZPSListIndex
|
||||
>STYA ZPSListIBlkPtr
|
||||
stx .8+1
|
||||
|
||||
>LDYAI 256
|
||||
jsr K.GetMem0.YA
|
||||
bcs .9
|
||||
txa
|
||||
sta (ZPSListIndex)
|
||||
sta (ZPSListIBlkPtr)
|
||||
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
|
||||
|
@ -175,31 +178,31 @@ SLIST.Free.A sta .8+1
|
|||
jmp K.FreeMem.A
|
||||
*--------------------------------------
|
||||
SLIST.Select jsr K.GetMemPtr.A
|
||||
>STYA ZPSListIndex
|
||||
>STYA ZPSListIBlkPtr
|
||||
|
||||
ldy ZPSListKey+1
|
||||
ldy ZPSListID+1
|
||||
sty SLIST.IndexOfs
|
||||
|
||||
lda (ZPSListIndex),y
|
||||
lda (ZPSListIBlkPtr),y
|
||||
jsr K.GetMemPtr.A
|
||||
>STYA ZPSListBlock
|
||||
>STYA ZPSListDBlkPtr
|
||||
|
||||
lda ZPSListKey
|
||||
lda ZPSListID
|
||||
sta SLIST.BlockOfs
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.Search jsr K.GetMemPtr.A
|
||||
>STYA ZPSListIndex
|
||||
>STYA ZPSListIBlkPtr
|
||||
|
||||
stz SLIST.IndexOfs
|
||||
stz SLIST.ID+1
|
||||
stz ZPSListID+1
|
||||
|
||||
lda (ZPSListIndex)
|
||||
lda (ZPSListIBlkPtr)
|
||||
jsr K.GetMemPtr.A
|
||||
>STYA ZPSListBlock
|
||||
>STYA ZPSListDBlkPtr
|
||||
|
||||
stz SLIST.BlockOfs
|
||||
stz SLIST.ID
|
||||
stz ZPSListID
|
||||
|
||||
jsr SLIST.GetBlockByte
|
||||
tax
|
||||
|
@ -245,9 +248,9 @@ SLIST.Search jsr K.GetMemPtr.A
|
|||
jsr SLIST.GetNextBlockByte
|
||||
|
||||
ldx SLIST.IndexOfs
|
||||
stx SLIST.ID+1
|
||||
stx ZPSListID+1
|
||||
ldx SLIST.BlockOfs
|
||||
stx SLIST.ID
|
||||
stx ZPSListID
|
||||
|
||||
tax
|
||||
bne .1
|
||||
|
@ -261,37 +264,37 @@ SLIST.GetNextBlockByte
|
|||
iny
|
||||
beq .1
|
||||
|
||||
lda (ZPSListBlock),y
|
||||
lda (ZPSListDBlkPtr),y
|
||||
sty SLIST.BlockOfs
|
||||
ply
|
||||
rts
|
||||
|
||||
.1 ldy SLIST.IndexOfs
|
||||
iny
|
||||
lda (ZPSListIndex),y
|
||||
lda (ZPSListIBlkPtr),y
|
||||
beq .9 Exit with A=0
|
||||
|
||||
sty SLIST.IndexOfs
|
||||
|
||||
jsr K.GetMemPtr.A
|
||||
>STYA ZPSListBlock
|
||||
>STYA ZPSListDBlkPtr
|
||||
stz SLIST.BlockOfs
|
||||
|
||||
lda (ZPSListBlock)
|
||||
lda (ZPSListDBlkPtr)
|
||||
.9 ply
|
||||
rts
|
||||
|
||||
SLIST.GetBlockByte
|
||||
phy
|
||||
ldy SLIST.BlockOfs
|
||||
lda (ZPSListBlock),y
|
||||
lda (ZPSListDBlkPtr),y
|
||||
ply
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.AddBlockByte
|
||||
phy
|
||||
ldy SLIST.BlockOfs
|
||||
sta (ZPSListBlock),y
|
||||
sta (ZPSListDBlkPtr),y
|
||||
inc SLIST.BlockOfs
|
||||
bne .8
|
||||
|
||||
|
@ -299,12 +302,12 @@ SLIST.AddBlockByte
|
|||
>LDYAI 256
|
||||
jsr K.GetMem0.YA
|
||||
bcs .9
|
||||
>STYA ZPSListBlock
|
||||
>STYA ZPSListDBlkPtr
|
||||
txa
|
||||
|
||||
inc SLIST.IndexOfs
|
||||
ldy SLIST.IndexOfs
|
||||
sta (ZPSListIndex),y
|
||||
sta (ZPSListIBlkPtr),y
|
||||
|
||||
* stz SLIST.BlockOfs
|
||||
|
||||
|
@ -322,17 +325,17 @@ SLIST.AddBlockByte
|
|||
SLIST.SetBlockByte
|
||||
phy
|
||||
ldy SLIST.BlockOfs
|
||||
sta (ZPSListBlock),y
|
||||
sta (ZPSListDBlkPtr),y
|
||||
inc SLIST.BlockOfs
|
||||
bne .8
|
||||
|
||||
inc SLIST.IndexOfs
|
||||
|
||||
ldy SLIST.IndexOfs
|
||||
lda (ZPSListIndex),y
|
||||
lda (ZPSListIBlkPtr),y
|
||||
beq *
|
||||
jsr K.GetMemPtr.A
|
||||
>STYA ZPSListBlock
|
||||
>STYA ZPSListDBlkPtr
|
||||
* stz SLIST.BlockOfs
|
||||
|
||||
.8 ply
|
||||
|
@ -340,7 +343,6 @@ SLIST.SetBlockByte
|
|||
*--------------------------------------
|
||||
SLIST.IndexOfs .BS 1
|
||||
SLIST.BlockOfs .BS 1
|
||||
SLIST.ID .BS 2
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/SYS/KERNEL.S.SLIST
|
||||
|
|
Loading…
Reference in New Issue