From 6286ac371c9bfe8625d3085bd90b4eecda5a89c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 21 Aug 2018 15:12:47 +0200 Subject: [PATCH] Kernel 0.9.2 --- .Docs/KERNEL.md | 28 +++++----- .Floppies/A2OSX.BOOT.po | Bin 143360 -> 143360 bytes .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/MEMDUMP.S.txt | 12 +++-- SYS/KERNEL.S.MEM.txt | 110 ++++++++++++++++++--------------------- 6 files changed, 74 insertions(+), 76 deletions(-) diff --git a/.Docs/KERNEL.md b/.Docs/KERNEL.md index 691001db..bb491299 100644 --- a/.Docs/KERNEL.md +++ b/.Docs/KERNEL.md @@ -325,32 +325,32 @@ Return float rounded into a long A = hMem To Free **Out:** none. - (X,Y unmodified) + (X unmodified) # GetMemPtr **In:** - A = hMem +A = hMem **Out:** - Y,A = PTR to MemBlock - (X unmodified) +Y,A = PTR to MemBlock +(X unmodified) # GetMemByID **In:** - A = hMem +A = hMem **Out:** - Y,A = ZPMemMgrSPtr = PTR to S.MEM - X unmodified +Y,A = ZPMemMgrSPtr = PTR to S.MEM +(X unmodified) # NewStr Create a new copy of this C-String **In:** - Y,A = Ptr to source C-String +Y,A = Ptr to source C-String **Out:** - CC : success - Y,A = PTR to String - X = hMem (PSTR) - CS : error - A = SYS error code +CC : success + Y,A = PTR to String + X = hMem (PSTR) +CS : error + A = SYS error code # SListGetByID **In:** @@ -883,7 +883,7 @@ Convert String to 16 bits int **Out:** Y,A = int -# realpath +# RealPath Return the canonicalized absolute pathname ## C diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index 6884c18c5965c20e7377164e6b545a7bc1335dce..c9cd0dbdf96ba4d5e96693ab98024e11b2d1942f 100644 GIT binary patch delta 28008 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 delta 26964 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 SYFe@izaCU`XR_GMCmy(Nkm9Idkl@ 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 M$sN4xFfVWY2jI=&aR2}S delta 4853 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 diff --git a/BIN/MEMDUMP.S.txt b/BIN/MEMDUMP.S.txt index f0da59c2..e1a5a7ab 100644 --- a/BIN/MEMDUMP.S.txt +++ b/BIN/MEMDUMP.S.txt @@ -52,6 +52,8 @@ CS.INIT lda #0 >LEA.G MemStat >SYSCALL GetMemStat +* >LDA.G MemStat+S.MSTAT.MLast +* >DEBUG * lda (pPs) * ora #S.PS.F.EVENT Now accept events * sta (pPs) @@ -76,6 +78,7 @@ CS.RUN >SYSCALL GetChar .13 >LDA.G bSTOP bne .8 + >INC.G MEM.COUNT >SYSCALL GetMemByID >STYA ZPPTR1 @@ -193,9 +196,10 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN+1 .12 >LDYA L.MSG1 >SYSCALL printf - ldy #S.MEM.BIN - lda (ZPPTR1),y + lda (ZPPTR1) + and #S.MEM.F.CODE bne .7 + ****** DATA ldy #S.MEM.PTR lda (ZPPTR1),y @@ -232,7 +236,9 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN+1 >LDYA L.MSG1.HEX bra .8 ****** BIN -.7 >SYSCALL GetMemPtr +.7 ldy #S.MEM.BIN + lda (ZPPTR1),y + >SYSCALL GetMemPtr >PUSHYA >LDYA L.MSG1.BIN diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 4e15d755..e0221794 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -100,6 +100,9 @@ MEM.GetMem.YAX stx Mem.ReqFlags jsr Mem.AddSlot X = new slot bcs .9 + lda #S.MEM.F.ALIGN Make sure marked FREE + sta (ZPMemMgrSPtr) + .6 >LDYA ZPMemMgrSize jsr Mem.AddSlot X = new slot bcs .9 @@ -234,10 +237,9 @@ Mem.NextSlot lda ZPMemMgrSPtr * A = hMem To Free * **Out:** * none. -* (X,Y unmodified) +* (X unmodified) *\-------------------------------------- -K.FreeMem phy - tay +K.FreeMem tay beq * Slot=0, reserved by Kernel @@ -255,13 +257,14 @@ K.FreeMem phy sta (ZPMemMgrSPtr),y bne .8 no, must be a code segment loaded several times -* lda #0 - sta (ZPMemMgrSPtr) mark this slot as free - - ldy #S.MEM.BIN - lda (ZPMemMgrSPtr),y Any BINPATH to discard ? + lda (ZPMemMgrSPtr) + and #S.MEM.F.CODE CS: Any BINPATH to discard ? + sta (ZPMemMgrSPtr) Mark as FREE beq .1 + ldy #S.MEM.BIN + lda (ZPMemMgrSPtr),y + jsr K.GetMemByID X unmodified lda (ZPMemMgrSPtr) bpl * ***MUST BE ALLOCATED*** @@ -277,7 +280,7 @@ K.FreeMem phy bmi .8 used, exit .2 dec Mem.LastSlot free! get previous.... - beq .3 empty list: go set Mem.Free=Mem.HiMem + beq .80 empty list: go set Mem.Free=Mem.HiMem lda Mem.LastSlot jsr K.GetMemByID X unmodified @@ -291,17 +294,15 @@ K.FreeMem phy lda (ZPMemMgrSPtr),y sta Mem.Free+1 -.8 ply - clc +.8 clc rts -.3 >LDYA Mem.HiMem +.80 >LDYA Mem.HiMem >STYA Mem.Free - bra .8 + clc + rts *-------------------------------------- -.9 ply discard saved Y - - lda $D000 +.9 lda $D000 sta .91+1 bit RRAMWRAMBNK2 bit RRAMWRAMBNK2 @@ -331,26 +332,10 @@ K.FreeMem.ERR .AZ "FreeMem:%H:hMem already freed." */-------------------------------------- * # GetMemPtr * **In:** -* A = hMem +* A = hMem * **Out:** -* Y,A = PTR to MemBlock -* (X unmodified) -*\-------------------------------------- -K.GetMemPtr jsr K.GetMemByID - ldy #S.MEM.PTR - lda (ZPMemMgrSPtr),y - pha - iny - lda (ZPMemMgrSPtr),y - ply - rts -*/-------------------------------------- -* # GetMemByID -* **In:** -* A = hMem -* **Out:** -* Y,A = ZPMemMgrSPtr = PTR to S.MEM -* X unmodified +* Y,A = PTR to MemBlock +* (X unmodified) *\-------------------------------------- * Optimized for : * Mem.Table is page aligned at $1800 @@ -365,6 +350,31 @@ K.GetMemPtr jsr K.GetMemByID !!!!!WARNING!!!!! .FIN *-------------------------------------- +K.GetMemPtr sta ZPMemMgrSPtr + lda /Mem.Table/8 + asl ZPMemMgrSPtr + rol + asl ZPMemMgrSPtr + rol + asl ZPMemMgrSPtr + rol + sta ZPMemMgrSPtr+1 + + ldy #S.MEM.PTR + lda (ZPMemMgrSPtr),y + pha + iny + lda (ZPMemMgrSPtr),y + ply + rts +*/-------------------------------------- +* # GetMemByID +* **In:** +* A = hMem +* **Out:** +* Y,A = ZPMemMgrSPtr = PTR to S.MEM +* (X unmodified) +*\-------------------------------------- K.GetMemByID sta ZPMemMgrSPtr lda /Mem.Table/8 asl ZPMemMgrSPtr @@ -376,35 +386,17 @@ K.GetMemByID sta ZPMemMgrSPtr sta ZPMemMgrSPtr+1 ldy ZPMemMgrSPtr rts -*-------------------------------------- -* OLD CODE -*-------------------------------------- -* stz ZPMemMgrSPtr+1 -* asl -* rol ZPMemMgrSPtr+1 -* asl -* rol ZPMemMgrSPtr+1 -* asl -* rol ZPMemMgrSPtr+1 -** clc IMPLICIT -* adc #Mem.Table -* tay -* lda ZPMemMgrSPtr+1 -* adc /Mem.Table -* sty ZPMemMgrSPtr -* sta ZPMemMgrSPtr+1 -* rts */-------------------------------------- * # NewStr * Create a new copy of this C-String * **In:** -* Y,A = Ptr to source C-String +* Y,A = Ptr to source C-String * **Out:** -* CC : success -* Y,A = PTR to String -* X = hMem (PSTR) -* CS : error -* A = SYS error code +* CC : success +* Y,A = PTR to String +* X = hMem (PSTR) +* CS : error +* A = SYS error code *\-------------------------------------- K.NewStr >STYA .1+1 >STYA .4+1