📄 atapiio.cod
字号:
DCB 0x0, "W", 0x0, "a", 0x0, "i", 0x0, "t", 0x0, "F", 0x0, "o"
DCB 0x0, "r", 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "c", 0x0, ">"
DCB 0x0, " ", 0x0, "W", 0x0, "A", 0x0, "I", 0x0, "T", 0x0, "_"
DCB 0x0, "T", 0x0, "Y", 0x0, "P", 0x0, "E", 0x0, "_", 0x0, "E"
DCB 0x0, "R", 0x0, "R", 0x0, "O", 0x0, "R", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FM@GICFJEOP@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAW?$AAa?$AAi?$AAt?$AAF?$AAo?$AAr@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FM@GICFJEOP@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAW?$AAa?$AAi?$AAt?$AAF?$AAo?$AAr@| DCB "A"
DCB 0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i", 0x0, "!", 0x0, "C"
DCB 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, ":", 0x0, ":"
DCB 0x0, "W", 0x0, "a", 0x0, "i", 0x0, "t", 0x0, "F", 0x0, "o"
DCB 0x0, "r", 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "c", 0x0, ">"
DCB 0x0, " ", 0x0, "W", 0x0, "A", 0x0, "I", 0x0, "T", 0x0, "_"
DCB 0x0, "T", 0x0, "Y", 0x0, "P", 0x0, "E", 0x0, "_", 0x0, "N"
DCB 0x0, "O", 0x0, "T", 0x0, "_", 0x0, "D", 0x0, "R", 0x0, "Q"
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FE@KDGCOFIA@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAW?$AAa?$AAi?$AAt?$AAF?$AAo?$AAr@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FE@KDGCOFIA@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAW?$AAa?$AAi?$AAt?$AAF?$AAo?$AAr@| DCB "A"
DCB 0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i", 0x0, "!", 0x0, "C"
DCB 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, ":", 0x0, ":"
DCB 0x0, "W", 0x0, "a", 0x0, "i", 0x0, "t", 0x0, "F", 0x0, "o"
DCB 0x0, "r", 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "c", 0x0, ">"
DCB 0x0, " ", 0x0, "W", 0x0, "A", 0x0, "I", 0x0, "T", 0x0, "_"
DCB 0x0, "T", 0x0, "Y", 0x0, "P", 0x0, "E", 0x0, "_", 0x0, "D"
DCB 0x0, "R", 0x0, "Q", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FI@IKJAFINI@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAW?$AAa?$AAi?$AAt?$AAF?$AAo?$AAr@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FI@IKJAFINI@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAW?$AAa?$AAi?$AAt?$AAF?$AAo?$AAr@| DCB "A"
DCB 0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i", 0x0, "!", 0x0, "C"
DCB 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, ":", 0x0, ":"
DCB 0x0, "W", 0x0, "a", 0x0, "i", 0x0, "t", 0x0, "F", 0x0, "o"
DCB 0x0, "r", 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "c", 0x0, ">"
DCB 0x0, " ", 0x0, "W", 0x0, "A", 0x0, "I", 0x0, "T", 0x0, "_"
DCB 0x0, "T", 0x0, "Y", 0x0, "P", 0x0, "E", 0x0, "_", 0x0, "R"
DCB 0x0, "E", 0x0, "A", 0x0, "D", 0x0, "Y", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FO@FPPIPLP@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAW?$AAa?$AAi?$AAt?$AAF?$AAo?$AAr@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FO@FPPIPLP@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAW?$AAa?$AAi?$AAt?$AAF?$AAo?$AAr@| DCB "A"
DCB 0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i", 0x0, "!", 0x0, "C"
DCB 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, ":", 0x0, ":"
DCB 0x0, "W", 0x0, "a", 0x0, "i", 0x0, "t", 0x0, "F", 0x0, "o"
DCB 0x0, "r", 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "c", 0x0, ">"
DCB 0x0, " ", 0x0, "W", 0x0, "A", 0x0, "I", 0x0, "T", 0x0, "_"
DCB 0x0, "T", 0x0, "Y", 0x0, "P", 0x0, "E", 0x0, "_", 0x0, "N"
DCB 0x0, "O", 0x0, "T", 0x0, "_", 0x0, "B", 0x0, "U", 0x0, "S"
DCB 0x0, "Y", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FG@MAJIHCDK@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAW?$AAa?$AAi?$AAt?$AAF?$AAo?$AAr@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FG@MAJIHCDK@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAW?$AAa?$AAi?$AAt?$AAF?$AAo?$AAr@| DCB "A"
DCB 0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i", 0x0, "!", 0x0, "C"
DCB 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, ":", 0x0, ":"
DCB 0x0, "W", 0x0, "a", 0x0, "i", 0x0, "t", 0x0, "F", 0x0, "o"
DCB 0x0, "r", 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "c", 0x0, ">"
DCB 0x0, " ", 0x0, "W", 0x0, "A", 0x0, "I", 0x0, "T", 0x0, "_"
DCB 0x0, "T", 0x0, "Y", 0x0, "P", 0x0, "E", 0x0, "_", 0x0, "B"
DCB 0x0, "U", 0x0, "S", 0x0, "Y", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
; Function compile flags: /Odt
00408 AREA |.text|, CODE, ARM
00408 |?WaitForDisc@CDisk@@UAAHEKK@Z| PROC ; CDisk::WaitForDisc
; 114 : {
00408 |$L32356|
00408 e1a0c00d mov r12, sp
0040c e92d000f stmdb sp!, {r0 - r3}
00410 e92d5000 stmdb sp!, {r12, lr}
00414 e24dd02c sub sp, sp, #0x2C
00418 |$M32354|
; 115 : BYTE bStatusRead = 0;
00418 e3a03000 mov r3, #0
0041c e5cd3000 strb r3, [sp]
; 116 :
; 117 : if (dwPeriod == 0) {
00420 e59d3040 ldr r3, [sp, #0x40]
00424 e3530000 cmp r3, #0
00428 1a000001 bne |$L31987|
; 118 : dwPeriod = dwTimeOut;
0042c e59d303c ldr r3, [sp, #0x3C]
00430 e58d3040 str r3, [sp, #0x40]
00434 |$L31987|
00434 |$L31989|
; 119 : }
; 120 :
; 121 : while( TRUE) {
; 122 : bStatusRead = GetAltStatus();
00434 e59d0034 ldr r0, [sp, #0x34]
00438 eb000000 bl |?GetAltStatus@CDisk@@QAAEXZ|
0043c e5cd0008 strb r0, [sp, #8]
00440 e5dd3008 ldrb r3, [sp, #8]
00444 e5cd3000 strb r3, [sp]
; 123 : switch (bStatusType) {
00448 e5dd3038 ldrb r3, [sp, #0x38]
0044c e58d300c str r3, [sp, #0xC]
00450 e59d300c ldr r3, [sp, #0xC]
00454 e2433001 sub r3, r3, #1
00458 e58d300c str r3, [sp, #0xC]
0045c e59d300c ldr r3, [sp, #0xC]
00460 e3530005 cmp r3, #5
00464 8a00006c bhi |$L31992|
00468 e59d200c ldr r2, [sp, #0xC]
0046c e1a03102 mov r3, r2, lsl #2
00470 e083300f add r3, r3, pc
00474 e5933004 ldr r3, [r3, #4]
00478 e08ff003 add pc, pc, r3
0047c |$L32353|
0047c |$L32352|
0047c 00000014 DCD 0x14
00480 00000054 DCD 0x54
00484 00000094 DCD 0x94
00488 000000e0 DCD 0xe0
0048c 00000120 DCD 0x120
00490 00000160 DCD 0x160
00494 |$L31995|
; 124 : case WAIT_TYPE_BUSY:
; 125 : if (bStatusRead & ATA_STATUS_BUSY) {
00494 e5dd3000 ldrb r3, [sp]
00498 e3130080 tst r3, #0x80
0049c 0a00000b beq |$L31996|
; 126 : DEBUGMSG(ZONE_IO, (TEXT("Atapi!CDisk::WaitForDisc> WAIT_TYPE_BUSY\r\n")));
004a0 e59f3208 ldr r3, [pc, #0x208]
004a4 e5933440 ldr r3, [r3, #0x440]
004a8 e3130008 tst r3, #8
004ac 0a000004 beq |$L32337|
004b0 e59f0210 ldr r0, [pc, #0x210]
004b4 eb000000 bl NKDbgPrintfW
004b8 e3a03001 mov r3, #1
004bc e58d3010 str r3, [sp, #0x10]
004c0 ea000001 b |$L32338|
004c4 |$L32337|
004c4 e3a03000 mov r3, #0
004c8 e58d3010 str r3, [sp, #0x10]
004cc |$L32338|
; 127 : goto ExitDone;
004cc ea000070 b |$L32000|
004d0 |$L31996|
; 128 : }
; 129 : break;
004d0 ea000051 b |$L31992|
004d4 |$L32001|
; 130 : case WAIT_TYPE_NOT_BUSY:
; 131 : if (!(bStatusRead & ATA_STATUS_BUSY)) {
004d4 e5dd3000 ldrb r3, [sp]
004d8 e3130080 tst r3, #0x80
004dc 1a00000b bne |$L32002|
; 132 : DEBUGMSG(ZONE_IO, (TEXT("Atapi!CDisk::WaitForDisc> WAIT_TYPE_NOT_BUSY\r\n")));
004e0 e59f31c8 ldr r3, [pc, #0x1C8]
004e4 e5933440 ldr r3, [r3, #0x440]
004e8 e3130008 tst r3, #8
004ec 0a000004 beq |$L32339|
004f0 e59f01cc ldr r0, [pc, #0x1CC]
004f4 eb000000 bl NKDbgPrintfW
004f8 e3a03001 mov r3, #1
004fc e58d3014 str r3, [sp, #0x14]
00500 ea000001 b |$L32340|
00504 |$L32339|
00504 e3a03000 mov r3, #0
00508 e58d3014 str r3, [sp, #0x14]
0050c |$L32340|
; 133 : goto ExitDone;
0050c ea000060 b |$L32005|
00510 |$L32002|
; 134 : }
; 135 : break;
00510 ea000041 b |$L31992|
00514 |$L32006|
; 136 : case WAIT_TYPE_READY:
; 137 : if (bStatusRead & ATA_STATUS_READY) {
00514 e5dd3000 ldrb r3, [sp]
00518 e3130040 tst r3, #0x40
0051c 0a00000e beq |$L32007|
; 138 : DEBUGMSG(ZONE_IO, (TEXT("Atapi!CDisk::WaitForDisc> WAIT_TYPE_READY\r\n")));
00520 e59f3188 ldr r3, [pc, #0x188]
00524 e5933440 ldr r3, [r3, #0x440]
00528 e3130008 tst r3, #8
0052c 0a000004 beq |$L32341|
00530 e59f0188 ldr r0, [pc, #0x188]
00534 eb000000 bl NKDbgPrintfW
00538 e3a03001 mov r3, #1
0053c e58d3018 str r3, [sp, #0x18]
00540 ea000001 b |$L32342|
00544 |$L32341|
00544 e3a03000 mov r3, #0
00548 e58d3018 str r3, [sp, #0x18]
0054c |$L32342|
; 139 : StallExecution(100);
0054c e3a01064 mov r1, #0x64
00550 e59d0034 ldr r0, [sp, #0x34]
00554 eb000000 bl |?StallExecution@CDisk@@QAAXK@Z|
; 140 : goto ExitDone;
00558 ea00004d b |$L32010|
0055c |$L32007|
; 141 : }
; 142 : break;
0055c ea00002e b |$L31992|
00560 |$L32011|
; 143 : case WAIT_TYPE_DRQ:
; 144 : if (bStatusRead & ATA_STATUS_DATA_REQ) {
00560 e5dd3000 ldrb r3, [sp]
00564 e3130008 tst r3, #8
00568 0a00000b beq |$L32012|
; 145 : DEBUGMSG(ZONE_IO, (TEXT("Atapi!CDisk::WaitForDisc> WAIT_TYPE_DRQ\r\n")));
0056c e59f313c ldr r3, [pc, #0x13C]
00570 e5933440 ldr r3, [r3, #0x440]
00574 e3130008 tst r3, #8
00578 0a000004 beq |$L32343|
0057c e59f0138 ldr r0, [pc, #0x138]
00580 eb000000 bl NKDbgPrintfW
00584 e3a03001 mov r3, #1
00588 e58d301c str r3, [sp, #0x1C]
0058c ea000001 b |$L32344|
00590 |$L32343|
00590 e3a03000 mov r3, #0
00594 e58d301c str r3, [sp, #0x1C]
00598 |$L32344|
; 146 : goto ExitDone;
00598 ea00003d b |$L32015|
0059c |$L32012|
; 147 : }
; 148 : break;
0059c ea00001e b |$L31992|
005a0 |$L32016|
; 149 : case WAIT_TYPE_NOT_DRQ:
; 150 : if (!(bStatusRead & ATA_STATUS_DATA_REQ)) {
005a0 e5dd3000 ldrb r3, [sp]
005a4 e3130008 tst r3, #8
005a8 1a00000b bne |$L32017|
; 151 : DEBUGMSG(ZONE_IO, (TEXT("Atapi!CDisk::WaitForDisc> WAIT_TYPE_NOT_DRQ\r\n")));
005ac e59f30fc ldr r3, [pc, #0xFC]
005b0 e5933440 ldr r3, [r3, #0x440]
005b4 e3130008 tst r3, #8
005b8 0a000004 beq |$L32345|
005bc e59f00f4 ldr r0, [pc, #0xF4]
005c0 eb000000 bl NKDbgPrintfW
005c4 e3a03001 mov r3, #1
005c8 e58d3020 str r3, [sp, #0x20]
005cc ea000001 b |$L32346|
005d0 |$L32345|
005d0 e3a03000 mov r3, #0
005d4 e58d3020 str r3, [sp, #0x20]
005d8 |$L32346|
; 152 : goto ExitDone;
005d8 ea00002d b |$L32020|
005dc |$L32017|
; 153 : }
; 154 : break;
005dc ea00000e b |$L31992|
005e0 |$L32021|
; 155 : case WAIT_TYPE_ERROR:
; 156 : if (bStatusRead & ATA_STATUS_ERROR) {
005e0 e5dd3000 ldrb r3, [sp]
005e4 e3130001 tst r3, #1
005e8 0a00000b beq |$L32022|
; 157 : DEBUGMSG(ZONE_IO, (TEXT("Atapi!CDisk::WaitForDisc> WAIT_TYPE_ERROR\r\n")));
005ec e59f30bc ldr r3, [pc, #0xBC]
005f0 e5933440 ldr r3, [r3, #0x440]
005f4 e3130008 tst r3, #8
005f8 0a000004 beq |$L32347|
005fc e59f00b0 ldr r0, [pc, #0xB0]
00600 eb000000 bl NKDbgPrintfW
00604 e3a03001 mov r3, #1
00608 e58d3024 str r3, [sp, #0x24]
0060c ea000001 b |$L32348|
00610 |$L32347|
00610 e3a03000 mov r3, #0
00614 e58d3024 str r3, [sp, #0x24]
00618 |$L32348|
; 158 : goto ExitDone;
00618 ea00001d b |$L32025|
0061c |$L32022|
0061c |$L31992|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -