Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-05-03 15:08:12 +02:00
parent 77b64abc5c
commit 74c56186b4
7 changed files with 175 additions and 103 deletions

Binary file not shown.

View File

@ -59,7 +59,7 @@ IO.Reset.In >LDA.G IO.hIn
.8 clc
IO.Reset.In.RTS rts
*--------------------------------------
IO.Pipe.Out >LDYA 256
IO.Pipe.Out >LDYAI 256
>SYSCALL pipe
bcs IO.Reset.In.RTS
>STA.G IO.hPipe

View File

@ -198,7 +198,7 @@ CS.INIT.RTS rts
*--------------------------------------
CS.RUN jsr CL.Init
jsr CORE.Init
ldy #S.PS.ARGC
lda (pPS),y
beq .1 no arg, continue starting interactive
@ -222,7 +222,7 @@ CS.RUN jsr CL.Init
plx
jsr CMD.CALL.YAX
bra CS.RUN.LOOP
*--------------------------------------
*--------------------------------------
.1 jsr CMD.CD.HOME
jsr HIS.Init
bcs CS.INIT.RTS

View File

@ -390,7 +390,7 @@ SKT.shutdown.STREAM
SKT.Read jsr SKT.PullhFDDataInPtrLen
jsr SKT.EOF.I
bcs .9 I/O error
bcs .99 I/O error
tay
bne .9 eof=true, exit with CC,Y,A = 0
@ -399,7 +399,7 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen
.9 lda #0
tay
rts
.99 rts
*/--------------------------------------
* # Write (STREAM)
* ## C
@ -417,18 +417,27 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen
SKT.Write jsr SKT.PullhFDDataInPtrLen
jsr SKT.CheckStream
bcs .9
bcs .99
jsr SKT.GetTCB
ldx SKT.Cache+S.SOCKET.TCP.OUTFREE
cpx ZPDataInLen
lda SKT.Cache+S.SOCKET.TCP.OUTFREE+1
sbc ZPDataInLen+1
bcc .9 Not enough room in Q
jsr SKT.AddDataToSktOut will call SKT.GetTCB
bcs .90
jsr TCP.OUT.I SKT.GetTCB called, try to push, ignore error....
>LDYA ZPDataInLen
clc
rts
.90 lda #0 no data transfered
sec
.9 rts
.9 lda #0 no data transfered
tay
clc
.99 rts
*/--------------------------------------
* # Recv (RAW,DGRAM,SEQPACKET)
* # RecvFrom (RAW,DGRAM,SEQPACKET)
@ -1078,13 +1087,6 @@ SKT.GetDataFromSktIn
* Dst : hOutMem/OUTHEAD
*--------------------------------------
SKT.AddDataToSktOut
jsr SKT.GetTCB
ldx SKT.Cache+S.SOCKET.TCP.OUTFREE
cpx ZPDataInLen
lda SKT.Cache+S.SOCKET.TCP.OUTFREE+1
sbc ZPDataInLen+1
bcc .9 Not enough room in Q
ldy #S.SOCKET.SQ.hOutMem
lda (ZPPtrSKT),y
>SYSCALL GetMemPtr
@ -1141,9 +1143,6 @@ SKT.AddDataToSktOut
sta ZPTmpPtr2+1
bra .1
.9 sec
rts
.8 >SBC16 SKT.Cache+S.SOCKET.TCP.OUTFREE,ZPDataInLen
>ADC16 SKT.Cache+S.SOCKET.TCP.OUTUSED,ZPDataInLen
>ADC16 SKT.Cache+S.SOCKET.TCP.OUTTOSEND,ZPDataInLen

View File

@ -182,7 +182,7 @@ Kernel.Init3C >LDYAI MSG.Init3
>PUSHBI 2
>LDYAI MSG.EtcInit
>SYSCALL printf
>PUSHBI 0 PS Flags
>LDYAI ETCINIT.CMDLINE

View File

@ -271,7 +271,8 @@ IO.CLOSE.PIPE ldy #S.FD.PIPE.S
IO.CLOSE.FD lda (pFD),y
beq .1
jsr K.FreeStkObj
* jsr K.FreeStkObj
jsr K.Freemem
.1 lda IO.hFD
jmp K.FreeMem
@ -419,7 +420,7 @@ IO.READ.SSOCK ldy #S.FD.SSOCK.READ
lda IO.hFD
.1 jsr $FFFF SELF MODIFIED
bcs .9
bcs .9 I/O error
phy
ply
@ -428,7 +429,7 @@ IO.READ.SSOCK ldy #S.FD.SSOCK.READ
tax
bne .9
dec pStack CC, Y,A = 0
dec pStack no data transfered, CC, Y,A = 0
dec pStack
dec pStack
dec pStack keep buf/count on stack
@ -449,31 +450,51 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
lda (pFD),y
bpl .11
jmp IO.READ.PIPE.99 Remote PS closed the Pipe
jmp IO.READ.PIPE.EOF Remote PS closed the Pipe
.11 lda #0 BLOCKING I/O
sec
rts
.11 jmp IO.READ.PIPE.BLK
.10 >PULLW .3+1 get buf
>PULLA get cnt lo
pha
ldy #S.FD.PIPE.Used
cmp (pFD),y
>PULLA get cnt hi
tax
iny
sbc (pFD),y
bcc .12
pla
dey
lda (pFD),y
pha
iny
lda (pFD),y
tax
.12 pla
sta .80+1
stx .81+1
eor #$ff
sta IO.Counter
>PULLA get cnt hi
txa
eor #$ff
sta IO.Counter+1
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
sty .2+1
ldy #S.FD.PIPE.Tail+1
adc (pFD),y
sta .2+2
dey S.FD.PIPE.Tail
lda (pFD),y
tay
@ -487,55 +508,82 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
.2 lda $ffff,y SELF MODIFIED
.3 sta $ffff,x SELF MODIFIED
inx
beq .8 moved $100 bytes
bne .4
iny
.4 cpy #$ff SELF MODIFIED
inc .3+2
.4 iny
bne .1
.5 clc
.HS B0 BCS
.8 sec
lda #0
rol
sta IO.Counter+1
stx IO.Counter
ldy #S.FD.PIPE.Tail+1
lda (pFD),y
inc
ldy #S.FD.PIPE.Size+1
cmp (pFD),y
beq .5
tya
ldy #S.FD.PIPE.Tail+1
sta (pFD),y
inc .2+2
ldy #0
bra .1
.5 lda #0
ldy #S.FD.PIPE.Tail+1
sta (pFD),y
ldy #S.FD.PIPE.hMem
lda (pFD),y
jsr K.GetMemPtr
sta .2+2
ldy #0
bra .1
.8 tya
ldy #S.FD.PIPE.Tail
sta (pFD),y
txa
lda .80+1
ldy #S.FD.PIPE.Free
clc
adc (pFD),y
sta (pFD),y
iny
lda IO.Counter+1
lda .81+1
adc (pFD),y
sta (pFD),y
ldy #S.FD.PIPE.Used
sec
lda (pFD),y
sbc IO.Counter
sbc .80+1
sta (pFD),y
iny
lda (pFD),y
sbc IO.Counter+1
sbc .81+1
sta (pFD),y
ldy IO.Counter
lda IO.Counter+1 Y,A = bytes read
.80 ldy #$ff SELF MODIFIED
.81 lda #$ff Y,A = bytes read
clc
rts
IO.READ.PIPE.99 lda #MLI.E.EOF
IO.READ.PIPE.EOF
lda #MLI.E.EOF
sec
>RET 4
IO.READ.PIPE.BLK
lda #0 BLOCKING I/O
sec
rts
*--------------------------------------
* (pStack)+2 count
* (pStack)+0 buf
@ -543,7 +591,7 @@ IO.READ.PIPE.99 lda #MLI.E.EOF
IO.WRITE.PIPE ldy #S.FD.PIPE.S
lda (pFD),y
bmi IO.READ.PIPE.99 Remote PS closed the Pipe
bmi IO.READ.PIPE.EOF Remote PS closed the Pipe
sec
ldy #S.FD.PIPE.Free
@ -556,7 +604,7 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
ldy #3
sbc (pStack),y
bcc .9 not enough room in PIPE
bcc IO.READ.PIPE.BLK not enough room in PIPE
ldy #S.FD.PIPE.Free+1
sta (pFD),y
@ -567,6 +615,7 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
>PULLW .2+1 get buf
>PULLA get cnt lo
sta .80+1
pha
eor #$ff
sta IO.Counter
@ -577,6 +626,7 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
sta (pFD),y
>PULLA get cnt hi
sta .81+1
pha
eor #$ff
sta IO.Counter+1
@ -588,13 +638,18 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
ldy #S.FD.PIPE.hMem
lda (pFD),y
jsr K.GetMemPtr
>STYA .3+1
ldy #S.FD.PIPE.Head
lda (pFD),y
tay
sty .3+1
ldy #S.FD.PIPE.Head+1
adc (pFD),y
sta .3+2
ldx #0
dey
lda (pFD),y
tay S.FD.PIPE.Head
.1 inc IO.Counter
bne .2
@ -604,28 +659,45 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
.2 lda $ffff,x SELF MODIFIED
.3 sta $ffff,y SELF MODIFIED
iny
inx
bne .1
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
rol
* clc
rts
bne .4
.9 lda #0 BLOCKING I/O
sec
inc .2+2
.4 iny
bne .1
ldy #S.FD.PIPE.Head+1
lda (pFD),y
inc
ldy #S.FD.PIPE.Size+1
cmp (pFD),y
beq .5
ldy #S.FD.PIPE.Head+1
sta (pFD),y
inc .3+2
ldy #0
bra .1
.5 lda #0
ldy #S.FD.PIPE.Head+1
sta (pFD),y
ldy #S.FD.PIPE.hMem
lda (pFD),y
jsr K.GetMemPtr
sta .3+2
ldy #0
bra .1
.8 tya
ldy #S.FD.PIPE.Head
sta (pFD),y
.80 ldy #$ff SELF MODIFIED
.81 lda #$ff SELF MODIFIED
clc Y,A = bytes written
rts
*/--------------------------------------
* # IOCTL
@ -668,28 +740,6 @@ K.IOCTL.GetPDrv ldy #S.FD.DEV.DRVPTR
sta pDRV+1
rts
*--------------------------------------
IO.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF
ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE
jsr MEM.GetMem.YAX
bcs .9
>STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
txa
ldy #S.FD.REG.IOBUF
sta (pFD),y
>MLICALL MLIOPEN
bcs .9
lda K.MLI.PARAMS+5 get ref_num
ldy #S.FD.REG.REF
sta (pFD),y
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
* clc
.9 rts
*--------------------------------------
IO.EOF lda (pFD)
tax
jmp (.1,x)
@ -777,6 +827,28 @@ IO.EOF.PIPE ldy #S.FD.PIPE.Used
clc
rts
*--------------------------------------
IO.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF
ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE
jsr MEM.GetMem.YAX
bcs .9
>STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
txa
ldy #S.FD.REG.IOBUF
sta (pFD),y
>MLICALL MLIOPEN
bcs .9
lda K.MLI.PARAMS+5 get ref_num
ldy #S.FD.REG.REF
sta (pFD),y
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
* clc
.9 rts
*--------------------------------------
IO.DEVDIR >PSTR "/DEV/"
*--------------------------------------
MAN

View File

@ -382,7 +382,8 @@ K.MKFIFO
* A = hFD
*\--------------------------------------
K.Pipe >STYA ZPPtr1
jsr K.NewStkObj Buffer in AUX mem
* jsr K.NewStkObj Buffer in AUX mem
jsr K.GetMem
bcs .99
stx .1+1 save PIPE buffer
@ -415,7 +416,7 @@ K.Pipe >STYA ZPPtr1
ldy #S.FD.PIPE.hMem
.1 lda #$ff Self Modified
sta (pFD),y
txa
txa hFD
* clc
rts