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