diff --git a/BIN/SHELL.S.CL.txt b/BIN/SHELL.S.CL.txt index c1ba3833..f7c8208e 100644 --- a/BIN/SHELL.S.CL.txt +++ b/BIN/SHELL.S.CL.txt @@ -9,11 +9,11 @@ CL.Init >LDYAI 256 >STYA ZPCLBuf txa - >STA.G CMD.hCLBuf + >STA.G CL.hCLBuf .9 rts *-------------------------------------- -CL.Quit >LDA.G CMD.hCLBuf +CL.Quit >LDA.G CL.hCLBuf beq .9 >SYSCALL FreeMem diff --git a/BIN/SHELL.S.CMD.txt b/BIN/SHELL.S.CMD.txt index 6288803f..00873a13 100644 --- a/BIN/SHELL.S.CMD.txt +++ b/BIN/SHELL.S.CMD.txt @@ -8,7 +8,7 @@ CMD.Init >LDYAI 256 bcs .9 >STYA ZPArgVBuf txa - >STA.G CMD.hArgVBuf + >STA.G CORE.hArgVBuf lda #PUSHD.STACK tay @@ -16,7 +16,7 @@ CMD.Init >LDYAI 256 .9 rts *-------------------------------------- -CMD.Quit ldy #CMD.hArgVBuf +CMD.Quit ldy #CORE.hArgVBuf jsr .8 ldy #hFileBuf @@ -106,10 +106,10 @@ CMD.Get >LDYA ZPInputBufPtr * - or - * intcmd\0 arg1\0 arg2\0 ... \0 *-------------------------------------- -CL.Parse >STZ.G CMD.IntCmd +CL.Parse >STZ.G CORE.IntCmd lda #S.PS.F.HOLD+S.PS.F.DUPENV - >STA.G CMD.PSFlags + >STA.G CORE.PSFlags >PUSHW ZPCLBuf >LDYA ZPCLBuf @@ -126,7 +126,7 @@ CL.Parse >STZ.G CMD.IntCmd .1 cmp #'#' comment ? beq .8 yes, ignore remaining - >LDA.G CMD.IntCmd + >LDA.G CORE.IntCmd bne .3 we already have Cmd, go check args ldy #1 @@ -137,7 +137,7 @@ CL.Parse >STZ.G CMD.IntCmd cmp #'.' leading dot ? bne .2 - >LDA.G CMD.PSFlags yes, child process will run in same ENV + >LDA.G CORE.PSFlags yes, child process will run in same ENV and #$ff^S.PS.F.DUPENV sta (pData),y bra .6 and skip this token @@ -176,7 +176,7 @@ CL.CheckCmd ldy #$ff bra .4 .2 >PUSHW ZPCLBufPtr - >LDYA L.CMD.INT + >LDYA L.CORE.INT jsr Lookup no / found, search internal... bcs .4 not internal, search PATH @@ -184,7 +184,7 @@ CL.CheckCmd ldy #$ff plx bne .3 - >LDA.G CMD.PSFlags if STARTPROC, skip keyword... + >LDA.G CORE.PSFlags if STARTPROC, skip keyword... and #$ff^S.PS.F.HOLD sta (pData),y ...and toggle S.PS.F.HOLD flag clc @@ -194,7 +194,7 @@ CL.CheckCmd ldy #$ff bcs .9 txa - >STA.G CMD.IntCmd + >STA.G CORE.IntCmd clc rts @@ -203,7 +203,7 @@ CL.CheckCmd ldy #$ff jsr CL.AddYAToArgV lda #$ff - >STA.G CMD.IntCmd + >STA.G CORE.IntCmd clc CL.CheckCmd.RTS @@ -223,7 +223,7 @@ CL.CheckIO >PUSHW ZPCLBufPtr .9 lda #0 rts *-------------------------------------- -CL.IO.AMP >LDA.G CMD.PSFlags +CL.IO.AMP >LDA.G CORE.PSFlags and #$ff^S.PS.F.HOLD sta (pData),y clc diff --git a/BIN/SHELL.S.CORE.txt b/BIN/SHELL.S.CORE.txt index b99540ed..a37bf32e 100644 --- a/BIN/SHELL.S.CORE.txt +++ b/BIN/SHELL.S.CORE.txt @@ -3,7 +3,31 @@ PREFIX AUTO 4,1 .LIST OFF *-------------------------------------- -* Input : CMD.IntCmd,ZPArgVBuf +* From hCLBuf or hFileBuf +* Get Line from buf until ;, CR, \0 (EOL / EOF) +* :LOOP +* if previous | : +* set hStdIn = hStdOut +* set hStdOut = Std +* GetCmd from line until | or EOL +* if | : +* create PIPE +* set hStdOut -> PIPE +* CORE.Exec & +* :LOOP +* else CORE.Exec +*-------------------------------------- +* SET VAR = `cmd args`, FOR VAR IN `cmd args` +* create PIPE +* set hStdOut -> PIPE +* CORE.Exec `cmd args` & +* set READMODE +* set hStdIn = hStdOut +* set hStdOut = Std +*-------------------------------------- +CORE.Run +*-------------------------------------- +* Input : CORE.IntCmd,ZPArgVBuf *-------------------------------------- CORE.Exec jsr CORE.StkGet IF,WHILE,FOR ? bcs .3 no particular context, exec... @@ -21,7 +45,7 @@ CORE.Exec jsr CORE.StkGet IF,WHILE,FOR ? asl bpl .8 parent context is FALSE, skip line -.3 >LDA.G CMD.IntCmd +.3 >LDA.G CORE.IntCmd bpl .80 Internal >PUSHB.G CORE.PSFlags @@ -31,7 +55,7 @@ CORE.Exec jsr CORE.StkGet IF,WHILE,FOR ? tax CPID - >LDA.G CMD.PSFlags + >LDA.G CORE.PSFlags and #S.PS.F.HOLD bne .4 @@ -106,7 +130,7 @@ CORE.INT.POPD.RTS rts CORE.INT.POPD.CSYN - jmp Cmd.Exec.CSYN + jmp CORE.Exec.CSYN *-------------------------------------- CORE.INT.CD ldx #1 jsr CORE.GetArgX @@ -135,13 +159,13 @@ CORE.INT.CD.1 >SYSCALL realpath lda (ZPPtr1),y beq CORE.SetPrefixPHA we have '/' - >PUSHEA.G CMD.Stat + >PUSHEA.G StatBuf >LDYA ZPPtr1 >SYSCALL STAT bcs CORE.INT.CD.1.9 - >LDA.G CMD.Stat+S.STAT.P.TYPE + >LDA.G StatBuf+S.STAT.P.TYPE cmp #S.FI.T.DIR bne CORE.INT.CD.1.9 @@ -356,10 +380,10 @@ CORE.INT.DATE sec .HS 90 bcc CORE.INT.TIME clc php - >LEA.G CORE.Time + >LEA.G TimeBuf >SYSCALL Time - >PUSHEA.G CORE.Time + >PUSHEA.G TimeBuf plp bcc .1 @@ -460,7 +484,7 @@ CORE.INT.GETKEY ldx #1 >PUSHEA.G M32.BUF ldx #1 - jsr Cmd.GetArgX + jsr CORE.GetArgX >SYSCALL SetEnv .9 rts @@ -501,9 +525,9 @@ CORE.INT.READ lda #1 txa >STA.G hVarName -.7 >INC.G CMD.ArgIndex +.7 >INC.G CORE.ArgIndex tax - jsr Cmd.GetArgX + jsr CORE.GetArgX bcc .1 >LDA.G hVarName @@ -579,13 +603,13 @@ CORE.INT.RD ldx #1 bcs .9 phy pha - >PUSHEA.G CORE.Stat + >PUSHEA.G StatBuf pla ply >SYSCALL STAT bcs .99 - >LDA.G CORE.Stat+S.STAT.P.TYPE + >LDA.G StatBuf+S.STAT.P.TYPE cmp #S.FI.T.DIR bne .9 @@ -790,7 +814,7 @@ CORE.Eval.UNARY ldx #3 CORE.Eval.D jsr CORE.Eval.DEF.7 bcs CORE.Eval.DEF.9 - >LDA.G CORE.Stat+S.STAT.P.TYPE + >LDA.G StatBuf+S.STAT.P.TYPE cmp #S.FI.T.DIR bne CORE.Eval.DEF.9 bra CORE.Eval.DEF.8 @@ -802,12 +826,12 @@ CORE.Eval.E jsr CORE.Eval.DEF.7 CORE.Eval.F jsr CORE.Eval.DEF.7 bcs CORE.Eval.DEF.9 - >LDA.G CORE.Stat+S.STAT.P.TYPE + >LDA.G StatBuf+S.STAT.P.TYPE cmp #S.FI.T.DIR beq CORE.Eval.DEF.9 bra CORE.Eval.DEF.8 -CORE.Eval.DEF.7 >PUSHEA.G CORE.Stat +CORE.Eval.DEF.7 >PUSHEA.G StatBuf ldx #3 jsr CORE.GetArgX >SYSCALL STAT @@ -963,7 +987,7 @@ CORE.GetEXP.GetNext jsr CORE.GetArgX rts *-------------------------------------- -CORE.GetArgX >LDYA ZPArgVBuf +CORE.GetArgX >LDYA ZPArgVBuf dex bmi .8 diff --git a/BIN/SHELL.S.txt b/BIN/SHELL.S.txt index 601a705c..f1ff8b51 100644 --- a/BIN/SHELL.S.txt +++ b/BIN/SHELL.S.txt @@ -4,11 +4,11 @@ AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 - .TF BIN/SHELL2 + .TF BIN/SHELL *-------------------------------------- CL.MAX .EQ 159 History.MAX .EQ 256 -CMD.STACK.MAX .EQ 64 +CORE.STACK.MAX .EQ 64 PUSHD.STACK.MAX .EQ 8 *-------------------------------------- C.STARTPROC .EQ 0 @@ -192,7 +192,7 @@ CS.RUN jsr CMD.Init bra CS.RUN.LOOP *-------------------------------------- -.1 jsr Cmd.INT.CD.HOME +.1 jsr CORE.INT.CD.HOME jsr CL.Init jsr HIS.Init bcs CS.INIT.RTS @@ -203,7 +203,7 @@ CS.RUN jsr CMD.Init >SYSCALL printf bcs CS.INIT.RTS - >PUSHEA.G CMD.Stat + >PUSHEA.G StatBuf >LDYA L.HOME.PROFILE >SYSCALL STAT bcs CS.RUN.LOOP @@ -358,7 +358,7 @@ CS.RUN.BATCH >SYSCALL GetChar clc jmp CS.RUN.LOOP.END -.2 jsr CL.GetCmd +.2 jsr CMD.Get bcc .7 cmp #C.EOF @@ -394,7 +394,7 @@ CS.RUN.Exec jsr CL.Parse lda (ZPArgVBuf) beq CS.RUN.LOOP.8 - jsr CMD.Exec + jsr CORE.Exec *-------------------------------------- CS.RUN.LOOP.END ldy #S.PS.RC sta (pPs),y @@ -543,9 +543,10 @@ Lookup >STYA ZPPtr2 rts *-------------------------------------- .INB USR/SRC/BIN/SHELL.S.CL + .INB USR/SRC/BIN/SHELL.S.HIS + .INB USR/SRC/BIN/SHELL.S.CORE .INB USR/SRC/BIN/SHELL.S.CMD .INB USR/SRC/BIN/SHELL.S.IO - .INB USR/SRC/BIN/SHELL.S.HIS *-------------------------------------- CS.END *-------------------------------------- @@ -580,7 +581,7 @@ CL.IO .AZ "&" .AZ "2>" .HS 00 *-------------------------------------- -CMD.INT .AZ "STARTPROC" +CORE.INT .AZ "STARTPROC" .AZ "CD" .AZ "DATE" .AZ "ECHO" @@ -609,14 +610,17 @@ CMD.INT .AZ "STARTPROC" .AZ "FI" .HS 00 *-------------------------------------- -CMD.Eval.TOKEN1 .AZ "![" +CORE.Eval.TOKEN1 + .AZ "![" .AZ "[" .HS 00 -CMD.Eval.TOKEN2 .AZ "-d" +CORE.Eval.TOKEN2 + .AZ "-d" .AZ "-e" .AZ "-f" .HS 00 -CMD.Eval.TOKEN3 .AZ "=" +CORE.Eval.TOKEN3 + .AZ "=" .AZ "!=" .AZ "-eq" .AZ "-ne" @@ -625,7 +629,7 @@ CMD.Eval.TOKEN3 .AZ "=" .AZ "-gt" .AZ "-ge" .HS 00 -CMD.Eval.TOKEN3.BITS +CORE.Eval.TOKEN3.BITS .DA #%000 .DA #%000 .DA #%010 @@ -634,7 +638,8 @@ CMD.Eval.TOKEN3.BITS .DA #%110 .DA #%001 .DA #%011 -CMD.Eval.TOKEN4 .AZ "+" +CORE.Eval.TOKEN4 + .AZ "+" .AZ "-" .AZ "*" .AZ "div" @@ -651,7 +656,7 @@ M32.Printf .AZ "%L" .DUMMY .OR 0 DS.START -CMD.STACK .BS CMD.STACK.MAX+1 pData (0 = Stack Ptr) +CORE.STACK .BS CORE.STACK.MAX+1 pData (0 = Stack Ptr) PUSHD.STACK .BS PUSHD.STACK.MAX+1 hFileBuf .BS 1 batch mode @@ -672,17 +677,17 @@ CL.Ptr .BS 1 CL.Len .BS 1 CL.bExec .BS 1 -CMD.IntCmd .BS 1 -CMD.hArgVBuf .BS 1 +CORE.IntCmd .BS 1 +CORE.hArgVBuf .BS 1 -CMD.ArgIndex .BS 1 -CMD.Varname .BS 1 -CMD.Test .BS 1 -CMD.Operator .BS 1 +CORE.ArgIndex .BS 1 +CORE.Varname .BS 1 +CORE.Test .BS 1 +CORE.Operator .BS 1 -CMD.PSFlags .BS 1 -CMD.Stat .BS S.STAT -CMD.Time .BS S.TIME +CORE.PSFlags .BS 1 +StatBuf .BS S.STAT +TimeBuf .BS S.TIME HIS.hBuf .BS 1 HIS.Count .BS 1 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index b04cfd46..114b69a5 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -431,8 +431,6 @@ S.FD.REG.IOBUF .EQ 3 * S.FD.REG .EQ 4 *-------------------------------------- -S.FD.DIR.REF .EQ 2 -S.FD.DIR.IOBUF .EQ 3 S.FD.DIR.EL .EQ 4 S.FD.DIR.EPB .EQ 5 S.FD.DIR.FC .EQ 6 word diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index cf556977..02cee376 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -14,14 +14,12 @@ K.GetDevByName >STYA ZPPtr1 requested dev name ldx #0 .1 lda Dev.Table,x - sta .3+1 clc adc #S.FD.DEV sta ZPPtr2 lda Dev.Table+1,x beq K.GetDev.NODEV - sta .4+1 adc /S.FD.DEV sta ZPPtr2+1 @@ -35,8 +33,8 @@ K.GetDevByName >STYA ZPPtr1 requested dev name ora (ZPPtr2),y Both char are 0 ? bne .2 no....loop -.3 ldy #$ff SELF MODIFIED -.4 lda #$ff SELF MODIFIED +.3 ldy Dev.Table,x +.4 lda Dev.Table+1,x clc rts diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index 6e59a495..788d18b9 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -39,16 +39,8 @@ K.OpenDir jsr PFT.CheckPathYA cmp #$0F Directory ? bne .98 - jsr STDIO.SetIOBUF - - bcs .98 - - >MLICALL MLIOPEN - bcs .98 - - lda K.MLI.PARAMS+5 get ref_num - ldy #S.FD.DIR.REF - sta (pFD),y + jsr IO.MLIOPEN + bcs .98 .8 lda #$ff Self Modified jsr STDIO.NewHFile @@ -90,7 +82,7 @@ K.ReadDir.EC .BS 2 K.ReadDir jsr PFT.CheckNodeA bcs K.ReadDir.RTS - ldy #S.FD.DIR.REF + ldy #S.FD.REG.REF lda (pFD),y beq K.ReadDir.ROOT jmp K.ReadDir.DIR diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 26bd428e..048fb3c0 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -181,11 +181,11 @@ Kernel.Init3C >LDYAI MSG.Init3 >LDYAI MSG.Prefix >SYSCALL printf - lda KBD - bpl .7 - sta KBDSTROBE - cmp #146 CTRL-R for ROOT mode - bne .7 +* lda KBD +* bpl .7 +* sta KBDSTROBE +* cmp #146 CTRL-R for ROOT mode +* bne .7 >PUSHBI 0 >LDYAI MSG.CTRLR diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 01de801f..23ca11e6 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -121,17 +121,8 @@ IO.OPEN.REG.E >LDYAI S.FD.REG * lda #S.FD.T.REG * sta (pFD),y - jsr STDIO.SetIOBUF + jsr IO.MLIOPEN bcs .9 - - >MLICALL MLIOPEN - bcs .9 - - lda K.MLI.PARAMS+5 get ref_num - ldy #S.FD.REG.REF - sta (pFD),y - - sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based lda K.Open.FLAGS bit #O.WRONLY @@ -479,6 +470,28 @@ K.Pipe .9 sec rts *-------------------------------------- +IO.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF + ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE + jsr MEM.GetMem.YAX + bcs .9 + + >STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call + txa + ldy #S.FD.REG.IOBUF + sta (pFD),y + + >MLICALL MLIOPEN + bcs .9 + + lda K.MLI.PARAMS+5 get ref_num + ldy #S.FD.REG.REF + sta (pFD),y + + sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based + +* clc +.9 rts +*-------------------------------------- IO.DEVDIR >PSTR "/DEV/" *-------------------------------------- MAN diff --git a/SYS/KERNEL.S.SLIST.txt b/SYS/KERNEL.S.SLIST.txt index 358e0fa0..ce531ef7 100644 --- a/SYS/KERNEL.S.SLIST.txt +++ b/SYS/KERNEL.S.SLIST.txt @@ -2,7 +2,7 @@ NEW PREFIX AUTO 4,1 *-------------------------------------- -X.SLIST jmp (.1-SYS.SListAdd,x) +X.SLIST jmp (.1-SYS.SListAddData,x) .1 .DA SLIST.Add .DA SLIST.Lookup .DA SLIST.GetByID diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 1f8b1e4b..6396db8a 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -974,7 +974,7 @@ K.SScanF.Fwd tya Y=char count parsed * CS : A = EC *\-------------------------------------- K.FOpen jsr PFT.CheckPathYA - bcs .99 + bcs K.FOpen.RET4 >PULLB K.Open.FLAGS >PULLB K.Open.TYPE @@ -995,7 +995,7 @@ K.FOpen jsr PFT.CheckPathYA sec .9 rts -.99 >RET 4 +K.FOpen.RET4 >RET 4 */-------------------------------------- * # FClose * Close a file @@ -1042,7 +1042,7 @@ K.FClose jsr PFT.CheckNodeA * Y,A = Bytes Read *\-------------------------------------- K.FRead jsr PFT.CheckNodeA - bcs K.FWrite.9 + bcs K.FOpen.RET4 jmp IO.Read.I */-------------------------------------- @@ -1060,10 +1060,9 @@ K.FRead jsr PFT.CheckNodeA * Y,A = Bytes Written *\-------------------------------------- K.FWrite jsr PFT.CheckNodeA - bcs K.FWrite.9 + bcs K.FOpen.RET4 jmp IO.Write.I -K.FWrite.9 >RET 4 */-------------------------------------- * # FFlush * ## C @@ -1318,17 +1317,6 @@ STDIO.NewHFile sta .4+1 Store hFD clc .9 rts *-------------------------------------- -STDIO.SetIOBUF >LDYAI 1024 get a ProDOS IOBUF - ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE - jsr MEM.GetMem.YAX - bcs .9 - - >STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call - txa - ldy #S.FD.REG.IOBUF - sta (pFD),y -.9 rts -*-------------------------------------- STDIO.IOERR lda #MLI.E.IO sec rts