Kernel 0.9.1 : Code reorganization & move to CSTR (SHELL)

This commit is contained in:
Rémy GIBERT 2017-09-06 17:00:10 +02:00
parent b057d6e2f5
commit 07fb258787
8 changed files with 116 additions and 87 deletions

Binary file not shown.

Binary file not shown.

View File

@ -53,7 +53,7 @@ CSH.Run jsr CSH.GetBuf
jsr CSH.GetPtrs jsr CSH.GetPtrs
lda #0 lda #0
sta (pData) Reset Cmdline >SETG.A CmdBuflen Reset Cmdline
jsr CSH.GetCharNB jsr CSH.GetCharNB
bcs .9 bcs .9
@ -125,6 +125,10 @@ CSH.Run jsr CSH.GetBuf
jsr CSH.RestorePtr Restore ptr to get full cmd line to execute jsr CSH.RestorePtr Restore ptr to get full cmd line to execute
>GETG.A hCmdBuf Get the buffer
>SYSCALL GetMemPtr.A
jsr CSH.GetCharNB jsr CSH.GetCharNB
ldy #0 ldy #0

View File

@ -120,21 +120,14 @@ CS.INIT jsr SetPWD
>PUSHYA >PUSHYA
>SYSCALL LoadFile >SYSCALL LoadFile
bcs .9 bcs .9
>DEBUG
phy >SETG.YA CSH.BufLen+1
ldy #CSH.BufLen+1
sta (pData),y
dey
pla
sta (pData),y
txa txa
ldy #CSH.hBuf >SETG.A CSH.hBuf
sta (pData),y
ldy #bExitOnEOF
lda #$FF lda #$FF
sta (pData),y >SETG.A bExitOnEOF
jmp CSH.Init jmp CSH.Init
@ -143,8 +136,7 @@ CS.INIT jsr SetPWD
>LDYA L.MSG.GREETINGS >LDYA L.MSG.GREETINGS
>SYSCALL PrintF.YA >SYSCALL PrintF.YA
* clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN >GETG.A bReadMode READ Command ? CS.RUN >GETG.A bReadMode READ Command ?
@ -201,7 +193,7 @@ CS.RUN >GETG.A bReadMode READ Command ?
jsr HIS.Add jsr HIS.Add
>LDYA pData >LDYA ZPBufBase
jsr Cmd.ExecYA jsr Cmd.ExecYA
ldy #S.PS.RC ldy #S.PS.RC
@ -255,7 +247,9 @@ CS.RUN.READ >GETG.A hCmdBuf Get the buffer
plp plp
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.BATCH jsr CSH.Run CS.RUN.BATCH >DEBUG
jsr CSH.Run
bcs .9 bcs .9
lda (pData) lda (pData)
@ -610,15 +604,17 @@ hCmdBuf .BS 1
CmdBuflen .BS 1 CmdBuflen .BS 1
bCmdBufexec .BS 1 bCmdBufexec .BS 1
bReadMode .BS 1
bEscMode .BS 1 bEscMode .BS 1
bPause .BS 1 bPause .BS 1
bExit .BS 1 bExit .BS 1
bEcho .BS 1 bEcho .BS 1
bSecureRead .BS 1
bExitOnEOF .BS 1 bExitOnEOF .BS 1
bReadMode .BS 1
bSecureRead .BS 1
Sleep .BS 4 Sleep .BS 4
VarBuffer .BS 16 VarBuffer .BS 16
HIS.hBuf .BS 1 HIS.hBuf .BS 1

View File

@ -17,7 +17,7 @@ CORE.Run jsr CORE.TskMgrRun
jsr CORE.DispatchEvents jsr CORE.DispatchEvents
bcc .4 CC=All Events Dispatched bcc .4 CC=All Events Dispatched
jsr PS.Select0 jsr CORE.PSSelect0
lda #EvtMgr.Table lda #EvtMgr.Table
sta pEvent sta pEvent
@ -115,8 +115,11 @@ CORE.TskMgrRun >LDYAI TskMgr.Table+S.PS skip PS 0
beq .8 beq .8
lda (pPs) get S.PS.F lda (pPs) get S.PS.F
bit #S.PS.F.INUSE In use ?
beq .7 * bit #S.PS.F.INUSE In use ?
* beq .7
bpl .7
bit #S.PS.F.HOLD Waiting for Another Task to Terminate? bit #S.PS.F.HOLD Waiting for Another Task to Terminate?
beq .2 beq .2
@ -130,7 +133,7 @@ CORE.TskMgrRun >LDYAI TskMgr.Table+S.PS skip PS 0
and #$FF^S.PS.F.HOLD unmark as HOLD and #$FF^S.PS.F.HOLD unmark as HOLD
sta (pPs) sta (pPs)
.2 jsr PS.Select .2 jsr CORE.PSSelect
lda (pPS) lda (pPS)
bit #S.PS.F.INIT bit #S.PS.F.INIT
@ -189,6 +192,55 @@ CORE.TskMgrRun >LDYAI TskMgr.Table+S.PS skip PS 0
bcs .1 Always bcs .1 Always
.8 clc .8 clc
rts
*--------------------------------------
CORE.PSSelect0 >LDYAI TskMgr.Table Select PS0
>STYA pPs
lda K.STACK+$ff
>STYA pStack
rts
*--------------------------------------
CORE.PSSelect ldy #S.PS.hCS
lda (pPs),y
jsr K.GetMemPtr.A
>STYA pCode
iny
* ldy #S.PS.hDS
lda (pPs),y
beq .1
jsr K.GetMemPtr.A
>STYA pData
.1 iny
* ldy #S.PS.hSS
lda (pPs),y
jsr K.GetMemPtr.A
>STYA pStack
iny
* ldy #S.PS.SP
lda pStack
clc
adc (pPs),y
sta pStack
bcc .8
inc pStack+1
.8 clc
rts
*--------------------------------------
CORE.PSLeave ldy #S.PS.hSS
lda (pPs),y
jsr K.GetMemPtr.A
rts rts
*-------------------------------------- *--------------------------------------
* CORE.GetEvents : * CORE.GetEvents :
@ -298,7 +350,7 @@ CORE.DispatchEvents
bit #S.PS.F.EVENT Accept Events ? bit #S.PS.F.EVENT Accept Events ?
beq .4 beq .4
jsr PS.Select jsr CORE.PSSelect
lda #EvtMgr.Table lda #EvtMgr.Table
sta pEvent Select first event in list sta pEvent Select first event in list

View File

@ -139,6 +139,7 @@ Kernel.Init3 sta SETALTZP
phx Save Expanded CMDLINE for discard phx Save Expanded CMDLINE for discard
>SYSCALL CreateProcessYA >SYSCALL CreateProcessYA
bcs .9 bcs .9
pla pla
>SYSCALL FreeMem.A ...discard... >SYSCALL FreeMem.A ...discard...
@ -146,9 +147,6 @@ Kernel.Init3 sta SETALTZP
>LDYAI MSG.Init3.OK >LDYAI MSG.Init3.OK
>SYSCALL PrintF.YA >SYSCALL PrintF.YA
>LDYAI TskMgr.Table
>STYA pPs
>DEBUGOA >DEBUGOA
jmp CORE.Run jmp CORE.Run

View File

@ -453,22 +453,49 @@ K.GetMemByID.A sta ZPMemMgrSPtr
* A = SYS error code * A = SYS error code
*\-------------------------------------- *\--------------------------------------
K.NewStr.YA >STYA .1+1 K.NewStr.YA >STYA .1+1
>STYA . >STYA .4+1
.1 lda $ffff,
ldy #0
stz MemMgr.ReqFlags stz MemMgr.ReqFlags
jsr K.GemMem.YA stz MemMgr.ReqSize+1
.1 lda $ffff,y
beq .2
iny
bne .1
inc MemMgr.ReqSize+1
inc .1+2
bne .1
.2 iny
bne .3
inc MemMgr.ReqSize+1
.3 sty MemMgr.ReqSize
jsr K.GetMem.I
bcs .9 bcs .9
>STYA .5+1
phy
pha
ldy #0
.4 lda $ffff,y
.5 sta $ffff,y
beq .8
iny
bne .4
inc .4+2
inc .5+2
bne .4
.8 pla
ply
clc
.9 rts
*-------------------------------------- *--------------------------------------
K.LoadStkObj.YA K.LoadStkObj.YA
*-------------------------------------- *--------------------------------------

View File

@ -341,14 +341,15 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path
.2 ldy #H.BIN.EXE.SS.SIZE .2 ldy #H.BIN.EXE.SS.SIZE
lda (ZPPtr4),y Load SS.SIZE.LO lda (ZPPtr4),y Load SS.SIZE.LO
pha pha Save it....
dec dec set SP to top
ldy #S.PS.SP ldy #S.PS.SP
sta (ZPPtr3),y sta (ZPPtr3),y
phy SS.SIZE.LO.... lda #0 set SS.SIZE.HI
ply get back SS.SIZE.LO....
bne .3 SS.SIZE=0, set as default $100 bne .3 SS.SIZE=0, set as default $100
inc SS.SIZE.HI inc SS.SIZE.HI
@ -400,55 +401,6 @@ PS.Free.A.PsY lda (ZPPtr1),y
beq PS.Free.A.RTS beq PS.Free.A.RTS
jmp K.FreeMem.A jmp K.FreeMem.A
*-------------------------------------- *--------------------------------------
PS.Select0 >LDYAI TskMgr.Table Select PS0
>STYA pPs
lda K.STACK+$ff
>STYA pStack
rts
*--------------------------------------
PS.Select ldy #S.PS.hCS
lda (pPs),y
jsr K.GetMemPtr.A
>STYA pCode
iny
* ldy #S.PS.hDS
lda (pPs),y
beq .1
jsr K.GetMemPtr.A
>STYA pData
.1 iny
* ldy #S.PS.hSS
lda (pPs),y
jsr K.GetMemPtr.A
>STYA pStack
iny
* ldy #S.PS.SP
lda pStack
clc
adc (pPs),y
sta pStack
bcc .8
inc pStack+1
.8 clc
rts
*--------------------------------------
PS.Leave ldy #S.PS.hSS
lda (pPs),y
jsr K.GetMemPtr.A
rts
*--------------------------------------
* PS.DupEnv.A * PS.DupEnv.A
* In: * In:
* A = ENV hMem To Duplicate * A = ENV hMem To Duplicate