📄 usb_scsi.txt
字号:
000026 480b LDR r0,|L9.84|
000028 2105 MOVS r1,#5
00002a 7081 STRB r1,[r0,#2] ; Scsi_Sense_Data
00002c 2124 MOVS r1,#0x24
00002e 7301 STRB r1,[r0,#0xc] ; Scsi_Sense_Data
;;;206 Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
;;;207 Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);
000030 2101 MOVS r1,#1
000032 e8bd4010 POP {r4,lr}
000036 4608 MOV r0,r1
000038 f7ffbffe B.W Set_CSW
|L9.60|
;;;208 }
;;;209 return;
;;;210 }
;;;211 else if (Bot_State == BOT_DATA_IN)
00003c 2802 CMP r0,#2
00003e d103 BNE |L9.72|
|L9.64|
;;;212 {
;;;213 Read_Memory();
000040 e8bd4010 POP {r4,lr}
000044 f7ffbffe B.W Read_Memory
|L9.72|
;;;214 }
;;;215 }
000048 bd10 POP {r4,pc}
;;;216
ENDP
00004a 0000 DCW 0x0000
|L9.76|
00004c 00000000 DCD Bot_State
|L9.80|
000050 00000000 DCD ||CBW||
|L9.84|
000054 00000000 DCD Scsi_Sense_Data
AREA ||i.SCSI_Write10_Cmd||, CODE, READONLY, ALIGN=2
SCSI_Write10_Cmd PROC
;;;224 void SCSI_Write10_Cmd(void)
;;;225 {
000000 b510 PUSH {r4,lr}
;;;226
;;;227 if (Bot_State == BOT_IDLE)
000002 4c15 LDR r4,|L10.88|
000004 7820 LDRB r0,[r4,#0] ; Bot_State
000006 b9f8 CBNZ r0,|L10.72|
;;;228 {
;;;229 if (!(Address_Management_Test(SCSI_WRITE10)))/*address out of range*/
000008 202a MOVS r0,#0x2a
00000a f7fffffe BL Address_Management_Test
00000e 2800 CMP r0,#0
000010 d020 BEQ |L10.84|
;;;230 {
;;;231 return;
;;;232 }
;;;233
;;;234 if ((CBW.bmFlags & 0x80) == 0)
000012 4812 LDR r0,|L10.92|
000014 7b00 LDRB r0,[r0,#0xc] ; CBW
000016 0600 LSLS r0,r0,#24
000018 d408 BMI |L10.44|
;;;235 {
;;;236 Bot_State = BOT_DATA_OUT;
00001a 2001 MOVS r0,#1
00001c 7020 STRB r0,[r4,#0] ; Bot_State
;;;237 SetEPRxStatus(ENDP2, EP_RX_VALID);
00001e e8bd4010 POP {r4,lr}
000022 f44f5140 MOV r1,#0x3000
000026 2002 MOVS r0,#2
000028 f7ffbffe B.W SetEPRxStatus
|L10.44|
;;;238 }
;;;239 else
;;;240 {
;;;241 Bot_Abort(DIR_IN);
00002c 2000 MOVS r0,#0
00002e f7fffffe BL Bot_Abort
000032 480b LDR r0,|L10.96|
000034 2105 MOVS r1,#5
000036 7081 STRB r1,[r0,#2] ; Scsi_Sense_Data
000038 2124 MOVS r1,#0x24
00003a 7301 STRB r1,[r0,#0xc] ; Scsi_Sense_Data
;;;242 Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
;;;243 Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
00003c 2100 MOVS r1,#0
00003e e8bd4010 POP {r4,lr}
000042 2001 MOVS r0,#1
000044 f7ffbffe B.W Set_CSW
|L10.72|
;;;244 }
;;;245 return;
;;;246 }
;;;247 else if (Bot_State == BOT_DATA_OUT)
000048 2801 CMP r0,#1
00004a d103 BNE |L10.84|
;;;248 {
;;;249 Write_Memory();
00004c e8bd4010 POP {r4,lr}
000050 f7ffbffe B.W Write_Memory
|L10.84|
;;;250 }
;;;251 }
000054 bd10 POP {r4,pc}
;;;252
ENDP
000056 0000 DCW 0x0000
|L10.88|
000058 00000000 DCD Bot_State
|L10.92|
00005c 00000000 DCD ||CBW||
|L10.96|
000060 00000000 DCD Scsi_Sense_Data
AREA ||i.SCSI_Verify10_Cmd||, CODE, READONLY, ALIGN=2
SCSI_Verify10_Cmd PROC
;;;260 void SCSI_Verify10_Cmd(void)
;;;261 {
000000 b510 PUSH {r4,lr}
;;;262 if ((CBW.dDataLength == 0) && !(CBW.CB[1] & BLKVFY))/* BLKVFY not set*/
000002 480b LDR r0,|L11.48|
000004 6881 LDR r1,[r0,#8] ; CBW
000006 b929 CBNZ r1,|L11.20|
000008 7c00 LDRB r0,[r0,#0x10] ; CBW
00000a 0740 LSLS r0,r0,#29
00000c d402 BMI |L11.20|
;;;263 {
;;;264 Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
00000e 2101 MOVS r1,#1
000010 2000 MOVS r0,#0
000012 e009 B |L11.40|
|L11.20|
;;;265 }
;;;266 else
;;;267 {
;;;268 Bot_Abort(BOTH_DIR);
000014 2002 MOVS r0,#2
000016 f7fffffe BL Bot_Abort
00001a 4806 LDR r0,|L11.52|
00001c 2105 MOVS r1,#5
00001e 7081 STRB r1,[r0,#2] ; Scsi_Sense_Data
000020 2124 MOVS r1,#0x24
000022 7301 STRB r1,[r0,#0xc] ; Scsi_Sense_Data
;;;269 Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
;;;270 Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
000024 2100 MOVS r1,#0
000026 2001 MOVS r0,#1
|L11.40|
000028 e8bd4010 POP {r4,lr}
00002c f7ffbffe B.W Set_CSW
;;;271 }
;;;272 }
;;;273
ENDP
|L11.48|
000030 00000000 DCD ||CBW||
|L11.52|
000034 00000000 DCD Scsi_Sense_Data
AREA ||i.SCSI_Valid_Cmd||, CODE, READONLY, ALIGN=2
SCSI_Valid_Cmd PROC
;;;281 void SCSI_Valid_Cmd(void)
;;;282 {
000000 b510 PUSH {r4,lr}
;;;283 if (CBW.dDataLength != 0)
000002 480a LDR r0,|L12.44|
000004 6880 LDR r0,[r0,#8] ; CBW
000006 b150 CBZ r0,|L12.30|
;;;284 {
;;;285 Bot_Abort(BOTH_DIR);
000008 2002 MOVS r0,#2
00000a f7fffffe BL Bot_Abort
00000e 4808 LDR r0,|L12.48|
000010 2105 MOVS r1,#5
000012 7081 STRB r1,[r0,#2] ; Scsi_Sense_Data
000014 2120 MOVS r1,#0x20
000016 7301 STRB r1,[r0,#0xc] ; Scsi_Sense_Data
;;;286 Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_COMMAND);
;;;287 Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
000018 2100 MOVS r1,#0
00001a 2001 MOVS r0,#1
00001c e001 B |L12.34|
|L12.30|
;;;288 }
;;;289 else
;;;290 Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
00001e 2101 MOVS r1,#1
000020 2000 MOVS r0,#0
|L12.34|
000022 e8bd4010 POP {r4,lr}
000026 f7ffbffe B.W Set_CSW
;;;291 }
;;;292
ENDP
00002a 0000 DCW 0x0000
|L12.44|
00002c 00000000 DCD ||CBW||
|L12.48|
000030 00000000 DCD Scsi_Sense_Data
AREA ||i.SCSI_Invalid_Cmd||, CODE, READONLY, ALIGN=2
SCSI_Invalid_Cmd PROC
;;;300 void SCSI_Invalid_Cmd(void)
;;;301 {
000000 b510 PUSH {r4,lr}
;;;302 if (CBW.dDataLength == 0)
000002 480b LDR r0,|L13.48|
000004 6881 LDR r1,[r0,#8] ; CBW
000006 b111 CBZ r1,|L13.14|
;;;303 {
;;;304 Bot_Abort(DIR_IN);
;;;305 }
;;;306 else
;;;307 {
;;;308 if ((CBW.bmFlags & 0x80) != 0)
000008 7b00 LDRB r0,[r0,#0xc] ; CBW
00000a 0600 LSLS r0,r0,#24
00000c d501 BPL |L13.18|
|L13.14|
00000e 2000 MOVS r0,#0 ;304
000010 e000 B |L13.20|
|L13.18|
;;;309 {
;;;310 Bot_Abort(DIR_IN);
;;;311 }
;;;312 else
;;;313 {
;;;314 Bot_Abort(BOTH_DIR);
000012 2002 MOVS r0,#2
|L13.20|
000014 f7fffffe BL Bot_Abort
000018 4806 LDR r0,|L13.52|
00001a 2105 MOVS r1,#5 ;310
00001c 7081 STRB r1,[r0,#2] ;310 ; Scsi_Sense_Data
00001e 2120 MOVS r1,#0x20 ;310
000020 7301 STRB r1,[r0,#0xc] ;310 ; Scsi_Sense_Data
;;;315 }
;;;316 }
;;;317 Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_COMMAND);
;;;318 Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
000022 2100 MOVS r1,#0
000024 e8bd4010 POP {r4,lr}
000028 2001 MOVS r0,#1
00002a f7ffbffe B.W Set_CSW
;;;319 }
;;;320
ENDP
00002e 0000 DCW 0x0000
|L13.48|
000030 00000000 DCD ||CBW||
|L13.52|
000034 00000000 DCD Scsi_Sense_Data
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -