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