📄 ne2000.lst
字号:
C51 COMPILER V7.10 NE2000 07/27/2007 17:19:47 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE NE2000
OBJECT MODULE PLACED IN Ne2000.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Ne2000.h DEBUG OBJECTEXTEND CODE LISTINCLUDE SYMBOLS
line level source
1 #define uint unsigned int
2 #define uchar unsigned char
3 #define ulong unsigned long
4 union u { unsigned int word;
5 struct{unsigned char high;unsigned char low;}bytes;//字节顺序为高位在前的2byte结构
6 };
7
8 union w { ulong dwords;
9 struct {uint high ;uint low;}words;
10 struct {uchar byte3;uchar byte2;uchar byte1;uchar byte0;}bytes;
11 };
12 union Ethernet_Address_Type{
13 uint words[3];
14 uchar bytes[6];
15 };
16 union Ip_Address_Type{
17 ulong dwords;
18 uint words[2];
19 uchar bytes[4];
20 };
21
22 /******************以太网帧**********************/
23 struct ethernet { uchar RecStatus; /*接收状态*/
24 uchar NextPage; /*下一个页*/
25 uint length; /*以太网长度,以字节为单位,*/
26 uint DestMacId[3]; /*目的网卡地址*/
27 uint SourceMacId[3]; /*源网卡地址*/
28 uint NextProtocal; /*下一层协议*/
29 uchar packet[1518]; /*包的内容*/
30 } ;
31 struct retransmit {uchar RtStatus; /*重发缓冲区状态*/
32 uchar timeout; /*超时时间值,单位为10毫秒,最大2.55秒*/
33 uint length; /*以太网长度,以字节为单位,*/
34 uint DestMacId[3]; /*目的网卡地址*/
35 uint SourceMacId[3]; /*源网卡地址*/
36 uint NextProtocal; /*下一层协议 */
37 uchar packet[1518]; /*包的内容*/
38 } ;
39
40 /*******************IP包,仅当IHL=5时用,当不=5时作转换*********/
41 struct ip { uint EtherHead[9]; /*以太网包头*/
42 uchar VerandIphLen; /*版本与头长度*/
43 uchar ServerType; /*服务类型*/
44 uint TotalLen; /*总长度*/
45 uint FrameIndex; /*IP帧序号*/
46 uint Segment; /*分段标志*/
47 uchar ttl; /*生存时间*/
48 uchar NextProtocal; /*下一层协议*/
49 uint Crc; /*校验和*/
50 uint SourceIp[2]; /*源IP*/
51 uint DestId[2]; /*目的IP*/
52 uchar packet[1498]; /*IP包的内容*/
53 };
54 struct IpPacket { uint EtherHead[9]; /*以太网包头*/
55 uint IpPacket[720]; /*IP包的内容*/
C51 COMPILER V7.10 NE2000 07/27/2007 17:19:47 PAGE 2
56 };
57 struct arp { uint EtherHead[9]; /*以太网头*//* arp报文的内容总长28字节*/
58
59 uint HardwareType; /*以太网为0x0001*/
60 uint ProtocalType; /*ip 为0X0800*/
61 uchar HardwareLen; /*=0X06*/
62 uchar ProtocalLen; /*=0X04*/
63 uint Operation; /*操作 0X0001为请求 0X0002为应答 */
64 /*0X0003为反向地址请求 0X0004为反向地址应答*/
65 uint SourceMacId[3]; /*源网卡地址*/
66 uint SourceIp[2]; /*源IP地址*/
67 uint DestMacId[3]; /*目的网卡地址*/
68 uint DestId[2]; /*目的IP地址*/
69 };
70
71 struct icmp {/*包含在IP包中,是IP的上层为0X01的应用*/
72 uint EtherHead[9]; /*以太网头*/
73 uint IpHead[10]; /*IP头*/
74 uchar type; /*0X08 PING请求 0X00 PING应答*/
75 uchar option; /*0X00 PING*/
76 uint Crc;
77 uint id;
78 uint seq;
79 uchar icmpdata[1478];
80 };
81
82 struct tcp { uint EtherHead[9];
83 uint IpHead[10];
84 uint SourcePort; /*源端口*/
85 uint DestPort; /*目的端口*/
86 ulong SeqNum; /*顺序号*/
87 ulong AckNum; /*确认号*/
88 uchar offset; /*数据偏移量*/
89 uchar control; /*连接控制*/
90 uint window; /*流控*/
91 uint Crc; /*校验和 ,包括伪头部,TCP头部,数据*/
92 uint urg; /*紧急指针*/
93 uchar tcpdata[1478]; /*TCP数据*/
94 };
95
96 struct udp { uint EtherHead[9];
97 uint IpHead[10];
98 uint SourcePort; /*源端口*/
99 uint DestPort; /*目的端口*/
100 uint length;
101 uint Crc; /*校验和,包括伪头部,udp头部,数据*/
102 uchar udpdata[1478]; /*udp数据*/
103 };
104
105 /*所有协议的共用体*/
106 union Netcard {struct {uchar bytebuf[1536];}bytes;
107 struct {uint wordbuf[768];}words;
108 struct ethernet EtherFrame;
109 struct retransmit ResendFrame;
110 struct arp ArpFrame;
111 struct icmp IcmpFrame;
112 struct tcp TcpFrame;
113 struct ip IpFrame;
114 struct udp UdpFrame;
115 struct IpPacket IpPacket;
116 };
117
C51 COMPILER V7.10 NE2000 07/27/2007 17:19:47 PAGE 3
118 struct Socket_Type{
119 uint My_Port; //本机端口
120 uint Dest_Port; //对方端口
121 uint Dest_Ip[2]; //对方ip
122 uint Dest_Mac_Id[3]; //对方的以太网地址
123 ulong IRS; //初始化顺序号
124 ulong ISS; //我的初始化序列号
125 ulong Rcv_Next; //对方的顺序号
126 ulong Send_Next; //我的已经发送顺序号
127 ulong Sent_UnAck; //我的还没有确认顺序号
128 //unsigned long dest_ack_number;
129 uint Rcv_Window; //对方的window大小
130 uint Snd_Window; //我的window大小
131 uint Dest_Max_Seg_Size; //对方接受的最大的数据包大小MTU
132 uint My_Max_Seg_Size; //我能接受的最大的数据包大小
133 ulong My_Wl1; //seq
134 ulong My_Wl2; //ack
135 uchar State; //连接状态
136 uchar Open;
137 };
138
139 /*tcp state define */
140
141 #define TCP_STATE_LISTEN 0
142 #define TCP_STATE_SYN_RCVD 1
143 #define TCP_STATE_SYN_SENT 2
144 #define TCP_STATE_ESTABLISHED 3
145 #define TCP_STATE_FIN_WAIT1 4
146 #define TCP_STATE_FIN_WAIT2 5
147 #define TCP_STATE_CLOSING 6
148 #define TCP_STATE_CLOSE_WAIT 7
149 #define TCP_STATE_LAST_ACK 8
150 #define TCP_STATE_CLOSED 9
151 #define TCP_STATE_TIME_WAIT 10
152 //tcp连接的标志位
153 #define TCP_FIN 0x01
154 #define TCP_SYN 0x02
155 #define TCP_RST 0x04
156 #define TCP_PSH 0x08
157 #define TCP_ACK 0x10
158 #define TCP_URG 0x20
159
160
161 /*** RTL8019's address deifne ***/
162 #define dp668
163 #ifdef dp668 //reg00- 10为isa网卡接口的寄存器地址300-31f
164 #define RED_ADDR0 RTL8019AS_BASE_ADDRESS+0x00
165 #define RED_ADDR1 RTL8019AS_BASE_ADDRESS+0x01
166 #define RED_ADDR2 RTL8019AS_BASE_ADDRESS+0x02
167 #define RED_ADDR3 RTL8019AS_BASE_ADDRESS+0x03
168 #define RED_ADDR4 RTL8019AS_BASE_ADDRESS+0x04
169 #define RED_ADDR5 RTL8019AS_BASE_ADDRESS+0x05
170 #define RED_ADDR6 RTL8019AS_BASE_ADDRESS+0x06
171 #define RED_ADDR7 RTL8019AS_BASE_ADDRESS+0x07
172 #define RED_ADDR8 RTL8019AS_BASE_ADDRESS+0x08
173 #define RED_ADDR9 RTL8019AS_BASE_ADDRESS+0x09
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -