Kernel 0.92+

This commit is contained in:
Rémy GIBERT 2019-02-21 22:03:08 +00:00
parent c5ee866919
commit 3334085260
5 changed files with 67 additions and 34 deletions

Binary file not shown.

View File

@ -202,12 +202,16 @@ EXP.TEST.BINARY >LDA.G CORE.Operator
lda #$80
>STA.G CORE.Operator
.1 jsr CORE.ArgV.Next
.1 >LDYA ZPArgVBufPrev
>STYA ZPPtr1
jsr CORE.ArgV.Next
beq .9
>PUSHW ZPArgVBufPrev
>PUSHW ZPPtr1
>LDYA ZPArgVBufPtr
>SYSCALL strcmp
ror CS if !=
and #$80
eor #$80

View File

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

View File

@ -445,41 +445,61 @@ IO.READ.PIPE >PULLW .3+1 S.IOCTL.BUFPTR
* (pStack)+0 buf
* (pStack)+2 count
*--------------------------------------
IO.WRITE.PIPE >PULLW .2+1 S.IOCTL.BUFPTR
>PULLA S.IOCTL.BYTECNT.LO
eor #$ff
sta IO.Counter
>PULLA S.IOCTL.BYTECNT.HI
eor #$ff
sta IO.Counter+1
ldy #S.FD.PIPE.S
IO.WRITE.PIPE ldy #S.FD.PIPE.S
lda (pFD),y
beq .99 Remote PS closed the Pipe
sec
ldy #S.FD.PIPE.Free
lda (pFD),y
ldy #2
sbc (pStack),y
tax
ldy #S.FD.PIPE.Free+1
lda (pFD),y
ldy #3
sbc (pStack),y
bcc .9 not enough room in PIPE
ldy #S.FD.PIPE.Free+1
sta (pFD),y
dey
txa
sta (pFD),y store new Free
clc
ldy #2
lda (pStack),y
pha
eor #$ff
sta IO.Counter
pla
ldy #S.FD.PIPE.Used
adc (pFD),y
sta (pFD),y
ldy #3
lda (pStack),y
pha
eor #$ff
sta IO.Counter+1
pla
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
ldx #0
.1 inc IO.Counter
bne .11
inc IO.Counter+1
beq .8
.11 ldy #S.FD.PIPE.Head
lda (pFD),y
inc
dey #S.FD.PIPE.Tail
cmp (pFD),y
beq .9 PIPE is full
iny #S.FD.PIPE.Head
sta (pFD),y
dec
tay
.2 lda $ffff,x SELF MODIFIED
.3 sta $ffff,y SELF MODIFIED
@ -491,15 +511,15 @@ IO.WRITE.PIPE >PULLW .2+1 S.IOCTL.BUFPTR
tay
lda #0 Y,A = bytes written
clc
rts
>RET 4
.9 lda #MLI.E.VOLFULL
.9 lda #0 BLOCKING I/O
sec
rts
.99 lda #MLI.E.EOF
sec
rts
>RET 4
*/--------------------------------------
* # IOCTL
* ## C

View File

@ -302,6 +302,13 @@ K.Pipe >LDYAI K.PIPE.SIZE
lda #S.FD.PIPE.S.Opened
sta (pFD),y
ldy #S.FD.PIPE.Free
lda #K.PIPE.SIZE
sta (pFD),y
iny
lda /K.PIPE.SIZE
sta (pFD),y
iny S.FD.PIPE.hMem
.1 lda #$ff Self Modified
sta (pFD),y