mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-27 16:29:06 +00:00
Kernel 0.9.2
This commit is contained in:
parent
5b5b785a26
commit
382be33060
@ -1,7 +1,10 @@
|
|||||||
*** Auto generated by docgen.cmd ***
|
*** Auto generated by docgen.cmd ***
|
||||||
|
|
||||||
# Args2ArgV
|
# Args2ArgV
|
||||||
int args2argv(char* args, char* argv[])
|
Expand String and convert to ArgV List
|
||||||
|
|
||||||
|
## C
|
||||||
|
short int args2argv(char* args, char* argv[])
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
`>PUSHW argv`
|
`>PUSHW argv`
|
||||||
@ -9,6 +12,7 @@ int args2argv(char* args, char* argv[])
|
|||||||
`>SYSCALL Args2ArgV
|
`>SYSCALL Args2ArgV
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
A = Arg count
|
||||||
|
|
||||||
# ArgV
|
# ArgV
|
||||||
|
|
||||||
@ -540,7 +544,20 @@ Load a file in AUX memory (Stock Objects)
|
|||||||
Y,A = File Length
|
Y,A = File Length
|
||||||
X = hMem of Loaded Object in AUX mem
|
X = hMem of Loaded Object in AUX mem
|
||||||
|
|
||||||
# Exec
|
# ExecL
|
||||||
|
|
||||||
|
## C
|
||||||
|
`int execl(const char* cmdline, short int flags);`
|
||||||
|
|
||||||
|
## ASM
|
||||||
|
`>PUSHB flags`
|
||||||
|
`>LDYA cmdline`
|
||||||
|
`>SYSCALL execl`
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
A = Child PSID
|
||||||
|
|
||||||
|
# ExecV
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int exec(const char* argv[], short int flags);`
|
`int exec(const char* argv[], short int flags);`
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -215,8 +215,8 @@ SYS.UnloadLib .EQ $9A
|
|||||||
SYS.LoadDrv .EQ $9C
|
SYS.LoadDrv .EQ $9C
|
||||||
SYS.InsDrv .EQ $9E
|
SYS.InsDrv .EQ $9E
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.Exec .EQ $A0
|
SYS.ExecL .EQ $A0
|
||||||
* .EQ $A2
|
SYS.ExecV .EQ $A2
|
||||||
* .EQ $A4
|
* .EQ $A4
|
||||||
* .EQ $A6
|
* .EQ $A6
|
||||||
|
|
||||||
|
@ -117,14 +117,9 @@ CS.RUN.LOOP1 >SLEEP
|
|||||||
|
|
||||||
.2 >PUSHBI S.PS.F.DUPENV+S.PS.F.HOLD
|
.2 >PUSHBI S.PS.F.DUPENV+S.PS.F.HOLD
|
||||||
|
|
||||||
|
|
||||||
lda #2
|
lda #2
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
>SYSCALL puts
|
>SYSCALL ExecV
|
||||||
|
|
||||||
lda #2
|
|
||||||
>SYSCALL ArgV
|
|
||||||
>SYSCALL Exec
|
|
||||||
bcs CS.RUN.9
|
bcs CS.RUN.9
|
||||||
|
|
||||||
>SLEEP
|
>SLEEP
|
||||||
|
@ -94,8 +94,7 @@ CS.RUN lda #0
|
|||||||
|
|
||||||
>PUSHBI S.PS.F.HOLD
|
>PUSHBI S.PS.F.HOLD
|
||||||
>LDYA L.SHELL
|
>LDYA L.SHELL
|
||||||
>SYSCALL Exec
|
>SYSCALL ExecL
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT
|
CS.DOEVENT
|
||||||
|
@ -29,18 +29,10 @@ Cmd.Parse >STZ.G CMD.bCmd
|
|||||||
lda #S.PS.F.HOLD+S.PS.F.DUPENV
|
lda #S.PS.F.HOLD+S.PS.F.DUPENV
|
||||||
>STA.G CMD.PSFlags
|
>STA.G CMD.PSFlags
|
||||||
|
|
||||||
>LDYA ZPCMDBuf
|
|
||||||
>SYSCALL ExpandStr
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
phx save expanded string
|
|
||||||
pha
|
|
||||||
>PUSHW ZPCMDBuf
|
>PUSHW ZPCMDBuf
|
||||||
pla Y,A = expanded string
|
>LDYA ZPCMDBuf
|
||||||
|
|
||||||
>SYSCALL Args2ArgV
|
>SYSCALL Args2ArgV
|
||||||
pla Get Back expanded string
|
|
||||||
>SYSCALL FreeMem
|
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
@ -107,12 +99,17 @@ Cmd.CheckCmd ldy #$ff
|
|||||||
bra .6 go check type...
|
bra .6 go check type...
|
||||||
|
|
||||||
.2 >LDYA L.CMD.INT
|
.2 >LDYA L.CMD.INT
|
||||||
jsr CMD.SearchInt no / found, search internal...
|
jsr CMD.Search no / found, search internal...
|
||||||
bcs .4 not internal, search PATH
|
bcs .4 not internal, search PATH
|
||||||
|
|
||||||
|
phx
|
||||||
|
plx
|
||||||
|
beq .3 if STARTPROC, skip keyword
|
||||||
|
|
||||||
jsr CMD.AddYAToArgV X unmodified
|
jsr CMD.AddYAToArgV X unmodified
|
||||||
bcs .9
|
bcs .9
|
||||||
txa
|
|
||||||
|
.3 txa
|
||||||
>STA.G CMD.bCmd
|
>STA.G CMD.bCmd
|
||||||
|
|
||||||
clc
|
clc
|
||||||
@ -212,7 +209,7 @@ Cmd.Exec lda (ZPArgVBuf)
|
|||||||
|
|
||||||
.1 >PUSHB.G CMD.PSFlags
|
.1 >PUSHB.G CMD.PSFlags
|
||||||
>LDYA ZPArgVBuf
|
>LDYA ZPArgVBuf
|
||||||
>SYSCALL exec
|
>SYSCALL execv
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* STARTPROC : intcmd = 0
|
* STARTPROC : intcmd = 0
|
||||||
@ -453,7 +450,8 @@ Cmd.INT.ECHO ldx #1
|
|||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.INT.READ lda (ZPCMDBuf)
|
Cmd.INT.READ ldx #1
|
||||||
|
jsr Cmd.GetArgX
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
@ -667,7 +665,7 @@ CMD.AddYAToArgV >STYA ZPPtr1
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.SearchInt >STYA ZPPtr2
|
CMD.Search >STYA ZPPtr2
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
@ -680,7 +678,7 @@ CMD.SearchInt >STYA ZPPtr2
|
|||||||
|
|
||||||
plx
|
plx
|
||||||
>LDYA ZPPtr2
|
>LDYA ZPPtr2
|
||||||
clc Found an internal Cmd...
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 inc ZPPtr2
|
.2 inc ZPPtr2
|
||||||
|
@ -3,28 +3,39 @@ PREFIX /A2OSX.BUILD
|
|||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Args2ArgV
|
* # Args2ArgV
|
||||||
* int args2argv(char* args, char* argv[])
|
* Expand String and convert to ArgV List
|
||||||
|
* ## C
|
||||||
|
* short int args2argv(char* args, char* argv[])
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* `>PUSHW argv`
|
* `>PUSHW argv`
|
||||||
* `>LDYA args`
|
* `>LDYA args`
|
||||||
* `>SYSCALL Args2ArgV
|
* `>SYSCALL Args2ArgV
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
|
* A = Arg count
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
ARG.bInQuote .BS 1
|
ARG.bInQuote .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.Args2ArgV jsr MEM.SPtr1PPtr2
|
K.Args2ArgV pha
|
||||||
|
>PULLW ZPPtr2 Get target buffer
|
||||||
|
pla
|
||||||
|
|
||||||
ldx #0 Arg Count
|
K.Args2ArgV.I jsr K.ExpandStr
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA ZPPtr1
|
||||||
|
stx .80+1
|
||||||
|
|
||||||
|
ldx #0 Arg Count
|
||||||
|
|
||||||
stz ARG.bInQuote
|
stz ARG.bInQuote
|
||||||
|
|
||||||
.1 jsr ARG.GetCharPtr1
|
.1 jsr MEM.GetCharPtr1
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
cmp #C.SPACE
|
cmp #C.SPACE
|
||||||
beq .1 skip leading spaces
|
beq .1 skip leading spaces
|
||||||
|
|
||||||
.2 cmp #'"' found a quote ?
|
.2 cmp #'"' found a quote ?
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
lda ARG.bInQuote
|
lda ARG.bInQuote
|
||||||
@ -40,23 +51,27 @@ K.Args2ArgV jsr MEM.SPtr1PPtr2
|
|||||||
|
|
||||||
inx Found one arg !!!
|
inx Found one arg !!!
|
||||||
lda #0 set this token End
|
lda #0 set this token End
|
||||||
jsr ARG.PutCharPtr2
|
jsr MEM.PutCharPtr2
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.6 jsr ARG.PutCharPtr2
|
.6 jsr MEM.PutCharPtr2
|
||||||
|
|
||||||
.7 jsr ARG.GetCharPtr1
|
.7 jsr MEM.GetCharPtr1
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
inx
|
inx
|
||||||
|
|
||||||
.8 jsr ARG.PutCharPtr2 set Argv[x] Ending 0
|
.8 jsr MEM.PutCharPtr2 set Argv[x] Ending 0
|
||||||
|
|
||||||
sta (ZPPtr2) set Array Ending 0
|
sta (ZPPtr2) set Array Ending 0
|
||||||
|
phx
|
||||||
|
|
||||||
txa X=Arg Count
|
.80 lda #$FF SELF MODIFIED
|
||||||
|
jsr K.FreeMem Discard expanded string
|
||||||
|
|
||||||
clc
|
pla get back Arg Count
|
||||||
|
|
||||||
|
* clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # ArgV
|
* # ArgV
|
||||||
@ -83,10 +98,10 @@ K.ArgV tax save requested arg#
|
|||||||
dex
|
dex
|
||||||
bmi .7
|
bmi .7
|
||||||
|
|
||||||
.3 jsr ARG.GetCharPtr1 skip str
|
.3 jsr MEM.GetCharPtr1 skip str
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
jsr ARG.NextCharPtr1 skip \0
|
jsr MEM.NextCharPtr1 skip \0
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.7 >LDYA ZPPtr1
|
.7 >LDYA ZPPtr1
|
||||||
@ -97,21 +112,6 @@ K.ArgV tax save requested arg#
|
|||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ARG.GetCharPtr1 lda (ZPPtr1)
|
|
||||||
beq ARG.GetCharPtr1.8
|
|
||||||
ARG.NextCharPtr1
|
|
||||||
inc ZPPtr1
|
|
||||||
bne ARG.GetCharPtr1.8
|
|
||||||
inc ZPPtr1+1 never Z
|
|
||||||
ARG.GetCharPtr1.8
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
ARG.PutCharPtr2 sta (ZPPtr2)
|
|
||||||
inc ZPPtr2
|
|
||||||
bne .8
|
|
||||||
inc ZPPtr2+1
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.SRC/SYS/KERNEL.S.ARG
|
SAVE /A2OSX.SRC/SYS/KERNEL.S.ARG
|
||||||
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
||||||
|
@ -140,16 +140,17 @@ Kernel.Init3 sta SETALTZP
|
|||||||
>LDYAI MSG.Prefix
|
>LDYAI MSG.Prefix
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
* lda KBD
|
lda KBD
|
||||||
* bpl .1
|
bpl .1
|
||||||
* sta KBDSTROBE
|
sta KBDSTROBE
|
||||||
* cmp #$84 CTRL-D for Maintenace mode
|
cmp #$84 CTRL-D for Maintenace mode
|
||||||
* bne .1
|
bne .1
|
||||||
|
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>LDYAI MSG.MMode
|
>LDYAI MSG.MMode
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
|
>PUSHBI 0 PS Flags
|
||||||
>LDYAI STARTUP.SHELL
|
>LDYAI STARTUP.SHELL
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
@ -158,25 +159,14 @@ Kernel.Init3 sta SETALTZP
|
|||||||
>LDYAI MSG.Startup
|
>LDYAI MSG.Startup
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
|
>PUSHBI 0 PS Flags
|
||||||
>LDYAI STARTUP.CMDLINE
|
>LDYAI STARTUP.CMDLINE
|
||||||
|
|
||||||
.8 >SYSCALL ExpandStr
|
.8 >SYSCALL ExecL
|
||||||
phx
|
|
||||||
pha
|
|
||||||
>PUSHWI K.Buf256
|
|
||||||
pla
|
|
||||||
>SYSCALL Args2ArgV
|
|
||||||
|
|
||||||
pla
|
|
||||||
jsr K.FreeMem
|
|
||||||
|
|
||||||
>PUSHBI 0 PS Flags
|
|
||||||
>LDYAI K.Buf256
|
|
||||||
>SYSCALL Exec
|
|
||||||
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHBI 1
|
>PUSHBI 0
|
||||||
>LDYAI MSG.Init3.OK
|
>LDYAI MSG.Init3.OK
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
|
@ -98,8 +98,8 @@ K.SYSCALL.JMP .DA 0 $00
|
|||||||
.DA K.LoadDrv
|
.DA K.LoadDrv
|
||||||
.DA K.InsDrv
|
.DA K.InsDrv
|
||||||
|
|
||||||
.DA K.Exec $A0
|
.DA K.ExecL $A0
|
||||||
.DA 0
|
.DA K.ExecV
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
|
@ -685,6 +685,21 @@ MEM.SPtr1PPtr2 >STYA ZPPtr1
|
|||||||
>PULLW ZPPtr2
|
>PULLW ZPPtr2
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
MEM.GetCharPtr1 lda (ZPPtr1)
|
||||||
|
beq MEM.GetCharPtr1.8
|
||||||
|
MEM.NextCharPtr1
|
||||||
|
inc ZPPtr1
|
||||||
|
bne MEM.GetCharPtr1.8
|
||||||
|
inc ZPPtr1+1 never Z
|
||||||
|
MEM.GetCharPtr1.8
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MEM.PutCharPtr2 sta (ZPPtr2)
|
||||||
|
inc ZPPtr2
|
||||||
|
bne .8
|
||||||
|
inc ZPPtr2+1
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.SRC/SYS/KERNEL.S.MEM
|
SAVE /A2OSX.SRC/SYS/KERNEL.S.MEM
|
||||||
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
||||||
|
@ -5,7 +5,30 @@ AUTO 4,1
|
|||||||
PS.Flags .BS 1
|
PS.Flags .BS 1
|
||||||
PS.Args .BS 2
|
PS.Args .BS 2
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Exec
|
* # ExecL
|
||||||
|
* ## C
|
||||||
|
* `int execl(const char* cmdline, short int flags);`
|
||||||
|
* ## ASM
|
||||||
|
* `>PUSHB flags`
|
||||||
|
* `>LDYA cmdline`
|
||||||
|
* `>SYSCALL execl`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* A = Child PSID
|
||||||
|
*\--------------------------------------
|
||||||
|
K.ExecL pha
|
||||||
|
lda #K.Buf256
|
||||||
|
sta ZPPtr2
|
||||||
|
lda /K.Buf256
|
||||||
|
sta ZPPtr2+1
|
||||||
|
pla
|
||||||
|
jsr K.Args2ArgV.I
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
>RET 1 discard flags
|
||||||
|
|
||||||
|
.1 >LDYAI K.Buf256
|
||||||
|
*/--------------------------------------
|
||||||
|
* # ExecV
|
||||||
* ## C
|
* ## C
|
||||||
* `int exec(const char* argv[], short int flags);`
|
* `int exec(const char* argv[], short int flags);`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
@ -15,7 +38,7 @@ PS.Args .BS 2
|
|||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* A = Child PSID
|
* A = Child PSID
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.Exec >STYA PS.Args
|
K.ExecV >STYA PS.Args
|
||||||
>PULLB PS.Flags
|
>PULLB PS.Flags
|
||||||
|
|
||||||
jsr PS.CreateChild Child S.PS at ZPPtr3
|
jsr PS.CreateChild Child S.PS at ZPPtr3
|
||||||
|
Loading…
x
Reference in New Issue
Block a user