mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-05 23:30:15 +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
|
||||
sta (pPs),y
|
||||
jmp SetPWD.I
|
||||
* clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
Cmd.Exec.CSYN lda #E.CSYN
|
||||
sec
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 ?
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user