mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-27 00:30:55 +00:00
Kernel 0.93
This commit is contained in:
parent
77b64abc5c
commit
74c56186b4
Binary file not shown.
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -182,7 +182,7 @@ Kernel.Init3C >LDYAI MSG.Init3
|
||||
>PUSHBI 2
|
||||
>LDYAI MSG.EtcInit
|
||||
>SYSCALL printf
|
||||
|
||||
|
||||
>PUSHBI 0 PS Flags
|
||||
>LDYAI ETCINIT.CMDLINE
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user