Kernel 0.9.1 : KERNEL, better SList API for Symbol Dump

This commit is contained in:
Rémy GIBERT 2018-03-30 16:21:42 +01:00
parent 4f2ee9a6bd
commit 9d5ad1ee19
7 changed files with 136 additions and 101 deletions

View File

@ -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.

View File

@ -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

View File

@ -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 "^!|&<=>+-*/"

View File

@ -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

View File

@ -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