mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-12 04:29:31 +00:00
Kernel 0.92
This commit is contained in:
parent
03231059b9
commit
04066e6212
Binary file not shown.
Binary file not shown.
|
@ -232,7 +232,8 @@ Cmd.SetPrefixA pha
|
||||||
|
|
||||||
ldy #S.PS.hPREFIX
|
ldy #S.PS.hPREFIX
|
||||||
sta (pPs),y
|
sta (pPs),y
|
||||||
jmp SetPWD.I
|
* clc
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.Exec.CSYN lda #E.CSYN
|
Cmd.Exec.CSYN lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
|
|
|
@ -192,8 +192,6 @@ CS.RUN jsr CMD.Init
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPFileBufPtr
|
>STYA ZPFileBufPtr
|
||||||
|
|
||||||
jsr SetPWD
|
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
jsr ShiftA Remove $0=/bin/shell
|
jsr ShiftA Remove $0=/bin/shell
|
||||||
|
|
||||||
|
@ -458,14 +456,6 @@ CheckSleep ldy #Sleep+3
|
||||||
ora (pData),y
|
ora (pData),y
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SetPWD ldy #S.PS.hPREFIX
|
|
||||||
lda (pPs),y
|
|
||||||
SetPWD.I >SYSCALL GetMemPtr
|
|
||||||
>PUSHYA
|
|
||||||
>LDYA L.ENV.PWD
|
|
||||||
>SYSCALL SetEnv
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
ShiftA >SYSCALL ArgV
|
ShiftA >SYSCALL ArgV
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
|
|
|
@ -302,7 +302,6 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR.
|
||||||
|
|
||||||
| Name | Status | Comment |
|
| Name | Status | Comment |
|
||||||
| ---- | ------ | ------- |
|
| ---- | ------ | ------- |
|
||||||
| $PWD | Working | 'Working Directory' |
|
|
||||||
| $0 | Working | Command Full Path |
|
| $0 | Working | Command Full Path |
|
||||||
| $1-$9 | Working | Arg[n] |
|
| $1-$9 | Working | Arg[n] |
|
||||||
| $* | Working | All Args |
|
| $* | 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 | Parent PID |
|
||||||
| $$ | Working | PID |
|
| $$ | Working | PID |
|
||||||
| $! | Working | Child PID |
|
| $! | Working | Child PID |
|
||||||
|
| $UID | Working | PS Owner UID |
|
||||||
|
| $PWD | Working | Working Directory |
|
||||||
|
|
||||||
note : '$VAR' does NOT expand Variable
|
note : '$VAR' does NOT expand Variable
|
||||||
|
|
||||||
|
|
|
@ -284,7 +284,7 @@ CORE.Dispatch stz CORE.PSIndex
|
||||||
* CORE.PSFree
|
* CORE.PSFree
|
||||||
* In : A = PID to free
|
* 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
|
jsr CORE.GetPSByID S.PS in ZPPtr1
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -309,10 +309,10 @@ CORE.PSFree sta .1+1 Save PS ID
|
||||||
ldy #S.PS.hENV
|
ldy #S.PS.hENV
|
||||||
jsr .8
|
jsr .8
|
||||||
|
|
||||||
ldy #S.PS.hPREFIX
|
.1 ldy #S.PS.hPREFIX
|
||||||
jsr .8
|
jsr .8
|
||||||
|
|
||||||
.1 lda #$ff Self Modified
|
.10 lda #$ff Self Modified
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
|
|
|
@ -442,7 +442,7 @@ ENV.AddP3ToBuf ldx ENV.BufLen
|
||||||
ENV.ExpandSysVar
|
ENV.ExpandSysVar
|
||||||
ldx ENV.VarLen
|
ldx ENV.VarLen
|
||||||
cpx #1 is name 1 char?
|
cpx #1 is name 1 char?
|
||||||
bne .9
|
bne .4
|
||||||
|
|
||||||
lda ENV.VarName
|
lda ENV.VarName
|
||||||
jsr MEM.IsDigit $0...$9 ??
|
jsr MEM.IsDigit $0...$9 ??
|
||||||
|
@ -455,7 +455,7 @@ ENV.ExpandSysVar
|
||||||
|
|
||||||
jmp ENV.AddYAToBuf
|
jmp ENV.AddYAToBuf
|
||||||
|
|
||||||
.1 ldx #ENV.SysVarsJmp-ENV.SysVars-1
|
.1 ldx #ENV.SysVars.Cnt-1
|
||||||
|
|
||||||
.2 cmp ENV.SysVars,x
|
.2 cmp ENV.SysVars,x
|
||||||
beq .3
|
beq .3
|
||||||
|
@ -463,14 +463,47 @@ ENV.ExpandSysVar
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
.99 rts
|
rts
|
||||||
|
|
||||||
.3 txa
|
.3 txa
|
||||||
asl
|
asl
|
||||||
tax
|
tax
|
||||||
jmp (ENV.SysVarsJmp,x)
|
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 .AS "*#?@$!"
|
||||||
|
ENV.SysVars.Cnt .EQ *-ENV.SysVars
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ENV.SysVarsJmp .DA ENV.SysVarsArgs
|
ENV.SysVarsJmp .DA ENV.SysVarsArgs
|
||||||
.DA ENV.SysVarsArgC
|
.DA ENV.SysVarsArgC
|
||||||
|
@ -479,28 +512,20 @@ ENV.SysVarsJmp .DA ENV.SysVarsArgs
|
||||||
.DA ENV.SysVarsPID
|
.DA ENV.SysVarsPID
|
||||||
.DA ENV.SysVarsCPID
|
.DA ENV.SysVarsCPID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ENV.SysVarsArgs lda #1
|
ENV.StrVars >PSTR "PWD"
|
||||||
jsr K.ArgV
|
>PSTR "UID"
|
||||||
bcs .8
|
.DA #0
|
||||||
|
*--------------------------------------
|
||||||
>STYA ZPPtr3
|
ENV.StrVarsJmp .DA ENV.StrVarsPWD
|
||||||
|
.DA ENV.StrVarsUID
|
||||||
.1 lda (ZPPtr3)
|
*--------------------------------------
|
||||||
beq .8
|
ENV.StrVarsPWD ldy #S.PS.hPREFIX
|
||||||
|
lda (pPS),y
|
||||||
.2 jsr ENV.AddP3ToBuf
|
jsr K.GetMemPtr
|
||||||
|
jmp ENV.AddYAToBuf
|
||||||
jsr ENV.NextEnvP3
|
*--------------------------------------
|
||||||
lda (ZPPtr3)
|
ENV.StrVarsUID ldy #S.PS.UID
|
||||||
beq .8
|
.HS 2C
|
||||||
|
|
||||||
lda #' '
|
|
||||||
jsr ENV.AddAToBuf
|
|
||||||
|
|
||||||
bra .2
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ENV.SysVarsArgC ldy #S.PS.ARGC
|
ENV.SysVarsArgC ldy #S.PS.ARGC
|
||||||
.HS 2C
|
.HS 2C
|
||||||
|
@ -559,6 +584,29 @@ ENV.SysVarsCPID ldy #S.PS.CPID
|
||||||
clc
|
clc
|
||||||
rts
|
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
|
* ENV.FindVarP1
|
||||||
* In:
|
* In:
|
||||||
* ZPPtr1 -> NAME
|
* ZPPtr1 -> NAME
|
||||||
|
|
|
@ -239,54 +239,53 @@ Mem.NextSlot lda ZPMemMgrSPtr
|
||||||
K.FreeMem.ERRBAD .AZ "FreeMem:$%h=Bad hMem,BIN=%s\r\n"
|
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.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
|
ldy #S.PS.hARGV
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
|
|
||||||
pla
|
pla
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
>PUSHBI 3
|
>PUSHBI 3
|
||||||
phx
|
|
||||||
>LDYAI K.FreeMem.ERRBAD
|
>LDYAI K.FreeMem.ERRBAD
|
||||||
>SYSCALL printf
|
plp
|
||||||
plx
|
bcs .1
|
||||||
>DEBUGOA
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
K.FreeMem.FREED ldy #S.PS.hARGV
|
|
||||||
lda (pPS),y
|
|
||||||
jsr K.GetMemPtr
|
|
||||||
>PUSHYA
|
|
||||||
|
|
||||||
pla
|
|
||||||
>PUSHA
|
|
||||||
|
|
||||||
>PUSHBI 3
|
|
||||||
phx
|
|
||||||
>LDYAI K.FreeMem.ERRFREED
|
>LDYAI K.FreeMem.ERRFREED
|
||||||
>SYSCALL printf
|
|
||||||
|
.1 >SYSCALL printf
|
||||||
|
|
||||||
plx
|
plx
|
||||||
|
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.FreeMem tay
|
K.FreeMem tay
|
||||||
beq K.FreeMem.BAD Slot=0, reserved by Kernel
|
beq K.FreeMem.BAD Slot=0, reserved by Kernel
|
||||||
|
|
||||||
* cpy #$23
|
|
||||||
* bne .11
|
|
||||||
* >DEBUG
|
|
||||||
*.11
|
|
||||||
cmp Mem.LastSlot
|
cmp Mem.LastSlot
|
||||||
bcc .10
|
bcc .10
|
||||||
bne K.FreeMem.BAD
|
bne K.FreeMem.BAD
|
||||||
|
|
||||||
.10 pha
|
.10 pha
|
||||||
jsr K.GetMemByID X unmodified
|
jsr K.GetMemByID X unmodified
|
||||||
lda (ZPMemMgrSPtr)
|
lda (ZPMemMgrSPtr) In use ?
|
||||||
bpl K.FreeMem.FREED In use ?
|
bmi .11
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
bra K.FreeMem.FREED
|
||||||
|
|
||||||
|
.11 pla
|
||||||
|
|
||||||
ldy #S.MEM.REFCNT
|
ldy #S.MEM.REFCNT
|
||||||
lda (ZPMemMgrSPtr),y Get count of those referencing this hMem
|
lda (ZPMemMgrSPtr),y Get count of those referencing this hMem
|
||||||
dec only one left ?
|
dec only one left ?
|
||||||
|
|
|
@ -57,22 +57,22 @@ K.ExecL sty .1+1
|
||||||
K.ExecV >STYA PS.ArgV
|
K.ExecV >STYA PS.ArgV
|
||||||
>PULLB PS.Flags
|
>PULLB PS.Flags
|
||||||
|
|
||||||
PS.Exec stz PS.Load.hBIN
|
PS.Exec jsr PS.CreateChild A=PID,Child S.PS at ZPPtr3,PS.Load.hMem
|
||||||
|
|
||||||
jsr PS.CreateChild A=PID,Child S.PS at ZPPtr3,PS.Load.hMem
|
|
||||||
bcs .9
|
bcs .9
|
||||||
sta .8+1
|
sta .8+1
|
||||||
|
|
||||||
|
* stz PS.Load.hBIN
|
||||||
|
stz K.IOBuf
|
||||||
jsr PS.Load
|
jsr PS.Load
|
||||||
bcs .90
|
bcs .90
|
||||||
jsr PS.AddArgV
|
jsr PS.AddArgV
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
.90 pha save error code
|
.90 pha save error code
|
||||||
lda PS.Load.hBIN
|
* lda PS.Load.hBIN
|
||||||
beq .91
|
* beq .91
|
||||||
|
|
||||||
jsr K.FreeMem
|
* jsr K.FreeMem
|
||||||
|
|
||||||
.91 lda .8+1
|
.91 lda .8+1
|
||||||
jsr CORE.PSFree
|
jsr CORE.PSFree
|
||||||
|
@ -140,42 +140,38 @@ PS.CreateChild ldx CORE.PSCount
|
||||||
lda CORE.LastPSID
|
lda CORE.LastPSID
|
||||||
sta (ZPPtr3),y
|
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...
|
ldy #S.PS.hPREFIX copy hPREFIX...
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
jsr K.NewStr
|
jsr K.NewStr
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr PS.SetMemOwner Set Ownership
|
jsr PS.SetMemOwner Set Ownership
|
||||||
|
|
||||||
txa
|
txa
|
||||||
ldy #S.PS.hPREFIX
|
ldy #S.PS.hPREFIX
|
||||||
sta (ZPPtr3),y
|
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
|
lda (pPs),y
|
||||||
jsr PS.DupEnv
|
jsr PS.DupEnv
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.PS.hENV
|
ldy #S.PS.hENV
|
||||||
sta (ZPPtr3),y
|
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.6 ldy #S.PS.hPREFIX reuse same hPREFIX...
|
.6 ldy #S.PS.hENV reuse hENV from parent PS
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
sta (ZPPtr3),y
|
|
||||||
|
.8 sta (ZPPtr3),y
|
||||||
|
|
||||||
ldy #S.PS.hENV ...and hENV from parent PS
|
ldy #S.PS.hStdIn
|
||||||
lda (pPs),y
|
|
||||||
sta (ZPPtr3),y
|
|
||||||
|
|
||||||
.8 ldy #S.PS.hStdIn
|
|
||||||
|
|
||||||
.81 lda (pPs),y
|
.81 lda (pPs),y
|
||||||
sta (ZPPtr3),y
|
sta (ZPPtr3),y
|
||||||
|
@ -263,9 +259,9 @@ PS.Load >PUSHWI K.S.STAT
|
||||||
>STYA ZPPtr3
|
>STYA ZPPtr3
|
||||||
|
|
||||||
>LDYAI K.IOBuf
|
>LDYAI K.IOBuf
|
||||||
>SYSCALL NewStr
|
* >SYSCALL NewStr
|
||||||
bcs .99
|
* bcs .99
|
||||||
stx PS.Load.hBIN
|
* stx PS.Load.hBIN
|
||||||
|
|
||||||
bra PS.LoadBIN.YA
|
bra PS.LoadBIN.YA
|
||||||
|
|
||||||
|
@ -275,7 +271,8 @@ PS.Load >PUSHWI K.S.STAT
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
PS.LoadBIN >LDYA PS.ArgV
|
PS.LoadBIN >LDYA PS.ArgV
|
||||||
|
|
||||||
PS.LoadBIN.YA jsr BIN.Load
|
PS.LoadBIN.YA jsr BIN.Load
|
||||||
bcs .9
|
bcs .9
|
||||||
>STYA ZPPtr4 save PTR to Code Segment
|
>STYA ZPPtr4 save PTR to Code Segment
|
||||||
|
@ -400,10 +397,14 @@ PS.Load.hMem .BS 1
|
||||||
PS.AddArgV stz PS.Load.ArgSize
|
PS.AddArgV stz PS.Load.ArgSize
|
||||||
stz PS.Load.ArgSize+1
|
stz PS.Load.ArgSize+1
|
||||||
|
|
||||||
lda PS.Load.hBIN
|
* lda PS.Load.hBIN
|
||||||
|
|
||||||
|
lda K.IOBuf
|
||||||
beq .10
|
beq .10
|
||||||
|
|
||||||
jsr K.GetMemPtr
|
* jsr K.GetMemPtr
|
||||||
|
|
||||||
|
>LDYAI K.IOBuf
|
||||||
jsr K.strlen
|
jsr K.strlen
|
||||||
iny +1 for \0
|
iny +1 for \0
|
||||||
>STYA PS.Load.ArgSize
|
>STYA PS.Load.ArgSize
|
||||||
|
@ -453,10 +454,13 @@ PS.AddArgV stz PS.Load.ArgSize
|
||||||
ldy #S.PS.hARGV
|
ldy #S.PS.hARGV
|
||||||
sta (ZPPtr3),y
|
sta (ZPPtr3),y
|
||||||
|
|
||||||
lda PS.Load.hBIN
|
* lda PS.Load.hBIN
|
||||||
|
lda K.IOBuf
|
||||||
beq .6
|
beq .6
|
||||||
|
|
||||||
jsr K.GetMemPtr
|
* jsr K.GetMemPtr
|
||||||
|
|
||||||
|
>LDYAI K.IOBuf
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
jsr PS.AddPtr1ToStrV
|
jsr PS.AddPtr1ToStrV
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user