diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index b0f62225..51dcb739 100644 Binary files a/.Floppies/A2OSX.BOOT.po and b/.Floppies/A2OSX.BOOT.po differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 35d34ae6..0044b06f 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 60464098..c7e5d042 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index f73b1e1b..54012924 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -270,8 +270,6 @@ CS.DOEVENT sec CS.QUIT jsr FIO.FileClose bne CS.QUIT - >DEBUG - jsr SYM.Quit ldy #ASM.T.hMem diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 3e6efd50..c721984d 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -7,7 +7,7 @@ AUTO 6 *-------------------------------------- * Y,A -> Command line (formatted & not empty) *-------------------------------------- -Cmd.ExecYA stz Cmd.Exec.Mode +Cmd.ExecYA stz bStartProc Cmd.ExecYA.1 >SYSCALL ExpandPStrYA >STYA ZPPtr1 @@ -17,14 +17,8 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA ldx #0 ARGS len lda (ZPPtr1),y -.10 -* cmp #'a' -* bcc .11 -* cmp #'z'+1 -* bcs .11 -* eor #$20 to Uppercase -.11 sta CMD,y Store Cmd in Buffer +.10 sta CMD,y Store Cmd in Buffer sty CMD update CMD len tya @@ -51,7 +45,7 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA pla >SYSCALL FreeMemA - >LDYA L.CMDS + >LDYA L.INTCMDS >STYA ZPPtr2 ldx #0 @@ -98,8 +92,7 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA sta ZPPtr2 bcc .1 inc ZPPtr2+1 - bra .1 - + bra .1 *-------------------------------------- Cmd.Exec.EXT ldy #1 lda CMD,y @@ -187,7 +180,7 @@ Cmd.Exec.EXT.BIN >SYSCALL PStrCat .1 >LDYAI UsrBuf256 - bit Cmd.Exec.Mode + bit bStartProc bmi .2 startproc >SYSCALL ExecProcessNewEnvYA @@ -206,10 +199,7 @@ Cmd.Exec.PWD ldy #S.PS.hPREFIX >SYSCALL GetMemPtrA >SYSCALL PPrintFYA bcs .9 - lda #13 - >SYSCALL PutCA - lda #10 - >SYSCALL PutCA + jmp Cmd.Exec.ECHO.CR .9 rts Cmd.Exec.CD1 stz UsrBuf256 @@ -324,7 +314,7 @@ Cmd.Exec.STARTPROC lda ARGS beq Cmd.Exec.ERRSYN sec - ror Cmd.Exec.Mode + ror bStartProc >LDYA L.ARGS jmp Cmd.ExecYA.1 @@ -432,26 +422,26 @@ Cmd.Exec.TIME clc >LDYAI UsrBuf256 >SYSCALL PPrintFYA - bcs .9 - lda #13 - >SYSCALL PutCA - lda #10 - >SYSCALL PutCA -.9 rts + bcs Cmd.Exec.ECHO.RTS + bra Cmd.Exec.ECHO.CR *-------------------------------------- Cmd.Exec.ECHO lda ARGS - beq .1 + beq Cmd.Exec.ECHO.CR >LDYA L.ARGS >SYSCALL PPrintFYA - bcs .9 + bcs Cmd.Exec.ECHO.RTS -.1 lda #13 +Cmd.Exec.ECHO.CR + lda #13 >SYSCALL PutCA + bcs Cmd.Exec.ECHO.RTS + lda #10 >SYSCALL PutCA -.9 rts +Cmd.Exec.ECHO.RTS + rts *-------------------------------------- Cmd.Exec.READ lda ARGS beq .9 diff --git a/SBIN/SHELL.S.TXT.txt b/SBIN/SHELL.S.TXT.txt index 2ae65a62..80270fda 100644 --- a/SBIN/SHELL.S.TXT.txt +++ b/SBIN/SHELL.S.TXT.txt @@ -6,35 +6,47 @@ AUTO 6 .LIST OFF *-------------------------------------- TXT.Exec jsr TXT.GetBuffer - jsr TXT.GetChar + + ldy #0 + + jsr TXT.GetCharNB bcs .9 -.11 cmp #' ' - bne .10 - - jsr TXT.GetNextChar - bcc .11 - bcs .9 - -.10 ldy #0 + jsr TXT.SavePtr Save Ptr, in case of while,for.... cmp #$0D - beq .2 + beq .6 empty line...skip... .1 iny sta (pData),y cpy #CmdLine.MAX - beq .2 + beq .7 Buffer full, try execute... jsr TXT.GetNextChar - bcs .3 - cmp #$0D - bne .1 + bcs .7 EOF, try execute... -.2 jsr TXT.GetNextChar Skip CR + cmp #$0D EOL, skip CR and exec... + beq .6 + + jsr TXT.CheckCharNB + bcc .1 still in keyword....loop -.3 tya + tya + sta (pData) + + jsr TXT.CheckKeyWord + bcs .5 not an internal SCRipt keyword.... + + jmp (J.TXTCMDS,x) + +.5 lda (ZPBufPtr) restore char.... + bra .1 + +.6 jsr TXT.GetNextChar Skip last char... + +.7 tya + beq .8 empty line....nothing to do.. sta (pData) ldy #bEcho @@ -47,6 +59,53 @@ TXT.Exec jsr TXT.GetBuffer .8 clc .9 rts *-------------------------------------- +TXT.CheckKeyWord + phy + >LDYA L.TXTCMDS + >STYA ZPPtr2 + + ldx #0 + +.1 lda (ZPPtr2) + beq .9 Ending 0, not found.... + + cmp (pData) Same Len ? + bne .4 + + tay + +.2 lda (pData),y + + cmp #'a' To Uppercase + bcc .3 + cmp #'z'+1 + bcs .3 + eor #$20 + +.3 cmp (ZPPtr2),y + bne .4 + dey + bne .2 + + ply + clc Found an internal Cmd... + rts + +.4 inx + inx + + lda ZPPtr2 + sec + adc (ZPPtr2) + sta ZPPtr2 + bcc .1 + inc ZPPtr2+1 + bra .1 + +.9 ply + sec + rts +*-------------------------------------- TXT.GetBuffer ldy #hBatchFile lda (pData),y >SYSCALL GetMemPtrA @@ -75,7 +134,33 @@ TXT.SetBufPtr ldy #BatchFilePtr sta ZPBufPtr+1 rts *-------------------------------------- -TXT.PushPtr +TXT.SavePtr rts +*-------------------------------------- +TXT.PushPtr rts +*-------------------------------------- +TXT.GetCharNB jsr TXT.GetChar + bcs TXT.GetNextCharNB.RTS + jsr TXT.CheckCharNB + bcc TXT.GetNextCharNB.RTS +*-------------------------------------- +TXT.GetNextCharNB + jsr TXT.GetNextChar + bcs TXT.GetNextCharNB.RTS + jsr TXT.CheckCharNB + bcs TXT.GetNextCharNB +TXT.GetNextCharNB.RTS + rts +*-------------------------------------- +TXT.CheckCharNB cmp #32 SPACE + beq .9 + cmp #13 CR + beq .9 + cmp #10 LF + beq .9 + cmp #8 TAB + beq .9 + clc +.9 rts *-------------------------------------- TXT.GetNextChar phy ldy #BatchFilePtr @@ -94,7 +179,7 @@ TXT.GetNextChar phy inc ZPBufPtr bne TXT.GetChar inc ZPBufPtr+1 - +*-------------------------------------- TXT.GetChar lda ZPBufPtr eor ZPBufEnd bne .1 @@ -110,6 +195,62 @@ TXT.GetChar lda ZPBufPtr .1 lda (ZPBufPtr) clc rts +*--------------------------------------- +TXT.IsLetterOrDigit + jsr TXT.IsDigit + bcc TXT.IsLetterRTS +*--------------------------------------- +TXT.IsLetter cmp #'A' + bcc .9 + + cmp #'Z'+1 + bcc TXT.IsLetterRTS + + cmp #'a' + bcc .9 + cmp #'z'+1 + rts CC if lowercase + +.9 sec + +TXT.IsLetterRTS rts +*--------------------------------------- +TXT.IsDigit cmp #'0' + bcc .9 + cmp #'9'+1 + rts cc if ok, cs if not + +.9 sec + rts +*-------------------------------------- +TXT.Exec.IF jsr TXT.GetCharNB + bcs .9 + cmp #'(' + bne .9 + + jsr TXT.ExpEval + bcs .99 + tax + + jsr TXT.GetCharNB + bcs .9 + cmp #')' + bne .9 + + txa + + + clc + rts + + +.9 lda #SYSMGR.ERRSYN + sec +.99 rts +*-------------------------------------- +TXT.ExpEval lda #1 + clc + rts *-------------------------------------- MAN SAVE /A2OSX.SRC/SBIN/SHELL.S.TXT diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 03ce39e9..9f4c5ef8 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -55,7 +55,7 @@ L.TIME .DA TIME L.STAT .DA STAT L.FMT.DATE .DA FMT.DATE L.FMT.TIME .DA FMT.TIME -L.CMDS .DA CMDS +L.INTCMDS .DA INTCMDS J.INTCMDS .DA Cmd.Exec.CD .DA Cmd.Exec.DATE .DA Cmd.Exec.ECHO @@ -66,6 +66,8 @@ J.INTCMDS .DA Cmd.Exec.CD .DA Cmd.Exec.SET .DA Cmd.Exec.STARTPROC .DA Cmd.Exec.TIME +L.TXTCMDS .DA TXTCMDS +J.TXTCMDS .DA TXT.Exec.IF L.ERR.Codes .DA ERR.Codes L.ERR.Messages .DA ERR.Messages .DA 0 @@ -495,7 +497,7 @@ CS.END ENV.PATH >PSTR "PATH" ENV.PWD >PSTR "PWD" ENV.PS1 >PSTR "PS1" -CMDS >PSTR "CD" +INTCMDS >PSTR "CD" >PSTR "DATE" >PSTR "ECHO" >PSTR "EXIT" @@ -506,6 +508,8 @@ CMDS >PSTR "CD" >PSTR "STARTPROC" >PSTR "TIME" .HS 00 +TXTCMDS >PSTR "IF" + .HS 00 *-------------------------------------- MSG.GREETINGS >PSTR "\r\nA2osX-Shell\r\n\r\n" MSG.PROMPT >PSTR "%S$ " @@ -525,8 +529,8 @@ TIME .BS S.TIME STAT .BS S.STAT hNEWPATH .BS 1 hCmdLine .BS 1 -Cmd.Exec.Mode .BS 1 hFullPath .BS 1 +bStartProc .BS 1 *-------------------------------------- .DUMMY .OR 0 @@ -545,8 +549,7 @@ CmdHistory.END .BS 1 hBatchFile .BS 1 BatchFilePtr .BS 2 BatchFileLen .BS 2 -DS.END - .ED +DS.END .ED *-------------------------------------- MAN SAVE /A2OSX.SRC/SBIN/SHELL.S