From 51c45b207491e4098688e292e7683d3494c32f3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sat, 10 Nov 2018 15:30:09 +0100 Subject: [PATCH] Kernel 0.9.2 --- .Floppies/A2OSX.BOOT.po | Bin 143360 -> 143360 bytes .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/MKDIR.S.txt | 67 ++++++ INC/A2osX.I.txt | 4 + README.md | 4 +- SBIN/SHELL.G.CSH.txt | 3 - SBIN/SHELL.R.CSH.txt | 54 +++++ SBIN/SHELL.S.CL.txt | 426 ++++++++++++++++++++++++++++++++++++--- SBIN/SHELL.S.CMD.txt | 393 ++++-------------------------------- SBIN/SHELL.S.CSH.txt | 172 +++------------- SBIN/SHELL.S.HIS.txt | 8 +- SBIN/SHELL.S.IO.txt | 70 +++++++ SBIN/SHELL.S.txt | 382 ++++++++++++++++++----------------- SYS/KERNEL.S.STAT.txt | 6 +- 15 files changed, 869 insertions(+), 720 deletions(-) create mode 100644 BIN/MKDIR.S.txt create mode 100644 SBIN/SHELL.R.CSH.txt diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index 7a13c93fb772575b4c632d6ac62012e55e240901..15b059ef449efb5478999fa91484add12709a22e 100644 GIT binary patch delta 27551 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 F{|o=DmCXPE delta 37603 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 G|Nj8>yprJn diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 599bbb84d19eb1547c4f3032d4f6d0a649274cf3..a4fb4f68a97e645ce81a8204b6058e1425b60712 100644 GIT binary patch delta 57236 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 delta 58067 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 Rjr+{EySYSCALL ArgV + bcs .99 + + >SYSCALL MKDir + bcs .9 + + lda #0 + sec +.9 rts + +.99 lda #E.SYN + sec + rts +*-------------------------------------- +CS.DOEVENT sec + rts +*-------------------------------------- +CS.QUIT clc + rts +*-------------------------------------- +CS.END +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +DS.END + .ED +*-------------------------------------- +MAN +SAVE /A2OSX.SRC/BIN/MKDIR.S +ASM diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 34545614..87dc3d45 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -93,10 +93,14 @@ E.FTB .EQ $CC File Too Big Error *-------------------------------------- * A2osX.SYSCALL Constants *-------------------------------------- +C.ETX .EQ 3 Ctrl-C C.EOF .EQ 4 Ctrl-D C.ENQ .EQ 5 +C.BEL .EQ 7 Ctrl.G C.BS .EQ 8 +C.TAB .EQ 9 C.LF .EQ 10 +C.VT .EQ 11 C.FF .EQ 12 C.CR .EQ 13 C.FS .EQ 21 diff --git a/README.md b/README.md index 0ccb85d2..bef20e7b 100644 --- a/README.md +++ b/README.md @@ -258,6 +258,8 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR. | Name | Status | Comment | | ---- | ------ | ------- | | CD | Working | Improved syntax : now, 'CD ../BIN' works | +| MD | Working | Create a directory | +| RD | Working | Delete an empty directory | | PWD | Working | | | DATE | Working | | | ECHO | Working | \b,\e,\f,\n,\\\ and \\% supported | @@ -324,7 +326,7 @@ note : '$VAR' does NOT expand Variable | LSDEV | Working | Dump device Drivers | 0.92 | | LSOF | Working | List Open Files | 0.92 | | PS | Working | List Processes| 0.92 | -| MD | Working | Make Directory| 0.92 | +| MKDIR | Working | Make Directory| 0.92 | | LS | Working | -A : Do Not Print . & .. | 0.92 | | | | -L : long listing with size/date... | | | | | -R : Recurse subdirectories | | diff --git a/SBIN/SHELL.G.CSH.txt b/SBIN/SHELL.G.CSH.txt index 53d462c6..a41cd602 100644 --- a/SBIN/SHELL.G.CSH.txt +++ b/SBIN/SHELL.G.CSH.txt @@ -3,11 +3,8 @@ PREFIX /A2OSX.BUILD AUTO 4,1 .LIST OFF *-------------------------------------- -CSH.hBuf .BS 1 CSH.BufPtrSave .BS 2 -CSH.LineNum .BS 2 - CSH.hSymbols .BS 1 CSH.SymbolsPtr .BS 1 diff --git a/SBIN/SHELL.R.CSH.txt b/SBIN/SHELL.R.CSH.txt new file mode 100644 index 00000000..70021d14 --- /dev/null +++ b/SBIN/SHELL.R.CSH.txt @@ -0,0 +1,54 @@ +NEW +PREFIX /A2OSX.BUILD +AUTO 4,1 + .LIST OFF +*-------------------------------------- +L.CSH.BOPS .DA CSH.BOPS +J.CSH.BOPS .DA CSH.BOPS.ADD + .DA CSH.BOPS.SUB + .DA CSH.BOPS.MUL + .DA CSH.BOPS.DIV + .DA CSH.BOPS.MOD + .DA CSH.BOPS.SHL + .DA CSH.BOPS.SHR + .DA CSH.BOPS.L + .DA CSH.BOPS.G + .DA CSH.BOPS.LE + .DA CSH.BOPS.GE + .DA CSH.BOPS.EQ + .DA CSH.BOPS.NE + .DA CSH.BOPS.AND + .DA CSH.BOPS.OR + .DA CSH.BOPS.EOR + .DA CSH.BOPS.LAND + .DA CSH.BOPS.LOR +L.CSH.FN .DA CSH.FN +L.CSH.KW .DA CSH.KW +L.CSH.STYPES .DA CSH.STYPES +J.CSH.KW .DA CSH.IF + .DA CSH.WHILE + .DA CSH.ELSE + .DA CSH.DO + .DA CSH.FOR + .DA CSH.SWITCH + .DA CSH.CASE + .DA CSH.BREAK + .DA CSH.CONTINUE + .DA CSH.FLOAT + .DA CSH.SIGNED + .DA CSH.UNSIGNED +J.CSH.STYPES .DA CSH.CHAR + .DA CSH.INT + .DA CSH.LONG +J.CSH.UTYPES .DA CSH.UCHAR + .DA CSH.UINT + .DA CSH.ULONG +J.CSH.KW.START .DA CSH.IF.START + .DA CSH.WHILE.START +J.CSH.KW.END .DA CSH.IF.END + .DA CSH.WHILE.END +*-------------------------------------- +MAN +SAVE /A2OSX.SRC/SBIN/SHELL.R.CSH +LOAD /A2OSX.SRC/SBIN/SHELL.S +ASM diff --git a/SBIN/SHELL.S.CL.txt b/SBIN/SHELL.S.CL.txt index 47636aa1..9fef2a35 100644 --- a/SBIN/SHELL.S.CL.txt +++ b/SBIN/SHELL.S.CL.txt @@ -68,15 +68,15 @@ CL.CHARIN.CTRL cpx #C.CR >LDYA L.MSG.ECHOCRLF >SYSCALL printf - >LDA.G CmdBufPtr + >LDA.G CL.Ptr tay lda #0 sta (ZPCMDBuf),y tya - >STA.G CmdBuflen + >STA.G CL.Len lda #$ff - >STA.G bCmdBufexec + >STA.G CL.bExec clc rts @@ -101,7 +101,7 @@ CL.CHARIN.CTRL cpx #C.CR .13 clc rts *-------------------------------------- -CL.Insert >LDA.G CmdBuflen +CL.Insert >LDA.G CL.Len cmp #CmdLine.MAX beq .9 Buffer full, discard... @@ -118,12 +118,12 @@ CL.Insert >LDA.G CmdBuflen dey phy tya - >CMP.G CmdBufPtr + >CMP.G CL.Ptr bne .1 - ply Y=CmdBufPtr + ply Y=CL.Ptr -* >LDA.G CmdBufPtr +* >LDA.G CL.Ptr txa sta (ZPCMDBuf),y @@ -135,7 +135,7 @@ CL.Insert >LDA.G CmdBuflen .2 txa >SYSCALL PutChar - >INC.G CmdBufPtr + >INC.G CL.Ptr jmp CL.PrintEOL @@ -154,16 +154,16 @@ CL.CLR ldy #0 lda (ZPCMDBuf),y bne .2 - jsr CL.PRINT + jsr CL.PrintCmdBuf *-------------------------------------- CL.RESET lda #0 sta (ZPCMDBuf) - >STA.G bCmdBufexec - >STA.G CmdBufPtr - >STA.G CmdBuflen + >STA.G CL.bExec + >STA.G CL.Ptr + >STA.G CL.Len rts *-------------------------------------- -CL.BS >LDA.G CmdBufPtr +CL.BS >LDA.G CL.Ptr beq .9 dec @@ -173,12 +173,12 @@ CL.BS >LDA.G CmdBufPtr >SYSCALL PutChar .9 rts *-------------------------------------- -CL.NAK >LDA.G CmdBufPtr - >CMP.G CmdBuflen +CL.NAK >LDA.G CL.Ptr + >CMP.G CL.Len beq .9 inc - >STA.G CmdBufPtr + >STA.G CL.Ptr lda #C.FS >SYSCALL PutChar @@ -186,24 +186,24 @@ CL.NAK >LDA.G CmdBufPtr *-------------------------------------- * Erase char UNDER cursor *-------------------------------------- -CL.SUPPR >LDA.G CmdBuflen +CL.SUPPR >LDA.G CL.Len beq CL.PrintEOL.8 - >LDA.G CmdBufPtr + >LDA.G CL.Ptr bra CL.DEL.1 *-------------------------------------- * Erase char BEFORE cursor *-------------------------------------- -CL.DEL >LDA.G CmdBuflen +CL.DEL >LDA.G CL.Len beq CL.PrintEOL.8 - >LDA.G CmdBufPtr + >LDA.G CL.Ptr beq CL.PrintEOL.8 lda #C.BS >SYSCALL PutChar - >DEC.G CmdBufPtr + >DEC.G CL.Ptr CL.DEL.1 pha @@ -216,16 +216,16 @@ CL.DEL.1 pha phy tya - >CMP.G CmdBufLen + >CMP.G CL.Len bne .1 pla - >DEC.G CmdBuflen + >DEC.G CL.Len *-------------------------------------- -CL.PrintEOL >LDA.G CmdBufPtr +CL.PrintEOL >LDA.G CL.Ptr -.1 >CMP.G CmdBuflen +.1 >CMP.G CL.Len beq .2 pha @@ -239,9 +239,9 @@ CL.PrintEOL >LDA.G CmdBufPtr .2 lda #' ' >SYSCALL PutChar - >LDA.G CmdBufPtr + >LDA.G CL.Ptr -.3 >CMP.G CmdBuflen +.3 >CMP.G CL.Len beq .4 pha @@ -258,10 +258,380 @@ CL.PrintEOL >LDA.G CmdBufPtr CL.PrintEOL.8 clc rts *-------------------------------------- -CL.PRINT >LDYA ZPCMDBuf +CL.PrintCmdBuf >LDYA ZPCMDBuf >SYSCALL printf rts *-------------------------------------- +CL.GetLine lda (ZPFileBufPtr) + beq .9 + + ldy #0 + +.1 lda (ZPFileBufPtr),y + beq .7 + + cmp #C.CR + beq .6 + + sta (ZPCMDBuf),y + iny + cpy #CmdLine.MAX + bne .1 + + lda #E.SYN Line Too long !!! +* sec + rts + +.6 sec skip CR + .HS 90 BCC + +.7 clc + + tya + adc ZPFileBufPtr + sta ZPFileBufPtr + bcc .8 + inc ZPFileBufPtr+1 + +.8 lda #0 + sta (ZPCMDBuf),y + + tya + >STA.G CL.Len + lda #$ff + >STA.G CL.bExec + + clc + rts + +.9 lda #C.EOF + sec + rts +*-------------------------------------- +CL.Trace >LDA.G bSET.X + beq .8 + + >PUSHW ZPCMDBuf + >PUSHBI 2 + >LDYA L.MSG.TRACE + >SYSCALL printf +.8 clc + rts +*-------------------------------------- +* in: +* ZPCMDBuf : CString command line +* out: +* ZPArgVBuf : +* /path/excmd\0 arg1\0 arg2\0 ... \0 +* - or - +* intcmd\0 arg1\0 arg2\0 ... \0 +*-------------------------------------- +CL.Parse >STZ.G CMD.IntCmd + + lda #S.PS.F.HOLD+S.PS.F.DUPENV + >STA.G CMD.PSFlags + + >PUSHW ZPCMDBuf + >LDYA ZPCMDBuf + + >SYSCALL Args2ArgV + + lda #0 + sta (ZPArgVBuf) + + lda (ZPCMDBuf) + beq .8 + +.1 cmp #'#' comment ? + beq .8 yes, ignore remaining + + >LDA.G CMD.IntCmd + bne .6 we already have Cmd, go check args + + ldy #2 + lda (ZPCMDBuf),y only one char ? + bne .2 + + dey + lda (ZPCMDBuf),y + cmp #'.' leading dot ? + bne .2 + + >LDA.G CMD.PSFlags yes, child process will run in same ENV + and #$ff^S.PS.F.DUPENV + sta (pData),y + bra .7 and skip this token + +.2 jsr CL.CheckCmd + bcc .7 success, skip token, already added by CheckCmd + + rts + +.6 jsr CL.CheckIO + bcc .7 + tay + bne .9 + + jsr CL.AddCmdBufTokenToArgV + bcs .9 + +.7 jsr CL.NextCmdBufToken + lda (ZPCMDBuf) + bne .1 + +.8 clc + +.9 rts +*-------------------------------------- +* ZPCMDBuf-> argv[] (formatted & not empty) +*-------------------------------------- +CL.CheckCmd ldy #$ff + +.1 iny + lda (ZPCMDBuf),y + beq .2 + cmp #'/' + bne .1 + + >LDYA ZPCMDBuf found /, some path specified, External, no search + >SYSCALL realpath + bcs .9 + + txa + >STA.G CMD.hCmdLine + bra .6 go check type... + +.2 >PUSHW ZPCMDBuf + >LDYA L.CMD.INT + jsr Lookup no / found, search internal... + bcs .4 not internal, search PATH + + phx + plx + bne .3 + + >LDA.G CMD.PSFlags if STARTPROC, skip keyword... + and #$ff^S.PS.F.HOLD + sta (pData),y ...and toggle S.PS.F.HOLD flag + clc +.9 rts + +.3 jsr CL.AddYAToArgV X unmodified + bcs .9 + + txa + >STA.G CMD.IntCmd + + clc + rts + +.4 >LDYAI 256 Get a buffer for found path + >SYSCALL GetMem + bcs .9 + + txa + >STA.G CMD.hCmdLine + + >LDYA L.ENV.PATH push ENVNAME=PATH for search + >SYSCALL GetEnv get value for ENV=PATH + bcs .5 no PATH, try workdir + + jsr CL.SearchExt + bcc .6 found in PATH, go check Type + +.5 ldy #S.PS.hPREFIX not found, try in CD + lda (pPs),y + >SYSCALL GetMemPtr + jsr CL.SearchExt + bcs CL.CheckCmd.90 + +.6 >PUSHEA.G CMD.Stat + >LDA.G CMD.hCmdLine + >SYSCALL GetMemPtr + >SYSCALL STAT + bcs CL.CheckCmd.90 + + lda #$ff + >STA.G CMD.IntCmd + + ldy #CMD.Stat+S.STAT.P.TYPE + lda (pData),y + cmp #S.FI.T.TXT + beq CL.CheckCmd.TXT + cmp #S.FI.T.BIN + beq CL.CheckCmd.BIN + cmp #S.FI.T.SYS + beq CL.CheckCmd.SYS + + lda #E.SYN + sec + +CL.CheckCmd.90 php + pha + >LDA.G CMD.hCmdLine + >SYSCALL FreeMem + pla + + plp +CL.CheckCmd.RTS + rts +*-------------------------------------- +* TXT : add "/PATH/SHELL" "/PATH/CMD" +*-------------------------------------- +CL.CheckCmd.TXT lda #0 + >SYSCALL ArgV + jsr CL.AddYAToArgV + bcs CL.CheckCmd.90 +*-------------------------------------- +* BIN : add "/PATH/CMD" +*-------------------------------------- +CL.CheckCmd.BIN >LDA.G CMD.hCmdLine + >SYSCALL GetMemPtr + jsr CL.AddYAToArgV + + bra CL.CheckCmd.90 +*-------------------------------------- +CL.CheckCmd.SYS bra * +*-------------------------------------- +CL.SearchExt pha + phy + >PUSHEA.G CMD.Stat + >LDA.G CMD.hCmdLine + >SYSCALL GetMemPtr + >PUSHYA push dest full path + ply + pla + >PUSHYA push search list + >LDYA ZPCMDBuf push CMD + >SYSCALL FileSearch + rts +*-------------------------------------- +CL.CheckIO >PUSHW ZPCMDBuf + >LDYA L.CL.IO + jsr Lookup + bcs .9 not a IO token...should be an arg.... + phx + + jsr CL.NextCmdBufToken skip this IO token + + plx + jmp (J.CL.IO,x) + +.9 lda #0 + rts +*-------------------------------------- +CL.IO.AMP >LDA.G CMD.PSFlags + and #$ff^S.PS.F.HOLD + sta (pData),y + clc + rts + +CL.IO.PIPE + clc + rts + +CL.IO.IN lda #O.RDONLY+O.TEXT + jsr CL.IO.Open + bcs .9 + jsr IO.Set.In + + jsr CL.NextCmdBufToken skip arg + clc +.9 rts + +CL.IO.OUTA +CL.IO.1OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT + bra CL.IO.OUT.1 +CL.IO.OUT +CL.IO.1OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT + +CL.IO.OUT.1 jsr CL.IO.Open + bcs .9 + jsr IO.Set.Out + + jsr CL.NextCmdBufToken skip arg + clc +.9 rts + +CL.IO.2OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT + bra CL.IO.2OUT.1 +CL.IO.2OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT + +CL.IO.2OUT.1 jsr CL.IO.Open + bcs .9 + jsr IO.Set.Err + + jsr CL.NextCmdBufToken skip arg + clc +.9 rts +*-------------------------------------- +CL.IO.Open pha + lda (ZPCMDBuf) + beq .9 no arg left.... + + >PUSHWI 0 Aux type + >PUSHBI S.FI.T.TXT ftype + pla + >PUSHA flags + >LDYA ZPCMDBuf + >SYSCALL fopen + rts + +.9 pla + lda #E.SYN + sec + rts +*-------------------------------------- +CL.NextCmdBufToken + lda (ZPCMDBuf) + inc ZPCMDBuf + bne .1 + inc ZPCMDBuf+1 +.1 tax + bne CL.NextCmdBufToken + rts +*-------------------------------------- +CL.AddCmdBufTokenToArgV + >LDYA ZPCmdBuf +CL.AddYAToArgV >STYA ZPPtr1 + + >LDYA ZPArgVBuf + >STYA ZPPtr2 + +.1 lda (ZPPtr2) scan to end of argV + beq .6 + +.2 inc ZPPtr2 + bne .3 + inc ZPPtr2+1 +.3 lda (ZPPtr2) + bne .2 + + inc ZPPtr2 + bne .4 + inc ZPPtr2+1 +.4 lda (ZPPtr2) + bne .2 + +.6 ldy #$ff + +.7 iny +* beq .9 + lda (ZPPtr1),y + sta (ZPPtr2),y + bne .7 including str ending \0 + + iny +* beq .9 + sta (ZPPtr2),y arg[] ending \0 + + clc + rts + +.9 lda #E.BUF + sec + rts +*-------------------------------------- MAN SAVE /A2OSX.SRC/SBIN/SHELL.S.CL LOAD /A2OSX.SRC/SBIN/SHELL.S diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 781daf9a..cb3c9ce2 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -28,274 +28,6 @@ CMD.Quit >LDA.G CMD.hArgVBuf >SYSCALL FreeMem .9 rts *-------------------------------------- -* in: -* ZPCMDBuf : CString command line -* out: -* ZPArgVBuf : -* /path/excmd\0 arg1\0 arg2\0 ... \0 -* - or - -* intcmd\0 arg1\0 arg2\0 ... \0 -*-------------------------------------- -Cmd.Parse >STZ.G CMD.IntCmd - - lda #S.PS.F.HOLD+S.PS.F.DUPENV - >STA.G CMD.PSFlags - - >PUSHW ZPCMDBuf - >LDYA ZPCMDBuf - - >SYSCALL Args2ArgV - - lda #0 - sta (ZPArgVBuf) - - lda (ZPCMDBuf) - beq .8 - -.1 cmp #'#' comment ? - beq .8 yes, ignore remaining - - >LDA.G CMD.IntCmd - bne .6 we already have Cmd, go check args - - ldy #2 - lda (ZPCMDBuf),y only one char ? - bne .2 - - dey - lda (ZPCMDBuf),y - cmp #'.' leading dot ? - bne .2 - - >lda.G CMD.PSFlags yes, child process will run in same ENV - and #S.PS.F.DUPENV - sta (pData),y - bra .7 and skip this token - -.2 jsr CMD.CheckCmd - bcc .7 success, skip token, already added by CheckCmd - - rts - -.6 jsr CMD.CheckIO - bcc .7 - tay - bne .9 - - jsr CMD.AddCmdBufTokenToArgV - bcs .9 - -.7 jsr CMD.NextCmdBufToken - lda (ZPCMDBuf) - bne .1 - -.8 clc - -.9 rts -*-------------------------------------- -* ZPCMDBuf-> argv[] (formatted & not empty) -*-------------------------------------- -Cmd.CheckCmd ldy #$ff - -.1 iny - lda (ZPCMDBuf),y - beq .2 - cmp #'/' - bne .1 - - >LDYA ZPCMDBuf found /, some path specified, External, no search - >SYSCALL realpath - bcs .9 - - txa - >STA.G CMD.hCmdLine - bra .6 go check type... - -.2 >PUSHW ZPCMDBuf - >LDYA L.CMD.INT - jsr CMD.Search no / found, search internal... - bcs .4 not internal, search PATH - - phx - plx - bne .3 - - >LDA.G CMD.PSFlags if STARTPROC, skip keyword... - and #$ff^S.PS.F.HOLD - sta (pData),y ...and toggle S.PS.F.HOLD flag - clc -.9 rts - -.3 jsr CMD.AddYAToArgV X unmodified - bcs .9 - - txa - >STA.G CMD.IntCmd - - clc - rts - -.4 >LDYAI 256 Get a buffer for found path - >SYSCALL GetMem - bcs .9 - - txa - >STA.G CMD.hCmdLine - - >LDYA L.ENV.PATH push ENVNAME=PATH for search - >SYSCALL GetEnv get value for ENV=PATH - bcs .5 no PATH, try workdir - - jsr Cmd.SearchExt - bcc .6 found in PATH, go check Type - -.5 ldy #S.PS.hPREFIX not found, try in CD - lda (pPs),y - >SYSCALL GetMemPtr - jsr Cmd.SearchExt - bcs Cmd.CheckCmd.90 - -.6 >PUSHEA.G CMD.Stat - >LDA.G CMD.hCmdLine - >SYSCALL GetMemPtr - >SYSCALL STAT - bcs Cmd.CheckCmd.90 - - lda #$ff - >STA.G CMD.IntCmd - - ldy #CMD.Stat+S.STAT.P.TYPE - lda (pData),y - cmp #S.FI.T.TXT - beq Cmd.CheckCmd.TXT - cmp #S.FI.T.BIN - beq Cmd.CheckCmd.BIN - cmp #S.FI.T.SYS - beq Cmd.CheckCmd.SYS - - lda #E.SYN - sec - -Cmd.CheckCmd.90 php - pha - >LDA.G CMD.hCmdLine - >SYSCALL FreeMem - pla - - plp -Cmd.CheckCmd.RTS - rts -*-------------------------------------- -* TXT : add "/PATH/SHELL" "/PATH/CMD" -*-------------------------------------- -Cmd.CheckCmd.TXT - lda #0 - >SYSCALL ArgV - jsr CMD.AddYAToArgV - bcs Cmd.CheckCmd.90 -*-------------------------------------- -* BIN : add "/PATH/CMD" -*-------------------------------------- -Cmd.CheckCmd.BIN - >LDA.G CMD.hCmdLine - >SYSCALL GetMemPtr - jsr CMD.AddYAToArgV - - bra Cmd.CheckCmd.90 -*-------------------------------------- -Cmd.CheckCmd.SYS -*-------------------------------------- - bra * -*-------------------------------------- -Cmd.SearchExt pha - phy - >PUSHEA.G CMD.Stat - >LDA.G CMD.hCmdLine - >SYSCALL GetMemPtr - >PUSHYA push dest full path - ply - pla - >PUSHYA push search list - >LDYA ZPCMDBuf push CMD - >SYSCALL FileSearch - rts -*-------------------------------------- -CMD.CheckIO >PUSHW ZPCMDBuf - >LDYA L.CMD.IO - jsr CMD.Search - bcs .9 not a IO token...should be an arg.... - phx - - jsr CMD.NextCmdBufToken skip this IO token - - plx - jmp (J.CMD.IO,x) - -.9 lda #0 - rts -*-------------------------------------- -CMD.IO.AMP >LDA.G CMD.PSFlags - and #$ff^S.PS.F.HOLD - sta (pData),y - clc - rts - -CMD.IO.PIPE - clc - rts - -CMD.IO.IN lda #O.RDONLY+O.TEXT - jsr CMD.IO.Open - bcs .9 - jsr IO.Set.In - - jsr CMD.NextCmdBufToken skip arg - clc -.9 rts - -CMD.IO.OUTA -CMD.IO.1OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT - bra CMD.IO.OUT.1 -CMD.IO.OUT -CMD.IO.1OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT - -CMD.IO.OUT.1 jsr CMD.IO.Open - bcs .9 - jsr IO.Set.Out - - jsr CMD.NextCmdBufToken skip arg - clc -.9 rts - -CMD.IO.2OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT - bra CMD.IO.2OUT.1 -CMD.IO.2OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT - -CMD.IO.2OUT.1 jsr CMD.IO.Open - bcs .9 - jsr IO.Set.Err - - jsr CMD.NextCmdBufToken skip arg - clc -.9 rts -*-------------------------------------- -CMD.IO.Open pha - lda (ZPCMDBuf) - beq .9 no arg left.... - - >PUSHWI 0 Aux type - >PUSHBI S.FI.T.TXT ftype - pla - >PUSHA flags - >LDYA ZPCMDBuf - >SYSCALL fopen - rts - -.9 pla - lda #E.SYN - sec - rts -*-------------------------------------- * Input : ZPArgVBuf *-------------------------------------- Cmd.Exec >LDA.G CMD.IntCmd @@ -681,7 +413,7 @@ Cmd.INT.SLEEP ldx #1 clc rts -.9 jmp Cmd.Exec.ERRSYN +.9 jmp Cmd.Exec.ERRSYN *-------------------------------------- Cmd.INT.PAUSE lda #$FF >STA.G bPause @@ -693,13 +425,44 @@ Cmd.INT.EXIT lda #$FF clc rts *-------------------------------------- +Cmd.INT.MD ldx #1 + jsr Cmd.GetArgX + bcs .9 + + >SYSCALL MKDir + rts + +.9 jmp Cmd.Exec.ERRSYN +*-------------------------------------- +Cmd.INT.RD ldx #1 + jsr Cmd.GetArgX + bcs .9 + phy + pha + >PUSHEA.G CMD.Stat + pla + ply + >SYSCALL STAT + bcs .99 + + >LDA.G CMD.Stat+S.STAT.P.TYPE + cmp #S.FI.T.DIR + bne .9 + + ldx #1 + jsr Cmd.GetArgX + >SYSCALL Remove +.99 rts + +.9 jmp Cmd.Exec.ERRSYN +*-------------------------------------- Cmd.INT.IF ldx #1 jsr Cmd.GetArgX beq .9 >PUSHYA >LDYA L.CMD.IF.TOKEN1 - jsr CMD.Search + jsr Lookup bcs .9 @@ -716,7 +479,7 @@ Cmd.INT.IF ldx #1 >PUSHYA >LDYA L.CMD.IF.TOKEN2 -d -e -f ? - jsr CMD.Search + jsr Lookup bcs .1 jmp (J.CMD.IF.TOKEN2,x) @@ -734,94 +497,6 @@ CMD.IF.F clc rts *-------------------------------------- -CMD.NextCmdBufToken - lda (ZPCMDBuf) - inc ZPCMDBuf - bne .1 - inc ZPCMDBuf+1 -.1 tax - bne CMD.NextCmdBufToken - rts -*-------------------------------------- -CMD.AddCmdBufTokenToArgV - >LDYA ZPCmdBuf -CMD.AddYAToArgV >STYA ZPPtr1 - - >LDYA ZPArgVBuf - >STYA ZPPtr2 - -.1 lda (ZPPtr2) scan to end of argV - beq .6 - -.2 inc ZPPtr2 - bne .3 - inc ZPPtr2+1 -.3 lda (ZPPtr2) - bne .2 - - inc ZPPtr2 - bne .4 - inc ZPPtr2+1 -.4 lda (ZPPtr2) - bne .2 - -.6 ldy #$ff - -.7 iny -* beq .9 - lda (ZPPtr1),y - sta (ZPPtr2),y - bne .7 including str ending \0 - - iny -* beq .9 - sta (ZPPtr2),y arg[] ending \0 - - clc - rts - -.9 lda #E.BUF - sec - rts -*-------------------------------------- -CMD.Search >STYA ZPPtr2 - >PULLW ZPPtr1 - - ldx #0 - -.1 phx - - >PUSHW ZPPtr2 - >LDYA ZPPtr1 - >SYSCALL StrCaseCmp - bcs .2 - - plx - >LDYA ZPPtr2 - clc - rts - -.2 inc ZPPtr2 - bne .3 - inc ZPPtr2+1 - -.3 lda (ZPPtr2) - bne .2 - - inc ZPPtr2 - bne .4 - inc ZPPtr2+1 - -.4 plx - inx - inx - - lda (ZPPtr2) Array Ending 0, must be an external Cmd.... - bne .1 - - sec - rts -*-------------------------------------- Cmd.GetArgX >LDYA ZPArgVBuf dex diff --git a/SBIN/SHELL.S.CSH.txt b/SBIN/SHELL.S.CSH.txt index 4120eacb..09cd7d8c 100644 --- a/SBIN/SHELL.S.CSH.txt +++ b/SBIN/SHELL.S.CSH.txt @@ -30,16 +30,6 @@ CSH.Init lda #$0 >STA.G CSH.DataPtr >STA.G CSH.StackPtr - lda #1 - >SYSCALL ArgV - >SYSCALL LoadTxtFile - bcs .9 - - txa - >STA.G CSH.hBuf - >SYSCALL GetMemPtr - >STYA ZPCSHBufPtr - >LDYAI 256 >SYSCALL GetMem0 bcs .9 @@ -67,7 +57,7 @@ CSH.Init lda #$0 * clc .9 rts *-------------------------------------- -CSH.Quit >LDA.G CSH.hBuf +CSH.Quit >LDA.G hFileBuf beq .1 >SYSCALL FreeMem @@ -85,9 +75,7 @@ CSH.Quit >LDA.G CSH.hBuf .8 rts *-------------------------------------- -CSH.Run jsr CL.RESET - - jsr CSH.GetCharNB +CSH.Run jsr CSH.GetCharNB bcs .9 cmp #'}' End of block ? @@ -158,42 +146,9 @@ CSH.Run jsr CL.RESET jsr CSH.RestorePtr Restore ptr to get full cmd line to execute - ldy #$0 + jsr CL.GetLine + bcs .99 -.6 lda (ZPCSHBufPtr),y - beq .7 - - cmp #C.CR - beq .7 - sta (ZPCMDBuf),y - iny - cpy #CmdLine.MAX - bne .6 - bra .99 Line Too long !!! - -.7 lda #0 - sta (ZPCMDBuf),y - - tya - clc - adc ZPCSHBufPtr - sta ZPCSHBufPtr - bcc .8 - inc ZPCSHBufPtr+1 - -.8 tya - >STA.G CmdBuflen - lda #$ff - >STA.G bCmdBufexec - - >LDA.G bSET.X - beq .80 - - >PUSHW ZPCMDBuf - >PUSHBI 2 - >LDYA L.MSG.ECHO - >SYSCALL printf - .80 clc rts *-------------------------------------- @@ -279,9 +234,9 @@ CSH.IF.END jsr CSH.GetNextChar just skip ending '}' rts *-------------------------------------- CSH.WHILE.END jsr CSH.Pop - sta ZPCSHBufPtr + sta ZPFileBufPtr jsr CSH.Pop - sta ZPCSHBufPtr+1 + sta ZPFileBufPtr+1 clc rts *-------------------------------------- @@ -556,12 +511,12 @@ CSH.ExpEval jsr CSH.ZeroACC .80 clc rts *-------------------------------------- -CSH.SavePtr >LDYA ZPCSHBufPtr +CSH.SavePtr >LDYA ZPFileBufPtr >STYA.G CSH.BufPtrSave rts *-------------------------------------- CSH.RestorePtr >LDYA.G CSH.BufPtrSave - >STYA ZPCSHBufPtr + >STYA ZPFileBufPtr rts *-------------------------------------- CSH.LookupFN sec @@ -596,7 +551,7 @@ CSH.Lookup phy Y = len .2 lda (ZPPtr1),y .3 dey - cmp (ZPCSHBufPtr),y + cmp (ZPFileBufPtr),y bne .4 tya @@ -604,10 +559,10 @@ CSH.Lookup phy Y = len pla Found keyword... clc - adc ZPCSHBufPtr ..advance Ptr to char after it.. - sta ZPCSHBufPtr + adc ZPFileBufPtr ..advance Ptr to char after it.. + sta ZPFileBufPtr bcc .31 - inc ZPCSHBufPtr+1 + inc ZPFileBufPtr+1 .31 lda ZPPtr1 sec @@ -653,8 +608,8 @@ CSH.GetNumInACC >LDA.G CSH.ACCT cmp #CSH.T.FLOAT bcc .1 - >PUSHWI ZPCSHBufPtr - >LDYA ZPCSHBufPtr + >PUSHWI ZPFileBufPtr + >LDYA ZPFileBufPtr >SYSCALL StrToF bcs .9 @@ -664,8 +619,8 @@ CSH.GetNumInACC >LDA.G CSH.ACCT .1 >PUSHBI 10 - >PUSHWI ZPCSHBufPtr - >LDYA ZPCSHBufPtr + >PUSHWI ZPFileBufPtr + >LDYA ZPFileBufPtr >SYSCALL StrToL bcs .9 @@ -782,7 +737,7 @@ CSH.GetVar >LDYA ZPCSHSymbols .2 lda (ZPPtr1),y dey - cmp (ZPCSHBufPtr),y + cmp (ZPFileBufPtr),y bne .3 tya @@ -802,10 +757,10 @@ CSH.GetVar >LDYA ZPCSHSymbols txa Get back len clc - adc ZPCSHBufPtr - sta ZPCSHBufPtr + adc ZPFileBufPtr + sta ZPFileBufPtr bcc .8 - inc ZPCSHBufPtr+1 + inc ZPFileBufPtr+1 clc .8 rts @@ -1037,7 +992,7 @@ CSH.CheckStack tax CSH.GetOPLen ldy #0 .1 iny - lda (ZPCSHBufPtr),y + lda (ZPFileBufPtr),y beq .8 jsr CSH.IsOPChar @@ -1049,7 +1004,7 @@ CSH.GetOPLen ldy #0 CSH.GetIDLen ldy #0 .1 iny - lda (ZPCSHBufPtr),y + lda (ZPFileBufPtr),y beq .8 jsr CSH.IsLetterOrDigit @@ -1071,22 +1026,22 @@ CSH.GetNextCharNB CSH.GetNextCharNB.RTS rts *-------------------------------------- -CSH.CheckCharNB cmp #32 SPACE +CSH.CheckCharNB cmp #C.SPACE beq .9 - cmp #13 CR + cmp #C.CR beq .9 - cmp #10 LF + cmp #C.LF beq .9 - cmp #8 TAB + cmp #C.TAB beq .9 clc .9 rts *-------------------------------------- -CSH.GetNextChar inc ZPCSHBufPtr +CSH.GetNextChar inc ZPFileBufPtr bne CSH.GetChar - inc ZPCSHBufPtr+1 + inc ZPFileBufPtr+1 *-------------------------------------- -CSH.GetChar lda (ZPCSHBufPtr) +CSH.GetChar lda (ZPFileBufPtr) beq .9 clc rts @@ -1139,75 +1094,6 @@ CSH.IsDigit10 cmp #'0' .9 sec rts *-------------------------------------- -CSH.ErrorMsg >LDA.G CSH.hBuf - >SYSCALL GetMemPtr - >STYA ZPPtr1 - - lda #0 - >STA.G CSH.LineNum - iny - >STA.G CSH.LineNum+1 - -.1 >LDYA ZPPtr1 - >STYA ZPPtr2 Save actual line start - - >INCW.G CSH.LineNum - -.2 lda (ZPPtr1) - beq .6 EoF - inc ZPPtr1 - bne .3 - inc ZPPtr1+1 - -.3 cmp #$0D - bne .2 Scan until EoL - - ldx ZPPtr1 - cpx ZPCSHBufPtr - lda ZPPtr1+1 - sbc ZPCSHBufPtr+1 - bcc .1 not this line.... - -.4 ldy #0 - -.5 lda (ZPPtr2),y - beq .6 - iny - cmp #$0D - beq .6 - phy - >SYSCALL PutChar - ply - bra .5 - -.6 lda #$0D - >SYSCALL PutChar - lda #$0A - >SYSCALL PutChar - - - - lda ZPCSHBufPtr - sec - sbc ZPPtr2 - beq .8 - tay - -.7 phy - lda #'-' - >SYSCALL PutChar - ply - dey - bne .7 - -.8 >PUSHW.G CSH.LineNum - - >PUSHBI 2 - >LDYA L.MSG.CSHERR - >SYSCALL printf - - rts -*-------------------------------------- MAN SAVE /A2OSX.SRC/SBIN/SHELL.S.CSH LOAD /A2OSX.SRC/SBIN/SHELL.S diff --git a/SBIN/SHELL.S.HIS.txt b/SBIN/SHELL.S.HIS.txt index fcdbf3fe..08f456ff 100644 --- a/SBIN/SHELL.S.HIS.txt +++ b/SBIN/SHELL.S.HIS.txt @@ -27,7 +27,7 @@ HIS.Add >LDA.G HIS.hBuf tya sec add len+1 - >ADC.G CmdBuflen CmdBuffer length + >ADC.G CL.Len CmdBuffer length pla bcc .2 enough room @@ -142,10 +142,10 @@ HIS.SetA jsr HIS.GetA bne .2 tya - >STA.G CmdBufPtr - >STA.G CmdBuflen + >STA.G CL.Ptr + >STA.G CL.Len - jmp CL.PRINT + jmp CL.PrintCmdBuf *-------------------------------------- HIS.GetA ldy #0 diff --git a/SBIN/SHELL.S.IO.txt b/SBIN/SHELL.S.IO.txt index eedce0ff..5e5f0dae 100644 --- a/SBIN/SHELL.S.IO.txt +++ b/SBIN/SHELL.S.IO.txt @@ -86,6 +86,76 @@ IO.Reset.Err >LDA.G IO.hErr >STZ.G IO.hErr .8 rts *-------------------------------------- +IO.PrintBatchErrMsg + >LDA.G hFileBuf + >SYSCALL GetMemPtr + >STYA ZPPtr1 + + stz ZPPtr3 + stz ZPPtr3+1 + +.1 >LDYA ZPPtr1 + >STYA ZPPtr2 Save actual line start + + inc ZPPtr3 + bne .2 + inc ZPPtr3+1 + +.2 lda (ZPPtr1) + beq .6 EoF + inc ZPPtr1 + bne .3 + inc ZPPtr1+1 + +.3 cmp #$0D + bne .2 Scan until EoL + + ldx ZPPtr1 + cpx ZPFileBufPtr + lda ZPPtr1+1 + sbc ZPFileBufPtr+1 + bcc .1 not this line.... + +.4 ldy #0 + +.5 lda (ZPPtr2),y + beq .6 + iny + cmp #$0D + beq .6 + phy + >SYSCALL PutChar + ply + bra .5 + +.6 lda #$0D + >SYSCALL PutChar + lda #$0A + >SYSCALL PutChar + + + + lda ZPFileBufPtr + sec + sbc ZPPtr2 + beq .8 + tay + +.7 phy + lda #'-' + >SYSCALL PutChar + ply + dey + bne .7 + +.8 >PUSHW ZPPtr3 + + >PUSHBI 2 + >LDYA L.MSG.BATCHERR + >SYSCALL printf + + rts +*-------------------------------------- IO.PrintErrMsg pha Save EC for PrintF ldx L.ERR.Codes diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index a1acabf1..8a362756 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -5,6 +5,8 @@ AUTO 4,1 .OP 65C02 .OR $2000 .TF SBIN/SHELL +*-------------------------------------- +CSH .EQ 0 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I @@ -16,11 +18,13 @@ ZPPtr2 .EQ ZPBIN+2 ZPPtr3 .EQ ZPBIN+4 ZPCMDBuf .EQ ZPBIN+6 ZPArgVBuf .EQ ZPBIN+8 -ZPCSHBufPtr .EQ ZPBIN+10 +ZPFileBufPtr .EQ ZPBIN+10 + .DO CSH=1 ZPCSHSymbols .EQ ZPBIN+12 ZPCSHData .EQ ZPBIN+14 ZPCSHValue .EQ ZPBIN+16 ZPCSHStack .EQ ZPBIN+18 + .FIN *-------------------------------------- CmdLine.MAX .EQ 127 VarLen.MAX .EQ 15 @@ -50,11 +54,11 @@ CS.START cld *-------------------------------------- L.MSG.GREETINGS .DA MSG.GREETINGS L.MSG.PROMPT .DA MSG.PROMPT -L.MSG.ECHO .DA MSG.ECHO +L.MSG.TRACE .DA MSG.TRACE L.MSG.ECHOCRLF .DA MSG.ECHOCRLF +L.MSG.BATCHERR .DA MSG.BATCHERR L.MSG.ERROR .DA MSG.ERROR L.MSG.PRINTENV .DA MSG.PRINTENV -L.MSG.CSHERR .DA MSG.CSHERR L.ENV.PATH .DA ENV.PATH L.ENV.PWD .DA ENV.PWD L.ENV.PS1 .DA ENV.PS1 @@ -65,6 +69,16 @@ J.ESC .DA CL.BS left arrow .DA HIS.GetNext .DA HIS.GetPrev .DA CL.NAK right arow +L.CL.IO .DA CL.IO +J.CL.IO .DA CL.IO.AMP + .DA CL.IO.PIPE + .DA CL.IO.IN + .DA CL.IO.OUTA + .DA CL.IO.OUT + .DA CL.IO.1OUTA + .DA CL.IO.1OUT + .DA CL.IO.2OUTA + .DA CL.IO.2OUT L.CMD.INT .DA CMD.INT J.CMD.INT .DA Cmd.INT.STARTPROC .DA Cmd.INT.CD @@ -74,128 +88,94 @@ J.CMD.INT .DA Cmd.INT.STARTPROC .DA Cmd.INT.EXIT .DA Cmd.INT.FI .DA Cmd.INT.IF + .DA Cmd.INT.MD .DA Cmd.INT.PAUSE .DA Cmd.INT.PWD + .DA Cmd.INT.RD .DA Cmd.INT.READ .DA Cmd.INT.SET .DA Cmd.INT.SLEEP .DA Cmd.INT.TIME -L.CMD.IO .DA CMD.IO -J.CMD.IO .DA CMD.IO.AMP - .DA CMD.IO.PIPE - .DA CMD.IO.IN - .DA CMD.IO.OUTA - .DA CMD.IO.OUT - .DA CMD.IO.1OUTA - .DA CMD.IO.1OUT - .DA CMD.IO.2OUTA - .DA CMD.IO.2OUT L.CMD.IF.TOKEN1 .DA CMD.IF.TOKEN1 L.CMD.IF.TOKEN2 .DA CMD.IF.TOKEN2 J.CMD.IF.TOKEN2 .DA CMD.IF.D .DA CMD.IF.E .DA CMD.IF.F L.CMD.IF.TOKEN3 .DA CMD.IF.TOKEN3 -L.CSH.BOPS .DA CSH.BOPS -J.CSH.BOPS .DA CSH.BOPS.ADD - .DA CSH.BOPS.SUB - .DA CSH.BOPS.MUL - .DA CSH.BOPS.DIV - .DA CSH.BOPS.MOD - .DA CSH.BOPS.SHL - .DA CSH.BOPS.SHR - .DA CSH.BOPS.L - .DA CSH.BOPS.G - .DA CSH.BOPS.LE - .DA CSH.BOPS.GE - .DA CSH.BOPS.EQ - .DA CSH.BOPS.NE - .DA CSH.BOPS.AND - .DA CSH.BOPS.OR - .DA CSH.BOPS.EOR - .DA CSH.BOPS.LAND - .DA CSH.BOPS.LOR -L.CSH.FN .DA CSH.FN -L.CSH.KW .DA CSH.KW -L.CSH.STYPES .DA CSH.STYPES -J.CSH.KW .DA CSH.IF - .DA CSH.WHILE - .DA CSH.ELSE - .DA CSH.DO - .DA CSH.FOR - .DA CSH.SWITCH - .DA CSH.CASE - .DA CSH.BREAK - .DA CSH.CONTINUE - .DA CSH.FLOAT - .DA CSH.SIGNED - .DA CSH.UNSIGNED -J.CSH.STYPES .DA CSH.CHAR - .DA CSH.INT - .DA CSH.LONG -J.CSH.UTYPES .DA CSH.UCHAR - .DA CSH.UINT - .DA CSH.ULONG -J.CSH.KW.START .DA CSH.IF.START - .DA CSH.WHILE.START -J.CSH.KW.END .DA CSH.IF.END - .DA CSH.WHILE.END L.ERR.Codes .DA ERR.Codes L.ERR.Messages .DA ERR.Messages + .DO CSH=1 + .INB /A2OSX.SRC/SBIN/SHELL.R.CSH + .FIN .DA 0 *-------------------------------------- -CS.INIT jsr SetPWD +CS.INIT clc +CS.INIT.RTS rts +*-------------------------------------- +CS.RUN jsr SetPWD jsr CMD.Init - bcs .9 + bcs CS.INIT.RTS - ldy #S.PS.ARGC - lda (pPs),y - cmp #1 + lda #1 + >SYSCALL ArgV + bcs .1 no arg, continue starting interactive + >SYSCALL LoadTxtFile + bcs CS.INIT.RTS - beq .1 no arg, continue starting interactive - - jmp CSH.Init + txa + >STA.G hFileBuf + >SYSCALL GetMemPtr + >STYA ZPFileBufPtr + .DO CSH=1 + jsr CSH.Init + .FIN + bra CS.RUN.LOOP + .1 jsr HIS.Init - bcs .9 + bcs CS.INIT.RTS >PUSHWI K.VER >PUSHBI 2 >LDYA L.MSG.GREETINGS >SYSCALL printf - -.9 rts + bcs CS.INIT.RTS *-------------------------------------- -CS.RUN >LDA.G bReadMode READ Command ? - beq .22 - jmp CS.RUN.READ - -.22 ldy #S.PS.RC - lda (pPs),y - beq .11 +CS.RUN.LOOP jsr CL.Reset + jsr IO.Reset - jsr IO.PrintErrMsg - bcs .9 - -.11 >LDA.G bPause - bpl .13 + >LDA.G bReadMode READ Command ? + bne .7 + >LDA.G bPause + bpl .4 + +.2 >SLEEP >SYSCALL GetChar - bcs .8 - + bcc .3 + tay + beq .2 no char + rts + +.3 cmp #3 Ctrl-C + beq .9 + bra .6 + >STZ.G bPause -.13 jsr CheckSleep - bne .8 +.4 jsr CheckSleep + bne .2 - >LDA.G CSH.hBuf batch mode ? - beq .10 +.6 >LDA.G hFileBuf batch mode ? + beq CS.RUN.INTERCATIVE jmp CS.RUN.BATCH -*-------------------------------------- -.10 jsr CL.RESET reset CmdBuf - jsr IO.Reset +.7 jmp CS.RUN.READ +.9 sec + rts +*-------------------------------------- +CS.RUN.INTERCATIVE >STZ.G bSecureRead Clear password mode jsr CL.PrintPrompt @@ -203,60 +183,37 @@ CS.RUN >LDA.G bReadMode READ Command ? .1 >SLEEP >SYSCALL GetChar - bcc .21 no char + bcc .21 tay - beq .1 + beq .1 no char - rts + rts I/O error .21 cmp #C.EOF beq .9 jsr CL.CHARIN - >LDA.G bCmdBufExec Something to execute ? + >LDA.G CL.bExec Something to execute ? bpl .1 lda (ZPCMDBuf) - beq .10 Empty line + beq CS.RUN.LOOP Empty line jsr HIS.Add - jsr CMD.Parse - bcs .2 - - lda (ZPArgVBuf) - beq .10 Empty line - - jsr CMD.Exec - bcs .2 - - lda #0 - -.2 ldy #S.PS.RC - sta (pPs),y - - >LDA.G bExit - bne .80 - -.8 clc - rts - -.80 lda #0 - sec -.9 rts + jmp CS.RUN.Exec +.9 rts *-------------------------------------- -CS.RUN.READ jsr CL.RESET reset CmdBuf - jsr IO.Reset - +CS.RUN.READ .1 >SLEEP >SYSCALL GetChar bcs .1 no char jsr CL.CHARIN - >LDA.G bCmdBufExec + >LDA.G CL.bExec bpl .1 >STZ.G bReadMode @@ -268,10 +225,8 @@ CS.RUN.READ jsr CL.RESET reset CmdBuf >LEA.G CMD.VarName >SYSCALL SetEnv - rts -.8 clc - rts +.8 jmp CS.RUN.LOOP.END *-------------------------------------- CS.RUN.BATCH >SYSCALL GetChar bcs .2 @@ -279,7 +234,7 @@ CS.RUN.BATCH >SYSCALL GetChar cmp #3 test Ctrl-c bne .1 - sec +* sec rts .1 cmp #19 test Ctrl-s @@ -290,48 +245,66 @@ CS.RUN.BATCH >SYSCALL GetChar clc rts -.2 jsr CSH.Run +.2 .DO CSH=1 + jsr CSH.Run + .ELSE + jsr CL.GetLine + .FIN bcc .7 - cmp #MLI.E.EOF - beq .9 + cmp #C.EOF + bne .3 - pha - - jsr CSH.ErrorMsg + lda #$ff + >STA.G bExit + inc + clc + bra CS.RUN.LOOP.END - pla +.3 sec + bra CS.RUN.LOOP.END - ldy #S.PS.RC - sta (pPs),y - sec - rts - -.7 >LDA.G bCmdBufExec - bpl .8 Empty line....nothing to do.... +.7 >LDA.G CL.bExec + bpl CS.RUN.LOOP.80 lda (ZPCMDBuf) - beq .8 + beq CS.RUN.LOOP.80 - jsr CMD.Parse - bcs .8 + jsr CL.Trace +*-------------------------------------- +CS.RUN.Exec jsr CL.Parse + bcs CS.RUN.LOOP.8 lda (ZPArgVBuf) - beq .8 - + beq CS.RUN.LOOP.8 jsr CMD.Exec - bcs .8 - - lda #0 - -.8 ldy #S.PS.RC + >SLEEP if S.PS.HOLD +*-------------------------------------- +CS.RUN.LOOP.END ldy #S.PS.RC sta (pPs),y - clc - rts -.9 lda #0 + bcc CS.RUN.LOOP.8 + + >LDA.G hFileBuf batch mode ? + beq .1 + + jsr IO.PrintBatchErrMsg + bcs CS.RUN.LOOP.RTS + +.1 ldy #S.PS.RC + lda (pPs),y + + jsr IO.PrintErrMsg + bcs CS.RUN.LOOP.RTS + +CS.RUN.LOOP.8 >LDA.G bExit + beq CS.RUN.LOOP.80 + + lda #0 sec - rts +CS.RUN.LOOP.RTS rts + +CS.RUN.LOOP.80 jmp CS.RUN.LOOP *-------------------------------------- CS.DOEVENT lda (pEvent) bpl .9 @@ -341,20 +314,21 @@ CS.DOEVENT lda (pEvent) * ldy #Sleep already set by CheckSleep clc - ldx #4 .1 lda (pData),y sbc #0 sta (pData),y iny - dex + cpy #Sleep+4 bne .1 .9 sec rts *-------------------------------------- -CS.QUIT jsr HIS.Quit +CS.QUIT .DO CSH=1 jsr CSH.Quit + .FIN + jsr HIS.Quit jsr CMD.Quit clc rts @@ -376,22 +350,62 @@ SetPWD.I >SYSCALL GetMemPtr >LDYA L.ENV.PWD >SYSCALL SetEnv rts +*-------------------------------------- +Lookup >STYA ZPPtr2 + >PULLW ZPPtr1 + + ldx #0 + +.1 phx + + >PUSHW ZPPtr2 + >LDYA ZPPtr1 + >SYSCALL StrCaseCmp + bcs .2 + + plx + >LDYA ZPPtr2 + clc + rts + +.2 inc ZPPtr2 + bne .3 + inc ZPPtr2+1 + +.3 lda (ZPPtr2) + bne .2 + + inc ZPPtr2 + bne .4 + inc ZPPtr2+1 + +.4 plx + inx + inx + + lda (ZPPtr2) Array Ending 0, must be an external Cmd.... + bne .1 + + sec + rts *-------------------------------------- .INB /A2OSX.SRC/SBIN/SHELL.S.CL .INB /A2OSX.SRC/SBIN/SHELL.S.CMD - .INB /A2OSX.SRC/SBIN/SHELL.S.CSH .INB /A2OSX.SRC/SBIN/SHELL.S.IO .INB /A2OSX.SRC/SBIN/SHELL.S.HIS + .DO CSH=1 + .INB /A2OSX.SRC/SBIN/SHELL.S.CSH + .FIN *-------------------------------------- CS.END *-------------------------------------- MSG.GREETINGS .AZ "\r\nA2osX-Shell %d.%d\r\n\r\n" MSG.PROMPT .AZ "\e[7h$ " -MSG.ECHO .AS ">%s" +MSG.TRACE .AS ">%s" MSG.ECHOCRLF .AZ "\r\n" +MSG.BATCHERR .AZ "^\r\nLine #%D:" MSG.ERROR .AZ "[$%h]:%S.\r\n" MSG.PRINTENV .AZ "%s=%s\r\n" -MSG.CSHERR .AZ "^\r\nLine #%D:" FMT.DATE .AZ "%A (%w), %B %d %Y" FMT.TIME .AZ "%H:%M:%S (%I:%M:%S%p)" *-------------------------------------- @@ -402,23 +416,7 @@ ENV.HOME .AZ "HOME" *-------------------------------------- * https://www.tldp.org/LDP/abs/html/io-redirection.html *-------------------------------------- -CMD.INT .AZ "STARTPROC" - .AZ "CD" - .AZ "DATE" - .AZ "ECHO" - .AZ "ELSE" - .AZ "EXIT" - .AZ "FI" - .AZ "IF" - .AZ "PAUSE" - .AZ "PWD" - .AZ "READ" - .AZ "SET" - .AZ "SLEEP" - .AZ "TIME" - .HS 00 -*-------------------------------------- -CMD.IO .AZ "&" +CL.IO .AZ "&" .AZ "|" .AZ "<" .AZ ">>" @@ -429,6 +427,24 @@ CMD.IO .AZ "&" .AZ "2>" .HS 00 *-------------------------------------- +CMD.INT .AZ "STARTPROC" + .AZ "CD" + .AZ "DATE" + .AZ "ECHO" + .AZ "ELSE" + .AZ "EXIT" + .AZ "FI" + .AZ "IF" + .AZ "MD" + .AZ "PAUSE" + .AZ "PWD" + .AZ "RD" + .AZ "READ" + .AZ "SET" + .AZ "SLEEP" + .AZ "TIME" + .HS 00 +*-------------------------------------- CMD.IF.TOKEN1 .AZ "[" .AZ "![" .HS 00 @@ -440,7 +456,9 @@ CMD.IF.TOKEN3 .AZ "-eq" .AZ "-ne" .HS 00 *-------------------------------------- + .DO CSH=1 .INB /A2OSX.SRC/SBIN/SHELL.C.CSH + .FIN .INB /A2OSX.SRC/X.ERRORS.S *-------------------------------------- EscChars .AS 'DBAC' @@ -449,9 +467,7 @@ EscChars.Cnt .EQ *-EscChars .DUMMY .OR 0 DS.START -CmdBufPtr .BS 1 -CmdBuflen .BS 1 -bCmdBufexec .BS 1 +hFileBuf .BS 1 bEscMode .BS 1 bPause .BS 1 @@ -463,6 +479,10 @@ bSecureRead .BS 1 Sleep .BS 4 +CL.Ptr .BS 1 +CL.Len .BS 1 +CL.bExec .BS 1 + CMD.IntCmd .BS 1 CMD.hCmdLine .BS 1 CMD.hCmdBuf .BS 1 @@ -485,9 +505,9 @@ HIS.Index .BS 1 IO.hIn .BS 1 IO.hOut .BS 1 IO.hErr .BS 1 - + .DO CSH=1 .INB /A2OSX.SRC/SBIN/SHELL.G.CSH - + .FIN DS.END .ED *-------------------------------------- MAN diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index bfe8dfa7..b7330899 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -140,7 +140,11 @@ K.Stat.DST .DA #S.STAT.P.TYPE * CS : error * A = EC *\------------------------------------- -K.MKDir jsr PFT.CheckPathYA +K.MKDir jsr K.realpath.I + bcs K.MKDir.RTS + + >LDYAI K.Buf256 + jsr PFT.CheckPathYA jsr STDIO.SetMLIPathYA lda #S.FI.A.FULL