mirror of
https://github.com/A2osX/A2osX.git
synced 2024-09-10 07:54:37 +00:00
Kernel 0.93
This commit is contained in:
parent
71a87f9f52
commit
167e9146c0
Binary file not shown.
@ -187,13 +187,13 @@ S.SOCKET.TCP.OUTFREE .EQ S.SOCKET+16
|
|||||||
S.SOCKET.TCP.OUTTOSEND .EQ S.SOCKET+18
|
S.SOCKET.TCP.OUTTOSEND .EQ S.SOCKET+18
|
||||||
S.SOCKET.TCP.OUTUSED .EQ S.SOCKET+20
|
S.SOCKET.TCP.OUTUSED .EQ S.SOCKET+20
|
||||||
*
|
*
|
||||||
S.SOCKET.TCP.INLASTSEQNUM .EQ S.SOCKET+22 Recv:Last SEQ received from remote
|
S.SOCKET.TCP.INSEQNUM .EQ S.SOCKET+22 Recv:Last SEQ received from remote
|
||||||
|
|
||||||
S.SOCKET.TCP.OUTSEQNUM .EQ S.SOCKET+26 Send:SEQ sent not yet ACKed (retransmit)
|
S.SOCKET.TCP.OUTSEQNUM .EQ S.SOCKET+26 Send:SEQ sent not yet ACKed (retransmit)
|
||||||
S.SOCKET.TCP.OUTNEXTSEQ .EQ S.SOCKET+30 Send:Next SEQ to send
|
S.SOCKET.TCP.OUTNEXTSEQ .EQ S.SOCKET+30 Send:Next SEQ to send
|
||||||
S.SOCKET.TCP.OUTACKNUM .EQ S.SOCKET+34 Send:ACK to send to remote
|
*S.SOCKET.TCP.OUTACKNUM .EQ S.SOCKET+34 Send:ACK to send to remote
|
||||||
*
|
*
|
||||||
S.SOCKET.TCP .EQ S.SOCKET+38
|
S.SOCKET.TCP .EQ S.SOCKET+34
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.ARP.HTYPE .EQ S.ETH.EII+0 $0001
|
S.ARP.HTYPE .EQ S.ETH.EII+0 $0001
|
||||||
S.ARP.PTYPE .EQ S.ETH.EII+2 $0800
|
S.ARP.PTYPE .EQ S.ETH.EII+2 $0800
|
||||||
|
@ -484,29 +484,112 @@ SKT.GetDataFromSktIn
|
|||||||
.8 >ADC16 SKT.Cache+S.SOCKET.TCP.INFREE,ZPDataInLen
|
.8 >ADC16 SKT.Cache+S.SOCKET.TCP.INFREE,ZPDataInLen
|
||||||
>SBC16 SKT.Cache+S.SOCKET.TCP.INUSED,ZPDataInLen
|
>SBC16 SKT.Cache+S.SOCKET.TCP.INUSED,ZPDataInLen
|
||||||
|
|
||||||
lda SKT.Cache+S.SOCKET.TCP.OUTACKNUM+3
|
* lda SKT.Cache+S.SOCKET.TCP.OUTACKNUM+3
|
||||||
clc
|
* clc
|
||||||
adc ZPDataInLen
|
* adc ZPDataInLen
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTACKNUM+3
|
* sta SKT.Cache+S.SOCKET.TCP.OUTACKNUM+3
|
||||||
lda SKT.Cache+S.SOCKET.TCP.OUTACKNUM+2
|
* lda SKT.Cache+S.SOCKET.TCP.OUTACKNUM+2
|
||||||
adc ZPDataInLen+1
|
* adc ZPDataInLen+1
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTACKNUM+2
|
* sta SKT.Cache+S.SOCKET.TCP.OUTACKNUM+2
|
||||||
|
|
||||||
bcc .80
|
* bcc .80
|
||||||
inc SKT.Cache+S.SOCKET.TCP.OUTACKNUM+1
|
* inc SKT.Cache+S.SOCKET.TCP.OUTACKNUM+1
|
||||||
bne .80
|
* bne .80
|
||||||
inc SKT.Cache+S.SOCKET.TCP.OUTACKNUM
|
* inc SKT.Cache+S.SOCKET.TCP.OUTACKNUM
|
||||||
|
*.80
|
||||||
|
jsr SKT.StoreTCB
|
||||||
|
|
||||||
.80 jsr SKT.StoreTCB
|
* lda #S.TCP.OPTIONS.ACK
|
||||||
|
* jsr TCP.OUT.SendOptA
|
||||||
|
|
||||||
lda #S.TCP.OPTIONS.ACK
|
jsr TCP.SetSocketTCPO.ACK ACK=1 -> send WSIZE
|
||||||
jsr TCP.OUT.SendOptA
|
|
||||||
|
|
||||||
* jsr TCP.SetSocketTCPO.ACK
|
|
||||||
|
|
||||||
* jsr TCP.OUT.I SKT.GetTCB already called
|
* jsr TCP.OUT.I SKT.GetTCB already called
|
||||||
|
|
||||||
>LDYA ZPDataInLen
|
>LDYA ZPDataInLen
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* From TCP.IN
|
||||||
|
* Src : ZPDataInPtr/ZPDataInLen
|
||||||
|
* Dst : hInMem/INHEAD
|
||||||
|
*--------------------------------------
|
||||||
|
SKT.AddDataToSktIn
|
||||||
|
lda SKT.Cache+S.SOCKET.TCP.INFREE
|
||||||
|
sec
|
||||||
|
sbc ZPDataInLen
|
||||||
|
tax
|
||||||
|
lda SKT.Cache+S.SOCKET.TCP.INFREE+1
|
||||||
|
sbc ZPDataInLen+1
|
||||||
|
bcc .9 Not enough room in Q
|
||||||
|
|
||||||
|
stx SKT.Cache+S.SOCKET.TCP.INFREE
|
||||||
|
sta SKT.Cache+S.SOCKET.TCP.INFREE+1
|
||||||
|
|
||||||
|
ldy #S.SOCKET.SQ.hInMem
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
>SYSCALL2 GetMemPtr
|
||||||
|
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
||||||
|
|
||||||
|
pha
|
||||||
|
tya
|
||||||
|
* clc
|
||||||
|
adc SKT.Cache+S.SOCKET.TCP.INHEAD
|
||||||
|
sta ZPTmpPtr2
|
||||||
|
|
||||||
|
pla
|
||||||
|
adc SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
||||||
|
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
|
||||||
|
|
||||||
|
lda ZPDataInLen
|
||||||
|
eor #$FF
|
||||||
|
tax
|
||||||
|
|
||||||
|
lda ZPDataInLen+1
|
||||||
|
eor #$FF
|
||||||
|
pha
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 inx
|
||||||
|
bne .2
|
||||||
|
pla
|
||||||
|
inc
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
pha
|
||||||
|
|
||||||
|
.2 lda (ZPDataInPtr),y
|
||||||
|
sta (ZPTmpPtr2)
|
||||||
|
iny
|
||||||
|
bne .3
|
||||||
|
inc ZPDataInPtr+1
|
||||||
|
|
||||||
|
.3 inc SKT.Cache+S.SOCKET.TCP.INHEAD
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
inc SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
||||||
|
lda SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
||||||
|
cmp /K.TCP.WSIZE
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
stz SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
||||||
|
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
||||||
|
sta ZPTmpPtr2
|
||||||
|
lda ZPTmpPtr1+1
|
||||||
|
sta ZPTmpPtr2+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.4 inc ZPTmpPtr2
|
||||||
|
bne .1
|
||||||
|
inc ZPTmpPtr2+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.9 sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.8 >ADC16 SKT.Cache+S.SOCKET.TCP.INUSED,ZPDataInLen
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
@ -609,9 +692,79 @@ SKT.AddDataToSktOut
|
|||||||
>ADC16 SKT.Cache+S.SOCKET.TCP.OUTTOSEND,ZPDataInLen
|
>ADC16 SKT.Cache+S.SOCKET.TCP.OUTTOSEND,ZPDataInLen
|
||||||
jsr SKT.StoreTCB
|
jsr SKT.StoreTCB
|
||||||
|
|
||||||
jsr TCP.OUT.I SKT.GetTCB called, try to push, ignore error....
|
* jsr TCP.OUT.I SKT.GetTCB called, try to push, ignore error....
|
||||||
|
|
||||||
>LDYA ZPDataInLen
|
>LDYA ZPDataInLen
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* From TCP.OUT
|
||||||
|
* Src : hOutMem/OUTTAIL
|
||||||
|
* Dst : ZPDataOutPtr/ZPDataOutLen
|
||||||
|
*--------------------------------------
|
||||||
|
SKT.GetDataFromSktOut
|
||||||
|
ldy #S.SOCKET.SQ.hOutMem
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
|
||||||
|
>SYSCALL2 GetMemPtr
|
||||||
|
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
||||||
|
|
||||||
|
pha
|
||||||
|
tya
|
||||||
|
* clc
|
||||||
|
adc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT
|
||||||
|
sta ZPTmpPtr2 Make ZPTmpPtr2=base+nexttail
|
||||||
|
|
||||||
|
pla
|
||||||
|
adc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||||
|
sta ZPTmpPtr2+1
|
||||||
|
|
||||||
|
lda ZPDataOutLen
|
||||||
|
eor #$FF
|
||||||
|
tax
|
||||||
|
|
||||||
|
lda ZPDataOutLen+1
|
||||||
|
eor #$FF
|
||||||
|
pha
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 inx
|
||||||
|
bne .2
|
||||||
|
pla
|
||||||
|
inc
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
pha
|
||||||
|
|
||||||
|
.2 lda (ZPTmpPtr2)
|
||||||
|
sta (ZPDataOutPtr),y
|
||||||
|
iny
|
||||||
|
bne .3
|
||||||
|
inc ZPDataOutPtr+1
|
||||||
|
|
||||||
|
.3 inc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
inc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||||
|
lda SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||||
|
cmp /K.TCP.WSIZE
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
stz SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||||
|
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
||||||
|
sta ZPTmpPtr2
|
||||||
|
lda ZPTmpPtr1+1
|
||||||
|
sta ZPTmpPtr2+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.4 inc ZPTmpPtr2
|
||||||
|
bne .1
|
||||||
|
inc ZPTmpPtr2+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 >SBC16 SKT.Cache+S.SOCKET.TCP.OUTTOSEND,ZPDataOutLen
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
@ -1040,201 +1193,6 @@ SKT.AddToQueueA pha
|
|||||||
* sec
|
* sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* From TCP.IN
|
|
||||||
* Src : ZPDataInPtr/ZPDataInLen
|
|
||||||
* Dst : hInMem/INHEAD
|
|
||||||
*--------------------------------------
|
|
||||||
SKT.AddDataToSktIn
|
|
||||||
.DO IPDEBUG=2
|
|
||||||
ldx #3
|
|
||||||
.91 lda SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM,x
|
|
||||||
>PUSHA
|
|
||||||
dex
|
|
||||||
bpl .91
|
|
||||||
|
|
||||||
ldy #S.TCP.SEQNUM+3
|
|
||||||
.92 lda (ZPFrameInPtr),y
|
|
||||||
>PUSHA
|
|
||||||
dey
|
|
||||||
cpy #S.TCP.SEQNUM-1
|
|
||||||
bne .92
|
|
||||||
>PUSHBI 8
|
|
||||||
>LDYA L.MSG.SEQNUM
|
|
||||||
>SYSCALL printf
|
|
||||||
.FIN
|
|
||||||
|
|
||||||
lda SKT.Cache+S.SOCKET.TCP.INFREE
|
|
||||||
sec
|
|
||||||
sbc ZPDataInLen
|
|
||||||
tax
|
|
||||||
lda SKT.Cache+S.SOCKET.TCP.INFREE+1
|
|
||||||
sbc ZPDataInLen+1
|
|
||||||
bcc .9 Not enough room in Q
|
|
||||||
|
|
||||||
stx SKT.Cache+S.SOCKET.TCP.INFREE
|
|
||||||
sta SKT.Cache+S.SOCKET.TCP.INFREE+1
|
|
||||||
|
|
||||||
ldy #S.TCP.SEQNUM+3
|
|
||||||
ldx #3
|
|
||||||
|
|
||||||
.10 lda (ZPFrameInPtr),y
|
|
||||||
eor SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM,x
|
|
||||||
bne .9
|
|
||||||
dey
|
|
||||||
dex
|
|
||||||
bpl .10
|
|
||||||
|
|
||||||
ldy #S.SOCKET.SQ.hInMem
|
|
||||||
lda (ZPPtrSKT),y
|
|
||||||
>SYSCALL2 GetMemPtr
|
|
||||||
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
|
||||||
|
|
||||||
pha
|
|
||||||
tya
|
|
||||||
* clc
|
|
||||||
adc SKT.Cache+S.SOCKET.TCP.INHEAD
|
|
||||||
sta ZPTmpPtr2
|
|
||||||
|
|
||||||
pla
|
|
||||||
adc SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
|
||||||
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
|
|
||||||
|
|
||||||
lda ZPDataInLen
|
|
||||||
eor #$FF
|
|
||||||
tax
|
|
||||||
|
|
||||||
lda ZPDataInLen+1
|
|
||||||
eor #$FF
|
|
||||||
pha
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
.1 inx
|
|
||||||
bne .2
|
|
||||||
pla
|
|
||||||
inc
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
pha
|
|
||||||
|
|
||||||
.2 lda (ZPDataInPtr),y
|
|
||||||
sta (ZPTmpPtr2)
|
|
||||||
iny
|
|
||||||
bne .3
|
|
||||||
inc ZPDataInPtr+1
|
|
||||||
|
|
||||||
.3 inc SKT.Cache+S.SOCKET.TCP.INHEAD
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
inc SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
|
||||||
lda SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
|
||||||
cmp /K.TCP.WSIZE
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
stz SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
|
||||||
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
|
||||||
sta ZPTmpPtr2
|
|
||||||
lda ZPTmpPtr1+1
|
|
||||||
sta ZPTmpPtr2+1
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.4 inc ZPTmpPtr2
|
|
||||||
bne .1
|
|
||||||
inc ZPTmpPtr2+1
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 >ADC16 SKT.Cache+S.SOCKET.TCP.INUSED,ZPDataInLen
|
|
||||||
|
|
||||||
clc
|
|
||||||
|
|
||||||
lda SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM+3
|
|
||||||
adc ZPDataInLen
|
|
||||||
sta SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM+3
|
|
||||||
|
|
||||||
lda SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM+2
|
|
||||||
adc ZPDataInLen+1
|
|
||||||
sta SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM+2
|
|
||||||
bcc .81
|
|
||||||
inc SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM+1
|
|
||||||
bne .80
|
|
||||||
inc SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM
|
|
||||||
|
|
||||||
.80 clc
|
|
||||||
.81 rts
|
|
||||||
*--------------------------------------
|
|
||||||
* From TCP.OUT
|
|
||||||
* Src : hOutMem/OUTTAIL
|
|
||||||
* Dst : ZPDataOutPtr/ZPDataOutLen
|
|
||||||
*--------------------------------------
|
|
||||||
SKT.GetDataFromSktOut
|
|
||||||
ldy #S.SOCKET.SQ.hOutMem
|
|
||||||
lda (ZPPtrSKT),y
|
|
||||||
|
|
||||||
>SYSCALL2 GetMemPtr
|
|
||||||
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
|
||||||
|
|
||||||
pha
|
|
||||||
tya
|
|
||||||
* clc
|
|
||||||
adc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT
|
|
||||||
sta ZPTmpPtr2 Make ZPTmpPtr2=base+nexttail
|
|
||||||
|
|
||||||
pla
|
|
||||||
adc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
|
||||||
sta ZPTmpPtr2+1
|
|
||||||
|
|
||||||
lda ZPDataOutLen
|
|
||||||
eor #$FF
|
|
||||||
tax
|
|
||||||
|
|
||||||
lda ZPDataOutLen+1
|
|
||||||
eor #$FF
|
|
||||||
pha
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
.1 inx
|
|
||||||
bne .2
|
|
||||||
pla
|
|
||||||
inc
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
pha
|
|
||||||
|
|
||||||
.2 lda (ZPTmpPtr2)
|
|
||||||
sta (ZPDataOutPtr),y
|
|
||||||
iny
|
|
||||||
bne .3
|
|
||||||
inc ZPDataOutPtr+1
|
|
||||||
|
|
||||||
.3 inc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
inc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
|
||||||
lda SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
|
||||||
cmp /K.TCP.WSIZE
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
stz SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
|
||||||
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
|
||||||
sta ZPTmpPtr2
|
|
||||||
lda ZPTmpPtr1+1
|
|
||||||
sta ZPTmpPtr2+1
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.4 inc ZPTmpPtr2
|
|
||||||
bne .1
|
|
||||||
inc ZPTmpPtr2+1
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.8 >SBC16 SKT.Cache+S.SOCKET.TCP.OUTTOSEND,ZPDataOutLen
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
SKT.NewTCB ldx #S.SOCKET.TCP.INTAIL
|
SKT.NewTCB ldx #S.SOCKET.TCP.INTAIL
|
||||||
|
|
||||||
.1 stz SKT.Cache,x
|
.1 stz SKT.Cache,x
|
||||||
|
@ -199,18 +199,41 @@ TCP.IN.JMP.ESTBLSH
|
|||||||
|
|
||||||
lda ZPDataInLen Incoming Data in this frame ?
|
lda ZPDataInLen Incoming Data in this frame ?
|
||||||
ora ZPDataInLen+1
|
ora ZPDataInLen+1
|
||||||
beq .5 No data, ...
|
beq .7 No data, ...
|
||||||
|
|
||||||
|
ldy #S.TCP.SEQNUM+3
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.5 lda (ZPFrameInPtr),y
|
||||||
|
eor SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
|
||||||
|
bne .7
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .5
|
||||||
|
|
||||||
jsr SKT.AddDataToSktIn yes, queue data if there is room for....
|
jsr SKT.AddDataToSktIn yes, queue data if there is room for....
|
||||||
bcs .5
|
bcs .7
|
||||||
|
|
||||||
jsr SKT.StoreTCB success, update socket
|
lda SKT.Cache+S.SOCKET.TCP.INSEQNUM+3
|
||||||
|
* clc
|
||||||
|
adc ZPDataInLen
|
||||||
|
sta SKT.Cache+S.SOCKET.TCP.INSEQNUM+3
|
||||||
|
|
||||||
* jsr TCP.SetSocketTCPO.ACK Try to ACK read DATA
|
lda SKT.Cache+S.SOCKET.TCP.INSEQNUM+2
|
||||||
|
adc ZPDataInLen+1
|
||||||
|
sta SKT.Cache+S.SOCKET.TCP.INSEQNUM+2
|
||||||
|
bcc .6
|
||||||
|
inc SKT.Cache+S.SOCKET.TCP.INSEQNUM+1
|
||||||
|
bne .6
|
||||||
|
inc SKT.Cache+S.SOCKET.TCP.INSEQNUM
|
||||||
|
|
||||||
|
.6 jsr SKT.StoreTCB success, update socket
|
||||||
|
|
||||||
|
jsr TCP.SetSocketTCPO.ACK Try to ACK read DATA
|
||||||
|
|
||||||
* jsr TCP.OUT.I SKT.GetTCB already called
|
* jsr TCP.OUT.I SKT.GetTCB already called
|
||||||
|
|
||||||
.5 ldy #S.TCP.OPTIONS
|
.7 ldy #S.TCP.OPTIONS
|
||||||
lda (ZPFrameInPtr),y
|
lda (ZPFrameInPtr),y
|
||||||
and #S.TCP.OPTIONS.FIN
|
and #S.TCP.OPTIONS.FIN
|
||||||
beq .8
|
beq .8
|
||||||
@ -315,8 +338,8 @@ TCP.IN.ACKTheSYN
|
|||||||
|
|
||||||
.3 lda (ZPFrameInPtr),y Set OUTACK=SEQ+1 for new socket...
|
.3 lda (ZPFrameInPtr),y Set OUTACK=SEQ+1 for new socket...
|
||||||
adc #0
|
adc #0
|
||||||
sta SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM,x
|
sta SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTACKNUM,x
|
* sta SKT.Cache+S.SOCKET.TCP.OUTACKNUM,x
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bpl .3
|
bpl .3
|
||||||
@ -327,17 +350,17 @@ TCP.IN.ACKTheFIN
|
|||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
.1 inc SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM,x
|
.1 inc SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
|
||||||
bne .2
|
bne .8
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
.2 ldx #3
|
*.2 ldx #3
|
||||||
|
|
||||||
.3 inc SKT.Cache+S.SOCKET.TCP.OUTACKNUM,x
|
*.3 inc SKT.Cache+S.SOCKET.TCP.OUTACKNUM,x
|
||||||
bne .8
|
* bne .8
|
||||||
dex
|
* dex
|
||||||
bpl .3
|
* bpl .3
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -483,7 +506,7 @@ TCP.OUT.I lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1
|
|||||||
|
|
||||||
lda #S.TCP.OPTIONS.ACK+S.TCP.OPTIONS.PSH
|
lda #S.TCP.OPTIONS.ACK+S.TCP.OPTIONS.PSH
|
||||||
|
|
||||||
jsr TCP.SetSocketTCPO
|
* jsr TCP.SetSocketTCPO
|
||||||
|
|
||||||
jsr TCP.OUT.Send
|
jsr TCP.OUT.Send
|
||||||
|
|
||||||
@ -523,7 +546,7 @@ TCP.OUT.Send ldy #S.TCP.OPTIONS
|
|||||||
ldx #3
|
ldx #3
|
||||||
ldy #S.TCP.ACKNUM+3
|
ldy #S.TCP.ACKNUM+3
|
||||||
|
|
||||||
.1 lda SKT.Cache+S.SOCKET.TCP.OUTACKNUM,x
|
.1 lda SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
|
||||||
sta (ZPFrameOutPtr),y
|
sta (ZPFrameOutPtr),y
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
|
@ -161,9 +161,6 @@ J.SKT.send .DA SKT.send.RAW
|
|||||||
.DO IPDEBUG=1
|
.DO IPDEBUG=1
|
||||||
L.MSG.FRM.Dump .DA MSG.FRM.Dump
|
L.MSG.FRM.Dump .DA MSG.FRM.Dump
|
||||||
L.MSG.SKT.Dump .DA MSG.SKT.Dump
|
L.MSG.SKT.Dump .DA MSG.SKT.Dump
|
||||||
.FIN
|
|
||||||
.DO IPDEBUG=2
|
|
||||||
L.MSG.SEQNUM .DA MSG.SEQNUM
|
|
||||||
.FIN
|
.FIN
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -466,9 +463,6 @@ IP.ID .BS 2
|
|||||||
MSG.FRM.Dump .AZ "FRM:SRC=%d.%d.%d.%d:%D DST=%d.%d.%d.%d:%D\r\n"
|
MSG.FRM.Dump .AZ "FRM:SRC=%d.%d.%d.%d:%D DST=%d.%d.%d.%d:%D\r\n"
|
||||||
MSG.SKT.Dump .AZ "SKT:LOC=%d.%d.%d.%d:%D REM=%d.%d.%d.%d:%D\r\n"
|
MSG.SKT.Dump .AZ "SKT:LOC=%d.%d.%d.%d:%D REM=%d.%d.%d.%d:%D\r\n"
|
||||||
.FIN
|
.FIN
|
||||||
.DO IPDEBUG=2
|
|
||||||
MSG.SEQNUM .AZ "FRM:%h%h%h%h,SKT:%h%h%h%h\r\n"
|
|
||||||
.FIN
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/LIB/LIBTCPIP.S
|
SAVE USR/SRC/LIB/LIBTCPIP.S
|
||||||
|
Loading…
Reference in New Issue
Block a user