NEW PREFIX /A2OSX.BUILD AUTO 4,1 *-------------------------------------- * int open(const char *pathname, int flags); *-------------------------------------- IO.OPEN jsr IO.SELECT *-------------------------------------- * int close(int fd); *-------------------------------------- IO.CLOSE *-------------------------------------- * int read(int fd, void *buf, size_t count); *-------------------------------------- IO.READ *-------------------------------------- * int write(int fd, const void *buf, size_t count); *-------------------------------------- IO.WRITE lda (pFD) #S.FD.T tax *-------------------------------------- jmp (.1,x) .1 .DA IO.WRITE.REG .DA STDIO.IOERR DIR .DA IO.WRITE.CDEV .DA STDIO.IOERR BDEV .DA STDIO.IOERR LNK .DA STDIO.IOERR DSOCK .DA IO.WRITE.SSOCK .DA IO.WRITE.FIFO *-------------------------------------- IO.WRITE.REG >PUSHW K.S.IOCTL+S.IOCTL.BUFPTR >PUSHW K.S.IOCTL+S.IOCTL.BYTECNT ldy #S.FD.REG.REF >PUSHB (pFD),y jmp K.FWrite *-------------------------------------- IO.WRITE.CDEV ldy #S.FD.DEV.DRVPTR lda (pFD),y sta .1+1 iny lda (pFD),y sta .1+2 lda K.IOBuf ldx #IOCTL.WRITE .1 jmp $ffff *-------------------------------------- IO.WRITE.SSOCK lda (pFD) #S.FD.HANDLER jsr K.GetMemPtr >STYA .1 ldy #S.FD.SSOCK.HSKT >PUSHB (pFD),y >PUSHB K.IOBuf ldy #S.FD.SSOCK.WRITE lda (pFD),y tax Function Offset for write .1 jmp $ffff *-------------------------------------- IO.WRITE.FIFO ldy #S.FD.FIFO.S lda (pFD),y beq .9 Remote PS did not opened yet the pipe cmp #S.FD.FIFO.S.Closed beq .99 Remote PS closed the Pipe ldy #S.FD.FIFO.hMem lda (pFD),y jsr K.GetMemPtr >STYA .1+2 ldy #S.FD.FIFO.Head lda (pFD),y inc dey #S.FD.FIFO.Tail cmp (pFD),y beq .9 FIFO is full iny sta (pFD),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 *-------------------------------------- IO.SELECT jsr K.GetMemPtr >STYA pFD rts *-------------------------------------- MAN SAVE /A2OSX.SRC/SYS/KERNEL.S.IO LOAD /A2OSX.SRC/SYS/KERNEL.S ASM