Kernel 0.92

This commit is contained in:
Rémy GIBERT 2018-11-28 15:58:42 +01:00
parent 03231059b9
commit 04066e6212
9 changed files with 138 additions and 95 deletions

Binary file not shown.

Binary file not shown.

View File

@ -232,7 +232,8 @@ Cmd.SetPrefixA pha
ldy #S.PS.hPREFIX
sta (pPs),y
jmp SetPWD.I
* clc
rts
*--------------------------------------
Cmd.Exec.CSYN lda #E.CSYN
sec

View File

@ -192,8 +192,6 @@ CS.RUN jsr CMD.Init
>SYSCALL GetMemPtr
>STYA ZPFileBufPtr
jsr SetPWD
lda #0
jsr ShiftA Remove $0=/bin/shell
@ -458,14 +456,6 @@ CheckSleep ldy #Sleep+3
ora (pData),y
rts
*--------------------------------------
SetPWD ldy #S.PS.hPREFIX
lda (pPs),y
SetPWD.I >SYSCALL GetMemPtr
>PUSHYA
>LDYA L.ENV.PWD
>SYSCALL SetEnv
rts
*--------------------------------------
ShiftA >SYSCALL ArgV
bcs .8

View File

@ -302,7 +302,6 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR.
| Name | Status | Comment |
| ---- | ------ | ------- |
| $PWD | Working | 'Working Directory' |
| $0 | Working | Command Full Path |
| $1-$9 | Working | Arg[n] |
| $* | Working | All Args |
@ -311,6 +310,8 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR.
| $@ | Working | Parent PID |
| $$ | Working | PID |
| $! | Working | Child PID |
| $UID | Working | PS Owner UID |
| $PWD | Working | Working Directory |
note : '$VAR' does NOT expand Variable

View File

@ -284,7 +284,7 @@ CORE.Dispatch stz CORE.PSIndex
* CORE.PSFree
* In : A = PID to free
*--------------------------------------
CORE.PSFree sta .1+1 Save PS ID
CORE.PSFree sta .10+1 Save PS ID
jsr CORE.GetPSByID S.PS in ZPPtr1
bcs .9
@ -309,10 +309,10 @@ CORE.PSFree sta .1+1 Save PS ID
ldy #S.PS.hENV
jsr .8
ldy #S.PS.hPREFIX
.1 ldy #S.PS.hPREFIX
jsr .8
.1 lda #$ff Self Modified
.10 lda #$ff Self Modified
ldx #0

View File

