📄 tcpip.asm
字号:
*
*hit651 voice platform software
*=================== tcpip.asm ========================
*2004.1.3 hit651
.mmregs
.def send_data,send_ack
.def create_ip_packet,creat_tx_ipcrc,creat_tx_udpcrc
.ref send_packet
.include ref.inc
.include union.inc
.include macro.inc
.text
************************** send ack *****************************
send_ack:
PSHM AR2
MOV servernodeid,txbuf.ethernet.destnodeid,3
ST #0x0008,*(txbuf.ethernet.protocal)
ST #0x571b,*(txbuf.udp.sourceport)
ST #0x571b,*(txbuf.udp.destport)
MOV myip_addr,txbuf.ip.sourceip,2
MOV serverip_addr,txbuf.ip.destip,2
ST #0x1100,*(txbuf.ip.protocal)
ST #0x1c00,*(txbuf.udp.len) ;20 of data + 8 of head
LD #0x0055,A
ADD *(ack_number),A
STL A,*(txbuf.udp.data)
ST 0x1c00,*(txbuf.ip.crc)
ST #0,*(txbuf.udp.crc)
CALL creat_tx_udpcrc
ST #(28>>1),*(send_packet_len)
CALL create_ip_packet
POPM AR2
RET
*
************************** send data *****************************
send_data:
PSHM AR2
MOV servernodeid,txbuf.ethernet.destnodeid,3
ST #0x0008,*(txbuf.ethernet.protocal)
ST #0x571b,*(txbuf.udp.sourceport)
ST #0x571b,*(txbuf.udp.destport)
MOV myip_addr,txbuf.ip.sourceip,2
MOV serverip_addr,txbuf.ip.destip,2
; ST #0xffff, *(txbuf.ip.destip)
; ST #0xffff, *(txbuf.ip.destip+1)
ST #0x1100,*(txbuf.ip.protocal)
;1468=0x05bc
ST #datalen_,*(txbuf.udp.len) ;1460 of data + 8 of head
STM txbuf.udp.data,AR2
STM txdatabuf,AR3
RPT #(10-1)
ST 0x5858,*AR2+
RPT #((datalen>>1)-4-10-1)
MVDD *AR3+,*AR2+
ST #datalen_,*(txbuf.ip.crc)
ST #0,*(txbuf.udp.crc)
CALL creat_tx_udpcrc
ST #(datalen>>1),*(send_packet_len)
CALL create_ip_packet
POPM AR2
RET
*
************************* creat_ip_packet ************************
*
create_ip_packet:
ST #0x0045,*(txbuf.ip.verhl)
ST #0x0,*(txbuf.ip.crc)
ADDM #0x0800,*(txbuf.ip.frameindex)
; ST #0x1234,*(txbuf.ip.frameindex)
ST #0x0040,*(txbuf.ip.segment)
LDU *(send_packet_len),A
ADD #10,A
STL A,1,*(send_packet_len)
LD A,1,A
STL A,-8,*(txbuf.ip.len)
LD A,8,A
ADD *(txbuf.ip.len),A
STL A,*(txbuf.ip.len)
CALL creat_tx_ipcrc
ADDM #14,*(send_packet_len)
MOV send_packet_len,txbuf.ethernet.len,1
CALL send_packet
RET
*
************************* creat_tx_ipcrc ************************
*
*STM txbuf.ip.verhl,AR1
*
*
creat_tx_ipcrc:
PSHM AL
PSHM AH
PSHM AG
PSHM AR1
STM txbuf.ip.verhl,AR1
RPTZ A,#(10-1)
ADDS *AR1+,A
c_t_2:
STL A,*(txbuf.ip.crc)
LD A,-16,A
BC c_t_1,AEQ ;A=0 goto c_t_1
ADDS *(txbuf.ip.crc),A
B c_t_2 ;goto c_t_2
c_t_1:
XORM #0xffff,*(txbuf.ip.crc)
POPM AR1
POPM AG
POPM AH
POPM AL
RET
*
************************* creat_tx_udpcrc ************************
*
*STM tcp_tx_buf,AR1
*
*
creat_tx_udpcrc:
.newblock
PSHM AL
PSHM AH
PSHM AG
PSHM AR2
PSHM AR3
PSHD *(i)
MOVX txbuf.ip.crc,i,1
STM txbuf.ip.protocal,AR3
LD *(i),A
ADD #12,A
LD A,-1,A
SUB #1,A
STL A,*(i)
LD #0,A
RPT *(i)
ADDS *AR3+,A
$2:
STL A,*(txbuf.udp.crc)
LD A,-16,A
BC $1,AEQ
ADDS *(txbuf.udp.crc),A
B $2
$1:
XORM #0xffff,*(txbuf.udp.crc)
POPD *(i)
POPM AR3
POPM AR2
POPM AG
POPM AH
POPM AL
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -