mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-29 17:50:18 +00:00
Kernel 0.92
This commit is contained in:
parent
eea4fb0809
commit
d962d7b6ef
Binary file not shown.
@ -273,7 +273,7 @@ CL.PrintCmdBuf >LDYA ZPCLBuf
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.GetLine >LDYA ZPFileBufPtr
|
CL.GetLine >LDYA ZPFileBufPtr
|
||||||
>STYA.G ZPFileBufPtrBak
|
>STYA ZPFileBufPtrBak
|
||||||
|
|
||||||
lda (ZPFileBufPtr)
|
lda (ZPFileBufPtr)
|
||||||
beq .9
|
beq .9
|
||||||
|
@ -1027,20 +1027,21 @@ CMD.IsSwitch >STYA ZPPtr1
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.StkPushPtr >LDA.G ZPFileBufPtrBak
|
CMD.StkPushPtr lda ZPFileBufPtrBak
|
||||||
jsr CMD.StkPush
|
jsr CMD.StkPush
|
||||||
bcs .9
|
bcs CMD.StkPullPtr.9
|
||||||
>LDA.G ZPFileBufPtrBak+1
|
lda ZPFileBufPtrBak+1
|
||||||
jmp CMD.StkPush
|
bra CMD.StkPush
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.StkPullPtr jsr CMD.StkPull
|
CMD.StkPullPtr jsr CMD.StkPull
|
||||||
bcs .9
|
bcs CMD.StkPullPtr.9
|
||||||
sta ZPFileBufPtr+1
|
sta ZPFileBufPtr+1
|
||||||
jsr CMD.StkPull
|
jsr CMD.StkPull
|
||||||
bcs .9
|
bcs CMD.StkPullPtr.9
|
||||||
sta ZPFileBufPtr
|
sta ZPFileBufPtr
|
||||||
.9 rts
|
CMD.StkPullPtr.9
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.StkGetPtr lda (pData) StackPtr
|
CMD.StkGetPtr lda (pData) StackPtr
|
||||||
beq .9
|
beq .9
|
||||||
|
@ -25,7 +25,9 @@ CORE.Run stz CORE.PSIndex
|
|||||||
eor #S.PS.F.HOLD unmark as HOLD
|
eor #S.PS.F.HOLD unmark as HOLD
|
||||||
sta (pPs)
|
sta (pPs)
|
||||||
|
|
||||||
.2 jsr CORE.PSExec INIT/RUN/QUIT/RESUME
|
.2 jsr CORE.PSSelect Restore ZP & Ptrs
|
||||||
|
|
||||||
|
.3 jsr CORE.PSExec INIT/RUN/QUIT/RESUME
|
||||||
dec IRQ.InKernel
|
dec IRQ.InKernel
|
||||||
|
|
||||||
bcc .61 Error ?
|
bcc .61 Error ?
|
||||||
@ -56,7 +58,7 @@ CORE.Run stz CORE.PSIndex
|
|||||||
and #$3F $ff^S.PS.F.INIT+S.PS.F.RUN
|
and #$3F $ff^S.PS.F.INIT+S.PS.F.RUN
|
||||||
ora #S.PS.F.QUIT
|
ora #S.PS.F.QUIT
|
||||||
sta (pPs)
|
sta (pPs)
|
||||||
bra .7
|
bra .3 try executing QUIT now...
|
||||||
|
|
||||||
.61 lda (pPs)
|
.61 lda (pPs)
|
||||||
bit #S.PS.F.SLEEP
|
bit #S.PS.F.SLEEP
|
||||||
@ -74,7 +76,6 @@ CORE.Run stz CORE.PSIndex
|
|||||||
|
|
||||||
ldy #S.PS.PID
|
ldy #S.PS.PID
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
beq *
|
|
||||||
jsr CORE.PSFree
|
jsr CORE.PSFree
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
@ -452,9 +453,7 @@ CORE.PSLeave ldy #S.PS.ZP+ZPBIN.SIZE-1
|
|||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.PSExec jsr CORE.PSSelect Restore ZP & Ptrs
|
CORE.PSExec lda (pPS)
|
||||||
|
|
||||||
lda (pPS)
|
|
||||||
bit #S.PS.F.SLEEP
|
bit #S.PS.F.SLEEP
|
||||||
bne CORE.PSResume
|
bne CORE.PSResume
|
||||||
|
|
||||||
|
@ -180,18 +180,16 @@ ENV.Search.DRV ldx #2
|
|||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
ENV.Search.PATH ldx #4
|
ENV.Search.PATH ldx #4
|
||||||
|
|
||||||
sty .1+1
|
>STYA ZPPtr1
|
||||||
sta .2+1
|
|
||||||
|
|
||||||
>LDYA ENV.VARS,x
|
>LDYA ENV.VARS,x
|
||||||
|
|
||||||
jsr K.GetEnv get value for Search Path
|
jsr ENV.FindVarP1 get value for Search Path
|
||||||
bcs K.FileSearch.RTS
|
bcs K.FileSearch.RTS
|
||||||
|
|
||||||
>STYA ENV.SearchPath
|
>STYA ENV.SearchPath
|
||||||
|
|
||||||
.1 ldy #$ff SELF MODIFIED
|
>LDYA ZPPtr1
|
||||||
.2 lda #$ff SELF MODIFIED
|
|
||||||
|
|
||||||
ENV.Search.YA >STYA .4+1
|
ENV.Search.YA >STYA .4+1
|
||||||
|
|
||||||
|
@ -19,7 +19,11 @@ ZPSListDataPtr .EQ ZPMEMMGR+14
|
|||||||
* X = hMem
|
* X = hMem
|
||||||
* CS :
|
* CS :
|
||||||
* A = EC
|
* A = EC
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
|
MEM.ReqFlags .BS 1 store requested Flags
|
||||||
|
MEM.BestSlot .BS 1
|
||||||
|
MEM.BestScore .BS 2
|
||||||
|
*--------------------------------------
|
||||||
K.GetMem0 ldx #S.MEM.F.INIT0
|
K.GetMem0 ldx #S.MEM.F.INIT0
|
||||||
.HS 2C bit abs
|
.HS 2C bit abs
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
@ -34,7 +38,7 @@ K.GetMem0 ldx #S.MEM.F.INIT0
|
|||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.GetMem ldx #0
|
K.GetMem ldx #0
|
||||||
|
|
||||||
MEM.GetMem.YAX stx Mem.ReqFlags
|
MEM.GetMem.YAX stx MEM.ReqFlags
|
||||||
sta ZPMemMgrSize+1
|
sta ZPMemMgrSize+1
|
||||||
|
|
||||||
tya
|
tya
|
||||||
@ -52,6 +56,11 @@ MEM.GetMem.YAX stx Mem.ReqFlags
|
|||||||
>LDYAI Mem.Table
|
>LDYAI Mem.Table
|
||||||
>STYA ZPMemMgrSPtr
|
>STYA ZPMemMgrSPtr
|
||||||
|
|
||||||
|
stz MEM.BestSlot
|
||||||
|
ldx #$ff
|
||||||
|
stx MEM.BestScore
|
||||||
|
stx MEM.BestScore+1
|
||||||
|
|
||||||
ldx #0 Current slot=0
|
ldx #0 Current slot=0
|
||||||
|
|
||||||
bra .4 skip slot 0, Check if some free slot to reuse first
|
bra .4 skip slot 0, Check if some free slot to reuse first
|
||||||
@ -61,7 +70,7 @@ MEM.GetMem.YAX stx Mem.ReqFlags
|
|||||||
lda (ZPMemMgrSPtr) Get Flags
|
lda (ZPMemMgrSPtr) Get Flags
|
||||||
bmi .4 in use ?
|
bmi .4 in use ?
|
||||||
|
|
||||||
.2 lda Mem.ReqFlags Found an empty slot
|
.2 lda MEM.ReqFlags Found an empty slot
|
||||||
and #S.MEM.F.ALIGN is request needs a page align ?
|
and #S.MEM.F.ALIGN is request needs a page align ?
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
@ -70,21 +79,44 @@ MEM.GetMem.YAX stx Mem.ReqFlags
|
|||||||
bne .4 not page-aligned
|
bne .4 not page-aligned
|
||||||
|
|
||||||
.3 ldy #S.MEM.LEN
|
.3 ldy #S.MEM.LEN
|
||||||
|
sec
|
||||||
lda (ZPMemMgrSPtr),y get LEN of this block
|
lda (ZPMemMgrSPtr),y get LEN of this block
|
||||||
cmp ZPMemMgrSize compare with requested size
|
sbc ZPMemMgrSize compare with requested size
|
||||||
bne .4
|
pha
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda (ZPMemMgrSPtr),y
|
lda (ZPMemMgrSPtr),y
|
||||||
cmp ZPMemMgrSize+1
|
sbc ZPMemMgrSize+1
|
||||||
beq .7 requested size matches slot size !!!
|
ply Y,A = SlotLen - ReqSize
|
||||||
|
|
||||||
|
bcc .4 req size > slot size
|
||||||
|
|
||||||
|
cpy MEM.BestScore
|
||||||
|
pha
|
||||||
|
sbc MEM.BestScore+1
|
||||||
|
pla
|
||||||
|
bcs .4 Delta is >= BestScore
|
||||||
|
|
||||||
|
bne .4 Delta is > 255...
|
||||||
|
|
||||||
|
sty MEM.BestScore
|
||||||
|
sta MEM.BestScore+1
|
||||||
|
stx MEM.BestSlot
|
||||||
|
|
||||||
.4 cpx Mem.LastSlot any other slot to check?
|
.4 cpx Mem.LastSlot any other slot to check?
|
||||||
bne .1 last one, create a new slot
|
bne .1 last one, create a new slot
|
||||||
|
|
||||||
|
lda MEM.BestSlot
|
||||||
|
beq .5
|
||||||
|
|
||||||
|
tax
|
||||||
|
jsr K.GetMemByID
|
||||||
|
|
||||||
|
bra .7
|
||||||
|
|
||||||
*-------------- Create a New SLOT
|
*-------------- Create a New SLOT
|
||||||
|
|
||||||
.5 lda Mem.ReqFlags
|
.5 lda MEM.ReqFlags
|
||||||
and #S.MEM.F.ALIGN is request needs a page align ?
|
and #S.MEM.F.ALIGN is request needs a page align ?
|
||||||
beq .6
|
beq .6
|
||||||
|
|
||||||
@ -107,7 +139,7 @@ MEM.GetMem.YAX stx Mem.ReqFlags
|
|||||||
|
|
||||||
*-------------- Reuse this SLOT
|
*-------------- Reuse this SLOT
|
||||||
|
|
||||||
.7 lda Mem.ReqFlags get requested flags
|
.7 lda MEM.ReqFlags get requested flags
|
||||||
ora #S.MEM.F.INUSE mark as in use
|
ora #S.MEM.F.INUSE mark as in use
|
||||||
sta (ZPMemMgrSPtr)
|
sta (ZPMemMgrSPtr)
|
||||||
|
|
||||||
@ -164,8 +196,6 @@ MEM.GetMem.YAX stx Mem.ReqFlags
|
|||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Mem.ReqFlags .BS 1 store requested Flags
|
|
||||||
*--------------------------------------
|
|
||||||
* Mem.AddSlot
|
* Mem.AddSlot
|
||||||
* In:
|
* In:
|
||||||
* Y,A = Requested size
|
* Y,A = Requested size
|
||||||
|
Loading…
Reference in New Issue
Block a user