diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 9238fe4b..2a6b036f 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/SH.S.CMD.txt b/BIN/SH.S.CMD.txt index 1ba5931c..d7a88c11 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -222,7 +222,7 @@ CMD.SET lda (ZPArgVBufPtr) *-------------------------------------- * SET +X VAR = VALUE1 op VALUE2 op VALUE3 ... *-------------------------------------- -CMD.SET.1 >DEBUG +CMD.SET.1 .1 jsr CMD.IsSwitch bcs .6 @@ -525,7 +525,7 @@ CMD.IF jsr CORE.StkGet bit #$40 Parent is true ? beq .3 - + jsr EXP.TEST bcs .9 diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index 41a10688..0ae69012 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -48,21 +48,30 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping >LDYA ZPArgVBuf >STYA ZPArgVBufPtr - + + lda #0 Reset ArgV Buffer + sta (ZPArgVBuf) + + lda #S.PS.F.HOLD+S.PS.F.DUPENV + >STA.G CORE.PSFlags + lda #$ff >STA.G CORE.IntCmd assume external jsr CORE.GetCharNB - bcs CORE.Run.RTS Ending 0, CS,A=0 + bcs .9 Ending 0, CS,A=0 cmp #'#' commented line? bne .2 .1 jsr CORE.GetNextCharNB - bcs CORE.Run.RTS A=0, CS + bcs .8 A=0 eor #C.CR bne .1 -.9 rts EOL, CC,A=0 + jsr CORE.GetNextChar + +.8 clc +.9 rts EOL, CS,A=0 .2 cmp #'|' bne .3 @@ -89,18 +98,21 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping bcs CORE.Run.RTS nothing to execute... .4 >LDYA L.CMD internal command ? - jsr CORE.Lookup - bcs .6 external, add token + jsr CORE.LookupInputBuf + bcs .6 no...assume external...no IO token Expected + + jsr CORE.SkipCharsA + txa >STA.G CORE.IntCmd bra .7 internal, do not add token .5 >LDYA L.CORE.IO - jsr CORE.Lookup + jsr CORE.LookupInputBuf bcs .6 - jsr CORE.GetNextCharNB - bcs CORE.Run.CSYN + jsr CORE.SkipCharsA + jsr CORE.IO.JMP bcs CORE.Run.RTS bra .7 @@ -108,33 +120,36 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping .6 jsr CORE.ArgV.Add .7 jsr CORE.GetCharNB - bcs CORE.ExecCmd + bcs CORE.ExecCmd.1 Nothing to skip jsr CORE.IsEndCmd bcs .5 - cmp #'|' - beq CORE.ExecCmd - jsr CORE.GetNextCharNB + cmp #'|' + bne CORE.ExecCmd skip CR, ; jsr IO.Pipe.Out bcs CORE.Run.RTS - bra CORE.ExecCmd - -.8 clc + bra CORE.ExecCmd.1 Do not skip | + CORE.Run.RTS rts *-------------------------------------- * Input : ZPArgVBuf *-------------------------------------- -CORE.ExecCmd lda #0 - jsr CORE.ArgV.PutChar +CORE.ExecCmd jsr CORE.GetNextCharNB Skip EoL char + +CORE.ExecCmd.1 lda #0 + sta (ZPArgVBufPtr) + + + + >LDYA ZPArgVBuf + >STYA ZPArgVBufPtr >LDA.G CORE.IntCmd bmi CORE.ExecExtCmd tax - >LDYA ZPArgVBuf - >STYA ZPArgVBufPtr jmp (J.CMD,x) @@ -166,18 +181,24 @@ CORE.ExecExtCmd >PUSHB.G CORE.PSFlags .8 clc .9 rts *-------------------------------------- -* search ZPInputBufPtr in Y,A table +* search ZPInputBufPtr/ZPArgVBufPtr in Y,A table *-------------------------------------- -CORE.Lookup >STYA ZPPtr1 +CORE.LookupInputBuf + >STYA ZPPtr1 + >LDYA ZPInputBufPtr + bra CORE.Lookup +CORE.LookupArgVBuf + >STYA ZPPtr1 + >LDYA ZPArgVBufPtr + +CORE.Lookup >STYA ZPPtr2 ldx #0 -.1 phx - - ldy #$ff +.1 ldy #$ff .2 iny - lda (ZPInputBufPtr),y + lda (ZPPtr2),y beq .3 Src Keyword end jsr CORE.IsSpaceOrEndCmd @@ -185,24 +206,16 @@ CORE.Lookup >STYA ZPPtr1 lda (ZPPtr1),y beq .4 Table Keyword end - cmp (ZPInputBufPtr),y + cmp (ZPPtr2),y beq .2 bra .4 .3 lda (ZPPtr1),y bne .4 - plx - - tya - clc - adc ZPInputBufPtr - sta ZPInputBufPtr - bcc .8 - - clc - inc ZPInputBufPtr+1 + tya Keyword Len + clc .8 rts .4 inc ZPPtr1 @@ -216,8 +229,7 @@ CORE.Lookup >STYA ZPPtr1 bne .6 inc ZPPtr1+1 -.6 plx - inx +.6 inx inx lda (ZPPtr1) Array Ending 0, must be an external Cmd.... @@ -231,29 +243,29 @@ CORE.Lookup.9 sec *-------------------------------------- CORE.ArgV.Add jsr CORE.GetCharNB bcs CORE.Lookup.9 - - ldx #0 + + ldx #0 reset "" mode .1 cmp #'"' bne .2 txa - eor #$ff + eor #$ff toggle "" mode tax bra .4 .2 cmp #C.SPACE bne .3 - txa - bpl .8 + txa between "" ? + beq .8 .3 jsr CORE.IsEndCmd - bcc CORE.Lookup.9 + bcc .8 jsr CORE.ArgV.PutChar .4 jsr CORE.GetNextChar - bra .1 + bcc .1 .8 lda #0 *-------------------------------------- @@ -262,7 +274,7 @@ CORE.ArgV.PutChar CORE.ArgV.NextChar inc ZPArgVBufPtr bne .8 - inc ZPArgVBufPtr + inc ZPArgVBufPtr+1 .8 rts *-------------------------------------- CORE.ArgV.Next lda (ZPArgVBufPtr) @@ -380,6 +392,13 @@ CORE.GetChar lda (ZPInputBufPtr) .9 sec rts *-------------------------------------- +CORE.SkipCharsA clc + adc ZPInputBufPtr + sta ZPInputBufPtr + bcc .8 + inc ZPInputBufPtr+1 +.8 rts +*-------------------------------------- * Stack *-------------------------------------- CORE.StkPushPtr lda ZPInputCmdPtr diff --git a/BIN/SH.S.EXP.txt b/BIN/SH.S.EXP.txt index 8cfbceeb..d885fa72 100644 --- a/BIN/SH.S.EXP.txt +++ b/BIN/SH.S.EXP.txt @@ -5,7 +5,7 @@ AUTO 4,1 *-------------------------------------- EXP.GET >LDYA ZPArgVBufPtr >STYA ZPPtr1 - >DEBUG + jsr CORE.ArgV.Next bne .1 @@ -20,7 +20,7 @@ EXP.GET >LDYA ZPArgVBufPtr >PULLL.G M32.ACC .2 >LDYA L.EXP.OP.MATH + - .... ? - jsr CORE.Lookup + jsr CORE.LookupArgVBuf bcs .9 txa @@ -65,7 +65,7 @@ EXP.TEST lda (ZPArgVBufPtr) beq .9 >LDYA L.EXP.BEGIN - jsr CORE.Lookup + jsr CORE.LookupArgVBuf bcs .9 @@ -84,7 +84,7 @@ EXP.TEST lda (ZPArgVBufPtr) beq .9 >LDYA L.EXP.OP.UNARY -d -e -f ? - jsr CORE.Lookup + jsr CORE.LookupArgVBuf bcs .1 @@ -111,7 +111,7 @@ EXP.TEST lda (ZPArgVBufPtr) beq .9 >LDYA L.EXP.OP.BINARY -eq -ne .... ? - jsr CORE.Lookup + jsr CORE.LookupArgVBuf bcs .9 txa >STA.G CORE.Operator diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index 4fc85d6d..9933e340 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -190,7 +190,7 @@ CS.RUN jsr CL.Init >STYA ZPInputBufPtr lda #0 - jsr CMD.SHIFTA Remove $0=/bin/shell + jsr CMD.SHIFTA Remove $0=/bin/sh lda #$ff >STA.G bBatchMode @@ -374,25 +374,33 @@ CS.RUN.BATCH >SYSCALL GetChar clc jmp CS.RUN.LOOP.END -.2 jsr CORE.Run - bcc .7 +.2 >LDA.G bSET.X + beq .5 + ldy #$ff + +.3 iny + lda (ZPInputBufPtr),y + sta (ZPArgVBuf),y + beq .4 + eor #C.CR + bne .3 + sta (ZPArgVBuf),y + +.4 >PUSHW ZPArgVBuf + >PUSHBI 2 + >LDYA L.MSG.TRACE + >SYSCALL printf + bcs .9 + +.5 jsr CORE.Run + bcc CS.RUN.LOOP.END + + pha lda #$ff >STA.G bExit - inc - clc - bra CS.RUN.LOOP.END - -.7 >LDA.G bSET.X -* beq .8 - -* >PUSHW ZPArgVBuf -* >PUSHBI 2 -* >LDYA L.MSG.TRACE -* >SYSCALL printf - -* bcs .9 - + pla + CS.RUN.LOOP.END ldy #S.PS.RC sta (pPs),y diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 50ba530e..d3b60baf 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -262,31 +262,20 @@ MEM.NextSlot lda ZPMemMgrSPtr * none. * (X unmodified) *\-------------------------------------- -K.FreeMem.ERRBAD .AZ "FreeMem:$%h=Bad,%s\r\n" -K.FreeMem.ERRFREED .AZ "FreeMem:$%h=free,%s\r\n" +K.FreeMem.MSG .AZ "FreeMem:hMem=$%h,PID=%d\r\n" *-------------------------------------- -K.FreeMem.BAD sec - .HS 90 BCC - -K.FreeMem.FREED clc - phx +K.FreeMem.ERR phx - php phy hMem n Y - ldy #S.PS.hARGV + ldy #S.PS.PID lda (pPS),y - jsr K.GetMemPtr - >PUSHYA + >PUSHA pla >PUSHA - >PUSHBI 3 - >LDYAI K.FreeMem.ERRBAD - plp - bcs .1 - - >LDYAI K.FreeMem.ERRFREED + >PUSHBI 2 + >LDYAI K.FreeMem.MSG .1 >SYSCALL printf @@ -296,15 +285,15 @@ K.FreeMem.FREED clc rts *-------------------------------------- K.FreeMem tay - beq K.FreeMem.BAD Slot=0, reserved by Kernel + beq K.FreeMem.ERR Slot=0, reserved by Kernel cmp Mem.LastSlot bcc .10 - bne K.FreeMem.BAD + bne K.FreeMem.ERR .10 jsr MEM.GetMemByID X,Y unmodified lda (ZPMemMgrSPtr) In use ? - bpl K.FreeMem.FREED + bpl K.FreeMem.ERR ldy #S.MEM.REFCNT lda (ZPMemMgrSPtr),y