📄 usb.lis
字号:
990 .LMM97:
421:../src/usb.c **** }
422:../src/usb.c **** }
992 0295 75D8 popw rr8
993 0297 75DA popw rr10
994 0299 75DC popw rr12
995 029b 75DF unlink rr14
996 029d 46 ret
997 .endproc
998 .Lscope4:
1000
1001 .section .rodata
1002
1003 .desc get_configuration_status_table$12, near
1004 get_configuration_status_table$12:
1005 0106 00 .byte 0
1006 0107 01 .byte 1
1007
1008 .section .text
1010
1011 .desc GetConfiguration, near
1012 .proc GetConfiguration
1013 GetConfiguration:
423:../src/usb.c ****
424:../src/usb.c **** static BYTE GetConfiguration( void)
425:../src/usb.c **** {
1015 .LMM99:
426:../src/usb.c **** static const BYTE get_configuration_status_table[] =
1017 .LBB5:
1018 .LMM100:
427:../src/usb.c **** {
428:../src/usb.c **** 0x00, /* not configured */
429:../src/usb.c **** 0x01 /* configured */
430:../src/usb.c **** } ;
431:../src/usb.c ****
432:../src/usb.c **** data_size[ CurDevice] = 1 ;
1020 029e C4F10000 ld r1,dpr:pof(@CurDevice)
1021 02a2 0C00 ld r0,#0
1022 02a4 2C01 ld r2,#1
1023 02a6 26F00000 ld dpr:pof(@data_size)(rr0),r2
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 24
1023 D2
1024 .LMM101:
433:../src/usb.c **** data_ptr = (BYTE *) &get_configuration_status_table[ configuration_status[ CurDevice]] ;
1026 02ab C4F10000 ld r1,dpr:pof(@CurDevice)
1027 02af 0C00 ld r0,#0
1028 02b1 BFD20106 ldw rr2,#dpr:pof(@get_configuration_status_table$12)
1029 02b5 7F400000 add r3,dpr:pof(@configuration_status)(rr0)
1029 D3
1030 02ba 35D200 adc r2,#0
1031 02bd E302 ldw rr0,rr2
1032 02bf E2F10000 ldw dpr:pof(@data_ptr),rr0
1033 .LMM102:
434:../src/usb.c **** return control_read() ;
1035 02c3 D200E2 call @control_read
1036 .LMM103:
435:../src/usb.c **** }
1038 .LBE5:
1039 02c6 46 ret
1040 .endproc
1044 .Lscope5:
1046
1047 .section .rodata
1048
1049 .desc get_endpoint_status_table$15, near
1050 get_endpoint_status_table$15:
1051 0108 00 .byte 0
1052 0109 00 .byte 0
1053 010a 01 .byte 1
1054 010b 00 .byte 0
1055
1056 .section .text
1058
1059 .desc GetEndpointStatus, near
1060 .proc GetEndpointStatus
1061 GetEndpointStatus:
436:../src/usb.c ****
437:../src/usb.c **** static BYTE GetEndpointStatus( void)
438:../src/usb.c **** {
1063 .LMM105:
439:../src/usb.c **** static const BYTE get_endpoint_status_table[] =
1065 .LBB6:
1066 .LMM106:
440:../src/usb.c **** {
441:../src/usb.c **** 0x00, 0x00, /* not stalled */
442:../src/usb.c **** 0x01, 0x00 /* stalled */
443:../src/usb.c **** } ;
444:../src/usb.c ****
445:../src/usb.c **** data_size[ CurDevice] = 2 ;
1068 02c7 C4F10000 ld r1,dpr:pof(@CurDevice)
1069 02cb 0C00 ld r0,#0
1070 02cd 2C02 ld r2,#2
1071 02cf 26F00000 ld dpr:pof(@data_size)(rr0),r2
1071 D2
1072 .LMM107:
446:../src/usb.c **** data_ptr = (BYTE *) &get_endpoint_status_table[ endpoint_stall[ CurDevice] << 1] ;
1074 02d4 C4F10000 ld r1,dpr:pof(@CurDevice)
1075 02d8 0C00 ld r0,#0
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 25
1076 02da 7FF00000 ld r1,dpr:pof(@endpoint_stall)(rr0)
1076 D1
1077 02df 0C00 ld r0,#0
1078 02e1 4E00 addw rr0,rr0
1079 02e3 47D10108 addw rr0,#dpr:pof(@get_endpoint_status_table$15)
1080 02e7 E2F10000 ldw dpr:pof(@data_ptr),rr0
1081 .LMM108:
447:../src/usb.c **** return control_read() ;
1083 02eb D200E2 call @control_read
1084 .LMM109:
448:../src/usb.c **** }
1086 .LBE6:
1087 02ee 46 ret
1088 .endproc
1092 .Lscope6:
1095
1096 .desc set_address, near
1097 .proc set_address
1098 set_address:
449:../src/usb.c ****
450:../src/usb.c **** static BYTE set_address()
451:../src/usb.c **** {
1100 .LMM111:
452:../src/usb.c **** address[ CurDevice] = CurRxBuffer[ USB_wValue] ; /* Save address value to be set after acknowledge
1102 02ef C4F30000 ld r3,dpr:pof(@CurDevice)
1103 02f3 2C00 ld r2,#0
1104 02f5 E2F00000 ldw rr0,dpr:pof(@CurRxBuffer)
1105 02f9 7FF102D0 ld r0,2(rr0)
1106 02fd 26F20000 ld dpr:pof(@address)(rr2),r0
1106 D0
1107 .LMM112:
453:../src/usb.c **** return TX_ACK_ADDR ;
1109 0302 1C05 ld r1,#5
1110 .LMM113:
454:../src/usb.c **** }
1112 0304 46 ret
1113 .endproc
1114 .Lscope7:
1116
1117 .section .rodata
1118
1119 .desc get_dev_status_table$20, near
1120 get_dev_status_table$20:
1121 010c 00 .byte 0
1122 010d 00 .byte 0
1123 010e 02 .byte 2
1124 010f 00 .byte 0
1125
1126 .section .text
1128
1129 .desc GetDeviceStatus, near
1130 .proc GetDeviceStatus
1131 GetDeviceStatus:
455:../src/usb.c ****
456:../src/usb.c **** static BYTE GetDeviceStatus( void) {
1133 .LMM115:
457:../src/usb.c **** static const char get_dev_status_table[] = {
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 26
1135 .LBB7:
1136 .LMM116:
458:../src/usb.c **** 0x00, 0x00, /* remote wakeup disabled, bus powered */
459:../src/usb.c **** 0x02, 0x00 /* remote wakeup enabled, bus powered */
460:../src/usb.c **** } ;
461:../src/usb.c ****
462:../src/usb.c **** data_size[ CurDevice] = 2 ;
1138 0305 C4F10000 ld r1,dpr:pof(@CurDevice)
1139 0309 0C00 ld r0,#0
1140 030b 2C02 ld r2,#2
1141 030d 26F00000 ld dpr:pof(@data_size)(rr0),r2
1141 D2
1142 .LMM117:
463:../src/usb.c **** data_ptr = (BYTE *) &get_dev_status_table[ remote_wakeup_status[ CurDevice]] ;
1144 0312 C4F10000 ld r1,dpr:pof(@CurDevice)
1145 0316 0C00 ld r0,#0
1146 0318 BFD2010C ldw rr2,#dpr:pof(@get_dev_status_table$20)
1147 031c 7F400000 add r3,dpr:pof(@remote_wakeup_status)(rr0)
1147 D3
1148 0321 35D200 adc r2,#0
1149 0324 E302 ldw rr0,rr2
1150 0326 E2F10000 ldw dpr:pof(@data_ptr),rr0
1151 .LMM118:
464:../src/usb.c **** return control_read() ;
1153 032a D200E2 call @control_read
1154 .LMM119:
465:../src/usb.c **** }
1156 .LBE7:
1157 032d 46 ret
1158 .endproc
1162 .Lscope8:
1166
1167 .desc HUB_set_configuration, near
1168 .proc HUB_set_configuration
1169 HUB_set_configuration:
466:../src/usb.c ****
467:../src/usb.c **** static void HUB_set_configuration( BYTE configuration_status)
468:../src/usb.c **** {
1171 .LMM121:
469:../src/usb.c **** if( configuration_status == 0)
1173 032e 0200 or r0,r0
1174 0330 EB08 jxnz .L45
1175 .LMM122:
470:../src/usb.c **** {
471:../src/usb.c **** /* device is not configured */
472:../src/usb.c **** ENDPR1_A &= ~0x30 ; /* Disable Tx */
1177 0332 15F2CF and @ENDPR1_A,#207
1178 .LMM123:
473:../src/usb.c **** ep1_tx_ready = 0 ;
1180 0335 C5F00001 ld dpr:pof(@ep1_tx_ready),r0
1181 .LMM124:
474:../src/usb.c **** }
1183 0339 46 ret
1184 .L45:
1185 .LMM125:
475:../src/usb.c **** else
476:../src/usb.c **** {
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 27
477:../src/usb.c **** /* device is configured */
478:../src/usb.c **** ENDPR1_A &= ~0x30 ;
1187 033a 15F2CF and @ENDPR1_A,#207
1188 .LMM126:
479:../src/usb.c **** ENDPR1_A |= 0x20 ; /* Tx STAT_NAK */
1190 033d 05F220 or @ENDPR1_A,#32
1191 .LMM127:
480:../src/usb.c **** ep1_tx_ready = 1 ;
1193 0340 2FF10100 ld dpr:pof(@ep1_tx_ready),#1
1193 01
1194 .LMM128:
481:../src/usb.c **** }
482:../src/usb.c **** }
1196 0345 46 ret
1197 .endproc
1198 .Lscope9:
1201
1202 .desc set_configuration, near
1203 .proc set_configuration
1204 set_configuration:
483:../src/usb.c ****
484:../src/usb.c **** static BYTE set_configuration( void)
485:../src/usb.c **** {
1206 .LMM130:
486:../src/usb.c **** /* We have only one configuration per device */
487:../src/usb.c **** if( ( CurRxBuffer[ USB_wValue] != 0) && (CurRxBuffer[ USB_wValue] != 1) )
1208 .LBB8:
1209 0346 E2F00000 ldw rr0,dpr:pof(@CurRxBuffer)
1210 034a 7FF102D0 ld r0,2(rr0)
1211 034e 95D001 cp r0,#1
1212 0351 3B03 jxule .L48
1213 .LMM131:
488:../src/usb.c **** {
489:../src/usb.c **** return TX_STALL ;
1215 .L58:
1216 0353 1C01 ld r1,#1
1217 0355 46 ret
1218 .L48:
1219 .LMM132:
490:../src/usb.c **** }
491:../src/usb.c **** else
492:../src/usb.c **** {
493:../src/usb.c **** configuration_status[ CurDevice] = CurRxBuffer[ USB_wValue] ;
1221 0356 C4F30000 ld r3,dpr:pof(@CurDevice)
1222 035a 2C00 ld r2,#0
1223 035c E2F00000 ldw rr0,dpr:pof(@CurRxBuffer)
1224 0360 7FF102D0 ld r0,2(rr0)
1225 0364 26F20000 ld dpr:pof(@configuration_status)(rr2),r0
1225 D0
1226 .LMM133:
494:../src/usb.c **** endpoint_stall[ CurDevice] = 0 ;
1228 0369 C4F10000 ld r1,dpr:pof(@CurDevice)
1229 036d 0C00 ld r0,#0
1230 036f 90D4 clr r4
1231 0371 26F00000 ld dpr:pof(@endpoint_stall)(rr0),r4
1231 D4
1232 .LMM134:
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s page 28
495:../src/usb.c **** switch( CurDevice)
1234 0376 C4F10000 ld r1,dpr:pof(@CurDevice)
1235 037a 0C00 ld r0,#0
1236 037c E320 ldw rr2,rr0
1237 037e 97D10003 cpw rr0,#3
1238 0382 BBCF jxugt .L58
1239 0384 4E22 addw rr2,rr2
1240 0386 EE spm
1241 0387 86F2038F ldw rr2,sof(.L56)(rr2)
1241 D2
1242 038c FE sdm
1243 038d D4D2 jp (rr2)
1244 .L56:
1245 $start_switch_table_56:
1246 038f 0397 .word sof(.L51)
1247 0391 03A7 .word sof(.L52)
1248 0393 03B7 .word sof(.L53)
1249 0395 03C7 .word sof(.L54)
1250 $end_switch_table_56:
1251 .LMM135:
496:../src/usb.c **** {
497:../src/usb.c **** extern void KEYBOARD_set_configuration( BYTE configuration_status) ;
1253 .LBB9:
1254 .L51:
1255 .LMM136:
498:../src/usb.c **** extern void MOUSE_set_configuration( BYTE configuration_status) ;
499:../src/usb.c **** extern void JOYSTICK_set_configuration( BYTE configuration_status) ;
500:../src/usb.c **** case 0:
501:../src/usb.c **** HUB_set_configuration( configuration_status[ CurDevice]) ;
1257 0397 C4F10000 ld r1,dpr:pof(@CurDevice)
1258 039b 0C00 ld r0,#0
1259 039d 7FF00000 ld r0,dpr:pof(@configuration_status)(rr0)
1259 D0
1260 03a2 D2032E call @HUB_set_configuration
1261 .LMM137:
502:../src/usb.c **** break ;
1263 03a5 8B2E jxt .L50
1264 .L52:
1265 .LMM138:
503:../src/usb.c **** case 1:
504:../src/usb.c **** KEYBOARD_set_configuration( configuration_status[ CurDevice]) ;
1267 03a7 C4F10000 ld r1,dpr:pof(@CurDevice)
1268 03ab 0C00 ld r0,#0
1269 03ad 7FF00000 ld r0,dpr:pof(@configuration_status)(rr0)
1269 D0
1270 03b2 D20000 call @KEYBOARD_set_configuration
1271 .LMM139:
505:../src/usb.c **** break ;
1273
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -