From 09b24372acb758b4d079407d218fd9efdc420550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 13 Nov 2018 16:54:10 +0100 Subject: [PATCH] Kernel 0.92 SHELL, IF ELSE FI with unary and binary operators --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes INC/MACROS.I.txt | 5 + README.md | 15 +- SBIN/SHELL.S.CL.txt | 12 +- SBIN/SHELL.S.CMD.txt | 460 +++++++++++++++++++++++++-------------- SBIN/SHELL.S.txt | 73 +++++-- 7 files changed, 367 insertions(+), 198 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ad5ae068fcedaf753c4672287155b884a486f0bc..0c56cde7cbb14163a900689ee75b67abd97533d5 100644 GIT binary patch delta 9707 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 k^_;V)BEaIEO68=dt7MrHr^zW36! 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 diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 91ae47a0f8c77bb1d4e48d535afa408795873537..f32525cf04de2bd154bf87c2be819dc05dbef4c4 100644 GIT binary patch delta 18409 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 BET;ef delta 17996 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%0AG8*rl8)|wB%)vZ6n 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 10th sec | | STARTPROC | Working | Used in A2osX.startup | +| IF ELSE FI | Working | [ -d direxists ] | +| | | [ -e fileordirexists ] | +| | | [ -f fileexists ] | ## Shell variables: diff --git a/SBIN/SHELL.S.CL.txt b/SBIN/SHELL.S.CL.txt index c6082c9c..c8cba333 100644 --- a/SBIN/SHELL.S.CL.txt +++ b/SBIN/SHELL.S.CL.txt @@ -128,7 +128,7 @@ CL.Insert >LDA.G CL.Len txa sta (ZPCMDBuf),y - >LDA.G bSecureRead + >LDA.G bREAD.S bpl .2 ldx #'*' @@ -259,7 +259,10 @@ CL.PrintEOL.8 clc rts *-------------------------------------- CL.PrintCmdBuf >LDYA ZPCMDBuf - >SYSCALL printf + >PUSHYA + ldy #S.PS.hStdOut + lda (pPs),y + >SYSCALL fputs rts *-------------------------------------- CL.GetLine lda (ZPFileBufPtr) @@ -351,12 +354,11 @@ CL.Parse >STZ.G CMD.IntCmd >LDA.G CMD.IntCmd bne .3 we already have Cmd, go check args - ldy #2 + ldy #1 lda (ZPCMDBuf),y only one char ? bne .2 - dey - lda (ZPCMDBuf),y + lda (ZPCMDBuf) cmp #'.' leading dot ? bne .2 diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 1cd89e2c..a86f0d72 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -52,13 +52,28 @@ Cmd.Exec >LDA.G CMD.IntCmd .1 jmp (J.CMD.INT,x) -.8 clc - rts - .2 >PUSHB.G CMD.PSFlags >LDYA ZPArgVBuf >SYSCALL execv + bcs .9 + + tax CPID + + >LDA.G CMD.PSFlags + and #S.PS.F.HOLD + bne .3 + + txa + >PUSHA + >PUSHBI 1 + >LDYA L.MSG.PID + >SYSCALL printf rts + +.3 >SLEEP Suspend this PID + +.8 clc +.9 rts *-------------------------------------- * STARTPROC : intcmd = 0 *-------------------------------------- @@ -200,7 +215,19 @@ Cmd.INT.SET ldx #1 .8 clc .9 rts *-------------------------------------- -Cmd.INT.SETVAR >STYA ZPPTR1 +Cmd.INT.SETVAR jsr CMD.IsSwitch + bcs .10 + + cmp #'X' + bne .99 + + >LDA.G bSET.X + eor #$ff + sta (pData),y + clc + rts + +.10 >STYA ZPPTR1 lda (ZPPTR1) cmp #'=' string is '=value' ? @@ -231,6 +258,13 @@ Cmd.INT.SETVAR >STYA ZPPTR1 >SYSCALL UnsetEnv rts + +.8 clc + rts + +.99 lda #E.SYN + sec + rts * Print requested VAR .3 >LDYA ZPPTR1 @@ -239,12 +273,6 @@ Cmd.INT.SETVAR >STYA ZPPTR1 >PUSHYA push value >PUSHW ZPPTR1 push name - jsr Cmd.INT.SET.PRINT - -.8 clc -.9 rts - -.99 jmp Cmd.Exec.ERRSYN *-------------------------------------- Cmd.INT.SET.PRINT >PUSHBI 4 @@ -274,37 +302,45 @@ Cmd.INT.TIME clc >SYSCALL puts rts *-------------------------------------- -Cmd.INT.ECHO ldx #1 - jsr Cmd.GetArgX - bcs .71 - - >PUSHYA - ldy #S.PS.hStdOut - lda (pPs),y - >SYSCALL fputs - bcs .9 +Cmd.INT.ECHO lda #1 + >STA.G CMD.ArgIndex - ldx #2 - -.1 phx + tax jsr Cmd.GetArgX bcs .7 - >PUSHYA - - lda #C.SPACE - >SYSCALL putchar - ldy #S.PS.hStdOut - lda (pPs),y - >SYSCALL fputs - plx - inx - bcc .1 - clc - rts + pha + >PUSHBI 0 + pla + >SYSCALL printf + bcs .9 -.7 plx -.71 >LDA.G bECHO.N + >INC.G CMD.ArgIndex + tax + + jsr Cmd.GetArgX + bcs .7 + +.1 lda #C.SPACE + >SYSCALL putchar + bcs .9 + + >PUSHBI 0 + + >LDA.G CMD.ArgIndex + tax + jsr Cmd.GetArgX + + >SYSCALL printf + bcs .9 + + >INC.G CMD.ArgIndex + tax + + jsr Cmd.GetArgX + bcc .1 + +.7 >LDA.G bECHO.N bmi .8 >PUSHBI 0 @@ -315,105 +351,53 @@ Cmd.INT.ECHO ldx #1 .8 clc .9 rts *-------------------------------------- -Cmd.INT.READ ldx #1 +Cmd.INT.READ lda #1 + >STA.G CMD.ArgIndex + + tax jsr Cmd.GetArgX - beq .9 - - lda #0 - >STA.G bSecureRead - >STA.G CMD.VarName.LEN - - lda pData - clc - adc #CMD.VarName - sta ZPPTR1 - lda pData+1 - adc #0 - sta ZPPTR1+1 - -.1 lda (ZPPtr2) - beq .8 - - cmp #' ' - bne .11 - jsr Cmd.NextCharPtr2 - bra .1 - -.11 cmp #'-' - bne .7 - - jsr Cmd.NextCharPtr2 - beq .9 + bcs .9 +.1 jsr CMD.IsSwitch + bcs .4 cmp #'S' bne .2 - lda #$80 - >STA.G bSecureRead + lda #$ff + >STA.G bREAD.S - jsr Cmd.NextCharPtr2 - beq .8 - cmp #' ' - bne .9 - - bra .1 + bra .7 .2 cmp #'P' bne .9 - jsr Cmd.NextCharPtr2 - beq .9 - - cmp #' ' - bne .9 - - jsr Cmd.NextCharPtr2 - beq .9 - - cmp #'"' - bne .9 - -.3 jsr Cmd.NextCharPtr2 - beq .9 - - cmp #'"' - beq .1 - - >SYSCALL PutChar - bcs .99 - bra .3 - -.9 jmp Cmd.Exec.ERRSYN - -.7 >LDA.G CMD.VarName.LEN - cmp #VarLen.MAX - beq .9 + >INC.G CMD.ArgIndex + tax + jsr Cmd.GetArgX + bcs .9 pha - - inc - sta (pData),y - - ply - lda (ZPPtr2) - sta (ZPPTR1),y - iny - lda #0 - sta (ZPPTR1),y - - jsr Cmd.NextCharPtr2 - beq .1 - cmp #' ' - beq .1 - + >PUSHBI 0 + pla + >SYSCALL printf + bcs .99 bra .7 -.8 >LDA.G CMD.VarName.LEN No var name ? SYNERR +.4 >SYSCALL newstr + txa + >STA.G hVarName + +.7 >INC.G CMD.ArgIndex + tax + jsr Cmd.GetArgX + bcc .1 + + >LDA.G hVarName beq .9 - - lda #$ff - >STA.G bReadMode - clc + rts + +.9 lda #E.SYN + sec .99 rts *-------------------------------------- Cmd.INT.SLEEP ldx #1 @@ -506,11 +490,8 @@ Cmd.INT.IF >LDA.G CMD.IF.PTR bcs .1 - phx - ldx #3 - jsr Cmd.GetArgX - plx - bcs .9 we need one arg + txa + >STA.G CMD.Operator jsr CMD.IF.UNARY bcs .9 @@ -524,11 +505,31 @@ Cmd.INT.IF >LDA.G CMD.IF.PTR ldx #4 go check ] bra .8 -.1 +.9 lda #E.SYN + sec + rts +.1 ldx #3 + jsr Cmd.GetArgX + beq .9 + >PUSHYA + >LDYA L.CMD.IF.TOKEN3 -eq -ne .... ? + jsr Lookup + bcs .9 + txa + >STA.G CMD.Operator - ldx #5 + jsr CMD.IF.BINARY + bcs .9 + + >LDA.G CMD.IF.PTR + tay + txa + eor (pData),y + sta (pData),y + + ldx #5 go check ] .8 jsr Cmd.GetArgX beq .9 @@ -544,14 +545,20 @@ Cmd.INT.IF >LDA.G CMD.IF.PTR bne .9 clc -.99 rts + rts +*-------------------------------------- +CMD.IF.UNARY ldx #3 + jsr Cmd.GetArgX + bcs .9 we need one arg + >LDA.G CMD.Operator + tax + jmp (J.CMD.IF.TOKEN2,x) + .9 lda #E.SYN sec rts -*-------------------------------------- -CMD.IF.UNARY jmp (J.CMD.IF.TOKEN2,x) - + CMD.IF.D jsr CMD.IF.DEF.7 bcs CMD.IF.DEF.9 >LDA.G CMD.Stat+S.STAT.P.TYPE @@ -583,6 +590,119 @@ CMD.IF.DEF.8 ldx #$ff true CMD.IF.DEF.9 ldx #0 false clc + rts +*-------------------------------------- +CMD.IF.BINARY ldx #2 + jsr Cmd.GetArgX + bcs .9 + + ldx #4 + jsr Cmd.GetArgX + bcs .9 + + >LDA.G CMD.Operator + beq .1 = + + cmp #2 != + bne CMD.IF.BINARY.NUM + lda #$ff + >STA.G CMD.Operator + +.1 ldx #2 + jsr Cmd.GetArgX + >PUSHYA + ldx #4 + jsr Cmd.GetArgX + >SYSCALL strcmp + lsr CS if != + >EOR.G CMD.Operator + tax + clc + rts + +.9 lda #E.SYN + sec + rts + +CMD.IF.BINARY.NUM + ldx #2 + jsr Cmd.GetArgX + bcs .9 + + >SYSCALL AToL + bcs .9 + + >PULLL.G CMD.NumArg1 + + ldx #4 + jsr Cmd.GetArgX + bcs .9 + + >SYSCALL AToL + bcs .9 + + >PULLL.G CMD.NumArg2 + + ldx #4 + ldy #CMD.NumArg2+3 + +.1 lda (pData),y + pha + dey + dex + bne .1 + + ldx #4 + ldy #CMD.NumArg1 + + sec + +.2 pla + sbc (pData),y + sta (pData),y + iny + dex + bne .2 + + bcc .5 CC if Arg1 < Arg2 + + ldy #CMD.NumArg1 + + lda (pData),y + iny + ora (pData),y + iny + ora (pData),y + iny + ora (pData),y Z if Arg1 = Arg2 + + bne .4 + +.3 lda #%001 001 arg1 = arg2 + bra .6 +.4 lda #%010 010 arg1 > arg2 + bra .6 +.5 lda #%100 100 Arg1 < Arg2 + +.6 pha + + >LDA.G CMD.Operator + lsr + tax + pla + eor CMD.IF.TOKEN3.BITS,x + bne .80 + + ldx #$ff true + clc + rts + +.80 ldx #0 false + clc + rts + +.9 lda #E.SYN + sec rts *-------------------------------------- Cmd.INT.ELSE >LDA.G CMD.IF.PTR @@ -623,52 +743,60 @@ Cmd.GetArgX >LDYA ZPArgVBuf >STYA ZPPtr1 -.1 jsr Cmd.NextArgPtr1 - bcs .9 +.1 lda (ZPPtr1) + beq .9 + +.2 inc ZPPtr1 + bne .3 + inc ZPPtr1+1 +.3 lda (ZPPtr1) + bne .2 + + inc ZPPtr1 + bne .4 + inc ZPPtr1+1 + +.4 lda (ZPPtr1) + beq .9 + dex bpl .1 >LDYA ZPPtr1 -.8 clc -.9 rts -*-------------------------------------- -Cmd.NextArgPtr1 lda (ZPPtr1) - beq .9 - -.1 inc ZPPtr1 - bne .2 - inc ZPPtr1+1 -.2 lda (ZPPtr1) - bne .1 - - inc ZPPtr1 - bne .3 - inc ZPPtr1+1 - -.3 lda (ZPPtr1) - beq .9 - .8 clc rts - + .9 sec rts *-------------------------------------- -Cmd.NextCharPtr2NB -.1 jsr Cmd.NextCharPtr2 - beq .9 - cmp #C.SPACE - beq .1 +CMD.IsSwitch >STYA ZPPtr1 + lda (ZPPtr1) + cmp #'-' + bne .9 -.9 rts -*-------------------------------------- -Cmd.NextCharPtr2 - inc ZPPtr2 - bne .1 - inc ZPPtr2+1 -.1 lda (ZPPtr2) - rts + ldy #1 + lda (ZPPtr1),y + beq .9 + + iny + lda (ZPPtr1),y + bne .9 + + dey + lda (ZPPtr1),y + cmp #'a' + bcc .8 + cmp #'z'+1 + bcs .8 + eor #$20 + +.8 clc + rts + +.9 >LDYA ZPPtr1 + sec + rts *-------------------------------------- MAN SAVE /A2OSX.SRC/SBIN/SHELL.S.CMD diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index e07ebe33..53b7dbc1 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -45,9 +45,8 @@ ZPCSHStack .EQ ZPBIN+18 .FIN *-------------------------------------- CmdLine.MAX .EQ 127 -VarLen.MAX .EQ 15 History.MAX .EQ 256 -CMD.IF.STACK.MAX .EQ 4 +CMD.IF.STACK.MAX .EQ 8 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -80,6 +79,7 @@ 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.PID .DA MSG.PID L.ENV.PATH .DA ENV.PATH L.ENV.PWD .DA ENV.PWD L.ENV.PS1 .DA ENV.PS1 @@ -165,7 +165,7 @@ CS.RUN jsr SetPWD *-------------------------------------- CS.RUN.LOOP jsr CL.Reset jsr IO.Reset - + .1 jsr CheckSleep beq .3 @@ -205,7 +205,7 @@ CS.RUN.LOOP jsr CL.Reset >STZ.G bPause -.6 >LDA.G bReadMode READ Command ? +.6 >LDA.G hVarName read mode ? bne .7 >LDA.G hFileBuf batch mode ? @@ -218,8 +218,6 @@ CS.RUN.LOOP jsr CL.Reset rts *-------------------------------------- CS.RUN.INTERCATIVE - >STZ.G bSecureRead Clear password mode - jsr CL.PrintPrompt bcs .9 @@ -258,16 +256,31 @@ CS.RUN.READ >LDA.G CL.bExec bpl .1 - >STZ.G bReadMode - lda (ZPCMDBuf) - beq .8 + bne .2 - >PUSHW ZPCMDBuf + >LDA.G hVarName + >SYSCALL GetMemPtr + >SYSCALL UnSetEnv + bra .7 + +.2 >PUSHW ZPCMDBuf - >LEA.G CMD.VarName + >LDA.G hVarName + >SYSCALL GetMemPtr >SYSCALL SetEnv +.7 php + pha + + >LDA.G hVarName + >SYSCALL freemem + >STZ.G hVarName + >STA.G bREAD.S + + pla + plp + .8 jmp CS.RUN.LOOP.END *-------------------------------------- CS.RUN.BATCH >SYSCALL GetChar @@ -319,7 +332,6 @@ CS.RUN.Exec jsr CL.Parse lda (ZPArgVBuf) beq CS.RUN.LOOP.8 jsr CMD.Exec - >SLEEP if S.PS.HOLD *-------------------------------------- CS.RUN.LOOP.END ldy #S.PS.RC sta (pPs),y @@ -450,6 +462,7 @@ 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.PID .AZ "PID=%d\r\n" FMT.DATE .AZ "%A (%w), %B %d %Y" FMT.TIME .AZ "%H:%M:%S (%I:%M:%S%p)" *-------------------------------------- @@ -489,16 +502,31 @@ CMD.INT .AZ "STARTPROC" .AZ "FI" .HS 00 *-------------------------------------- -CMD.IF.TOKEN1 .AZ "[" - .AZ "![" +CMD.IF.TOKEN1 .AZ "![" + .AZ "[" .HS 00 CMD.IF.TOKEN2 .AZ "-d" .AZ "-e" .AZ "-f" .HS 00 -CMD.IF.TOKEN3 .AZ "-eq" +CMD.IF.TOKEN3 .AZ "=" + .AZ "!=" + .AZ "-eq" .AZ "-ne" - .HS 00 + .AZ "-lt" + .AZ "-le" + .AZ "-gt" + .AZ "-ge" + .HS 00 +CMD.IF.TOKEN3.BITS + .DA #%000 + .DA #%000 + .DA #%001 + .DA #%110 + .DA #%100 + .DA #%101 + .DA #%010 + .DA #%011 *-------------------------------------- .DO CSH=1 .INB /A2OSX.SRC/SBIN/SHELL.C.CSH @@ -511,15 +539,15 @@ EscChars.Cnt .EQ *-EscChars .DUMMY .OR 0 DS.START -hFileBuf .BS 1 +hFileBuf .BS 1 batch mode +hVarName .BS 1 read mode bEscMode .BS 1 bPause .BS 1 bExit .BS 1 bSET.X .BS 1 bECHO.N .BS 1 -bReadMode .BS 1 -bSecureRead .BS 1 +bREAD.S .BS 1 Sleep .BS 4 @@ -532,9 +560,12 @@ CMD.hCmdLine .BS 1 CMD.hCmdBuf .BS 1 CMD.hArgVBuf .BS 1 +CMD.ArgIndex .BS 1 +CMD.Operator .BS 1 +CMD.NumArg1 .BS 4 +CMD.NumArg2 .BS 4 + CMD.PSFlags .BS 1 -CMD.VarName.LEN .BS 1 -CMD.VarName .BS VarLen.MAX+1 CMD.Stat .BS S.STAT CMD.Time .BS S.TIME