A2osX/SYS/KERNEL.S.IO.txt
2018-07-10 17:33:13 +02:00

102 lines
2.4 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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