📄 logo.lst
字号:
00E9 2C [04] pop X
00EA 73 [08] reti
00EB ep0_setup_received:
00EB 19 01 [04] mov A, NAK_IN_OUT ; clear setup bit to enable
00ED 2A 12 [05] iowr ep0_mode ; writes to EP0 DMA buffer
00EF 1A F8 [05] mov A, [bmRequestType] ; compact bmRequestType into 5 bit field
00F1 10 E3 [04] and A, E3h ; clear bits 4-3-2, these unused for our purposes
00F3 2D [05] push A ; store value
00F4 3C [04] asr A ; move bits 7-6-5 into 4-3-2's place
00F5 3C [04] asr A
00F6 3C [04] asr A
00F7 31 2F [05] mov [int_temp], A ; store shifted value
00F9 2B [04] pop A ; get original value
00FA 0E 2F [06] or A, [int_temp] ; or the two to get the 5-bit field
00FC 10 1F [04] and A, 1Fh ; clear bits 7-6-5 (asr wraps bit7)
00FE 3B [04] asl A ; shift to index jumptable,jmp is 2 bytes
00FF 1F [04] XPAGE
0100 E6 00 [07] jacc bmRequestType_jumptable ; jump to handle bmRequestType
0102 h2d_std_device:
0102 1A F9 [05] mov A, [bRequest]
0104 3B [04] asl A
0105 E6 40 [07] jacc h2d_std_device_jumptable
0107 h2d_std_interface:
0107 1A F9 [05] mov A, [bRequest]
0109 3B [04] asl A
010A E6 54 [07] jacc h2d_std_interface_jumptable
010C h2d_std_endpoint:
010C 1A F9 [05] mov A, [bRequest]
010E 3B [04] asl A
010F E6 6C [07] jacc h2d_std_endpoint_jumptable
0111 d2h_std_device:
0111 1A F9 [05] mov A, [bRequest]
0113 3B [04] asl A
0114 E6 74 [07] jacc d2h_std_device_jumptable
0116 d2h_std_interface:
0116 1A F9 [05] mov A, [bRequest]
0118 3B [04] asl A
0119 E6 86 [07] jacc d2h_std_interface_jumptable
011B d2h_std_endpoint:
011B 1A F9 [05] mov A, [bRequest]
011D 3B [04] asl A
011E E6 9C [07] jacc d2h_std_endpoint_jumptable
;;************ DEVICE REQUESTS **************
0120 set_device_address: ; SET ADDRESS
0120 19 00 [04] mov A, ADDRESS_CHANGE_PENDING ;02h ; set flag to indicate we
0122 31 27 [05] mov [ep0_in_flag], A ; need to change address on
0124 1A FA [05] mov A, [wValuelo]
0126 31 2E [05] mov [pending_data], A
0128 83 35 [05] jmp initialize_no_data_control
012A set_device_configuration: ; SET CONFIGURATION
012A 1A FA [05] mov A, [wValuelo]
012C 16 01 [05] cmp A, 01h
012E A1 3C [05] jz configure_device
0130 unconfigure_device: ; set device as unconfigured
0130 31 28 [05] mov [configuration], A
0132 19 00 [04] mov A, DISABLE ; disable endpoint 1
0134 2A 14 [05] iowr ep1_mode
0136 19 01 [04] mov A, EP0_INT ; turn off endpoint 1 interrupts
0138 2A 21 [05] iowr endpoint_int
013A 81 5C [05] jmp set_device_configuration_done
013C configure_device: ; set device as configured
013C 31 28 [05] mov [configuration], A
013E 1A 29 [05] mov A, [ep1_stall] ; if endpoint 1 is stalled
0140 10 FF [04] and A, FFh
0142 A1 4A [05] jz ep1_nak_in_out
0144 19 03 [04] mov A, STALL_IN_OUT ; set endpoint 1 mode to stall
0146 2A 14 [05] iowr ep1_mode
0148 81 4E [05] jmp ep1_set_int
014A ep1_nak_in_out:
014A 19 01 [04] mov A, NAK_IN_OUT ; otherwise set it to NAK in/out
014C 2A 14 [05] iowr ep1_mode
014E ep1_set_int:
014E 19 03 [04] mov A, EP0_INT | EP1_INT ; enable endpoint 1 interrupts
0150 2A 21 [05] iowr endpoint_int
0152 19 00 [04] mov A, 00h
0154 31 21 [05] mov [ep1_data_toggle], A ; reset the data toggle
0156 31 F0 [05] mov [ep1_dmabuff0], A ; reset endpoint 1 fifo values
0158 31 F1 [05] mov [ep1_dmabuff1], A
015A 31 F2 [05] mov [ep1_dmabuff2], A
015C set_device_configuration_done:
015C 19 02 [04] mov A, NO_CHANGE_PENDING
015E 31 27 [05] mov [ep0_in_flag], A
0160 83 35 [05] jmp initialize_no_data_control
0162 get_device_status: ; GET STATUS
0162 19 02 [04] mov A, DEVICE_STATUS_LENGTH
0164 31 25 [05] mov [maximum_data_count], A
0166 19 66 [04] mov A, (device_status_wakeup_disabled - control_read_table)
0168 31 23 [05] mov [data_start], A
016A 83 0C [05] jmp initialize_control_read
016C get_device_descriptor: ; GET DESCRIPTOR
016C 1A FB [05] mov A, [wValuehi]
016E 3B [04] asl A
016F E6 C6 [07] jacc get_device_descriptor_jumptable
0171 send_device_descriptor:
0171 19 00 [04] mov A, 00h ; get device descriptor length
0173 F7 00 [14] index device_desc_table
0175 31 25 [05] mov [maximum_data_count], A
0177 19 00 [04] mov A, (device_desc_table - control_read_table)
0179 31 23 [05] mov [data_start], A
017B 83 0C [05] jmp initialize_control_read
017D send_configuration_descriptor:
017D 19 02 [04] mov A, 02h
017F F7 12 [14] index config_desc_table:
0181 31 25 [05] mov [maximum_data_count], A
0183 19 12 [04] mov A, (config_desc_table - control_read_table)
0185 31 23 [05] mov [data_start], A
0187 83 0C [05] jmp initialize_control_read
0189 send_string_descriptor:
0189 1A FA [05] mov A, [wValuelo]
018B 3B [04] asl A
018C E6 D2 [07] jacc string_jumptable:
018E language_string:
018E 19 00 [04] mov A, 00h
0190 F7 73 [14] index ilanguage_string
0192 31 25 [05] mov [maximum_data_count], A
0194 19 73 [04] mov A, (ilanguage_string - control_read_table)
0196 31 23 [05] mov [data_start], A
0198 83 0C [05] jmp initialize_control_read
019A manufacturer_string:
019A 19 00 [04] mov A, 00h
019C F7 77 [14] index imanufacturer_string
019E 31 25 [05] mov [maximum_data_count], A
01A0 19 77 [04] mov A, (imanufacturer_string - control_read_table)
01A2 31 23 [05] mov [data_start], A
01A4 83 0C [05] jmp initialize_control_read
01A6 product_string:
01A6 19 00 [04] mov A, 00h
01A8 F7 93 [14] index iproduct_string
01AA 31 25 [05] mov [maximum_data_count], A
01AC 19 93 [04] mov A, (iproduct_string - control_read_table)
01AE 31 23 [05] mov [data_start], A
01B0 83 0C [05] jmp initialize_control_read
01B2 serial_string:
01B2 19 00 [04] mov A, 00h
01B4 F7 C7 [14] index iserialnumber_string
01B6 31 25 [05] mov [maximum_data_count], A
01B8 19 C7 [04] mov A, (iserialnumber_string - control_read_table)
01BA 31 23 [05] mov [data_start], A
01BC 83 0C [05] jmp initialize_control_read
01BE configuration_string:
01BE 19 00 [04] mov A, 00h
01C0 F7 D7 [14] index iconfiguration_string
01C2 31 25 [05] mov [maximum_data_count], A
01C4 19 D7 [04] mov A, (iconfiguration_string - control_read_table)
01C6 31 23 [05] mov [data_start], A
01C8 83 0C [05] jmp initialize_control_read
01CA send_interface_descriptor:
01CA 19 00 [04] mov A, 00h ; get interface descriptor length
01CC F7 1B [14] index interface_desc_table
01CE 31 25 [05] mov [maximum_data_count], A
01D0 19 1B [04] mov A, (interface_desc_table - control_read_table)
01D2 31 23 [05] mov [data_start], A
01D4 83 0C [05] jmp initialize_control_read
01D6 send_endpoint_descriptor:
01D6 19 00 [04] mov A, 00h ; get endpoint descriptor length
01D8 F7 2D [14] index endpoint_desc_table
01DA 31 25 [05] mov [maximum_data_count], A
01DC 19 2D [04] mov A, (endpoint_desc_table - control_read_table)
01DE 31 23 [05] mov [data_start], A
01E0 83 0C [05] jmp initialize_control_read
01E2 get_device_configuration: ; GET CONFIGURATION
01E2 19 01 [04] mov A, DEVICE_CONFIG_LENGTH
01E4 31 25 [05] mov [maximum_data_count], A
01E6 1A 28 [05] mov A, [configuration] ; test configuration status
01E8 10 FF [04] and A, FFh
01EA A1 F2 [05] jz device_unconfigured
01EC device_configured: ; send configured status
01EC 19 68 [04] mov A, (device_configured_table - control_read_table)
01EE 31 23 [05] mov [data_start], A
01F0 83 0C [05] jmp initialize_control_read
01F2 device_unconfigured: ; send unconfigured status
01F2 19 69 [04] mov A, (device_unconfigured_table - control_read_table)
01F4 31 23 [05] mov [data_start], A
01F6 83 0C [05] jmp initialize_control_read
;;************ INTERFACE REQUESTS ***********
01F8 set_interface_interface: ; SET INTERFACE
01F8 1A FA [05] mov A, [wValuelo]
01FA 16 00 [05] cmp A, 00h ; there are no alternate interfaces
01FC A2 02 [05] jz alternate_supported ; for this device
01FE alternate_not_supported: ; if the host requests any other
01FE 20 [04] NOP
01FF 1F [04] XPAGE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -