📄 std.lst
字号:
378 00D3 0700 E mov a,fifo_wlengthh
379 00D4 0080 E mov lengthh,a
380 00D5 0700 E mov a,fifo_wlengthl
381 00D6 0080 E mov lengthl,a
382 00D7 3400 E clr brd_h_table
383 00D8
384 00D8 0700 E MOV A,FIFO_Type ;only (device,interface & endpoint)
385 00D9 0E1F AND A,Setup_Rev
386 00DA 3D0A sz z
387 00DB 299B jmp StandardDst ;10000000
388 00DC 0C01 xor a,1
389 00DD 3D0A sz z
390 00DE 2983 JMP ClassDst_Interface ;10000001Class (new)
391 00DF 2800 E JMP ToStallPipe0
392 00E0
393 00E0 ;-----------------------------------------------------------------------------------------
394 00E0 ;
395 00E0 ; Read FIFO_SIZE bytes or until TableLength=0
396 00E0 ;
397 00E0 ;-----------------------------------------------------------------------------------------
398 00E0 GetTableBeg:
399 00E0 0F00 E MOV A,OFFSET FIFO_OUT1 ;Let MP0 pointer to FIFO_OUT1
400 00E1 0081 MOV MP0,A ;
401 00E2 1F00 E CLR FIFO_SendLen ;Send data length = 0
402 00E3 ;Check whether all data is written
403 00E3 GetTableLp:
404 00E3 1080 E sz tablelength ;check whether out of number to send
405 00E4 2946 jmp read_data_again
406 00E5 0003 ret
407 00E6
408 00E6 ;----------------------------------------------------------------------------------------------
409 00E6 ;
410 00E6 ; Read one byte from table
411 00E6 ;
"File: STD.ASM Holtek Cross-Assembler Version 2.86 Page 8
412 00E6 ;----------------------------------------------------------------------------------------------
413 00E6 read_data_again:
414 00E6 3800 E snz brd_h_table
415 00E7 2954 jmp read_L_table_byte
416 00E8 ;read_H_byte
417 00E8 3400 E clr brd_h_table
418 00E9 1D80 TABRDL R0
419 00EA 1487 INC TBLP
420 00EB 0708 mov a,tblh
421 00EC 0E3F and a,INVALID_CODE
422 00ED 0C3F xor a,INVALID_CODE
423 00EE 3D0A sz z
424 00EF 2946 jmp read_data_again ;GetTableTag
425 00F0 0708 mov a,tblh
426 00F1 0E3F and a,INVALID_CODE
427 00F2 0080 mov R0,a
428 00F3 2956 jmp read_next_table
429 00F4 read_L_table_byte:
430 00F4 3000 E set brd_h_table
431 00F5 1D80 TABRDL R0 ;Get table and write FIFO_OUTx
432 00F6 ;-----------------------------------------------------------------------------------
433 00F6 read_next_table:
434 00F6 1481 INC MP0 ;Update memory pointer 0
435 00F7 1480 E INC FIFO_SendLen ;Update send FIFO length
436 00F8 1080 E sz lengthl
437 00F9 295D jmp skip_check_lengthh
438 00FA 1080 E sz lengthH
439 00FB 2961 jmp check_length_data
440 00FC out_descript: ;out_of_number to send
441 00FC 295E jmp get_table_lp
442 00FD skip_check_lengthh:
443 00FD 1580 E dec lengthl
444 00FE get_table_lp:
445 00FE 1780 E SDZ TableLength ;end_of_Tablelength
446 00FF 2964 JMP GetTableTag
447 0100 0003 RET
448 0101
449 0101 check_length_data:
450 0101 1F80 E set lengthl
451 0102 1580 E dec lengthH
452 0103 295E jmp get_table_lp
453 0104
454 0104 ;Check whether FIFO_SIZE data has written
455 0104 GetTableTag:
456 0104 0700 E MOV A,FIFO_SendLen ;
457 0105 0C08 XOR A,FIFO_SIZE ;
458 0106 390A SNZ Z ;
459 0107 2943 JMP GetTableLp ;No
460 0108 0003 RET ;FIFO FULL
461 0109
462 0109 ;----------------------------------------------------------------------------------------------
463 0109 ;
464 0109 ;
465 0109 ;----------------------------------------------------------------------------------------------
466 0109 ;stack 1
467 0109 ;!!!!! Must in same page with caller
468 0109
469 0109 ReadEntityAndSendCnf:
470 0109 0080 E MOV TableLength,A ; in entity table)
471 010A SendCnf:
"File: STD.ASM Holtek Cross-Assembler Version 2.86 Page 9
472 010A 217A call gettablenolength
473 010B 2140 call GetTableBeg
474 010C 2975 JMP ReadNextXX
475 010D ;----------------------------------------------------------------------------------------------
476 010D ReadAgain:
477 010D 3400 E clr bFIFO_Full
478 010E 3000 E SET bSend_Continue ;Set continue send flag
479 010F 0707 MOV A,TBLP ;Save TBLP
480 0110 0080 E MOV FIFO_TBLP,A ;
481 0111 2800 E JMP RequestResponse
482 0112 ;----------------------------------------------------------------------------------------------
483 0112 ;input point of the get next 8-byte table data
484 0112 ReadNextCnf:
485 0112 0700 E MOV A,FIFO_TBLP ;Restore TBLP
486 0113 0087 MOV TBLP,A ;
487 0114 2140 CALL GetTableBeg ;Read next 8 byte or until TableLength=0
488 0115
489 0115 ;
490 0115 ;Check Whether FIFO data is FULL
491 0115 ;
492 0115 ReadNextXX:
493 0115 0700 E MOV A,FIFO_SendLen ;FIFO full ?
494 0116 0C08 XOR A,FIFO_SIZE ;
495 0117 3D0A SZ Z ;
496 0118 2910 JMP FIFO_Full ;Yes
497 0119 2911 JMP FIFO_NoFull ;NO
498 011A
499 011A ;---------------------------------------------------------------------------------------------
500 011A ;stack 1
501 011A GetTableNoLength:
502 011A 1080 E SZ LengthH ;Table length >= wLengthH ?
503 011B 0003 ret ;No
504 011C 0700 E MOV A,TableLength ;Table length >= wLengthL ?
505 011D 0200 E SUB A,LengthL ;
506 011E 380A SNZ C ;
507 011F 0003 ret
508 0120 set_tablelength:
509 0120 0700 E MOV A,LengthL ;Yes
510 0121 0080 E MOV TableLength,A ;Update Tablelength by FIFO_wLengthL
511 0122 0003 ret
512 0123
513 0123 ;---------------------------------------------------------------------------------------------
514 0123 ClassDst_Interface:
515 0123 0700 E MOV A,FIFO_wIndexL
516 0124 0A01 SUB A,INTERFACE_NO
517 0125 3C0A SZ C
518 0126 2800 E JMP ToStallPipe0
519 0127 Skip_Check_Endpoint:
520 0127 0700 E MOV A,FIFO_wValueH ;Descriptor
521 0128 0E1F AND A,wValueH_Dst ; Stanard, Class & Vendor
522 0129 0080 E MOV TEMP,A ;
523 012A 0A03 SUB A,03H ;Over 4 iteM ?
524 012B 3C0A SZ C ;
525 012C 2800 E JMP ToStallPipe0 ;Yes
526 012D
527 012D 0700 E MOV A,TEMP
528 012E class_des_pcl_5:
529 012E 0386 ADDM A,PCL
530 012F 2800 E JMP ToStallPipe0 ;Designator set no support
531 0130 290C JMP GetHID ;Get HID descriptor
"File: STD.ASM Holtek Cross-Assembler Version 2.86 Page 10
532 0131 ; JMP GetEntity ;Get entity descriptor
533 0131 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
534 0131 GetEntity:
535 0131 0700 E MOV a,FIFO_wIndexL ;
536 0132 0080 E MOV TEMP,A
537 0133 0F00 E MOV A,LOW Entity_0 ;Set table pointer to
538 0134 1080 E sz TEMP
539 0135 0F00 E mov a, LOW ENTITY_1
540 0136 0087 MOV TBLP,A ;Entity
541 0137
542 0137 0F2F MOV A,Entity_Length_0 ;(Entity length not included
543 0138 1080 E sz TEMP
544 0139 0F00 MOV A, Entity_Length_1
545 013A 2901 jmp readtable_withcheckHindex
546 013B ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
547 013B StandardDst:
548 013B
549 013B 0700 E MOV A,FIFO_wValueH ;Descriptor
550 013C 0E1F AND A,wValueH_Dst ; Stanard, Class & Vendor
551 013D 0080 E MOV TEMP,A ;
552 013E 0A04 SUB A,04H ;Over 4 item ?
553 013F 3C0A SZ C ;
554 0140 2800 E JMP ToStallPipe0 ;Yes
555 0141 0700 E MOV A,TEMP
556 0142 std_device_pcl_5:
557 0142 0386 ADDM A,PCL
558 0143 2800 E JMP ToStallPipe0 ;Reserve
559 0144 2904 JMP GetDeviceDes ;Get device descriptor
560 0145 2908 JMP GetConfigurationDes ;Get configuration descriptor
561 0146 28E4 JMP GetStringDes ;Get string descriptor
562 0147 ;-------------------------------------------------------------------------------
563 0147
564 0147 PUBLIC StandardRequest
565 0147 PUBLIC ReadNextCnf
566 0147 public GetDeviceDes
567 0147 END
0 Errors
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -