Kernel version 0.9 : TCP, bugfix in GetCA not ACKnoledging properly

This commit is contained in:
Rémy GIBERT 2017-03-15 07:58:13 +01:00
parent 6324272f4f
commit 4b37165b93
5 changed files with 40 additions and 27 deletions

Binary file not shown.

Binary file not shown.

View File

@ -553,7 +553,7 @@ SKT.GetCA stz bTextMode
stx ZPDataOutPtr stx ZPDataOutPtr
ldx L.TmpByte+1 ldx L.TmpByte+1
stx ZPDataOutPtr+1 stx ZPDataOutPtr+1
jsr SKT.Read.I jsr SKT.Read.I
bcs .9 bcs .9
lda TmpByte lda TmpByte
@ -601,7 +601,7 @@ SKT.Read.I jsr SKT.GetA.I
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.STATUS.ESTBLSH cmp #S.SOCKET.TCP.STATUS.ESTBLSH
bne .91 IO err bne .91 IO err
jsr SKT.GetDataFromSktIn jsr SKT.GetDataFromSktIn
rts if CS, No data... rts if CS, No data...
@ -703,10 +703,10 @@ SKT.AckDataToSktOut
SKT.AddDataToSktIn SKT.AddDataToSktIn
jsr SKT.GetTCB jsr SKT.GetTCB
ldx ZPDataInLen ldx SKT.TCBCache+S.TCB.INFREE
cpx SKT.TCBCache+S.TCB.INFREE cpx ZPDataInLen
lda ZPDataInLen+1 lda SKT.TCBCache+S.TCB.INFREE+1
sbc SKT.TCBCache+S.TCB.INFREE+1 sbc ZPDataInLen+1
bcc .9 Not enough room in Q bcc .9 Not enough room in Q
ldy #S.SOCKET.SQ.hInMem ldy #S.SOCKET.SQ.hInMem
@ -1105,6 +1105,8 @@ SKT.GetDataFromSktIn
ora #S.TCP.OPTIONS.ACK ora #S.TCP.OPTIONS.ACK
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
jsr TCP.OUT.I
>LDYA ZPTmpPtr3 >LDYA ZPTmpPtr3
clc clc
rts rts

View File

@ -294,26 +294,18 @@ TCP.IN.JMP.CLOSED
TCP.IN.SetDataInPtrAndLen TCP.IN.SetDataInPtrAndLen
ldy #S.TCP.DATAOFFSET ldy #S.TCP.DATAOFFSET
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
and #$F0 and #$F0 Get TCP Header len in DWORD
lsr lsr
lsr lsr
adc #S.TCP
* clc
adc #S.IP-2
sta TmpOffset sta TmpOffset
lda #0 lda #0
* clc adc /S.IP-2
adc /S.TCP
sta TmpOffset+1 TmpOffset=Data Offset in Frame sta TmpOffset+1 TmpOffset=Data Offset in Frame
lda ZPFrameInPtr
* clc
adc TmpOffset
sta ZPDataInPtr
lda ZPFrameInPtr+1
adc #0
sta ZPDataInPtr+1
lda ZPFrameInLen lda ZPFrameInLen
sec sec
sbc TmpOffset sbc TmpOffset
@ -322,6 +314,22 @@ TCP.IN.SetDataInPtrAndLen
lda ZPFrameInLen+1 lda ZPFrameInLen+1
sbc TmpOffset+1 sbc TmpOffset+1
sta ZPDataInLen+1 sta ZPDataInLen+1
lda TmpOffset
clc
adc #2
sta TmpOffset
bcc .1
inc TmpOffset+1
clc
.1 lda ZPFrameInPtr
adc TmpOffset
sta ZPDataInPtr
lda ZPFrameInPtr+1
adc #0
sta ZPDataInPtr+1
rts rts
*-------------------------------------- *--------------------------------------
TCP.OUT.SYN >LDYAI 0 TCP.OUT.SYN >LDYAI 0

View File

@ -44,6 +44,7 @@ L.MSG.TCPIPERR .DA MSG.TCPIPERR
L.MSG.SKTERR .DA MSG.SKTERR L.MSG.SKTERR .DA MSG.SKTERR
L.MSG.ABORT .DA MSG.ABORT L.MSG.ABORT .DA MSG.ABORT
L.MSG.INCOMING .DA MSG.INCOMING L.MSG.INCOMING .DA MSG.INCOMING
L.MSG.BYTE .DA MSG.BYTE
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBTCPIP CS.INIT >LDYA L.LIBTCPIP
@ -182,17 +183,18 @@ CS.RUN.CLIENT sta .1+1 hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.GetCA >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.GetCA
bcs .8 bcs .8
sta .2+1 sta .2+1
>SYSCALL PutCA
.1 lda #$ff hSocket
>PUSHA >PUSHA
>LDYA L.MSG.BYTE
>SYSCALL CPrintFYA
.1 lda #$ff hSocket
* >PUSHA
.2 lda #$ff data .2 lda #$ff data
>PUSHA * >PUSHA
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.PutC * >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.PutC
.8 clc .8 clc
rts rts
@ -246,6 +248,7 @@ MSG.TCPIPERR >CSTR "TELNETD:TCP/IP Not initialized properly\r\n"
MSG.SKTERR >CSTR "TELNETD:Listen Error\r\n" MSG.SKTERR >CSTR "TELNETD:Listen Error\r\n"
MSG.ABORT >CSTR "TELNETD:User Aborted\r\n" MSG.ABORT >CSTR "TELNETD:User Aborted\r\n"
MSG.INCOMING >CSTR "TELNETD:Incoming Connection From : %d.%d.%d.%d\r\n" MSG.INCOMING >CSTR "TELNETD:Incoming Connection From : %d.%d.%d.%d\r\n"
MSG.BYTE >CSTR "[%h]"
hLIBTCPIP .BS 1 hLIBTCPIP .BS 1
*-------------------------------------- *--------------------------------------
Socket .DA #S.SOCKET.SOCK.STREAM Socket .DA #S.SOCKET.SOCK.STREAM