📄 mdppfs.cod
字号:
; 307 : }
00094 eaffffec b |$L38120|
00098 |$L38121|
; 308 :
; 309 : //
; 310 : // Read auto FD two times to make sure that it is set again.
; 311 : //
; 312 : if( !(*IDE_CTRL & PAR_AUTOFD))
00098 e3a03102 mov r3, #2, 2
0009c e383380a orr r3, r3, #0xA, 16
000a0 e5933000 ldr r3, [r3]
000a4 e3130b01 tst r3, #1, 22
000a8 1a000000 bne |$L38127|
; 313 : {
; 314 : continue;
000ac eaffffe3 b |$L38117|
000b0 |$L38127|
; 315 : }
; 316 : if( !(*IDE_CTRL & PAR_AUTOFD))
000b0 e3a03102 mov r3, #2, 2
000b4 e383380a orr r3, r3, #0xA, 16
000b8 e5933000 ldr r3, [r3]
000bc e3130b01 tst r3, #1, 22
000c0 1a000000 bne |$L38129|
; 317 : {
; 318 : continue;
000c4 eaffffdd b |$L38211|
000c8 |$L38129|
; 319 : }
; 320 : if( !(*IDE_CTRL & PAR_AUTOFD))
000c8 e3a03102 mov r3, #2, 2
000cc e383380a orr r3, r3, #0xA, 16
000d0 e5933000 ldr r3, [r3]
000d4 e3130b01 tst r3, #1, 22
000d8 1a000000 bne |$L38131|
; 321 : {
; 322 : continue;
000dc eaffffd7 b |$L38212|
000e0 |$L38131|
; 323 : }
; 324 :
; 325 : if( (*IDE_CTRL & PAR_AUTOFD))
000e0 e3a03102 mov r3, #2, 2
000e4 e383380a orr r3, r3, #0xA, 16
000e8 e5933000 ldr r3, [r3]
000ec e3130b01 tst r3, #1, 22
000f0 0a000000 beq |$L38133|
; 326 : {
; 327 : break;
000f4 ea000000 b |$L38118|
000f8 |$L38133|
; 328 : }
; 329 :
; 330 : }
000f8 eaffffd0 b |$L38213|
000fc |$L38118|
; 331 :
; 332 : //
; 333 : // Set PAR_ACK
; 334 : //
; 335 : *IDE_CTRL = PAR_NREAD | PAR_ACK ;
000fc e3a03102 mov r3, #2, 2
00100 e383280a orr r2, r3, #0xA, 16
00104 e3a03021 mov r3, #0x21
00108 e5823000 str r3, [r2]
0010c |$L38216|
0010c |$L38215|
0010c |$L38214|
0010c |$L38136|
; 336 :
; 337 : //
; 338 : // Wait for the AUTOFD to go low.
; 339 : //
; 340 : while (1)
; 341 : {
; 342 : for(iWatchdog = 0 ; ; iWatchdog++)
0010c e3a03000 mov r3, #0
00110 e58d3000 str r3, [sp]
00114 ea000002 b |$L38138|
00118 |$L38139|
00118 e59d3000 ldr r3, [sp]
0011c e2833001 add r3, r3, #1
00120 e58d3000 str r3, [sp]
00124 |$L38138|
; 343 : {
; 344 : if( !(*IDE_CTRL & PAR_AUTOFD))
00124 e3a03102 mov r3, #2, 2
00128 e383380a orr r3, r3, #0xA, 16
0012c e5933000 ldr r3, [r3]
00130 e3130b01 tst r3, #1, 22
00134 1a000000 bne |$L38142|
; 345 : {
; 346 : break;
00138 ea000009 b |$L38140|
0013c |$L38142|
; 347 : }
; 348 :
; 349 : //
; 350 : // Check to see if the watchdog has timed out
; 351 : //
; 352 : if (iWatchdog == PARALLEL_TIMEOUT)
0013c e59d3000 ldr r3, [sp]
00140 e3530401 cmp r3, #1, 8
00144 1a000005 bne |$L38143|
; 353 : {
; 354 : //
; 355 : // Display error message
; 356 : //
; 357 : EdbgOutputDebugString("OEMParallelPortSendByte: status timeout 2.\r\n");
00148 e59f00a8 ldr r0, [pc, #0xA8]
0014c eb000000 bl EdbgOutputDebugString
; 358 :
; 359 : //
; 360 : // set parallel port to disconnected and return failure
; 361 : //
; 362 : NoPPFS=TRUE;
00150 e59f209c ldr r2, [pc, #0x9C]
00154 e3a03001 mov r3, #1
00158 e5823000 str r3, [r2]
; 363 : return;
0015c ea000021 b |$L38110|
00160 |$L38143|
; 364 : }
; 365 : }
00160 eaffffec b |$L38139|
00164 |$L38140|
; 366 :
; 367 : //
; 368 : // Read auto FD two times to make sure that it is set again.
; 369 : //
; 370 : if(( *IDE_CTRL & PAR_AUTOFD))
00164 e3a03102 mov r3, #2, 2
00168 e383380a orr r3, r3, #0xA, 16
0016c e5933000 ldr r3, [r3]
00170 e3130b01 tst r3, #1, 22
00174 0a000000 beq |$L38146|
; 371 : {
; 372 : continue;
00178 eaffffe3 b |$L38136|
0017c |$L38146|
; 373 : }
; 374 : if(( *IDE_CTRL & PAR_AUTOFD))
0017c e3a03102 mov r3, #2, 2
00180 e383380a orr r3, r3, #0xA, 16
00184 e5933000 ldr r3, [r3]
00188 e3130b01 tst r3, #1, 22
0018c 0a000000 beq |$L38148|
; 375 : {
; 376 : continue;
00190 eaffffdd b |$L38214|
00194 |$L38148|
; 377 : }
; 378 : if(( *IDE_CTRL & PAR_AUTOFD))
00194 e3a03102 mov r3, #2, 2
00198 e383380a orr r3, r3, #0xA, 16
0019c e5933000 ldr r3, [r3]
001a0 e3130b01 tst r3, #1, 22
001a4 0a000000 beq |$L38150|
; 379 : {
; 380 : continue;
001a8 eaffffd7 b |$L38215|
001ac |$L38150|
; 381 : }
; 382 :
; 383 : if( !(*IDE_CTRL & PAR_AUTOFD))
001ac e3a03102 mov r3, #2, 2
001b0 e383380a orr r3, r3, #0xA, 16
001b4 e5933000 ldr r3, [r3]
001b8 e3130b01 tst r3, #1, 22
001bc 1a000000 bne |$L38152|
; 384 : {
; 385 : break;
001c0 ea000000 b |$L38137|
001c4 |$L38152|
; 386 : }
; 387 :
; 388 : }
001c4 eaffffd0 b |$L38216|
001c8 |$L38137|
; 389 : //
; 390 : // Clear Ack
; 391 : //
; 392 : *IDE_CTRL = PAR_NREAD ;
001c8 e3a03102 mov r3, #2, 2
001cc e383280a orr r2, r3, #0xA, 16
001d0 e3a03020 mov r3, #0x20
001d4 e5823000 str r3, [r2]
; 393 :
; 394 : //
; 395 : // Put a little delay in here.
; 396 : //
; 397 : //VosDelayInuS(20);
; 398 :
; 399 : //
; 400 : // Assert Busy and nAcknowledge. Back to the default Parallel port state
; 401 : //
; 402 : *IDE_CTRL = PAR_NWRITE | PAR_NREAD ;
001d8 e3a03102 mov r3, #2, 2
001dc e383280a orr r2, r3, #0xA, 16
001e0 e3a03060 mov r3, #0x60
001e4 e5823000 str r3, [r2]
001e8 |$L38110|
; 403 : }
001e8 e28dd004 add sp, sp, #4
001ec e89d6000 ldmia sp, {sp, lr}
001f0 e12fff1e bx lr
001f4 |$L38222|
001f4 00000000 DCD |NoPPFS|
001f8 00000000 DCD |??_C@_0CN@FHIBGCLO@OEMParallelPortSendByte?3?5status?5@|
001fc 00000000 DCD |??_C@_0CM@FEPGELED@OEMParallelPortSendByte?3?5status?5@|
00200 800a0010 DCD 0x800a0010
00204 |$M38218|
ENDP ; |OEMParallelPortSendByte|
EXPORT |OEMIsParallelReady|
IMPORT |GetSystemTimeInMsec|
00000 AREA |.text| { |OEMIsParallelReady| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMIsParallelReady|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMIsParallelReady| } ; comdat associative
|$T38229| DCD |$L38228|
DCD 0x40002202
; Function compile flags: /Ods
00000 AREA |.text| { |OEMIsParallelReady| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMIsParallelReady| PROC
; 412 : {
00000 |$L38228|
00000 e52de004 str lr, [sp, #-4]!
00004 e24dd010 sub sp, sp, #0x10
00008 |$M38226|
; 413 : DWORD dwStart;
; 414 :
; 415 : //
; 416 : // Find the initial time in seconds.
; 417 : //
; 418 : dwStart= GetSystemTimeInMsec();
00008 eb000000 bl GetSystemTimeInMsec
0000c e58d0008 str r0, [sp, #8]
00010 e59d3008 ldr r3, [sp, #8]
00014 e58d3000 str r3, [sp]
; 419 :
; 420 : //
; 421 : // Set direction to write and latch in the line data.
; 422 : //
; 423 : *IDE_CTRL = PAR_NREAD| PAR_NWRITE |PAR_ACK ;
00018 e3a03102 mov r3, #2, 2
0001c e383280a orr r2, r3, #0xA, 16
00020 e3a03061 mov r3, #0x61
00024 e5823000 str r3, [r2]
00028 |$L38162|
; 424 :
; 425 : //
; 426 : // Wait for AUTOFD
; 427 : //
; 428 : while (*IDE_CTRL & PAR_AUTOFD)
00028 e3a03102 mov r3, #2, 2
0002c e383380a orr r3, r3, #0xA, 16
00030 e5933000 ldr r3, [r3]
00034 e3130b01 tst r3, #1, 22
00038 0a00000c beq |$L38163|
; 429 : {
; 430 : if (GetSystemTimeInMsec() - dwStart > 3000)
0003c eb000000 bl GetSystemTimeInMsec
00040 e58d000c str r0, [sp, #0xC]
00044 e59d200c ldr r2, [sp, #0xC]
00048 e59d3000 ldr r3, [sp]
0004c e0422003 sub r2, r2, r3
00050 e3a03ebb mov r3, #0xBB, 28
00054 e3833008 orr r3, r3, #8
00058 e1520003 cmp r2, r3
0005c 9a000002 bls |$L38164|
; 431 : return FALSE;
00060 e3a03000 mov r3, #0
00064 e58d3004 str r3, [sp, #4]
00068 ea000002 b |$L38157|
0006c |$L38164|
; 432 : }
0006c eaffffed b |$L38162|
00070 |$L38163|
; 433 : return TRUE;
00070 e3a03001 mov r3, #1
00074 e58d3004 str r3, [sp, #4]
00078 |$L38157|
; 431 : return FALSE;
00078 e59d0004 ldr r0, [sp, #4]
; 434 : }
0007c e28dd010 add sp, sp, #0x10
00080 e49de004 ldr lr, [sp], #4
00084 e12fff1e bx lr
00088 |$M38227|
ENDP ; |OEMIsParallelReady|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -