mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-16 18:30:26 +00:00
Kernel 0.93+
This commit is contained in:
parent
15b070ba0a
commit
9c6b5619f6
Binary file not shown.
Binary file not shown.
@ -123,7 +123,7 @@ CS.RUN >INC.G ArgIndex
|
||||
>LDA.G hSrcBasePath
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.80 iny
|
||||
@ -335,6 +335,10 @@ CS.RUN.GetFilePath
|
||||
>PUSHW ZPFileName
|
||||
>LDYA ZPFullPath
|
||||
>SYSCALL StrCat
|
||||
|
||||
>LDYA ZPFullPath
|
||||
>SYSCALL puts
|
||||
>DEBUG
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.OpenFile >PUSHWZ Aux type
|
||||
|
@ -185,15 +185,18 @@ SKT.connect.SEQPACKET
|
||||
beq .1
|
||||
|
||||
cmp #S.SOCKET.TCP.S.ESTBLSH
|
||||
beq .8
|
||||
beq SKT.listen.8
|
||||
bcs .9
|
||||
|
||||
cmp #S.SOCKET.TCP.S.OPENED
|
||||
beq .2
|
||||
|
||||
cmp #S.SOCKET.TCP.S.SYNSENT
|
||||
beq .3
|
||||
bra .9
|
||||
beq .99
|
||||
|
||||
.9 lda #ERR.SKT.BAD
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 jsr SKT.SetRemAddr
|
||||
jsr SKT.NewTCB
|
||||
@ -204,21 +207,14 @@ SKT.connect.SEQPACKET
|
||||
|
||||
.2 lda #S.TCP.OPTIONS.SYN
|
||||
jsr TCP.OUT.SendOptA Send SYN
|
||||
bcs .3
|
||||
bcs .99
|
||||
|
||||
lda #S.SOCKET.TCP.S.SYNSENT
|
||||
jsr SKT.StoreTCB.S
|
||||
|
||||
.3 lda #ERR.SKT.NOCONN
|
||||
.99 lda #ERR.SKT.NOCONN
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 lda #ERR.SKT.BAD
|
||||
sec
|
||||
.99 rts
|
||||
*/--------------------------------------
|
||||
* # Listen
|
||||
* Listen for connections on a socket
|
||||
@ -237,11 +233,11 @@ SKT.listen >SYSCALL2 GetMemPtr
|
||||
ldy #S.SOCKET.T
|
||||
lda (ZPPtrSKT),y
|
||||
cmp #S.SOCKET.T.SEQPACKET
|
||||
bcc .9
|
||||
bcc SKT.listen.9
|
||||
|
||||
ldy #S.SOCKET.TCP.S
|
||||
lda (ZPPtrSKT),y
|
||||
bne .9
|
||||
bne SKT.listen.9
|
||||
|
||||
lda #S.SOCKET.TCP.S.LISTEN
|
||||
sta (ZPPtrSKT),y
|
||||
@ -250,10 +246,10 @@ SKT.listen >SYSCALL2 GetMemPtr
|
||||
lda #S.SOCKET.O.ACCEPTCONN
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
clc
|
||||
SKT.listen.8 clc
|
||||
rts
|
||||
|
||||
.9 lda #ERR.SKT.BAD
|
||||
SKT.listen.9 lda #ERR.SKT.BAD
|
||||
sec
|
||||
SKT.listen.RTS rts
|
||||
*/--------------------------------------
|
||||
@ -425,6 +421,7 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen
|
||||
lda (ZPPtrSKT),y
|
||||
sbc ZPDataInLen+1
|
||||
bcs SKT.GetDataFromSktIn more data in pipe, get full buffer of data
|
||||
|
||||
stx ZPDataInLen less data than INUSED, Get only INUSED data
|
||||
lda (ZPPtrSKT),y
|
||||
sta ZPDataInLen+1
|
||||
@ -838,6 +835,9 @@ SKT.Recv clc
|
||||
cmp #S.SOCKET.T.STREAM
|
||||
beq .99
|
||||
|
||||
cmp #S.SOCKET.T.SEQPACKET
|
||||
php CS is SEQ
|
||||
|
||||
ldy #S.SOCKET.HQ.TAIL
|
||||
lda (ZPPtrSKT),y
|
||||
tax
|
||||
@ -859,7 +859,15 @@ SKT.Recv clc
|
||||
adc #S.SOCKET.HQ
|
||||
tay
|
||||
lda (ZPPtrSKT),y
|
||||
|
||||
plp
|
||||
bcc .10 not a SEQPKT socket
|
||||
|
||||
pha
|
||||
jsr SKT.Recv.ACKSEQPKT
|
||||
pla
|
||||
|
||||
.10 plp
|
||||
bcc .9 Exit with CC and A=hFrame
|
||||
|
||||
pha
|
||||
@ -906,15 +914,22 @@ SKT.Recv clc
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
.99 plp
|
||||
lda #ERR.SKT.BAD
|
||||
.99 lda #ERR.SKT.BAD
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
|
||||
.90 plp
|
||||
lda #0 no data
|
||||
.90 lda #0 no data
|
||||
plp
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
SKT.Recv.ACKSEQPKT
|
||||
|
||||
* TODO : compute ACK
|
||||
clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # Send (RAW,DGRAM,SEQPACKET)
|
||||
* # SendTo (RAW,DGRAM,SEQPACKET)
|
||||
@ -940,7 +955,7 @@ SKT.Send clc
|
||||
plp
|
||||
bcc .1
|
||||
jsr SKT.PullRemAddr
|
||||
* jsr SKT.SetRemAddr
|
||||
|
||||
.1 ldy #S.SOCKET.T
|
||||
lda (ZPPtrSKT),y
|
||||
tax
|
||||
@ -977,6 +992,8 @@ SKT.Send.SEQPACKET
|
||||
jsr SKT.CopyDataInToOut
|
||||
sec DONT Queue if fail
|
||||
jmp FRM.SendIP
|
||||
|
||||
* TODO add ZPDataInLen to SEQ
|
||||
*/--------------------------------------
|
||||
* # GetSockOpt
|
||||
* Set Socket Options
|
||||
@ -1166,6 +1183,7 @@ SKT.FindMatchingLocRem
|
||||
ldy #S.IP.PROTOCOL
|
||||
cmp (ZPFrameInPtr),y
|
||||
bne .8
|
||||
|
||||
ldy #S.SOCKET.LOC.ADDR
|
||||
|
||||
.2 lda (ZPPtrSKT),y
|
||||
@ -1177,6 +1195,7 @@ SKT.FindMatchingLocRem
|
||||
|
||||
.4 cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
|
||||
bne .8
|
||||
|
||||
iny
|
||||
cpy #S.SOCKET.LOC.PORT+2
|
||||
bne .3
|
||||
@ -1202,7 +1221,7 @@ SKT.FindMatchingLocRem
|
||||
and #S.SOCKET.O.BROADCAST
|
||||
bne .43
|
||||
* sec
|
||||
rts this socket does not accept broadcast
|
||||
rts this socket does not accept broadcast
|
||||
|
||||
.41 ldy #S.SOCKET.REM.ADDR
|
||||
|
||||
@ -1259,41 +1278,50 @@ SKT.AddToQueueA pha
|
||||
rts
|
||||
*--------------------------------------
|
||||
SKT.NewTCB ldx #S.SOCKET.TCP.INSEQNUM
|
||||
|
||||
.1 stz SKT.Cache,x
|
||||
inx
|
||||
cpx #S.SOCKET.TCP
|
||||
bne .1
|
||||
>LDYAI K.TCP.WSIZE
|
||||
>STYA SKT.Cache+S.SOCKET.TCP.INFREE
|
||||
|
||||
.DO AUXPIPE=1
|
||||
>SYSCALL2 NewStkObj
|
||||
.ELSE
|
||||
>SYSCALL2 getmem
|
||||
.FIN
|
||||
bcs .9
|
||||
txa
|
||||
ldy #S.SOCKET.SQ.hInMem
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
>LDYAI K.TCP.WSIZE
|
||||
>STYA SKT.Cache+S.SOCKET.TCP.OUTFREE
|
||||
.DO AUXPIPE=1
|
||||
>SYSCALL2 NewStkObj
|
||||
.ELSE
|
||||
>SYSCALL2 getmem
|
||||
.FIN
|
||||
bcs .9
|
||||
txa
|
||||
ldy #S.SOCKET.SQ.hOutMem
|
||||
sta (ZPPtrSKT),y
|
||||
ldx #3
|
||||
|
||||
.2 lda A2osX.TIMER16,x
|
||||
sta SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
ldy #S.SOCKET.T
|
||||
lda (ZPPtrSKT),y
|
||||
cmp #S.SOCKET.T.STREAM
|
||||
bcc .8
|
||||
|
||||
>LDYAI K.TCP.WSIZE
|
||||
>STYA SKT.Cache+S.SOCKET.TCP.INFREE
|
||||
>STYA SKT.Cache+S.SOCKET.TCP.OUTFREE
|
||||
|
||||
.DO AUXPIPE=1
|
||||
>SYSCALL2 NewStkObj
|
||||
.ELSE
|
||||
>SYSCALL2 getmem
|
||||
.FIN
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
ldy #S.SOCKET.SQ.hInMem
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
.DO AUXPIPE=1
|
||||
>SYSCALL2 NewStkObj
|
||||
.ELSE
|
||||
>SYSCALL2 getmem
|
||||
.FIN
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
ldy #S.SOCKET.SQ.hOutMem
|
||||
sta (ZPPtrSKT),y
|
||||
.8
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
@ -4,12 +4,13 @@ NEW
|
||||
*--------------------------------------
|
||||
TCP.IN jsr FRM.GetTargetSKT.TCPUDP
|
||||
jsr SKT.FindMatchingLocRem
|
||||
bcs TCP.IN.JMP.CLOSED no socket, go discard
|
||||
bcs TCP.IN.JMP.DISCARD no socket, go discard
|
||||
|
||||
ldy #S.TCP.OPTIONS
|
||||
lda (ZPFrameInPtr),y
|
||||
and #S.TCP.OPTIONS.RST RST ? go Kill this socket...
|
||||
bne TCP.IN.RST ...and discard frame
|
||||
|
||||
ldy #S.SOCKET.TCP.S
|
||||
lda (ZPPtrSKT),y
|
||||
asl
|
||||
@ -21,6 +22,7 @@ TCP.IN.RST lda SKT.TABLE,x
|
||||
*--------------------------------------
|
||||
TCP.IN.JMP.OPENED
|
||||
TCP.IN.JMP.CLOSED
|
||||
TCP.IN.JMP.DISCARD
|
||||
lda hFrameIn
|
||||
stz hFrameIn
|
||||
>SYSCALL2 FreeMem
|
||||
@ -33,10 +35,10 @@ TCP.IN.JMP.LISTEN
|
||||
iny #S.SOCKET.PROTO
|
||||
lda (ZPPtrSKT),y
|
||||
jsr SKT.Socket.I get new socket in ZPTmpPtr1
|
||||
bcs TCP.IN.JMP.CLOSED
|
||||
bcs TCP.IN.JMP.DISCARD
|
||||
|
||||
jsr SKT.AddToQueueA Queued successfully ?
|
||||
bcs TCP.IN.JMP.CLOSED no, discard frame and new socket
|
||||
bcs TCP.IN.JMP.DISCARD no, discard frame and new socket
|
||||
|
||||
jsr ARP.AddFromFrameInPtr
|
||||
lda ZPTmpPtr1
|
||||
@ -49,6 +51,7 @@ TCP.IN.JMP.LISTEN
|
||||
|
||||
jsr SKT.NewTCB
|
||||
bcs .99
|
||||
|
||||
jsr TCP.IN.ACKTheSYN
|
||||
lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK
|
||||
jsr TCP.OUT.SendOptA SYN received, Send SYN.ACK
|
||||
@ -197,12 +200,18 @@ TCP.IN.JMP.ESTBLSH
|
||||
dex
|
||||
bpl .5
|
||||
|
||||
ldy #S.SOCKET.T Create a new client socket
|
||||
lda (ZPPtrSKT),y
|
||||
cmp #S.SOCKET.T.STREAM
|
||||
bne .52
|
||||
jsr SKT.AddDataToSktIn yes, queue data if there is room for....
|
||||
bcs * Should never appends....
|
||||
|
||||
* clc
|
||||
|
||||
lda ZPDataInLen
|
||||
bra .59
|
||||
|
||||
.52 lda hFrameIn
|
||||
jsr SKT.AddToQueueA
|
||||
bcs .9
|
||||
|
||||
.59 lda ZPDataInLen
|
||||
ldy ZPDataInLen+1
|
||||
ldx #S.SOCKET.TCP.INSEQNUM
|
||||
jsr TCP.AddAYToSktCacheAtX
|
||||
@ -225,17 +234,13 @@ TCP.IN.JMP.ESTBLSH
|
||||
lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
|
||||
jsr TCP.SetSocketTCPO FIN received, Send FIN.ACK
|
||||
* jsr TCP.OUT.SendOptA
|
||||
.8
|
||||
clc
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
TCP.IN.JMP.CLWAIT
|
||||
clc Wait for SKT.shutdown
|
||||
rts
|
||||
*--------------------------------------
|
||||
TCP.IN.JMP.LASTACK
|
||||
ldy #S.TCP.OPTIONS only accept ACK packet
|
||||
lda (ZPFrameInPtr),y
|
||||
@ -244,7 +249,10 @@ TCP.IN.JMP.LASTACK
|
||||
ldy #S.SOCKET.TCP.S
|
||||
lda #S.SOCKET.TCP.S.TIMEWT
|
||||
sta (ZPPtrSKT),y
|
||||
.8 clc
|
||||
.8
|
||||
*--------------------------------------
|
||||
TCP.IN.JMP.CLWAIT
|
||||
clc Wait for SKT.shutdown
|
||||
rts
|
||||
*--------------------------------------
|
||||
TCP.IN.JMP.FINWT1
|
||||
|
Loading…
x
Reference in New Issue
Block a user