/* #define SCCSID "@(#)vdmint13.h	6.3 92/03/13" */

// /***    VDMINT13.H
//  *
//  *      IBM Confidential
//  *
//  *      Copyright (c) IBM Corporation 1987, 1989
//  *
//  *      All Rights Reserved
//  *
//  *      Title:
//  *
//  *      Int13 mini-VDM <> DiskDD communications block.
//  *
//  *      Description:
//  *
//  *      This control block is passed by the Disk DD to mini-VDM
//  *      initialzation via DevHlp_CreateInt13VDM (an internal DevHlp
//  *      service).
//  *
//  *      Modification History:
//  *
//  *      Created:
//  *
//  */


typedef struct _VDMINT13
{
//
// These vectors provide linkage between the Disk DD and
// Int 13 mini-VDM.
//

#define MAX_INT13_FUNCTIONS             5
#define INT13_FCN_DISKDDCALLOUT         0       // VDM     -> DISK DD
#define INT13_FCN_SIMULATEIRQ           1       // DISK DD -> VDM
#define INT13_FCN_SIMULATETMR           2       // DISK DD -> VDM

   VOID         (VDDENTRY *Int13Functions[MAX_INT13_FUNCTIONS])();
//
// These variables provide the address of the Linear=Real
// I/O buffer mapped in the VDM address space.
//
   ULONG        pInt13BufReal;
   ULONG        pInt13BufLin;
   ULONG        pInt13BufProt;
   USHORT       Int13IOBufSectors;
//
// This variable indicates where we are in processing an INT 13
// request.
//
// Note: It is set to START by the DiskDD, and to COMPLETE
//       by the V86 code just prior to dispatching the request
//       to the Int 13 BIOS
//
   USHORT       Int13State;
#define         VDMINT13_IDLE           0
#define         VDMINT13_START          1
#define         VDMINT13_COMPLETE       2

   ULONG        Int13CreateRc;

//
// These are variables used by the VDM
//
   UCHAR        Int13PriClass;
   UCHAR        Int13PriLevel;
   PTCB         Int13pTCB;
   HVDM         Int13hvdm;
   HHOOK        Int13IRQCtxHook;
   USHORT       Int13IRQPending;
//
   ULONG        Reserved[10];
//
// Register set passed to the BIOS in V86 mode
//
   KMREG        Int13Regs;

} VDMINT13, *PVDMINT13;
