mirror of https://github.com/A2osX/A2osX.git
Kernel 0.92+
This commit is contained in:
parent
80567cfd8d
commit
8e1da7eb9a
Binary file not shown.
|
@ -54,8 +54,7 @@ CS.INIT >LDYA L.LIBTCPIP
|
|||
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
|
||||
>STYA ZPPTR1
|
||||
|
||||
ldy #S.IPCFG.STATUS
|
||||
lda (ZPPTR1),y
|
||||
lda (ZPPTR1)
|
||||
bmi .1
|
||||
|
||||
jmp CS.RUN.ERR
|
||||
|
|
|
@ -3,46 +3,20 @@ PREFIX
|
|||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CMD.STARTPROC
|
||||
clc
|
||||
rts
|
||||
CMD.NOHUP >LDA.G CORE.PSFlags
|
||||
ora #S.PS.F.NOHUP
|
||||
sta (pData),y
|
||||
|
||||
>LDYA ZPArgVBuf
|
||||
jsr RemoveStrFromArgV
|
||||
jmp CORE.ExecExtCmd
|
||||
*--------------------------------------
|
||||
CMD.SHIFT lda #1
|
||||
|
||||
CMD.SHIFTA >SYSCALL ArgV
|
||||
bcs .8
|
||||
|
||||
>STYA ZPPtr1
|
||||
>STYA ZPPtr2
|
||||
|
||||
.10 ldy #$ff
|
||||
|
||||
.1 iny Compute ArgX len
|
||||
lda (ZPPtr1),y
|
||||
bne .1
|
||||
|
||||
.2 tya
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .3
|
||||
inc ZPPtr1+1
|
||||
|
||||
.3 ldy #$ff
|
||||
|
||||
.4 iny
|
||||
lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
bne .4
|
||||
tya
|
||||
beq .7
|
||||
|
||||
sec
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .2
|
||||
inc ZPPtr2+1
|
||||
bra .2
|
||||
jsr RemoveStrFromArgV
|
||||
|
||||
.7 ldy #S.PS.ARGC
|
||||
lda (pPS),y
|
||||
|
@ -52,12 +26,6 @@ CMD.SHIFTA >SYSCALL ArgV
|
|||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.PWD ldy #S.PS.hPREFIX
|
||||
lda (pPs),y
|
||||
>SYSCALL GetMemPtr
|
||||
>SYSCALL puts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.PUSHD >LDA.G PUSHD.STACK
|
||||
cmp #PUSHD.STACK+PUSHD.STACK.MAX
|
||||
beq CMD.POPD.CSYN
|
||||
|
@ -86,14 +54,20 @@ CMD.POPD >LDA.G PUSHD.STACK
|
|||
|
||||
tay
|
||||
lda (pData),y
|
||||
jsr CORE.SetPrefixA
|
||||
jsr CMD.SetPrefixA
|
||||
|
||||
>DEC.G PUSHD.STACK
|
||||
clc
|
||||
CMD.POPD.RTS
|
||||
rts
|
||||
|
||||
CMD.POPD.CSYN jmp CORE.Exec.CSYN
|
||||
CMD.POPD.CSYN jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.PWD ldy #S.PS.hPREFIX
|
||||
lda (pPs),y
|
||||
>SYSCALL GetMemPtr
|
||||
>SYSCALL puts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.CD ldx #1
|
||||
jsr CORE.GetArgX
|
||||
|
@ -105,34 +79,41 @@ CMD.CD.HOME >LDYA L.ENV.HOME
|
|||
|
||||
>LDYA L.ENV.ROOT
|
||||
>SYSCALL GetEnv
|
||||
bcc CMD.CD.1
|
||||
|
||||
jmp CMD.PWD
|
||||
|
||||
CMD.CD.1.9 pla
|
||||
>SYSCALL freemem
|
||||
bra CMD.POPD.CSYN
|
||||
bcs CMD.PWD
|
||||
|
||||
CMD.CD.1 >SYSCALL realpath
|
||||
bcs CMD.POPD.RTS
|
||||
|
||||
>STYA ZPPtr1
|
||||
phx
|
||||
stx ZPPtr3 Save hMem
|
||||
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
beq CORE.SetPrefixPHA we have '/'
|
||||
bne .12
|
||||
|
||||
>PUSHEA.G StatBuf
|
||||
txa
|
||||
jmp CMD.SetPrefixA we have '/'
|
||||
|
||||
.12 >PUSHEA.G StatBuf
|
||||
>LDYA ZPPtr1
|
||||
>SYSCALL STAT
|
||||
|
||||
bcs CMD.CD.1.9
|
||||
bcs .19
|
||||
|
||||
>LDA.G StatBuf+S.STAT.P.TYPE
|
||||
.10 >LDA.G StatBuf+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.DIR
|
||||
bne CMD.CD.1.9
|
||||
beq .11
|
||||
|
||||
lda #MLI.E.INVPATH
|
||||
|
||||
.19 pha
|
||||
lda ZPPtr3
|
||||
>SYSCALL freemem
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
|
||||
ldy #$ff
|
||||
.11 ldy #$ff
|
||||
|
||||
.1 iny
|
||||
lda (ZPPtr1),y
|
||||
|
@ -141,13 +122,16 @@ CMD.CD.1 >SYSCALL realpath
|
|||
dey
|
||||
lda (ZPPtr1),y
|
||||
cmp #'/'
|
||||
beq CORE.SetPrefixPHA already ends witrh a /
|
||||
bne .14
|
||||
|
||||
iny
|
||||
lda ZPPtr3
|
||||
jmp CMD.SetPrefixA already ends with a /
|
||||
|
||||
.14 iny
|
||||
iny
|
||||
lda #0
|
||||
>SYSCALL getmem
|
||||
bcs CMD.CD.1.9
|
||||
bcs .19
|
||||
>STYA ZPPtr2
|
||||
|
||||
ldy #$ff
|
||||
|
@ -167,8 +151,7 @@ CMD.CD.1 >SYSCALL realpath
|
|||
>SYSCALL freemem
|
||||
pla
|
||||
*--------------------------------------
|
||||
CORE.SetPrefixA pha
|
||||
CORE.SetPrefixPHA
|
||||
CMD.SetPrefixA pha
|
||||
ldy #S.PS.hPREFIX
|
||||
lda (pPs),y
|
||||
>SYSCALL FreeMem
|
||||
|
@ -181,11 +164,11 @@ CORE.SetPrefixPHA
|
|||
* clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.Exec.CSYN lda #E.CSYN
|
||||
CMD.Exec.CSYN lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.Exec.SSYN lda #E.SSYN
|
||||
CMD.Exec.SSYN lda #E.SSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -309,7 +292,7 @@ CMD.SET.1 >STZ.G CORE.Varname
|
|||
.8 clc
|
||||
rts
|
||||
|
||||
.99 jmp CORE.Exec.CSYN
|
||||
.99 jmp CMD.Exec.CSYN
|
||||
|
||||
CMD.SET.UNSET >LDA.G CORE.Varname
|
||||
tax
|
||||
|
@ -448,7 +431,7 @@ CMD.GETKEY ldx #1
|
|||
>SYSCALL SetEnv
|
||||
.9 rts
|
||||
|
||||
.99 jmp CORE.Exec.CSYN
|
||||
.99 jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.READ lda #1
|
||||
>STA.G CORE.ArgIndex
|
||||
|
@ -495,7 +478,7 @@ CMD.READ lda #1
|
|||
clc
|
||||
.99 rts
|
||||
|
||||
.9 jmp CORE.Exec.CSYN
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.SLEEP ldx #1
|
||||
jsr CORE.GetArgX
|
||||
|
@ -508,7 +491,7 @@ CMD.SLEEP ldx #1
|
|||
clc
|
||||
rts
|
||||
|
||||
.9 jmp CORE.Exec.CSYN
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.PAUSE lda #$FF
|
||||
>STA.G bPause
|
||||
|
@ -544,7 +527,7 @@ CMD.MD ldx #1
|
|||
>SYSCALL MKDir
|
||||
rts
|
||||
|
||||
.9 jmp CORE.Exec.CSYN
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.REN ldx #2
|
||||
jsr CORE.GetArgX
|
||||
|
@ -556,7 +539,7 @@ CMD.REN ldx #2
|
|||
>SYSCALL Rename
|
||||
rts
|
||||
|
||||
.9 jmp CORE.Exec.CSYN
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.RD ldx #1
|
||||
jsr CORE.GetArgX
|
||||
|
@ -578,19 +561,19 @@ CMD.RD ldx #1
|
|||
>SYSCALL Remove
|
||||
.99 rts
|
||||
|
||||
.9 jmp CORE.Exec.CSYN
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.BREAK
|
||||
.9 jmp CORE.Exec.SSYN
|
||||
.9 jmp CMD.Exec.SSYN
|
||||
*--------------------------------------
|
||||
CMD.CONTINUE
|
||||
.9 jmp CORE.Exec.SSYN
|
||||
.9 jmp CMD.Exec.SSYN
|
||||
*--------------------------------------
|
||||
CMD.FOR
|
||||
.9 jmp CORE.Exec.SSYN
|
||||
.9 jmp CMD.Exec.SSYN
|
||||
*--------------------------------------
|
||||
CMD.NEXT
|
||||
.9 jmp CORE.Exec.SSYN
|
||||
.9 jmp CMD.Exec.SSYN
|
||||
*--------------------------------------
|
||||
CMD.WHILE
|
||||
CMD.IF jsr CORE.StkGet
|
||||
|
|
|
@ -19,20 +19,30 @@ CORE.Quit >LDA.G CORE.hArgVBuf
|
|||
*--------------------------------------
|
||||
* Input : ZPCLBuf/ZPFileBufPtr
|
||||
* Get Line from buf until ;, CR, \0 (EOL / EOF) -> ZPArgVBuf
|
||||
* Tokenize ZPArgVBuf
|
||||
*--------------------------------------
|
||||
CORE.GetCmdFromFile
|
||||
CORE.GetCmdFromFileBuf
|
||||
>LDYA ZPFileBufPtr
|
||||
>STYA ZPFileBufPtrBak
|
||||
|
||||
jsr CORE.GetCmd
|
||||
bcs .9
|
||||
|
||||
lda (ZPFileBufPtr)
|
||||
>LDYA ZPPtr1
|
||||
>STYA ZPFileBufPtr
|
||||
.9 rts
|
||||
|
||||
CORE.GetCmdFromClBuf
|
||||
>LDYA ZPCLBuf
|
||||
|
||||
CORE.GetCmd >STYA ZPPtr1
|
||||
lda (ZPPtr1)
|
||||
beq .9
|
||||
|
||||
ldx #0 not in "
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda (ZPFileBufPtr),y
|
||||
.1 lda (ZPPtr1),y
|
||||
beq .7
|
||||
|
||||
cmp #C.CR
|
||||
|
@ -56,13 +66,12 @@ CORE.GetCmdFromFile
|
|||
|
||||
lda #';'
|
||||
|
||||
.5 sta (ZPCLBuf),y
|
||||
.5 sta (ZPArgVBuf),y
|
||||
iny
|
||||
cpy #CL.MAX
|
||||
bne .1
|
||||
|
||||
lda #E.SYN Line Too long !!!
|
||||
* sec
|
||||
sec
|
||||
rts
|
||||
|
||||
.6 sec skip CR or ;
|
||||
|
@ -71,19 +80,14 @@ CORE.GetCmdFromFile
|
|||
.7 clc
|
||||
|
||||
tya
|
||||
adc ZPFileBufPtr
|
||||
sta ZPFileBufPtr
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .8
|
||||
inc ZPFileBufPtr+1
|
||||
inc ZPPtr1+1
|
||||
|
||||
.8 lda #0
|
||||
sta (ZPCLBuf),y
|
||||
sta (ZPArgVBuf),y
|
||||
|
||||
tya
|
||||
>STA.G CL.Len
|
||||
lda #$ff
|
||||
>STA.G CL.bExec
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
|
@ -91,7 +95,8 @@ CORE.GetCmdFromFile
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Input : ZPArgVBuf
|
||||
* Input : ZPArgVBuf (String)
|
||||
* Tokenize ZPArgVBuf
|
||||
* :LOOP
|
||||
* if CmdSep=| :
|
||||
* set hStdIn = hStdOut
|
||||
|
@ -112,13 +117,13 @@ CORE.GetCmdFromFile
|
|||
* set hStdIn = hStdOut
|
||||
* set hStdOut = Std
|
||||
*--------------------------------------
|
||||
CORE.Exec >PUSHW ZPCLBuf
|
||||
>LDYA ZPCLBuf
|
||||
>STYA ZPCLBufPtr
|
||||
CORE.Exec >PUSHW ZPArgVBuf
|
||||
>LDYA ZPArgVBuf
|
||||
>STYA ZPArgVBufPtr
|
||||
|
||||
>SYSCALL Args2ArgV TOKENIZE CL in ZPCLBuf
|
||||
>SYSCALL Args2ArgV TOKENIZE CL in ZPArgVBuf
|
||||
|
||||
lda (ZPCLBufPtr) empty line ?
|
||||
lda (ZPArgVBufPtr) empty line ?
|
||||
beq .80
|
||||
|
||||
cmp #'#' comment ?
|
||||
|
@ -128,10 +133,7 @@ CORE.Exec >PUSHW ZPCLBuf
|
|||
|
||||
*************** LOOP Cmd Arg
|
||||
|
||||
.10 lda #0
|
||||
sta (ZPArgVBuf)
|
||||
|
||||
lda #S.PS.F.HOLD+S.PS.F.DUPENV
|
||||
.10 lda #S.PS.F.HOLD+S.PS.F.DUPENV
|
||||
>STA.G CORE.PSFlags
|
||||
|
||||
>LDA.G CL.CmdSep
|
||||
|
@ -146,36 +148,33 @@ CORE.Exec >PUSHW ZPCLBuf
|
|||
beq .80 yes, ignore remaining
|
||||
|
||||
ldy #1
|
||||
lda (ZPCLBufPtr),y only one char ?
|
||||
lda (ZPArgVBufPtr),y only one char ?
|
||||
bne .2
|
||||
|
||||
lda (ZPCLBufPtr)
|
||||
lda (ZPArgVBufPtr)
|
||||
cmp #'.' leading dot ?
|
||||
bne .2
|
||||
|
||||
>LDA.G CORE.PSFlags yes, child process will run in same ENV
|
||||
and #$ff^S.PS.F.DUPENV
|
||||
sta (pData),y
|
||||
jsr CORE.NextCLToken and skip this token
|
||||
jsr CORE.ShiftArgVToken and skip this token
|
||||
|
||||
.2 jsr CORE.IO.Check
|
||||
bcc .7 IO token & related args processed
|
||||
tay an error ?
|
||||
bne .90 yes...I/O error...
|
||||
|
||||
jsr CORE.AddCLBufPtrToArgV no...add as cmd or arg
|
||||
bcs .90
|
||||
jsr CORE.NextArgVToken no...keep as cmd or arg
|
||||
|
||||
.6 jsr CORE.NextCLToken
|
||||
|
||||
.7 lda (ZPCLBufPtr)
|
||||
.7 lda (ZPArgVBufPtr)
|
||||
|
||||
beq .71 EOL...
|
||||
cmp #';'
|
||||
bne .70
|
||||
|
||||
>STA.G CL.CmdSep
|
||||
jsr CORE.NextCLToken Skip ;
|
||||
jsr CORE.ShiftArgVToken Skip ;
|
||||
bra .72 exec
|
||||
|
||||
.70 cmp #'|'
|
||||
|
@ -185,10 +184,10 @@ CORE.Exec >PUSHW ZPCLBuf
|
|||
|
||||
* PIPE
|
||||
|
||||
jsr CORE.NextCLToken Skip |
|
||||
jsr CORE.ShiftArgVToken Skip |
|
||||
bra .72 and exec
|
||||
|
||||
jsr CORE.NextCLToken Skip ;
|
||||
jsr CORE.ShiftArgVToken Skip ;
|
||||
lda #0
|
||||
|
||||
.71 >STA.G CL.CmdSep
|
||||
|
@ -241,9 +240,15 @@ CORE.ExecCmd ldy #$ff
|
|||
bpl .8 parent context is FALSE, skip line
|
||||
|
||||
.3 >LDA.G CORE.IntCmd
|
||||
bpl .80 Internal
|
||||
|
||||
>PUSHB.G CORE.PSFlags
|
||||
bmi CORE.ExecExtCmd
|
||||
|
||||
tax
|
||||
jmp (J.CMD,x)
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CORE.ExecExtCmd >PUSHB.G CORE.PSFlags
|
||||
>LDYA ZPArgVBuf
|
||||
>SYSCALL execv
|
||||
bcs .9
|
||||
|
@ -270,59 +275,19 @@ CORE.ExecCmd ldy #$ff
|
|||
|
||||
.8 clc
|
||||
.9 rts
|
||||
|
||||
.80 tax
|
||||
jmp (J.CMD,x)
|
||||
*--------------------------------------
|
||||
CORE.NextCLToken
|
||||
lda (ZPCLBufPtr)
|
||||
inc ZPCLBufPtr
|
||||
CORE.NextArgVToken
|
||||
lda (ZPArgVBufPtr)
|
||||
inc ZPArgVBufPtr
|
||||
bne .1
|
||||
inc ZPCLBufPtr+1
|
||||
inc ZPArgVBufPtr+1
|
||||
.1 tax
|
||||
bne CORE.NextCLToken
|
||||
bne CORE.NextArgVToken
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.AddCLBufPtrToArgV
|
||||
>LDYA ZPCLBufPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
>LDYA ZPArgVBuf
|
||||
>STYA ZPPtr2
|
||||
|
||||
.1 lda (ZPPtr2) scan to end of argV
|
||||
beq .6
|
||||
|
||||
.2 inc ZPPtr2
|
||||
bne .3
|
||||
inc ZPPtr2+1
|
||||
.3 lda (ZPPtr2)
|
||||
bne .2
|
||||
|
||||
inc ZPPtr2
|
||||
bne .4
|
||||
inc ZPPtr2+1
|
||||
.4 lda (ZPPtr2)
|
||||
bne .2
|
||||
|
||||
.6 ldy #$ff
|
||||
|
||||
.7 iny
|
||||
* beq .9
|
||||
lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
bne .7 including str ending \0
|
||||
|
||||
iny
|
||||
* beq .9
|
||||
sta (ZPPtr2),y arg[] ending \0
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.BUF
|
||||
sec
|
||||
rts
|
||||
CORE.ShiftArgVToken
|
||||
>LDYA ZPArgVBufPtr
|
||||
jmp RemoveStrFromArgV
|
||||
*--------------------------------------
|
||||
CORE.GetArgX >LDYA ZPArgVBuf
|
||||
|
||||
|
@ -433,13 +398,13 @@ CORE.StkGet lda (pData) StackPtr
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.IO.Check >PUSHW ZPCLBufPtr
|
||||
CORE.IO.Check >PUSHW ZPArgVBufPtr
|
||||
>LDYA L.CORE.IO
|
||||
jsr Lookup
|
||||
bcs .9 not a IO token...should be an arg....
|
||||
phx
|
||||
|
||||
jsr CORE.NextCLToken skip this IO token
|
||||
jsr CORE.ShiftArgVToken skip this IO token
|
||||
|
||||
plx
|
||||
jmp (J.CORE.IO,x)
|
||||
|
@ -458,7 +423,7 @@ CORE.IO.IN lda #O.RDONLY+O.TEXT
|
|||
bcs .9
|
||||
jsr IO.Set.In
|
||||
|
||||
jsr CORE.NextCLToken skip arg
|
||||
jsr CORE.ShiftArgVToken skip arg
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
|
@ -472,7 +437,7 @@ CORE.IO.OUT.1 jsr CORE.IO.Open
|
|||
bcs .9
|
||||
jsr IO.Set.Out
|
||||
|
||||
jsr CORE.NextCLToken skip arg
|
||||
jsr CORE.ShiftArgVToken skip arg
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
|
@ -484,19 +449,19 @@ CORE.IO.2OUT.1 jsr CORE.IO.Open
|
|||
bcs .9
|
||||
jsr IO.Set.Err
|
||||
|
||||
jsr CORE.NextCLToken skip arg
|
||||
jsr CORE.ShiftArgVToken skip arg
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CORE.IO.Open pha
|
||||
lda (ZPCLBufPtr)
|
||||
lda (ZPArgVBufPtr)
|
||||
beq .9 no arg left....
|
||||
|
||||
>PUSHWI 0 Aux type
|
||||
>PUSHBI S.FI.T.TXT ftype
|
||||
pla
|
||||
>PUSHA flags
|
||||
>LDYA ZPCLBufPtr
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL fopen
|
||||
rts
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ History.MAX .EQ 256
|
|||
CORE.STACK.MAX .EQ 64
|
||||
PUSHD.STACK.MAX .EQ 8
|
||||
*--------------------------------------
|
||||
C.STARTPROC .EQ 0
|
||||
C.NOHUP .EQ 0
|
||||
C.CD .EQ 2
|
||||
C.DATE .EQ 4
|
||||
C.ECHO .EQ 6
|
||||
|
@ -62,10 +62,10 @@ ZPPtr1 .BS 2
|
|||
ZPPtr2 .BS 2
|
||||
ZPPtr3 .BS 2
|
||||
ZPCLBuf .BS 2
|
||||
ZPCLBufPtr .BS 2
|
||||
ZPFileBufPtr .BS 2
|
||||
ZPFileBufPtrBak .BS 2
|
||||
ZPArgVBuf .BS 2
|
||||
ZPArgVBufPtr .BS 2
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
|
@ -119,7 +119,7 @@ J.CORE.IO .DA CORE.IO.AMP
|
|||
.DA CORE.IO.2OUTA
|
||||
.DA CORE.IO.2OUT
|
||||
L.CORE.INT .DA CORE.INT
|
||||
J.CMD .DA CMD.STARTPROC
|
||||
J.CMD .DA CMD.NOHUP
|
||||
.DA CMD.CD
|
||||
.DA CMD.DATE
|
||||
.DA CMD.ECHO
|
||||
|
@ -189,7 +189,7 @@ CS.RUN jsr CL.Init
|
|||
|
||||
lda #0
|
||||
jsr CMD.SHIFTA Remove $0=/bin/shell
|
||||
|
||||
|
||||
bra CS.RUN.LOOP
|
||||
*--------------------------------------
|
||||
.1 jsr CMD.CD.HOME
|
||||
|
@ -300,6 +300,11 @@ CS.RUN.INTERACTIVE
|
|||
|
||||
jsr HIS.Add
|
||||
|
||||
jsr CORE.GetCmdFromClBuf
|
||||
|
||||
lda (ZPArgVBuf)
|
||||
beq .8
|
||||
|
||||
jsr CORE.Exec
|
||||
|
||||
.8 jmp CS.RUN.LOOP.END
|
||||
|
@ -358,7 +363,8 @@ CS.RUN.BATCH >SYSCALL GetChar
|
|||
clc
|
||||
jmp CS.RUN.LOOP.END
|
||||
|
||||
.2 jsr CORE.GetCmdFromFile
|
||||
.2 jsr CORE.GetCmdFromFileBuf
|
||||
|
||||
bcc .7
|
||||
|
||||
cmp #C.EOF
|
||||
|
@ -373,20 +379,17 @@ CS.RUN.BATCH >SYSCALL GetChar
|
|||
.3 sec
|
||||
bra CS.RUN.LOOP.END
|
||||
|
||||
.7 >LDA.G CL.bExec
|
||||
bpl CS.RUN.LOOP.80
|
||||
|
||||
lda (ZPCLBuf)
|
||||
.7 lda (ZPArgVBuf)
|
||||
beq CS.RUN.LOOP.80
|
||||
|
||||
>LDA.G bSET.X
|
||||
beq .8
|
||||
|
||||
>PUSHW ZPCLBuf
|
||||
>PUSHW ZPArgVBuf
|
||||
>PUSHBI 2
|
||||
>LDYA L.MSG.TRACE
|
||||
>SYSCALL printf
|
||||
|
||||
|
||||
bcs .9
|
||||
|
||||
.8 jsr CORE.Exec
|
||||
|
@ -498,6 +501,41 @@ Lookup >STYA ZPPtr2
|
|||
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
RemoveStrFromArgV
|
||||
>STYA ZPPtr1
|
||||
>STYA ZPPtr2
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.1 iny Compute ArgX len
|
||||
lda (ZPPtr1),y
|
||||
bne .1
|
||||
|
||||
.2 tya
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .3
|
||||
inc ZPPtr1+1
|
||||
|
||||
.3 ldy #$ff
|
||||
|
||||
.4 iny
|
||||
lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
bne .4
|
||||
tya
|
||||
beq .8
|
||||
|
||||
sec
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .2
|
||||
inc ZPPtr2+1
|
||||
bra .2
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
.INB USR/SRC/BIN/SHELL.S.CL
|
||||
.INB USR/SRC/BIN/SHELL.S.HIS
|
||||
|
@ -539,7 +577,7 @@ CORE.IO .AZ "&"
|
|||
.AZ "2>"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CORE.INT .AZ "STARTPROC"
|
||||
CORE.INT .AZ "NOHUP"
|
||||
.AZ "CD"
|
||||
.AZ "DATE"
|
||||
.AZ "ECHO"
|
||||
|
|
|
@ -480,6 +480,7 @@ S.FD.PIPE .EQ 8
|
|||
* PS STRUCT
|
||||
*--------------------------------------
|
||||
S.PS.F .EQ 0
|
||||
S.PS.F.NOHUP .EQ %10000000
|
||||
S.PS.F.INIT .EQ %10000000
|
||||
S.PS.F.RUN .EQ %01000000
|
||||
S.PS.F.QUIT .EQ %00100000
|
||||
|
|
|
@ -280,7 +280,7 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR.
|
|||
| TIME | Working | |
|
||||
| SET | Working | -X toggle debug mode |
|
||||
| SLEEP | Working | Wait <count> 10th sec |
|
||||
| STARTPROC | Working | Used in A2osX.startup |
|
||||
| NOHUP | Working | Start a process with PPID=PS0 (Daemon) |
|
||||
| SHIFT | Working | Remove $1 from cmd line |
|
||||
| ---- | ------ | ------- |
|
||||
| IF .. ELSE .. FI | Working | [ -d direxists ] |
|
||||
|
|
|
@ -22,20 +22,22 @@ BIN.R.Offset .BS 2
|
|||
K.LoadLib jsr ENV.Search.LIB
|
||||
bcs .9
|
||||
>LDYAI K.Buf256
|
||||
|
||||
jsr BIN.Load Y,A = "/PATH/BIN"
|
||||
bcs .9
|
||||
|
||||
>STYA .1+1
|
||||
stx BIN.hMem
|
||||
|
||||
stx .8+1
|
||||
|
||||
txa Pass hLib to LibLoad
|
||||
ldx #LIBMGR.LOAD
|
||||
.1 jsr $ffff Self Modified, Call LIB.LOAD function
|
||||
.1 jsr $ffff SELF MODIFIED, Call LIB.LOAD function
|
||||
|
||||
ldx .8+1
|
||||
bcs BIN.Load.Cleanup
|
||||
|
||||
lda BIN.hMem hLib
|
||||
clc
|
||||
.8 lda #$ff SELF MODIFIED, hLib
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* UnloadLib
|
||||
|
@ -47,11 +49,14 @@ K.UnloadLib pha
|
|||
jsr K.GetMemPtr
|
||||
>STYA .2+1
|
||||
|
||||
jsr MEM.decREFCNT
|
||||
ldy #S.MEM.REFCNT
|
||||
lda (ZPMemMgrSPtr),y
|
||||
dec
|
||||
sta (ZPMemMgrSPtr),y
|
||||
beq .1
|
||||
|
||||
pla
|
||||
clc
|
||||
* clc
|
||||
rts
|
||||
|
||||
.1 ldx #LIBMGR.UNLOAD
|
||||
|
@ -75,8 +80,8 @@ K.LoadDrv >STYA .2+1 Save "BIN\0ARGS\0\0"
|
|||
bcs .9
|
||||
|
||||
>STYA .3+1
|
||||
stx BIN.hMem
|
||||
|
||||
stx .8+1
|
||||
|
||||
ldx #$ff
|
||||
|
||||
.1 inx Skip "BIN"
|
||||
|
@ -91,20 +96,22 @@ K.LoadDrv >STYA .2+1 Save "BIN\0ARGS\0\0"
|
|||
adc .2+2 Y,A = ARGS
|
||||
|
||||
.3 jsr $ffff SELF MODIFIED, call Dev.Detect
|
||||
bcs BIN.Load.Cleanup
|
||||
|
||||
.8 ldx #$ff SELF MODIFIED, hMem
|
||||
jsr BIN.Load.Cleanup
|
||||
bcs .9
|
||||
|
||||
lda #0 Make sure RC = 0 if success
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
BIN.Load.Cleanup
|
||||
php
|
||||
pha
|
||||
lda BIN.hMem
|
||||
txa
|
||||
jsr K.FreeMem
|
||||
pla
|
||||
sec
|
||||
plp
|
||||
BIN.Load.Cleanup.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -147,12 +154,15 @@ BIN.Load >STYA BIN.CmdLine
|
|||
bne .2
|
||||
|
||||
txa
|
||||
jsr K.GetMemPtr
|
||||
jsr MEM.GetMemByID
|
||||
|
||||
jsr MEM.IncREFCNT
|
||||
ldy #S.MEM.REFCNT
|
||||
lda (ZPMemMgrSPtr),y
|
||||
inc
|
||||
sta (ZPMemMgrSPtr),y
|
||||
|
||||
clc
|
||||
jmp K.GetMemPtr.ZPMemMgrSPtr
|
||||
jmp MEM.GetMEMPTR
|
||||
* X=hMem, Y,A=Ptr
|
||||
*--------------------------------------
|
||||
* STAT Already called by Filesearch in FindDRV, FindLIB
|
||||
|
@ -210,7 +220,7 @@ BIN.Load.1 >LDYA K.S.STAT+S.STAT.P.AUXTYPE
|
|||
>SYSCALL StrDup make a copy of this string
|
||||
bcs .98
|
||||
|
||||
lda BIN.hMem Keep X=hMem
|
||||
lda BIN.hMem Keep X=new string hMem
|
||||
jsr MEM.GetMemByID X unmodified
|
||||
|
||||
lda (ZPMemMgrSPtr)
|
||||
|
@ -223,9 +233,10 @@ BIN.Load.1 >LDYA K.S.STAT+S.STAT.P.AUXTYPE
|
|||
|
||||
ldx BIN.hMem return hMEM to Caller...
|
||||
clc
|
||||
jmp K.GetMemPtr.ZPMemMgrSPtr ...and Y,A=PTR to CS
|
||||
jmp MEM.GetMEMPTR ...and Y,A=PTR to CS
|
||||
|
||||
.98 jmp BIN.Load.Cleanup Discard Loaded Code, exits CS
|
||||
.98 ldx BIN.hMem
|
||||
jmp BIN.Load.Cleanup Discard Loaded Code, exits CS
|
||||
*/--------------------------------------
|
||||
* # InsDrv
|
||||
* ## C
|
||||
|
|
|
@ -24,7 +24,6 @@ FIO.hFILE .BS 1
|
|||
FIO.MemPtr .BS 2
|
||||
FIO.hMem .BS 1
|
||||
FIO.BytesRead .BS 2
|
||||
FIO.ZPSIZE .EQ *
|
||||
.ED
|
||||
*--------------------------------------
|
||||
K.LoadTxtFile sec
|
||||
|
|
|
@ -192,7 +192,7 @@ MEM.GetMem.YAX stx MEM.ReqFlags
|
|||
ldy #S.MEM.OWNERPID
|
||||
sta (ZPMemMgrSPtr),y
|
||||
clc
|
||||
jmp K.GetMemPtr.ZPMemMgrSPtr
|
||||
jmp MEM.GetMEMPTR
|
||||
* A = HI PTR,Y = LO PTR,X = Current hMem
|
||||
|
||||
.9 rts
|
||||
|
@ -248,18 +248,6 @@ Mem.AddSlot >STYA ZPMemMgrTmp1 save req size
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
MEM.IncREFCNT ldy #S.MEM.REFCNT
|
||||
lda (ZPMemMgrSPtr),y
|
||||
inc
|
||||
sta (ZPMemMgrSPtr),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
MEM.decREFCNT ldy #S.MEM.REFCNT
|
||||
lda (ZPMemMgrSPtr),y
|
||||
dec
|
||||
sta (ZPMemMgrSPtr),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
MEM.NextSlot lda ZPMemMgrSPtr
|
||||
clc
|
||||
adc #S.MEM
|
||||
|
@ -284,7 +272,7 @@ K.FreeMem.FREED clc
|
|||
phx
|
||||
|
||||
php
|
||||
pha
|
||||
phy hMem n Y
|
||||
ldy #S.PS.hARGV
|
||||
lda (pPS),y
|
||||
jsr K.GetMemPtr
|
||||
|
@ -314,17 +302,14 @@ K.FreeMem tay
|
|||
bcc .10
|
||||
bne K.FreeMem.BAD
|
||||
|
||||
.10 pha
|
||||
jsr MEM.GetMemByID X unmodified
|
||||
.10 jsr MEM.GetMemByID X,Y unmodified
|
||||
lda (ZPMemMgrSPtr) In use ?
|
||||
bmi .11
|
||||
bpl K.FreeMem.FREED
|
||||
|
||||
pla
|
||||
bra K.FreeMem.FREED
|
||||
|
||||
.11 pla
|
||||
|
||||
jsr MEM.decREFCNT only one left ?
|
||||
ldy #S.MEM.REFCNT
|
||||
lda (ZPMemMgrSPtr),y
|
||||
dec
|
||||
sta (ZPMemMgrSPtr),y only one left ?
|
||||
bne .8 no, must be a code segment loaded several times
|
||||
|
||||
lda (ZPMemMgrSPtr)
|
||||
|
@ -392,8 +377,7 @@ K.FreeMem tay
|
|||
.FIN
|
||||
*--------------------------------------
|
||||
K.GetMemPtr jsr MEM.GetMemByID
|
||||
K.GetMemPtr.ZPMemMgrSPtr
|
||||
ldy #S.MEM.PTR
|
||||
MEM.GetMEMPTR ldy #S.MEM.PTR
|
||||
lda (ZPMemMgrSPtr),y
|
||||
pha
|
||||
iny
|
||||
|
@ -445,6 +429,7 @@ K.SListAddData
|
|||
K.SListGetData
|
||||
K.SListSetData pha
|
||||
>PULLW ZPSListID
|
||||
bra K.SListPullA
|
||||
*/--------------------------------------
|
||||
* # SListGetByID
|
||||
* ## ASM
|
||||
|
@ -577,7 +562,10 @@ K.LoadStkObj >SYSCALL LoadFile
|
|||
bcs .99
|
||||
|
||||
stx .8+1 Save MAIN hMem
|
||||
>STYA A2L Save LEN temporarly
|
||||
iny
|
||||
bne .1
|
||||
inc +1 for ending 0
|
||||
.1 >STYA A2L Save LEN temporarly
|
||||
|
||||
jsr K.NewStkObj
|
||||
bcs .9
|
||||
|
@ -601,6 +589,11 @@ K.LoadStkObj >SYSCALL LoadFile
|
|||
sec Main To Aux
|
||||
jsr AuxMove
|
||||
|
||||
lda #0
|
||||
sta SETWRITEAUX
|
||||
sta (A2L)
|
||||
sta CLRWRITEAUX
|
||||
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
jsr K.FreeMem release MAIN memory
|
||||
|
||||
|
|
|
@ -183,13 +183,16 @@ PS.CreateChild ldx #0
|
|||
cpy #S.PS.hStdErr+1
|
||||
bne .81
|
||||
|
||||
bit PS.Flags S.PS.F.NOHUP
|
||||
bmi .5
|
||||
|
||||
ldy #S.PS.PID
|
||||
lda (pPs),y
|
||||
|
||||
ldy #S.PS.PPID
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
lda #S.PS.F.HOLD
|
||||
.5 lda #S.PS.F.HOLD
|
||||
bit PS.Flags
|
||||
beq .82
|
||||
|
||||
|
|
Loading…
Reference in New Issue