📄 mouse.lis
字号:
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 1
1 ; ---------------------------------------------------------
2 ; ../src/mouse.c
3 ; compiled with GCC 2.7.2 ST9+ Software Development Toolchain Version 6.1.3
4 ; Thu Oct 31 15:01:48 2002
5 ;
6 ; OPTIMIZATIONS: 1
7 ; omit-frame-pointer
8 ; OPTIONS: compact
9 ; ---------------------------------------------------------
10
11 gcc_compiled.:
12 .assume no-parmusp,no-fp-on,compact
38
39 .globl mouse_str
40
41 .section .rodata
43
44 .desc mouse_str, near
45 mouse_str:
46 0000 F3 .byte 243
47 0001 C8 .byte 200
48 0002 F3 .byte 243
49 0003 64 .byte 100
50 0004 F3 .byte 243
51 0005 50 .byte 80
52 0006 F0 .byte 240
53 0007 E8 .byte 232
54 0008 03 .byte 3
55 0009 F3 .byte 243
56 000a 64 .byte 100
57
58 .section .data
60
61 .desc mouse_length, near
62 mouse_length:
63 0000 00 .byte 0
65
66 .desc mouse_fsm, near
67 mouse_fsm:
68 0001 00 .byte 0
69
70 .globl P3DR
71 .desc P3DR, 8bit register
72 P3DR= 227
73
74 .section .text
77
78 .globl mouse_cmd
79
80 .desc mouse_cmd, near
81 .proc mouse_cmd
82 mouse_cmd:
83 .Ltext0:
1:../src/mouse.c **** #include <cpu.h>
2:../src/mouse.c **** #include <usb.h>
3:../src/mouse.c ****
4:../src/mouse.c **** #pragma register_file EP4TxAddr 32
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 2
5:../src/mouse.c **** extern volatile void *EP4TxAddr ;
6:../src/mouse.c **** #pragma register_file EP4TxCount 34
7:../src/mouse.c **** extern volatile WORD EP4TxCount ;
8:../src/mouse.c **** #pragma register_file EP4RxAddr 36
9:../src/mouse.c **** extern volatile void *EP4RxAddr ;
10:../src/mouse.c **** #pragma register_file EP4RxCount 38
11:../src/mouse.c **** extern volatile WORD EP4RxCount ;
12:../src/mouse.c **** #pragma register_file EP5TxAddr 40
13:../src/mouse.c **** extern volatile void *EP5TxAddr ;
14:../src/mouse.c **** #pragma register_file EP5TxCount 42
15:../src/mouse.c **** extern volatile WORD EP5TxCount ;
16:../src/mouse.c **** //#pragma register_file EP5RxAddr 44
17:../src/mouse.c **** //extern volatile void *EP5RxAddr ;
18:../src/mouse.c **** //#pragma register_file EP5RxCount 46
19:../src/mouse.c **** //extern volatile WORD EP5RxCount ;
20:../src/mouse.c ****
21:../src/mouse.c **** //#pragma register_file ms_tout 44
22:../src/mouse.c **** //extern volatile BYTE ms_tout ;
23:../src/mouse.c **** WORD ms_tout ;
24:../src/mouse.c ****
25:../src/mouse.c **** #define DATA_IN() ;
26:../src/mouse.c **** #define DATA_OUT() ;
27:../src/mouse.c **** #define DATA_LOW() (P3DR = ~0x10)
28:../src/mouse.c **** #define DATA_HIGH() (P3DR = 0xFF)
29:../src/mouse.c **** #define DATA_IS_HIGH() (P3DR & 0x10)
30:../src/mouse.c **** #define CLK_LOW() (P3DR = ~0x20)
31:../src/mouse.c **** #define CLK_HIGH() (P3DR = 0xFF) ;
32:../src/mouse.c **** #define CLK_IS_HIGH() (P3DR & 0x20)
33:../src/mouse.c ****
34:../src/mouse.c **** #define WAIT_CLK_LOW() ms_tout = 0x1FF ; \
35:../src/mouse.c **** do { \
36:../src/mouse.c **** if( !CLK_IS_HIGH()) \
37:../src/mouse.c **** break ; \
38:../src/mouse.c **** } while( --ms_tout) ; \
39:../src/mouse.c **** \
40:../src/mouse.c **** if( !ms_tout) \
41:../src/mouse.c **** return 1 ; \
42:../src/mouse.c ****
43:../src/mouse.c **** //#define WAIT_C_L( a) asm( "\n\
44:../src/mouse.c **** // clr r1\n\
45:../src/mouse.c **** //tst_clkl" #a ":\n\
46:../src/mouse.c **** // tm R227, #0x20\n\
47:../src/mouse.c **** // jrz clk_is_low" #a "\n\
48:../src/mouse.c **** // djnz r1, tst_clk" #a "\n\
49:../src/mouse.c **** // ld r1, #1\n\
50:../src/mouse.c **** // ret\n\
51:../src/mouse.c **** //clk_is_low" #a ":\n")
52:../src/mouse.c ****
53:../src/mouse.c **** #define WAIT_CLK_HIGH() ms_tout = 0x1FF ; \
54:../src/mouse.c **** do { \
55:../src/mouse.c **** if( CLK_IS_HIGH()) \
56:../src/mouse.c **** break ; \
57:../src/mouse.c **** } while( --ms_tout) ; \
58:../src/mouse.c **** \
59:../src/mouse.c **** if( !ms_tout) \
60:../src/mouse.c **** return 1 ; \
61:../src/mouse.c ****
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 3
62:../src/mouse.c **** //#define WAIT_C_H( a) asm( "\n\
63:../src/mouse.c **** // clr r1\n\
64:../src/mouse.c **** //tst_clkh" #a ":\n\
65:../src/mouse.c **** // tm R227, #0x20\n\
66:../src/mouse.c **** // jrnz c_is_high" #a "\n\
67:../src/mouse.c **** // djnz r1, tst_clkh" #a "\n\
68:../src/mouse.c **** // ld r1, #1\n\
69:../src/mouse.c **** // ret\n\
70:../src/mouse.c **** //c_is_high" #a ":\n")
71:../src/mouse.c ****
72:../src/mouse.c **** //#define WAIT_CLK_HIGH() ms_tout = 0 ; \
73:../src/mouse.c **** // while( !CLK_IS_HIGH()) \
74:../src/mouse.c **** // if( !( --ms_tout)) \
75:../src/mouse.c **** // return 1 ; \
76:../src/mouse.c **** //
77:../src/mouse.c ****
78:../src/mouse.c **** #define FAIL() ms_tout = 0 ; \
79:../src/mouse.c **** return 1 ;
80:../src/mouse.c ****
81:../src/mouse.c **** const unsigned char mouse_str[] = {
82:../src/mouse.c **** 0xF3, 0xC8, 0xF3, 0x64, 0xF3, 0x50, 0xF0, 0xE8, 0x03, 0xF3, 0x64
83:../src/mouse.c **** } ;
84:../src/mouse.c ****
85:../src/mouse.c **** #define MSINIT_SIZE ( sizeof mouse_str / sizeof mouse_str[ 0])
86:../src/mouse.c ****
87:../src/mouse.c **** static BYTE mouse_length = 0 ;
88:../src/mouse.c **** static BYTE mouse_fsm = 0 ;
89:../src/mouse.c **** BYTE Mouse_Buffer[ 4] ;
90:../src/mouse.c ****
91:../src/mouse.c **** static void MOUSE_Send( void) ;
92:../src/mouse.c ****
93:../src/mouse.c **** unsigned char mouse_cmd( unsigned char c) /* returns TRUE on error */
94:../src/mouse.c **** {
85 .LMM2:
95:../src/mouse.c **** unsigned char cnt ;
87 .LBB2:
88 .LMM3:
96:../src/mouse.c **** unsigned char parity = 1 ;
90 0000 2C01 ld r2,#1
91 .LMM4:
97:../src/mouse.c ****
98:../src/mouse.c **** spp( P3C_PG) ;
93 ; #APP
94 0002 C70A spp #2
95 ; #NO_APP
96 .LMM5:
99:../src/mouse.c ****
100:../src/mouse.c **** /* Request mouse attention */
101:../src/mouse.c **** WAIT_CLK_HIGH() ;
98 0004 36F101FF ldw dpr:pof(@ms_tout),#511
98 0000
99 000a A5E320 tm @P3DR,#32
100 000d EB0E jxnz .L3
101 .L4:
102 000f 3641FFFF addw dpr:pof(@ms_tout),#-1
102 0000
103 0015 6D0160 jxz .L88
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 4
104 0018 A5E320 tm @P3DR,#32
105 001b 6BF2 jxz .L4
106 .L3:
107 001d 36910000 cpw dpr:pof(@ms_tout),#0
107 0000
108 0023 6D0160 jxz .L88
109 .LMM6:
102:../src/mouse.c **** /* Lower data line */
103:../src/mouse.c **** DATA_LOW() ;
111 0026 F5E3EF ld @P3DR,#-17
112 .LMM7:
104:../src/mouse.c **** DATA_OUT() ;
105:../src/mouse.c ****
106:../src/mouse.c **** di() ;
114 ; #APP
115 0029 10 di
116 ; #NO_APP
117 .LMM8:
107:../src/mouse.c ****
108:../src/mouse.c **** /* Wait clock to be low again */
109:../src/mouse.c **** WAIT_CLK_LOW() ;
119 002a 36F101FF ldw dpr:pof(@ms_tout),#511
119 0000
120 0030 A5E320 tm @P3DR,#32
121 0033 6B0E jxz .L10
122 .L11:
123 0035 3641FFFF addw dpr:pof(@ms_tout),#-1
123 0000
124 003b 6D0160 jxz .L88
125 003e A5E320 tm @P3DR,#32
126 0041 EBF2 jxnz .L11
127 .L10:
128 0043 36910000 cpw dpr:pof(@ms_tout),#0
128 0000
129 0049 6D0160 jxz .L88
130 .LMM9:
110:../src/mouse.c ****
111:../src/mouse.c **** /* Transmit byte */
112:../src/mouse.c **** for( cnt = 0 ; cnt < 8 ; cnt++)
132 004c 90D1 clr r1
133 004e BFD401FF ldw rr4,#511
134 .L19:
135 .LMM10:
113:../src/mouse.c **** {
114:../src/mouse.c **** if( c & 1)
137 0052 AF1008 btjxf r0.0,.L20
138 .LMM11:
115:../src/mouse.c **** {
116:../src/mouse.c **** DATA_HIGH() ;
140 0055 F5E3FF ld @P3DR,#-1
141 .LMM12:
117:../src/mouse.c **** parity ^= 1 ;
143 0058 65D201 xor r2,#1
144 .LMM13:
118:../src/mouse.c **** }
146 005b 8B03 jxt .L21
147 .L20:
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 5
148 .LMM14:
119:../src/mouse.c **** else
120:../src/mouse.c **** DATA_LOW() ;
150 005d F5E3EF ld @P3DR,#-17
151 .L21:
152 .LMM15:
121:../src/mouse.c ****
122:../src/mouse.c **** c >>= 1 ;
154 0060 11 rcf
155 0061 D0D0 rrc r0
156 .LMM16:
123:../src/mouse.c ****
124:../src/mouse.c **** WAIT_CLK_HIGH() ;
158 0063 E2F50000 ldw dpr:pof(@ms_tout),rr4
159 0067 A5E320 tm @P3DR,#32
160 006a EB0E jxnz .L23
161 .L24:
162 006c 3641FFFF addw dpr:pof(@ms_tout),#-1
162 0000
163 0072 6D0160 jxz .L88
164 0075 A5E320 tm @P3DR,#32
165 0078 6BF2 jxz .L24
166 .L23:
167 007a 36910000 cpw dpr:pof(@ms_tout),#0
167 0000
168 0080 6D0160 jxz .L88
169 .LMM17:
125:../src/mouse.c **** WAIT_CLK_LOW() ;
171 0083 E2F50000 ldw dpr:pof(@ms_tout),rr4
172 0087 A5E320 tm @P3DR,#32
173 008a 6B0E jxz .L30
174 .L31:
175 008c 3641FFFF addw dpr:pof(@ms_tout),#-1
175 0000
176 0092 6D0160 jxz .L88
177 0095 A5E320 tm @P3DR,#32
178 0098 EBF2 jxnz .L31
179 .L30:
180 009a 36910000 cpw dpr:pof(@ms_tout),#0
180 0000
181 00a0 6D0160 jxz .L88
182 .LMM18:
184 00a3 50D1 inc r1
185 00a5 95D107 cp r1,#7
186 00a8 3BA8 jxule .L19
187 .LMM19:
126:../src/mouse.c **** }
127:../src/mouse.c ****
128:../src/mouse.c **** /* Parity */
129:../src/mouse.c **** if( parity)
189 00aa 0222 or r2,r2
190 00ac 6B05 jxz .L37
191 .LMM20:
130:../src/mouse.c **** DATA_HIGH() ;
193 00ae F5E3FF ld @P3DR,#-1
194 00b1 8B03 jxt .L38
195 .L37:
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 6
196 .LMM21:
131:../src/mouse.c **** else
132:../src/mouse.c **** DATA_LOW() ;
198 00b3 F5E3EF ld @P3DR,#-17
199 .L38:
200 .LMM22:
133:../src/mouse.c ****
134:../src/mouse.c **** WAIT_CLK_HIGH() ;
202 00b6 36F101FF ldw dpr:pof(@ms_tout),#511
202 0000
203 00bc A5E320 tm @P3DR,#32
204 00bf EB0E jxnz .L40
205 .L41:
206 00c1 3641FFFF addw dpr:pof(@ms_tout),#-1
206 0000
207 00c7 6D0160 jxz .L88
208 00ca A5E320 tm @P3DR,#32
209 00cd 6BF2 jxz .L41
210 .L40:
211 00cf 36910000 cpw dpr:pof(@ms_tout),#0
211 0000
212 00d5 6D0160 jxz .L88
213 .LMM23:
135:../src/mouse.c **** WAIT_CLK_LOW() ;
215 00d8 36F101FF ldw dpr:pof(@ms_tout),#511
215 0000
216 00de A5E320 tm @P3DR,#32
217 00e1 6B0D jxz .L47
218 .L48:
219 00e3 3641FFFF addw dpr:pof(@ms_tout),#-1
219 0000
220 00e9 6B75 jxz .L88
221 00eb A5E320 tm @P3DR,#32
222 00ee EBF3 jxnz .L48
223 .L47:
224 00f0 36910000 cpw dpr:pof(@ms_tout),#0
224 0000
225 00f6 6B68 jxz .L88
226 .LMM24:
136:../src/mouse.c ****
137:../src/mouse.c **** /* Stop bit */
138:../src/mouse.c **** DATA_HIGH() ;
228 00f8 F5E3FF ld @P3DR,#-1
229 .LMM25:
139:../src/mouse.c **** WAIT_CLK_HIGH() ;
231 00fb 36F101FF ldw dpr:pof(@ms_tout),#511
231 0000
232 0101 A5E320 tm @P3DR,#32
233 0104 EB0D jxnz .L54
234 .L55:
235 0106 3641FFFF addw dpr:pof(@ms_tout),#-1
235 0000
236 010c 6B52 jxz .L88
237 010e A5E320 tm @P3DR,#32
238 0111 6BF3 jxz .L55
239 .L54:
240 0113 36910000 cpw dpr:pof(@ms_tout),#0
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 7
240 0000
241 0119 6B45 jxz .L88
242 .LMM26:
140:../src/mouse.c **** DATA_IN() ;
141:../src/mouse.c **** WAIT_CLK_LOW() ;
244 011b 36F101FF ldw dpr:pof(@ms_tout),#511
244 0000
245 0121 A5E320 tm @P3DR,#32
246 0124 6B0D jxz .L61
247 .L62:
248 0126 3641FFFF addw dpr:pof(@ms_tout),#-1
248 0000
249 012c 6B32 jxz .L88
250 012e A5E320 tm @P3DR,#32
251 0131 EBF3 jxnz .L62
252 .L61:
253 0133 36910000 cpw dpr:pof(@ms_tout),#0
253 0000
254 0139 6B25 jxz .L88
255 .LMM27:
142:../src/mouse.c ****
143:../src/mouse.c **** /* Line control bit: Mouse pulls data low on correct reception */
144:../src/mouse.c **** parity = DATA_IS_HIGH() ;
257 013b 28E3 ld r2,@P3DR
258 013d 15D210 and r2,#16
259 .LMM28:
145:../src/mouse.c **** WAIT_CLK_HIGH() ;
261 0140 36F101FF ldw dpr:pof(@ms_tout),#511
261 0000
262 0146 A5E320 tm @P3DR,#32
263 0149 EB0D jxnz .L68
264 .L69:
265 014b 3641FFFF addw dpr:pof(@ms_tout),#-1
265 0000
266 0151 6B0D jxz .L88
267 0153 A5E320 tm @P3DR,#32
268 0156 6BF3 jxz .L69
269 .L68:
270 0158 36910000 cpw dpr:pof(@ms_tout),#0
270 0000
271 015e EB03 jxnz .L73
272 .L88:
273 0160 1C01 ld r1,#1
274 0162 46 ret
275 .L73:
276 .LMM29:
146:../src/mouse.c ****
147:../src/mouse.c **** if( !parity)
278 0163 0222 or r2,r2
279 0165 EB18 jxnz .L74
280 .LMM30:
148:../src/mouse.c **** {
149:../src/mouse.c **** /* Inhibit io */
150:../src/mouse.c **** CLK_LOW() ;
282 0167 F5E3DF ld @P3DR,#-33
283 .LMM31:
151:../src/mouse.c **** ei() ;
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -