mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-18 15:30:43 +00:00
Kernel version 0.8 : Saved few bytes (& cycles) in MemMgr
This commit is contained in:
parent
af54e1e393
commit
b87ffebe14
@ -14,7 +14,7 @@ AUTO 6
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.LoadEXEYA >STYA K.LoadEXEYA.Filename
|
K.LoadEXEYA >STYA K.LoadEXEYA.Filename
|
||||||
>SYSCALL PStrUprYA Y,A unmodified
|
>SYSCALL PStrUprYA Y,A unmodified
|
||||||
jsr K.GetMemByNameYA
|
jsr MEM.GetMemByNameYA
|
||||||
bcs K.LoadEXEYA.1 not already loaded
|
bcs K.LoadEXEYA.1 not already loaded
|
||||||
|
|
||||||
>STYA ZPQuickPtr1 Save base address
|
>STYA ZPQuickPtr1 Save base address
|
||||||
|
@ -5,7 +5,9 @@ INC 1
|
|||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.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
|
DevMgr.LastDevID .DA #DevMgr.Count-1
|
||||||
TSKMGR.SIZE .BS 1
|
TSKMGR.SIZE .BS 1
|
||||||
TSKMGR.LASTID .BS 1
|
TSKMGR.LASTID .BS 1
|
||||||
|
@ -100,7 +100,7 @@ KERNEL.SYSCALL
|
|||||||
.DA K.FreeMemA
|
.DA K.FreeMemA
|
||||||
.DA K.GetMemPtrA
|
.DA K.GetMemPtrA
|
||||||
.DA K.GetMemByIDA
|
.DA K.GetMemByIDA
|
||||||
.DA K.GetMemByNameYA
|
.DA 0
|
||||||
.DA K.LoadStockObjectYA
|
.DA K.LoadStockObjectYA
|
||||||
.DA K.GetStockObjectA
|
.DA K.GetStockObjectA
|
||||||
.DA K.FreeStockObject
|
.DA K.FreeStockObject
|
||||||
|
@ -114,9 +114,8 @@ K.GetMem >PULLB MemMgr.ReqFlags store requested flags
|
|||||||
|
|
||||||
and #S.MEM.F.INIT0
|
and #S.MEM.F.INIT0
|
||||||
beq .8
|
beq .8
|
||||||
phx save hMem
|
|
||||||
jsr MemMgr.Init0
|
jsr MemMgr.Init0 X not madified
|
||||||
plx restore hMem
|
|
||||||
|
|
||||||
.8 lda #0
|
.8 lda #0
|
||||||
ldy #S.MEM.BIN
|
ldy #S.MEM.BIN
|
||||||
@ -226,15 +225,14 @@ MemMgr.Init0 ldy #S.MEM.PTR
|
|||||||
eor #$ff a=not hi count
|
eor #$ff a=not hi count
|
||||||
|
|
||||||
ply y=not lo count
|
ply y=not lo count
|
||||||
ldx #0
|
|
||||||
|
|
||||||
.1 iny
|
.1 iny
|
||||||
bne .2
|
bne .2
|
||||||
inc
|
inc
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.2 stz $ffff,x
|
.2 stz $ffff
|
||||||
inx
|
inc .2+1
|
||||||
bne .1
|
bne .1
|
||||||
inc .2+2
|
inc .2+2
|
||||||
bne .1
|
bne .1
|
||||||
@ -263,25 +261,21 @@ K.FreeMemA 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 mark this slot as free
|
||||||
|
sta (ZPMemMgrSPtr)
|
||||||
|
|
||||||
ldy #S.MEM.BIN
|
ldy #S.MEM.BIN
|
||||||
lda (ZPMemMgrSPtr),y Any BINPATH to discard ?
|
lda (ZPMemMgrSPtr),y Any BINPATH to discard ?
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
pha save hMem
|
|
||||||
>PUSHW ZPMemMgrSPtr
|
|
||||||
pla
|
|
||||||
jsr K.GetMemByIDA X unmodified
|
jsr K.GetMemByIDA X unmodified
|
||||||
lda (ZPMemMgrSPtr)
|
lda (ZPMemMgrSPtr)
|
||||||
bpl * ***MUST BE ALLOCATED***
|
bpl * ***MUST BE ALLOCATED***
|
||||||
|
|
||||||
lda #0 mark BINPATH slot as free
|
lda #0 mark BINPATH slot as free
|
||||||
sta (ZPMemMgrSPtr)
|
sta (ZPMemMgrSPtr)
|
||||||
>PULLW ZPMemMgrSPtr
|
|
||||||
|
|
||||||
.1 lda #0 mark this slot as free
|
.1 lda MemMgr.LastSlot
|
||||||
sta (ZPMemMgrSPtr)
|
|
||||||
|
|
||||||
.2 lda MemMgr.LastSlot
|
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jsr K.GetMemByIDA X unmodified
|
jsr K.GetMemByIDA X unmodified
|
||||||
@ -299,7 +293,7 @@ K.FreeMemA phy
|
|||||||
sta MemMgr.Free+1
|
sta MemMgr.Free+1
|
||||||
|
|
||||||
dec MemMgr.LastSlot discard last slot
|
dec MemMgr.LastSlot discard last slot
|
||||||
bne .2 no slot left, exit
|
bne .1 no slot left, exit
|
||||||
|
|
||||||
.8 ply
|
.8 ply
|
||||||
clc
|
clc
|
||||||
@ -400,13 +394,63 @@ K.GetMemByIDA sta ZPMemMgrSPtr
|
|||||||
* sta ZPMemMgrSPtr+1
|
* sta ZPMemMgrSPtr+1
|
||||||
* rts
|
* 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:
|
* In:
|
||||||
* Y,A = BINPATH (PSTR)
|
* Y,A = BINPATH (PSTR)
|
||||||
* Out:
|
* Out:
|
||||||
* Y,A = ZPMemMgrSPtr = PTR to S.MEM
|
* Y,A = ZPMemMgrSPtr = PTR to S.MEM
|
||||||
* X = hMem
|
* X = hMem
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.GetMemByNameYA
|
MEM.GetMemByNameYA
|
||||||
ldx MemMgr.LastSlot
|
ldx MemMgr.LastSlot
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
@ -457,69 +501,6 @@ K.GetMemByNameYA
|
|||||||
.9 sec
|
.9 sec
|
||||||
rts
|
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
|
MEM.GarbageCollector
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
Loading…
x
Reference in New Issue
Block a user