diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index b81e708f..7c6a6535 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/PS.S.txt b/BIN/PS.S.txt index 3e1c03cf..cfd265cd 100644 --- a/BIN/PS.S.txt +++ b/BIN/PS.S.txt @@ -76,8 +76,9 @@ CS.RUN lda #1 sec rts -.10 >LDYA L.MSG0 - >SYSCALL puts +.10 >PUSHBI 0 + >LDYA L.MSG0 + >SYSCALL printf >LDA.G PS.Index @@ -200,8 +201,8 @@ CS.QUIT clc rts *-------------------------------------- CS.END -MSG0 .AZ "ID CPU% Flags UID PID Command Line" -MSG1 .AZ "\e[7l%03d %03d\% %s %03d %03d" +MSG0 .AZ "\e[7lID CPU% Flags UID PID Command Line" +MSG1 .AZ "%03d %3d\% %s %03d %03d" MSG2 .AZ " %s" MSG3 .AZ "\r\n" MSG.FLAGS .AS "IRQDHSed" diff --git a/BIN/SH.S.CL.txt b/BIN/SH.S.CL.txt index 6ea2676d..74eb0189 100644 --- a/BIN/SH.S.CL.txt +++ b/BIN/SH.S.CL.txt @@ -77,17 +77,11 @@ CL.CHARIN tax rts *-------------------------------------- CL.CHARIN.CTRL cpx #C.CR - bne .10 + beq .18 - >PUSHBI 0 - >LDYA L.MSG.ECHOCRLF - >SYSCALL printf + cpx #C.EOF + beq .18 - lda #$ff - >STA.G CL.bReady - clc - rts - .10 cpx #C.ESC bne .11 @@ -106,6 +100,9 @@ CL.CHARIN.CTRL cpx #C.CR jmp CL.SUPPR +.18 lda #$ff + >STA.G CL.bReady + .13 clc rts *-------------------------------------- @@ -136,8 +133,11 @@ CL.Insert >LDA.G CL.Len >LDA.G bREAD.S bpl .2 - ldx #'*' + >INC.G CL.Ptr + clc + rts + .2 txa >SYSCALL PutChar diff --git a/BIN/SH.S.CMD.txt b/BIN/SH.S.CMD.txt index c2cd2c49..f089c304 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -305,13 +305,15 @@ CMD.SET.EXEC jsr CORE.ArgV.NextChar skip "`" >LDYA ZPArgVBufPtr >SYSCALL execl bcs .9 - jsr IO.Pipe.In bcs .9 lda #$ff + >STA.G bREAD.S secret >STA.G bReadMode + >SLEEP + clc .9 rts *-------------------------------------- CMD.DATE sec diff --git a/BIN/SH.S.IO.txt b/BIN/SH.S.IO.txt index a0ca6935..eaf1b3c6 100644 --- a/BIN/SH.S.IO.txt +++ b/BIN/SH.S.IO.txt @@ -12,7 +12,12 @@ IO.Pipe.In ldy #S.PS.hStdOut lda (pPS),y pha - jsr IO.Reset.Out + >LDA.G IO.hOut + + ldy #S.PS.hStdOut + sta (pPS),y + + >STZ.G IO.hOut pla *-------------------------------------- @@ -54,16 +59,27 @@ IO.Pipe.Out >SYSCALL pipe >SYSCALL sprintf >PUSHB.G IO.hPipe - >PUSHW 0 + >PUSHWI 0 >LEA.G IO.NodBuf >SYSCALL mknod + bcs .99 + + >PUSHWI 0 auxtype + >PUSHBI 0 type + >PUSHBI O.RDWR + >LEA.G IO.NodBuf + + >SYSCALL fopen bcc IO.Set.Out pha + pla + +.99 pha >LDA.G IO.hPipe >SYSCALL close pla - dec + sec rts *-------------------------------------- IO.Set.Out pha @@ -83,6 +99,7 @@ IO.Reset.Out >LDA.G IO.hOut ldy #S.PS.hStdOut lda (pPS),y + >SYSCALL fclose pla diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index 76f3b163..5061d86e 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -327,14 +327,17 @@ CS.RUN.READ jsr CL.RESET .1 >SLEEP >SYSCALL GetChar - bcs .1 no char - - jsr CL.CHARIN + bcc .11 + + tay + beq .1 + +.11 jsr CL.CHARIN >LDA.G CL.bReady bpl .1 - lda (ZPCLBuf) +.12 lda (ZPCLBuf) bne .2 >LDYA ZPVarNamePtr diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index d66f47e2..9951d97a 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -467,15 +467,12 @@ S.FD.SSOCK.STATUS .EQ 7 S.FD.SSOCK .EQ 8 *-------------------------------------- S.FD.PIPE.S .EQ 2 -S.FD.PIPE.S.ROpened .EQ %00000001 -S.FD.PIPE.S.RClosed .EQ %00000010 -S.FD.PIPE.S.WOpened .EQ %00000100 -S.FD.PIPE.S.WClosed .EQ %00001000 +S.FD.PIPE.S.Opened .EQ %10000000 S.FD.PIPE.hMem .EQ 3 S.FD.PIPE.Tail .EQ 4 -S.FD.PIPE.Head .EQ 6 +S.FD.PIPE.Head .EQ 5 * -S.FD.PIPE .EQ 8 +S.FD.PIPE .EQ 6 *-------------------------------------- * PS STRUCT *-------------------------------------- diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 7d3f673b..ac55fbdf 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -18,6 +18,7 @@ K.Open.FLAGS .BS 1 K.Open.TYPE .BS 1 K.Open.AUXTYPE .BS 2 IO.hFD .BS 1 +IO.Counter .BS 2 *-------------------------------------- K.Open jsr PFT.YAToMLIPATH >PULLB K.Open.FLAGS @@ -234,7 +235,7 @@ IO.CLOSE.DIR ldy #S.FD.REG.REF >MLICALL MLICLOSE .1 ldy #S.FD.REG.IOBUF - lda (pFD),y +IO.CLOSE.FD lda (pFD),y beq .2 jsr K.FreeMem @@ -246,10 +247,11 @@ IO.CLOSE.CDEV IO.CLOSE.BDEV *-------------------------------------- IO.CLOSE.DSOCK -IO.CLOSE.SSOCK -*-------------------------------------- -IO.CLOSE.PIPE clc +IO.CLOSE.SSOCK clc rts +*-------------------------------------- +IO.CLOSE.PIPE ldy #S.FD.PIPE.hMem + bra IO.CLOSE.FD */-------------------------------------- * # read * ## C @@ -362,14 +364,16 @@ IO.READ.SSOCK ldy #S.FD.SSOCK.READ .1 jmp $FFFF SELF MODIFIED *-------------------------------------- IO.READ.PIPE >PULLW .3+1 S.IOCTL.BUFPTR - >PULLW K.S.IOCTL+S.IOCTL.BYTECNT + >PULLA S.IOCTL.BYTECNT.LO + eor #$ff + sta IO.Counter + >PULLA S.IOCTL.BYTECNT.HI + eor #$ff + sta IO.Counter+1 -* 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 + beq .99 Remote PS closed the Pipe ldy #S.FD.PIPE.hMem lda (pFD),y @@ -377,18 +381,33 @@ IO.READ.PIPE >PULLW .3+1 S.IOCTL.BUFPTR >STYA .2+1 ldx #0 + +.1 inc IO.Counter + bne .11 + inc IO.Counter+1 + beq .8 -.1 ldy #S.FD.PIPE.Tail +.11 ldy #S.FD.PIPE.Tail lda (pFD),y iny #S.FD.PIPE.Head cmp (pFD),y beq .9 PIPE is empty + + pha + inc + dey #S.FD.PIPE.Tail + sta (pFD),y + ply -.2 lda $ffff,x SELF MODIFIED +.2 lda $ffff,y SELF MODIFIED .3 sta $ffff,x SELF MODIFIED inx bne .1 + +.8 txa + tay + lda #0 Y,A = bytes read clc rts @@ -397,19 +416,21 @@ IO.READ.PIPE >PULLW .3+1 S.IOCTL.BUFPTR sec rts -.99 lda #MLI.E.EOF +.99 lda #C.EOF sec rts *-------------------------------------- IO.WRITE.PIPE >PULLW .2+1 S.IOCTL.BUFPTR - >PULLW K.S.IOCTL+S.IOCTL.BYTECNT + >PULLA S.IOCTL.BYTECNT.LO + eor #$ff + sta IO.Counter + >PULLA S.IOCTL.BYTECNT.HI + eor #$ff + sta IO.Counter+1 -* 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 + beq .99 Remote PS closed the Pipe ldy #S.FD.PIPE.hMem lda (pFD),y @@ -418,31 +439,40 @@ IO.WRITE.PIPE >PULLW .2+1 S.IOCTL.BUFPTR ldx #0 -.1 ldy #S.FD.PIPE.Head +.1 inc IO.Counter + bne .11 + inc IO.Counter+1 + beq .8 + +.11 ldy #S.FD.PIPE.Head lda (pFD),y inc dey #S.FD.PIPE.Tail cmp (pFD),y beq .9 PIPE is full - iny + iny #S.FD.PIPE.Head sta (pFD),y + dec tay .2 lda $ffff,x SELF MODIFIED -.3 sta $ffff,x SELF MODIFIED +.3 sta $ffff,y SELF MODIFIED inx bne .1 -.8 clc +.8 txa + tay + lda #0 Y,A = bytes written + clc rts .9 lda #MLI.E.VOLFULL sec rts -.99 lda #MLI.E.EOF +.99 lda #C.EOF sec rts */-------------------------------------- diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index ced029e9..78cf2ac0 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -295,8 +295,11 @@ K.Pipe >LDYAI K.PIPE.SIZE >STYA pFD - ldy #S.FD.T lda #S.FD.T.PIPE + sta (pFD) + + ldy #S.FD.PIPE.S + lda #S.FD.PIPE.S.Opened sta (pFD),y iny S.FD.PIPE.hMem diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 1521c603..52567627 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -1313,18 +1313,22 @@ STDIO.NewHFile sta .4+1 Store hFD * sec rts -.2 lda (pFD) +.2 stx .3+1 Store hFILE + + lda (pFD) cmp #S.FD.T.CDEV - bcc .21 REG or DIR....store path + beq .20 - stz OF.Table.hPath,x STZ path for SPECIAL files - bra .4 + cmp #S.FD.T.BDEV + bne .21 -.21 stx .3+1 Store hFILE +.20 lda #0 No hPath for DEV + bra .3 - >LDYAI K.buf256 +.21 >LDYAI K.buf256 >SYSCALL strdup bcs .9 + txa .3 ldx #$ff SELF MODIFIED