A2osX/SYS/KERNEL.S.IO.txt

102 lines
2.4 KiB
Plaintext
Raw Normal View History

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