diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 2a6b036f..695d54ca 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 d7a88c11..ceb32eb0 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -165,10 +165,6 @@ CMD.Exec.CSYN lda #E.CSYN sec rts *-------------------------------------- -CMD.Exec.SSYN lda #E.SSYN - sec - rts -*-------------------------------------- CMD.SET lda (ZPArgVBufPtr) bne CMD.SET.1 @@ -314,7 +310,8 @@ CMD.TIME clc >SYSCALL puts rts *-------------------------------------- -CMD.ECHO >STZ.G bECHO.N +CMD.ECHO stz ZPPtr1 echo -N + stz ZPPtr1+1 lda (ZPArgVBufPtr) beq .8 @@ -326,19 +323,27 @@ CMD.ECHO >STZ.G bECHO.N bne .99 lda #$ff - >EOR.G bECHO.N - sta (pData),y - bra .7 + eor ZPPtr1 + sta ZPPtr1 + bra .4 -.2 >PUSHBI 0 +.2 lda ZPPtr1+1 + beq .3 + + lda #C.SPACE + >SYSCALL putchar + +.3 >PUSHBI 0 >LDYA ZPArgVBufPtr >SYSCALL printf bcs .9 -.7 jsr CORE.ArgV.Next + inc ZPPtr1+1 + +.4 jsr CORE.ArgV.Next bne .1 - >LDA.G bECHO.N + bit ZPPtr1 bmi .8 >PUSHBI 0 @@ -500,16 +505,16 @@ CMD.RD lda (ZPArgVBufPtr) .9 jmp CMD.Exec.CSYN *-------------------------------------- CMD.BREAK -.9 jmp CMD.Exec.SSYN +.9 jmp CMD.Exec.CSYN *-------------------------------------- CMD.CONTINUE -.9 jmp CMD.Exec.SSYN +.9 jmp CMD.Exec.CSYN *-------------------------------------- CMD.FOR -.9 jmp CMD.Exec.SSYN +.9 jmp CMD.Exec.CSYN *-------------------------------------- CMD.NEXT -.9 jmp CMD.Exec.SSYN +.9 jmp CMD.Exec.CSYN *-------------------------------------- CMD.WHILE CMD.IF jsr CORE.StkGet diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index 0ae69012..08b3aebc 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -206,7 +206,14 @@ CORE.Lookup >STYA ZPPtr2 lda (ZPPtr1),y beq .4 Table Keyword end - cmp (ZPPtr2),y + lda (ZPPtr2),y + cmp #'a' + bcc .21 + cmp #'z'+1 + bcs .21 + eor #$20 + +.21 cmp (ZPPtr1),y beq .2 bra .4 @@ -236,14 +243,17 @@ CORE.Lookup >STYA ZPPtr2 bne .1 lda #E.CSYN -CORE.Lookup.9 sec + sec rts *-------------------------------------- * ArgV *-------------------------------------- -CORE.ArgV.Add jsr CORE.GetCharNB - bcs CORE.Lookup.9 +CORE.ArgV.Add >LDYA ZPArgVBufPtr + >STYA ZPArgVBufPrev Save String start of Expand + jsr CORE.GetCharNB + bcs .9 + ldx #0 reset "" mode .1 cmp #'"' @@ -257,17 +267,39 @@ CORE.ArgV.Add jsr CORE.GetCharNB .2 cmp #C.SPACE bne .3 txa between "" ? - beq .8 + beq .5 .3 jsr CORE.IsEndCmd - bcc .8 + bcc .5 jsr CORE.ArgV.PutChar .4 jsr CORE.GetNextChar bcc .1 -.8 lda #0 +.5 lda #0 + jsr CORE.ArgV.PutChar + + >LDYA ZPArgVBufPrev + >SYSCALL ExpandStr + bcs .9 + phx + >STYA ZPPtr1 + + >LDYA ZPArgVBufPrev + >STYA ZPArgVBufPtr + + ldy #$ff + +.6 iny + lda (ZPPtr1),y + jsr CORE.ArgV.PutChar + lda (ZPPtr1),y + bne .6 + + pla + >SYSCALL freemem +.9 rts *-------------------------------------- CORE.ArgV.PutChar sta (ZPArgVBufPtr) @@ -405,8 +437,7 @@ CORE.StkPushPtr lda ZPInputCmdPtr jsr CORE.StkPush bcs CORE.StkPullPtr.9 lda ZPInputCmdPtr+1 - bra CORE.StkPush -.9 rts + bra CORE.StkPush *-------------------------------------- CORE.StkPullPtr jsr CORE.StkPull bcs CORE.StkPullPtr.9 @@ -418,9 +449,9 @@ CORE.StkPullPtr.9 rts *-------------------------------------- CORE.StkGetPtr lda (pData) StackPtr - beq .9 + beq CORE.StkErr dec - beq .9 + beq CORE.StkErr tay @@ -433,7 +464,7 @@ CORE.StkGetPtr lda (pData) StackPtr clc rts -.9 lda #E.SSYN +CORE.StkErr lda #E.STACKERROR sec rts *-------------------------------------- @@ -466,15 +497,11 @@ CORE.StkPull jsr CORE.StkGet .9 rts *-------------------------------------- CORE.StkGet lda (pData) StackPtr - beq .9 + beq CORE.StkErr tay lda (pData),y clc rts - -.9 lda #E.SSYN - sec - rts *-------------------------------------- MAN SAVE USR/SRC/BIN/SH.S.CORE diff --git a/BIN/SH.S.EXP.txt b/BIN/SH.S.EXP.txt index d885fa72..c93264e7 100644 --- a/BIN/SH.S.EXP.txt +++ b/BIN/SH.S.EXP.txt @@ -3,17 +3,14 @@ PREFIX AUTO 4,1 .LIST OFF *-------------------------------------- -EXP.GET >LDYA ZPArgVBufPtr - >STYA ZPPtr1 - - jsr CORE.ArgV.Next +EXP.GET jsr CORE.ArgV.Next bne .1 - >LDYA ZPPtr1 no op, return text value + >LDYA ZPArgVBufPrev no op, return text value clc rts -.1 >LDYA ZPPtr1 +.1 >LDYA ZPArgVBufPrev >SYSCALL AToL bcs .99 @@ -53,7 +50,7 @@ EXP.GET >LDYA ZPArgVBufPtr rts -.9 lda #E.BADEXP +.9 lda #E.ESYN sec rts @@ -82,7 +79,7 @@ EXP.TEST lda (ZPArgVBufPtr) jsr CORE.ArgV.Next beq .9 - + >LDYA L.EXP.OP.UNARY -d -e -f ? jsr CORE.LookupArgVBuf @@ -91,7 +88,6 @@ EXP.TEST lda (ZPArgVBufPtr) txa >STA.G CORE.Operator - jsr CORE.ArgV.Next jsr EXP.TEST.UNARY bcs .9 @@ -104,10 +100,7 @@ EXP.TEST lda (ZPArgVBufPtr) sec .99 rts -.1 >LDYA ZPArgVBufPtr - >STYA ZPPtr1 - - jsr CORE.ArgV.Next +.1 jsr CORE.ArgV.Next beq .9 >LDYA L.EXP.OP.BINARY -eq -ne .... ? diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index 9933e340..f169940c 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -40,8 +40,8 @@ C.ELSE .EQ 50 C.FI .EQ 52 *-------------------------------------- E.CSYN .EQ $C0 -E.SSYN .EQ $C1 -E.ESYN .EQ $C2 +E.ESYN .EQ $C1 +E.STACKERROR .EQ $C2 E.STKOVERFLOW .EQ $C3 E.NOWHILE .EQ $C4 E.NOFOR .EQ $C5 @@ -65,6 +65,7 @@ ZPInputBuf .BS 2 ZPInputBufPtr .BS 2 ZPInputCmdPtr .BS 2 ZPArgVBuf .BS 2 +ZPArgVBufPrev .BS 2 ZPArgVBufPtr .BS 2 ZPVarNamePtr .BS 2 ZS.END .ED @@ -579,18 +580,18 @@ CORE.IO .AZ "&" EXP.BEGIN .AZ "![" .AZ "[" .HS 00 -EXP.OP.UNARY .AZ "-d" - .AZ "-e" - .AZ "-f" +EXP.OP.UNARY .AZ "-D" + .AZ "-E" + .AZ "-F" .HS 00 EXP.OP.BINARY .AZ "=" .AZ "!=" - .AZ "-eq" - .AZ "-ne" - .AZ "-lt" - .AZ "-le" - .AZ "-gt" - .AZ "-ge" + .AZ "-EQ" + .AZ "-NE" + .AZ "-LT" + .AZ "-LE" + .AZ "-GT" + .AZ "-GE" .HS 00 EXP.OP.BINARY.BITS .DA #%000 @@ -629,9 +630,10 @@ bBatchMode .BS 1 bEscMode .BS 1 bPause .BS 1 bExit .BS 1 + bSET.C .BS 1 bSET.X .BS 1 -bECHO.N .BS 1 + bREAD.S .BS 1 Sleep .BS 4 diff --git a/X.ERRORS.S.txt b/X.ERRORS.S.txt index 7514c81d..d5bd3e9f 100644 --- a/X.ERRORS.S.txt +++ b/X.ERRORS.S.txt @@ -34,13 +34,12 @@ ERR.Codes .DA #MLI.E.IO .DA #3 Ctrl-C *-------------------------------------- .DA #E.CSYN - .DA #E.SSYN .DA #E.ESYN + .DA #E.STACKERROR .DA #E.STKOVERFLOW .DA #E.NOWHILE .DA #E.NOFOR .DA #E.NOIF - .DA #E.BADEXP .DA #E.BADFTYPE *-------------------------------------- ERR.Count .EQ *-ERR.Codes @@ -76,13 +75,12 @@ ERR.Messages >PSTR "I/O Error" >PSTR "User Interrupt" *-------------------------------------- >PSTR "Command Syntax Error" - >PSTR "Script Syntax Error" >PSTR "Expression Syntax Error" + >PSTR "Stack Error" >PSTR "Stack Overflow" >PSTR "LOOP Without WHILE" >PSTR "NEXT Without FOR" >PSTR "FI/ELSE Without IF" - >PSTR "Bad Expression" >PSTR "Bad File Type" *-------------------------------------- >PSTR "Unknown Error"