mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-18 00:30:40 +00:00
Kernel 0.93
This commit is contained in:
parent
172b970eb8
commit
77d18f41df
Binary file not shown.
@ -101,8 +101,8 @@ DNS.REQUEST lda hDNSSocket
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
.99 lda #ERR.DNS.ERROR
|
.99 lda #ERR.DNS.ERROR
|
||||||
.9 sec
|
sec
|
||||||
rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DNS.REQUEST.SEND
|
DNS.REQUEST.SEND
|
||||||
>LDYAI UDP.PORT.DNS
|
>LDYAI UDP.PORT.DNS
|
||||||
@ -439,19 +439,16 @@ DNS.FREE ldy #S.DNSCACHE.hNAME
|
|||||||
>SYSCALL2 FreeMem
|
>SYSCALL2 FreeMem
|
||||||
.1 lda #0
|
.1 lda #0
|
||||||
sta (ZPCachePtr)
|
sta (ZPCachePtr)
|
||||||
|
DNS.FREE.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DNS.POLL lda hDNSSocket
|
DNS.POLL lda hDNSSocket
|
||||||
beq .8
|
beq DNS.FREE.RTS
|
||||||
jsr SKT.Recv
|
|
||||||
bcs .8
|
|
||||||
|
|
||||||
jsr DNS.DecodeMsg
|
jsr SKT.Recv
|
||||||
|
bcs DNS.FREE.RTS
|
||||||
.8 clc
|
|
||||||
rts
|
sta hFrameIn
|
||||||
*--------------------------------------
|
|
||||||
DNS.DecodeMsg sta hFrameIn
|
|
||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
>STYA ZPFrameInPtr
|
>STYA ZPFrameInPtr
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ ICMP.IN.ECHOREQ ldy #S.IP.DST+3
|
|||||||
jsr ARP.AddFromFrameInPtr
|
jsr ARP.AddFromFrameInPtr
|
||||||
|
|
||||||
lda hFrameIn
|
lda hFrameIn
|
||||||
stz hFrameIn DO NOT DISCARD this frame,it is SOURCE frame!!!
|
* stz hFrameIn DO NOT DISCARD this frame,it is SOURCE frame!!!
|
||||||
|
|
||||||
sta hFrameOut
|
sta hFrameOut
|
||||||
>LDYA ZPFrameInPtr
|
>LDYA ZPFrameInPtr
|
||||||
@ -60,23 +60,19 @@ ICMP.IN.ECHOREP jsr FRM.GetTargetSKT.RAW
|
|||||||
sta SKT.LOC.ADDR+S.SOCKADDR.PORT+1
|
sta SKT.LOC.ADDR+S.SOCKADDR.PORT+1
|
||||||
|
|
||||||
jsr SKT.FindMatchingLocRem
|
jsr SKT.FindMatchingLocRem
|
||||||
bcs .9
|
bcs ICMP.IN.EXIT
|
||||||
|
|
||||||
ldy #S.SOCKET.PROTO
|
ldy #S.SOCKET.PROTO
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
ldy #S.SOCKET.PROTO
|
ldy #S.SOCKET.PROTO
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
cmp #S.IP.PROTOCOL.ICMP
|
cmp #S.IP.PROTOCOL.ICMP
|
||||||
bne .9
|
bne ICMP.IN.EXIT
|
||||||
|
|
||||||
lda hFrameIn
|
lda hFrameIn
|
||||||
jsr SKT.AddToQueueA
|
jsr SKT.AddToQueueA
|
||||||
bcc .8
|
bcs ICMP.IN.EXIT Q full, discard...
|
||||||
|
rts
|
||||||
.9 lda hFrameIn Q full, discard...
|
|
||||||
stz hFrameIn
|
|
||||||
>SYSCALL2 FreeMem
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/LIB/LIBTCPIP.S.ICMP
|
SAVE USR/SRC/LIB/LIBTCPIP.S.ICMP
|
||||||
|
@ -390,21 +390,25 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen
|
|||||||
|
|
||||||
ldy #S.SOCKET.TCP.INUSED
|
ldy #S.SOCKET.TCP.INUSED
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
|
tax
|
||||||
iny
|
iny
|
||||||
ora (ZPPtrSKT),y
|
ora (ZPPtrSKT),y
|
||||||
bne SKT.GetDataFromSktIn
|
beq .7 no data, go check SKT status
|
||||||
|
|
||||||
|
cpx ZPDataInLen XA = Data in pipe
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
sbc ZPDataInLen+1
|
||||||
|
bcs SKT.GetDataFromSktIn more data in pipe, get full buffer of data
|
||||||
|
|
||||||
jsr SKT.CheckStream
|
stx ZPDataInLen less data than buff size, Get only INUSED data
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
sta ZPDataInLen+1
|
||||||
|
bra SKT.GetDataFromSktIn
|
||||||
|
|
||||||
|
.7 jsr SKT.CheckStream
|
||||||
bcs .99 I/O error
|
bcs .99 I/O error
|
||||||
|
|
||||||
* ldy #S.SOCKET.TCP.O
|
lda #E.NODATA
|
||||||
* lda (ZPPtrSKT),y
|
|
||||||
* bit #S.TCP.OPTIONS.ACK
|
|
||||||
* beq .8
|
|
||||||
|
|
||||||
* jsr TCP.OUT.SendOptA
|
|
||||||
|
|
||||||
.8 lda #E.NODATA
|
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -422,12 +426,13 @@ SKT.GetDataFromSktIn
|
|||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
||||||
|
|
||||||
lda ZPTmpPtr1
|
pha
|
||||||
clc
|
tya
|
||||||
|
* clc
|
||||||
adc SKT.Cache+S.SOCKET.TCP.INTAIL
|
adc SKT.Cache+S.SOCKET.TCP.INTAIL
|
||||||
sta ZPTmpPtr2
|
sta ZPTmpPtr2
|
||||||
|
|
||||||
lda ZPTmpPtr1+1
|
pla
|
||||||
adc SKT.Cache+S.SOCKET.TCP.INTAIL+1
|
adc SKT.Cache+S.SOCKET.TCP.INTAIL+1
|
||||||
sta ZPTmpPtr2+1
|
sta ZPTmpPtr2+1
|
||||||
|
|
||||||
@ -439,9 +444,6 @@ SKT.GetDataFromSktIn
|
|||||||
eor #$FF
|
eor #$FF
|
||||||
pha
|
pha
|
||||||
|
|
||||||
stz ZPTmpPtr3 Reset byte counter
|
|
||||||
stz ZPTmpPtr3+1
|
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 inx Check if room left in dest buffer
|
.1 inx Check if room left in dest buffer
|
||||||
@ -452,17 +454,13 @@ SKT.GetDataFromSktIn
|
|||||||
|
|
||||||
pha
|
pha
|
||||||
|
|
||||||
.2 lda SKT.Cache+S.SOCKET.TCP.INTAIL
|
.2 lda (ZPTmpPtr2)
|
||||||
eor SKT.Cache+S.SOCKET.TCP.INHEAD
|
sta (ZPDataInPtr),y
|
||||||
|
iny
|
||||||
bne .3
|
bne .3
|
||||||
lda SKT.Cache+S.SOCKET.TCP.INTAIL+1
|
inc ZPDataInPtr+1
|
||||||
eor SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
|
||||||
beq .7
|
|
||||||
|
|
||||||
.3 lda (ZPTmpPtr2)
|
.3 inc SKT.Cache+S.SOCKET.TCP.INTAIL
|
||||||
pha
|
|
||||||
|
|
||||||
inc SKT.Cache+S.SOCKET.TCP.INTAIL
|
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
inc SKT.Cache+S.SOCKET.TCP.INTAIL+1
|
inc SKT.Cache+S.SOCKET.TCP.INTAIL+1
|
||||||
@ -475,36 +473,22 @@ SKT.GetDataFromSktIn
|
|||||||
sta ZPTmpPtr2
|
sta ZPTmpPtr2
|
||||||
lda ZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
sta ZPTmpPtr2+1
|
sta ZPTmpPtr2+1
|
||||||
bra .5
|
|
||||||
|
|
||||||
.4 inc ZPTmpPtr2
|
|
||||||
bne .5
|
|
||||||
inc ZPTmpPtr2+1
|
|
||||||
|
|
||||||
.5 pla get back data....
|
|
||||||
|
|
||||||
.6 sta (ZPDataInPtr),y
|
|
||||||
iny
|
|
||||||
bne .61
|
|
||||||
inc ZPDataInPtr+1
|
|
||||||
|
|
||||||
.61 inc ZPTmpPtr3
|
|
||||||
bne .1
|
|
||||||
inc ZPTmpPtr3+1
|
|
||||||
|
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.7 pla discard byte counter HI
|
.4 inc ZPTmpPtr2
|
||||||
|
bne .1
|
||||||
.8 >ADC16 SKT.Cache+S.SOCKET.TCP.INFREE,ZPTmpPtr3
|
inc ZPTmpPtr2+1
|
||||||
>SBC16 SKT.Cache+S.SOCKET.TCP.INUSED,ZPTmpPtr3
|
bra .1
|
||||||
|
|
||||||
|
.8 >ADC16 SKT.Cache+S.SOCKET.TCP.INFREE,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 ZPTmpPtr3
|
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 ZPTmpPtr3+1
|
adc ZPDataInLen+1
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTACKNUM+2
|
sta SKT.Cache+S.SOCKET.TCP.OUTACKNUM+2
|
||||||
|
|
||||||
bcc .80
|
bcc .80
|
||||||
@ -521,7 +505,7 @@ SKT.GetDataFromSktIn
|
|||||||
|
|
||||||
* jsr TCP.OUT.I SKT.GetTCB already called
|
* jsr TCP.OUT.I SKT.GetTCB already called
|
||||||
|
|
||||||
>LDYA ZPTmpPtr3
|
>LDYA ZPDataInLen
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
@ -564,12 +548,13 @@ SKT.AddDataToSktOut
|
|||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
||||||
|
|
||||||
lda ZPTmpPtr1
|
pha
|
||||||
clc
|
tya
|
||||||
|
* clc
|
||||||
adc SKT.Cache+S.SOCKET.TCP.OUTHEAD
|
adc SKT.Cache+S.SOCKET.TCP.OUTHEAD
|
||||||
sta ZPTmpPtr2
|
sta ZPTmpPtr2
|
||||||
|
|
||||||
lda ZPTmpPtr1+1
|
pla
|
||||||
adc SKT.Cache+S.SOCKET.TCP.OUTHEAD+1
|
adc SKT.Cache+S.SOCKET.TCP.OUTHEAD+1
|
||||||
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
|
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
|
||||||
|
|
||||||
@ -597,24 +582,26 @@ SKT.AddDataToSktOut
|
|||||||
bne .3
|
bne .3
|
||||||
inc ZPDataInPtr+1
|
inc ZPDataInPtr+1
|
||||||
|
|
||||||
.3 inc ZPTmpPtr2
|
.3 inc SKT.Cache+S.SOCKET.TCP.OUTHEAD
|
||||||
bne .4
|
bne .4
|
||||||
inc ZPTmpPtr2+1
|
|
||||||
|
|
||||||
.4 inc SKT.Cache+S.SOCKET.TCP.OUTHEAD
|
|
||||||
bne .1
|
|
||||||
inc SKT.Cache+S.SOCKET.TCP.OUTHEAD+1
|
inc SKT.Cache+S.SOCKET.TCP.OUTHEAD+1
|
||||||
lda SKT.Cache+S.SOCKET.TCP.OUTHEAD+1
|
lda SKT.Cache+S.SOCKET.TCP.OUTHEAD+1
|
||||||
cmp /K.TCP.WSIZE
|
cmp /K.TCP.WSIZE
|
||||||
bne .1
|
bne .4
|
||||||
stz SKT.Cache+S.SOCKET.TCP.OUTHEAD+1
|
|
||||||
|
|
||||||
|
stz SKT.Cache+S.SOCKET.TCP.OUTHEAD+1
|
||||||
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
||||||
sta ZPTmpPtr2
|
sta ZPTmpPtr2
|
||||||
lda ZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
sta ZPTmpPtr2+1
|
sta ZPTmpPtr2+1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
|
.4 inc ZPTmpPtr2
|
||||||
|
bne .1
|
||||||
|
inc ZPTmpPtr2+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
.8 >SBC16 SKT.Cache+S.SOCKET.TCP.OUTFREE,ZPDataInLen
|
.8 >SBC16 SKT.Cache+S.SOCKET.TCP.OUTFREE,ZPDataInLen
|
||||||
>ADC16 SKT.Cache+S.SOCKET.TCP.OUTUSED,ZPDataInLen
|
>ADC16 SKT.Cache+S.SOCKET.TCP.OUTUSED,ZPDataInLen
|
||||||
>ADC16 SKT.Cache+S.SOCKET.TCP.OUTTOSEND,ZPDataInLen
|
>ADC16 SKT.Cache+S.SOCKET.TCP.OUTTOSEND,ZPDataInLen
|
||||||
@ -1095,12 +1082,13 @@ SKT.AddDataToSktIn
|
|||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
||||||
|
|
||||||
lda ZPTmpPtr1
|
pha
|
||||||
clc
|
tya
|
||||||
|
* clc
|
||||||
adc SKT.Cache+S.SOCKET.TCP.INHEAD
|
adc SKT.Cache+S.SOCKET.TCP.INHEAD
|
||||||
sta ZPTmpPtr2
|
sta ZPTmpPtr2
|
||||||
|
|
||||||
lda ZPTmpPtr1+1
|
pla
|
||||||
adc SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
adc SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
||||||
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
|
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
|
||||||
|
|
||||||
@ -1128,24 +1116,26 @@ SKT.AddDataToSktIn
|
|||||||
bne .3
|
bne .3
|
||||||
inc ZPDataInPtr+1
|
inc ZPDataInPtr+1
|
||||||
|
|
||||||
.3 inc ZPTmpPtr2
|
.3 inc SKT.Cache+S.SOCKET.TCP.INHEAD
|
||||||
bne .4
|
bne .4
|
||||||
inc ZPTmpPtr2+1
|
|
||||||
|
|
||||||
.4 inc SKT.Cache+S.SOCKET.TCP.INHEAD
|
|
||||||
bne .1
|
|
||||||
inc SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
inc SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
||||||
lda SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
lda SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
||||||
cmp /K.TCP.WSIZE
|
cmp /K.TCP.WSIZE
|
||||||
bne .1
|
bne .4
|
||||||
|
|
||||||
stz SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
stz SKT.Cache+S.SOCKET.TCP.INHEAD+1
|
||||||
|
|
||||||
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
||||||
sta ZPTmpPtr2
|
sta ZPTmpPtr2
|
||||||
lda ZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
sta ZPTmpPtr2+1
|
sta ZPTmpPtr2+1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
|
.4 inc ZPTmpPtr2
|
||||||
|
bne .1
|
||||||
|
inc ZPTmpPtr2+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -1180,12 +1170,13 @@ SKT.GetDataFromSktOut
|
|||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
||||||
|
|
||||||
lda ZPTmpPtr1
|
pha
|
||||||
clc
|
tya
|
||||||
|
* clc
|
||||||
adc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT
|
adc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT
|
||||||
sta ZPTmpPtr2 Make ZPTmpPtr2=base+nexttail
|
sta ZPTmpPtr2 Make ZPTmpPtr2=base+nexttail
|
||||||
|
|
||||||
lda ZPTmpPtr1+1
|
pla
|
||||||
adc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
adc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||||
sta ZPTmpPtr2+1
|
sta ZPTmpPtr2+1
|
||||||
|
|
||||||
@ -1213,82 +1204,31 @@ SKT.GetDataFromSktOut
|
|||||||
bne .3
|
bne .3
|
||||||
inc ZPDataOutPtr+1
|
inc ZPDataOutPtr+1
|
||||||
|
|
||||||
.3 inc ZPTmpPtr2
|
.3 inc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT
|
||||||
bne .4
|
bne .4
|
||||||
inc ZPTmpPtr2+1
|
|
||||||
|
|
||||||
.4 inc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT
|
|
||||||
bne .1
|
|
||||||
inc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
inc SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||||
lda SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
lda SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||||
cmp /K.TCP.WSIZE
|
cmp /K.TCP.WSIZE
|
||||||
bne .1
|
bne .4
|
||||||
|
|
||||||
stz SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
stz SKT.Cache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||||
|
|
||||||
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
||||||
sta ZPTmpPtr2
|
sta ZPTmpPtr2
|
||||||
lda ZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
sta ZPTmpPtr2+1
|
sta ZPTmpPtr2+1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
|
.4 inc ZPTmpPtr2
|
||||||
|
bne .1
|
||||||
|
inc ZPTmpPtr2+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
.8 >SBC16 SKT.Cache+S.SOCKET.TCP.OUTTOSEND,ZPDataOutLen
|
.8 >SBC16 SKT.Cache+S.SOCKET.TCP.OUTTOSEND,ZPDataOutLen
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* From TCP.IN
|
|
||||||
* Src : A,X
|
|
||||||
* Dst : hOutMem/OUTTAIL
|
|
||||||
*--------------------------------------
|
|
||||||
SKT.AckDataToSktOut
|
|
||||||
ldy #S.TCP.ACKNUM+3 Get new ACK number from FrameIn...
|
|
||||||
ldx #3 Substract old ACK from socket
|
|
||||||
|
|
||||||
sec
|
|
||||||
|
|
||||||
.1 lda (ZPFrameInPtr),y
|
|
||||||
pha
|
|
||||||
sbc SKT.Cache+S.SOCKET.TCP.OUTSEQNUM,x
|
|
||||||
sta TmpDWord,x
|
|
||||||
pla ....and Set SEQ = new SEQ
|
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTSEQNUM,x
|
|
||||||
dey
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
lda TmpDWord+3
|
|
||||||
ldx TmpDWord+2
|
|
||||||
bne .2
|
|
||||||
tay
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
.2 clc
|
|
||||||
adc SKT.Cache+S.SOCKET.TCP.OUTTAIL
|
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTTAIL
|
|
||||||
|
|
||||||
txa
|
|
||||||
adc SKT.Cache+S.SOCKET.TCP.OUTTAIL+1
|
|
||||||
and /K.TCP.WSIZE-1
|
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTTAIL+1
|
|
||||||
|
|
||||||
lda SKT.Cache+S.SOCKET.TCP.OUTFREE
|
|
||||||
clc
|
|
||||||
adc TmpDWord+3
|
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTFREE
|
|
||||||
lda SKT.Cache+S.SOCKET.TCP.OUTFREE+1
|
|
||||||
adc TmpDWord+2
|
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTFREE+1
|
|
||||||
|
|
||||||
lda SKT.Cache+S.SOCKET.TCP.OUTUSED
|
|
||||||
sec
|
|
||||||
sbc TmpDWord+3
|
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTUSED
|
|
||||||
lda SKT.Cache+S.SOCKET.TCP.OUTUSED+1
|
|
||||||
sbc TmpDWord+2
|
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTUSED+1
|
|
||||||
|
|
||||||
.8 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
|
||||||
|
@ -201,19 +201,64 @@ TCP.IN.JMP.ESTBLSH
|
|||||||
ldy #S.TCP.OPTIONS
|
ldy #S.TCP.OPTIONS
|
||||||
lda (ZPFrameInPtr),y
|
lda (ZPFrameInPtr),y
|
||||||
and #S.TCP.OPTIONS.ACK Remote side ACKed data ?
|
and #S.TCP.OPTIONS.ACK Remote side ACKed data ?
|
||||||
beq .1
|
beq .4
|
||||||
|
|
||||||
jsr SKT.AckDataToSktOut Yes, Discard sent data
|
ldy #S.TCP.ACKNUM+3 Get new ACK number from FrameIn...
|
||||||
jsr SKT.StoreTCB and update SKT
|
ldx #3 Substract old ACK from socket
|
||||||
|
|
||||||
.1 jsr TCP.IN.SetDataInPtrAndLen
|
sec
|
||||||
|
|
||||||
|
.1 lda (ZPFrameInPtr),y
|
||||||
|
pha
|
||||||
|
sbc SKT.Cache+S.SOCKET.TCP.OUTSEQNUM,x
|
||||||
|
sta TmpDWord,x
|
||||||
|
pla ....and Set SEQ = new SEQ
|
||||||
|
sta SKT.Cache+S.SOCKET.TCP.OUTSEQNUM,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
lda TmpDWord+3
|
||||||
|
ldx TmpDWord+2
|
||||||
|
bne .2
|
||||||
|
tay
|
||||||
|
beq .3
|
||||||
|
|
||||||
|
.2 clc
|
||||||
|
adc SKT.Cache+S.SOCKET.TCP.OUTTAIL
|
||||||
|
sta SKT.Cache+S.SOCKET.TCP.OUTTAIL
|
||||||
|
|
||||||
|
txa
|
||||||
|
adc SKT.Cache+S.SOCKET.TCP.OUTTAIL+1
|
||||||
|
and /K.TCP.WSIZE-1
|
||||||
|
sta SKT.Cache+S.SOCKET.TCP.OUTTAIL+1
|
||||||
|
|
||||||
|
lda SKT.Cache+S.SOCKET.TCP.OUTFREE
|
||||||
|
clc
|
||||||
|
adc TmpDWord+3
|
||||||
|
sta SKT.Cache+S.SOCKET.TCP.OUTFREE
|
||||||
|
lda SKT.Cache+S.SOCKET.TCP.OUTFREE+1
|
||||||
|
adc TmpDWord+2
|
||||||
|
sta SKT.Cache+S.SOCKET.TCP.OUTFREE+1
|
||||||
|
|
||||||
|
lda SKT.Cache+S.SOCKET.TCP.OUTUSED
|
||||||
|
sec
|
||||||
|
sbc TmpDWord+3
|
||||||
|
sta SKT.Cache+S.SOCKET.TCP.OUTUSED
|
||||||
|
lda SKT.Cache+S.SOCKET.TCP.OUTUSED+1
|
||||||
|
sbc TmpDWord+2
|
||||||
|
sta SKT.Cache+S.SOCKET.TCP.OUTUSED+1
|
||||||
|
|
||||||
|
.3 jsr SKT.StoreTCB and update SKT
|
||||||
|
|
||||||
|
.4 jsr TCP.IN.SetDataInPtrAndLen
|
||||||
|
|
||||||
lda ZPDataInLen Incoming Data in this frame ?
|
lda ZPDataInLen Incoming Data in this frame ?
|
||||||
ora ZPDataInLen+1
|
ora ZPDataInLen+1
|
||||||
beq .2 No data, ...
|
beq .5 No data, ...
|
||||||
|
|
||||||
jsr SKT.AddDataToSktIn yes, queue data if there is room for....
|
jsr SKT.AddDataToSktIn yes, queue data if there is room for....
|
||||||
bcs .2
|
bcs .5
|
||||||
|
|
||||||
jsr SKT.StoreTCB success, update socket
|
jsr SKT.StoreTCB success, update socket
|
||||||
|
|
||||||
@ -221,7 +266,7 @@ TCP.IN.JMP.ESTBLSH
|
|||||||
|
|
||||||
* jsr TCP.OUT.I SKT.GetTCB already called
|
* jsr TCP.OUT.I SKT.GetTCB already called
|
||||||
|
|
||||||
.2 ldy #S.TCP.OPTIONS
|
.5 ldy #S.TCP.OPTIONS
|
||||||
lda (ZPFrameInPtr),y
|
lda (ZPFrameInPtr),y
|
||||||
and #S.TCP.OPTIONS.FIN
|
and #S.TCP.OPTIONS.FIN
|
||||||
beq .8
|
beq .8
|
||||||
|
@ -55,8 +55,10 @@ ZPPtrSKT .EQ ZPLIB+22
|
|||||||
|
|
||||||
ZPCachePtr .EQ ZPLIB+24
|
ZPCachePtr .EQ ZPLIB+24
|
||||||
ZPTmpPtr1 .EQ ZPLIB+26
|
ZPTmpPtr1 .EQ ZPLIB+26
|
||||||
|
TmpDWord .EQ ZPLIB+28
|
||||||
|
IP.CHECKSUM .EQ ZPLIB+28
|
||||||
ZPTmpPtr2 .EQ ZPLIB+28
|
ZPTmpPtr2 .EQ ZPLIB+28
|
||||||
ZPTmpPtr3 .EQ ZPLIB+30
|
* .EQ ZPLIB+30
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -455,12 +457,10 @@ SKT.LOC.ADDR .BS S.SOCKADDR
|
|||||||
SKT.REM.ADDR .BS S.SOCKADDR
|
SKT.REM.ADDR .BS S.SOCKADDR
|
||||||
SKT.Cache .EQ *-S.SOCKET.TCP.INTAIL
|
SKT.Cache .EQ *-S.SOCKET.TCP.INTAIL
|
||||||
.BS S.SOCKET.TCP-S.SOCKET.TCP.INTAIL
|
.BS S.SOCKET.TCP-S.SOCKET.TCP.INTAIL
|
||||||
TmpDWord .BS 4
|
|
||||||
hFrameIn .BS 1
|
hFrameIn .BS 1
|
||||||
hFrameOut .BS 1
|
hFrameOut .BS 1
|
||||||
HST.SScanF .AZ "%d.%d.%d.%d"
|
HST.SScanF .AZ "%d.%d.%d.%d"
|
||||||
IP.ID .BS 2
|
IP.ID .BS 2
|
||||||
IP.CHECKSUM .BS 2
|
|
||||||
.DO IPDEBUG=1
|
.DO IPDEBUG=1
|
||||||
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"
|
||||||
|
@ -9,7 +9,7 @@ NEW
|
|||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/NET.TELNET.I
|
.INB INC/NET.TELNET.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TIMEOUT.MAX .EQ 100 10 sec.
|
TIMEOUT.MAX .EQ 20 2 sec.
|
||||||
IAC.BUF.MAX .EQ 32
|
IAC.BUF.MAX .EQ 32
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
|
Loading…
x
Reference in New Issue
Block a user