mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-30 18:29:32 +00:00
Kernel version 0.9 : TCP, ACK problem solved! some additional fixes including corrected TCP payload length computation
This commit is contained in:
parent
28ac2e8a66
commit
a3c4b4f1fc
BIN
A2OSX.BOOT.po
BIN
A2OSX.BOOT.po
Binary file not shown.
BIN
A2OSX.DEV.po
BIN
A2OSX.DEV.po
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
|
@ -21,8 +21,8 @@ INSDRV UTHERNET.DRV 000E3A123456
|
||||||
#INSDRV UTHER2.AI.DRV 0008DC123456
|
#INSDRV UTHER2.AI.DRV 0008DC123456
|
||||||
#INSDRV LANCEGS.DRV
|
#INSDRV LANCEGS.DRV
|
||||||
STARTPROC TCPIP
|
STARTPROC TCPIP
|
||||||
#STARTPROC DHCPCLNT
|
STARTPROC DHCPCLNT
|
||||||
#STARTPROC TELNETD
|
STARTPROC TELNETD
|
||||||
#STARTPROC HTTPD
|
#STARTPROC HTTPD
|
||||||
#NFSMOUNT 192.168.1.5:/A2OSX /MNT/A2OSX
|
#NFSMOUNT 192.168.1.5:/A2OSX /MNT/A2OSX
|
||||||
#CIFSMOUNT 192.168.1.5:/MSSHARE /MNT/MSSHARE
|
#CIFSMOUNT 192.168.1.5:/MSSHARE /MNT/MSSHARE
|
||||||
|
|
|
@ -218,25 +218,33 @@ READBLOCK php
|
||||||
lda PacketPageDATA+1,x
|
lda PacketPageDATA+1,x
|
||||||
ldy PacketPageDATA,x
|
ldy PacketPageDATA,x
|
||||||
and /PP.RxEvent.RxOK+PP.RxEvent.IA+PP.RxEvent.Brdcast+PP.RxEvent.Runt
|
and /PP.RxEvent.RxOK+PP.RxEvent.IA+PP.RxEvent.Brdcast+PP.RxEvent.Runt
|
||||||
beq .9
|
bne .1
|
||||||
|
|
||||||
lda RTDATA+1,x discard RxStatus
|
lda #ERR.DEV.NOFRAME
|
||||||
|
|
||||||
|
.9 plp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.1 lda RTDATA+1,x discard RxStatus
|
||||||
lda RTDATA,x
|
lda RTDATA,x
|
||||||
|
|
||||||
ldy RTDATA+1,x get RxLength
|
lda RTDATA+1,x
|
||||||
sty Size+1
|
sta Size+1
|
||||||
|
|
||||||
lda RTDATA,x
|
lda RTDATA,x get RxLength
|
||||||
sta Size
|
sta Size
|
||||||
clc
|
clc
|
||||||
adc #2
|
adc #2
|
||||||
>PUSHA Size+2
|
tay
|
||||||
tya
|
|
||||||
|
lda Size+1
|
||||||
adc #0
|
adc #0
|
||||||
>PUSHA
|
|
||||||
|
>PUSHYA
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
bcs .99
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPTmpPTR
|
>STYA ZPTmpPTR
|
||||||
stx .8+1
|
stx .8+1
|
||||||
|
@ -287,12 +295,6 @@ READBLOCK php
|
||||||
plp
|
plp
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.DEV.NOFRAME
|
|
||||||
|
|
||||||
.99 plp
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
WRITEBLOCK php
|
WRITEBLOCK php
|
||||||
sei
|
sei
|
||||||
|
@ -389,8 +391,11 @@ OPEN jsr CLOSE
|
||||||
lda #PP.RxCTL.LID+PP.RxCTL.RxOKA+PP.RxCTL.IA+PP.RxCTL.BroadcastA+PP.RxCTL.RuntA
|
lda #PP.RxCTL.LID+PP.RxCTL.RxOKA+PP.RxCTL.IA+PP.RxCTL.BroadcastA+PP.RxCTL.RuntA
|
||||||
sta PacketPageDATA,x
|
sta PacketPageDATA,x
|
||||||
|
|
||||||
>LDYAI PP.MAC
|
lda /PP.MAC
|
||||||
>STYA PacketPagePTR,x
|
sta PacketPagePTR+1,x
|
||||||
|
lda #PP.MAC
|
||||||
|
sta PacketPagePTR,x
|
||||||
|
|
||||||
>LDYA MAC
|
>LDYA MAC
|
||||||
>STYA PacketPageDATA,x
|
>STYA PacketPageDATA,x
|
||||||
>LDYAI PP.MAC+2
|
>LDYAI PP.MAC+2
|
||||||
|
@ -428,14 +433,14 @@ CLOSE ldx DEVSLOTx0
|
||||||
lda #PP.SelfCTL.LID+PP.SelfCTL.RESET
|
lda #PP.SelfCTL.LID+PP.SelfCTL.RESET
|
||||||
sta PacketPageDATA,x
|
sta PacketPageDATA,x
|
||||||
|
|
||||||
ldy #0
|
lda /PP.SelfST
|
||||||
|
|
||||||
.1 lda /PP.SelfST
|
|
||||||
sta PacketPagePTR+1,x
|
sta PacketPagePTR+1,x
|
||||||
lda #PP.SelfST
|
lda #PP.SelfST
|
||||||
sta PacketPagePTR,x
|
sta PacketPagePTR,x
|
||||||
|
|
||||||
lda PacketPageDATA+1,x
|
ldy #0
|
||||||
|
|
||||||
|
.1 lda PacketPageDATA+1,x
|
||||||
lda PacketPageDATA,x
|
lda PacketPageDATA,x
|
||||||
and #PP.SelfST.InitDone
|
and #PP.SelfST.InitDone
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /A2OSX.SRC
|
PREFIX /A2OSX.SRC
|
||||||
LOMEM $A00
|
LOMEM $900
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
|
@ -361,6 +361,7 @@ DNS.EXPIRE >LDYA L.DNS.CACHE
|
||||||
DNS.FREE ldy #S.DNSCACHE.hNAME
|
DNS.FREE ldy #S.DNSCACHE.hNAME
|
||||||
lda (ZPCachePtr),y
|
lda (ZPCachePtr),y
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
>SYSCALL FreeMemA
|
>SYSCALL FreeMemA
|
||||||
.1 lda #0
|
.1 lda #0
|
||||||
sta (ZPCachePtr)
|
sta (ZPCachePtr)
|
||||||
|
@ -368,6 +369,7 @@ DNS.FREE ldy #S.DNSCACHE.hNAME
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DNS.POLL lda hDNSSocket1
|
DNS.POLL lda hDNSSocket1
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jsr SKT.ReadA
|
jsr SKT.ReadA
|
||||||
bcs .8
|
bcs .8
|
||||||
jsr DNS.DecodeMsg
|
jsr DNS.DecodeMsg
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /A2OSX.SRC
|
PREFIX /A2OSX.SRC
|
||||||
LOMEM $A00
|
LOMEM $900
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
|
@ -110,7 +110,9 @@ SKT.New.Listen sec
|
||||||
lda #S.SOCKET.TCP.STATUS.SYNSENT
|
lda #S.SOCKET.TCP.STATUS.SYNSENT
|
||||||
sta (ZPPtrSKT),y
|
sta (ZPPtrSKT),y
|
||||||
|
|
||||||
.8 ldx TmpOffset
|
.8 lda TmpOffset
|
||||||
|
ora #$80
|
||||||
|
tax
|
||||||
>LDYA ZPTmpPtr3
|
>LDYA ZPTmpPtr3
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
@ -120,7 +122,7 @@ SKT.New.Listen sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.New.TCB >PUSHWI S.TCB
|
SKT.New.TCB >PUSHWI S.TCB
|
||||||
>PUSHBI S.MEM.F.INIT0
|
>PUSHBI 0
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -130,6 +132,12 @@ SKT.New.TCB >PUSHWI S.TCB
|
||||||
ldy #S.SOCKET.SQ.hTCB
|
ldy #S.SOCKET.SQ.hTCB
|
||||||
sta (ZPTmpPtr3),y
|
sta (ZPTmpPtr3),y
|
||||||
|
|
||||||
|
ldx #S.TCB.OUTUSED+1
|
||||||
|
|
||||||
|
.1 stz SKT.TCBCache,x
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
lda #K.TCP.WSIZE
|
lda #K.TCP.WSIZE
|
||||||
sta SKT.TCBCache+S.TCB.INFREE
|
sta SKT.TCBCache+S.TCB.INFREE
|
||||||
sta SKT.TCBCache+S.TCB.OUTFREE
|
sta SKT.TCBCache+S.TCB.OUTFREE
|
||||||
|
@ -178,7 +186,8 @@ SKT.New.TCB >PUSHWI S.TCB
|
||||||
* A = hSocket
|
* A = hSocket
|
||||||
* ##Out :
|
* ##Out :
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
SKT.CloseA cmp #K.SKTTABLE.SIZE
|
SKT.CloseA and #$7f
|
||||||
|
cmp #K.SKTTABLE.SIZE
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr SKT.GetA.I
|
jsr SKT.GetA.I
|
||||||
|
@ -249,42 +258,53 @@ SKT.CloseA cmp #K.SKTTABLE.SIZE
|
||||||
* ##Out :
|
* ##Out :
|
||||||
* Y,A = pS.SOCKET
|
* Y,A = pS.SOCKET
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
SKT.GetA cmp #K.SKTTABLE.SIZE
|
SKT.GetA jsr SKT.GetA.I
|
||||||
bcs SKT.GetA.9
|
|
||||||
|
|
||||||
jsr SKT.GetA.I
|
bcs .9
|
||||||
|
|
||||||
bcs SKT.GetA.9
|
|
||||||
|
|
||||||
>LDYA ZPPtrSKT
|
>LDYA ZPPtrSKT
|
||||||
rts
|
|
||||||
|
|
||||||
SKT.GetA.I pha
|
.9 rts
|
||||||
|
|
||||||
|
SKT.GetA.I and #$7f
|
||||||
|
|
||||||
|
cmp #K.SKTTABLE.SIZE
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
pha
|
||||||
lda hSocketTable
|
lda hSocketTable
|
||||||
>SYSCALL GetMemPtrA
|
>SYSCALL GetMemPtrA
|
||||||
>STYA ZPPtrSKT
|
>STYA ZPPtrSKT
|
||||||
|
|
||||||
plx
|
pla
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.1 lda ZPPtrSKT
|
stz .1+1
|
||||||
|
lsr
|
||||||
|
ror .1+1
|
||||||
|
lsr
|
||||||
|
ror .1+1
|
||||||
|
lsr
|
||||||
|
ror .1+1
|
||||||
|
|
||||||
|
pha
|
||||||
|
|
||||||
|
lda ZPPtrSKT
|
||||||
clc
|
clc
|
||||||
adc #S.SOCKET
|
.1 adc #$ff
|
||||||
sta ZPPtrSKT
|
sta ZPPtrSKT
|
||||||
bcc .2
|
|
||||||
|
|
||||||
inc ZPPtrSKT+1
|
pla
|
||||||
|
adc ZPPtrSKT+1
|
||||||
.2 dex
|
sta ZPPtrSKT+1
|
||||||
bne .1
|
|
||||||
|
|
||||||
.8 lda (ZPPtrSKT)
|
.8 lda (ZPPtrSKT)
|
||||||
beq SKT.GetA.9
|
beq .9
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
SKT.GetA.9 lda #ERR.SKT.BAD
|
.9 lda #ERR.SKT.BAD
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
@ -651,16 +671,16 @@ SKT.AddToQueueA sta .2+1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.AckDataToSktOut
|
SKT.AckDataToSktOut
|
||||||
ldy #S.TCP.ACK.NUMBER+3 Get new ACK number from FrameIn...
|
ldy #S.TCP.ACK.NUMBER+3 Get new ACK number from FrameIn...
|
||||||
ldx #3 Substract old SEQ from socket
|
ldx #3 Substract old ACK from socket
|
||||||
|
|
||||||
sec
|
sec
|
||||||
|
|
||||||
.1 lda (ZPFrameInPtr),y
|
.1 lda (ZPFrameInPtr),y
|
||||||
pha
|
pha
|
||||||
sbc SKT.TCBCache+S.TCB.SEQNUM,x
|
sbc SKT.TCBCache+S.TCB.ACKNUM,x
|
||||||
sta TmpDWord,x
|
sta TmpDWord,x
|
||||||
pla
|
pla
|
||||||
sta SKT.TCBCache+S.TCB.SEQNUM,x
|
sta SKT.TCBCache+S.TCB.ACKNUM,x
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
@ -701,8 +721,6 @@ SKT.AckDataToSktOut
|
||||||
* Dst : hInMem/INHEAD
|
* Dst : hInMem/INHEAD
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.AddDataToSktIn
|
SKT.AddDataToSktIn
|
||||||
jsr SKT.GetTCB
|
|
||||||
|
|
||||||
ldx SKT.TCBCache+S.TCB.INFREE
|
ldx SKT.TCBCache+S.TCB.INFREE
|
||||||
cpx ZPDataInLen
|
cpx ZPDataInLen
|
||||||
lda SKT.TCBCache+S.TCB.INFREE+1
|
lda SKT.TCBCache+S.TCB.INFREE+1
|
||||||
|
@ -770,6 +788,7 @@ SKT.AddDataToSktIn
|
||||||
sec
|
sec
|
||||||
sbc ZPDataInLen
|
sbc ZPDataInLen
|
||||||
sta SKT.TCBCache+S.TCB.INFREE
|
sta SKT.TCBCache+S.TCB.INFREE
|
||||||
|
|
||||||
lda SKT.TCBCache+S.TCB.INFREE+1
|
lda SKT.TCBCache+S.TCB.INFREE+1
|
||||||
sbc ZPDataInLen+1
|
sbc ZPDataInLen+1
|
||||||
sta SKT.TCBCache+S.TCB.INFREE+1
|
sta SKT.TCBCache+S.TCB.INFREE+1
|
||||||
|
@ -778,6 +797,7 @@ SKT.AddDataToSktIn
|
||||||
clc
|
clc
|
||||||
adc ZPDataInLen
|
adc ZPDataInLen
|
||||||
sta SKT.TCBCache+S.TCB.INUSED
|
sta SKT.TCBCache+S.TCB.INUSED
|
||||||
|
|
||||||
lda SKT.TCBCache+S.TCB.INUSED+1
|
lda SKT.TCBCache+S.TCB.INUSED+1
|
||||||
adc ZPDataInLen+1
|
adc ZPDataInLen+1
|
||||||
sta SKT.TCBCache+S.TCB.INUSED+1
|
sta SKT.TCBCache+S.TCB.INUSED+1
|
||||||
|
@ -938,31 +958,34 @@ SKT.GetDataFromSktOut
|
||||||
|
|
||||||
.5 lda SKT.TCBCache+S.TCB.OUTFREE
|
.5 lda SKT.TCBCache+S.TCB.OUTFREE
|
||||||
clc
|
clc
|
||||||
adc ZPDataInLen
|
adc ZPDataOutLen
|
||||||
sta SKT.TCBCache+S.TCB.OUTFREE
|
sta SKT.TCBCache+S.TCB.OUTFREE
|
||||||
|
|
||||||
lda SKT.TCBCache+S.TCB.OUTFREE+1
|
lda SKT.TCBCache+S.TCB.OUTFREE+1
|
||||||
adc ZPDataInLen+1
|
adc ZPDataOutLen+1
|
||||||
sta SKT.TCBCache+S.TCB.OUTFREE+1
|
sta SKT.TCBCache+S.TCB.OUTFREE+1
|
||||||
|
|
||||||
lda SKT.TCBCache+S.TCB.OUTUSED
|
lda SKT.TCBCache+S.TCB.OUTUSED
|
||||||
sec
|
sec
|
||||||
sbc ZPDataInLen
|
sbc ZPDataOutLen
|
||||||
sta SKT.TCBCache+S.TCB.OUTUSED
|
sta SKT.TCBCache+S.TCB.OUTUSED
|
||||||
|
|
||||||
lda SKT.TCBCache+S.TCB.OUTUSED+1
|
lda SKT.TCBCache+S.TCB.OUTUSED+1
|
||||||
sbc ZPDataInLen+1
|
sbc ZPDataOutLen+1
|
||||||
sta SKT.TCBCache+S.TCB.OUTUSED+1
|
sta SKT.TCBCache+S.TCB.OUTUSED+1
|
||||||
|
|
||||||
lda SKT.TCBCache+S.TCB.SEQNUM
|
lda SKT.TCBCache+S.TCB.SEQNUM+3
|
||||||
clc
|
clc
|
||||||
adc ZPDataInLen
|
adc ZPDataOutLen
|
||||||
sta SKT.TCBCache+S.TCB.SEQNUM
|
sta SKT.TCBCache+S.TCB.SEQNUM+3
|
||||||
lda SKT.TCBCache+S.TCB.SEQNUM+1
|
|
||||||
adc ZPDataInLen+1
|
lda SKT.TCBCache+S.TCB.SEQNUM+2
|
||||||
sta SKT.TCBCache+S.TCB.SEQNUM+1
|
adc ZPDataOutLen+1
|
||||||
|
sta SKT.TCBCache+S.TCB.SEQNUM+2
|
||||||
bcc .8
|
bcc .8
|
||||||
inc SKT.TCBCache+S.TCB.SEQNUM+2
|
inc SKT.TCBCache+S.TCB.SEQNUM+1
|
||||||
bne .8
|
bne .8
|
||||||
inc SKT.TCBCache+S.TCB.SEQNUM+3
|
inc SKT.TCBCache+S.TCB.SEQNUM
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
@ -971,13 +994,18 @@ SKT.GetDataFromSktOut
|
||||||
* In:
|
* In:
|
||||||
* Src : hInMem/INTAIL
|
* Src : hInMem/INTAIL
|
||||||
* Dst : ZPDataOutPtr/ZPDataOutLen
|
* Dst : ZPDataOutPtr/ZPDataOutLen
|
||||||
* CS : Text Mode
|
* bTextMode
|
||||||
* CC : Binary Mode
|
|
||||||
* Out:
|
* Out:
|
||||||
* Y,A = bytes read
|
* Y,A = bytes read
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.GetDataFromSktIn
|
SKT.GetDataFromSktIn
|
||||||
ldy #S.SOCKET.SQ.hInMem
|
lda SKT.TCBCache+S.TCB.INUSED
|
||||||
|
ora SKT.TCBCache+S.TCB.INUSED+1
|
||||||
|
bne .10
|
||||||
|
sec
|
||||||
|
rts NO DATA
|
||||||
|
|
||||||
|
.10 ldy #S.SOCKET.SQ.hInMem
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
>SYSCALL GetMemPtrA
|
>SYSCALL GetMemPtrA
|
||||||
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
||||||
|
@ -1089,19 +1117,19 @@ SKT.GetDataFromSktIn
|
||||||
sbc ZPTmpPtr3+1
|
sbc ZPTmpPtr3+1
|
||||||
sta SKT.TCBCache+S.TCB.INUSED+1
|
sta SKT.TCBCache+S.TCB.INUSED+1
|
||||||
|
|
||||||
lda SKT.TCBCache+S.TCB.ACKNUM
|
lda SKT.TCBCache+S.TCB.ACKNUM+3
|
||||||
clc
|
clc
|
||||||
adc ZPTmpPtr3
|
adc ZPTmpPtr3
|
||||||
sta SKT.TCBCache+S.TCB.ACKNUM
|
sta SKT.TCBCache+S.TCB.ACKNUM+3
|
||||||
|
|
||||||
lda SKT.TCBCache+S.TCB.ACKNUM+1
|
lda SKT.TCBCache+S.TCB.ACKNUM+2
|
||||||
adc ZPTmpPtr3+1
|
adc ZPTmpPtr3+1
|
||||||
sta SKT.TCBCache+S.TCB.ACKNUM+1
|
sta SKT.TCBCache+S.TCB.ACKNUM+2
|
||||||
|
|
||||||
bcc .80
|
bcc .80
|
||||||
inc SKT.TCBCache+S.TCB.ACKNUM+2
|
inc SKT.TCBCache+S.TCB.ACKNUM+1
|
||||||
bne .80
|
bne .80
|
||||||
inc SKT.TCBCache+S.TCB.ACKNUM+3
|
inc SKT.TCBCache+S.TCB.ACKNUM
|
||||||
|
|
||||||
.80 jsr SKT.StoreTCB
|
.80 jsr SKT.StoreTCB
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /A2OSX.SRC
|
PREFIX /A2OSX.SRC
|
||||||
LOMEM $A00
|
LOMEM $900
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
|
@ -292,45 +292,50 @@ TCP.IN.JMP.CLOSED
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.IN.SetDataInPtrAndLen
|
TCP.IN.SetDataInPtrAndLen
|
||||||
|
ldy #S.IP.TOTAL.LENGTH+1
|
||||||
|
lda (ZPFrameInPtr),y
|
||||||
|
sec
|
||||||
|
sbc #S.IP-S.ETH
|
||||||
|
sta ZPDataInLen
|
||||||
|
|
||||||
|
dey
|
||||||
|
lda (ZPFrameInPtr),y
|
||||||
|
sbc /S.IP-S.ETH
|
||||||
|
sta ZPDataInLen+1
|
||||||
|
|
||||||
ldy #S.TCP.DATAOFFSET
|
ldy #S.TCP.DATAOFFSET
|
||||||
lda (ZPFrameInPtr),y
|
lda (ZPFrameInPtr),y
|
||||||
and #$F0 Get TCP Header len in DWORD
|
and #$F0 Get TCP Header len in DWORD
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
|
|
||||||
* clc
|
|
||||||
adc #S.IP-2
|
|
||||||
sta TmpOffset
|
sta TmpOffset
|
||||||
|
|
||||||
lda #0
|
lda ZPDataInLen
|
||||||
adc /S.IP-2
|
|
||||||
sta TmpOffset+1 TmpOffset=Data Offset in Frame
|
|
||||||
|
|
||||||
lda ZPFrameInLen
|
|
||||||
sec
|
sec
|
||||||
sbc TmpOffset
|
sbc TmpOffset
|
||||||
sta ZPDataInLen
|
sta ZPDataInLen
|
||||||
|
|
||||||
lda ZPFrameInLen+1
|
bcs .1
|
||||||
sbc TmpOffset+1
|
dec ZPDataInLen+1
|
||||||
sta ZPDataInLen+1
|
|
||||||
|
|
||||||
lda TmpOffset
|
|
||||||
clc
|
|
||||||
adc #2
|
|
||||||
sta TmpOffset
|
|
||||||
bcc .1
|
|
||||||
inc TmpOffset+1
|
|
||||||
clc
|
|
||||||
|
|
||||||
.1 lda ZPFrameInPtr
|
.1 lda ZPFrameInPtr
|
||||||
adc TmpOffset
|
clc
|
||||||
|
adc #S.IP
|
||||||
sta ZPDataInPtr
|
sta ZPDataInPtr
|
||||||
|
|
||||||
lda ZPFrameInPtr+1
|
lda ZPFrameInPtr+1
|
||||||
adc #0
|
adc /S.IP
|
||||||
sta ZPDataInPtr+1
|
sta ZPDataInPtr+1
|
||||||
rts
|
|
||||||
|
lda ZPDataInPtr
|
||||||
|
clc
|
||||||
|
adc TmpOffset
|
||||||
|
sta ZPDataInPtr
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
inc ZPDataInPtr+1
|
||||||
|
|
||||||
|
.2 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.OUT.SYN >LDYAI 0
|
TCP.OUT.SYN >LDYAI 0
|
||||||
jsr TCP.NewFrame
|
jsr TCP.NewFrame
|
||||||
|
|
|
@ -167,7 +167,7 @@ POLL ldx #DEVMGR.READBLOCK
|
||||||
cpx /S.ETH.ETHERTYPE.IP
|
cpx /S.ETH.ETHERTYPE.IP
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr DumpFrame
|
* jsr DumpFrame
|
||||||
|
|
||||||
jmp IP.IN
|
jmp IP.IN
|
||||||
|
|
||||||
|
|
|
@ -114,11 +114,6 @@ CS.RUN >PUSHW L.Socket
|
||||||
ldy #hSocket
|
ldy #hSocket
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
ldy #bSocketClose
|
|
||||||
lda #$ff
|
|
||||||
sta (pData),y
|
|
||||||
|
|
||||||
|
|
||||||
>LDYA L.MSG.CFG1
|
>LDYA L.MSG.CFG1
|
||||||
>SYSCALL CPrintFYA
|
>SYSCALL CPrintFYA
|
||||||
|
|
||||||
|
@ -243,13 +238,10 @@ CS.DOEVENT lda (pEvent)
|
||||||
.9 sec do not discard TIMER event
|
.9 sec do not discard TIMER event
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT ldy #bSocketClose
|
CS.QUIT ldy #hSocket
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
ldy #hSocket
|
|
||||||
lda (pData),y
|
|
||||||
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.CloseA
|
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.CloseA
|
||||||
|
|
||||||
.1 lda hLIBTCPIP
|
.1 lda hLIBTCPIP
|
||||||
|
@ -504,7 +496,6 @@ DHCP.REQ.LEN .EQ *-DHCP.REQ
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DS.START
|
DS.START
|
||||||
TimeOut .BS 1
|
TimeOut .BS 1
|
||||||
bSocketClose .BS 1
|
|
||||||
hSocket .BS 1
|
hSocket .BS 1
|
||||||
hFrame .BS 1
|
hFrame .BS 1
|
||||||
DS.END
|
DS.END
|
||||||
|
|
|
@ -20,25 +20,20 @@ ERR.Print >PUSHA Save EC for PrintF
|
||||||
cpy #ERR.Count
|
cpy #ERR.Count
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.2 sty .3+1
|
.2 lda L.ERR.Messages
|
||||||
|
|
||||||
lda L.ERR.Messages
|
|
||||||
sta ZPPTR1
|
sta ZPPTR1
|
||||||
lda L.ERR.Messages+1
|
lda L.ERR.Messages+1
|
||||||
sta ZPPTR1+1
|
sta ZPPTR1+1
|
||||||
|
|
||||||
ldy #0
|
.3 dey
|
||||||
|
bmi .8
|
||||||
.3 cpy #$ff Self Modified
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
lda (ZPPTR1)
|
lda (ZPPTR1)
|
||||||
sec
|
sec
|
||||||
adc ZPPTR1
|
adc ZPPTR1
|
||||||
sta ZPPTR1
|
sta ZPPTR1
|
||||||
bcc .4
|
bcc .3
|
||||||
inc ZPPTR1+1
|
inc ZPPTR1+1
|
||||||
.4 iny
|
|
||||||
bra .3
|
bra .3
|
||||||
|
|
||||||
.8 >PUSHW ZPPTR1
|
.8 >PUSHW ZPPTR1
|
||||||
|
|
|
@ -106,24 +106,7 @@ CS.RUN.INIT ldx #3
|
||||||
jsr CS.RUN.SERVER
|
jsr CS.RUN.SERVER
|
||||||
bcs CS.RUN.ERR
|
bcs CS.RUN.ERR
|
||||||
|
|
||||||
ldy #SktIndex
|
|
||||||
lda (pData),y
|
|
||||||
tay
|
|
||||||
lda (pData),y hSockets
|
|
||||||
|
|
||||||
beq .3
|
|
||||||
|
|
||||||
jsr CS.RUN.CLIENT
|
jsr CS.RUN.CLIENT
|
||||||
|
|
||||||
.3 ldy #SktIndex
|
|
||||||
lda (pData),y
|
|
||||||
inc
|
|
||||||
cmp #CONN.MAX
|
|
||||||
bne .4
|
|
||||||
lda #0
|
|
||||||
|
|
||||||
.4 sta (pData),y
|
|
||||||
|
|
||||||
bra .2
|
bra .2
|
||||||
|
|
||||||
.9 >LDYA L.MSG.SKTERR
|
.9 >LDYA L.MSG.SKTERR
|
||||||
|
@ -161,6 +144,7 @@ CS.RUN.SERVER ldy #hSrvSocket
|
||||||
|
|
||||||
.2 pla
|
.2 pla
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
sta .4+1
|
||||||
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.GetA
|
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.GetA
|
||||||
>STYA ZPSktPtr
|
>STYA ZPSktPtr
|
||||||
|
@ -173,16 +157,29 @@ CS.RUN.SERVER ldy #hSrvSocket
|
||||||
dex
|
dex
|
||||||
bpl .3
|
bpl .3
|
||||||
|
|
||||||
|
.4 lda #$ff
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
>LDYA L.MSG.INCOMING
|
>LDYA L.MSG.INCOMING
|
||||||
>SYSCALL CPrintFYA
|
>SYSCALL CPrintFYA
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.CLIENT sta .1+1 hSocket
|
CS.RUN.CLIENT ldy #SktIndex
|
||||||
|
lda (pData),y
|
||||||
|
tay
|
||||||
|
lda (pData),y hSockets
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
sta .1+1 hSocket
|
||||||
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.GetCA
|
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.GetCA
|
||||||
bcs .8
|
bcc .10
|
||||||
sta .2+1
|
|
||||||
|
tax
|
||||||
|
beq .8 NO DATA
|
||||||
|
|
||||||
|
.10 sta .2+1
|
||||||
|
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>LDYA L.MSG.BYTE
|
>LDYA L.MSG.BYTE
|
||||||
|
@ -196,7 +193,16 @@ CS.RUN.CLIENT sta .1+1 hSocket
|
||||||
|
|
||||||
* >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.PutC
|
* >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.PutC
|
||||||
|
|
||||||
.8 clc
|
.8 ldy #SktIndex
|
||||||
|
lda (pData),y
|
||||||
|
inc
|
||||||
|
cmp #CONN.MAX
|
||||||
|
bne .81
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
.81 sta (pData),y
|
||||||
|
|
||||||
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT sec
|
CS.DOEVENT sec
|
||||||
|
@ -220,9 +226,10 @@ CS.QUIT ldx #CONN.MAX
|
||||||
|
|
||||||
ldy #hSrvSocket
|
ldy #hSrvSocket
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
|
beq .3
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.CLOSEA
|
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.CLOSEA
|
||||||
|
|
||||||
lda hLIBTCPIP
|
.3 lda hLIBTCPIP
|
||||||
>SYSCALL UnloadLibA
|
>SYSCALL UnloadLibA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
@ -247,7 +254,7 @@ MSG.INITOK >CSTR "TELNETD:Init Ok, Listening.\r\n"
|
||||||
MSG.TCPIPERR >CSTR "TELNETD:TCP/IP Not initialized properly\r\n"
|
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 [SKT=%h] From : %d.%d.%d.%d\r\n"
|
||||||
MSG.BYTE >CSTR "[%h]"
|
MSG.BYTE >CSTR "[%h]"
|
||||||
hLIBTCPIP .BS 1
|
hLIBTCPIP .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue
Block a user