From 8aabef1410557c4ce48fd9b0aee87267eaec554f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 15 Feb 2019 16:38:17 +0000 Subject: [PATCH] Kernel 0.92+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/PS.S.txt | 7 +++-- BIN/SH.S.CMD.txt | 41 ++++++++++++++++++------ BIN/SH.S.CORE.txt | 47 +++++++++++++++------------- BIN/SH.S.IO.txt | 40 ++++++++++++++++++------ BIN/SH.S.txt | 35 +++++++++++---------- SYS/KERNEL.S.IO.txt | 65 +++++++++++++++++++++++++++------------ SYS/KERNEL.S.STAT.txt | 30 ++++++++++++++---- 8 files changed, 180 insertions(+), 85 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ac3434010197191ec455ebf1f247a61c3bd116c0..b81e708fc758cd405f44661536bf3b50438cf942 100644 GIT binary patch delta 28644 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]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 delta 25368 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 GetMemPtr >STYA ZPPSPtr @@ -119,8 +121,7 @@ CS.RUN.DUMP lda PS.Table.hPS,x >PUSHEA.G PS.FLAGS - >LDA.G PS.Index - tax + plx lda PS.Table.Stats,x >PUSHA CPU% diff --git a/BIN/SH.S.CMD.txt b/BIN/SH.S.CMD.txt index 29259a86..c2cd2c49 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -87,7 +87,7 @@ CMD.CD.1 bcs CMD.POPD.RTS >STYA ZPPtr1 - stx ZPPtr3 Save hMem + stx TmpByte Save hMem ldy #1 lda (ZPPtr1),y @@ -109,7 +109,7 @@ CMD.CD.1 lda #MLI.E.INVPATH .19 pha - lda ZPPtr3 + lda TmpByte >SYSCALL freemem pla sec @@ -126,7 +126,7 @@ CMD.CD.1 cmp #'/' bne .14 - lda ZPPtr3 + lda TmpByte jmp CMD.SetPrefixA already ends with a / .14 iny @@ -149,7 +149,7 @@ CMD.CD.1 lda #'/' sta (ZPPtr2),y phx - lda ZPPtr3 + lda TmpByte >SYSCALL freemem pla *-------------------------------------- @@ -261,6 +261,9 @@ CMD.SET.1 jsr CORE.ArgV.Next beq CMD.SET.UNSET + cmp #'`' + beq CMD.SET.EXEC + jsr EXP.GET bcs .99 @@ -293,6 +296,24 @@ CMD.SET.PRINT >PUSHBI 4 >SYSCALL printf rts *-------------------------------------- +CMD.SET.EXEC jsr CORE.ArgV.NextChar skip "`" + + jsr IO.Pipe.Out + bcs .9 + + >PUSHBI S.PS.F.DUPENV + >LDYA ZPArgVBufPtr + >SYSCALL execl + bcs .9 + + jsr IO.Pipe.In + bcs .9 + + lda #$ff + >STA.G bReadMode + +.9 rts +*-------------------------------------- CMD.DATE sec .HS 90 bcc CMD.TIME clc @@ -316,7 +337,7 @@ CMD.TIME clc rts *-------------------------------------- CMD.ECHO stz ZPPtr1 echo -N - stz ZPPtr1+1 + stz ZPPtr1+1 Token Cnt lda (ZPArgVBufPtr) beq .8 @@ -412,15 +433,17 @@ CMD.READ lda (ZPArgVBufPtr) bra .7 .4 >STYA ZPVarNamePtr - >SYSCALL strdup - txa - >STA.G hVarName + + >LDA.G bReadMode + bne .9 + lda #$ff + >STA.G bReadMode .7 jsr CORE.ArgV.Next lda (ZPArgVBufPtr) bne .1 - >LDA.G hVarName + >LDA.G bReadMode beq .9 clc .99 rts diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index add8855a..93a6dd9b 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -171,15 +171,16 @@ CORE.ExecCmd.1 lda #0 >LDA.G CORE.IntCmd bmi CORE.ExecExtCmd tax - jmp (J.CMD,x) .8 clc rts CORE.ExecExtCmd >PUSHB.G CORE.PSFlags - >LDYA ZPArgVBuf + >LDYA ZPArgVBuf >SYSCALL execv + +CORE.ExecExtCmd.Exit bcs .9 tax CPID @@ -275,33 +276,35 @@ CORE.Lookup >STYA ZPPtr2 CORE.ArgV.Add >LDYA ZPArgVBufPtr >STYA ZPArgVBufPrev Save String start of Expand + lda #C.SPACE + sta TmpByte + jsr CORE.GetCharNB bcs .9 - - ldx #0 reset "" mode - -.1 cmp #'"' - bne .2 - txa - eor #$ff toggle "" mode - tax - bra .4 + cmp #'"' + bne .10 + sta TmpByte + bra .1 -.2 cmp #C.SPACE - bne .3 - txa between "" ? - beq .5 no...exit - lda #C.SPACE - bra .31 +.10 cmp #'`' + bne .11 + sta TmpByte -.3 jsr CORE.IsEndCmd +.11 jsr CORE.ArgV.PutChar + +.1 jsr CORE.GetNextChar + bcs .5 + +.2 jsr CORE.IsEndCmd bcc .5 + cmp TmpByte + beq .5 -.31 jsr CORE.ArgV.PutChar + jsr CORE.ArgV.PutChar .4 jsr CORE.GetNextChar - bcc .1 + bcc .2 .5 lda #0 jsr CORE.ArgV.PutChar @@ -317,11 +320,11 @@ CORE.ArgV.Add >LDYA ZPArgVBufPtr ldy #$ff -.6 iny +.7 iny lda (ZPPtr1),y jsr CORE.ArgV.PutChar lda (ZPPtr1),y - bne .6 + bne .7 pla >SYSCALL freemem diff --git a/BIN/SH.S.IO.txt b/BIN/SH.S.IO.txt index e05a8810..a0ca6935 100644 --- a/BIN/SH.S.IO.txt +++ b/BIN/SH.S.IO.txt @@ -8,15 +8,13 @@ IO.Reset jsr IO.Reset.In jsr IO.Reset.Err rts *-------------------------------------- -IO.Pipe.In clc - rts -*-------------------------------------- -IO.Pipe.Out >SYSCALL pipe - bcs .9 +IO.Pipe.In ldy #S.PS.hStdOut + lda (pPS),y + pha - - clc -.9 rts + jsr IO.Reset.Out + + pla *-------------------------------------- IO.Set.In pha jsr IO.Reset.In @@ -42,7 +40,31 @@ IO.Reset.In >LDA.G IO.hIn sta (pPS),y >STZ.G IO.hIn -.8 rts +.8 clc +IO.Reset.In.RTS rts +*-------------------------------------- +IO.Pipe.Out >SYSCALL pipe + bcs IO.Reset.In.RTS + >STA.G IO.hPipe + + >PUSHA + >PUSHBI 1 + >PUSHW L.NOD.Template + >LEA.G IO.NodBuf + >SYSCALL sprintf + + >PUSHB.G IO.hPipe + >PUSHW 0 + >LEA.G IO.NodBuf + >SYSCALL mknod + bcc IO.Set.Out + + pha + >LDA.G IO.hPipe + >SYSCALL close + pla + dec + rts *-------------------------------------- IO.Set.Out pha jsr IO.Reset.Out diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index 45cc9970..76f3b163 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -57,9 +57,6 @@ E.BADFTYPE .EQ $C8 .DUMMY .OR ZPBIN ZS.START -ZPPtr1 .BS 2 -ZPPtr2 .BS 2 -ZPPtr3 .BS 2 ZPCLBuf .BS 2 ZPInputBuf .BS 2 ZPInputBufPtr .BS 2 @@ -68,6 +65,9 @@ ZPArgVBuf .BS 2 ZPArgVBufPrev .BS 2 ZPArgVBufPtr .BS 2 ZPVarNamePtr .BS 2 +ZPPtr1 .BS 2 +ZPPtr2 .BS 2 +TmpByte .BS 1 ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -166,6 +166,7 @@ L.HOME.PROFILE .DA HOME.PROFILE L.M32.Printf .DA M32.Printf L.ERR.Codes .DA ERR.Codes L.ERR.Messages .DA ERR.Messages +L.NOD.Template .DA NOD.Template .DA 0 *-------------------------------------- CS.INIT clc @@ -221,7 +222,7 @@ CS.RUN jsr CL.Init >SYSCALL execl >SLEEP *-------------------------------------- -CS.RUN.LOOP jsr IO.Reset +CS.RUN.LOOP .1 jsr CheckSleep beq .3 @@ -270,7 +271,7 @@ CS.RUN.LOOP jsr IO.Reset .61 >STZ.G bPause bra .62 -.6 >LDA.G hVarName read mode ? +.6 >LDA.G bReadMode read mode ? bne .7 .62 >LDA.G bBatchMode batch mode ? @@ -283,6 +284,7 @@ CS.RUN.LOOP jsr IO.Reset rts *-------------------------------------- CS.RUN.INTERACTIVE + jsr IO.Reset jsr CL.Reset jsr CL.PrintPrompt bcs .9 @@ -335,24 +337,19 @@ CS.RUN.READ jsr CL.RESET lda (ZPCLBuf) bne .2 - >LDA.G hVarName - >SYSCALL GetMemPtr + >LDYA ZPVarNamePtr >SYSCALL UnSetEnv bra .7 .2 >PUSHW ZPCLBuf - >LDA.G hVarName - >SYSCALL GetMemPtr + >LDYA ZPVarNamePtr >SYSCALL SetEnv .7 php pha - >LDA.G hVarName - >SYSCALL freemem - - >STZ.G hVarName + >STZ.G bReadMode >STA.G bREAD.S pla @@ -360,7 +357,9 @@ CS.RUN.READ jsr CL.RESET .8 jmp CS.RUN.LOOP.END *-------------------------------------- -CS.RUN.BATCH >SYSCALL GetChar +CS.RUN.BATCH jsr IO.Reset + + >SYSCALL GetChar bcs .2 cmp #3 test Ctrl-c @@ -618,6 +617,7 @@ EXP.OP.MATH .AZ "+" *-------------------------------------- EscChars .AS 'DBAC' EscChars.Cnt .EQ *-EscChars +NOD.Template .AZ "/DEV/PIPE%h" M32.Printf .AZ "%L" *-------------------------------------- .DUMMY @@ -626,9 +626,9 @@ DS.START CORE.STACK .BS CORE.STACK.MAX+1 pData (0 = Stack Ptr) PUSHD.STACK .BS PUSHD.STACK.MAX+1 -hInputBuf .BS 1 batch mode -hVarName .BS 1 read mode +hInputBuf .BS 1 +bReadMode .BS 1 bBatchMode .BS 1 bEscMode .BS 1 @@ -664,6 +664,9 @@ HIS.Index .BS 1 IO.hIn .BS 1 IO.hOut .BS 1 IO.hErr .BS 1 +IO.hPipe .BS 1 +IO.NodBuf +* .BS 12 /DEV/PIPExx\0 *-------------------------------------- M32.BUF .BS 12 -1234567890\0 M32.ACC .BS 4 diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index f4656c26..7d3f673b 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -361,62 +361,87 @@ IO.READ.SSOCK ldy #S.FD.SSOCK.READ .1 jmp $FFFF SELF MODIFIED *-------------------------------------- -IO.READ.PIPE >PULLW K.S.IOCTL+S.IOCTL.BUFPTR +IO.READ.PIPE >PULLW .3+1 S.IOCTL.BUFPTR >PULLW K.S.IOCTL+S.IOCTL.BYTECNT - ldy #S.FD.PIPE.S - lda (pFD),y - bit #S.FD.PIPE.S.WOpened - beq .9 Remote PS did not opened yet the pipe - bit #S.FD.PIPE.S.WClosed - beq .99 Remote PS closed the Pipe +* ldy #S.FD.PIPE.S +* lda (pFD),y +* bit #S.FD.PIPE.S.WOpened +* beq .9 Remote PS did not opened yet the pipe +* bit #S.FD.PIPE.S.WClosed +* beq .99 Remote PS closed the Pipe ldy #S.FD.PIPE.hMem lda (pFD),y jsr K.GetMemPtr + >STYA .2+1 + + ldx #0 + +.1 ldy #S.FD.PIPE.Tail + lda (pFD),y + iny #S.FD.PIPE.Head + cmp (pFD),y + beq .9 PIPE is empty + +.2 lda $ffff,x SELF MODIFIED +.3 sta $ffff,x SELF MODIFIED + inx + bne .1 + clc rts -.9 lda #MLI.E.VOLFULL +.9 lda #0 sec rts + .99 lda #MLI.E.EOF sec rts *-------------------------------------- -IO.WRITE.PIPE >PULLW K.S.IOCTL+S.IOCTL.BUFPTR +IO.WRITE.PIPE >PULLW .2+1 S.IOCTL.BUFPTR >PULLW K.S.IOCTL+S.IOCTL.BYTECNT - ldy #S.FD.PIPE.S - lda (pFD),y - bit #S.FD.PIPE.S.ROpened - beq .9 Remote PS did not opened yet the pipe - bit #S.FD.PIPE.S.RClosed - beq .99 Remote PS closed the Pipe +* ldy #S.FD.PIPE.S +* lda (pFD),y +* bit #S.FD.PIPE.S.ROpened +* beq .9 Remote PS did not opened yet the pipe +* bit #S.FD.PIPE.S.RClosed +* beq .99 Remote PS closed the Pipe ldy #S.FD.PIPE.hMem lda (pFD),y jsr K.GetMemPtr - >STYA .1+2 + >STYA .3+1 - ldy #S.FD.PIPE.Head + ldx #0 + +.1 ldy #S.FD.PIPE.Head lda (pFD),y inc dey #S.FD.PIPE.Tail cmp (pFD),y beq .9 PIPE is full + iny sta (pFD),y tay - lda K.IOBuf -.1 sta $ffff,y - clc + +.2 lda $ffff,x SELF MODIFIED +.3 sta $ffff,x SELF MODIFIED + + inx + bne .1 + +.8 clc rts .9 lda #MLI.E.VOLFULL sec rts + .99 lda #MLI.E.EOF sec rts diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index 9467b3dc..ced029e9 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -210,7 +210,7 @@ K.MkNod >STYA ZPPtr1 pathname >PULLW K.S.STAT+S.STAT.MODE >PULLB K.S.STAT+S.STAT.DEV - ldx #0 +K.MkNod.I ldx #0 .1 lda Nod.Table.hFD,x beq .2 @@ -243,17 +243,33 @@ K.MkNod >STYA ZPPtr1 pathname * # MKFIFO * return a hFILE to a new FIFO * ## C -* `hFILE mkfifo(const char *pathname, int mode);` +* `hFILE mkfifo();` * ## ASM * **In:** -* `>PUSHW mode` -* `>LDYA pathname` * `>SYSCALL mkfifo` * ## RETURN VALUE * CC = OK, CS = ERROR * A = hFILE *\-------------------------------------- -K.MKFIFO sec +K.MKFIFO +* jsr K.pipe +* bcs .9 + +* sta K.S.STAT+S.STAT.DEV +* stz K.S.STAT+S.STAT.MODE +* stz K.S.STAT+S.STAT.MODE+1 + +* >LDYA STAT.PipeFn +* >STYA ZPPtr1 +* jsr K.MkNod.I +* bcc .9 + +* pha +* lda K.S.STAT+S.STAT.DEV +* jsr K.Close +* pla + sec + rts */-------------------------------------- * # pipe @@ -287,7 +303,7 @@ K.Pipe >LDYAI K.PIPE.SIZE .1 lda #$ff Self Modified sta (pFD),y txa - clc +* clc rts .9 pha save error code @@ -298,6 +314,8 @@ K.Pipe >LDYAI K.PIPE.SIZE .99 rts *-------------------------------------- +*STAT.PipeFn .AZ "/DEV/PIPE00" +*-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.STAT LOAD USR/SRC/SYS/KERNEL.S