@ -442,7 +442,7 @@ ENV.AddP3ToBuf ldx ENV.BufLen
ENV.ExpandSysVar
ldx ENV.VarLen
cpx #1 is name 1 char?
bne .9
bne .4
lda ENV.VarName
jsr MEM.IsDigit $0...$9 ??
@ -455,7 +455,7 @@ ENV.ExpandSysVar
jmp ENV.AddYAToBuf
.1 ldx #ENV.SysVarsJmp-ENV.SysVars-1
.1 ldx #ENV.SysVars.Cnt-1
.2 cmp ENV.SysVars,x
beq .3
@ -463,14 +463,47 @@ ENV.ExpandSysVar
bpl .2
.9 sec
.99 rts
rts
.3 txa
asl
tax
jmp (ENV.SysVarsJmp,x)
.4 >LDYAI ENV.StrVars
>STYA ZPPtr3
ldx #0
.5 lda (ZPPtr3)
beq .9
cmp ENV.VarLen
bne .7
tay
.6 lda (ZPPtr3),y
dey
cmp ENV.VarName,y
bne .7
tya
bne .6
jmp (ENV.StrVarsJmp,x)
.7 inx
inx
lda (ZPPtr3)
sec
adc ZPPtr3
sta ZPPtr3
bcc .5
inc ZPPtr3+1
bra .5
*--------------------------------------
ENV.SysVars .AS "*#?@$!"
ENV.SysVars.Cnt .EQ *-ENV.SysVars
*--------------------------------------
ENV.SysVarsJmp .DA ENV.SysVarsArgs
.DA ENV.SysVarsArgC
@ -479,28 +512,20 @@ ENV.SysVarsJmp .DA ENV.SysVarsArgs
.DA ENV.SysVarsPID
.DA ENV.SysVarsCPID
*--------------------------------------
ENV.SysVarsArgs lda #1
jsr K.ArgV
bcs .8
>STYA ZPPtr3
.1 lda (ZPPtr3)
beq .8
.2 jsr ENV.AddP3ToBuf
jsr ENV.NextEnvP3
lda (ZPPtr3)
beq .8
lda #' '
jsr ENV.AddAToBuf
bra .2
.8 clc
rts
ENV.StrVars >PSTR "PWD"
>PSTR "UID"
.DA #0
*--------------------------------------
ENV.StrVarsJmp .DA ENV.StrVarsPWD
.DA ENV.StrVarsUID
*--------------------------------------
ENV.StrVarsPWD ldy #S.PS.hPREFIX
lda (pPS),y
jsr K.GetMemPtr
jmp ENV.AddYAToBuf
*--------------------------------------
ENV.StrVarsUID ldy #S.PS.UID
.HS 2C
*--------------------------------------
ENV.SysVarsArgC ldy #S.PS.ARGC
.HS 2C
@ -559,6 +584,29 @@ ENV.SysVarsCPID ldy #S.PS.CPID
clc
rts
*--------------------------------------
ENV.SysVarsArgs lda #1
jsr K.ArgV
bcs .8
>STYA ZPPtr3
.1 lda (ZPPtr3)
beq .8
.2 jsr ENV.AddP3ToBuf
jsr ENV.NextEnvP3
lda (ZPPtr3)
beq .8
lda #' '
jsr ENV.AddAToBuf
bra .2
.8 clc
rts
*--------------------------------------
* ENV.FindVarP1
* In:
* ZPPtr1 -> NAME

View File

@ -239,54 +239,53 @@ Mem.NextSlot lda ZPMemMgrSPtr
K.FreeMem.ERRBAD .AZ "FreeMem:$%h=Bad hMem,BIN=%s\r\n"
K.FreeMem.ERRFREED .AZ "FreeMem:$%h=already freed,BIN=%s\r\n"
*--------------------------------------
K.FreeMem.BAD pha
K.FreeMem.BAD sec
.HS 90 BCC
K.FreeMem.FREED clc
phx
php
pha
ldy #S.PS.hARGV
lda (pPS),y
jsr K.GetMemPtr
>PUSHYA
pla
>PUSHA
>PUSHBI 3
phx
>LDYAI K.FreeMem.ERRBAD
>SYSCALL printf
plx
>DEBUGOA
sec
rts
*--------------------------------------
K.FreeMem.FREED ldy #S.PS.hARGV
lda (pPS),y
jsr K.GetMemPtr
>PUSHYA
pla
>PUSHA
>PUSHBI 3
phx
plp
bcs .1
>LDYAI K.FreeMem.ERRFREED
>SYSCALL printf
.1 >SYSCALL printf
plx
sec
rts
*--------------------------------------
K.FreeMem tay
beq K.FreeMem.BAD Slot=0, reserved by Kernel
* cpy #$23
* bne .11
* >DEBUG
*.11
cmp Mem.LastSlot
bcc .10
bne K.FreeMem.BAD
.10 pha
jsr K.GetMemByID X unmodified
lda (ZPMemMgrSPtr)
bpl K.FreeMem.FREED In use ?
lda (ZPMemMgrSPtr) In use ?
bmi .11
pla
bra K.FreeMem.FREED
.11 pla
ldy #S.MEM.REFCNT
lda (ZPMemMgrSPtr),y Get count of those referencing this hMem
dec only one left ?

View File

