diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 9fca0dc1..40c6c967 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/ARP.S.txt b/BIN/ARP.S.txt index 89a9372f..5e21a301 100644 --- a/BIN/ARP.S.txt +++ b/BIN/ARP.S.txt @@ -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 diff --git a/BIN/SHELL.S.CMD.txt b/BIN/SHELL.S.CMD.txt index 2bc922ae..02ba740e 100644 --- a/BIN/SHELL.S.CMD.txt +++ b/BIN/SHELL.S.CMD.txt @@ -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 diff --git a/BIN/SHELL.S.CORE.txt b/BIN/SHELL.S.CORE.txt index 7f42ecd8..abb4b688 100644 --- a/BIN/SHELL.S.CORE.txt +++ b/BIN/SHELL.S.CORE.txt @@ -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 diff --git a/BIN/SHELL.S.txt b/BIN/SHELL.S.txt index 19e4de9d..1a3d63e2 100644 --- a/BIN/SHELL.S.txt +++ b/BIN/SHELL.S.txt @@ -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" diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index d43e5969..03cff519 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -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 diff --git a/README.md b/README.md index 9c8f603b..ef63ae2b 100644 --- a/README.md +++ b/README.md @@ -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 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 ] | diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 709649ba..457d0f6e 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -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 diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index 7184f10c..68237da2 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -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 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 74da7513..50ba530e 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -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 diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index df7d6b29..c66c1168 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -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