📄 des3428.lst
字号:
00: ;create by bighandfor des3428, 4/27/2007
00: ;LED program for DES3428
00: ;
00: ;LED sequence:
00: ;
00: ;LED for FE ports
00: ;Bit NO. 0 1 2 3
00: ;Function p1/10 p1/100 p2/10 p2/100
00: ;Bit NO. 4 5 6 7
00: ;Function p3/10 p3/100 p4/10 p4/100
00: ; .
00: ; .
00: ; .
00: ;Bit NO. 44 45 46 47
00: ;Function p23/10 p23/100 p24/10 p24/100
00:
00: ;LED for SIO port
00: ;Bit NO. 48 49 50 51
00: ;Function SIO_p1/100/10 SIO_p1/1000 SIO_p2/100/10 SIO_p2/1000
00:
00: ;LED for combo port
00: ;Bit NO. 52 53 54 55
00: ;Function COM_p1/100/10 COM_p1/1000 COM_p2/100/10 COM_p2/1000
00:
00: ;LED for 7-seg led
00: ;Bit NO. 56 57 58 59
00: ;Function 1A/1B/7_SEG 2A/7_SEG_LED 2B/7_SEG_LED 2C/7_SEG_LED
00: ;Bit NO. 60 61 62 63
00: ;Function 2D/7_SEG_LE 2E/7_SEG_LED 2F/7_SEG_LED 2G/7_SEG_LE
00:
00:
00: ; Symbolic names for the bits of the port status fields
00: ;
00: RX equ 0x0 ; received packet
00: TX equ 0x1 ; transmitted packet
00: COLL equ 0x2 ; collision indicator
00: SPEED_C equ 0x3 ; 100 Mbps
00: SPEED_M equ 0x4 ; 1000 Mbps
00: DUPLEX equ 0x5 ; half/full duplex
00: FLOW equ 0x6 ; flow control capable
00: LINKUP equ 0x7 ; link down/up status
00: LINKEN equ 0x8 ; link disabled/enabled status
00: ZERO equ 0xE ; always 0
00: ONE equ 0xF ; always 1
00:
00:
00: LED_FE_END equ 24 ;24
00: LED_SFP_END equ 26 ;24 + 2
00: LED_XE_END equ 28 ;24 + 2 + 2
00: LED_MG_END equ 36 ;24 + 2 + 2 + 8
00: LED_TOTAL_NUM equ 36
00: LED_TOTAL_BITS equ 64
00:
00: ;
00: LED_TIMER equ 0xC0 ;led timer
00: counter equ 0xC1 ;led counter
00: phyport equ 0xC2 ;physical port number
00:
00: ;per port's link status
00: ;Host update LED_LINK according link state
00: ;bit0-bit3: timer
00: ;bit4: 0=linkdown, 1=linkup
00: ;bit5:medium, 1=fiber, 0=copper
00: ;bit6:100M/1000M, 1=1000M on GE port,or 100M on FE port, 0=100M/10M on GE port,or 10M on FE port
00: ;bit7: 7 segment led
00:
00: ;one byte per port, total 58 bytes
00: LED_LINK equ 0xC4 ; total 28
00:
00: begin:
00: ;initialize
00: 02 00 ld A, 0
02: 60 C1 ld (counter), A
04:
04: ledloop:
04: ;Assign the first port
04: 12 00 ld B, 0
06: 06 C1 ld A, (counter)
08: 67 7A call getportmap
0A: 06 C2 ld A, (phyport)
0C: 28 port A
0D:
0D: F2 C4 add A, LED_LINK ; A = LED_LINK[phyport]
0F: 67 1B call led_link_status
11: 86 C1 inc (counter)
13: 06 C1 ld A, (counter)
15: D2 24 cmp A, LED_TOTAL_NUM
17: 74 04 jnz ledloop
19: sendto:
19: 3A 40 send LED_TOTAL_BITS
1B:
1B: ;assume the addrss of link status for phyport has been loaded into A,
1B: led_link_status:
1B: 16 C1 ld B,(counter)
1D: fe_port:
1D: DA 18 cmp B, LED_FE_END
1F: 75 29 jnc xe_port
21: 77 39 jmp check_link
23: sfp_port:
23: DA 1A cmp B, LED_SFP_END
25: 75 23 jnc sfp_port
27: 77 39 jmp check_link
29: xe_port:
29: DA 1C cmp B, LED_XE_END
2B: 75 2F jnc seven_seg
2D: 77 39 jmp check_link
2F:
2F: seven_seg:
2F: DA 24 cmp B, LED_MG_END ; if (counter >= LED_MG_END) jmp mg_end
31: 75 A1 jnc mg_end
33: 4A 07 tst (A), 7
35: 71 68 jc LED_ON_ONEBIT
37: 77 64 jmp LED_OFF_ONEBIT
39:
39: check_link:
39: 4A 04 tst (A), 4
3B: 75 61 jnc LINK_DOWN
3D: traffic:
3D: 32 00 pushst RX
3F: 32 01 pushst TX
41: B7 tor
42: 97 pop
43: 71 4F jc LINK_BLINK
45: 14 ld B,(A)
46: CA F0 and B, 0xF0
48: 41 ld (A), B ;reset led timer
49: LINK_UP:
49: 4A 06 tst (A), 6
4B: 71 73 jc LED_ON_GREEN
4D: 77 6C jmp LED_ON_AMBER
4F:
4F: ;(A): link status; B: counter
4F: LINK_BLINK:
4F: 84 inc (A)
50: 14 ld B,(A)
51: CA 0F and B, 0x0F
53: DA 02 cmp B,2
55: 71 61 jc LINK_DOWN
57: DA 03 cmp B,3
59: 71 49 jc LINK_UP
5B: 14 ld B, (A)
5C: CA F0 and B, 0xF0
5E: 41 ld (A),B
5F: 77 4F jmp LINK_BLINK
61:
61: LINK_DOWN:
61: 32 0F pushst ONE
63: 87 pack
64: LED_OFF_ONEBIT:
64: 32 0F pushst ONE
66: 87 pack
67: 57 ret
68:
68: LED_ON_ONEBIT:
68: 32 0E pushst ZERO
6A: 87 pack
6B: 57 ret
6C:
6C: LED_ON_AMBER:
6C: 32 0E pushst ZERO
6E: 87 pack
6F: 32 0F pushst ONE
71: 87 pack
72: 57 ret
73:
73: LED_ON_GREEN:
73: 32 0F pushst ONE
75: 87 pack
76: 32 0E pushst ZERO
78: 87 pack
79: 57 ret
7A:
7A: ;get portmap, assume counter has been loaded into A
7A: getportmap:
7A: D2 18 cmp A, LED_FE_END ; if (counter >= LED_FE_END) jump sfp_portmap
7C: 75 84 jnc sfp_portmap
7E: 12 06 ld B,6
80: F1 add A,B
81: 60 C2 ld (phyport), A
83: 57 ret
84: sfp_portmap:
84: D2 1A cmp A, LED_SFP_END ; if (counter >= LEDSFP_END) jump xe_portmap
86: 75 8E jnc xe_portmap
88: 12 14 ld B, 20
8A: E1 sub A, B
8B: 60 C2 ld (phyport), A
8D: 57 ret
8E: xe_portmap:
8E: D2 1C cmp A,LED_XE_END
90: 75 98 jnc mg_portmap
92: 12 19 ld B, 25
94: E1 sub A, B
95: 60 C2 ld (phyport), A
97: 57 ret
98: mg_portmap:
98: D2 24 cmp A, LED_MG_END
9A: 75 A1 jnc mg_end
9C: 12 1B ld B, 27
9E: E1 sub A, B
9F: 60 C2 ld (phyport), A
A1: mg_end:
A1: 57 ret
A2:
----- symbol table, 43 symbols -----
rx 0x0000
tx 0x0001
coll 0x0002
speed_c 0x0003
speed_m 0x0004
duplex 0x0005
flow 0x0006
linkup 0x0007
linken 0x0008
zero 0x000E
one 0x000F
led_fe_end 0x0018
led_sfp_end 0x001A
led_xe_end 0x001C
led_mg_end 0x0024
led_total_num 0x0024
led_total_bits 0x0040
led_timer 0x00C0
counter 0x00C1
phyport 0x00C2
led_link 0x00C4
begin 0x0000
ledloop 0x0004
sendto 0x0019
led_link_status 0x001B
fe_port 0x001D
sfp_port 0x0023
xe_port 0x0029
seven_seg 0x002F
check_link 0x0039
traffic 0x003D
link_up 0x0049
link_blink 0x004F
link_down 0x0061
led_off_onebit 0x0064
led_on_onebit 0x0068
led_on_amber 0x006C
led_on_green 0x0073
getportmap 0x007A
sfp_portmap 0x0084
xe_portmap 0x008E
mg_portmap 0x0098
mg_end 0x00A1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -