mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-24 21:31:20 +00:00
Kernel 0.92
This commit is contained in:
parent
62618adcb5
commit
ed4490f99e
Binary file not shown.
Binary file not shown.
78
BIN/PS.S.txt
78
BIN/PS.S.txt
@ -28,7 +28,7 @@ CS.START cld
|
||||
.DA #0
|
||||
.DA CS.END-CS.START Code Size (without Constants)
|
||||
.DA DS.END-DS.START Data SegmentSize
|
||||
.DA #16 Stack Size
|
||||
.DA #32 Stack Size
|
||||
.DA #ZS.END-ZS.START Zero Page Size
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
@ -47,7 +47,36 @@ L.MSG3 .DA MSG3
|
||||
CS.INIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN >LDYA L.MSG0
|
||||
CS.RUN lda #1
|
||||
>SYSCALL ArgV
|
||||
bcs .10
|
||||
|
||||
>SYSCALL atoi
|
||||
bcs .90
|
||||
|
||||
tax
|
||||
bne .90
|
||||
|
||||
tya
|
||||
|
||||
* ldx #0
|
||||
|
||||
.11 cmp PS.Table.PID,x
|
||||
beq .12
|
||||
inx
|
||||
cpx #K.PS.MAX
|
||||
bne .11
|
||||
lda #E.NSP
|
||||
* sec
|
||||
rts
|
||||
|
||||
.12 jsr CS.RUN.DUMP
|
||||
bcs .9
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
.10 >LDYA L.MSG0
|
||||
>SYSCALL puts
|
||||
|
||||
>LDA.G PS.Index
|
||||
@ -56,15 +85,26 @@ CS.RUN >LDYA L.MSG0
|
||||
lda PS.Table.PID,x
|
||||
beq .7
|
||||
|
||||
lda PS.Table.hPS,x
|
||||
jsr CS.RUN.DUMP
|
||||
|
||||
>SLEEP
|
||||
|
||||
.7 >INC.G PS.Index
|
||||
cmp #K.PS.MAX
|
||||
bne .1
|
||||
|
||||
.8 lda #0 tell Kernel that all done ok, but
|
||||
sec we do not want to stay in memory
|
||||
.9 rts
|
||||
|
||||
.90 lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.DUMP lda PS.Table.hPS,x
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPSPtr
|
||||
|
||||
ldy #S.PS.hARGV
|
||||
lda (ZPPSPtr),y
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPArgV
|
||||
|
||||
ldy #S.PS.PPID
|
||||
lda (ZPPSPtr),y
|
||||
>PUSHA Parent PID
|
||||
@ -86,23 +126,14 @@ CS.RUN >LDYA L.MSG0
|
||||
ldy #S.PS.PID
|
||||
lda (ZPPSPtr),y
|
||||
>PUSHA
|
||||
>PUSHBI 8
|
||||
>PUSHBI 6
|
||||
>LDYA L.MSG1
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.PrintArgs
|
||||
bcs .9
|
||||
jmp CS.RUN.PrintArgs
|
||||
|
||||
>SLEEP
|
||||
|
||||
.7 >INC.G PS.Index
|
||||
cmp #K.PS.MAX
|
||||
bne .1
|
||||
|
||||
.8 lda #0 tell Kernel that all done ok, but
|
||||
sec we do not want to stay in memory
|
||||
.9 rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.DecodeFlags
|
||||
lda (ZPPSPtr) Get flags
|
||||
@ -124,9 +155,14 @@ CS.RUN.DecodeFlags
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.PrintArgs
|
||||
ldy #S.PS.hARGV
|
||||
lda (ZPPSPtr),y
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPArgV
|
||||
|
||||
.1 lda (ZPArgV)
|
||||
beq .8
|
||||
|
||||
|
||||
>PUSHW ZPArgV
|
||||
>PUSHBI 2
|
||||
>LDYA L.MSG2
|
||||
|
@ -3,7 +3,7 @@ PREFIX
|
||||
AUTO 4,1
|
||||
*--------------------------------------
|
||||
K.VER .EQ $5C00 92.0
|
||||
K.ENV.SIZE .EQ 512
|
||||
K.ENV.SIZE .EQ 256
|
||||
K.PIPE.SIZE .EQ 256
|
||||
*--------------------------------------
|
||||
K.MEM.ALIGN .EQ 16
|
||||
@ -491,7 +491,7 @@ S.PS.CPID .EQ 3
|
||||
S.PS.hCS .EQ 4
|
||||
S.PS.hDS .EQ 5
|
||||
S.PS.hSS .EQ 6
|
||||
S.PS.UID .EQ 7
|
||||
S.PS.ENVPAGECNT .EQ 7
|
||||
S.PS.hENV .EQ 8
|
||||
S.PS.hPREFIX .EQ 9
|
||||
S.PS.hStdIn .EQ 10
|
||||
@ -501,7 +501,7 @@ S.PS.RC .EQ 13
|
||||
S.PS.ARGC .EQ 14
|
||||
S.PS.hARGV .EQ 15
|
||||
|
||||
* .EQ 16
|
||||
S.PS.UID .EQ 16
|
||||
|
||||
S.PS.A .EQ 17
|
||||
S.PS.X .EQ 18
|
||||
|
@ -180,16 +180,16 @@ ENV.Search.DRV ldx #2
|
||||
.HS 2C BIT ABS
|
||||
ENV.Search.PATH ldx #4
|
||||
|
||||
>STYA ZPPtr1
|
||||
>STYA ZPPtr2
|
||||
|
||||
>LDYA ENV.VARS,x
|
||||
|
||||
jsr ENV.FindVarP1 get value for Search Path
|
||||
jsr K.GetEnv get value for Search Path
|
||||
bcs K.FileSearch.RTS
|
||||
|
||||
>STYA ENV.SearchPath
|
||||
|
||||
>LDYA ZPPtr1
|
||||
>LDYA ZPPtr2
|
||||
|
||||
ENV.Search.YA >STYA .4+1
|
||||
|
||||
@ -306,7 +306,7 @@ K.SetEnv jsr MEM.SPtr1PPtr2
|
||||
|
||||
K.SetEnv.I jsr K.UnsetEnv.I
|
||||
|
||||
jsr ENV.InitEnvP3 ZPPtr3 -> Env
|
||||
.1 jsr ENV.InitEnvP3 ZPPtr3 -> Env
|
||||
|
||||
ldy #0
|
||||
ldx #0
|
||||
@ -356,20 +356,37 @@ K.SetEnv.I jsr K.UnsetEnv.I
|
||||
sec
|
||||
adc ZPPtr4
|
||||
tax
|
||||
bcc .21
|
||||
bcc .22
|
||||
inc ZPPtr4+1
|
||||
|
||||
.21 cpx #K.ENV.SIZE
|
||||
lda ZPPtr4+1
|
||||
sbc /K.ENV.SIZE
|
||||
bcs .99
|
||||
ldy #S.PS.ENVPAGECNT
|
||||
lda (pPs),y
|
||||
cmp ZPPtr4+1
|
||||
bcs .22 env is large enough
|
||||
|
||||
jsr ENV.Dup
|
||||
bcs .9
|
||||
|
||||
ldy #$ff
|
||||
pha
|
||||
|
||||
.22 iny
|
||||
ldy #S.PS.hENV
|
||||
lda (pPs),y
|
||||
jsr K.Freemem
|
||||
|
||||
pla
|
||||
ldy #S.PS.hENV
|
||||
sta (pPs),y
|
||||
txa
|
||||
dey S.PS.ENVPAGECNT
|
||||
sta (pPs),y
|
||||
bra .1 Start over
|
||||
|
||||
.22 ldy #$ff
|
||||
|
||||
.23 iny
|
||||
lda (ZPPtr1),y
|
||||
sta (ZPPtr3),y
|
||||
bne .22
|
||||
bne .23
|
||||
|
||||
jsr ENV.NextEnvP3Y
|
||||
|
||||
@ -384,11 +401,7 @@ K.SetEnv.I jsr K.UnsetEnv.I
|
||||
|
||||
sta (ZPPtr3),y don't forget array ending 0
|
||||
clc
|
||||
rts
|
||||
|
||||
.99 lda #E.ENVF
|
||||
* sec
|
||||
rts
|
||||
.9 rts
|
||||
*/--------------------------------------
|
||||
* # GetEnv
|
||||
* searches the environment list to find the environment variable name,
|
||||
@ -728,6 +741,52 @@ ENV.AddAToBuf ldx ENV.BufLen
|
||||
inc ENV.BufLen
|
||||
rts
|
||||
*--------------------------------------
|
||||
* ENV.Dup
|
||||
* In:
|
||||
* A = ENV hMem To Duplicate
|
||||
* Out:
|
||||
* A = hMem to new ENV
|
||||
* X = Page Count
|
||||
*--------------------------------------
|
||||
ENV.Dup ldy #S.PS.ENVPAGECNT
|
||||
lda (pPs),y
|
||||
ldy #0
|
||||
|
||||
jsr K.GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA .2+1 Target Buffer
|
||||
phx save hMem
|
||||
|
||||
jsr PS.SetMemOwner Set Ownership
|
||||
|
||||
ldy #S.PS.hENV
|
||||
lda (pPs),y
|
||||
jsr K.GetMemPtr
|
||||
>STYA .1+1
|
||||
|
||||
ldy #S.PS.ENVPAGECNT
|
||||
lda (pPs),y
|
||||
pha
|
||||
|
||||
tax
|
||||
ldy #0
|
||||
|
||||
.1 lda $ffff,y SELF MODIFIED
|
||||
.2 sta $ffff,y SELF MODIFIED
|
||||
iny
|
||||
bne .1
|
||||
inc .1+2
|
||||
inc .2+2
|
||||
dex
|
||||
bne .1
|
||||
|
||||
plx Page Count
|
||||
pla hMem
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
ENV.VARS .DA .1
|
||||
.DA .2
|
||||
.DA .3
|
||||
|
@ -990,13 +990,23 @@ TskMgrInit >LDYAI MSG.TSK
|
||||
>SYSCALL puts
|
||||
|
||||
>LDYAI K.ENV.SIZE get a buffer for ENV
|
||||
jsr K.GetMem0 make sure blank!!
|
||||
jsr K.GetMem
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
ldy #S.PS.hENV
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #S.PS.ENVPAGECNT
|
||||
lda /K.ENV.SIZE
|
||||
sta (pPs),y
|
||||
|
||||
txa
|
||||
* ldy #S.PS.hENV
|
||||
iny
|
||||
sta (pPs),y
|
||||
|
||||
lda #0
|
||||
sta (ZPPtr1) make sure blank!!
|
||||
|
||||
>LDYAI K.Buf256
|
||||
>STYA K.MLI.PARAMS+1
|
||||
>MLICALL MLIGETPREFIX
|
||||
|
@ -90,8 +90,6 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||
* in :
|
||||
* out :
|
||||
* A = PSID
|
||||
* we cannot use ZPPtrs1 & 2
|
||||
* because of calling K.StrDup & PS.DupEnv
|
||||
*--------------------------------------
|
||||
PS.CreateChild ldx CORE.PSCount
|
||||
beq .3
|
||||
@ -161,18 +159,23 @@ PS.CreateChild ldx CORE.PSCount
|
||||
|
||||
sta (PS.NewPSPtr) Mark this PS with DUPENV flag
|
||||
|
||||
ldy #S.PS.hENV dup hENV from parent PS
|
||||
lda (pPs),y
|
||||
jsr PS.DupEnv
|
||||
jsr ENV.Dup dup hENV from parent PS
|
||||
bcs .9
|
||||
|
||||
ldy #S.PS.hENV
|
||||
bra .8
|
||||
|
||||
.6 ldy #S.PS.hENV reuse hENV from parent PS
|
||||
lda (pPs),y
|
||||
|
||||
ldy #S.PS.hENV
|
||||
|
||||
bra .8 A = hMem, X = PageCnt
|
||||
|
||||
.6 ldy #S.PS.ENVPAGECNT reuse hENV/pageCnt from parent PS
|
||||
lda (pPs),y
|
||||
tax
|
||||
iny
|
||||
lda (pPs),y
|
||||
|
||||
.8 sta (PS.NewPSPtr),y
|
||||
txa
|
||||
dey
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
|
||||
@ -416,33 +419,6 @@ PS.LoadGetHeader
|
||||
PS.Load.ROOT .AZ "ROOT"
|
||||
PS.Load.HEADER .AZ "#!/"
|
||||
*--------------------------------------
|
||||
* PS.DupEnv
|
||||
* In:
|
||||
* A = ENV hMem To Duplicate
|
||||
* Out:
|
||||
* A = hMem to new ENV
|
||||
* X = Count
|
||||
*--------------------------------------
|
||||
PS.DupEnv jsr K.GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
>LDYAI K.ENV.SIZE
|
||||
|
||||
jsr K.GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPPtr2 Target Buffer
|
||||
phx save hMem
|
||||
|
||||
jsr PS.SetMemOwner Set Ownership
|
||||
|
||||
jsr PS.AddPtr1ToStrVUntil0
|
||||
|
||||
pla hMem
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* K.Buf256= /.../SHELL, K.IOBuf=/.../SCRIPT
|
||||
* - or -
|
||||
* K.Buf256=/.../BINFILE,K.IOBuf=0
|
||||
|
@ -56,7 +56,6 @@ A2osX.D2 .PH $D000
|
||||
.INB USR/SRC/SYS/KERNEL.S.PS
|
||||
.INB USR/SRC/SYS/KERNEL.S.ARG
|
||||
.INB USR/SRC/SYS/KERNEL.S.ENV
|
||||
.INB USR/SRC/SYS/KERNEL.S.MATH
|
||||
.EP
|
||||
A2osX.E0 .PH $E000
|
||||
.INB USR/SRC/SYS/KERNEL.S.JMP
|
||||
@ -67,6 +66,7 @@ A2osX.E0 .PH $E000
|
||||
.INB USR/SRC/SYS/KERNEL.S.IO
|
||||
.INB USR/SRC/SYS/KERNEL.S.PFT
|
||||
********* TMP ***** go to A2osX.D2
|
||||
.INB USR/SRC/SYS/KERNEL.S.MATH
|
||||
.LIST ON
|
||||
DevMgr.FreeMem .EQ *
|
||||
.LIST OFF
|
||||
|
Loading…
x
Reference in New Issue
Block a user