mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-25 20:33:13 +00:00
Kernel 0.9.2
This commit is contained in:
parent
e040a2a11e
commit
556c800444
Binary file not shown.
Binary file not shown.
@ -171,7 +171,8 @@ S.TCB.OUTFREE .EQ 14
|
||||
S.TCB.OUTTOSEND .EQ 16
|
||||
S.TCB.OUTUSED .EQ 18
|
||||
*
|
||||
S.TCB.INLASTSEQNUM .EQ 20 Rcvd:Last SEQ recieved from remote
|
||||
S.TCB.INLASTSEQNUM .EQ 20 Rcvd:Last SEQ received from remote
|
||||
|
||||
S.TCB.OUTSEQNUM .EQ 24 Send:SEQ sent not yet ACKed (retransmit)
|
||||
S.TCB.OUTNEXTSEQ .EQ 28 Send:Next SEQ to send
|
||||
S.TCB.OUTACKNUM .EQ 32 Send:ACK to send to remote
|
||||
|
@ -56,12 +56,14 @@ ARP.Add >PULLW ZPPtrIP IP
|
||||
stz ARP.TmpCache+S.ARPCACHE.TTL+1
|
||||
|
||||
ldy #3
|
||||
|
||||
.1 lda (ZPPtrIP),y
|
||||
sta ARP.TmpCache+S.ARPCACHE.IP,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
ldy #5
|
||||
|
||||
.2 lda (ZPPtrMAC),y
|
||||
sta ARP.TmpCache+S.ARPCACHE.MAC,y
|
||||
dey
|
||||
@ -76,6 +78,7 @@ ARP.ADD.I sta ARP.TmpCache
|
||||
jsr ARP.FIND.FREE
|
||||
|
||||
.1 ldy #S.ARPCACHE-1
|
||||
|
||||
.2 lda ARP.TmpCache,y
|
||||
sta (ZPCachePtr),y
|
||||
dey
|
||||
@ -84,13 +87,13 @@ ARP.ADD.I sta ARP.TmpCache
|
||||
clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # ARP.GetCAche
|
||||
* # ARP.GetCache
|
||||
* Return a Ptr to ARP Cache Table
|
||||
* **In:**
|
||||
* **Out:**
|
||||
* Y,A = PTR to ARP.CACHE
|
||||
*\--------------------------------------
|
||||
ARP.GetCAche >LDYA L.ARP.CACHE
|
||||
ARP.GetCache >LDYA L.ARP.CACHE
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -3,7 +3,7 @@ PREFIX /A2OSX.BUILD
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* FRM.New
|
||||
* FRM.NewIP
|
||||
* In:
|
||||
* Y,A = DataLen
|
||||
* X = S.IP.PROTOCOL.xxx
|
||||
@ -177,7 +177,7 @@ FRM.SendIP ldx #3 Copy SRC.IP even if IP offload
|
||||
lda (ZPFrameOutPtr),y
|
||||
cmp #S.IP.PROTOCOL.TCP
|
||||
bne .3
|
||||
jsr TCP.ComputeChecksum
|
||||
jsr IP.ComputeTCPChecksum
|
||||
bra .5
|
||||
|
||||
.3 cmp #S.IP.PROTOCOL.UDP
|
||||
@ -196,12 +196,12 @@ FRM.SendIP ldx #3 Copy SRC.IP even if IP offload
|
||||
dey
|
||||
sta (ZPFrameOutPtr),y
|
||||
|
||||
jsr UDP.ComputeChecksum
|
||||
jsr IP.ComputeUDPChecksum
|
||||
bra .5
|
||||
|
||||
.4 cmp #S.IP.PROTOCOL.ICMP
|
||||
bne .5
|
||||
jsr ICMP.ComputeChecksum
|
||||
jsr IP.ComputeICMPChecksum
|
||||
|
||||
.5 lda DCB.NIC+S.DCB.NIC.FLAGS
|
||||
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
||||
@ -217,7 +217,7 @@ FRM.SendIP ldx #3 Copy SRC.IP even if IP offload
|
||||
lda hFrameOut
|
||||
beq .9
|
||||
>SYSCALL FreeMem
|
||||
|
||||
stz hFrameOut
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
@ -6,29 +6,18 @@ AUTO 4,1
|
||||
HST.GetByName >PULLW ZPPtrDNS
|
||||
>PULLW ZPPtrIP
|
||||
|
||||
lda ZPPtrIP
|
||||
ldx #3
|
||||
|
||||
.1 txa
|
||||
clc
|
||||
adc #3
|
||||
adc ZPPtrIP
|
||||
tay
|
||||
lda ZPPtrIP+1
|
||||
adc #0
|
||||
>PUSHYA @IP[3]
|
||||
>PUSHYA @IP[3][2][1][0]
|
||||
|
||||
lda ZPPtrIP
|
||||
clc
|
||||
adc #2
|
||||
tay
|
||||
lda ZPPtrIP+1
|
||||
adc #0
|
||||
>PUSHYA @IP[2]
|
||||
|
||||
>LDYA ZPPtrIP
|
||||
iny
|
||||
bne .1
|
||||
inc
|
||||
.1 >PUSHYA @IP[1]
|
||||
|
||||
>PUSHW ZPPtrIP @IP[0]
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
>PUSHBI 8 4 PTRs on stack
|
||||
>PUSHW L.HST.SScanF
|
||||
|
@ -25,47 +25,24 @@ ICMP.IN.ECHOREQ ldy #S.IP.DST+3
|
||||
lda #S.ICMP.TYPE.ECHOREP
|
||||
sta (ZPFrameInPtr),y
|
||||
|
||||
ldy #S.IP.SRC+3
|
||||
jsr ARP.AddFromFrameInPtr
|
||||
|
||||
lda hFrameIn
|
||||
stz hFrameIn DO NOT DISCARD this frame,it is SOURCE frame!!!
|
||||
|
||||
sta hFrameOut
|
||||
>LDYA ZPFrameInPtr
|
||||
>STYA ZPFrameOutPtr
|
||||
|
||||
ldx #3
|
||||
|
||||
.2 lda (ZPFrameInPtr),y
|
||||
sta ARP.TmpCache+S.ARPCACHE.IP,x
|
||||
dey
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
ldy #S.IP.DST+3
|
||||
ldx #3
|
||||
|
||||
.3 lda ARP.TmpCache+S.ARPCACHE.IP,x
|
||||
sta (ZPFrameInPtr),y
|
||||
sta (ZPFrameOutPtr),y
|
||||
dey
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
ldy #S.ETH.SRCMAC+5
|
||||
ldx #5
|
||||
|
||||
.4 lda (ZPFrameInPtr),y
|
||||
sta ARP.TmpCache+S.ARPCACHE.MAC,x
|
||||
dey
|
||||
dex
|
||||
bpl .4
|
||||
|
||||
lda #K.ARP.TTL
|
||||
sta ARP.TmpCache+S.ARPCACHE.TTL
|
||||
lda /K.ARP.TTL
|
||||
sta ARP.TmpCache+S.ARPCACHE.TTL+1
|
||||
|
||||
lda #S.ARPCACHE.STATUS.RESOLVED
|
||||
jsr ARP.ADD.I
|
||||
|
||||
lda hFrameIn
|
||||
stz hFrameIn
|
||||
|
||||
sta hFrameOut DO NOT DISCARD this frame,it is SOURCE frame!!!
|
||||
>LDYA ZPFrameInPtr
|
||||
>STYA ZPFrameOutPtr
|
||||
jmp FRM.SendIP
|
||||
|
||||
ICMP.IN.EXIT lda hFrameIn
|
||||
@ -114,7 +91,7 @@ ICMP.IN.ECHOREP jsr IP.FillSKT.TemplateSrcDstIP
|
||||
|
||||
lda hFrameIn
|
||||
jsr SKT.AddToQueueA
|
||||
bcs .9 Q full, discard...
|
||||
bcs ICMP.IN.EXIT Q full, discard...
|
||||
|
||||
rts DO NOT Discard this queued frame
|
||||
|
||||
@ -129,31 +106,7 @@ ICMP.IN.ECHOREP jsr IP.FillSKT.TemplateSrcDstIP
|
||||
cpx #K.SKTTABLE.SIZE
|
||||
bne .3
|
||||
|
||||
.9 lda hFrameIn
|
||||
beq .99
|
||||
>SYSCALL FreeMem
|
||||
.99 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
ICMP.ComputeChecksum
|
||||
>PUSHW ZPFrameOutLen
|
||||
>PUSHWI S.ICMP.TYPE
|
||||
|
||||
ldy #S.ICMP.CHECKSUM
|
||||
lda #0
|
||||
sta (ZPFrameOutPtr),y
|
||||
iny
|
||||
sta (ZPFrameOutPtr),y
|
||||
|
||||
jsr IP.ComputeChecksum
|
||||
|
||||
phy
|
||||
ldy #S.ICMP.CHECKSUM
|
||||
sta (ZPFrameOutPtr),y
|
||||
iny
|
||||
pla
|
||||
sta (ZPFrameOutPtr),y
|
||||
rts
|
||||
bra ICMP.IN.EXIT
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S.ICMP
|
||||
|
@ -22,73 +22,162 @@ IP.IN ldy #S.IP.PROTOCOL
|
||||
>SYSCALL FreeMem
|
||||
rts
|
||||
*--------------------------------------
|
||||
* In:
|
||||
* PULLW = Start Offset
|
||||
* PULLW = End Offset
|
||||
* Out:
|
||||
* Y,A = CheckSum
|
||||
*--------------------------------------
|
||||
IP.ComputeChecksum
|
||||
>PULLA
|
||||
clc
|
||||
adc ZPFrameOutPtr
|
||||
sta ZPTmpPtr1
|
||||
>PULLA
|
||||
adc ZPFrameOutPtr+1
|
||||
sta ZPTmpPtr1+1
|
||||
|
||||
>PULLA
|
||||
clc
|
||||
adc ZPFrameOutPtr
|
||||
sta TmpOffset
|
||||
>PULLA
|
||||
adc ZPFrameOutPtr+1
|
||||
sta TmpOffset+1
|
||||
|
||||
IP.ComputeICMPChecksum
|
||||
stz IP.CHECKSUM
|
||||
stz IP.CHECKSUM+1
|
||||
stz IP.CHECKSUM+2
|
||||
stz IP.CHECKSUM+3
|
||||
|
||||
ldy #0
|
||||
lda ZPFrameOutLen
|
||||
sec
|
||||
sbc #S.ICMP.TYPE
|
||||
eor #$ff
|
||||
tax
|
||||
|
||||
.1 clc
|
||||
lda ZPFrameOutLen+1
|
||||
sbc /S.ICMP.TYPE
|
||||
eor #$ff
|
||||
|
||||
ldy #S.ICMP.CHECKSUM
|
||||
|
||||
jmp IP.ComputeChecksum
|
||||
*--------------------------------------
|
||||
IP.ComputeUDPChecksum
|
||||
ldy #S.UDP.LENGTH
|
||||
lda (ZPFrameOutPtr),y
|
||||
clc
|
||||
|
||||
* adc /S.IP.PROTOCOL.UDP (all zero)
|
||||
sta IP.CHECKSUM
|
||||
|
||||
iny
|
||||
lda (ZPTmpPtr1),y
|
||||
lda (ZPFrameOutPtr),y
|
||||
adc #S.IP.PROTOCOL.UDP
|
||||
sta IP.CHECKSUM+1
|
||||
|
||||
jsr IP.AddSrcDstIPToChecksum
|
||||
|
||||
lda ZPFrameOutLen
|
||||
sec
|
||||
sbc #S.IP
|
||||
eor #$ff
|
||||
tax
|
||||
|
||||
lda ZPFrameOutLen+1
|
||||
sbc /S.IP
|
||||
eor #$ff
|
||||
|
||||
ldy #S.UDP.CHECKSUM
|
||||
bra IP.ComputeChecksum
|
||||
*--------------------------------------
|
||||
IP.ComputeTCPChecksum
|
||||
lda ZPFrameOutLen
|
||||
sec
|
||||
sbc #S.IP
|
||||
sta ZPDataInLen
|
||||
|
||||
lda ZPFrameOutLen+1
|
||||
sbc /S.IP
|
||||
sta ZPDataInLen+1
|
||||
|
||||
clc
|
||||
|
||||
* lda ZPDataInLen+1
|
||||
* adc /S.IP.PROTOCOL.TCP (all zero)
|
||||
sta IP.CHECKSUM
|
||||
|
||||
lda ZPDataInLen
|
||||
adc #S.IP.PROTOCOL.TCP
|
||||
sta IP.CHECKSUM+1
|
||||
|
||||
jsr IP.AddSrcDstIPToChecksum
|
||||
|
||||
lda ZPDataInLen
|
||||
eor #$ff
|
||||
tax
|
||||
lda ZPDataInLen+1
|
||||
eor #$ff
|
||||
|
||||
ldy #S.TCP.CHECKSUM
|
||||
*--------------------------------------
|
||||
* X,A = !ByteCount, Y = Offset in Frame
|
||||
*--------------------------------------
|
||||
IP.ComputeChecksum
|
||||
phy Save Offset
|
||||
pha Save !ByteCount.HI
|
||||
|
||||
lda #0 Reset Checksum
|
||||
sta (ZPFrameOutPtr),y
|
||||
iny
|
||||
sta (ZPFrameOutPtr),y
|
||||
|
||||
>LDYA ZPFrameOutPtr
|
||||
>STYA ZPTmpPtr1
|
||||
|
||||
ldy #S.IP
|
||||
|
||||
.1 inx
|
||||
bne .11
|
||||
pla
|
||||
inc
|
||||
beq .8
|
||||
|
||||
pha
|
||||
|
||||
.11 lda (ZPTmpPtr1),y
|
||||
adc IP.CHECKSUM
|
||||
sta IP.CHECKSUM
|
||||
|
||||
dey
|
||||
lda (ZPTmpPtr1),y
|
||||
iny
|
||||
bne .20
|
||||
inc ZPTmpPtr1+1
|
||||
|
||||
.20 inx
|
||||
bne .2
|
||||
pla
|
||||
inc
|
||||
beq .7
|
||||
|
||||
pha
|
||||
|
||||
.2 lda (ZPTmpPtr1),y
|
||||
|
||||
adc IP.CHECKSUM+1
|
||||
sta IP.CHECKSUM+1
|
||||
|
||||
bcc .3
|
||||
inc IP.CHECKSUM+2
|
||||
bne .3
|
||||
inc IP.CHECKSUM+3
|
||||
|
||||
.3 lda ZPTmpPtr1
|
||||
clc
|
||||
adc #2
|
||||
sta ZPTmpPtr1
|
||||
bcc .4
|
||||
iny
|
||||
bne .1
|
||||
inc ZPTmpPtr1+1
|
||||
.4 cmp TmpOffset
|
||||
bne .1
|
||||
lda ZPTmpPtr1+1
|
||||
cmp TmpOffset+1
|
||||
bne .1
|
||||
bra .1
|
||||
|
||||
.7 adc IP.CHECKSUM+1 A=0 from beq .7
|
||||
sta IP.CHECKSUM+1
|
||||
|
||||
.8 ply
|
||||
lda IP.CHECKSUM
|
||||
clc
|
||||
adc IP.CHECKSUM+2
|
||||
adc #0 Don't forget to add last carry!!!
|
||||
eor #$FF
|
||||
tay
|
||||
sta (ZPFrameOutPtr),y
|
||||
iny
|
||||
lda IP.CHECKSUM+1
|
||||
adc IP.CHECKSUM+3
|
||||
adc #0 Don't forget to add last carry!!!
|
||||
eor #$FF
|
||||
sta (ZPFrameOutPtr),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
IP.AddSrcDstIPToChecksum
|
||||
ldy #S.IP.SRC
|
||||
|
||||
ldx #4 4 words for SRC & DST IP
|
||||
|
||||
.1 lda (ZPFrameOutPtr),y
|
||||
adc IP.CHECKSUM
|
||||
sta IP.CHECKSUM
|
||||
iny
|
||||
lda (ZPFrameOutPtr),y
|
||||
adc IP.CHECKSUM+1
|
||||
sta IP.CHECKSUM+1
|
||||
iny
|
||||
dex
|
||||
bne .1
|
||||
rts
|
||||
*--------------------------------------
|
||||
IP.FillSKT.TemplateSrcDstIPP
|
||||
@ -179,11 +268,13 @@ IP.SetDestMAC ldy #S.IP.DST
|
||||
|
||||
ldx #5
|
||||
ldy #S.ETH.DSTMAC+5
|
||||
|
||||
.11 lda ARP.TmpCache+S.ARPCACHE.MAC,x
|
||||
sta (ZPFrameOutPtr),y
|
||||
dey
|
||||
dex
|
||||
bpl .11
|
||||
|
||||
clc
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
|
@ -100,25 +100,14 @@ TCP.IN.JMP.LISTEN
|
||||
.2 lda #$ff
|
||||
sta ZPPtrSKT+1
|
||||
|
||||
ldy #S.TCP.SEQNUM+3 Get Remote SEQ
|
||||
ldx #3
|
||||
|
||||
sec
|
||||
|
||||
.3 lda (ZPFrameInPtr),y Set OUTACK=SEQ+1 for new socket...
|
||||
adc #0
|
||||
sta SKT.TCBCache+S.TCB.INLASTSEQNUM,x
|
||||
sta SKT.TCBCache+S.TCB.OUTACKNUM,x
|
||||
dey
|
||||
dex
|
||||
bpl .3
|
||||
jsr TCP.IN.ACKTheSYN
|
||||
|
||||
jsr SKT.StoreTCB
|
||||
|
||||
jsr ARP.AddFromFrameInPtr
|
||||
|
||||
lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK
|
||||
jsr TCP.OUT.SendOptA SYN recieved, Send SYN.ACK
|
||||
jsr TCP.OUT.SendOptA SYN received, Send SYN.ACK
|
||||
bcs .9
|
||||
|
||||
ldy #S.SOCKET.TCP.STATUS
|
||||
@ -156,18 +145,7 @@ TCP.IN.JMP.SYNSENT
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
ldx #3
|
||||
ldy #S.TCP.SEQNUM+3
|
||||
|
||||
sec ACK=SEC+1
|
||||
|
||||
.2 lda (ZPFrameInPtr),y
|
||||
adc #0
|
||||
sta SKT.TCBCache+S.TCB.INLASTSEQNUM,x
|
||||
sta SKT.TCBCache+S.TCB.OUTACKNUM,x
|
||||
dey
|
||||
dex
|
||||
bpl .2
|
||||
jsr TCP.IN.ACKTheSYN
|
||||
|
||||
lda #S.TCP.OPTIONS.ACK
|
||||
jsr TCP.OUT.SendOptA SYN.ACK recieved, Send, ACK
|
||||
@ -185,7 +163,7 @@ TCP.IN.JMP.SYNSENT
|
||||
jmp SKT.Destroy
|
||||
*--------------------------------------
|
||||
TCP.IN.JMP.SYNRCVD
|
||||
ldy #S.TCP.OPTIONS SYN Recieved, SYN.ACK Sent, only accept ACK packet
|
||||
ldy #S.TCP.OPTIONS SYN Received, SYN.ACK Sent, only accept ACK packet
|
||||
lda (ZPFrameInPtr),y
|
||||
cmp #S.TCP.OPTIONS.ACK
|
||||
bne .8
|
||||
@ -313,6 +291,21 @@ TCP.IN.JMP.TIMEWT
|
||||
TCP.IN.JMP.CLOSED
|
||||
jmp SKT.Destroy
|
||||
*--------------------------------------
|
||||
TCP.IN.ACKTheSYN
|
||||
ldy #S.TCP.SEQNUM+3 Get Remote SEQ
|
||||
ldx #3
|
||||
|
||||
sec
|
||||
|
||||
.3 lda (ZPFrameInPtr),y Set OUTACK=SEQ+1 for new socket...
|
||||
adc #0
|
||||
sta SKT.TCBCache+S.TCB.INLASTSEQNUM,x
|
||||
sta SKT.TCBCache+S.TCB.OUTACKNUM,x
|
||||
dey
|
||||
dex
|
||||
bpl .3
|
||||
rts
|
||||
*--------------------------------------
|
||||
TCP.IN.ACKTheFIN
|
||||
ldy #S.SOCKET.TCP.OPTIONS
|
||||
lda (ZPPtrSKT),y
|
||||
@ -507,109 +500,6 @@ TCP.NewFrame ldx #S.IP.PROTOCOL.TCP
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
TCP.ComputeChecksum
|
||||
lda #0 RESET.TCP.CHECKSUM
|
||||
ldy #S.TCP.CHECKSUM
|
||||
sta (ZPFrameOutPtr),y
|
||||
iny
|
||||
sta (ZPFrameOutPtr),y
|
||||
|
||||
>LDYA ZPFrameOutPtr
|
||||
>STYA ZPTmpPtr1
|
||||
|
||||
lda ZPFrameOutLen
|
||||
sec
|
||||
sbc #S.IP
|
||||
sta ZPDataInLen
|
||||
|
||||
lda ZPFrameOutLen+1
|
||||
sbc /S.IP
|
||||
sta ZPDataInLen+1
|
||||
|
||||
clc
|
||||
|
||||
* lda ZPDataInLen+1
|
||||
* adc #0 RESERVED (all zero)
|
||||
sta IP.CHECKSUM
|
||||
|
||||
lda ZPDataInLen
|
||||
adc #S.IP.PROTOCOL.TCP
|
||||
sta IP.CHECKSUM+1
|
||||
|
||||
ldy #S.IP.SRC
|
||||
|
||||
ldx #4 4 words for SRC & DST IP
|
||||
|
||||
.10 lda (ZPFrameOutPtr),y
|
||||
adc IP.CHECKSUM
|
||||
sta IP.CHECKSUM
|
||||
iny
|
||||
lda (ZPFrameOutPtr),y
|
||||
adc IP.CHECKSUM+1
|
||||
sta IP.CHECKSUM+1
|
||||
iny
|
||||
dex
|
||||
bne .10
|
||||
|
||||
ldy #S.IP
|
||||
|
||||
lda ZPDataInLen
|
||||
eor #$ff
|
||||
tax
|
||||
lda ZPDataInLen+1
|
||||
eor #$ff
|
||||
|
||||
pha
|
||||
|
||||
.1 inx
|
||||
bne .11
|
||||
pla
|
||||
inc
|
||||
beq .8
|
||||
|
||||
pha
|
||||
|
||||
.11 lda (ZPTmpPtr1),y
|
||||
adc IP.CHECKSUM
|
||||
sta IP.CHECKSUM
|
||||
|
||||
iny
|
||||
bne .20
|
||||
inc ZPTmpPtr1+1
|
||||
|
||||
.20 inx
|
||||
bne .2
|
||||
pla
|
||||
inc
|
||||
beq .7
|
||||
|
||||
pha
|
||||
|
||||
.2 lda (ZPTmpPtr1),y
|
||||
|
||||
adc IP.CHECKSUM+1
|
||||
sta IP.CHECKSUM+1
|
||||
|
||||
iny
|
||||
bne .1
|
||||
inc ZPTmpPtr1+1
|
||||
bra .1
|
||||
|
||||
.7 adc IP.CHECKSUM+1 A=0 from beq .7
|
||||
sta IP.CHECKSUM+1
|
||||
|
||||
.8 ldy #S.TCP.CHECKSUM
|
||||
lda IP.CHECKSUM
|
||||
adc #0 Don't forget to add last carry!!!
|
||||
eor #$FF
|
||||
sta (ZPFrameOutPtr),y
|
||||
iny
|
||||
lda IP.CHECKSUM+1
|
||||
adc #0 Don't forget to add last carry!!!
|
||||
eor #$FF
|
||||
sta (ZPFrameOutPtr),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S.TCP
|
||||
LOAD /A2OSX.SRC/LIB/LIBTCPIP.S
|
||||
|
@ -61,101 +61,6 @@ UDP.IN jsr IP.FillSKT.TemplateSrcDstIPP
|
||||
>SYSCALL FreeMem
|
||||
rts
|
||||
*--------------------------------------
|
||||
UDP.ComputeChecksum
|
||||
lda #0 RESET.TCP.CHECKSUM
|
||||
ldy #S.UDP.CHECKSUM
|
||||
sta (ZPFrameOutPtr),y
|
||||
iny
|
||||
sta (ZPFrameOutPtr),y
|
||||
|
||||
>LDYA ZPFrameOutPtr
|
||||
>STYA ZPTmpPtr1
|
||||
|
||||
lda ZPFrameOutLen
|
||||
sec
|
||||
sbc #S.IP
|
||||
sta ZPDataInLen
|
||||
|
||||
lda ZPFrameOutLen+1
|
||||
sbc /S.IP
|
||||
sta ZPDataInLen+1
|
||||
|
||||
clc
|
||||
|
||||
ldy #S.UDP.LENGTH
|
||||
lda (ZPFrameOutPtr),y
|
||||
* adc #0 RESERVED (all zero)
|
||||
sta IP.CHECKSUM
|
||||
|
||||
iny
|
||||
lda (ZPFrameOutPtr),y
|
||||
adc #S.IP.PROTOCOL.UDP
|
||||
sta IP.CHECKSUM+1
|
||||
|
||||
ldy #S.IP.SRC
|
||||
|
||||
ldx #4 4 words for SRC & DST IP
|
||||
|
||||
.10 lda (ZPFrameOutPtr),y
|
||||
adc IP.CHECKSUM
|
||||
sta IP.CHECKSUM
|
||||
iny
|
||||
lda (ZPFrameOutPtr),y
|
||||
adc IP.CHECKSUM+1
|
||||
sta IP.CHECKSUM+1
|
||||
iny
|
||||
dex
|
||||
bne .10
|
||||
|
||||
ldy #S.IP
|
||||
|
||||
.1 jsr DecDataInLen
|
||||
beq .8
|
||||
|
||||
lda (ZPTmpPtr1),y
|
||||
adc IP.CHECKSUM
|
||||
sta IP.CHECKSUM
|
||||
|
||||
iny
|
||||
bne .20
|
||||
inc ZPTmpPtr1+1
|
||||
|
||||
.20 jsr DecDataInLen
|
||||
bne .2
|
||||
lda #0
|
||||
bra .21
|
||||
|
||||
.2 lda (ZPTmpPtr1),y
|
||||
|
||||
.21 adc IP.CHECKSUM+1
|
||||
sta IP.CHECKSUM+1
|
||||
|
||||
iny
|
||||
bne .1
|
||||
inc ZPTmpPtr1+1
|
||||
bra .1
|
||||
|
||||
.8 ldy #S.UDP.CHECKSUM
|
||||
lda IP.CHECKSUM
|
||||
adc #0 Don't forget to add last carry!!!
|
||||
eor #$FF
|
||||
sta (ZPFrameOutPtr),y
|
||||
iny
|
||||
lda IP.CHECKSUM+1
|
||||
adc #0 Don't forget to add last carry!!!
|
||||
eor #$FF
|
||||
sta (ZPFrameOutPtr),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
DecDataInLen lda ZPDataInLen
|
||||
bne .1
|
||||
lda ZPDataInLen+1
|
||||
beq .9
|
||||
dec ZPDataInLen+1
|
||||
.1 dec ZPDataInLen
|
||||
lda #$FF Make NZ
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S.UDP
|
||||
LOAD /A2OSX.SRC/LIB/LIBTCPIP.S
|
||||
|
Loading…
Reference in New Issue
Block a user