diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index bb6438ea..f470eb1d 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 4fd1520d..0d56b9d2 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/INC/LIBTCPIP.I.txt b/INC/LIBTCPIP.I.txt index 6fb620ab..8f5e0b30 100644 --- a/INC/LIBTCPIP.I.txt +++ b/INC/LIBTCPIP.I.txt @@ -92,9 +92,9 @@ S.IPCFG.DOMAIN .EQ 48 79+\0 C String * S.IPCFG .EQ 128 *-------------------------------------- -S.ARPCACHE.S .EQ 0 +S.ARPCACHE.S .EQ 0 S.ARPCACHE.S.PENDING .EQ 1 -S.ARPCACHE.S.STATIC .EQ 2 +S.ARPCACHE.S.STATIC .EQ 2 S.ARPCACHE.S.RESOLVED .EQ 128 S.ARPCACHE.TTL .EQ 2 S.ARPCACHE.IP .EQ 6 diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 89a90df7..781daf9a 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -111,7 +111,8 @@ Cmd.CheckCmd ldy #$ff >STA.G CMD.hCmdLine bra .6 go check type... -.2 >LDYA L.CMD.INT +.2 >PUSHW ZPCMDBuf + >LDYA L.CMD.INT jsr CMD.Search no / found, search internal... bcs .4 not internal, search PATH @@ -219,6 +220,84 @@ Cmd.SearchExt pha >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 bmi .1 tax @@ -484,6 +563,12 @@ Cmd.INT.ECHO ldx #1 .8 clc .9 rts *-------------------------------------- +Cmd.INT.ELSE clc + rts +*-------------------------------------- +Cmd.INT.FI clc + rts +*-------------------------------------- Cmd.INT.READ ldx #1 jsr Cmd.GetArgX beq .9 @@ -608,121 +693,46 @@ Cmd.INT.EXIT lda #$FF clc rts *-------------------------------------- -Cmd.INT.IF >STZ.G CMD.IFNOT - - lda (ZPCMDBuf) - beq .9 - - cmp #'!' - bne .1 - - lda #$ff - sta (pData),y Y = #CMD.IFNOT - - jsr Cmd.NextCharPtr2NB +Cmd.INT.IF ldx #1 + jsr Cmd.GetArgX beq .9 - cmp #'(' - bne .9 + >PUSHYA + >LDYA L.CMD.IF.TOKEN1 + jsr CMD.Search + + bcs .9 - jsr Cmd.NextCharPtr2NB + cpx #4 [ or ![ + bcs .9 + dex + dex 1 or $ff + txa + >STA.G CMD.IF.NOT + + ldx #2 + jsr Cmd.GetArgX beq .9 - cmp #'-' -d -e -f - bne .1 + >PUSHYA + >LDYA L.CMD.IF.TOKEN2 -d -e -f ? + jsr CMD.Search + bcs .1 - jsr Cmd.NextCharPtr2NB - beq .9 + jmp (J.CMD.IF.TOKEN2,x) +.1 - -.1 >DEBUG - - - - - - >LDYA ZPCMDBuf - >SYSCALL puts - + clc rts .9 jmp Cmd.Exec.ERRSYN *-------------------------------------- -CMD.CheckIO >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 +CMD.IF.D +CMD.IF.E +CMD.IF.F 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 *-------------------------------------- CMD.NextCmdBufToken lda (ZPCMDBuf) @@ -775,13 +785,14 @@ CMD.AddYAToArgV >STYA ZPPtr1 rts *-------------------------------------- CMD.Search >STYA ZPPtr2 + >PULLW ZPPtr1 ldx #0 .1 phx >PUSHW ZPPtr2 - >LDYA ZPCMDBuf + >LDYA ZPPtr1 >SYSCALL StrCaseCmp bcs .2 diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index a70707ca..a1acabf1 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -25,6 +25,7 @@ ZPCSHStack .EQ ZPBIN+18 CmdLine.MAX .EQ 127 VarLen.MAX .EQ 15 History.MAX .EQ 256 +CMD.IF.STACK.MAX .EQ 4 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -69,7 +70,9 @@ J.CMD.INT .DA Cmd.INT.STARTPROC .DA Cmd.INT.CD .DA Cmd.INT.DATE .DA Cmd.INT.ECHO + .DA Cmd.INT.ELSE .DA Cmd.INT.EXIT + .DA Cmd.INT.FI .DA Cmd.INT.IF .DA Cmd.INT.PAUSE .DA Cmd.INT.PWD @@ -87,6 +90,12 @@ J.CMD.IO .DA CMD.IO.AMP .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 @@ -397,7 +406,9 @@ CMD.INT .AZ "STARTPROC" .AZ "CD" .AZ "DATE" .AZ "ECHO" + .AZ "ELSE" .AZ "EXIT" + .AZ "FI" .AZ "IF" .AZ "PAUSE" .AZ "PWD" @@ -418,8 +429,16 @@ CMD.IO .AZ "&" .AZ "2>" .HS 00 *-------------------------------------- -CMD.IF.Chars .AS "def" -CMD.IF.Chars.Cnt .EQ *-CMD.IF.Chars +CMD.IF.TOKEN1 .AZ "[" + .AZ "![" + .HS 00 +CMD.IF.TOKEN2 .AZ "-d" + .AZ "-e" + .AZ "-f" + .HS 00 +CMD.IF.TOKEN3 .AZ "-eq" + .AZ "-ne" + .HS 00 *-------------------------------------- .INB /A2OSX.SRC/SBIN/SHELL.C.CSH .INB /A2OSX.SRC/X.ERRORS.S @@ -454,7 +473,10 @@ CMD.VarName.LEN .BS 1 CMD.VarName .BS VarLen.MAX+1 CMD.Stat .BS S.STAT CMD.Time .BS S.TIME -CMD.IFNOT .BS 1 + +CMD.IF.NOT .BS 1 +CMD.IF.PTR .BS 1 +CMD.IF.STACK .BS CMD.IF.STACK.MAX HIS.hBuf .BS 1 HIS.Count .BS 1