diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ebf12b92..22e2f657 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 a3ec5831..0d446f48 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -237,7 +237,13 @@ CMD.SET.1 ldy #bSET.X bra .5 -.3 cmp #'F' +.3 cmp #'E' + bne .4 + + ldy #bSET.E + bra .5 + +.4 cmp #'F' bne .99 jsr CORE.FUNCRESET @@ -576,7 +582,10 @@ CMD.FUNC lda (ZPArgVBufPtr) .9 jmp CMD.Exec.CSYN *-------------------------------------- -CMD.RETURN lda (ZPArgVBufPtr) +CMD.RETURN jsr CORE.RETURN + bcs .9 + + lda (ZPArgVBufPtr) beq .8 no arg, exit 0 >LDYA ZPArgVBufPtr @@ -586,11 +595,7 @@ CMD.RETURN lda (ZPArgVBufPtr) >PULLL M32.ACC lda M32.ACC -.8 pha - lda #$FF - >STA.G bExit - pla - clc +.8 clc .9 rts *-------------------------------------- CMD.CALL >LDA.G hFuncList @@ -610,7 +615,9 @@ CMD.CALL >LDA.G hFuncList >LDA.G hFuncList >SYSCALL SListGetData bcs .99 - jmp CORE.CALL + + >LDYA ZPArgVBufPtr FUNC PARAM1 PARAM2... + jmp CORE.CALL X = Func Code .9 lda #E.FUNDEF sec diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index 7b3922a5..088d0c44 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -347,6 +347,111 @@ CORE.SkipLine jsr CORE.GetNextCharNB jsr CORE.GetNextChar skip CR... .8 rts +*-------------------------------------- +CORE.FCALL.QUIT sec + .HS 90 BCC +CORE.FCALL.NOQUIT + clc + + >STYA ZPPtr1 ArgV + + lda #0 + ror + >STA.G bExitOnEOF + + >PUSHWI 0 Aux type + >PUSHBI S.FI.T.TXT + >PUSHBI O.RDONLY + + >LDYA ZPPtr1 + >SYSCALL LoadTxtFile + bcs CORE.CALL.9 + + >LDYA ZPPtr1 + +CORE.CALL stx M32.ACC X=Code to Execute + + jsr CORE.ArgV.Dup Y,A = ArgV + bcs CORE.CALL.9 + + stx M32.ACC+1 X=ARGV + + lda ZPInputBuf + jsr CORE.StkPush + bcs CORE.CALL.9 + + lda ZPInputBuf+1 + jsr CORE.StkPush + bcs CORE.CALL.9 + + lda ZPInputBufPtr + jsr CORE.StkPush + bcs CORE.CALL.9 + + lda ZPInputBufPtr+1 + jsr CORE.StkPush + bcs CORE.CALL.9 + + ldy #S.PS.hARGV + lda (pPS),y + jsr CORE.StkPush + bcs CORE.CALL.9 + + lda M32.ACC+1 new ARGV + ldy #S.PS.hARGV + sta (pPS),y + + lda M32.ACC + jsr CORE.StkPush + bcs CORE.CALL.9 + + lda M32.ACC + >SYSCALL GetMemPtr + >STYA ZPInputBuf + >STYA ZPInputBufPtr + + lda #$C0 + jmp CORE.StkPush + +CORE.CALL.90 lda #E.STKOVERFLOW + sec +CORE.CALL.9 rts +*-------------------------------------- +CORE.RETURN jsr CORE.StkPull + bcs .90 + + cmp #$C0 + bne .90 + + jsr CORE.StkPull + >SYSCALL freemem Code buffer + + ldy #S.PS.hARGV + lda (pPS),y + >SYSCALL freemem ArgV buffer + + jsr CORE.StkPull + ldy #S.PS.hARGV + sta (pPS),y + + jsr CORE.StkPull + sta ZPInputBufPtr+1 + + jsr CORE.StkPull + sta ZPInputBufPtr + + jsr CORE.StkPull + sta ZPInputBuf+1 + + jsr CORE.StkPull + sta ZPInputBuf + +* clc + rts + +.90 lda #E.STACKERROR + sec + rts *-------------------------------------- * search ZPInputBufPtr/ZPArgVBufPtr in Y,A table *-------------------------------------- @@ -412,6 +517,77 @@ CORE.Lookup >STYA ZPPtr2 *-------------------------------------- * ArgV *-------------------------------------- +CORE.ArgV.Dup >STYA ZPPtr1 + phy + pha + + lda #1 + sta ZPPtr2 + stz ZPPtr2+1 + +.1 lda (ZPPtr1) + beq .4 + + ldy #0 + +.2 iny + lda (ZPPtr1),y + bne .2 + + tya + sec + adc ZPPtr1 + sta ZPPtr1 + bcc .3 + inc ZPPtr1+1 + +.3 tya + sec + adc ZPPtr2 + sta ZPPtr2 + bcc .1 + inc ZPPtr2+1 + bra .1 + +.4 pla + ply + >STYA ZPPtr1 + + >LDYA ZPPtr2 + >SYSCALL GetMem + bcs .9 + + >STYA ZPPtr2 + +.5 lda (ZPPtr1) + sta (ZPPtr2) + beq .8 + + ldy #0 + +.6 iny + lda (ZPPtr1),y + sta (ZPPtr2),y + bne .6 + + tya + sec + adc ZPPtr1 + sta ZPPtr1 + bcc .7 + inc ZPPtr1+1 + +.7 tya + sec + adc ZPPtr2 + sta ZPPtr2 + bcc .5 + inc ZPPtr2+1 + bra .5 + +.8 clc +.9 rts +*-------------------------------------- CORE.ArgV.Add >LDYA ZPArgVBufPtr >STYA ZPArgVBufPrev Save String start of Expand @@ -565,85 +741,6 @@ CORE.IO.Open pha Open Mode lda #E.SYN sec rts -*-------------------------------------- -CORE.FCALL.QUIT sec - .HS 90 BCC -CORE.FCALL.NOQUIT - clc - - >STYA ZPPtr1 Filename - - lda #0 - ror - >STA.G bExitOnEOF - - >PUSHWI 0 Aux type - >PUSHBI S.FI.T.TXT - >PUSHBI O.RDONLY - - >LDYA ZPPtr1 - >SYSCALL LoadTxtFile - bcs CORE.CALL.9 - -CORE.CALL lda ZPInputBuf X=hBuf - jsr CORE.StkPush - bcs CORE.CALL.9 - - lda ZPInputBuf+1 - jsr CORE.StkPush - bcs CORE.CALL.9 - - lda ZPInputBufPtr - jsr CORE.StkPush - bcs CORE.CALL.9 - - lda ZPInputBufPtr+1 - jsr CORE.StkPush - bcs CORE.CALL.9 - - txa - jsr CORE.StkPush - bcs CORE.CALL.9 - - txa - >SYSCALL GetMemPtr - >STYA ZPInputBuf - >STYA ZPInputBufPtr - - lda #$C0 - jmp CORE.StkPush - -CORE.CALL.90 lda #E.STKOVERFLOW - sec -CORE.CALL.9 rts -*-------------------------------------- -CORE.RETURN jsr CORE.StkPull - bcs .90 - - cmp #$C0 - bne .90 - - jsr CORE.StkPull - >SYSCALL freemem - - jsr CORE.StkPull - sta ZPInputBufPtr+1 - - jsr CORE.StkPull - sta ZPInputBufPtr - - jsr CORE.StkPull - sta ZPInputBuf+1 - - jsr CORE.StkPull - sta ZPInputBuf - -* clc - rts - -.90 lda #E.STACKERROR - sec - rts *-------------------------------------- * Input Buffer *-------------------------------------- diff --git a/BIN/SH.S.EXP.txt b/BIN/SH.S.EXP.txt index 132b0ae2..ac1c2979 100644 --- a/BIN/SH.S.EXP.txt +++ b/BIN/SH.S.EXP.txt @@ -65,16 +65,15 @@ EXP.TEST lda (ZPArgVBufPtr) lda #$ff >STA.G CORE.TestArg True >STA.G CORE.TestOp no op - + .10 >LDYA L.EXP.BEGIN jsr CORE.LookupArgVBuf bcs .9 - cpx #4 [ or ![ + cpx #2 0=[ or 1=![ bcs .9 - dex - dex 1 or $ff + dex $ff or 0 txa @@ -92,7 +91,7 @@ EXP.TEST lda (ZPArgVBufPtr) txa >STA.G CORE.Operator - + jsr EXP.TEST.UNARY bcs .9 @@ -164,6 +163,9 @@ EXP.TEST lda (ZPArgVBufPtr) EXP.TEST.UNARY jsr CORE.ArgV.Next beq EXP.OP.UNARY.ESYN we need one arg or ] + cmp #']' + beq EXP.OP.UNARY.DEF.9 + >LDA.G CORE.Operator asl tax @@ -174,18 +176,18 @@ EXP.OP.UNARY.ESYN sec rts -EXP.OP.UNARY.D jsr EXP.OP.UNARY.DEF.7 +EXP.OP.UNARY.D jsr EXP.OP.UNARY.STAT bcs EXP.OP.UNARY.DEF.9 >LDA.G StatBuf+S.STAT.P.TYPE cmp #S.FI.T.DIR bne EXP.OP.UNARY.DEF.9 bra EXP.OP.UNARY.DEF.8 -EXP.OP.UNARY.E jsr EXP.OP.UNARY.DEF.7 +EXP.OP.UNARY.E jsr EXP.OP.UNARY.STAT bcs EXP.OP.UNARY.DEF.9 bra EXP.OP.UNARY.DEF.8 DIR or FILE exist -EXP.OP.UNARY.F jsr EXP.OP.UNARY.DEF.7 +EXP.OP.UNARY.F jsr EXP.OP.UNARY.STAT bcs EXP.OP.UNARY.DEF.9 >LDA.G StatBuf+S.STAT.P.TYPE @@ -193,7 +195,7 @@ EXP.OP.UNARY.F jsr EXP.OP.UNARY.DEF.7 beq EXP.OP.UNARY.DEF.9 bra EXP.OP.UNARY.DEF.8 -EXP.OP.UNARY.DEF.7 +EXP.OP.UNARY.STAT >PUSHEA.G StatBuf >LDYA ZPArgVBufPtr >SYSCALL STAT @@ -231,7 +233,7 @@ EXP.OP.UNARY.Z lda (ZPArgVBufPtr) [ -Z ] ? bra EXP.OP.UNARY.DEF.9 FALSE *-------------------------------------- EXP.TEST.BINARY >LDA.G CORE.Operator - cmp #12 =, !=, <= <, >=, > + cmp #6 =, !=, <= <, >=, > bcs EXP.TEST.BINARY.NUM >LDYA ZPArgVBufPrev @@ -284,7 +286,6 @@ EXP.TEST.BINARY.END pha >LDA.G CORE.Operator - lsr tax pla and EXP.OP.BINARY.BITS,x diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index abf2f60d..d46b6051 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -76,13 +76,13 @@ ZPArgVBufPrev .BS 2 ZPArgVBufPtr .BS 2 ZPVarNamePtr .BS 2 -ZPPtr1 .BS 2 -ZPPtr2 .BS 2 - M32.ACC .BS 4 M32.ARG .BS 4 M32.TMP .BS 4 +ZPPtr1 .BS 2 +ZPPtr2 .BS 2 + ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -204,15 +204,16 @@ CS.RUN jsr CL.Init lda (pPS),y beq .1 no arg, continue starting interactive - lda #1 - >SYSCALL ArgV + lda #0 + jsr CMD.SHIFTA Remove $0=/bin/sh + + ldy #S.PS.hARGV + lda (pPS),y + >SYSCALL GetMemPtr jsr CORE.FCALL.QUIT Exec file an exit bcs CS.INIT.RTS - lda #0 - jsr CMD.SHIFTA Remove $0=/bin/sh - lda #$ff >STA.G bBatchMode @@ -332,7 +333,14 @@ CS.RUN.INTERACTIVE >SYSCALL strdup bcs .8 - jsr CORE.CALL + phx + + ldy #S.PS.hARGV + lda (pPS),y + >SYSCALL GetMemPtr Y,A =ARGV + + plx + jsr CORE.CALL X = Copy of CL .6 jsr CORE.Run @@ -428,9 +436,11 @@ CS.RUN.BATCH pha jsr CORE.RETURN + lda (pData) + bne .6 >LDA.G bExitOnEOF >STA.G bExit - pla +.6 pla sec CS.RUN.LOOP.END ldy #S.PS.RC @@ -442,6 +452,8 @@ CS.RUN.LOOP.END ldy #S.PS.RC >LDA.G bBatchMode batch mode ? beq .1 + >LDA.G bSET.E + bmi CS.RUN.LOOP.8 jsr IO.PrintBatchErrMsg bcs CS.RUN.LOOP.RTS @@ -571,6 +583,7 @@ ENV.PWD .AZ "PWD" ENV.PS1 .AZ "PS1" ENV.HOME .AZ "HOME" HOME.PROFILE .AZ "${HOME}PROFILE" + .HS 00 To Make It ArgV *-------------------------------------- CMD .AZ "NOHUP" .AZ "CD" @@ -691,6 +704,7 @@ bPause .BS 1 bExit .BS 1 bSET.C .BS 1 +bSET.E .BS 1 bSET.X .BS 1 bREAD.S .BS 1