📄 usb_oper.lst
字号:
"File: USB_OPER.ASM Holtek Cross-Assembler Version 2.86 Page 1
1 0000 INCLUDE DONGLE.INC
2 0000
3 0000
4 0000 PUBLIC INIT_USB
5 0000 PUBLIC USB_ROUTINE
6 0000 PUBLIC WRITE_FIFO2
7 0000 PUBLIC WRITE_FIFO2X
8 0000 PUBLIC WRITE_FIFO2XX
9 0000
10 0000 PUBLIC WRITE_FIFO1
11 0000 PUBLIC WRITE_FIFO1_ALLZERO
12 0000 PUBLIC USB_CONFIGURATION_DONE
13 0000 PUBLIC FIFO_WF
14 0000 PUBLIC FIFO_WF1
15 0000 PUBLIC NOT_BOOT_TYPE
16 0000 EXTERN RF_KDATA_GOT:BIT
17 0000 EXTERN RF_MDATA_GOT:BIT
18 0000 ;PUBLIC WRITE_USB_CIRCLE
19 0000 ;PUBLIC TEST_V
20 0000 USB_OPERDATA .SECTION 'DATA'
21 0000
22 0000 00 EP0_READY DBIT
23 0000 EP1_READY DBIT
24 0000 EP2_READY DBIT
25 0000 USB_CONFIGURATION_DONE DBIT
26 0000 ZERO_IN_TOKEN_REQUIRED DBIT
27 0000 USB_SUSPENDED DBIT
28 0000 FIFO_WF DBIT
29 0000 FIFO_WF1 DBIT
30 0001 00 NOT_BOOT_TYPE DBIT
31 0002
32 0002 00 USB_LCOUNT DB ?
33 0003 00 USB_DATALENGTH DB ?
34 0004
35 0004 00 BYTE_REST DB ?
36 0005 00 BYTE_POS DB ?
37 0006 00 BYTE_SADDR DB ?
38 0007 00 USB_SUSPEND_CNT DB ?
39 0008
40 0008 ;PLUSONE DBIT
41 0008 ;CIRCLE_STEP DB ?
42 0008 ;DX DB ?
43 0008 ;DY DB ?
44 0008 ;TEST_V DB ?
45 0008 00 BIGGER_THAN_8_TEMP DB ?
46 0009
47 0000 USB_OPERCODE .SECTION 'CODE'
48 0000
49 0000 INIT_USB:
50 0000
51 0000 0F40 MOV A, 040H ;Clear SCC options
52 0001 009C MOV SCC, A ;Select 6MHz
53 0002
54 0002 361B CLR USR.4 ;Necessary steps; to ensure the interface selection
55 0003 369B CLR USR.5 ;is the correct one
56 0004
57 0004 0F43 MOV A, STALL
"File: USB_OPER.ASM Holtek Cross-Assembler Version 2.86 Page 2
58 0005 0083 MOV MP1, A
59 0006 3482 CLR ID1.1
60 0007 3502 CLR ID1.2
61 0008
62 0008 361B CLR USR.4 ;NOT SELECT PS/2 INTERFACE
63 0009 329B SET USR.5 ;SELECT USB INTERFACE
64 000A 339B SET USR.7 ;USB MODE
65 000B 361C CLR SUSP2
66 000C 319C SET SCC.3 ;TURN USB CLOCK
67 000D
68 000D 0F41 MOV A, 041H
69 000E 0083 MOV MP1, A
70 000F 0F06 MOV A, 06H
71 0010 0082 MOV ID1, A
72 0011
73 0011 ;CLR CIRCLE_STEP
74 0011
75 0011 3400 R CLR EP1_READY
76 0012 3400 R CLR EP2_READY
77 0013
78 0013 0003 RET
79 0014
80 0014 USB_ROUTINE:
81 0014 3A0B SNZ USBF ;CHECK IF THERE IS ANY USB EVENT, IF NO,
82 0015 2800 R JMP EXIT_USB_ROUTINE;THEN EXIT USB ROUTINE
83 0016
84 0016 3D1A SZ URST ;CHECK IF USB RESET SIGNAL IS RECEIVED,
85 0017 2800 R JMP HANDLE_USBRST ;IF SO, HANDLE IT
86 0018
87 0018 3C1A SZ SUSP
88 0019 2800 R JMP HANDLE_SUSPEND ;IF SUSPEND STATUS IS DETECTED, PROCESS IT
89 001A
90 001A 3D9A SZ RESUME
91 001B 2800 R JMP HANDLE_RESUME
92 001C
93 001C 3C1B SZ EP0IF ;CHECK IF THERE IS ANY USB PACKET SENT BY PC,
94 001D 2800 R JMP HANDLE_EP0 ;IF SO, HANDLE IT
95 001E
96 001E 3C9B SZ EP1IF ;CHECK IF THE HOST HAS ACCESS THE EP1,
97 001F 2800 R JMP HANDLE_EP1 ;IF SO, MEANS THAT WE CAN PUT MORE DATA TO THE FIFO1
98 0020
99 0020 3D1B SZ EP2IF ;CHECK IF THE HOST HAS ACCESS THE EP2,
100 0021 2800 R JMP HANDLE_EP2 ;IF SO, MEANS THAT WE CAN PUT MORE DATA TO THE FIFO2
101 0022
102 0022
103 0022 2800 R JMP EXIT_USB_ROUTINE
104 0023
105 0023 HANDLE_RESUME:
106 0023 3400 R CLR USB_SUSPENDED
107 0024 319C SET USBCKEN
108 0025 2800 R JMP EXIT_USB_ROUTINE
109 0026
110 0026 HANDLE_SUSPEND:
111 0026 1480 R INC USB_SUSPEND_CNT
112 0027 0F0F MOV A, 00FH
113 0028 0400 R XOR A, USB_SUSPEND_CNT
114 0029 1085 SZ ACC
115 002A 2800 R JMP EXIT_USB_ROUTINE
116 002B
117 002B 3000 R SET USB_SUSPENDED
"File: USB_OPER.ASM Holtek Cross-Assembler Version 2.86 Page 3
118 002C 359C CLR USBCKEN
119 002D 2800 R JMP EXIT_USB_ROUTINE
120 002E ;HALT
121 002E
122 002E HANDLE_EP1:
123 002E 349B CLR EP1IF
124 002F 3000 R SET EP1_READY
125 0030 ;SET USB_CONFIGURATION_DONE
126 0030 2800 R JMP EXIT_USB_ROUTINE
127 0031
128 0031 HANDLE_EP2:
129 0031 351B CLR EP2IF
130 0032 3000 R SET EP2_READY
131 0033 ;SET USB_CONFIGURATION_DONE
132 0033 2800 R JMP EXIT_USB_ROUTINE
133 0034
134 0034 HANDLE_USBRST:
135 0034 341B CLR EP0IF
136 0035 349B CLR EP1IF
137 0036 351B CLR EP2IF
138 0037
139 0037 3400 R CLR EP0_READY
140 0038 3400 R CLR EP1_READY
141 0039 3400 R CLR EP2_READY
142 003A 3400 R CLR USB_CONFIGURATION_DONE
143 003B 3400 R CLR ZERO_IN_TOKEN_REQUIRED
144 003C 3400 R CLR USB_SUSPENDED
145 003D 319C SET USBCKEN
146 003E 1F00 R CLR USB_SUSPEND_CNT
147 003F 3000 R SET NOT_BOOT_TYPE
148 0040 351A CLR URST
149 0041
150 0041 EXIT_USB_ROUTINE:
151 0041 360B CLR USBF
152 0042
153 0042 0003 RET
154 0043
155 0043
156 0043 HANDLE_EP0:
157 0043
158 0043 0F46 MOV A, MISC
159 0044 0083 MOV MP1, A
160 0045
161 0045 3A82 SNZ ID1.SCMD
162 0046 2800 R JMP CHECK_IF_INTOKEN
163 0047
164 0047 2800 R JMP EP0_SETUPHANDLE
165 0048
166 0048 2800 R JMP EXIT_HANDLE_EP0
167 0049
168 0049 CHECK_IF_INTOKEN:
169 0049 0F45 MOV A, SIE
170 004A 0083 MOV MP1, A
171 004B
172 004B 3982 SNZ ID1.IN ;CHECK IF ANY USB OUT-TOKEN IS RECEIVED
173 004C 2800 R JMP CHECK_IF_EP0_OUTTOKEN
174 004D
175 004D 2000 R CALL EP0_INHANDLE ;IF SO, HANDLE IT.
176 004E 2800 R JMP EXIT_HANDLE_EP0
177 004F
"File: USB_OPER.ASM Holtek Cross-Assembler Version 2.86 Page 4
178 004F CHECK_IF_EP0_OUTTOKEN:
179 004F 2000 R CALL CHECK_EP0_FIFO_READY
180 0050 3C00 R SZ EP0_READY
181 0051 2800 R JMP EP0_OUTHANDLE
182 0052 ;SZ ID1.OUT ;CHECK IF ANY USB IN-TOKEN IS RECEIVED
183 0052 ;JMP EP0_OUTHANDLE ;IF SO, HANDLE IT.
184 0052
185 0052 2800 R JMP EXIT_HANDLE_EP0
186 0053
187 0053 EP0_SETUPHANDLE:
188 0053 3682 CLR ID1.SCMD
189 0054 2000 R CALL READ_FIFO0 ;READ IN USB SETUP-TOKEN PACKET
190 0055 2000 R CALL EP0_SETPACKET_ANALY ;ANALYIZE WHAT THE HOST WANT TO
191 0056
192 0056 2800 R JMP EXIT_HANDLE_EP0
193 0057
194 0057 EP0_OUTHANDLE:
195 0057 ;SNZ ID1.LEN0
196 0057 2000 R CALL READ_FIFO0
197 0058 3400 R CLR EP0_READY
198 0059 3502 CLR ID1.OUT
199 005A
200 005A 3800 R SNZ ZERO_IN_TOKEN_REQUIRED
201 005B 2800 R JMP EXIT_HANDLE_EP0
202 005C
203 005C 3400 R CLR ZERO_IN_TOKEN_REQUIRED
204 005D 2000 R CALL WRITE_LEN0_TOFIFO0
205 005E
206 005E EXIT_HANDLE_EP0:
207 005E
208 005E 341B CLR EP0IF
209 005F
210 005F 2800 R JMP EXIT_USB_ROUTINE
211 0060
212 0060 EP0_SETPACKET_ANALY:
213 0060
214 0060 0F90 MOV A, EP0_BUFF
215 0061 0081 MOV MP0, A
216 0062
217 0062 0700 MOV A, ID0
218 0063 0E60 AND A, 060H
219 0064
220 0064 0C00 XOR A, 00H
221 0065 1085 SZ ACC
222 0066 2800 R JMP NEXT_CHECK_EP0_0
223 0067
224 0067 ;THIS IS THE HOTS-TO-DEVICE, STANDARD COMMAND
225 0067
226 0067 1481 INC MP0
227 0068 0700 MOV A, ID0
228 0069
229 0069 ;SZ USB_CONFIGURATION_DONE
230 0069 360E CLR [0EH].4
231 006A 0386 ADDM A, PCL
232 006B 2800 R JMP EXIT_EP0_OUTPACKET_ANALY ;0:GET_STATUS
233 006C 2800 R JMP SETCLR_FEATURE ;1:CLEAR_FEATURE
234 006D 2800 R JMP EXIT_EP0_OUTPACKET_ANALY ;2:RESERVED
235 006E 2800 R JMP SETCLR_FEATURE ;3:SET_FEATURE
236 006F 2800 R JMP EXIT_EP0_OUTPACKET_ANALY ;4:RESERVED
237 0070 2800 R JMP SET_ADDRESS ;5:SET_ADDRESS
"File: USB_OPER.ASM Holtek Cross-Assembler Version 2.86 Page 5
238 0071 2800 R JMP GET_DESCRIPTOR ;6:GET_DESCRIPTOR
239 0072 2800 R JMP EXIT_EP0_OUTPACKET_ANALY ;7:SET_DESCRIPTOR
240 0073 2800 R JMP EXIT_EP0_OUTPACKET_ANALY ;8:GET_CONFIGURATION
241 0074 2800 R JMP SET_CONFIGURATION ;9:SET_CONFIGURATION
242 0075 2800 R JMP EXIT_EP0_OUTPACKET_ANALY ;A:GET_INTERFACE
243 0076 2800 R JMP EXIT_EP0_OUTPACKET_ANALY ;B:SET_INTERFACE
244 0077 2800 R JMP EXIT_EP0_OUTPACKET_ANALY ;C:SYNCH_FRAME
245 0078
246 0078 ;THIS IS HOTS-TO-DEVICE, STANDARD, SET/CLEAR_CONFIGURATION COMMAND
247 0078 SETCLR_FEATURE:
248 0078 3C00 R SZ USB_CONFIGURATION_DONE
249 0079 320E SET [0EH].4
250 007A 0F43 MOV A, STALL
251 007B 0083 MOV MP1, A
252 007C
253 007C 3402 CLR ID1.STALL0
254 007D
255 007D 2000 R CALL WRITE_LEN0_TOFIFO0
256 007E
257 007E
258 007E 2800 R JMP EXIT_EP0_OUTPACKET_ANALY
259 007F
260 007F
261 007F ;THIS IS HOTS-TO-DEVICE, STANDARD, SET_ADDRESS COMMAND
262 007F SET_ADDRESS:
263 007F 3C00 R SZ USB_CONFIGURATION_DONE
264 0080 320E SET [0EH].4
265 0081 1F00 R CLR BYTE_REST
266 0082
267 0082 0F45 MOV A, SIE
268 0083 0083 MOV MP1, A
269 0084 0F01 MOV A, 01H
270 0085 0582 ORM A, ID1
271 0086
272 0086 0F42 MOV A, AWR
273 0087 0083 MOV MP1, A
274 0088
275 0088 1481 INC MP0
276 0089 0700 MOV A, ID0
277 008A 1885 RL ACC
278 008B 0EFE AND A, 0FEH
279 008C 0082 MOV ID1, A
280 008D
281 008D 2000 R CALL WRITE_LEN0_TOFIFO0
282 008E
283 008E 2800 R JMP EXIT_EP0_OUTPACKET_ANALY
284 008F
285 008F ;THIS IS HOTS-TO-DEVICE, STANDARD, SET_CONFIGURATION COMMAND
286 008F SET_CONFIGURATION:
287 008F 3C00 R SZ USB_CONFIGURATION_DONE
288 0090 320E SET [0EH].4
289 0091 2000 R CALL WRITE_LEN0_TOFIFO0
290 0092
291 0092 ;SET USB_CONFIGURATION_DONE
292 0092
293 0092 2800 R JMP EXIT_EP0_OUTPACKET_ANALY
294 0093
295 0093
296 0093 ;THIS IS HOST-TO-DEVICE, STANDARD, GET_DESCRIPTOR COMAND
297 0093 GET_DESCRIPTOR:
"File: USB_OPER.ASM Holtek Cross-Assembler Version 2.86 Page 6
298 0093 ;SZ USB_CONFIGURATION_DONE
299 0093 ;SET [0EH].4
300 0093 1481 INC MP0
301 0094 1481 INC MP0
302 0095
303 0095 0700 MOV A, ID0
304 0096 0EF0 AND A, 0F0H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -