diff --git a/.A2osX Issue List.xlsx b/.A2osX Issue List.xlsx index 30cacfee..7eef7ca5 100644 Binary files a/.A2osX Issue List.xlsx and b/.A2osX Issue List.xlsx differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 05742a20..4138c540 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/CHTYP.S.txt b/BIN/CHTYP.S.txt index 3da9fc92..d6c7245b 100644 --- a/BIN/CHTYP.S.txt +++ b/BIN/CHTYP.S.txt @@ -221,26 +221,17 @@ CS.RUN.CheckErr bcs .1 rts .1 pha - - >LDA.G bContinue - bpl .2 - - pla >PUSHA >PUSHBI 1 >LDYA L.MSG.ERR >SYSCALL printf - bcs .9 - rts -.2 lda #13 - >SYSCALL PutChar - lda #10 - >SYSCALL PutChar + >LDA.G bContinue + eor #$80 + asl pla - sec -.9 rts + rts *-------------------------------------- CS.RUN.GetFilePath >LDA.G hSrcBasePath diff --git a/BIN/MEMDUMP.S.txt b/BIN/MEMDUMP.S.txt index 2393f053..6fddae42 100644 --- a/BIN/MEMDUMP.S.txt +++ b/BIN/MEMDUMP.S.txt @@ -269,7 +269,7 @@ CS.QUIT clc CS.END MSG0 .AZ " # Flags PID REF PTR LEN BINPATH/DATA" MSG1.INV .AZ "\e[7m" -MSG1 .AZ "%03d %s %3d %3d $%H %5D " +MSG1 .AZ "$%h %s %3d %3d $%H %5D " MSG1.BIN .AZ "{%s}\e[0m\r\n" MSG1.STR .AZ "[%03d:%s]\e[0m\r\n" MSG1.HEX .AZ "?HEX:%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h\e[0m\r\n" @@ -293,5 +293,5 @@ DS.END .ED *-------------------------------------- MAN -SAVE USR/SRC/SRC/BIN/DEV/MEMDUMP.S +SAVE USR/SRC/BIN/DEV/MEMDUMP.S ASM diff --git a/BIN/MORE.S.txt b/BIN/MORE.S.txt index 21d4ff1f..9dc15043 100644 --- a/BIN/MORE.S.txt +++ b/BIN/MORE.S.txt @@ -37,8 +37,8 @@ CS.START cld .DA CS.DOEVENT .DA CS.QUIT L.MSG.USAGE .DA MSG.USAGE -L.MSG.NUMLINECR .DA MSG.NUMLINECR -L.MSG.LINECR .DA MSG.LINECR +L.MSG.NUMLINE .DA MSG.NUMLINE +L.MSG.CRLF .DA MSG.CRLF L.MSG.Pause .DA MSG.Pause L.MSG.PauseErase .DA MSG.PauseErase .DA 0 @@ -163,6 +163,8 @@ CS.RUN.PAUSE >PUSHBI 0 cmp #'Q' beq .9 + cmp #'q' + beq .9 .3 cmp #C.SPACE bne .4 @@ -243,20 +245,22 @@ CS.RUN.GETLINE >LDA.G hFile clc .9 rts *-------------------------------------- -CS.RUN.PRINT clc - >LDA.G bLineNum +CS.RUN.PRINT >LDA.G bLineNum bpl .1 - >PUSHW ZPBufPtr >PUSHW.G LineNum - >PUSHBI 4 - >LDYA L.MSG.NUMLINECR - >SYSCALL printf - rts - -.1 >PUSHW ZPBufPtr >PUSHBI 2 - >LDYA L.MSG.LINECR + >LDYA L.MSG.NUMLINE + >SYSCALL printf + bcs .9 + +.1 >PUSHBI 0 + >LDYA ZPBufPtr + >SYSCALL printf + bcs .9 + + >PUSHBI 0 + >LDYA L.MSG.CRLF >SYSCALL printf .9 rts *-------------------------------------- @@ -286,9 +290,9 @@ MSG.USAGE .AS "Usage : MORE \r\n" .AS " -H : This help screen\r\n" .AS " -N : Number all output lines\r\n" .AZ " -P : Page mode, no scroll\r\n" -MSG.NUMLINECR .AZ "%5D:%s\r\n" -MSG.LINECR .AZ "%s\r\n" -MSG.Pause .AZ "\r\e[7m --- 'SPACE' for more, 'CR' one line, 'Q' to quit --- \e[0m" +MSG.NUMLINE .AZ "%5D:" +MSG.CRLF .AZ "\r\n" +MSG.Pause .AZ "\r\e[7m --- 'SPACE' for more, 'CR' one line, 'Q/q' to quit --- \e[0m" MSG.PauseErase .AZ "\r\e[2K" *-------------------------------------- .DUMMY diff --git a/BIN/SHELL.S.CL.txt b/BIN/SHELL.S.CL.txt index bb9def86..0fe49ad1 100644 --- a/BIN/SHELL.S.CL.txt +++ b/BIN/SHELL.S.CL.txt @@ -574,7 +574,7 @@ CL.IO.Open pha rts .9 pla - lda #E.SYNTAX + lda #E.CSYN sec rts *-------------------------------------- diff --git a/BIN/SHELL.S.CMD.txt b/BIN/SHELL.S.CMD.txt index bf57e083..ffc088b5 100644 --- a/BIN/SHELL.S.CMD.txt +++ b/BIN/SHELL.S.CMD.txt @@ -111,7 +111,7 @@ Cmd.INT.PUSHD >LDA.G PUSHD.STACK lda (pPs),y >SYSCALL GetMemPtr >SYSCALL NewStr - bcs .99 + bcs Cmd.INT.POPD.CSYN >INC.G PUSHD.STACK tay @@ -123,20 +123,16 @@ Cmd.INT.PUSHD >LDA.G PUSHD.STACK bcs .8 >SYSCALL RealPath - bcs .99 + bcs .9 jmp Cmd.INT.CD.1 .8 clc - rts - -.9 lda #E.SYNTAX - sec -.99 rts +.9 rts *-------------------------------------- Cmd.INT.POPD >LDA.G PUSHD.STACK cmp #PUSHD.STACK - beq .9 + beq Cmd.INT.POPD.CSYN tay lda (pData),y @@ -146,7 +142,8 @@ Cmd.INT.POPD >LDA.G PUSHD.STACK clc rts -.9 lda #E.SYNTAX +Cmd.INT.POPD.CSYN + lda #E.CSYN sec rts *-------------------------------------- @@ -189,7 +186,7 @@ Cmd.INT.CD.1 >STYA ZPPtr1 cmp #S.FI.T.DIR beq .1 - lda #E.SYNTAX + lda #E.CSYN sec bra .90 @@ -237,7 +234,11 @@ Cmd.SetPrefixA pha sta (pPs),y jmp SetPWD.I *-------------------------------------- -Cmd.Exec.ERRSYN lda #E.SYNTAX +Cmd.Exec.CSYN lda #E.CSYN + sec + rts +*-------------------------------------- +Cmd.Exec.SSYN lda #E.SSYN sec rts *-------------------------------------- @@ -314,7 +315,6 @@ Cmd.INT.SET.1 >STZ.G CMD.Varname >EOR.G bSET.X sta (pData),y >INC.G CMD.ArgIndex - tax bra .1 .2 >LDA.G CMD.ArgIndex @@ -355,7 +355,7 @@ Cmd.INT.SET.1 >STZ.G CMD.Varname .8 clc rts -.99 lda #E.SYNTAX +.99 lda #E.CSYN sec rts @@ -409,14 +409,28 @@ Cmd.INT.TIME clc >SYSCALL puts rts *-------------------------------------- -Cmd.INT.ECHO lda #1 +Cmd.INT.ECHO >STZ.G bECHO.N + + lda #1 >STA.G CMD.ArgIndex - tax +.1 tax jsr Cmd.GetArgX bcs .7 - pha + jsr CMD.IsSwitch + bcs .2 + + cmp #'N' + bne .99 + + lda #$ff + >EOR.G bECHO.N + sta (pData),y + >INC.G CMD.ArgIndex + bra .1 + +.2 pha >PUSHBI 0 pla >SYSCALL printf @@ -428,7 +442,7 @@ Cmd.INT.ECHO lda #1 jsr Cmd.GetArgX bcs .7 -.1 lda #C.SPACE +.6 lda #C.SPACE >SYSCALL putchar bcs .9 @@ -445,7 +459,7 @@ Cmd.INT.ECHO lda #1 tax jsr Cmd.GetArgX - bcc .1 + bcc .6 .7 >LDA.G bECHO.N bmi .8 @@ -457,6 +471,10 @@ Cmd.INT.ECHO lda #1 .8 clc .9 rts + +.99 lda #E.CSYN + sec + rts *-------------------------------------- Cmd.INT.READ lda #1 >STA.G CMD.ArgIndex @@ -503,7 +521,7 @@ Cmd.INT.READ lda #1 clc .99 rts -.9 jmp Cmd.Exec.ERRSYN +.9 jmp Cmd.Exec.CSYN *-------------------------------------- Cmd.INT.SLEEP ldx #1 jsr Cmd.GetArgX @@ -516,7 +534,7 @@ Cmd.INT.SLEEP ldx #1 clc rts -.9 jmp Cmd.Exec.ERRSYN +.9 jmp Cmd.Exec.CSYN *-------------------------------------- Cmd.INT.PAUSE lda #$FF >STA.G bPause @@ -535,7 +553,7 @@ Cmd.INT.MD ldx #1 >SYSCALL MKDir rts -.9 jmp Cmd.Exec.ERRSYN +.9 jmp Cmd.Exec.CSYN *-------------------------------------- Cmd.INT.REN ldx #2 jsr Cmd.GetArgX @@ -547,7 +565,7 @@ Cmd.INT.REN ldx #2 >SYSCALL Rename rts -.9 jmp Cmd.Exec.ERRSYN +.9 jmp Cmd.Exec.CSYN *-------------------------------------- Cmd.INT.RD ldx #1 jsr Cmd.GetArgX @@ -569,19 +587,19 @@ Cmd.INT.RD ldx #1 >SYSCALL Remove .99 rts -.9 jmp Cmd.Exec.ERRSYN +.9 jmp Cmd.Exec.CSYN *-------------------------------------- Cmd.INT.BREAK -.9 jmp Cmd.Exec.ERRSYN +.9 jmp Cmd.Exec.SSYN *-------------------------------------- Cmd.INT.CONTINUE -.9 jmp Cmd.Exec.ERRSYN +.9 jmp Cmd.Exec.SSYN *-------------------------------------- Cmd.INT.FOR -.9 jmp Cmd.Exec.ERRSYN +.9 jmp Cmd.Exec.SSYN *-------------------------------------- Cmd.INT.NEXT -.9 jmp Cmd.Exec.ERRSYN +.9 jmp Cmd.Exec.SSYN *-------------------------------------- Cmd.INT.WHILE Cmd.INT.IF jsr CMD.StkGet @@ -713,7 +731,7 @@ Cmd.Eval ldx #1 ldx #4 go check ] bra .8 -.9 lda #E.SYNTAX +.9 lda #E.ESYN sec .99 rts @@ -759,7 +777,7 @@ CMD.Eval.UNARY ldx #3 tax jmp (J.CMD.Eval.TOKEN2,x) -.9 lda #E.SYNTAX +.9 lda #E.ESYN sec rts @@ -818,13 +836,14 @@ CMD.Eval.BINARY ldx #2 ldx #4 jsr Cmd.GetArgX >SYSCALL strcmp - lsr CS if != + ror CS if != and #$80 + eor #$80 >EOR.G CMD.Operator clc rts -.9 lda #E.SYNTAX +.9 lda #E.ESYN sec rts *-------------------------------------- @@ -865,7 +884,7 @@ CMD.Eval.BINARY.NUM clc rts -.9 lda #E.SYNTAX +.9 lda #E.ESYN sec rts *-------------------------------------- @@ -1030,7 +1049,7 @@ CMD.StkGetPtr lda (pData) StackPtr clc rts -.9 lda #E.SYNTAX +.9 lda #E.SSYN sec rts *-------------------------------------- @@ -1069,7 +1088,7 @@ CMD.StkGet lda (pData) StackPtr clc rts -.9 lda #E.SYNTAX +.9 lda #E.SSYN sec rts *-------------------------------------- diff --git a/BIN/SHELL.S.txt b/BIN/SHELL.S.txt index 3bc0dcd9..4aef76c7 100644 --- a/BIN/SHELL.S.txt +++ b/BIN/SHELL.S.txt @@ -41,13 +41,15 @@ C.IF .EQ 46 C.ELSE .EQ 48 C.FI .EQ 50 *-------------------------------------- -E.SYNTAX .EQ $C0 -E.STKOVERFLOW .EQ $C1 -E.NOWHILE .EQ $C2 -E.NOFOR .EQ $C3 -E.NOIF .EQ $C4 -E.BADEXP .EQ $C5 -E.BADFTYPE .EQ $C6 +E.CSYN .EQ $C0 +E.SSYN .EQ $C1 +E.ESYN .EQ $C1 +E.STKOVERFLOW .EQ $C3 +E.NOWHILE .EQ $C4 +E.NOFOR .EQ $C5 +E.NOIF .EQ $C6 +E.BADEXP .EQ $C7 +E.BADFTYPE .EQ $C8 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I diff --git a/BIN/X.CPMVRM.S.txt b/BIN/X.CPMVRM.S.txt index 2a210a9d..4a18e934 100644 --- a/BIN/X.CPMVRM.S.txt +++ b/BIN/X.CPMVRM.S.txt @@ -443,6 +443,7 @@ CS.RUN.FILE jsr CS.RUN.FILE.MSG .3 jsr CS.RUN.CopyStart bcc .4 jsr CS.RUN.CheckErr + bcs .9 jmp CS.RUN.NEXT .FIN @@ -554,7 +555,7 @@ CS.RUN.Rename ldy #hDstFullPath CS.RUN.CopyStart ldy #hSrcFullPath lda #O.RDONLY - + jsr CS.RUN.Open bcs .99 @@ -583,11 +584,11 @@ CS.RUN.CopyStart >SYSCALL fclose pla - ldy #CopyRC +.99 ldy #CopyRC sta (pData),y sec -.99 rts + rts *-------------------------------------- CS.RUN.Open phy Save Filename pha Save open mode @@ -673,23 +674,17 @@ CS.RUN.CheckErr bcs .1 >SYSCALL puts .8 rts -.1 >LDA.G RC - pha - - >LDA.G bContinue - bpl .2 - - pla +.1 pha >PUSHA >PUSHBI 1 >LDYA L.MSG.ERR >SYSCALL printf - rts -.2 jsr CS.RUN.CR + >LDA.G bContinue + eor #$80 + asl pla - sec rts *-------------------------------------- CS.RUN.BuildFilePath diff --git a/BIN/X.FILEENUM.S.txt b/BIN/X.FILEENUM.S.txt index 493b136e..5a1410f2 100644 --- a/BIN/X.FILEENUM.S.txt +++ b/BIN/X.FILEENUM.S.txt @@ -35,7 +35,25 @@ InitSrcDirYA >SYSCALL RealPath >LDA.G STAT+S.STAT.P.TYPE cmp #$0f bne .4 TYPE not a DIR, extract.... - beq .5 TYPE=DIR, do not extract pattern + + ldy #0 + +.56 iny + lda (ZPPtr1),y + bne .56 + + dey + lda #'/' + cmp (ZPPtr1),y + beq .5 + + iny + sta (ZPPtr1),y + iny + lda #0 + sta (ZPPtr1),y + + bra .5 TYPE=DIR, do not extract pattern .1 ldy #0 TYPE is not DIR, check if wc diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index 52ff8f7a..81521fbe 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -637,10 +637,7 @@ BS ldx CH .3 clc rts *-------------------------------------- -ClrScr stz CH - stz CV - - ldx #23 +ClrScr ldx #23 .1 jsr SETUP.L1X @@ -657,6 +654,7 @@ ClrScr stz CH sta CLRWRITEAUX ldy #39 + .3 sta (ZPBaseL1),y dey bpl .3 @@ -664,11 +662,9 @@ ClrScr stz CH dex bpl .1 - clc - rts + stz CV *-------------------------------------- -CROUT jsr CLREOL - stz CH +CROUT stz CH clc rts *-------------------------------------- @@ -1148,5 +1144,5 @@ DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ *-------------------------------------- DRV.END MAN -SAVE USR/SRC/BIN/DRV/CONSOLE.DRV.S +SAVE USR/SRC/DRV/CONSOLE.DRV.S ASM diff --git a/README.md b/README.md index c8fd4308..f86f3595 100644 --- a/README.md +++ b/README.md @@ -269,15 +269,21 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR. | PWD | Working | Print Working Directory | | DATE | Working | | | ECHO | Working | \b,\e,\f,\n,\\\ and \\% supported | +| | | -N : Suppress \r\n | | EXIT | Working | exit shell | | PAUSE | Working | Wait until CR | +| PUSHD | Working | Save actual working directory | +| | | PUSHD do aslo a CD to | +| POPD | Working | Restore previously saved working directory | | READ | Working | -S : no echo (password) | | | | -P : "prompt message" | | TIME | Working | | | SET | Working | -X toggle debug mode | | SLEEP | Working | Wait 10th sec | | STARTPROC | Working | Used in A2osX.startup | -| IF ELSE FI | Working | [ -d direxists ] | +| SHIFT | Working | Remove $1 from cmd line | +| ---- | ------ | ------- | +| IF .. ELSE .. FI | Working | [ -d direxists ] | | | | [ -e fileordirexists ] | | | | [ -f fileexists ] | | | | [ string1 = string2 ] | @@ -288,8 +294,9 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR. | | | [ int32 -le int32 ] | | | | [ int32 -gt int32 ] | | | | [ int32 -ge int32 ] | -| SHIFT | Working | Remove $1 from cmd line | -| WHILE BREAK LOOP | Working | [ same as IF ] | +| WHILE .. LOOP | Working | [ same tests as IF ] | +| BREAK | | | +| CONTINUE | | | ## Shell variables: diff --git a/X.ERRORS.S.txt b/X.ERRORS.S.txt index 49ce3a3c..7514c81d 100644 --- a/X.ERRORS.S.txt +++ b/X.ERRORS.S.txt @@ -33,7 +33,9 @@ ERR.Codes .DA #MLI.E.IO .DA #E.FTB .DA #3 Ctrl-C *-------------------------------------- - .DA #E.SYNTAX + .DA #E.CSYN + .DA #E.SSYN + .DA #E.ESYN .DA #E.STKOVERFLOW .DA #E.NOWHILE .DA #E.NOFOR @@ -73,7 +75,9 @@ ERR.Messages >PSTR "I/O Error" >PSTR "File Too Big" >PSTR "User Interrupt" *-------------------------------------- + >PSTR "Command Syntax Error" >PSTR "Script Syntax Error" + >PSTR "Expression Syntax Error" >PSTR "Stack Overflow" >PSTR "LOOP Without WHILE" >PSTR "NEXT Without FOR"