From 5ed5171f8b835ce9bf618ed3b3772445d6a23f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Wed, 13 Mar 2019 16:29:24 +0000 Subject: [PATCH] Kernel 0.92+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/SH.S.CMD.txt | 56 ++++++++++++++++++++++++++++++---- BIN/SH.S.CORE.txt | 23 ++++++++++++-- BIN/SH.S.txt | 1 + INC/A2osX.I.txt | 2 +- SYS/KERNEL.S.JMP.txt | 2 +- SYS/KERNEL.S.MEM.txt | 13 ++++---- SYS/KERNEL.S.SLIST.txt | 63 +++++++++++++++++++++++---------------- 8 files changed, 118 insertions(+), 42 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 51aab726bf3589efaee74ac57631e8879a6b528e..f644ed2853fcc66942bc877da5b82021171629c7 100644 GIT binary patch delta 26491 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 delta 26482 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 N;7{FA<)SX{{{TbQY7hVb diff --git a/BIN/SH.S.CMD.txt b/BIN/SH.S.CMD.txt index 3c2581e8..996f5321 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -532,8 +532,37 @@ CMD.RD lda (ZPArgVBufPtr) .9 jmp CMD.Exec.CSYN *-------------------------------------- -CMD.FUNC +CMD.FUNC lda (ZPArgVBufPtr) + beq .9 + + jsr CORE.StkGetCtx + bcc .9 NO context allowed + + >LDA.G hFuncList + bne .1 + + >SYSCALL SListNew + bcs .9 + >STA.G hFuncList + +.1 >PUSHW ZPArgVBufPtr + >LDA.G hFuncList + >SYSCALL SListNewKey + bcs .99 + + phy + jsr CORE.StkPush + ply + bcs .99 + tya + jsr CORE.StkPush + bcs .99 + + lda #$C0+C.FUNC + jmp CORE.StkPush + .9 jmp CMD.Exec.CSYN +.99 rts *-------------------------------------- CMD.RETURN .9 jmp CMD.Exec.CSYN @@ -586,6 +615,8 @@ CMD.CASE jsr CORE.StkGetCtx Get context in CORE.Test bcs .9 + tax + and #$3F cmp #C.SWITCH beq .1 @@ -593,7 +624,14 @@ CMD.CASE jsr CORE.StkGetCtx Get context in CORE.Test cmp #C.CASE bne .9 - jsr CORE.StkPull remove C.CASE + txa previous case was true ? + bpl .10 + + jsr EXP.GET skip expression + bcs .9 + rts keep existing context + +.10 jsr CORE.StkPull remove previous C.CASE bra CMD.CASE .1 jsr EXP.GET @@ -639,6 +677,9 @@ CMD.END jsr CORE.StkGetCtx Get context in CORE.Test bcs CMD.END.CSYN and #$3F + cmp #C.FUNC + beq .3 + cmp #C.SWITCH beq .2 @@ -654,6 +695,10 @@ CMD.END jsr CORE.StkGetCtx Get context in CORE.Test jsr CORE.StkPull get hVALUE >SYSCALL freemem rts + +.3 jsr CORE.StkPull remove C.FUNC + jsr CORE.StkPull remove KeyID + jmp CORE.StkPull remove KeyID CMD.END.CSYN jmp CMD.Exec.CSYN *-------------------------------------- @@ -704,10 +749,11 @@ FOR.LIST sec bcs .99 phy - jsr CORE.StkPush Push hLIST + jsr CORE.StkPush Push listPtr + ply bcs .99 - pla - jsr CORE.StkPush Push hLIST + tya + jsr CORE.StkPush Push listptr bcs .99 txa diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index ea9c1396..b7282225 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -9,9 +9,15 @@ CORE.Init >LDYAI 256 >STYA ZPArgVBuf txa >STA.G CORE.hArgVBuf + .9 rts *-------------------------------------- -CORE.Quit >LDA.G CORE.hArgVBuf +CORE.Quit >LDA.G hFuncList + beq .1 + + >SYSCALL SListFree + +.1 >LDA.G CORE.hArgVBuf beq .9 >SYSCALL FreeMem @@ -86,7 +92,7 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping .3 cmp #C.CR beq .80 empty line ? -.10 cmp #'#' commented line? + cmp #'#' commented line? bne .2 .12 jsr CORE.GetNextCharNB @@ -103,7 +109,18 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping clc .9 rts EOL, CS,A=0 -.2 cmp #'.' +.2 jsr CORE.StkGet + bcs .13 + cmp #$C0+C.FUNC + beq .12 + + + + + + +.13 jsr CORE.GetCharNB + cmp #'.' bne .4 ldy #1 diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index fe7914fd..2b05dccd 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -685,6 +685,7 @@ DS.START CORE.STACK .BS CORE.STACK.MAX+1 pData (0 = Stack Ptr) PUSHD.STACK .BS PUSHD.STACK.MAX+1 +hFuncList .BS 1 hInputBuf .BS 1 bReadMode .BS 1 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index a9e06290..e6f6a75c 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -290,7 +290,7 @@ SYS.SListGetData .EQ $F2 SYS.SListSetData .EQ $F4 SYS.SListGetByID .EQ $F6 -SYS.SListAddKey .EQ $F8 +SYS.SListNewKey .EQ $F8 SYS.SListLookup .EQ $FA SYS.SListNew .EQ $FC SYS.SListFree .EQ $FE diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index bf0fdcff..b0f2f3f3 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -151,7 +151,7 @@ K.SYSCALL.JMP .DA K.GetMemStat $00 .DA K.SListSetData .DA K.SListGetByID - .DA K.SListAddKey + .DA K.SListNewKey .DA K.SListLookup .DA K.SListNew .DA K.SListFree diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 58f0f00d..a230b7b9 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -394,6 +394,7 @@ MEM.GetMemByID sta ZPMemMgrSPtr * ## RETURN VALUE * Y,A = Next DataID *\-------------------------------------- +K.SListAddData */-------------------------------------- * # SListGetData * ## ASM @@ -404,6 +405,7 @@ MEM.GetMemByID sta ZPMemMgrSPtr * ## RETURN VALUE * Y,A = Next DataID *\-------------------------------------- +K.SListGetData */-------------------------------------- * # SListSetData * ## ASM @@ -414,8 +416,6 @@ MEM.GetMemByID sta ZPMemMgrSPtr * ## RETURN VALUE * Y,A = Next DataID *\-------------------------------------- -K.SListAddData -K.SListGetData K.SListSetData pha >PULLW ZPSListID bra K.SListPullA @@ -434,16 +434,15 @@ K.SListGetByID pha >PULLW ZPSListKeyPtr bra K.SListPullA */-------------------------------------- -* # SListAddKey +* # SListNewKey * ## ASM * `PUSHW KeyPtr` * `lda hSList` -* `>SYSCALL SListAddKey` +* `>SYSCALL SListNewKey` * ## RETURN VALUE -* A = Key Length -* X,Y = KeyID +* Y,A = KeyID *\-------------------------------------- -K.SListAddKey +K.SListNewKey */-------------------------------------- * # SListLookup * ## ASM diff --git a/SYS/KERNEL.S.SLIST.txt b/SYS/KERNEL.S.SLIST.txt index ce531ef7..0202e05b 100644 --- a/SYS/KERNEL.S.SLIST.txt +++ b/SYS/KERNEL.S.SLIST.txt @@ -3,14 +3,16 @@ PREFIX AUTO 4,1 *-------------------------------------- X.SLIST jmp (.1-SYS.SListAddData,x) -.1 .DA SLIST.Add - .DA SLIST.Lookup +.1 .DA SLIST.AddData + .DA SLIST.GetData + .DA SLIST.SetData .DA SLIST.GetByID - .DA SLIST.UpdateByID + .DA SLIST.NewKey + .DA SLIST.Lookup .DA SLIST.New .DA SLIST.Free *-------------------------------------- -SLIST.Add jsr SLIST.Search +SLIST.AddData jsr SLIST.Search bcc .99 Lookup succeeded...DUP ldy #$ff @@ -60,28 +62,13 @@ SLIST.Add jsr SLIST.Search ldy ZPSListID+1 .9 rts + *-------------------------------------- -SLIST.Lookup jsr SLIST.Search - - bcs .9 - - sty .8+1 Save Key Length - - jsr SLIST.GetBlockByte - tax - jsr MEM.SetDataByte - -.1 jsr SLIST.GetNextBlockByte - jsr MEM.SetDataByte - dex - bne .1 - -.8 lda #$ff SELF MODIFIED - ldx ZPSListID - ldy ZPSListID+1 - - clc -.9 rts +SLIST.GetData +*-------------------------------------- +SLIST.SetData + clc + rts *-------------------------------------- SLIST.GetByID jsr SLIST.Select @@ -120,6 +107,10 @@ SLIST.GetByID jsr SLIST.Select ldy SLIST.IndexOfs rts *-------------------------------------- +SLIST.NewKey + clc + rts +*-------------------------------------- SLIST.UpdateByID jsr SLIST.Select @@ -145,6 +136,28 @@ SLIST.UpdateByID clc rts *-------------------------------------- +SLIST.Lookup jsr SLIST.Search + + bcs .9 + + sty .8+1 Save Key Length + + jsr SLIST.GetBlockByte + tax + jsr MEM.SetDataByte + +.1 jsr SLIST.GetNextBlockByte + jsr MEM.SetDataByte + dex + bne .1 + +.8 lda #$ff SELF MODIFIED + ldx ZPSListID + ldy ZPSListID+1 + + clc +.9 rts +*-------------------------------------- SLIST.New >LDYAI 160 40k Max before out of memory!!! jsr K.GetMem0 bcs .9