diff --git a/.Docs/KERNEL.md b/.Docs/KERNEL.md index 7267c211..a3ece071 100644 --- a/.Docs/KERNEL.md +++ b/.Docs/KERNEL.md @@ -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: diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index a45e26be..b22dc49a 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 857bc771..ed567b56 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index 620a7604..35b97672 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -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 diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 75866b2e..8902fea3 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -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 "^!|&<=>+-*/" diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 031f193c..8045d71f 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -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 diff --git a/SYS/KERNEL.S.SLIST.txt b/SYS/KERNEL.S.SLIST.txt index f9751f84..e1d08dcd 100644 --- a/SYS/KERNEL.S.SLIST.txt +++ b/SYS/KERNEL.S.SLIST.txt @@ -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