From b7a46da3a6efbbeea104d6e16d85bc4ccb2fe3c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 19 Jun 2018 07:55:12 +0200 Subject: [PATCH] Kernel 0.9.2 --- SYS/KERNEL.S.DRV.txt | 6 ++-- SYS/KERNEL.S.IO.txt | 76 +++++++++++++++++++++++++++++++++++++++- SYS/KERNEL.S.STDIO.txt | 79 +----------------------------------------- 3 files changed, 79 insertions(+), 82 deletions(-) diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index aa43609d..0c11944d 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -3,7 +3,7 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *-------------------------------------- * A2osX.DIIDrv -* X = DEVMGR.cmd +* X = IOCTL * Y,A = PTR to Params * pDev -> Dev Header AUX!!! * $42 Command Number @@ -63,7 +63,7 @@ A2osx.DII.Stat .DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ .DA #0,#91 *-------------------------------------- * A2osX.RamDrv -* X = DEVMGR.cmd +* X = IOCTL * Y,A = PTR to Params * pDev -> Dev Header AUX!!! * $42 Command Number @@ -110,7 +110,7 @@ A2osx.RamDrv.Stat .DA #0,#91 *-------------------------------------- * A2osX.BlkDrv -* X = DEVMGR.cmd +* X = IOCTL * Y,A = PTR to Params * pDev -> Dev Header * $42 Command Number diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index ee5fbd18..05ed7021 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -2,8 +2,82 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *-------------------------------------- +IO.COut ldy #S.NODE.T + lda (pNode),y + asl + tax +*-------------------------------------- + jmp (.1,x) +.1 .DA STDIO.Out.REG + .DA STDIO.IOERR DIR + .DA STDIO.Out.CDEV + .DA STDIO.IOERR BDEV + .DA STDIO.IOERR LNK + .DA STDIO.IOERR DSOCK + .DA STDIO.Out.SSOCK + .DA STDIO.Out.FIFO +*-------------------------------------- +IO.COut.REG >PUSHW pIOBuf + >PUSHW STDIO.Out.Cnt + ldy #S.NODE.REG.REF + >PUSHB (pNode),y - + jmp K.FWrite +*-------------------------------------- +IO.COut.CDEV ldy #S.NODE.DEV.JMP + lda (pNode),y + sta .1+1 + iny + lda (pNode),y + sta .1+2 + + lda K.IOBuf + ldx #IOCTL.WRITE +.1 jmp $ffff +*-------------------------------------- +IO.COut.SSOCK lda (pNode) #S.NODE.HANDLER + jsr K.GetMemPtr.A + >STYA .1 + + ldy #S.NODE.SSOCK.HSKT + >PUSHB (pNode),y + >PUSHB K.IOBuf + + ldy #S.NODE.SSOCK.WRITE + lda (pNode),y + tax Function Offset for write +.1 jmp $ffff +*-------------------------------------- +IO.COut.FIFO ldy #S.NODE.FIFO.S + lda (pNode),y + beq .9 Remote PS did not opened yet the pipe + cmp #S.NODE.FIFO.S.Closed + beq .99 Remote PS closed the Pipe + + ldy #S.NODE.FIFO.hMem + lda (pNode),y + jsr K.GetMemPtr.A + >STYA .1+2 + + ldy #S.NODE.FIFO.Head + lda (pNode),y + inc + dey #S.NODE.FIFO.Tail + cmp (pNode),y + beq .9 FIFO is full + iny + sta (pNode),y + tay + lda K.IOBuf +.1 sta $ffff,y + clc + rts + +.9 lda #MLI.E.VOLFULL + .HS 2C bit abs +.99 lda #MLI.E.EOF + sec + rts *-------------------------------------- MAN SAVE /A2OSX.SRC/SYS/KERNEL.S.IO diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 95a289e3..78bda4bf 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -54,6 +54,7 @@ K.PutChar.1 jsr K.GetMemPtr.A * CC = success *\-------------------------------------- K.PutS >STYA pIOBuf + ldy #S.PS.hStdOut lda (pPs),y jsr K.FPutS.1 @@ -575,84 +576,6 @@ PrintF.COut phy .8 ply clc rts -*-------------------------------------- -*-------------------------------------- -STDIO.Out ldy #S.NODE.T - lda (pNode),y - asl - tax -*-------------------------------------- - jmp (.1,x) -.1 .DA STDIO.Out.REG - .DA STDIO.IOERR DIR - .DA STDIO.Out.CDEV - .DA STDIO.IOERR BDEV - .DA STDIO.IOERR LNK - .DA STDIO.IOERR DSOCK - .DA STDIO.Out.SSOCK - .DA STDIO.Out.FIFO -*-------------------------------------- -STDIO.Out.REG >PUSHW pIOBuf - >PUSHW STDIO.Out.Cnt - ldy #S.NODE.REG.REF - >PUSHB (pNode),y - - jmp K.FWrite -*-------------------------------------- -STDIO.Out.CDEV ldy #S.NODE.DEV.JMP - lda (pNode),y - sta .1+1 - iny - lda (pNode),y - sta .1+2 - - lda K.IOBuf - ldx #IOCTL.WRITE -.1 jmp $ffff -*-------------------------------------- -STDIO.Out.SSOCK lda (pNode) #S.NODE.HANDLER - jsr K.GetMemPtr.A - >STYA .1 - - ldy #S.NODE.SSOCK.HSKT - >PUSHB (pNode),y - >PUSHB K.IOBuf - - ldy #S.NODE.SSOCK.WRITE - lda (pNode),y - tax Function Offset for write -.1 jmp $ffff -*-------------------------------------- -STDIO.Out.FIFO ldy #S.NODE.FIFO.S - lda (pNode),y - beq .9 Remote PS did not opened yet the pipe - cmp #S.NODE.FIFO.S.Closed - beq .99 Remote PS closed the Pipe - - ldy #S.NODE.FIFO.hMem - lda (pNode),y - jsr K.GetMemPtr.A - >STYA .1+2 - - ldy #S.NODE.FIFO.Head - lda (pNode),y - inc - dey #S.NODE.FIFO.Tail - cmp (pNode),y - beq .9 FIFO is full - iny - sta (pNode),y - tay - lda K.IOBuf -.1 sta $ffff,y - clc - rts - -.9 lda #MLI.E.VOLFULL - .HS 2C bit abs -.99 lda #MLI.E.EOF - sec - rts */-------------------------------------- * # GetChar * Get char from StdIn