diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index b4a245e6..f66d711c 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 a5c82d57..30ffe4bd 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/BIN/ARP.S.txt b/BIN/ARP.S.txt index b1ee05db..f90b0a91 100644 --- a/BIN/ARP.S.txt +++ b/BIN/ARP.S.txt @@ -77,7 +77,7 @@ CS.RUN ldy #S.PS.ARGC cmp #2 beq CS.RUN.ADD -.9 lda #K.E.SYN +.9 lda #E.SYN sec rts *-------------------------------------- @@ -139,7 +139,7 @@ CS.RUN.ADD >PUSHEA.G DST.MAC+5 rts -.9 lda #K.E.SYN +.9 lda #E.SYN .99 sec rts *-------------------------------------- diff --git a/BIN/CAT.S.txt b/BIN/CAT.S.txt index 92237e27..a037e155 100644 --- a/BIN/CAT.S.txt +++ b/BIN/CAT.S.txt @@ -64,7 +64,7 @@ CS.INIT .99 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BIN/CHTYP.S.txt b/BIN/CHTYP.S.txt index e5f90f6e..10edd30e 100644 --- a/BIN/CHTYP.S.txt +++ b/BIN/CHTYP.S.txt @@ -68,7 +68,7 @@ CS.INIT .99 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BIN/DNSINFO.S.txt b/BIN/DNSINFO.S.txt index 29c27695..2efe1589 100644 --- a/BIN/DNSINFO.S.txt +++ b/BIN/DNSINFO.S.txt @@ -81,7 +81,7 @@ CS.RUN.ADD cmp #2 sec we do not want to stay in memory rts -.9 lda #K.E.SYN +.9 lda #E.SYN sec .99 rts *-------------------------------------- diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index d1009ee4..9a746e0f 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -123,7 +123,7 @@ CS.INIT ldy #S.PS.ARGC .99 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts *-------------------------------------- diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 4503e33d..3bf318d2 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -68,7 +68,7 @@ CS.INIT dex bne .2 - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BIN/MD.S.txt b/BIN/MD.S.txt index b26df510..2dd665de 100644 --- a/BIN/MD.S.txt +++ b/BIN/MD.S.txt @@ -52,7 +52,7 @@ CS.RUN lda #1 sec .9 rts -.99 lda #K.E.SYN +.99 lda #E.SYN sec rts *-------------------------------------- diff --git a/BIN/MD5.S.txt b/BIN/MD5.S.txt index 44e88dff..4600dfe8 100644 --- a/BIN/MD5.S.txt +++ b/BIN/MD5.S.txt @@ -68,7 +68,7 @@ CS.INIT ldy #S.PS.ARGC .99 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BIN/NFSMOUNT.S.txt b/BIN/NFSMOUNT.S.txt index df32a63a..4d21b69c 100644 --- a/BIN/NFSMOUNT.S.txt +++ b/BIN/NFSMOUNT.S.txt @@ -63,7 +63,7 @@ CS.INIT >SYSCALL ArgVC .99 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts *-------------------------------------- diff --git a/BIN/NSCUTIL.S.txt b/BIN/NSCUTIL.S.txt index 7d7e4877..0c91a20d 100644 --- a/BIN/NSCUTIL.S.txt +++ b/BIN/NSCUTIL.S.txt @@ -141,7 +141,7 @@ CS.RUN.SET lda #1 sec we do not want to stay in memory rts -.9 lda #K.E.SYN +.9 lda #E.SYN sec rts *-------------------------------------- diff --git a/BIN/PING.S.txt b/BIN/PING.S.txt index 81fa981d..639f03e1 100644 --- a/BIN/PING.S.txt +++ b/BIN/PING.S.txt @@ -62,7 +62,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? >LDYA L.MSG.IPKO >SYSCALL puts - lda #K.E.SYN + lda #E.SYN sec rts @@ -116,7 +116,7 @@ CS.RUN.IPOK .99 >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts @@ -162,7 +162,7 @@ CS.RUN.OPENSKT ldx #3 >LDYA L.MSG.SKTKO >SYSCALL puts - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BIN/RPCDUMP.S.txt b/BIN/RPCDUMP.S.txt index 1e7fe7ce..2b39466d 100644 --- a/BIN/RPCDUMP.S.txt +++ b/BIN/RPCDUMP.S.txt @@ -73,7 +73,7 @@ CS.INIT ldy #S.PS.ARGC .99 >LDYA L.MSG.USAGE >SYSCALL puts - lda #K.E.SYN + lda #E.SYN sec rts *-------------------------------------- diff --git a/BIN/TELNET.S.txt b/BIN/TELNET.S.txt index b666480b..a5d7b30e 100644 --- a/BIN/TELNET.S.txt +++ b/BIN/TELNET.S.txt @@ -69,7 +69,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? >LDYA L.MSG.IPKO >SYSCALL puts - lda #K.E.SYN + lda #E.SYN sec rts @@ -101,7 +101,7 @@ CS.RUN.IPOK ldy #S.PS.ARGC .9 >LDYA L.MSG.USAGE >SYSCALL puts -.99 lda #K.E.SYN +.99 lda #E.SYN sec rts @@ -145,7 +145,7 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol .9 >LDYA L.MSG.SKTKO >SYSCALL puts - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BIN/X.CPMVRM.S.txt b/BIN/X.CPMVRM.S.txt index d7a63ff1..2f337626 100644 --- a/BIN/X.CPMVRM.S.txt +++ b/BIN/X.CPMVRM.S.txt @@ -68,7 +68,7 @@ CS.INIT .99 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BMP2PIX.S.txt b/BMP2PIX.S.txt index 824026b3..ac79f155 100644 --- a/BMP2PIX.S.txt +++ b/BMP2PIX.S.txt @@ -69,7 +69,7 @@ CS.INIT .99 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts @@ -176,7 +176,7 @@ CS.INIT.OPENINPUT .99 >LDYA L.MSG.HEADER.KO >SYSCALL printf - lda #K.E.IBIN + lda #E.IBIN sec rts *-------------------------------------- diff --git a/DRV/LANCEGS.DRV.S.txt b/DRV/LANCEGS.DRV.S.txt index 219c298a..8bee0579 100644 --- a/DRV/LANCEGS.DRV.S.txt +++ b/DRV/LANCEGS.DRV.S.txt @@ -126,7 +126,7 @@ Dev.ParseArgs >LDYA ARGS >SYSCALL sscanf bcc .8 - lda #K.E.SYN + lda #E.SYN sec .8 rts *-------------------------------------- diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index 0796e60a..1bb016e2 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -145,7 +145,7 @@ Dev.ParseArgs >LDYA ARGS >SYSCALL sscanf bcc .8 - lda #K.E.SYN + lda #E.SYN sec .8 rts *-------------------------------------- diff --git a/DRV/X.SSC.DRV.S.txt b/DRV/X.SSC.DRV.S.txt index a753c2ef..540cfd27 100644 --- a/DRV/X.SSC.DRV.S.txt +++ b/DRV/X.SSC.DRV.S.txt @@ -163,7 +163,7 @@ Dev.ParseArgs >LDYA ARGS beq .92 >SYSCALL freemem -.92 lda #K.E.SYN +.92 lda #E.SYN sec rts *-------------------------------------- diff --git a/DRV/X.U2.DRV.S.txt b/DRV/X.U2.DRV.S.txt index 8826e8a0..0e4929b9 100644 --- a/DRV/X.U2.DRV.S.txt +++ b/DRV/X.U2.DRV.S.txt @@ -146,7 +146,7 @@ Dev.ParseArgs >LDYA ARGS >SYSCALL sscanf bcc .8 - lda #K.E.SYN + lda #E.SYN sec .8 rts *-------------------------------------- diff --git a/FNT2FON.S.txt b/FNT2FON.S.txt index 354d1652..858a5262 100644 --- a/FNT2FON.S.txt +++ b/FNT2FON.S.txt @@ -72,7 +72,7 @@ CS.INIT .99 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts @@ -166,7 +166,7 @@ CS.INIT.OPENINPUT .99 >LDYA L.MSG.HEADER.KO >SYSCALL printf - lda #K.E.IBIN + lda #E.IBIN sec rts *-------------------------------------- diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 9e3116ab..5d3b6c68 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -75,6 +75,22 @@ A2osX.S.XY .EQ $E1 A2osX.S.NIC .EQ $E2 A2osX.S.DISABLE .EQ $FF *-------------------------------------- +* ProDOS ERROR CODES : $00->$5F +* Lib ERROR CODES : $80->$BF +* Kernel ERROR CODES : $C0->$FF +*-------------------------------------- +E.OOM .EQ $FF Out Of Memory Error +E.OOH .EQ $FE Out Of Handle Error +E.INVH .EQ $FD Invalid Handle +E.BUF .EQ $FC Buffer Overflow +*-------------------------------------- +E.NSP .EQ $DD No Such Process Error +*-------------------------------------- +E.SYN .EQ $CF Syntax Error +E.ENVF .EQ $CE Env is Full +E.IBIN .EQ $CD Invalid BIN format +E.FTB .EQ $CC File Too Big Error +*-------------------------------------- * A2osX.SYSCALL Constants *-------------------------------------- C.EOF .EQ 4 @@ -262,22 +278,6 @@ SYS.FreeStkObj .EQ $FE SYS.Kernel.JMP .EQ $E000 SYS.GuiOSD.JMP .EQ $E200 *-------------------------------------- -* ProDOS ERROR CODES : $00->$5F -* Lib ERROR CODES : $80->$BF -* Kernel ERROR CODES : $C0->$FF -*-------------------------------------- -K.E.OOM .EQ $FF Out Of Memory Error -K.E.OOH .EQ $FE Out Of Handle Error -K.E.INVH .EQ $FD Invalid Handle -K.E.BUF .EQ $FC Buffer Overflow -*-------------------------------------- -K.E.NSP .EQ $DD No Such Process Error -*-------------------------------------- -K.E.SYN .EQ $CF Syntax Error -K.E.ENVF .EQ $CE Env is Full -K.E.IBIN .EQ $CD Invalid BIN format -K.E.FTB .EQ $CC File Too Big Error -*-------------------------------------- * MEM STRUCT *-------------------------------------- S.MEM.F .EQ 0 diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt index a7f6090d..3d2149a0 100644 --- a/LIB/LIBPAK.S.txt +++ b/LIB/LIBPAK.S.txt @@ -123,7 +123,7 @@ Pak >PULLW ZPStatPtr clc rts -.9 lda #K.E.OOM +.9 lda #E.OOM sec rts *-------------------------------------- diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index ecf74de3..d8266cfe 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -92,7 +92,7 @@ SKT.Socket.FindFree txa >SYSCALL freemem - lda #K.E.OOH + lda #E.OOH sec rts diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 6e2c624e..7dae6dc1 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -70,7 +70,7 @@ CS.RUN ldy #S.PS.ARGC .90 >LDYA L.MSG.USAGE >SYSCALL puts - lda #K.E.SYN + lda #E.SYN sec .9 rts diff --git a/SBIN/HTTPD.S.txt b/SBIN/HTTPD.S.txt index 08ce0501..41fa848f 100644 --- a/SBIN/HTTPD.S.txt +++ b/SBIN/HTTPD.S.txt @@ -85,7 +85,7 @@ CS.RUN jsr Init.Timeout .99 >LDYA L.MSG.TCPIPERR >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec CS.RUN.RTS rts @@ -141,7 +141,7 @@ CS.RUN.LOOP >SLEEP .9 >LDYA L.MSG.SKTERR >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/SBIN/INSDRV.S.txt b/SBIN/INSDRV.S.txt index d4248c4b..255d9180 100644 --- a/SBIN/INSDRV.S.txt +++ b/SBIN/INSDRV.S.txt @@ -61,7 +61,7 @@ CS.RUN ldy #S.PS.ARGC .9 >LDYA L.MSG.USAGE >SYSCALL puts - lda #K.E.SYN tell TSKMGR that all done ok, but + lda #E.SYN tell TSKMGR that all done ok, but sec we do not want to stay in memory .99 rts *-------------------------------------- diff --git a/SBIN/NFSD.S.txt b/SBIN/NFSD.S.txt index fcf5607a..9a804fbc 100644 --- a/SBIN/NFSD.S.txt +++ b/SBIN/NFSD.S.txt @@ -73,7 +73,7 @@ CS.RUN jsr Init.Timeout .99 >LDYA L.MSG.TCPIPERR >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts @@ -122,7 +122,7 @@ CS.RUN.INIT ldx #3 .9 >LDYA L.MSG.SKTERR >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 88a67d75..6489818f 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -19,10 +19,14 @@ CMD.Quit >LDA.G hCmdBuf * in: * ZPCMDBuf : CString command line * out: -* ZPCMDBuf : Remove extra SPACE & comment -* ZPCMDBuf : cmd\0 arg1\0 arg2\0 ... \0 +* ZPArgVBuf : +* /path/excmd\0 arg1\0 arg2\0 ... \0 +* - or - +* intcmd\0 arg1\0 arg2\0 ... \0 *-------------------------------------- -Cmd.Parse lda #S.PS.F.HOLD+S.PS.F.DUPENV +Cmd.Parse >STZ.G CMD.bCmd + + lda #S.PS.F.HOLD+S.PS.F.DUPENV >STA.G CMD.PSFlags >LDYA ZPCMDBuf @@ -42,125 +46,151 @@ Cmd.Parse lda #S.PS.F.HOLD+S.PS.F.DUPENV bcs .9 >STYA ZPArgVBuf txa - >STA.G hArgVBuf + >STA.G CMD.hArgVBuf lda #0 sta (ZPArgVBuf) -.1 lda (ZPCMDBuf) + lda (ZPCMDBuf) beq .8 - >LDA.G CMD.hCmdLine - bne .6 we already have Cmd +.1 >LDYA ZPCMDBuf + >SYSCALL puts - jsr CMD.CheckExternal - bcs .9 + >LDA.G CMD.bCmd + 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 -.6 jsr CMD.AddToArgV + >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.AddTokenToArgV bcs .9 .7 jsr CMD.NextCmdBufToken - bra .1 + lda (ZPCMDBuf) + bne .1 -.8 clc - rts +.8 clc .9 rts *-------------------------------------- * ZPCMDBuf-> argv[] (formatted & not empty) *-------------------------------------- -Cmd.Exec.CheckExternal - - ldy #$ff +Cmd.CheckCmd ldy #$ff .1 iny lda (ZPCMDBuf),y - beq .2 no / found, search... + beq .2 cmp #'/' bne .1 - >LDYA ZPCMDBuf found /, some path specified, no search + >LDYA ZPCMDBuf found /, some path specified, External, no search >SYSCALL realpath bcs .9 - phy - pha txa >STA.G CMD.hCmdLine - pla - ply - >PUSHEA.G CMD.Stat Command line is already full path, no search - >LDYA ZPCMDBuf - >SYSCALL STAT - bcs .9 + bra .6 go check type... -.2 >LDYAI 256 Get a buffer for found path +.2 >LDYA L.CMD.INT + jsr CMD.SearchInt no / found, search internal... + bcs .4 not internal, search PATH + + jsr CMD.AddYAToArgV X unmodified + bcs .9 + txa + >STA.G CMD.bCmd + + clc +.9 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 .9 No PATH, try in CD + bcs Cmd.CheckCmd.90 - jsr Cmd.Exec.EXT.Search - bcc Cmd.Exec.EXT.ARGS + jsr Cmd.SearchExt + bcc .6 found in PATH, go check Type ldy #S.PS.hPREFIX not found, try in CD lda (pPs),y >SYSCALL GetMemPtr - jsr Cmd.Exec.EXT.Search - bcc Cmd.Exec.EXT.ARGS + jsr Cmd.SearchExt + bcs Cmd.CheckCmd.90 +.6 >PUSHEA.G CMD.Stat + >LDA.G CMD.hCmdLine + >SYSCALL GetMemPtr + >SYSCALL STAT + bcs Cmd.CheckCmd.90 + + 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 - sec -.9 rts -*-------------------------------------- -* CMD.hCmdLine = /path/bin -*-------------------------------------- -Cmd.Exec.EXT.ARGS - ldx #0 - jsr Cmd.RemoveStrAtX - - >LDYA ZPCMDBuf - >SYSCALL puts - >DEBUG - - >LDA.G CMD.hCmdLine - >SYSCALL GetMemPtr - ldx #0 - jsr CMD.InsertStrYAAtX - - >LDYA ZPCMDBuf - >SYSCALL puts - >DEBUG - - >LDA.G CMD.hCmdLine - >SYSCALL FreeMem - - ldy #CMD.Stat+S.STAT.P.TYPE - lda (pData),y - cmp #S.FI.T.TXT - beq Cmd.Exec.EXT.TXT - cmp #S.FI.T.BIN - beq Cmd.Exec.EXT.BIN - cmp #S.FI.T.SYS - bne .9 - - bra * - -.9 lda #K.E.SYN - sec + plp +Cmd.CheckCmd.RTS rts *-------------------------------------- -Cmd.Exec.EXT.Search - pha +* 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 + bcs Cmd.CheckCmd.90 + lda #$ff + >STA.G CMD.bCmd + bra Cmd.CheckCmd.90 +*-------------------------------------- +Cmd.CheckCmd.SYS +*-------------------------------------- + bra * +*-------------------------------------- +Cmd.SearchExt pha phy >PUSHEA.G CMD.Stat >LDA.G CMD.hCmdLine @@ -172,59 +202,27 @@ Cmd.Exec.EXT.Search >LDYA ZPCMDBuf push CMD >SYSCALL FileSearch rts -*-------------------------------------- -* TXT : Launch "/PATH/SHELL /PATH/CMD ARGS" -*-------------------------------------- -Cmd.Exec.EXT.TXT - lda #0 - >SYSCALL ArgV - ldx #0 - jsr Cmd.InsertStrYAAtX -*-------------------------------------- -* BIN : Launch "/PATH/CMD ARGS" -*-------------------------------------- -Cmd.Exec.EXT.BIN +*-------------------------------------- +Cmd.Exec lda (ZPArgVBuf) + cmp #'/' + bne .8 + >PUSHB.G CMD.PSFlags - >LDYA ZPCMDBuf - >SYSCALL Exec - rts + >LDYA ZPArgVBuf + >SYSCALL exec + +.8 >LDA.G CMD.bCmd + tax + jmp (J.CMD.INT,x) *-------------------------------------- -* Internal Commands +* STARTPROC : intcmd = 0 *-------------------------------------- -CMD.Exec.INT >LDYA L.CMD.INT - >STYA ZPPtr2 - - ldx #0 +Cmd.INT.STARTPROC + >LDA.G CMD.PSFlags + and #$ff^S.PS.F.HOLD + sta (pData),y -.1 phx - - >PUSHW ZPPtr2 - >LDYA ZPCMDBuf - >SYSCALL StrCaseCmp - bcs .2 - - plx - jmp (J.CMD.INT,x) Found an internal Cmd... - -.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 + clc rts *-------------------------------------- Cmd.INT.PWD ldy #S.PS.hPREFIX @@ -233,8 +231,9 @@ Cmd.INT.PWD ldy #S.PS.hPREFIX >SYSCALL puts rts *-------------------------------------- -Cmd.INT.CD lda (ZPCMDBuf) - bne .1 +Cmd.INT.CD ldx #1 + jsr Cmd.GetArgX + bcc .1 >LDYA L.ENV.HOME >SYSCALL GetEnv @@ -242,33 +241,17 @@ Cmd.INT.CD lda (ZPCMDBuf) >SYSCALL ExpandStr bcs .9 - bra .4 -.1 ldy #0 - -.2 lda (ZPCMDBuf),y - tax - iny - lda (ZPCMDBuf),y - bne .2 - cpx #'/' - beq .3 - - lda #'/' - sta (ZPCMDBuf),y - iny - lda #0 - sta (ZPCMDBuf),y - -.3 >LDYA ZPCMDBuf Get ARG0 - >SYSCALL RealPath +.1 >SYSCALL RealPath bcs .9 .4 >STYA ZPCMDBuf txa >STA.G CMD.hCmdLine +**** MEMORY LEAK : CMD.hCmdLine not released + ldy #1 lda (ZPCMDBuf),y beq .8 we have '/' @@ -278,8 +261,7 @@ Cmd.INT.CD lda (ZPCMDBuf) >SYSCALL STAT bcs .9 - ldy #CMD.Stat+S.STAT.P.TYPE - lda (pData),y + >LDA.G CMD.Stat+S.STAT.P.TYPE cmp #$0F Directory ? bne Cmd.Exec.ERRSYN @@ -296,26 +278,19 @@ Cmd.INT.CD lda (ZPCMDBuf) ldy #S.PS.hPREFIX sta (pPs),y - jsr SetPWD - clc + jmp SetPWD + .9 rts *-------------------------------------- -Cmd.Exec.ERRSYN lda #K.E.SYN +Cmd.Exec.ERRSYN lda #E.SYN sec rts *-------------------------------------- -Cmd.INT.STARTPROC - lda (ZPCMDBuf) - beq Cmd.Exec.ERRSYN - - >LDA.G CMD.PSFlags - and #$ff^S.PS.F.HOLD - sta (pData),y - - jmp Cmd.Exec.EXT -*-------------------------------------- -Cmd.INT.SET lda (ZPCMDBuf) - bne Cmd.INT.SETVAR +Cmd.INT.SET >DEBUG + + ldx #1 + jsr Cmd.GetArgX + bcc Cmd.INT.SETVAR * No arg, print all ENV @@ -365,42 +340,45 @@ Cmd.INT.SET lda (ZPCMDBuf) .8 clc .9 rts *-------------------------------------- -Cmd.INT.SETVAR cmp #'=' string is '=value' ? +Cmd.INT.SETVAR >STYA ZPPTR1 + + lda (ZPPTR1) + cmp #'=' string is '=value' ? beq .99 syntax error ldy #0 .1 iny - lda (ZPCMDBuf),y + lda (ZPPTR1),y beq .3 no =, GetEnv cmp #'=' ARGS contains =, PutEnv bne .1 iny - lda (ZPCMDBuf),y + lda (ZPPTR1),y beq .2 "VAR=" go UnsetEnv - >LDYA ZPCMDBuf String is VAR=VALUE... + >LDYA ZPPTR1 String is VAR=VALUE... >SYSCALL PutEnv rts .2 dey String is "VAR=", Remove ending '=' lda #0 - sta (ZPCMDBuf),y + sta (ZPPTR1),y - >LDYA ZPCMDBuf String is "VAR"... + >LDYA ZPPTR1 String is "VAR"... >SYSCALL UnsetEnv rts * Print requested VAR -.3 >LDYA ZPCMDBuf +.3 >LDYA ZPPTR1 >SYSCALL GetEnv bcs .8 >PUSHYA push value - >PUSHW ZPCMDBuf push name + >PUSHW ZPPTR1 push name jsr Cmd.INT.SET.PRINT .8 clc @@ -436,16 +414,21 @@ Cmd.INT.TIME clc >SYSCALL puts rts *-------------------------------------- -Cmd.INT.ECHO >PUSHW ZPCMDBuf +Cmd.INT.ECHO ldx #1 + jsr Cmd.GetArgX + bcs .71 + + >PUSHYA ldy #S.PS.hStdOut lda (pPs),y >SYSCALL fputs + >DEBUG bcs .9 - ldx #1 - + ldx #2 + .1 phx - jsr Cmd.GetStrAtX + jsr Cmd.GetArgX bcs .7 >PUSHYA @@ -458,11 +441,11 @@ Cmd.INT.ECHO >PUSHW ZPCMDBuf plx inx bcc .1 - + clc rts .7 plx - >LDA.G bECHO.N +.71 >LDA.G bECHO.N bmi .8 >PUSHBI 0 @@ -643,150 +626,104 @@ CMD.NextCmdBufToken bne .1 inc ZPCMDBuf+1 .1 tax - bne CMD.NextCmdBuf + bne CMD.NextCmdBufToken rts *-------------------------------------- -CMD.AddToArgV >LDYA ZPArgVBuf - >STYA ZPPtr1 +CMD.AddTokenToArgV + >LDYA ZPCmdBuf +CMD.AddYAToArgV >STYA ZPPtr1 + >LDYA ZPArgVBuf + >STYA ZPPtr2 -.1 lda (ZPPtr1) scan to end of argV +.1 lda (ZPPtr2) scan to end of argV beq .6 -.2 inc ZPPtr1 +.2 inc ZPPtr2 bne .3 - inc ZPPtr1+1 -.3 lda (ZPPtr1) + inc ZPPtr2+1 +.3 lda (ZPPtr2) bne .2 - inc ZPPtr1 + inc ZPPtr2 bne .4 - inc ZPPtr1+1 -.4 lda (ZPPtr1) + inc ZPPtr2+1 +.4 lda (ZPPtr2) bne .2 .6 ldy #$ff .7 iny - beq .9 - lda (ZPCMDBuf),y - sta (ZPPtr1),y +* beq .9 + lda (ZPPtr1),y + sta (ZPPtr2),y bne .7 including str ending \0 iny - beq .9 - sta (ZPPtr1),y arg[] ending \0 +* beq .9 + sta (ZPPtr2),y arg[] ending \0 clc rts -.9 lda #K.E.BUF +.9 lda #E.BUF sec rts *-------------------------------------- -Cmd.InsertStrYAAtX - >STYA ZPPtr3 new str to insert +CMD.SearchInt >STYA ZPPtr2 + + ldx #0 - jsr Cmd.GetStrAtX get ptr1=arg[x] - bcs .9 +.1 phx - >STYA ZPPtr4 Save ptr where to insert + >PUSHW ZPPtr2 + >LDYA ZPCMDBuf + >SYSCALL StrCaseCmp + bcs .2 - ldy $ff + plx + >LDYA ZPPtr2 + clc Found an internal Cmd... + rts -.1 iny get new str len - lda (ZPPtr3),y +.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 - tya - sec +1 - adc ZPPtr1 - sta ZPPtr2 - - lda #0 - adc ZPPtr1+1 - lda ZPPtr2+1 - - ldy #0 - -.3 lda (ZPPtr1),y - sta (ZPPtr2),y - beq .4 - iny - bne .3 - -.4 tay - beq .5 - - jsr Cmd.NextStrPtr1 - >STYA ZPPtr1 - jsr Cmd.NextStrPtr2 - >STYA ZPPtr2 - bra .3 - -.5 ldy #ff copy new str in hole created - -.6 iny - lda (ZPPtr3),y - sta (ZPPtr4),y - bne .6 - -.8 clc -.9 rts -*-------------------------------------- -Cmd.RemoveStrAtX - jsr Cmd.GetStrAtX - bcs .9 - - jsr Cmd.NextStrPtr1 - >STYA ZPPtr2 - -.3 ldy #0 - -.4 lda (ZPPtr2),y - sta (ZPPtr1),y - beq .5 - iny - bra .4 - -.5 tya we moved the ending \0 - beq .8 - sec - adc ZPPtr2 - sta ZPPtr2 - bcc .6 - - inc ZPPtr2+1 - -.6 tya - - sec - adc ZPPtr1 - sta ZPPtr1 - bcc .3 - - inc ZPPtr2+1 - bra .3 - -.8 rts + rts *-------------------------------------- -Cmd.GetStrAtX >LDYA ZPCMDBuf +Cmd.GetArgX >LDYA ZPArgVBuf -.1 dex + dex bmi .8 >STYA ZPPtr1 - jsr Cmd.NextStrPtr1 - bcc .1 - rts +.1 jsr Cmd.NextArgPtr1 + bcs .9 + dex + bpl .1 -.8 >LDYA ZPPtr1 + >LDYA ZPPtr1 - clc - rts +.8 clc +.9 rts *-------------------------------------- -Cmd.NextStrPtr1 lda (ZPPtr1) +Cmd.NextArgPtr1 lda (ZPPtr1) beq .9 .1 inc ZPPtr1 @@ -796,31 +733,15 @@ Cmd.NextStrPtr1 lda (ZPPtr1) bne .1 inc ZPPtr1 - bne .8 + bne .3 inc ZPPtr1+1 + +.3 lda (ZPPtr1) + beq .9 .8 clc rts -.9 sec - rts -*-------------------------------------- -Cmd.NextStrPtr2 lda (ZPPtr2) - beq .9 - - >LDYA ZPPtr2 - >SYSCALL strlen - pha - tya - sec +1 - adc ZPPtr2 - tay - - pla - adc ZPPtr2+1 -* clc - rts - .9 sec rts *-------------------------------------- diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index a75499bd..200db5a7 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -65,7 +65,8 @@ J.ESC .DA CL.BS left arrow .DA HIS.GetPrev .DA CL.NAK right arow L.CMD.INT .DA CMD.INT -J.CMD.INT .DA Cmd.INT.CD +J.CMD.INT .DA Cmd.INT.STARTPROC + .DA Cmd.INT.CD .DA Cmd.INT.DATE .DA Cmd.INT.ECHO .DA Cmd.INT.EXIT @@ -75,9 +76,8 @@ J.CMD.INT .DA Cmd.INT.CD .DA Cmd.INT.READ .DA Cmd.INT.SET .DA Cmd.INT.SLEEP - .DA Cmd.INT.STARTPROC .DA Cmd.INT.TIME -L.CMD.IOR .DA CMD.IOR +L.CMD.IO .DA CMD.IO L.CSH.BOPS .DA CSH.BOPS J.CSH.BOPS .DA CSH.BOPS.ADD .DA CSH.BOPS.SUB @@ -198,7 +198,7 @@ CS.RUN >LDA.G bReadMode READ Command ? jsr CMD.Parse - lda (ZPCMDBuf) + lda (ZPArgVBuf) beq .10 Empty line jsr HIS.Add @@ -285,7 +285,7 @@ CS.RUN.BATCH >SYSCALL GetChar jsr CMD.Parse - lda (ZPCMDBuf) + lda (ZPArgVBuf) beq .8 jsr CMD.Exec @@ -371,7 +371,7 @@ ENV.HOME .AZ "HOME" *-------------------------------------- * https://www.tldp.org/LDP/abs/html/io-redirection.html *-------------------------------------- -CMD.IOR .AZ "&" +CMD.IO .AZ "&" .AZ "|" .AZ "<" .AZ ">>" @@ -382,7 +382,8 @@ CMD.IOR .AZ "&" .AZ "2>" .HS 00 *-------------------------------------- -CMD.INT .AZ "CD" +CMD.INT .AZ "STARTPROC" + .AZ "CD" .AZ "DATE" .AZ "ECHO" .AZ "EXIT" @@ -392,7 +393,6 @@ CMD.INT .AZ "CD" .AZ "READ" .AZ "SET" .AZ "SLEEP" - .AZ "STARTPROC" .AZ "TIME" .HS 00 *-------------------------------------- @@ -424,6 +424,7 @@ bSecureRead .BS 1 Sleep .BS 4 CMD.hCmdLine .BS 1 +CMD.bCmd .BS 1 CMD.hArgVBuf .BS 1 CMD.PSFlags .BS 1 diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 8c9d9aa1..84290ec4 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -356,7 +356,7 @@ K.InsDrv >STYA ZPPtr1 clc rts -.9 lda #K.E.OOM +.9 lda #E.OOM sec rts *-------------------------------------- @@ -405,7 +405,7 @@ BIN.RelExe ldy #H.BIN.T+1 cmp /H.BIN.T.DRV65 beq .1 - lda #K.E.IBIN + lda #E.IBIN sec rts diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index b1768905..ffd8b1fd 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -358,7 +358,7 @@ CORE.GetPS ldy #0 cpy #K.PS.MAX bne .1 -.9 lda #K.E.NSP +.9 lda #E.NSP * sec rts *-------------------------------------- diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index db46b817..acdbec87 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -148,7 +148,7 @@ K.MKDev >STYA .1+1 cpx #K.IRQDEV.MAX*2 bne .2 -.9 lda #K.E.OOH +.9 lda #E.OOH * sec .99 rts diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index 69fb3d9a..a15630de 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -372,7 +372,7 @@ K.SetEnv.I jsr K.UnsetEnv.I clc rts -.99 lda #K.E.ENVF +.99 lda #E.ENVF * sec rts */-------------------------------------- diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index f8ad98cc..d46b41bb 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -58,7 +58,7 @@ K.LoadFile clc inc bne .1 -.10 lda #K.E.FTB +.10 lda #E.FTB .11 bra .99 .1 jsr K.GetMem diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index dde3716a..4db32d79 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -218,7 +218,7 @@ Mem.AddSlot >STYA ZPMemMgrTmp1 save req size .98 pla discard new Mem.Free HI -.99 lda #K.E.OOM +.99 lda #E.OOM sec rts *-------------------------------------- diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 532c4371..0286b333 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -64,7 +64,7 @@ PS.CreateChild ldx #0 cpx #K.PS.MAX bne .1 - lda #K.E.OOH + lda #E.OOH sec rts diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 1de57233..4ff64e1d 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -1022,7 +1022,7 @@ K.FClose jsr PFT.CheckNodeA stz Nod.Table.hFD,x jmp K.Close -.9 lda #K.E.INVH +.9 lda #E.INVH sec K.FClose.RTS rts */-------------------------------------- @@ -1144,9 +1144,9 @@ K.FSeek jsr PFT.CheckNodeA .9 rts -.98 lda #K.E.SYN +.98 lda #E.SYN .HS 2C bit abs -.99 lda #K.E.FTB +.99 lda #E.FTB sec rts */-------------------------------------- @@ -1285,7 +1285,7 @@ STDIO.NewHFileYAX bne .1 pla - lda #K.E.OOH + lda #E.OOH * sec rts @@ -1326,7 +1326,7 @@ STDIO.GetHFile tay rts STDIO.GetHFile.9 - lda #K.E.INVH + lda #E.INVH sec rts *-------------------------------------- diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index b787dd7f..09465f96 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -386,7 +386,7 @@ K.realpath >STYA ZPPtr1 .89 >LDYAI K.Buf256 jmp K.NewStr -.90 lda #K.E.SYN +.90 lda #E.SYN sec rts *-------------------------------------- diff --git a/X.ERRORS.S.txt b/X.ERRORS.S.txt index 3bdb6bc1..1fc80a48 100644 --- a/X.ERRORS.S.txt +++ b/X.ERRORS.S.txt @@ -20,9 +20,14 @@ ERR.Codes .DA #MLI.E.IO .DA #MLI.E.LOCKED .DA #MLI.E.OPEN *-------------------------------------- - .DA #K.E.OOM - .DA #K.E.OOH - .DA #K.E.SYN + .DA #E.OOM + .DA #E.OOH + .DA #E.INVH + .DA #E.BUF + .DA #E.SYN + .DA #E.ENVF + .DA #E.IBIN + .DA #E.FTB *-------------------------------------- ERR.Count .EQ *-ERR.Codes *-------------------------------------- @@ -45,7 +50,12 @@ ERR.Messages >PSTR "I/O Error" *-------------------------------------- >PSTR "Out Of Memory" >PSTR "Out Of Memory Handle" + >PSTR "Invalid Handle" + >PSTR "Buffer Overflow" >PSTR "Syntax Error" + >PSTR "Env Is Full" + >PSTR "Invalid BIN format" + >PSTR "File Too Big" *-------------------------------------- >PSTR "Unknown Error" *--------------------------------------