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.VER .EQ $5C00 92.0
K.ENV.SIZE .EQ 256 K.ENV.SIZE .EQ 256
K.PIPE.SIZE .EQ 512 K.PIPE.SIZE .EQ 256
*-------------------------------------- *--------------------------------------
K.MEM.ALIGN .EQ 16 K.MEM.ALIGN .EQ 16
K.MEM.nALIGNm1 .EQ $F0 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.S.Opened .EQ %10000000
S.FD.PIPE.hMem .EQ 3 S.FD.PIPE.hMem .EQ 3
S.FD.PIPE.Tail .EQ 4 S.FD.PIPE.Tail .EQ 4
S.FD.PIPE.Head .EQ 6 S.FD.PIPE.Head .EQ 5
S.FD.PIPE.Free .EQ 8 S.FD.PIPE.Free .EQ 6
S.FD.PIPE.Used .EQ 10 S.FD.PIPE.Used .EQ 8
* *
S.FD.PIPE .EQ 12 S.FD.PIPE .EQ 10
*-------------------------------------- *--------------------------------------
* PS STRUCT * PS STRUCT
*-------------------------------------- *--------------------------------------

View File

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

View File

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