From b87ffebe14d9e61aeb284845daa5ac76315c5774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 1 Nov 2016 22:34:29 +0100 Subject: [PATCH] Kernel version 0.8 : Saved few bytes (& cycles) in MemMgr --- SYS/KERNEL.S.BIN.txt | 2 +- SYS/KERNEL.S.DAT.txt | 4 +- SYS/KERNEL.S.JMP.txt | 2 +- SYS/KERNEL.S.MEM.txt | 139 +++++++++++++++++++------------------------ 4 files changed, 65 insertions(+), 82 deletions(-) diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index e1042ffc..6af3827b 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -14,7 +14,7 @@ AUTO 6 *-------------------------------------- K.LoadEXEYA >STYA K.LoadEXEYA.Filename >SYSCALL PStrUprYA Y,A unmodified - jsr K.GetMemByNameYA + jsr MEM.GetMemByNameYA bcs K.LoadEXEYA.1 not already loaded >STYA ZPQuickPtr1 Save base address diff --git a/SYS/KERNEL.S.DAT.txt b/SYS/KERNEL.S.DAT.txt index de142715..6d9eef24 100644 --- a/SYS/KERNEL.S.DAT.txt +++ b/SYS/KERNEL.S.DAT.txt @@ -5,7 +5,9 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -DevMgr.Free .DA DevMgr.LoMem +DevMgr.Stat .DA DevMgr.LoMem Lomem +DevMgr.Free .DA DevMgr.LoMem Free + .DA DevMgr.HiMem DevMgr.LastDevID .DA #DevMgr.Count-1 TSKMGR.SIZE .BS 1 TSKMGR.LASTID .BS 1 diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 53af375c..627165d5 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -100,7 +100,7 @@ KERNEL.SYSCALL .DA K.FreeMemA .DA K.GetMemPtrA .DA K.GetMemByIDA - .DA K.GetMemByNameYA + .DA 0 .DA K.LoadStockObjectYA .DA K.GetStockObjectA .DA K.FreeStockObject diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 58827013..edb42baf 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -114,9 +114,8 @@ K.GetMem >PULLB MemMgr.ReqFlags store requested flags and #S.MEM.F.INIT0 beq .8 - phx save hMem - jsr MemMgr.Init0 - plx restore hMem + + jsr MemMgr.Init0 X not madified .8 lda #0 ldy #S.MEM.BIN @@ -226,15 +225,14 @@ MemMgr.Init0 ldy #S.MEM.PTR eor #$ff a=not hi count ply y=not lo count - ldx #0 .1 iny bne .2 inc beq .8 -.2 stz $ffff,x - inx +.2 stz $ffff + inc .2+1 bne .1 inc .2+2 bne .1 @@ -263,25 +261,21 @@ K.FreeMemA phy sta (ZPMemMgrSPtr),y bne .8 no, must be a code segment loaded several times + lda #0 mark this slot as free + sta (ZPMemMgrSPtr) + ldy #S.MEM.BIN lda (ZPMemMgrSPtr),y Any BINPATH to discard ? beq .1 - pha save hMem - >PUSHW ZPMemMgrSPtr - pla jsr K.GetMemByIDA X unmodified lda (ZPMemMgrSPtr) bpl * ***MUST BE ALLOCATED*** lda #0 mark BINPATH slot as free sta (ZPMemMgrSPtr) - >PULLW ZPMemMgrSPtr -.1 lda #0 mark this slot as free - sta (ZPMemMgrSPtr) - -.2 lda MemMgr.LastSlot +.1 lda MemMgr.LastSlot beq .8 jsr K.GetMemByIDA X unmodified @@ -299,7 +293,7 @@ K.FreeMemA phy sta MemMgr.Free+1 dec MemMgr.LastSlot discard last slot - bne .2 no slot left, exit + bne .1 no slot left, exit .8 ply clc @@ -400,13 +394,63 @@ K.GetMemByIDA sta ZPMemMgrSPtr * sta ZPMemMgrSPtr+1 * rts *-------------------------------------- +K.LoadStockObjectYA +*-------------------------------------- +K.GetStockObjectA +*-------------------------------------- +K.FreeStockObject +*-------------------------------------- +K.SetLoMem + clc + rts +*/-------------------------------------- +* #GetMemStatYA +* ##In: +* Y,A = 24 bytes buffer +* ##Out: +* Buffer filled with memory stats +*\-------------------------------------- +K.GetMemStatYA >STYA ZPMemMgrDstPtr + + ldy #6 + +.1 lda MemMgr.Table,y + sta (ZPMemMgrDstPtr),y + dey + bpl .1 + + + ldx #6 + ldy #14 + + sta SETREADAUX + +.2 lda MemMgr.Table,x + sta (ZPMemMgrDstPtr),y + dey + dex + bpl .2 + + sta CLRREADAUX + + ldx #6 + ldy #22 + +.3 lda DevMgr.Stat,x + sta (ZPMemMgrDstPtr),y + dey + dex + bpl .3 + + rts +*-------------------------------------- * In: * Y,A = BINPATH (PSTR) * Out: * Y,A = ZPMemMgrSPtr = PTR to S.MEM * X = hMem *-------------------------------------- -K.GetMemByNameYA +MEM.GetMemByNameYA ldx MemMgr.LastSlot beq .9 @@ -457,69 +501,6 @@ K.GetMemByNameYA .9 sec rts *-------------------------------------- -K.LoadStockObjectYA -*-------------------------------------- -K.GetStockObjectA -*-------------------------------------- -K.FreeStockObject -*-------------------------------------- -K.SetLoMem - clc - rts -*-------------------------------------- -K.GetMemStatYA >STYA ZPMemMgrDstPtr - - ldy #7 - -.1 lda MemMgr.Table,y - sta (ZPMemMgrDstPtr),y - dey - bpl .1 - - - ldx #7 - ldy #15 - - sta SETREADAUX - -.2 lda MemMgr.Table,x - sta (ZPMemMgrDstPtr),y - dey - dex - bpl .2 - - sta CLRREADAUX - - ldy #16 - lda #DevMgr.LoMem - sta (ZPMemMgrDstPtr),y - - iny - lda /DevMgr.LoMem - sta (ZPMemMgrDstPtr),y - - iny - lda DevMgr.Free - sta (ZPMemMgrDstPtr),y - - iny - lda DevMgr.Free+1 - sta (ZPMemMgrDstPtr),y - - iny - lda #DevMgr.HiMem - sta (ZPMemMgrDstPtr),y - - iny - lda /DevMgr.HiMem - sta (ZPMemMgrDstPtr),y - - iny - lda DevMgr.LastDevID - sta (ZPMemMgrDstPtr),y - - rts -*-------------------------------------- MEM.GarbageCollector clc rts