1
2
3
4 typedef unsigned char byte;
5 typedef unsigned short int word;
6 typedef unsigned long int dword;
7
8
9
10 struct Memconf {
11 word cmd_q,
12 rcv_q,
13 mcast,
14 frame,
15 rcv_b,
16 progs;
17 };
18
19 struct Rcv_pkt {
20 word buf_ofs,
21 buf_seg,
22 buf_len,
23 timeout;
24 };
25
26 struct Xmit_pkt {
27 word buf_ofs,
28 buf_seg,
29 pkt_len;
30 };
31
32 struct Rcv_resp {
33 word buf_ofs,
34 buf_seg,
35 buf_len,
36 pkt_len,
37 timeout,
38 status;
39 dword timetag;
40 };
41
42 struct Xmit_resp {
43 word buf_ofs,
44 buf_seg,
45 c_stat,
46 status;
47 };
48
49
50 struct Netstat {
51 dword tot_recv,
52 tot_xmit;
53 word err_CRC,
54 err_align,
55 err_res,
56 err_ovrrun;
57 };
58
59
60 struct Selftest {
61 word error;
62 union {
63 word ROM_cksum;
64 struct {
65 word ofs, seg;
66 } RAM;
67 word i82586;
68 } failure;
69 };
70
71 struct Info {
72 byte minor_vers,
73 major_vers;
74 word ROM_cksum,
75 RAM_sz,
76 free_ofs,
77 free_seg;
78 };
79
80 struct Memdump {
81 word size,
82 off,
83 seg;
84 };
85
86
87
88
89
90
91 typedef struct {
92 byte command;
93 byte length;
94 union {
95 struct Memconf memconf;
96 word configure;
97 struct Rcv_pkt rcv_pkt;
98 struct Xmit_pkt xmit_pkt;
99 byte multicast[10][6];
100 byte eth_addr[6];
101 byte failed;
102 struct Rcv_resp rcv_resp;
103 struct Xmit_resp xmit_resp;
104 struct Netstat netstat;
105 struct Selftest selftest;
106 struct Info info;
107 struct Memdump memdump;
108 byte raw[62];
109 } data;
110 } pcb_struct;
111
112
113 #define RECV_STATION 0x00
114 #define RECV_BROAD 0x01
115 #define RECV_MULTI 0x02
116 #define RECV_ALL 0x04
117 #define NO_LOOPBACK 0x00
118 #define INT_LOOPBACK 0x08
119 #define EXT_LOOPBACK 0x10