Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-08-21 15:12:47 +02:00
parent c982c8fb9c
commit 6286ac371c
6 changed files with 74 additions and 76 deletions

View File

@ -325,7 +325,7 @@ Return float rounded into a long
A = hMem To Free A = hMem To Free
**Out:** **Out:**
none. none.
(X,Y unmodified) (X unmodified)
# GetMemPtr # GetMemPtr
**In:** **In:**
@ -339,7 +339,7 @@ Return float rounded into a long
A = hMem A = hMem
**Out:** **Out:**
Y,A = ZPMemMgrSPtr = PTR to S.MEM Y,A = ZPMemMgrSPtr = PTR to S.MEM
X unmodified (X unmodified)
# NewStr # NewStr
Create a new copy of this C-String Create a new copy of this C-String
@ -883,7 +883,7 @@ Convert String to 16 bits int
**Out:** **Out:**
Y,A = int Y,A = int
# realpath # RealPath
Return the canonicalized absolute pathname Return the canonicalized absolute pathname
## C ## C

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -52,6 +52,8 @@ CS.INIT lda #0
>LEA.G MemStat >LEA.G MemStat
>SYSCALL GetMemStat >SYSCALL GetMemStat
* >LDA.G MemStat+S.MSTAT.MLast
* >DEBUG
* lda (pPs) * lda (pPs)
* ora #S.PS.F.EVENT Now accept events * ora #S.PS.F.EVENT Now accept events
* sta (pPs) * sta (pPs)
@ -76,6 +78,7 @@ CS.RUN >SYSCALL GetChar
.13 >LDA.G bSTOP .13 >LDA.G bSTOP
bne .8 bne .8
>INC.G MEM.COUNT >INC.G MEM.COUNT
>SYSCALL GetMemByID >SYSCALL GetMemByID
>STYA ZPPTR1 >STYA ZPPTR1
@ -193,9 +196,10 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN+1
.12 >LDYA L.MSG1 .12 >LDYA L.MSG1
>SYSCALL printf >SYSCALL printf
ldy #S.MEM.BIN lda (ZPPTR1)
lda (ZPPTR1),y and #S.MEM.F.CODE
bne .7 bne .7
****** DATA ****** DATA
ldy #S.MEM.PTR ldy #S.MEM.PTR
lda (ZPPTR1),y lda (ZPPTR1),y
@ -232,7 +236,9 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN+1
>LDYA L.MSG1.HEX >LDYA L.MSG1.HEX
bra .8 bra .8
****** BIN ****** BIN
.7 >SYSCALL GetMemPtr .7 ldy #S.MEM.BIN
lda (ZPPTR1),y
>SYSCALL GetMemPtr
>PUSHYA >PUSHYA
>LDYA L.MSG1.BIN >LDYA L.MSG1.BIN

View File

@ -100,6 +100,9 @@ MEM.GetMem.YAX stx Mem.ReqFlags
jsr Mem.AddSlot X = new slot jsr Mem.AddSlot X = new slot
bcs .9 bcs .9
lda #S.MEM.F.ALIGN Make sure marked FREE
sta (ZPMemMgrSPtr)
.6 >LDYA ZPMemMgrSize .6 >LDYA ZPMemMgrSize
jsr Mem.AddSlot X = new slot jsr Mem.AddSlot X = new slot
bcs .9 bcs .9
@ -234,10 +237,9 @@ Mem.NextSlot lda ZPMemMgrSPtr
* A = hMem To Free * A = hMem To Free
* **Out:** * **Out:**
* none. * none.
* (X,Y unmodified) * (X unmodified)
*\-------------------------------------- *\--------------------------------------
K.FreeMem phy K.FreeMem tay
tay
beq * Slot=0, reserved by Kernel beq * Slot=0, reserved by Kernel
@ -255,12 +257,13 @@ K.FreeMem phy
sta (ZPMemMgrSPtr),y sta (ZPMemMgrSPtr),y
bne .8 no, must be a code segment loaded several times bne .8 no, must be a code segment loaded several times
* lda #0 lda (ZPMemMgrSPtr)
sta (ZPMemMgrSPtr) mark this slot as free and #S.MEM.F.CODE CS: Any BINPATH to discard ?
sta (ZPMemMgrSPtr) Mark as FREE
beq .1
ldy #S.MEM.BIN ldy #S.MEM.BIN
lda (ZPMemMgrSPtr),y Any BINPATH to discard ? lda (ZPMemMgrSPtr),y
beq .1
jsr K.GetMemByID X unmodified jsr K.GetMemByID X unmodified
lda (ZPMemMgrSPtr) lda (ZPMemMgrSPtr)
@ -277,7 +280,7 @@ K.FreeMem phy
bmi .8 used, exit bmi .8 used, exit
.2 dec Mem.LastSlot free! get previous.... .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 lda Mem.LastSlot
jsr K.GetMemByID X unmodified jsr K.GetMemByID X unmodified
@ -291,17 +294,15 @@ K.FreeMem phy
lda (ZPMemMgrSPtr),y lda (ZPMemMgrSPtr),y
sta Mem.Free+1 sta Mem.Free+1
.8 ply .8 clc
clc
rts rts
.3 >LDYA Mem.HiMem .80 >LDYA Mem.HiMem
>STYA Mem.Free >STYA Mem.Free
bra .8 clc
rts
*-------------------------------------- *--------------------------------------
.9 ply discard saved Y .9 lda $D000
lda $D000
sta .91+1 sta .91+1
bit RRAMWRAMBNK2 bit RRAMWRAMBNK2
bit RRAMWRAMBNK2 bit RRAMWRAMBNK2
@ -336,22 +337,6 @@ K.FreeMem.ERR .AZ "FreeMem:%H:hMem already freed."
* Y,A = PTR to MemBlock * Y,A = PTR to MemBlock
* (X unmodified) * (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
*\--------------------------------------
* Optimized for : * Optimized for :
* Mem.Table is page aligned at $1800 * Mem.Table is page aligned at $1800
* S.MEM is 8 bytes * S.MEM is 8 bytes
@ -365,6 +350,31 @@ K.GetMemPtr jsr K.GetMemByID
!!!!!WARNING!!!!! !!!!!WARNING!!!!!
.FIN .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 K.GetMemByID sta ZPMemMgrSPtr
lda /Mem.Table/8 lda /Mem.Table/8
asl ZPMemMgrSPtr asl ZPMemMgrSPtr
@ -376,24 +386,6 @@ K.GetMemByID sta ZPMemMgrSPtr
sta ZPMemMgrSPtr+1 sta ZPMemMgrSPtr+1
ldy ZPMemMgrSPtr ldy ZPMemMgrSPtr
rts 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 * # NewStr
* Create a new copy of this C-String * Create a new copy of this C-String