Kernel 0.92+

This commit is contained in:
Rémy GIBERT 2019-02-22 13:34:06 +00:00
parent 4b3ea14c44
commit d70b2d90df
5 changed files with 117 additions and 59 deletions

Binary file not shown.

Binary file not shown.

View File

@ -4,7 +4,7 @@ AUTO 4,1
*--------------------------------------
K.VER .EQ $5C00 92.0
K.ENV.SIZE .EQ 256
K.PIPE.SIZE .EQ 512
K.PIPE.SIZE .EQ 256
*--------------------------------------
K.MEM.ALIGN .EQ 16
K.MEM.nALIGNm1 .EQ $F0
@ -474,11 +474,11 @@ S.FD.PIPE.S .EQ 2
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.Free .EQ 8
S.FD.PIPE.Used .EQ 10
S.FD.PIPE.Head .EQ 5
S.FD.PIPE.Free .EQ 6
S.FD.PIPE.Used .EQ 8
*
S.FD.PIPE .EQ 12
S.FD.PIPE .EQ 10
*--------------------------------------
* PS STRUCT
*--------------------------------------

View File

@ -88,8 +88,8 @@ K.ReadDir jsr PFT.CheckNodeA
jmp K.ReadDir.DIR
K.ReadDir.NoMore
lda #0
sec CS,A=0 no more entry
lda #MLI.E.EOF
sec
K.ReadDir.RTS rts
*--------------------------------------
K.ReadDir.ROOT

View File

@ -352,6 +352,9 @@ IO.WRITE.REG ldx #MLIWRITE
>LDYA K.MLI.PARAMS+6
.9 rts
*--------------------------------------
* (pStack)+2 count
* (pStack)+0 buf
*--------------------------------------
IO.READ.CDEV ldx #IOCTL.READ
.HS 2C BIT ABS
*--------------------------------------
@ -385,69 +388,113 @@ IO.READ.SSOCK ldy #S.FD.SSOCK.READ
.1 jmp $FFFF SELF MODIFIED
*--------------------------------------
IO.READ.PIPE >PULLW .3+1 S.IOCTL.BUFPTR
>PULLA S.IOCTL.BYTECNT.LO
* (pStack)+2 count
* (pStack)+0 buf
*--------------------------------------
IO.READ.PIPE ldy #S.FD.PIPE.S
lda (pFD),y
bne .11
jmp IO.READ.PIPE.99 Remote PS closed the Pipe
.11 ldy #S.FD.PIPE.Used+1
lda (pFD),y
tax
dey
ora (pFD),y
bne .10
* lda #0 BLOCKING I/O
sec
rts
.10 >PULLW .3+1 get buf
>PULLA get cnt lo
eor #$ff
sta IO.Counter
>PULLA S.IOCTL.BYTECNT.HI
>PULLA get cnt hi
eor #$ff
sta IO.Counter+1
ldy #S.FD.PIPE.S
lda (pFD),y
beq .99 Remote PS closed the Pipe
ldy #S.FD.PIPE.hMem
lda (pFD),y
jsr K.GetMemPtr
>STYA .2+1
ldy #S.FD.PIPE.Head
lda (pFD),y
sta .4+1
dey S.FD.PIPE.Tail
lda (pFD),y
tay
ldx #0
.1 inc IO.Counter
bne .11
bne .2
inc IO.Counter+1
beq .8
.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,y SELF MODIFIED
.3 sta $ffff,x SELF MODIFIED
inx
bne .1
.8 txa
tay
lda #0 Y,A = bytes read
beq .5
iny
.4 cpy #$ff SELF MODIFIED
bne .1
.5 sec moved $100 bytes
.HS 90 BCC
.8 clc
lda #0
ror
sta IO.Counter+1
stx IO.Counter
tya
ldy #S.FD.PIPE.Tail
sta (pFD),y
txa
ldy #S.FD.PIPE.Free
clc
adc (pFD),y
sta (pFD),y
iny
lda IO.Counter+1
adc (pFD),y
sta (pFD),y
ldy #S.FD.PIPE.Used
sec
lda (pFD),y
sbc IO.Counter
sta (pFD),y
iny
lda (pFD),y
sbc IO.Counter+1
sta (pFD),y
ldy IO.Counter
lda IO.Counter+1 Y,A = bytes read
clc
rts
.9 lda #0
IO.READ.PIPE.99 lda #MLI.E.EOF
sec
rts
.99 lda #MLI.E.EOF
sec
rts
>RET 4
*--------------------------------------
* (pStack)+0 buf
* (pStack)+2 count
* (pStack)+0 buf
*--------------------------------------
IO.WRITE.PIPE ldy #S.FD.PIPE.S
lda (pFD),y
beq .99 Remote PS closed the Pipe
beq IO.READ.PIPE.99 Remote PS closed the Pipe
sec
ldy #S.FD.PIPE.Free
@ -468,18 +515,19 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
txa
sta (pFD),y store new Free
clc
ldy #2
lda (pStack),y
>PULLW .2+1 get buf
>PULLA get cnt lo
pha
eor #$ff
sta IO.Counter
pla
ldy #S.FD.PIPE.Used
clc
adc (pFD),y
sta (pFD),y
ldy #3
lda (pStack),y
>PULLA get cnt hi
pha
eor #$ff
sta IO.Counter+1
@ -487,39 +535,49 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
ldy #S.FD.PIPE.Used+1
adc (pFD),y
sta (pFD),y
lda (pStack)
sta .2+1
ldy #1
lda (pStack),y
sta .2+2
ldy #S.FD.PIPE.hMem
lda (pFD),y
jsr K.GetMemPtr
>STYA .3+1
ldy #S.FD.PIPE.Head
lda (pFD),y
tay
ldx #0
.1 inc IO.Counter
bne .2
inc IO.Counter+1
beq .8
.2 lda $ffff,x SELF MODIFIED
.3 sta $ffff,y SELF MODIFIED
iny
inx
bne .1
.8 txa
sec moved $100 bytes
.HS 90 BCC
.8 clc
tya
ldy #S.FD.PIPE.Head
sta (pFD),y
txa
tay
lda #0 Y,A = bytes written
clc
>RET 4
rol
* clc
rts
.9 lda #0 BLOCKING I/O
sec
rts
.99 lda #MLI.E.EOF
sec
>RET 4
*/--------------------------------------
* # IOCTL
* ## C