@ -57,22 +57,22 @@ K.ExecL sty .1+1
K.ExecV >STYA PS.ArgV
>PULLB PS.Flags
PS.Exec stz PS.Load.hBIN
jsr PS.CreateChild A=PID,Child S.PS at ZPPtr3,PS.Load.hMem
PS.Exec jsr PS.CreateChild A=PID,Child S.PS at ZPPtr3,PS.Load.hMem
bcs .9
sta .8+1
* stz PS.Load.hBIN
stz K.IOBuf
jsr PS.Load
bcs .90
jsr PS.AddArgV
bcc .8
.90 pha save error code
lda PS.Load.hBIN
beq .91
* lda PS.Load.hBIN
* beq .91
jsr K.FreeMem
* jsr K.FreeMem
.91 lda .8+1
jsr CORE.PSFree
@ -140,42 +140,38 @@ PS.CreateChild ldx CORE.PSCount
lda CORE.LastPSID
sta (ZPPtr3),y
lda #S.PS.F.DUPENV
bit PS.Flags need to create ENV & Prefix ?
beq .6 no...
sta (ZPPtr3) Mark this PS with DUPENV flag
ldy #S.PS.hPREFIX copy hPREFIX...
lda (pPs),y
jsr K.GetMemPtr
jsr K.NewStr
bcs .9
jsr PS.SetMemOwner Set Ownership
jsr PS.SetMemOwner Set Ownership
txa
ldy #S.PS.hPREFIX
sta (ZPPtr3),y
ldy #S.PS.hENV ...and hENV from parent PS
lda #S.PS.F.DUPENV
bit PS.Flags need to create ENV ?
beq .6 no...
sta (ZPPtr3) Mark this PS with DUPENV flag
ldy #S.PS.hENV dup hENV from parent PS
lda (pPs),y
jsr PS.DupEnv
bcs .9
ldy #S.PS.hENV
sta (ZPPtr3),y
bra .8
.6 ldy #S.PS.hPREFIX reuse same hPREFIX...
.6 ldy #S.PS.hENV reuse hENV from parent PS
lda (pPs),y
sta (ZPPtr3),y
.8 sta (ZPPtr3),y
ldy #S.PS.hENV ...and hENV from parent PS
lda (pPs),y
sta (ZPPtr3),y
.8 ldy #S.PS.hStdIn
ldy #S.PS.hStdIn
.81 lda (pPs),y
sta (ZPPtr3),y
@ -263,9 +259,9 @@ PS.Load >PUSHWI K.S.STAT
>STYA ZPPtr3
>LDYAI K.IOBuf
>SYSCALL NewStr
bcs .99
stx PS.Load.hBIN
* >SYSCALL NewStr
* bcs .99
* stx PS.Load.hBIN
bra PS.LoadBIN.YA
@ -275,7 +271,8 @@ PS.Load >PUSHWI K.S.STAT
sec
.99 rts
PS.LoadBIN >LDYA PS.ArgV
PS.LoadBIN >LDYA PS.ArgV
PS.LoadBIN.YA jsr BIN.Load
bcs .9
>STYA ZPPtr4 save PTR to Code Segment
@ -400,10 +397,14 @@ PS.Load.hMem .BS 1
PS.AddArgV stz PS.Load.ArgSize
stz PS.Load.ArgSize+1
lda PS.Load.hBIN
* lda PS.Load.hBIN
lda K.IOBuf
beq .10
jsr K.GetMemPtr
* jsr K.GetMemPtr
>LDYAI K.IOBuf
jsr K.strlen
iny +1 for \0
>STYA PS.Load.ArgSize
@ -453,10 +454,13 @@ PS.AddArgV stz PS.Load.ArgSize
ldy #S.PS.hARGV
sta (ZPPtr3),y
lda PS.Load.hBIN
* lda PS.Load.hBIN
lda K.IOBuf
beq .6
jsr K.GetMemPtr
* jsr K.GetMemPtr
>LDYAI K.IOBuf
>STYA ZPPtr1
jsr PS.AddPtr1ToStrV