389{
390
391
392
393
396
400
402
404 {
406 return 0;
407 }
408
411
413
415
416
417 if ((pDcp->
Command & 0x04) || (pDcp->
Mask & (1 << Channel)))
418 return 0;
419
420 OpMode = (RegMode & 0xC0) >> 6;
422 Autoinit = RegMode & 0x10;
423 TrMode = (RegMode & 0x0C) >> 2;
424
425
426 switch (OpMode)
427 {
428 case 0:
429
430 DPRINT1(
"Request Mode - Not Implemented\n");
431 return 0;
432 case 1:
433
434 break;
435 case 2:
436
437 DPRINT1(
"Block Mode - Not Implemented\n");
438 return 0;
439 case 3:
440
441 DPRINT1(
"Cascade Mode should not be used by regular apps\n");
442 return 0;
443 }
444
445
446 if (TrMode == 4)
447 {
448
449 DPRINT1(
"DMA Transfer Type Illegal\n");
450 return 0;
451 }
452
453
455
456
457
460
461
464
465 switch (TrMode)
466 {
467
468 case 0:
469 {
470 DPRINT1(
"Verification DMA operation\n");
471 break;
472 }
473
474
475 case 1:
476 {
477 DPRINT1(
"Perform Write transfer of %d elements (%d bytes) at 0x%x %s with count %x\n",
479
481 {
483 }
484 else
485 {
487 {
489 }
490 }
491
492 break;
493 }
494
495
496 case 2:
497 {
498 DPRINT1(
"Perform Read transfer of %d elements (%d bytes) at 0x%x %s with count %x\n",
500
502 {
504 }
505 else
506 {
508 {
510 }
511 }
512
513 break;
514 }
515 }
516
517
521 else
523
524
526 {
528
529
530 pDcp->
Status |= 1 << Channel;
531 pDcp->
Status &= ~(1 << (Channel + 4));
532
533 if (Autoinit)
534 {
535
538 }
539 else
540 {
541
542 pDcp->
Mask |= (1 << Channel);
543 }
544 }
545
547}
#define ERROR_INVALID_ADDRESS
#define DMA_CONTROLLER_CHANNELS
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG Increment
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_In_ PVOID _Out_opt_ BOOLEAN _Out_opt_ PPFN_NUMBER Page
DMA_CHANNEL DmaChannel[DMA_CONTROLLER_CHANNELS]
FAST486_STATE EmulatorContext
static DMA_CONTROLLER DmaControllers[DMA_CONTROLLERS]
static DMA_PAGE_REGISTER DmaPageRegisters[DMA_CONTROLLERS *DMA_CONTROLLER_CHANNELS]
VOID FASTCALL EmulatorReadMemory(PFAST486_STATE State, ULONG Address, PVOID Buffer, ULONG Size)
VOID FASTCALL EmulatorWriteMemory(PFAST486_STATE State, ULONG Address, PVOID Buffer, ULONG Size)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size