📄 std1.lst
字号:
203 0045 EndpointStatusCF: ;clear stall flag
204 0045 ;Check Feature Selector
205 0045 1080 E SZ FIFO_wValueL ;ENDPOINT_STALL = 0 ?
206 0046 2800 E JMP ToStallPipe0 ;No
207 0047
208 0047 ;Check Endpoint Number
209 0047 ; snz fifo_windexL.7
210 0047 ; jmp ToStallpipe0
211 0047 0700 E MOV A,FIFO_wIndexL ;Get endpoint number
212 0048 0E7F and a,01111111b
213 0049 0200 E SUB A,FIFO_temp
214 004A 3C0A SZ C
215 004B 2800 E JMP ToStallPipe0
216 004C
217 004C 0700 E MOV A,FIFO_wIndexL
218 004D ;Is it necessary to check endpoint number range ?
219 004D 0E0F AND A,0FH ;Ignore direction
220 004E 2000 E call GetPipeBit
221 004F 2000 E CALL ClearStall ;Clear endpoint stall
222 0050 ;Is it necessary to check clear completely ?
223 0050 2800 E JMP SendHandshake ;send handshake flag
224 0051 ;-----------------------------------------------------------------------------------
225 0051
226 0051 DeviceStatusCF:
227 0051 ;Check Feature Selector
228 0051 0700 E MOV A,FIFO_wValueL ;DEVICE_REMOTE_WAKEUP = 1 ?
229 0052 0C01 XOR A,01H ;
230 0053 390A SNZ Z ;
231 0054 2800 E JMP ToStallPipe0 ;No
232 0055
233 0055 1080 E SZ FIFO_wIndexL ;Is wIndex == 0 ?
"File: STD1.ASM Holtek Cross-Assembler Version 2.86 Page 5
234 0056 2800 E JMP ToStallPipe0 ;No
235 0057 ;disable remote wakeup ;Yes
236 0057 3400 E CLR bRmtWakeup ;disable remote wakeup (flag)
237 0058 1800 E rla cmd_addr
238 0059 0EFE and a,11111110b
239 005A 0080 E mov fifo_addr,a
240 005B 3400 E CLR ADDR_Wake ;Clear remote wakeup flag
241 005C
242 005C 2920 JMP SetAddrWake ;send handshake flag
243 005D ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
244 005D
245 005D ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
246 005D GetStatus:
247 005D ;Check bmRequestType direction
248 005D 3800 E SNZ FIFO_Type.@Setup_D ;Device to Host ?
249 005E 2800 E JMP ToStallPipe0 ;No: Error
250 005F
251 005F 1080 E SZ FIFO_wIndexH ;Is wIndex == 0 ?
252 0060 2800 E JMP ToStallPipe0 ;No
253 0061
254 0061
255 0061 0700 E MOV A,FIFO_Type ;Type (Device, Interface or
256 0062 0E1F AND A,Setup_Rev ; Endpoint)
257 0063 0080 E MOV TEMP,A
258 0064 ;!!!!! Need in same page
259 0064 0A04 SUB A,04H ;Over 4 item ?
260 0065 3C0A SZ C ;
261 0066 2800 E JMP ToStallPipe0 ;Yes
262 0067 0700 E MOV A,TEMP
263 0068 get_status_pcl_5:
264 0068 0386 ADDM A,PCL
265 0069 288B JMP DeviceStatusS
266 006A 2894 JMP InterfaceStatusS
267 006B 287A JMP EndpointStatusS
268 006C 2800 E JMP ToStallPipe0
269 006D ;-----------------------------------------------------------------------------------
270 006D EndpointStatusS:
271 006D 0700 E MOV A,FIFO_wIndexL
272 006E 0E7F and a,01111111b
273 006F 0200 E SUB A,fifo_temp
274 0070 3C0A SZ C
275 0071 2800 E JMP ToStallPiPe0
276 0072 ;Don't care direction, maybe it's neccesary.
277 0072 0F0F MOV A,0FH ;Ignore direction (D7)
278 0073 0600 E AND A,FIFO_wIndexL ;get stall pipe number
279 0074 2000 E CALL GetPipeBit ;and transform to bitmap
280 0075 0080 E MOV FIFO_TEMP,A
281 0076 0700 E MOV A,STALL ;get stall status into ACC
282 0077 ShiftLoop:
283 0077 1B80 E RRC FIFO_TEMP ;Shift stall bit to D0
284 0078 3C0A SZ C ;
285 0079 2889 JMP FoundStall ;
286 007A 1985 RR ACC ;
287 007B 2884 JMP ShiftLoop ;
288 007C FoundStall:
289 007C 0E01 AND A,01H ;mask bits except stall bit
290 007D 2890 JMP SendEndpointStsS ;Send endpoint status
291 007E ;-----------------------------------------------------------------------------------
292 007E DeviceStatusS:
293 007E 1080 E SZ FIFO_wIndexL ;Is wIndex == 0 ?
"File: STD1.ASM Holtek Cross-Assembler Version 2.86 Page 6
294 007F 2800 E JMP ToStallPipe0 ;No
295 0080
296 0080 1F05 clr acc
297 0081 3C00 E sz bRmtwakeup
298 0082 3085 set acc.1
299 0083 SendEndpointStsS:
300 0083 0080 E MOV FIFO_OUT1,A ;low byte
301 0084 1F00 E CLR FIFO_OUT2 ;high byte = 00H
302 0085 0F02 MOV A,02H ;data length = 2
303 0086 2800 E JMP SendFIFOOut ;Send it
304 0087 ;-----------------------------------------------------------------------------------
305 0087 InterfaceStatusS:
306 0087 3C00 E sz baddr_state
307 0088 2800 E jmp TOstallpipe0
308 0089 0700 E MOV A,FIFO_wIndexL
309 008A 0A02 SUB A,INTERFACE_NO ;Over 2 Interface ?
310 008B 3C0A SZ C ;
311 008C 2800 E JMP ToStallPipe0 ;Yes
312 008D
313 008D ;No Matter which Interface
314 008D 1F00 E CLR FIFO_OUT1 ;low byte = 00H
315 008E 1F00 E CLR FIFO_OUT2 ;high byte = 00H
316 008F 0F02 MOV A,02H ;data length = 2
317 0090 2800 E JMP SendFIFOOut ;Send it
318 0091 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
319 0091
320 0091
321 0091
322 0091 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
323 0091 ;Get string descriptor
324 0091 GetStringDes:
325 0091
326 0091 1080 E SZ FIFO_wIndexH
327 0092 28AF JMP get_other_string
328 0093 ;FIFO_wIndexL = Language ID
329 0093 1080 E sz fifo_windexl
330 0094 28AF jmp get_other_string
331 0095 1080 E sz fifo_wvaluel
332 0096 2800 E jmp tostallpipe0
333 0097
334 0097 get_string:
335 0097 0700 E mov a,fifo_wvaluel
336 0098 0A03 sub a,3
337 0099 3C0A sz c
338 009A 2800 E jmp Tostallpipe0
339 009B
340 009B 0F00 E mov a,low LangID ;00
341 009C 3C00 E sz fifo_wvaluel.0
342 009D 0F00 E mov a,low ManufactureS ;01
343 009E 3C00 E sz fifo_wvaluel.1
344 009F 0F00 E mov a,low ProductS ;10
345 00A0
346 00A0 0087 MOV TBLP,A ;
347 00A1 298B JMP ReadTableAndSendcnf ;Read Device table and send it
348 00A2
349 00A2 get_other_string:
350 00A2 0700 E mov a,fifo_windexH
351 00A3 0C04 xor a,LAND_ID_H
352 00A4 390A snz z
353 00A5 2800 E jmp ToStallPipe0
"File: STD1.ASM Holtek Cross-Assembler Version 2.86 Page 7
354 00A6
355 00A6 0700 E mov a,fifo_windexl
356 00A7 0C09 xor a,LAND_ID_L
357 00A8 390A snz z
358 00A9 2800 E jmp TOStallpipe0
359 00AA 28A4 jmp get_string
360 00AB
361 00AB ;Standard--------------------------------------------------------------------
362 00AB ;Get device descriptor
363 00AB std_des_start_pcl:
364 00AB GetDeviceDes:
365 00AB 1080 E SZ FIFO_wIndexH
366 00AC 2800 E JMP ToStallPipe0
367 00AD 1080 E SZ FIFO_wIndexL
368 00AE 2800 E JMP ToStallPipe0
369 00AF
370 00AF 0F00 E MOV A,LOW DeviceD ;Set table pointer to device
371 00B0 0087 MOV TBLP,A ; table
372 00B1 298B JMP ReadTableAndSendcnf ;Read Device table and send it
373 00B2 ;----------------------------------------------------------------------------------------------
374 00B2
375 00B2 ;(Configuration, interface & endpoint) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
376 00B2 GetConfigurationDes:
377 00B2 ;Configuration
378 00B2 1080 E SZ FIFO_wIndexH
379 00B3 2800 E JMP ToStallPipe0
380 00B4 1080 E SZ FIFO_wIndexL ;report ID 0 ?
381 00B5 2800 E JMP ToStallPipe0 ;
382 00B6
383 00B6
384 00B6 0F00 E MOV A,LOW ConfigurationD ;Set table pointer to
385 00B7 0087 MOV TBLP,A ;configuration
386 00B8 0FC8 MOV A,LOW GetInterfaceDes ;Save Return Address
387 00B9 0080 E MOV ReturnAddr,A ;to ReturnAddr
388 00BA 298B JMP ReadTableAndSendCnf ;Read configuration table
389 00BB ;and send it
390 00BB ;----------------------------------------------------------------------------------------------
391 00BB
392 00BB GetInterfaceDes:
393 00BB ;Interface
394 00BB 200D call get_Interface_des_adr
395 00BC 0087 MOV TBLP,A ;configuration
396 00BD
397 00BD 0FCD MOV A,LOW GetHIDDes ;Save Return Address
398 00BE 0080 E MOV ReturnAddr,A ;to ReturnAddr
399 00BF 298F JMP GetTableLength
400 00C0 ;----------------------------------------------------------------------------------------------
401 00C0
402 00C0 GetHIDDes:
403 00C0 ;HID
404 00C0 2011 call get_HID_des_adr
405 00C1 0087 MOV TBLP,A ; configuration
406 00C2 0FD2 MOV A,LOW GetEndpointDes ;Set Return Address
407 00C3 0080 E MOV ReturnAddr,A ; to ReturnAddr
408 00C4 298F JMP GetTableLength
409 00C5 ;----------------------------------------------------------------------------------------------
410 00C5
411 00C5 GetEndpointDes:
412 00C5 ;Endpoint
413 00C5 2015 call get_endpt_des_adr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -