📄 ax88796.lst
字号:
207 .stabn 68,0,71,.LM22-ax88796Init
208 .LM22:
209 0098 66E4 ldi r22,lo8(70)
210 009a 81E0 ldi r24,lo8(1)
211 009c 0E94 0000 call ax88796Write
72:ax88796.c **** ax88796Write(PSTOP,RXSTOP_INIT);
212 .stabn 68,0,72,.LM23-ax88796Init
213 .LM23:
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 6
214 00a0 60E6 ldi r22,lo8(96)
215 00a2 82E0 ldi r24,lo8(2)
216 00a4 0E94 0000 call ax88796Write
73:ax88796.c ****
74:ax88796.c **** // switch to page 1
75:ax88796.c **** ax88796Write(CR,(PS0|RD2|STOP));
217 .stabn 68,0,75,.LM24-ax88796Init
218 .LM24:
219 00a8 61E6 ldi r22,lo8(97)
220 00aa 80E0 ldi r24,lo8(0)
221 00ac 0E94 0000 call ax88796Write
76:ax88796.c **** // write mac address
77:ax88796.c **** ax88796Write(PAR0+0, MYMAC_0);
222 .stabn 68,0,77,.LM25-ax88796Init
223 .LM25:
224 00b0 60E3 ldi r22,lo8(48)
225 00b2 81E0 ldi r24,lo8(1)
226 00b4 0E94 0000 call ax88796Write
78:ax88796.c **** ax88796Write(PAR0+1, MYMAC_1);
227 .stabn 68,0,78,.LM26-ax88796Init
228 .LM26:
229 00b8 66E4 ldi r22,lo8(70)
230 00ba 82E0 ldi r24,lo8(2)
231 00bc 0E94 0000 call ax88796Write
79:ax88796.c **** ax88796Write(PAR0+2, MYMAC_2);
232 .stabn 68,0,79,.LM27-ax88796Init
233 .LM27:
234 00c0 66E4 ldi r22,lo8(70)
235 00c2 83E0 ldi r24,lo8(3)
236 00c4 0E94 0000 call ax88796Write
80:ax88796.c **** ax88796Write(PAR0+3, MYMAC_3);
237 .stabn 68,0,80,.LM28-ax88796Init
238 .LM28:
239 00c8 69E4 ldi r22,lo8(73)
240 00ca 84E0 ldi r24,lo8(4)
241 00cc 0E94 0000 call ax88796Write
81:ax88796.c **** ax88796Write(PAR0+4, MYMAC_4);
242 .stabn 68,0,81,.LM29-ax88796Init
243 .LM29:
244 00d0 63E4 ldi r22,lo8(67)
245 00d2 85E0 ldi r24,lo8(5)
246 00d4 0E94 0000 call ax88796Write
82:ax88796.c **** ax88796Write(PAR0+5, MYMAC_5);
247 .stabn 68,0,82,.LM30-ax88796Init
248 .LM30:
249 00d8 65E4 ldi r22,lo8(69)
250 00da 86E0 ldi r24,lo8(6)
251 00dc 0E94 0000 call ax88796Write
83:ax88796.c **** // set start point
84:ax88796.c **** ax88796Write(CURR,RXSTART_INIT+1);
252 .stabn 68,0,84,.LM31-ax88796Init
253 .LM31:
254 00e0 67E4 ldi r22,lo8(71)
255 00e2 87E0 ldi r24,lo8(7)
256 00e4 0E94 0000 call ax88796Write
85:ax88796.c ****
86:ax88796.c **** ax88796Write(CR,(RD2|START));
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 7
257 .stabn 68,0,86,.LM32-ax88796Init
258 .LM32:
259 00e8 62E2 ldi r22,lo8(34)
260 00ea 80E0 ldi r24,lo8(0)
261 00ec 0E94 0000 call ax88796Write
87:ax88796.c **** ax88796Write(RCR,RCR_INIT);
262 .stabn 68,0,87,.LM33-ax88796Init
263 .LM33:
264 00f0 64E4 ldi r22,lo8(68)
265 00f2 8CE0 ldi r24,lo8(12)
266 00f4 0E94 0000 call ax88796Write
88:ax88796.c ****
89:ax88796.c **** if(ax88796Read(GPI) & I_SPD) // check PHY speed setting
267 .stabn 68,0,89,.LM34-ax88796Init
268 .LM34:
269 00f8 87E1 ldi r24,lo8(23)
270 00fa 0E94 0000 call ax88796Read
271 00fe 82FF sbrs r24,2
272 0100 02C0 rjmp .L5
90:ax88796.c **** tcrFduFlag = FDU; // if 100base, do full duplex
273 .stabn 68,0,90,.LM35-ax88796Init
274 .LM35:
275 0102 C0E8 ldi r28,lo8(-128)
276 0104 01C0 rjmp .L6
277 .L5:
91:ax88796.c **** else
92:ax88796.c **** tcrFduFlag = 0; // if 10base, do half duplex
278 .stabn 68,0,92,.LM36-ax88796Init
279 .LM36:
280 0106 C0E0 ldi r28,lo8(0)
281 .L6:
93:ax88796.c ****
94:ax88796.c **** ax88796Write(TCR,(tcrFduFlag|TCR_INIT));
282 .stabn 68,0,94,.LM37-ax88796Init
283 .LM37:
284 0108 6C2F mov r22,r28
285 010a 8DE0 ldi r24,lo8(13)
286 010c 0E94 0000 call ax88796Write
95:ax88796.c ****
96:ax88796.c **** ax88796Write(GPOC,MPSEL); // select media interface
287 .stabn 68,0,96,.LM38-ax88796Init
288 .LM38:
289 0110 60E1 ldi r22,lo8(16)
290 0112 87E1 ldi r24,lo8(23)
291 0114 0E94 0000 call ax88796Write
97:ax88796.c ****
98:ax88796.c **** ax88796Write(TPSR,TXSTART_INIT);
292 .stabn 68,0,98,.LM39-ax88796Init
293 .LM39:
294 0118 60E4 ldi r22,lo8(64)
295 011a 84E0 ldi r24,lo8(4)
296 011c 0E94 0000 call ax88796Write
99:ax88796.c ****
100:ax88796.c **** ax88796Write(CR,(RD2|STOP));
297 .stabn 68,0,100,.LM40-ax88796Init
298 .LM40:
299 0120 61E2 ldi r22,lo8(33)
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 8
300 0122 80E0 ldi r24,lo8(0)
301 0124 0E94 0000 call ax88796Write
101:ax88796.c **** ax88796Write(DCR,DCR_INIT);
302 .stabn 68,0,101,.LM41-ax88796Init
303 .LM41:
304 0128 60E0 ldi r22,lo8(0)
305 012a 8EE0 ldi r24,lo8(14)
306 012c 0E94 0000 call ax88796Write
102:ax88796.c **** ax88796Write(CR,(RD2|START));
307 .stabn 68,0,102,.LM42-ax88796Init
308 .LM42:
309 0130 62E2 ldi r22,lo8(34)
310 0132 80E0 ldi r24,lo8(0)
311 0134 0E94 0000 call ax88796Write
103:ax88796.c **** ax88796Write(ISR,0xFF);
312 .stabn 68,0,103,.LM43-ax88796Init
313 .LM43:
314 0138 6FEF ldi r22,lo8(-1)
315 013a 87E0 ldi r24,lo8(7)
316 013c 0E94 0000 call ax88796Write
104:ax88796.c **** ax88796Write(IMR,IMR_INIT);
317 .stabn 68,0,104,.LM44-ax88796Init
318 .LM44:
319 0140 61E1 ldi r22,lo8(17)
320 0142 8FE0 ldi r24,lo8(15)
321 0144 0E94 0000 call ax88796Write
105:ax88796.c **** ax88796Write(TCR,(tcrFduFlag|TCR_INIT));
322 .stabn 68,0,105,.LM45-ax88796Init
323 .LM45:
324 0148 6C2F mov r22,r28
325 014a 8DE0 ldi r24,lo8(13)
326 014c 0E94 0000 call ax88796Write
106:ax88796.c ****
107:ax88796.c **** //test
108:ax88796.c **** /*
109:ax88796.c **** while(1)
110:ax88796.c **** {
111:ax88796.c **** vt100SetCursorPos(18,0);
112:ax88796.c **** ax88796RegDump();
113:ax88796.c **** }
114:ax88796.c **** */
115:ax88796.c **** }
327 .stabn 68,0,115,.LM46-ax88796Init
328 .LM46:
329 .LBE2:
330 /* epilogue: frame size=0 */
331 0150 CF91 pop r28
332 0152 0895 ret
333 /* epilogue end (size=2) */
334 /* function ax88796Init size 170 (167) */
335 .size ax88796Init, .-ax88796Init
336 .stabs "tcrFduFlag:r(0,11)",64,0,42,28
337 .stabn 192,0,0,.LBB2-ax88796Init
338 .stabn 224,0,0,.LBE2-ax88796Init
339 .Lscope0:
340 .stabs "",36,0,0,.Lscope0-ax88796Init
341 .stabs "ax88796Write:F(0,20)",36,0,125,ax88796Write
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 9
342 .stabs "address:P(4,1)",64,0,124,25
343 .stabs "data:P(4,1)",64,0,124,18
344 .global ax88796Write
345 .type ax88796Write, @function
346 ax88796Write:
116:ax88796.c ****
117:ax88796.c ****
118:ax88796.c **** #if MEMORY_MAPPED_NIC == 1
119:ax88796.c **** #define ax88796Write(AX88796_REG,AX88796_DATA) do{ *(volatile unsigned char *) \
120:ax88796.c **** (MEMORY_MAPPED_AX88796_OFFSET \
121:ax88796.c **** + (((unsigned char)(AX88796_REG)) << 8)) = \
122:ax88796.c **** (unsigned char)(AX88796_DATA); } while(0)
123:ax88796.c **** #else
124:ax88796.c **** void ax88796Write(u08 address, u08 data)
125:ax88796.c **** {
347 .stabn 68,0,125,.LM47-ax88796Write
348 .LM47:
349 /* prologue: frame size=0 */
350 /* prologue end (size=0) */
351 0154 982F mov r25,r24
126:ax88796.c **** // assert the address
127:ax88796.c **** outb(AX88796_ADDRESS_PORT, address | (inp(AX88796_ADDRESS_PORT)&~AX88796_ADDRESS_MASK));
352 .stabn 68,0,127,.LM48-ax88796Write
353 .LM48:
354 0156 85B3 in r24,53-0x20
355 0158 807E andi r24,lo8(-32)
356 015a 892B or r24,r25
357 015c 85BB out 53-0x20,r24
128:ax88796.c ****
129:ax88796.c **** // set data bus as output and place data on bus
130:ax88796.c **** outb(AX88796_DATA_DDR, 0xFF);
358 .stabn 68,0,130,.LM49-ax88796Write
359 .LM49:
360 015e 8FEF ldi r24,lo8(-1)
361 0160 8ABB out 58-0x20,r24
131:ax88796.c **** outb(AX88796_DATA_PORT, data);
362 .stabn 68,0,131,.LM50-ax88796Write
363 .LM50:
364 0162 6BBB out 59-0x20,r22
132:ax88796.c ****
133:ax88796.c **** // clock write pin
134:ax88796.c **** cbi(AX88796_CONTROL_PORT, AX88796_CONTROL_WRITEPIN);
365 .stabn 68,0,134,.LM51-ax88796Write
366 .LM51:
367 0164 AE98 cbi 53-0x20,6
135:ax88796.c **** asm volatile ("nop");
368 .stabn 68,0,135,.LM52-ax88796Write
369 .LM52:
370 /* #APP */
371 0166 0000 nop
136:ax88796.c **** sbi(AX88796_CONTROL_PORT, AX88796_CONTROL_WRITEPIN);
372 .stabn 68,0,136,.LM53-ax88796Write
373 .LM53:
374 /* #NOAPP */
375 0168 AE9A sbi 53-0x20,6
137:ax88796.c ****
138:ax88796.c **** // set data bus back to input with pullups enabled
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 10
139:ax88796.c **** outb(AX88796_DATA_DDR, 0x00);
376 .stabn 68,0,139,.LM54-ax88796Write
377 .LM54:
378 016a 1ABA out 58-0x20,__zero_reg__
140:ax88796.c **** outb(AX88796_DATA_PORT, 0xFF);
379 .stabn 68,0,140,.LM55-ax88796Write
380 .LM55:
381 016c 8BBB out 59-0x20,r24
141:ax88796.c **** }
382 .stabn 68,0,141,.LM56-ax88796Write
383 .LM56:
384 /* epilogue: frame size=0 */
385 016e 0895 ret
386 /* epilogue end (size=1) */
387 /* function ax88796Write size 15 (14) */
388 .size ax88796Write, .-ax88796Write
389 .Lscope1:
390 .stabs "",36,0,0,.Lscope1-ax88796Write
391 .stabs "ax88796Read:F(4,1)",36,0,150,ax88796Read
392 .stabs "address:P(4,1)",64,0,149,25
393 .global ax88796Read
394 .type ax88796Read, @function
395 ax88796Read:
142:ax88796.c **** #endif
143:ax88796.c ****
144:ax88796.c **** #if MEMORY_MAPPED_NIC == 1
145:ax88796.c **** #define ax88796Read(AX88796_ADDRESS) (*(volatile unsigned char *) \
146:ax88796.c **** (MEMORY_MAPPED_AX88796_OFFSET \
147:ax88796.c **** + (((unsigned char)(AX88796_ADDRESS)) << 8)) )
148:ax88796.c **** #else
149:ax88796.c **** u08 ax88796Read(u08 address)
150:ax88796.c **** {
396 .stabn 68,0,150,.LM57-ax88796Read
397 .LM57:
398 /* prologue: frame size=0 */
399 /* prologue end (size=0) */
400 0170 982F mov r25,r24
151:ax88796.c **** u08 byte;
152:ax88796.c ****
153:ax88796.c **** // assert the address
154:ax88796.c **** outb(AX88796_ADDRESS_PORT, address | (inp(AX88796_ADDRESS_PORT)&~AX88796_ADDRESS_MASK));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -