mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-11 00:31:06 +00:00
Kernel 0.9.2
This commit is contained in:
parent
743545cb8e
commit
f086318868
@ -530,15 +530,28 @@ Load a file in AUX memory (Stock Objects)
|
||||
Y,A = File Length
|
||||
X = hMem of Loaded Object in AUX mem
|
||||
|
||||
# Exec
|
||||
# ExecL
|
||||
|
||||
## C
|
||||
`int exec(const char* argv[], short int flags);`
|
||||
`int execl(const char* cmdline, short int flags);`
|
||||
|
||||
## ASM
|
||||
`>PUSHB flags`
|
||||
`>LDYA cmdline`
|
||||
`>SYSCALL execl`
|
||||
|
||||
## RETURN VALUE
|
||||
A = Child PSID
|
||||
|
||||
# ExecV
|
||||
|
||||
## C
|
||||
`int execv(const char* argv[], short int flags);`
|
||||
|
||||
## ASM
|
||||
`>PUSHB flags`
|
||||
`>LDYA argv`
|
||||
`>SYSCALL exec`
|
||||
`>SYSCALL execv`
|
||||
|
||||
## RETURN VALUE
|
||||
A = Child PSID
|
||||
@ -559,7 +572,7 @@ A = Child PSID
|
||||
|
||||
# GetPSStat
|
||||
**In:**
|
||||
Y,A = Ptr to 24 bytes buffer
|
||||
Y,A = Ptr to K.PS.MAX*2+1 bytes buffer
|
||||
|
||||
## RETURN VALUE
|
||||
Buffer filled with PS stats
|
||||
|
Binary file not shown.
Binary file not shown.
@ -199,11 +199,12 @@ SYS.UnloadLib .EQ $9A
|
||||
SYS.LoadDrv .EQ $9C
|
||||
SYS.InsDrv .EQ $9E
|
||||
*--------------------------------------
|
||||
* .EQ $A0
|
||||
* .EQ $A2
|
||||
SYS.ExecL .EQ $A0
|
||||
SYS.ExecV .EQ $A2
|
||||
* .EQ $A4
|
||||
* .EQ $A6
|
||||
SYS.Exec .EQ $A8
|
||||
|
||||
* .EQ $A8
|
||||
SYS.GetMemStat .EQ $AA
|
||||
SYS.GetPSStatus .EQ $AC
|
||||
SYS.GetPSStat .EQ $AE
|
||||
|
@ -107,7 +107,8 @@ Nod.Table.hFD .EQ $0C60 K.NOD.MAX
|
||||
*--------------------------------------
|
||||
PS.Table.hMem .EQ $0C80 K.PS.MAX
|
||||
PS.Table.PID .EQ $0CA0 K.PS.MAX
|
||||
PS.Table.Stat .EQ $0CC0 K.PS.MAX*2
|
||||
PS.Table.Hits .EQ $0CC0 K.PS.MAX
|
||||
PS.Table.Stats .EQ $0CE0 K.PS.MAX
|
||||
*--------------------------------------
|
||||
Evt.Table .EQ $0D60 K.EVT.MAX*S.EVT.SIZE=4*8=32b
|
||||
*--------------------------------------
|
||||
|
@ -2,13 +2,11 @@ NEW
|
||||
PREFIX /A2OSX.BUILD
|
||||
AUTO 4,1
|
||||
*--------------------------------------
|
||||
CORE.Run lda CORE.PSCount
|
||||
sta CORE.PSIndex
|
||||
CORE.Run stz CORE.PSIndex
|
||||
|
||||
ldx #0
|
||||
|
||||
beq CORE.Events SHOULD NEVER HAPPEN!!!
|
||||
|
||||
.1 ldx CORE.PSIndex
|
||||
lda PS.Table.hMem-1,x
|
||||
.1 lda PS.Table.hMem,x
|
||||
beq .8
|
||||
|
||||
jsr K.GetMemPtr
|
||||
@ -27,9 +25,7 @@ CORE.Run lda CORE.PSCount
|
||||
eor #S.PS.F.HOLD unmark as HOLD
|
||||
sta (pPs)
|
||||
|
||||
.2 jsr CORE.PSSelect Restore ZP & Ptrs
|
||||
|
||||
jsr CORE.PSExec INIT/RUN/QUIT/RESUME
|
||||
.2 jsr CORE.PSExec INIT/RUN/QUIT/RESUME
|
||||
dec IRQ.InKernel
|
||||
|
||||
bcc .61 Error ?
|
||||
@ -84,7 +80,9 @@ CORE.Run lda CORE.PSCount
|
||||
|
||||
.7 jsr CORE.PSLeave Save ZP & Ptrs
|
||||
|
||||
.8 dec CORE.PSIndex
|
||||
.8 inc CORE.PSIndex
|
||||
ldx CORE.PSIndex
|
||||
cpx #K.PS.MAX
|
||||
bne .1
|
||||
*--------------------------------------
|
||||
CORE.Events jsr CORE.GetEvents
|
||||
@ -215,17 +213,11 @@ CORE.GetEvents lda #Evt.Table
|
||||
* CS: Not Dispatched
|
||||
* CC: Event Cleared
|
||||
*--------------------------------------
|
||||
CORE.Dispatch lda CORE.EvtCount
|
||||
beq .9
|
||||
CORE.Dispatch stz CORE.PSIndex
|
||||
|
||||
lda CORE.PSCount
|
||||
beq .9
|
||||
|
||||
sta CORE.PSIndex
|
||||
ldx #0
|
||||
|
||||
.1 ldx CORE.PSIndex
|
||||
|
||||
lda PS.Table.hMem-1,x
|
||||
.1 lda PS.Table.hMem,x
|
||||
beq .5
|
||||
|
||||
jsr K.GetMemPtr
|
||||
@ -278,7 +270,9 @@ CORE.Dispatch lda CORE.EvtCount
|
||||
|
||||
.4 jsr CORE.PSLeave
|
||||
|
||||
.5 dec CORE.PSIndex
|
||||
.5 inc CORE.PSIndex
|
||||
ldx CORE.PSIndex
|
||||
cpx #K.PS.MAX
|
||||
bne .1
|
||||
|
||||
.9 sec
|
||||
@ -319,48 +313,48 @@ CORE.PSFree.A sta .1+1 Save PS ID
|
||||
|
||||
.1 lda #$ff Self Modified
|
||||
|
||||
ldx CORE.PSCount
|
||||
ldx #0
|
||||
|
||||
.2 cmp PS.Table.PID-1,x
|
||||
.2 cmp PS.Table.PID,x
|
||||
beq .3
|
||||
dex
|
||||
inx
|
||||
cpx #K.PS.MAX
|
||||
bne .2
|
||||
bra *
|
||||
|
||||
.3 stz PS.Table.PID-1,x
|
||||
lda PS.TABLE.hMem-1,x
|
||||
stz PS.TABLE.hMem-1,x
|
||||
.3 stz PS.Table.PID,x
|
||||
lda PS.TABLE.hMem,x
|
||||
stz PS.TABLE.hMem,x
|
||||
.4 jmp K.FreeMem
|
||||
|
||||
.8 lda (ZPPtr1),y
|
||||
bne .4
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* X unmodofied
|
||||
* X unmodified
|
||||
*--------------------------------------
|
||||
CORE.GetPSByID tay
|
||||
bne .1
|
||||
>LDYAI CORE.S.PS0 Select PS0
|
||||
clc
|
||||
rts
|
||||
|
||||
beq .1
|
||||
.1 jsr CORE.GetPS
|
||||
bcs .9
|
||||
lda PS.TABLE.hMem-1,y
|
||||
beq *
|
||||
|
||||
lda PS.TABLE.hMem,y
|
||||
jmp K.GetMemPtr
|
||||
|
||||
>LDYAI CORE.S.PS0 Select PS0
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CORE.GetPS ldy CORE.PSCount
|
||||
beq .9
|
||||
CORE.GetPS ldy #0
|
||||
|
||||
.1 cmp PS.Table.PID-1,y
|
||||
.1 cmp PS.Table.PID,y
|
||||
beq .8
|
||||
dey
|
||||
iny
|
||||
cpy #K.PS.MAX
|
||||
bne .1
|
||||
|
||||
.9 lda #K.E.NSP
|
||||
sec
|
||||
* sec
|
||||
rts
|
||||
|
||||
.8 clc
|
||||
@ -456,7 +450,9 @@ CORE.PSLeave ldy #S.PS.ZP+ZPBIN.SIZE-1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.PSExec lda (pPS)
|
||||
CORE.PSExec jsr CORE.PSSelect Restore ZP & Ptrs
|
||||
|
||||
lda (pPS)
|
||||
bit #S.PS.F.SLEEP
|
||||
bne CORE.PSResume
|
||||
|
||||
@ -545,7 +541,6 @@ CORE.InKernelStat .BS 1
|
||||
CORE.EvtIndex .BS 1
|
||||
CORE.EvtCount .BS 1
|
||||
CORE.PSIndex .BS 1
|
||||
CORE.PSCount .DA #0
|
||||
CORE.LastPSID .DA #0
|
||||
CORE.S.PS0 .BS S.PS.hStdErr+1
|
||||
*--------------------------------------
|
||||
|
@ -153,7 +153,7 @@ Kernel.Init3 sta SETALTZP
|
||||
>LDYAI STARTUP.SHELL
|
||||
bra .8
|
||||
|
||||
.1 >PUSHWI STARTUP.SCRIPT
|
||||
.1 >PUSHWI STARTUP.CMDLINE
|
||||
>PUSHBI 2
|
||||
>LDYAI MSG.Startup
|
||||
>SYSCALL printf
|
||||
@ -161,14 +161,9 @@ Kernel.Init3 sta SETALTZP
|
||||
>PUSHBI 0 PS Flags
|
||||
>LDYAI STARTUP.CMDLINE
|
||||
|
||||
.8 >SYSCALL ExpandStr
|
||||
phx Save Expanded CMDLINE for discard
|
||||
|
||||
>SYSCALL Exec
|
||||
.8 >SYSCALL ExecL
|
||||
|
||||
bcs .9
|
||||
pla
|
||||
jsr K.FreeMem ...discard...
|
||||
|
||||
>PUSHBI 1
|
||||
>LDYAI MSG.Init3.OK
|
||||
@ -509,9 +504,9 @@ MemMgrInit >LDYAI Mem.MHiMem
|
||||
|
||||
sta CLRWRITEAUX
|
||||
|
||||
ldx #K.Dev.MAX*4-1
|
||||
ldx #K.DEV.MAX*2-1
|
||||
|
||||
.1 stz Dev.Table.hFD,x
|
||||
.1 stz Dev.Table.hPath,x
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
@ -521,6 +516,12 @@ MemMgrInit >LDYAI Mem.MHiMem
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
ldx #K.PS.MAX*4-1
|
||||
|
||||
.3 stz PS.Table.hMem,x
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Setup AuxLC $FFFE->Kernel IRQ Handler
|
||||
@ -1060,10 +1061,7 @@ I.ENV.PATH .AZ "PATH=${A2OSX}SBIN/;${A2OSX}BIN/"
|
||||
I.ENV.LIB .AZ "LIB=${A2OSX}LIB/"
|
||||
I.ENV.DRV .AZ "DRV=${A2OSX}DRV/"
|
||||
STARTUP.SHELL .AZ "${A2OSX}SBIN/SHELL"
|
||||
.HS 00
|
||||
STARTUP.CMDLINE .AZ "${A2OSX}SBIN/SHELL"
|
||||
STARTUP.SCRIPT .AZ "${A2OSX}A2osX.STARTUP"
|
||||
.HS 00
|
||||
STARTUP.CMDLINE .AZ "${A2OSX}SBIN/SHELL ${A2OSX}A2osX.STARTUP"
|
||||
*--------------------------------------
|
||||
MLIOPEN00 .DA #3
|
||||
.DA A2OSXCONF
|
||||
|
@ -160,11 +160,13 @@ K.IrqH.Switch inc IRQ.Tick
|
||||
|
||||
stz CORE.InKernelStat
|
||||
|
||||
ldx CORE.PSCount
|
||||
ldx #K.PS.MAX-1
|
||||
|
||||
.1 stz PS.Table.Stat-1,x
|
||||
.1 lda PS.Table.Hits-1,x
|
||||
stz PS.Table.Hits-1,x
|
||||
stz PS.Table.Stats-1,x
|
||||
dex
|
||||
bne .1
|
||||
bpl .1
|
||||
|
||||
.2 lda IRQ.InKernel keep V flag set
|
||||
bpl .3
|
||||
@ -176,7 +178,7 @@ K.IrqH.Switch inc IRQ.Tick
|
||||
rts
|
||||
|
||||
.3 ldx CORE.PSIndex
|
||||
inc PS.Table.Stat-1,x
|
||||
inc PS.Table.Hits-1,x
|
||||
|
||||
bit A2osX.F A2osX.F.PMODE .EQ %01000000
|
||||
bvc .8
|
||||
|
@ -98,11 +98,11 @@ K.SYSCALL.JMP .DA 0 $00
|
||||
.DA K.LoadDrv
|
||||
.DA K.InsDrv
|
||||
|
||||
.DA 0 $A0
|
||||
.DA 0
|
||||
.DA K.ExecL $A0
|
||||
.DA K.ExecV
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA K.Exec
|
||||
.DA K.GetMemStat
|
||||
.DA K.GetPSStatus
|
||||
.DA K.GetPSStat
|
||||
|
@ -5,26 +5,60 @@ AUTO 4,1
|
||||
PS.Flags .BS 1
|
||||
PS.Args .BS 2
|
||||
*/--------------------------------------
|
||||
* # Exec
|
||||
* # ExecL
|
||||
* ## C
|
||||
* `int exec(const char* argv[], short int flags);`
|
||||
* `int execl(const char* cmdline, short int flags);`
|
||||
* ## ASM
|
||||
* `>PUSHB flags`
|
||||
* `>LDYA argv`
|
||||
* `>SYSCALL exec`
|
||||
* `>LDYA cmdline`
|
||||
* `>SYSCALL execl`
|
||||
* ## RETURN VALUE
|
||||
* A = Child PSID
|
||||
*\--------------------------------------
|
||||
K.Exec >STYA PS.Args
|
||||
K.ExecL jsr ExpandStr
|
||||
bcs .9
|
||||
phx
|
||||
|
||||
jsr
|
||||
|
||||
|
||||
plx
|
||||
jsr FreeMem
|
||||
|
||||
|
||||
.9 >RET 1 discard PS.Args
|
||||
*/--------------------------------------
|
||||
* # ExecV
|
||||
* ## C
|
||||
* `int execv(const char* argv[], short int flags);`
|
||||
* ## ASM
|
||||
* `>PUSHB flags`
|
||||
* `>LDYA argv`
|
||||
* `>SYSCALL execv`
|
||||
* ## RETURN VALUE
|
||||
* A = Child PSID
|
||||
*\--------------------------------------
|
||||
K.ExecV >STYA PS.Args
|
||||
>PULLB PS.Flags
|
||||
|
||||
K.Exec.I jsr PS.CreateChild Child S.PS at ZPPtr3
|
||||
bcs .9
|
||||
|
||||
sta .8+1
|
||||
|
||||
>LDYA PS.Args /path/cmd \0
|
||||
|
||||
>LDYA PS.Args
|
||||
jsr PS.DupArgs
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
sta (ZPPtr3),y
|
||||
pha
|
||||
dey S.PS.ARGC
|
||||
txa
|
||||
sta (ZPPtr3),y
|
||||
|
||||
pla
|
||||
>SYSCALL GetMemPtr
|
||||
|
||||
jsr PS.Load
|
||||
bcc .8
|
||||
|
||||
@ -47,16 +81,11 @@ K.Exec.I jsr PS.CreateChild Child S.PS at ZPPtr3
|
||||
*--------------------------------------
|
||||
PS.CreateChild ldx #0
|
||||
|
||||
.1 cpx CORE.PSCount
|
||||
beq .2
|
||||
|
||||
lda PS.Table.PID,x
|
||||
beq .31 Found an empty slot
|
||||
.1 lda PS.Table.PID,x
|
||||
beq .2 Found an empty slot
|
||||
inx
|
||||
bra .1
|
||||
|
||||
.2 cpx #K.PS.MAX
|
||||
bne .3
|
||||
cpx #K.PS.MAX
|
||||
bne .1
|
||||
|
||||
lda #K.E.OOH
|
||||
sec
|
||||
@ -65,11 +94,9 @@ PS.CreateChild ldx #0
|
||||
.99 plx
|
||||
rts
|
||||
|
||||
.3 inc CORE.PSCount
|
||||
|
||||
.31 phx save PS inex
|
||||
.2 phx save PS index
|
||||
|
||||
.4 inc CORE.LastPSID Get a PSID not alredy running
|
||||
.4 inc CORE.LastPSID Get a PSID not already running
|
||||
beq .4 not = 0
|
||||
lda CORE.LastPSID
|
||||
jsr CORE.GetPSByID
|
||||
@ -130,16 +157,7 @@ PS.CreateChild ldx #0
|
||||
lda (pPs),y
|
||||
sta (ZPPtr3),y
|
||||
|
||||
.8 >LDYA PS.Args
|
||||
jsr PS.DupArgs
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
sta (ZPPtr3),y
|
||||
dey S.PS.ARGC
|
||||
txa
|
||||
sta (ZPPtr3),y
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
.8 ldy #S.PS.hStdIn
|
||||
|
||||
.81 lda (pPs),y
|
||||
sta (ZPPtr3),y
|
||||
@ -271,14 +289,14 @@ PS.Load jsr BIN.Load Y,A=filename full path
|
||||
PS.DupArgs >STYA ZPPtr1
|
||||
|
||||
>STYA ZPPtr2
|
||||
|
||||
|
||||
lda #1
|
||||
sta .7+1
|
||||
lda #0
|
||||
sta .8+1 len = 1 for array ending 0
|
||||
|
||||
|
||||
.1 lda (ZPPtr2)
|
||||
beq .8
|
||||
beq .7
|
||||
|
||||
ldy #0
|
||||
|
||||
@ -304,7 +322,8 @@ PS.DupArgs >STYA ZPPtr1
|
||||
|
||||
.7 ldy #$ff SELF MODIFIED
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
bra PS.Dup.I
|
||||
|
||||
bra PS.DupStrV
|
||||
*--------------------------------------
|
||||
* PS.DupEnv
|
||||
* In:
|
||||
@ -318,7 +337,7 @@ PS.DupEnv jsr K.GetMemPtr
|
||||
|
||||
>LDYAI K.ENV.SIZE
|
||||
|
||||
PS.Dup.I jsr K.GetMem
|
||||
PS.DupStrV jsr K.GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPPtr2
|
||||
@ -416,7 +435,7 @@ K.GetPSStatus jsr CORE.GetPSByID
|
||||
*/--------------------------------------
|
||||
* # GetPSStat
|
||||
* **In:**
|
||||
* Y,A = Ptr to 24 bytes buffer
|
||||
* Y,A = Ptr to K.PS.MAX*2+1 bytes buffer
|
||||
* ## RETURN VALUE
|
||||
* Buffer filled with PS stats
|
||||
*\--------------------------------------
|
||||
@ -437,12 +456,12 @@ K.GetPSStat >STYA ZPPtr1
|
||||
sta (ZPPtr1),y
|
||||
iny
|
||||
|
||||
lda PS.Table.Stat,x
|
||||
lda PS.Table.Stats,x
|
||||
sta (ZPPtr1),y
|
||||
iny
|
||||
|
||||
.2 inx
|
||||
cpx CORE.PSCount
|
||||
cpx #K.PS.MAX
|
||||
bne .1
|
||||
|
||||
.9 tya
|
||||
|
Loading…
x
Reference in New Issue
Block a user