| 1 | /*****************************************************************************
 | 
|---|
| 2 |  *
 | 
|---|
| 3 |  * SOURCE FILE NAME = SVGAPMI.H
 | 
|---|
| 4 |  *
 | 
|---|
| 5 |  * DESCRIPTIVE NAME =
 | 
|---|
| 6 |  *
 | 
|---|
| 7 |  * Copyright : COPYRIGHT IBM CORPORATION, 1991, 1992
 | 
|---|
| 8 |  *             Copyright Microsoft Corporation, 1990
 | 
|---|
| 9 |  *             LICENSED MATERIAL - PROGRAM PROPERTY OF IBM
 | 
|---|
| 10 |  *             REFER TO COPYRIGHT INSTRUCTION FORM#G120-2083
 | 
|---|
| 11 |  *             RESTRICTED MATERIALS OF IBM
 | 
|---|
| 12 |  *             IBM CONFIDENTIAL
 | 
|---|
| 13 |  *
 | 
|---|
| 14 |  * VERSION = V2.0
 | 
|---|
| 15 |  *
 | 
|---|
| 16 |  * DATE
 | 
|---|
| 17 |  *
 | 
|---|
| 18 |  * DESCRIPTION  Contains VIDEOPMI specific defintions
 | 
|---|
| 19 |  *
 | 
|---|
| 20 |  * FUNCTIONS
 | 
|---|
| 21 |  *
 | 
|---|
| 22 |  * NOTES
 | 
|---|
| 23 |  *
 | 
|---|
| 24 |  * STRUCTURES
 | 
|---|
| 25 |  *
 | 
|---|
| 26 |  * EXTERNAL REFERENCES
 | 
|---|
| 27 |  *
 | 
|---|
| 28 |  * EXTERNAL FUNCTIONS
 | 
|---|
| 29 |  *
 | 
|---|
| 30 |  * CHANGE ACTIVITY =
 | 
|---|
| 31 |  *   DATE      FLAG        APAR   CHANGE DESCRIPTION
 | 
|---|
| 32 |  *   --------  ----------  -----  --------------------------------------
 | 
|---|
| 33 |  *   mm/dd/yy  @Vr.mpppxx  xxxxx  xxxxxxx
 | 
|---|
| 34 |  *   02/14/96  @V3.2TSU00 148283  Merlin PBE, support linear aperture
 | 
|---|
| 35 |  *   04/18/96  @V3.2TSU01 150783  Add flags for _int10handler
 | 
|---|
| 36 |  *   07/15/96  @V3.2TSU02 160023  Use the old VIDEO_ADAPTER & VIDEOMDOEINFO
 | 
|---|
| 37 |  *
 | 
|---|
| 38 |  *****************************************************************************/
 | 
|---|
| 39 | 
 | 
|---|
| 40 | 
 | 
|---|
| 41 | /*
 | 
|---|
| 42 |  * This flag is used to set the linear aperture mode.
 | 
|---|
| 43 |  * the pIn passed in PMIREQUEST_SETMODE will be the pointer to
 | 
|---|
| 44 |  * (mode number | SET_LINEAR_BUFFER_MODE).
 | 
|---|
| 45 |  */
 | 
|---|
| 46 | #define SET_LINEAR_BUFFER_MODE  0x80000000
 | 
|---|
| 47 | 
 | 
|---|
| 48 | /*
 | 
|---|
| 49 |  * definitions of bus type
 | 
|---|
| 50 |  */
 | 
|---|
| 51 | #define ISA_BUS    0
 | 
|---|
| 52 | #define VLB_BUS    1
 | 
|---|
| 53 | #define PCI_BUS    2
 | 
|---|
| 54 | #define EISA_BUS   3
 | 
|---|
| 55 | #define PCMCIA_BUS 4
 | 
|---|
| 56 | #define MCA_BUS    5
 | 
|---|
| 57 | 
 | 
|---|
| 58 | /*
 | 
|---|
| 59 | * endian type
 | 
|---|
| 60 | */
 | 
|---|
| 61 | #define LITTLE_ENDIAN  0
 | 
|---|
| 62 | #define BIG_ENDIAN     1
 | 
|---|
| 63 | 
 | 
|---|
| 64 | 
 | 
|---|
| 65 | /*
 | 
|---|
| 66 | ** VIDEOPMI.DLL prototypes.
 | 
|---|
| 67 | */
 | 
|---|
| 68 | /* NOINC */
 | 
|---|
| 69 | #define HVIDEO   PVOID
 | 
|---|
| 70 | typedef HVIDEO  *PHVIDEO;
 | 
|---|
| 71 | 
 | 
|---|
| 72 | #ifndef APIENTRY
 | 
|---|
| 73 | #define APIENTRY /* nothing */
 | 
|---|
| 74 | #endif
 | 
|---|
| 75 | 
 | 
|---|
| 76 | #ifndef APIRET
 | 
|---|
| 77 | #define APIRET ULONG
 | 
|---|
| 78 | #endif
 | 
|---|
| 79 | 
 | 
|---|
| 80 | typedef ULONG       MODEID;
 | 
|---|
| 81 | typedef MODEID FAR *PMODEID;
 | 
|---|
| 82 | 
 | 
|---|
| 83 | /*
 | 
|---|
| 84 | ** PMIREQUEST_SOFTWAREINT structures @V3.2SEN01
 | 
|---|
| 85 | */
 | 
|---|
| 86 | typedef struct {
 | 
|---|
| 87 |   ULONG ulFlags;           //VDM initialization type
 | 
|---|
| 88 | #define VDM_POSTLOAD    0x1  //adapter just loaded, used internally for initialization
 | 
|---|
| 89 | #define VDM_INITIALIZE  0x2  //force initialization of a permanently open VDM, even if previously initialized
 | 
|---|
| 90 | #define VDM_TERMINATE_POSTINITIALIZE   0x6  //start VDM with initialization, but close it afterwards (includes VDM_INITIALIZE)
 | 
|---|
| 91 | #define VDM_QUERY_CAPABILITY     0x10  // query the current int 10 capability
 | 
|---|
| 92 | #define VDM_FULL_VDM_CREATED     0x20  // a full VDM is created
 | 
|---|
| 93 | #define VDM_MINI_VDM_CREATED     0x40  // a mini VDM is created
 | 
|---|
| 94 | #define VDM_MINI_VDM_SUPPORTED   0x80  // mini VDM support is available
 | 
|---|
| 95 |   PCHAR szName;            //VDM initialization program
 | 
|---|
| 96 |   PCHAR szArgs;            //VDM initialization arguments
 | 
|---|
| 97 | }INITVDM;
 | 
|---|
| 98 | 
 | 
|---|
| 99 | /*
 | 
|---|
| 100 |  * Don't change these structures without
 | 
|---|
| 101 |  * changing the kernel dos\dosinc\vdmint10.h !
 | 
|---|
| 102 |  */
 | 
|---|
| 103 | typedef struct {
 | 
|---|
| 104 |   BYTE bBufferType;        // input vs output buffer
 | 
|---|
| 105 | #define BUFFER_NONE     0
 | 
|---|
| 106 | #define INPUT_BUFFER    1
 | 
|---|
| 107 | #define OUTPUT_BUFFER   2
 | 
|---|
| 108 |   BYTE bReserved;
 | 
|---|
| 109 |   BYTE bSelCRF;           // CRF flag for the selector: ulong index into the CRF
 | 
|---|
| 110 |   BYTE bOffCRF;           // CRF flag for the offset: ulong index into the CRF
 | 
|---|
| 111 |   PVOID pAddress;         // linear address of the buffer
 | 
|---|
| 112 |   ULONG ulSize;
 | 
|---|
| 113 | }BUFFER, *PBUFFER;
 | 
|---|
| 114 | 
 | 
|---|
| 115 | // CRF taken from kmode.h
 | 
|---|
| 116 | typedef struct vcrf_s {
 | 
|---|
| 117 | 
 | 
|---|
| 118 |         ULONG reg_eax;
 | 
|---|
| 119 |         ULONG reg_ebx;
 | 
|---|
| 120 |         ULONG reg_ecx;
 | 
|---|
| 121 |         ULONG reg_edx;
 | 
|---|
| 122 |         ULONG reg_ebp;
 | 
|---|
| 123 |         ULONG reg_esi;
 | 
|---|
| 124 |         ULONG reg_edi;
 | 
|---|
| 125 |         ULONG reg_ds;
 | 
|---|
| 126 |         ULONG reg_es;
 | 
|---|
| 127 |         ULONG reg_fs;
 | 
|---|
| 128 |         ULONG reg_gs;
 | 
|---|
| 129 |         ULONG reg_cs;
 | 
|---|
| 130 |         ULONG reg_eip;
 | 
|---|
| 131 |         ULONG reg_eflag;
 | 
|---|
| 132 |         ULONG reg_ss;
 | 
|---|
| 133 |         ULONG reg_esp;
 | 
|---|
| 134 | }VCRF;
 | 
|---|
| 135 | 
 | 
|---|
| 136 | 
 | 
|---|
| 137 | typedef struct {
 | 
|---|
| 138 |   ULONG ulBIOSIntNo;      /* 0x10 for INT10 calls */
 | 
|---|
| 139 |   VCRF aCRF;
 | 
|---|
| 140 |   BUFFER pB[2];
 | 
|---|
| 141 | }INTCRF;
 | 
|---|
| 142 | #define VPRPMI "VPRPMI$"
 | 
|---|
| 143 | #define VPRSYSREQ_INT10HANDLER      1
 | 
|---|
| 144 | #define VPRSYSREQ_INT10WAITFORPDB   2
 | 
|---|
| 145 | #define VPRSYSREQ_MARKINT10VDM      3
 | 
|---|
| 146 | #define VPRSYSREQ_MAX               VPRSYSREQ_MARKINT10VDM
 | 
|---|
| 147 | /* @V3.2SEN01 end */
 | 
|---|
| 148 | /*
 | 
|---|
| 149 | ** Structures passed as input and output parameters.
 | 
|---|
| 150 | */
 | 
|---|
| 151 | 
 | 
|---|
| 152 | typedef struct _VIDEOMODEINFO { /* vmi */
 | 
|---|
| 153 |         MODEID  miModeId;               /* used to make setmode request     */
 | 
|---|
| 154 | 
 | 
|---|
| 155 | #define MODE_FLAG_NOT_MONO      0x0001  /* Mono-compatible                  */
 | 
|---|
| 156 | #define MODE_FLAG_GRAPHICS      0x0002  /* Text mode, Graphics              */
 | 
|---|
| 157 | #define MODE_FLAG_NO_CLR_BRST   0x0004  /* Disable Color burst              */
 | 
|---|
| 158 | #define MODE_FLAG_NATIVE        0x0008  /* Native (advanced function) mode  */
 | 
|---|
| 159 | #define IGNORE_CLR_BRST         0x0010  /* Disable color burst doesn't make */
 | 
|---|
| 160 |                                         /* sense for this mode              */
 | 
|---|
| 161 | #define NOT_PLASMA              0x0020  /* @V2.2TSU00 won't work on plasma  */
 | 
|---|
| 162 |                                         /* display                          */
 | 
|---|
| 163 | #define MODE_FLAG_VGA_ENTRY     0x0040  /* VGA mode, need clean up          */
 | 
|---|
| 164 | 
 | 
|---|
| 165 | #define MODE_FLAG_LINEAR_BUFFER 0x0100  /* flat frame buffer is supported   */
 | 
|---|
| 166 | 
 | 
|---|
| 167 | #define MODE_FLAG_DIRECT_RGB    0x1000  /* direct color RGB                 */
 | 
|---|
| 168 | #define MODE_FLAG_DIRECT_BGR    0x2000  /* direct color BGR                 */
 | 
|---|
| 169 | #define MODE_FLAG_YUV           0x4000  /* YUV color format                 */
 | 
|---|
| 170 | 
 | 
|---|
| 171 |         USHORT  usType;                 /* mode type bits                   */
 | 
|---|
| 172 |         USHORT  usInt10ModeSet;         /* int 10 mode                      */
 | 
|---|
| 173 |         USHORT  usXResolution;          /* horizontal pels                  */
 | 
|---|
| 174 |         USHORT  usYResolution;          /* vertical scan lines              */
 | 
|---|
| 175 |         ULONG   ulBufferAddress;        /* physical address of VRAM         */
 | 
|---|
| 176 |         ULONG   ulApertureSize;         /* VRAM aperture                    */
 | 
|---|
| 177 |         BYTE    bBitsPerPixel;          /* no of colors                     */
 | 
|---|
| 178 |         BYTE    bBitPlanes;             /* number of planes                 */
 | 
|---|
| 179 |         BYTE    bXCharSize;             /* font width                       */
 | 
|---|
| 180 |         BYTE    bYCharSize;             /* font height                      */
 | 
|---|
| 181 |         USHORT  usBytesPerScanLine;     /* logical line length in bytes     */
 | 
|---|
| 182 |         USHORT  usTextRows;             /* text rows                        */
 | 
|---|
| 183 |         ULONG   ulPageLength;           /* no of bytes to save a plane      */
 | 
|---|
| 184 |         ULONG   ulSaveSize;             /* total bytes of VRAM to save      */
 | 
|---|
| 185 |         /*
 | 
|---|
| 186 |          * Monitor Info
 | 
|---|
| 187 |          */
 | 
|---|
| 188 |         BYTE    bVrtRefresh;
 | 
|---|
| 189 |         BYTE    bHrtRefresh;
 | 
|---|
| 190 |         BYTE    bVrtPolPos;
 | 
|---|
| 191 |         BYTE    bHrtPolPos;
 | 
|---|
| 192 |         /*
 | 
|---|
| 193 |          * Direct Color Fields. The same definitions as VESA 1.2 and up.
 | 
|---|
| 194 |          */
 | 
|---|
| 195 |         CHAR    bRedMaskSize;               // @V3.2TSU02
 | 
|---|
| 196 |         CHAR    bRedFieldPosition;          // @V3.2TSU02
 | 
|---|
| 197 |         CHAR    bGreenMaskSize;             // @V3.2TSU02
 | 
|---|
| 198 |         CHAR    bGreenFieldPosition;        // @V3.2TSU02
 | 
|---|
| 199 |         CHAR    bBlueMaskSize;              // @V3.2TSU02
 | 
|---|
| 200 |         CHAR    bBlueFieldPosition;         // @V3.2TSU02
 | 
|---|
| 201 |         CHAR    bRsvdMaskSize;              // @V3.2TSU02
 | 
|---|
| 202 |         CHAR    bRsvdFieldPosition;         // @V3.2TSU02
 | 
|---|
| 203 | 
 | 
|---|
| 204 |         /*
 | 
|---|
| 205 |          * The number of colors can be derived from MaskSize fields.
 | 
|---|
| 206 |          */
 | 
|---|
| 207 |         ULONG   ulColors;             // @V3.2TSU02
 | 
|---|
| 208 | 
 | 
|---|
| 209 |         ULONG   ulReserved[3];        // @V3.2TSU02
 | 
|---|
| 210 | 
 | 
|---|
| 211 | //        USHORT  usScrnTop;           @V3.2TSU02
 | 
|---|
| 212 | //        USHORT  usScrnBottom;        @V3.2TSU02
 | 
|---|
| 213 | //        USHORT  usScrnLeft;          @V3.2TSU02
 | 
|---|
| 214 | //        USHORT  usScrnRight;         @V3.2TSU02
 | 
|---|
| 215 | 
 | 
|---|
| 216 | //        CHAR    szColorFormat[8];    @V3.2TSU02
 | 
|---|
| 217 | //        CHAR    szColorWeight[8];    @V3.2TSU02
 | 
|---|
| 218 | #ifndef VIDEOPMI_30_LEVEL
 | 
|---|
| 219 |         /*
 | 
|---|
| 220 |         ** The assumption is that all of the base video components
 | 
|---|
| 221 |         ** are built together and shipped in unison.
 | 
|---|
| 222 |         ** In order to build a back-level 3.0 base video component
 | 
|---|
| 223 |         ** (VIDEOPMI, BVHSVGA, VIDEOCFG, IBMGPMI), define macro
 | 
|---|
| 224 |         ** VIDEOPMI_30_LEVEL.
 | 
|---|
| 225 |         */
 | 
|---|
| 226 | //        ULONG   ulColors;               /* @V3.2SEN01 @V3.2TSU02 */
 | 
|---|
| 227 | #endif
 | 
|---|
| 228 | 
 | 
|---|
| 229 | } VIDEOMODEINFO;
 | 
|---|
| 230 | typedef VIDEOMODEINFO FAR *PVIDEOMODEINFO;
 | 
|---|
| 231 | 
 | 
|---|
| 232 | typedef struct _SVGARGB { /* rgb */
 | 
|---|
| 233 |         BYTE    bR;
 | 
|---|
| 234 |         BYTE    bG;
 | 
|---|
| 235 |         BYTE    bB;
 | 
|---|
| 236 |         BYTE    bUnused;
 | 
|---|
| 237 | } SVGARGB;
 | 
|---|
| 238 | typedef SVGARGB FAR *PSVGARGB;
 | 
|---|
| 239 | 
 | 
|---|
| 240 | #define EIGHT_BIT_DAC   0x00010000      /* over load ulRGBCount to tell     */
 | 
|---|
| 241 |                                         /* videopmi the dac values are for  */
 | 
|---|
| 242 |                                         /* 8 bit DAC.                       */
 | 
|---|
| 243 | 
 | 
|---|
| 244 | typedef struct _CLUTDATA { /* clt */
 | 
|---|
| 245 |         ULONG   ulRGBCount;             /* No of aRGB entries that follow   */
 | 
|---|
| 246 |         ULONG   ulRGBStart;             /* Start index for RGB triplets     */
 | 
|---|
| 247 |         SVGARGB aRGB[1];                /* One defined, ulRGBCount entries  */
 | 
|---|
| 248 | } CLUTDATA;
 | 
|---|
| 249 | typedef CLUTDATA FAR *PCLUTDATA;
 | 
|---|
| 250 | 
 | 
|---|
| 251 | typedef struct _PALETTEDATA { /* pal */
 | 
|---|
| 252 |         ULONG   ulPalCount;             /* No of bPal.. entries that follow */
 | 
|---|
| 253 |         ULONG   ulPalStart;             /* Start index for data             */
 | 
|---|
| 254 |         BYTE    bPaletteData[1];        /* One defined, ulPalCount entries  */
 | 
|---|
| 255 | } PALETTEDATA;
 | 
|---|
| 256 | typedef PALETTEDATA FAR *PPALETTEDATA;
 | 
|---|
| 257 | 
 | 
|---|
| 258 | typedef struct _FONTDATA { /* font */
 | 
|---|
| 259 |         ULONG   ulCharCount;            /* No of chars in font              */
 | 
|---|
| 260 |         ULONG   ulFontHeight;           /* No of scanlines per character    */
 | 
|---|
| 261 |         ULONG   ulFontWidth;            /* No of columns per character      */
 | 
|---|
| 262 |         BYTE    bFontData[1];           /* ulCharCount*ulFontHeight entries */
 | 
|---|
| 263 | } FONTDATA;
 | 
|---|
| 264 | typedef FONTDATA FAR *PFONTDATA;
 | 
|---|
| 265 | 
 | 
|---|
| 266 | typedef BYTE FAR *PVRAMDATA;
 | 
|---|
| 267 | 
 | 
|---|
| 268 | typedef struct _CLEANDATA { /* clean */
 | 
|---|
| 269 |     USHORT  Command;
 | 
|---|
| 270 |     USHORT  IndexPort;
 | 
|---|
| 271 |     USHORT  DataPort;
 | 
|---|
| 272 |     USHORT  Index;
 | 
|---|
| 273 |     USHORT  ANDMask;
 | 
|---|
| 274 |     USHORT  ORMask;
 | 
|---|
| 275 | } CLEANDATA;
 | 
|---|
| 276 | 
 | 
|---|
| 277 | typedef struct _BANKDATA { /* bank */
 | 
|---|
| 278 |         MODEID  miBank;                 /*                                  */
 | 
|---|
| 279 |         ULONG   ulBank;                 /*                                  */
 | 
|---|
| 280 | } BANKDATA;
 | 
|---|
| 281 | typedef BANKDATA FAR *PBANKDATA;
 | 
|---|
| 282 | 
 | 
|---|
| 283 | #define MAX_OEM_STRING  128
 | 
|---|
| 284 | #define MAX_DAC_STRING  128
 | 
|---|
| 285 | #define MAX_VERSION     128
 | 
|---|
| 286 | 
 | 
|---|
| 287 | typedef struct _ADAPTERINFO {   /* adi */
 | 
|---|
| 288 |         ULONG       ulAdapterID;
 | 
|---|
| 289 |         CHAR        szOEMString[MAX_OEM_STRING];    /* adapter info from Hardware section */
 | 
|---|
| 290 |         CHAR        szDACString[MAX_DAC_STRING];    /* DAC info from Hardware section */
 | 
|---|
| 291 |         CHAR        szRevision[MAX_VERSION];        /* whatever the revision  means   */
 | 
|---|
| 292 |         ULONG       ulTotalMemory;
 | 
|---|
| 293 |         ULONG       ulMMIOBaseAddress;
 | 
|---|
| 294 |         ULONG       ulPIOBaseAddress;
 | 
|---|
| 295 |         BYTE        bBusType;
 | 
|---|
| 296 |         BYTE        bEndian;
 | 
|---|
| 297 |         USHORT      usDeviceBusID;       /* has to be 2 bytes */
 | 
|---|
| 298 |         USHORT      usVendorBusID;       /* has to be 2 bytes */
 | 
|---|
| 299 |         USHORT      SlotID;              /* has to be 2 bytes */
 | 
|---|
| 300 | } ADAPTERINFO, FAR *PADAPTERINFO;
 | 
|---|
| 301 | 
 | 
|---|
| 302 | /*
 | 
|---|
| 303 |  * Adapter Instance definition. The structure will be passed in every
 | 
|---|
| 304 |  * PMIREQUEST call.
 | 
|---|
| 305 |  */
 | 
|---|
| 306 | typedef struct _VIDEO_ADAPTER { /* va */
 | 
|---|
| 307 |      HVIDEO          hvideo;
 | 
|---|
| 308 | 
 | 
|---|
| 309 |      /*
 | 
|---|
| 310 |      ** The assumption is that all of the base video components
 | 
|---|
| 311 |      ** are built together and shipped in unison (any driver including
 | 
|---|
| 312 |      ** svgadefs.h and using the VIDEOPMI interface as well).
 | 
|---|
| 313 |      **
 | 
|---|
| 314 |      ** @V3.0TSU00
 | 
|---|
| 315 |      ** All the callers to videopmi have to fill cbAdapterInfo and
 | 
|---|
| 316 |      ** and cbVideoModeInfo with sizeof (ADAPTERINFO) and
 | 
|---|
| 317 |      ** sizeof (VIDEOMODEINFO), respectively. It is for version control.
 | 
|---|
| 318 |      ** All the DLLs called by videopmi have to access the ModeInfo field
 | 
|---|
| 319 |      ** in VIDEO_ADAPTER by the offset of ModeInfo.
 | 
|---|
| 320 |      ** For example, instead of pAdapter->ModeInfo.bBitsPerPixel,
 | 
|---|
| 321 |      ** it should be
 | 
|---|
| 322 |      **    ((PVIDEOMODEINFO)&((PBYTE)&(pAdapter->Adapter) + pAdapter->AdapterInfo_cb))->
 | 
|---|
| 323 |      **                                              bBitsPerPixel.
 | 
|---|
| 324 |      */
 | 
|---|
| 325 | 
 | 
|---|
| 326 | //
 | 
|---|
| 327 | //    Goes back to the old structure of OS/2 Warp 3.0.
 | 
|---|
| 328 | //
 | 
|---|
| 329 | //     USHORT      AdapterInfo_cb;       @V3.2TSU02
 | 
|---|
| 330 | //     USHORT      VideoModeInfo_cb;     @V3.2TSU02
 | 
|---|
| 331 | 
 | 
|---|
| 332 |      ADAPTERINFO     Adapter;
 | 
|---|
| 333 |      VIDEOMODEINFO   ModeInfo;
 | 
|---|
| 334 | } VIDEO_ADAPTER, FAR *PVIDEO_ADAPTER;
 | 
|---|
| 335 | 
 | 
|---|
| 336 | /*
 | 
|---|
| 337 |  * prototype for import functions in PMI file
 | 
|---|
| 338 |  */
 | 
|---|
| 339 | typedef ULONG   *PREGS;     //pointer to registers. Passed to imported PMI functions.
 | 
|---|
| 340 | typedef APIRET (EXPENTRY FNIMPORTPMI)(PVIDEO_ADAPTER, PREGS);
 | 
|---|
| 341 | typedef FNIMPORTPMI *PFNIMPORTPMI;
 | 
|---|
| 342 | 
 | 
|---|
| 343 | #ifdef INCL_16
 | 
|---|
| 344 |    #define VIDEOAPI FAR     //this controls the calling convention.
 | 
|---|
| 345 | #else                           // 32-bit code
 | 
|---|
| 346 |    #define VIDEOAPI EXPENTRY       //C calling convention
 | 
|---|
| 347 | #endif
 | 
|---|
| 348 | 
 | 
|---|
| 349 | /*
 | 
|---|
| 350 | ** prototype for META PMI imports   @V3.2SEN01
 | 
|---|
| 351 | */
 | 
|---|
| 352 | typedef APIRET (VIDEOAPI FNPMIREQ)(PVIDEO_ADAPTER, PVOID, PVOID);
 | 
|---|
| 353 | typedef FNPMIREQ *PFNPMIREQ;
 | 
|---|
| 354 | 
 | 
|---|
| 355 | typedef struct _PMIREQUEST {
 | 
|---|
| 356 |         PFNPMIREQ       pfnPMIRequest;
 | 
|---|
| 357 |         ULONG           ulRing2Call;
 | 
|---|
| 358 | } PMIREQUEST;
 | 
|---|
| 359 | typedef PMIREQUEST *PPMIREQUEST;
 | 
|---|
| 360 | 
 | 
|---|
| 361 | #define METAPMI_LOADADAPTER "LoadAdapter"
 | 
|---|
| 362 | 
 | 
|---|
| 363 | typedef APIRET (EXPENTRY FNIMPORTLOADPMI)(CHAR *,PPMIREQUEST);
 | 
|---|
| 364 | typedef FNIMPORTLOADPMI *PFNIMPORTLOADPMI;
 | 
|---|
| 365 | 
 | 
|---|
| 366 | /*
 | 
|---|
| 367 | ** prototype for VIDEOPMI request functions
 | 
|---|
| 368 | */
 | 
|---|
| 369 | typedef APIRET (VIDEOAPI FNVIDEOPMIREQUEST)(PVIDEO_ADAPTER, ULONG, PVOID, PVOID);
 | 
|---|
| 370 | 
 | 
|---|
| 371 | typedef FNVIDEOPMIREQUEST     *PFNVIDEOPMIREQUEST;
 | 
|---|
| 372 |                                          /* used to exchange data with vvid */
 | 
|---|
| 373 | typedef struct _VDDDATA {    /* vdd */
 | 
|---|
| 374 |         PFNVIDEOPMIREQUEST       npfnEntryPointAddress;
 | 
|---|
| 375 |         HVIDEO                   hvideo;
 | 
|---|
| 376 | } VDDDATA;
 | 
|---|
| 377 | typedef VDDDATA *PVDDATA;
 | 
|---|
| 378 | /* INC */
 | 
|---|
| 379 | /*
 | 
|---|
| 380 | ** Save Restore constants
 | 
|---|
| 381 | */
 | 
|---|
| 382 | 
 | 
|---|
| 383 | #define STATEFLAG_REGISTERS     0x0001  /*                                  */
 | 
|---|
| 384 | #define STATEFLAG_CLUT          0x0002  /*                                  */
 | 
|---|
| 385 | #define STATEFLAG_VRAM          0x0004  /*                                  */
 | 
|---|
| 386 | #define STATEFLAG_FONT          0x0008  /*                                  */
 | 
|---|
| 387 | 
 | 
|---|
| 388 | /* NOINC */
 | 
|---|
| 389 | typedef struct _VIDEOSTATE { /* vst */
 | 
|---|
| 390 |         ULONG     fStateFlags;          /*                                  */
 | 
|---|
| 391 |         MODEID    miState;              /*                                  */
 | 
|---|
| 392 |         PVOID     pModeData;            /*                                  */
 | 
|---|
| 393 |         ULONG     ulVRAMSaveSize;       /* No of bytes/page to save         */
 | 
|---|
| 394 |         PVRAMDATA pVRAM;                /*                                  */
 | 
|---|
| 395 |         PCLUTDATA pCLUT;                /*                                  */
 | 
|---|
| 396 |         PFONTDATA pFont;                /*                                  */
 | 
|---|
| 397 | } VIDEOSTATE;
 | 
|---|
| 398 | typedef VIDEOSTATE FAR *PVIDEOSTATE;
 | 
|---|
| 399 | /* INC */
 | 
|---|
| 400 | 
 | 
|---|
| 401 | /*
 | 
|---|
| 402 | ** Function request parameters supported.
 | 
|---|
| 403 | */
 | 
|---|
| 404 | 
 | 
|---|
| 405 | #define PMIREQUEST_SETMODE                 0
 | 
|---|
| 406 | #define PMIREQUEST_LOCKREGISTERS           1
 | 
|---|
| 407 | #define PMIREQUEST_UNLOCKREGISTERS         2
 | 
|---|
| 408 | #define PMIREQUEST_CLEANUP                 3
 | 
|---|
| 409 | #define PMIREQUEST_SAVESTATE               4
 | 
|---|
| 410 | #define PMIREQUEST_RESTORESTATE            5
 | 
|---|
| 411 | #define PMIREQUEST_GETBANK                 6
 | 
|---|
| 412 | #define PMIREQUEST_SETBANK                 7
 | 
|---|
| 413 | #define PMIREQUEST_GETCLUT                 8
 | 
|---|
| 414 | #define PMIREQUEST_SETCLUT                 9
 | 
|---|
| 415 | #define PMIREQUEST_GETPALETTE             10
 | 
|---|
| 416 | #define PMIREQUEST_SETPALETTE             11
 | 
|---|
| 417 | #define PMIREQUEST_GETFONT                12
 | 
|---|
| 418 | #define PMIREQUEST_SETFONT                13
 | 
|---|
| 419 | #define PMIREQUEST_TUNEDISPLAY            14        /* @V2.2TSU00 */
 | 
|---|
| 420 | #define PMIREQUEST_QUERYMAXMODEENTRIES    15
 | 
|---|
| 421 | #define PMIREQUEST_QUERYMAXMODELISTSIZE   16
 | 
|---|
| 422 | #define PMIREQUEST_QUERYMODEINFODATA      17
 | 
|---|
| 423 | #define PMIREQUEST_QUERYMAXTRAPENTRIES    18
 | 
|---|
| 424 | #define PMIREQUEST_QUERYTRAPLISTDATA      19
 | 
|---|
| 425 | #define PMIREQUEST_QUERYMODEHRDWRLIST     20        /* @V2.2TSU00 */
 | 
|---|
| 426 | #define PMIREQUEST_LOADPMIFILE            21
 | 
|---|
| 427 | #define PMIREQUEST_IDENTIFYADAPTER        22
 | 
|---|
| 428 | #define PMIREQUEST_SOFTWAREINT            23             /* @V3.2SEN01 */
 | 
|---|
| 429 | #define PMIREQUEST_INT10         PMIREQUEST_SOFTWAREINT
 | 
|---|
| 430 | #define PMIREQUEST_UNLOADPMIFILE          24
 | 
|---|
| 431 | #define PMIREQUEST_SETMEMORYIOADDRESS     25            /* @V3.2TSU00 */
 | 
|---|
| 432 | 
 | 
|---|
| 433 | #define PMIREQUEST_MAX (PMIREQUEST_SETMEMORYIOADDRESS + 1) /* last entry + 1 */
 | 
|---|
| 434 | 
 | 
|---|
| 435 | /* NOINC */
 | 
|---|
| 436 | 
 | 
|---|
| 437 | /*
 | 
|---|
| 438 |  * define PMIDEF_INCL to include the following definitions.
 | 
|---|
| 439 |  */
 | 
|---|
| 440 | #ifdef PMIDEF_INCL
 | 
|---|
| 441 | 
 | 
|---|
| 442 | /* @V2.2TSU00
 | 
|---|
| 443 | ** Possible flags in ModeAtrributes field in PMI file
 | 
|---|
| 444 | ** the flags will be saved in ModeInfo.ulType
 | 
|---|
| 445 | */
 | 
|---|
| 446 | #define  PMI_MODE_COLOUR          0x08        /* Bit 3 - 0 = mono, 1 = colour */
 | 
|---|
| 447 | #define  PMI_MODE_GRAPHICS        0x10      /* Bit 4 - 0 = text, 1 = graphics */
 | 
|---|
| 448 | #define  PMI_MODE_VGA_ENTRY       0x20/* vga entry, need clean up in set mode */
 | 
|---|
| 449 | #define  PMI_MODE_IGNORE_CLR_BRST 0x40 /* won't work on B/W mode              */
 | 
|---|
| 450 | #define  PMI_MODE_LINEAR_APERTURE 0x80 /* linear aperture mode */
 | 
|---|
| 451 | 
 | 
|---|
| 452 | /*
 | 
|---|
| 453 |  * PMI commands
 | 
|---|
| 454 |  */
 | 
|---|
| 455 | #define PMICMD_NONE             0xFF            //reserved
 | 
|---|
| 456 | #define PMICMD_INB              0
 | 
|---|
| 457 | #define PMICMD_OUTB             1
 | 
|---|
| 458 | #define PMICMD_INW              2
 | 
|---|
| 459 | #define PMICMD_OUTW             3
 | 
|---|
| 460 | #define PMICMD_INDW             4
 | 
|---|
| 461 | #define PMICMD_OUTDW            5
 | 
|---|
| 462 | #define PMICMD_BINB             6
 | 
|---|
| 463 | #define PMICMD_BOUTB            7
 | 
|---|
| 464 | #define PMICMD_ABOUTW           8
 | 
|---|
| 465 | #define PMICMD_ABOUTDW          9
 | 
|---|
| 466 | #define PMICMD_RMWBN           10
 | 
|---|
| 467 | #define PMICMD_RMWBI           11
 | 
|---|
| 468 | #define PMICMD_RMWWN           12
 | 
|---|
| 469 | #define PMICMD_REGOP           13
 | 
|---|
| 470 | #define PMICMD_ASSIGN          14
 | 
|---|
| 471 | /***************** for backward compatibility ***************/
 | 
|---|
| 472 | #define PMICMD_WAIT            15
 | 
|---|
| 473 | #define PMI_WAIT_CLEAR          0       /* Wait for CLEAR condition         */
 | 
|---|
| 474 | /***************** for backward compatibility ***************/
 | 
|---|
| 475 | #define PMICMD_WAITB           16
 | 
|---|
| 476 | #define PMICMD_WAITW           17
 | 
|---|
| 477 | #define PMICMD_WAITDW          18
 | 
|---|
| 478 | #define PMICMD_READB           19               /* @V2.2TSU00          */
 | 
|---|
| 479 | #define PMICMD_READW           20               /* Don't rearrange the */
 | 
|---|
| 480 | #define PMICMD_READDW          21               /* order or put        */
 | 
|---|
| 481 | #define PMICMD_WRITEB          22               /* anything in between */
 | 
|---|
| 482 | #define PMICMD_WRITEW          23               /* for these MMIO      */
 | 
|---|
| 483 | #define PMICMD_WRITEDW         24               /* commands            */
 | 
|---|
| 484 | #define PMICMD_ROUTINE         25               /* @V2.2TSU01          */
 | 
|---|
| 485 | #define PMICMD_LABEL           26
 | 
|---|
| 486 | #define PMICMD_WHILE           27
 | 
|---|
| 487 | #define PMICMD_ENDWHILE        28
 | 
|---|
| 488 | #define PMICMD_IF              29
 | 
|---|
| 489 | #define PMICMD_GOTO            30
 | 
|---|
| 490 | #define PMICMD_STRCMP          31
 | 
|---|
| 491 | #define PMICMD_MEMCMP          32
 | 
|---|
| 492 | #define PMICMD_CALL            33
 | 
|---|
| 493 | #define PMICMD_MAX             PMICMD_CALL  /* equals last entry   */
 | 
|---|
| 494 | 
 | 
|---|
| 495 | 
 | 
|---|
| 496 | #define PMI_REGOP_ASSIGN          0     /* Rxxx  = <value>                  */
 | 
|---|
| 497 | #define PMI_REGOP_AND             1     /* Rxxx &= <value>                  */
 | 
|---|
| 498 | #define PMI_REGOP_OR              2     /* Rxxx |= <value>                  */
 | 
|---|
| 499 | #define PMI_REGOP_XOR             3     /* Rxxx ^= <value>                  */
 | 
|---|
| 500 | #define PMI_REGOP_PLUS            4     /* Rxxx += <value>                  */
 | 
|---|
| 501 | #define PMI_REGOP_MINUS           5     /* Rxxx -= <value>                  */
 | 
|---|
| 502 | #define PMI_REGOP_SHL             6     /* Rxxx <= <value>                  */
 | 
|---|
| 503 | #define PMI_REGOP_SHR             7     /* Rxxx >= <value>                  */
 | 
|---|
| 504 | #define PMI_REGOP_LESS            8     /* Rxx < Rxyy                       */
 | 
|---|
| 505 | #define PMI_REGOP_LESS_EQUALS     9     /* Rxx <= Ryy                       */
 | 
|---|
| 506 | #define PMI_REGOP_GREATER         10    /* Rxx > Rxyy                       */
 | 
|---|
| 507 | #define PMI_REGOP_GREATER_EQUALS  11    /* Rxx >= Ryy                       */
 | 
|---|
| 508 | #define PMI_REGOP_EQUALS          12    /* Rxx == Ryy                       */
 | 
|---|
| 509 | #define PMI_REGOP_NOT_EQUALS      13    /* Rxx != Ryy                       */
 | 
|---|
| 510 | #define PMI_REGOP_MAX  PMI_REGOP_NOT_EQUALS /* must equal last entry        */
 | 
|---|
| 511 | 
 | 
|---|
| 512 | /*
 | 
|---|
| 513 | **      Type Definitions
 | 
|---|
| 514 | **
 | 
|---|
| 515 | **      Tokens are grouped, and must be kept that way.
 | 
|---|
| 516 | **      There are dummy tokens, place holders, TOK_??_BEGIN and TOK_??_END
 | 
|---|
| 517 | **      to make tests and expansion easier. Just be sure to keep token
 | 
|---|
| 518 | **      info for a given section, within these bounds.
 | 
|---|
| 519 | */
 | 
|---|
| 520 | 
 | 
|---|
| 521 | typedef enum _PMITOKEN {        /* pt */
 | 
|---|
| 522 |      TOK_SECT_BEGIN,
 | 
|---|
| 523 | /***************** for backward compatibility ***************/
 | 
|---|
| 524 |      TOK_ADAPTERTYPE,           /* Section Heading tokens */
 | 
|---|
| 525 |      TOK_CHIPSET,
 | 
|---|
| 526 | /***************** for backward compatibility ***************/
 | 
|---|
| 527 |      TOK_PMIVERSION,           /* Section Heading tokens */
 | 
|---|
| 528 |      TOK_COMMENT,
 | 
|---|
| 529 |      TOK_MODEINFO,
 | 
|---|
| 530 |      TOK_SETMODE,
 | 
|---|
| 531 |      TOK_MONITORMODEINFO,
 | 
|---|
| 532 |      TOK_TRAPREGS,
 | 
|---|
| 533 |      TOK_UNLOCK,
 | 
|---|
| 534 |      TOK_LOCK,
 | 
|---|
| 535 |      TOK_CLEANUP,
 | 
|---|
| 536 |      TOK_SETBANK,
 | 
|---|
| 537 |      TOK_GETBANK,
 | 
|---|
| 538 |      TOK_DECLARATIONS,
 | 
|---|
| 539 |      TOK_COPYVRAM,
 | 
|---|
| 540 |      TOK_TUNEDISPLAY,
 | 
|---|
| 541 |      TOK_SETMEMORYIOADDRESS,             // @V3.2TSU00
 | 
|---|
| 542 |      TOK_HARDWARE,
 | 
|---|
| 543 |      TOK_IDENTIFYADAPTER,
 | 
|---|
| 544 |      TOK_ISENGINEBUSY,
 | 
|---|
| 545 |      TOK_ENABLECONTROLLER,
 | 
|---|
| 546 |      TOK_DISABLECONTROLLER,
 | 
|---|
| 547 |      TOK_SETMONITORTIMINGS,
 | 
|---|
| 548 |      TOK_ROUTINE_DECLR,             /* @V2.2TSU01 */
 | 
|---|
| 549 |      TOK_INCLUDE,                   /* text include */
 | 
|---|
| 550 |      TOK_INCLUDECODE,               /* DLL include  */
 | 
|---|
| 551 |      TOK_SECT_END,
 | 
|---|
| 552 | 
 | 
|---|
| 553 |      TOK_MI_BEGIN,
 | 
|---|
| 554 |      TOK_MODEATTRIBUTES,        /* ModeInfo Section tokens */
 | 
|---|
| 555 |      TOK_INT10MODESET,          /* @V2.2TSU00 int 10 mode */
 | 
|---|
| 556 |      TOK_BYTESPERSCANLINE,
 | 
|---|
| 557 |      TOK_TEXTROWS,              /* [ModeInfo] and [Hardware] tokens       */
 | 
|---|
| 558 |      TOK_XRESOLUTION,           /* are PMI keyvariables. Do remember      */
 | 
|---|
| 559 |      TOK_YRESOLUTION,           /* update the PMIKeyVarTable[] and        */
 | 
|---|
| 560 |      TOK_XCHARSIZE,             /* PMI Keyvariable defines in header file */
 | 
|---|
| 561 |      TOK_YCHARSIZE,
 | 
|---|
| 562 |      TOK_BITSPERPIXEL,
 | 
|---|
| 563 |      TOK_NUMBEROFPLANES,
 | 
|---|
| 564 |      TOK_PAGELENGTH,
 | 
|---|
| 565 |      TOK_SAVESIZE,
 | 
|---|
| 566 |      TOK_BUFFERADDRESS,
 | 
|---|
| 567 |      TOK_APERTURESIZE,
 | 
|---|
| 568 |      TOK_COLORFORMAT,
 | 
|---|
| 569 |      TOK_COLORWEIGHT,
 | 
|---|
| 570 |      TOK_VERTICALREFRESH,
 | 
|---|
| 571 |      TOK_HORIZONTALREFRESH,
 | 
|---|
| 572 |      TOK_VPOLARITYPOSITIVE,
 | 
|---|
| 573 |      TOK_HPOLARITYPOSITIVE,
 | 
|---|
| 574 |      TOK_SCREENLEFTEDGE,
 | 
|---|
| 575 |      TOK_SCREENRIGHTEDGE,
 | 
|---|
| 576 |      TOK_SCREENTOPEDGE,
 | 
|---|
| 577 |      TOK_SCREENBOTTOMEDGE,
 | 
|---|
| 578 |      TOK_COLORS,        /* @V3.2SEN01 number of colors field added */
 | 
|---|
| 579 | /***************** for backward compatibility ***************/
 | 
|---|
| 580 |      TOK_INTERLACEMODE,
 | 
|---|
| 581 | /***************** for backward compatibility ***************/
 | 
|---|
| 582 |      TOK_MI_END,
 | 
|---|
| 583 | 
 | 
|---|
| 584 |      TOK_HARDWARE_BEGIN,      /* @V2.2TSU00 Hardware Section */
 | 
|---|
| 585 |      TOK_BUSTYPE,
 | 
|---|
| 586 |      TOK_OEMSTRING,
 | 
|---|
| 587 |      TOK_DACSTRING,
 | 
|---|
| 588 |      TOK_VERSION,
 | 
|---|
| 589 |      TOK_TOTALMEMORY,
 | 
|---|
| 590 |      TOK_MEMORYIOADDRESS,
 | 
|---|
| 591 |      TOK_PORTIOADDRESS,
 | 
|---|
| 592 |      TOK_ENDIAN,
 | 
|---|
| 593 |      TOK_INT10SETMODE,                   /* @V3.1TSU00  */
 | 
|---|
| 594 |      TOK_HARDWARE_END,
 | 
|---|
| 595 | 
 | 
|---|
| 596 |      TOK_TRAP_BEGIN,
 | 
|---|
| 597 |      TOK_BYTE_IOPORT,             /* @V2.2TSU00, trap registers type */
 | 
|---|
| 598 |      TOK_WORD_IOPORT,
 | 
|---|
| 599 |      TOK_DWORD_IOPORT,
 | 
|---|
| 600 |      TOK_BYTE_MMIOPORT,
 | 
|---|
| 601 |      TOK_WORD_MMIOPORT,
 | 
|---|
| 602 |      TOK_DWORD_MMIOPORT,
 | 
|---|
| 603 |      TOK_RESET,
 | 
|---|
| 604 |      TOK_INDEX,
 | 
|---|
| 605 |      TOK_INDEXMASK,
 | 
|---|
| 606 |      TOK_DATAMASK,
 | 
|---|
| 607 |      TOK_ACCEL,
 | 
|---|
| 608 |      TOK_RO,
 | 
|---|
| 609 |      TOK_WO,
 | 
|---|
| 610 |      TOK_RW,
 | 
|---|
| 611 |      TOK_TRAP_END,
 | 
|---|
| 612 | 
 | 
|---|
| 613 |      TOK_SM_BEGIN,
 | 
|---|
| 614 |      TOK_INB,                /* Command Section tokens */
 | 
|---|
| 615 |      TOK_OUTB,
 | 
|---|
| 616 |      TOK_INW,
 | 
|---|
| 617 |      TOK_INDW,
 | 
|---|
| 618 |      TOK_OUTW,
 | 
|---|
| 619 |      TOK_OUTDW,
 | 
|---|
| 620 |      TOK_BINB,
 | 
|---|
| 621 |      TOK_BOUTB,
 | 
|---|
| 622 |      TOK_RMWBI,
 | 
|---|
| 623 |      TOK_RMWBN,
 | 
|---|
| 624 |      TOK_RMWWN,
 | 
|---|
| 625 |      TOK_ABOUTW,
 | 
|---|
| 626 |      TOK_ABOUTDW,
 | 
|---|
| 627 |      TOK_IF,
 | 
|---|
| 628 |      TOK_GOTO,
 | 
|---|
| 629 |      TOK_VARIABLE,
 | 
|---|
| 630 |      TOK_WHILE,
 | 
|---|
| 631 |      TOK_ENDWHILE,
 | 
|---|
| 632 |      TOK_MEMCMP,
 | 
|---|
| 633 |      TOK_STRCMP,
 | 
|---|
| 634 |      TOK_READB,         /* @V2.2TSU00          */
 | 
|---|
| 635 |      TOK_READW,         /* Don't rearrange the */
 | 
|---|
| 636 |      TOK_READDW,        /* order or put        */
 | 
|---|
| 637 |      TOK_WRITEB,        /* anything in between */
 | 
|---|
| 638 |      TOK_WRITEW,        /* for these MMIO      */
 | 
|---|
| 639 |      TOK_WRITEDW,       /* commands            */
 | 
|---|
| 640 |      TOK_CALL,
 | 
|---|
| 641 |      TOK_ROUTINE,
 | 
|---|
| 642 | /***************** for backward compatibility ***************/
 | 
|---|
| 643 |      TOK_WAIT,
 | 
|---|
| 644 | /***************** for backward compatibility ***************/
 | 
|---|
| 645 |      TOK_WAITB,
 | 
|---|
| 646 |      TOK_WAITW,
 | 
|---|
| 647 |      TOK_WAITDW,
 | 
|---|
| 648 |      TOK_VALUE,
 | 
|---|
| 649 |      TOK_PMIREG,
 | 
|---|
| 650 |      TOK_LPAREN,
 | 
|---|
| 651 |      TOK_RPAREN,
 | 
|---|
| 652 |      TOK_LBRACE,
 | 
|---|
| 653 |      TOK_RBRACE,
 | 
|---|
| 654 |      TOK_EQUALS,
 | 
|---|
| 655 |      TOK_NOTEQUALS,
 | 
|---|
| 656 |      TOK_SEMICOLON,
 | 
|---|
| 657 |      TOK_COMMA,
 | 
|---|
| 658 |      TOK_COLON,
 | 
|---|
| 659 |      TOK_MINUS,
 | 
|---|
| 660 |      TOK_HYPHEN = TOK_MINUS,
 | 
|---|
| 661 |      TOK_NEGATE,         /* @V2.2TSU01 */
 | 
|---|
| 662 |      TOK_DOUBLEQUOTE,
 | 
|---|
| 663 |      TOK_PLUS,
 | 
|---|
| 664 |      TOK_REGOP_AND,
 | 
|---|
| 665 |      TOK_REGOP_OR,
 | 
|---|
| 666 |      TOK_REGOP_XOR,
 | 
|---|
| 667 |      TOK_REGOP_SHL,
 | 
|---|
| 668 |      TOK_LESS = TOK_REGOP_SHL,  /* @V2.2TSU01 */
 | 
|---|
| 669 |      TOK_REGOP_SHR,
 | 
|---|
| 670 |      TOK_SM_END,
 | 
|---|
| 671 | 
 | 
|---|
| 672 |      TOK_EOF,
 | 
|---|
| 673 |      TOK_IOPORT,
 | 
|---|
| 674 |      TOK_MMIO,
 | 
|---|
| 675 |      TOK_PIO,
 | 
|---|
| 676 |      TOK_ISA,
 | 
|---|
| 677 |      TOK_VLB,
 | 
|---|
| 678 |      TOK_PCI,
 | 
|---|
| 679 |      TOK_EISA,
 | 
|---|
| 680 |      TOK_PCMCIA,
 | 
|---|
| 681 |      TOK_MCA,
 | 
|---|
| 682 |      TOK_BIG_ENDIAN,
 | 
|---|
| 683 |      TOK_LITTLE_ENDIAN,
 | 
|---|
| 684 |      TOK_QUOTEDSTRING,
 | 
|---|
| 685 |      TOK_MMIO_REG_NAME,
 | 
|---|
| 686 |      TOK_IOPORT_NAME,
 | 
|---|
| 687 |      TOK_PMI_KEYVAR,
 | 
|---|
| 688 |      TOK_SHADOWVRAM,
 | 
|---|
| 689 |      TOK_MINIVDM,                /* @V3.1TSU00  */
 | 
|---|
| 690 |      TOK_FULLVDM,                /* @V3.1TSU00  */
 | 
|---|
| 691 |      TOK_ERROR,                /* error */
 | 
|---|
| 692 |      TOK_PASS
 | 
|---|
| 693 | } PMITOKEN;
 | 
|---|
| 694 | 
 | 
|---|
| 695 | typedef struct _TOK { /* tok */
 | 
|---|
| 696 |   CHAR *tok_txt;
 | 
|---|
| 697 |   PMITOKEN tok_val;
 | 
|---|
| 698 | } TOK;
 | 
|---|
| 699 | 
 | 
|---|
| 700 | /*
 | 
|---|
| 701 |  * definitions of bus types.
 | 
|---|
| 702 |  */
 | 
|---|
| 703 | #define ISA_BUS    0           /* @V2.2SENJA */
 | 
|---|
| 704 | #define VLB_BUS    1
 | 
|---|
| 705 | #define PCI_BUS    2
 | 
|---|
| 706 | #define EISA_BUS   3
 | 
|---|
| 707 | #define PCMCIA_BUS 4
 | 
|---|
| 708 | #define MCA_BUS    5
 | 
|---|
| 709 | #define BUS_MAX MCA_BUS
 | 
|---|
| 710 | 
 | 
|---|
| 711 | #endif /* PMIDEF_INCL */
 | 
|---|
| 712 | 
 | 
|---|
| 713 | /*
 | 
|---|
| 714 |  * PMI token declarations
 | 
|---|
| 715 |  * PMI_TOKEN_ARRAY should be defined to include the following array.
 | 
|---|
| 716 |  * In this way, this array will not be allocated for every C file.
 | 
|---|
| 717 |  */
 | 
|---|
| 718 | #ifdef PMI_TOKEN_ARRAY
 | 
|---|
| 719 | 
 | 
|---|
| 720 | TOK Tokens[] =
 | 
|---|
| 721 | {
 | 
|---|
| 722 | 
 | 
|---|
| 723 | /***************** for backward compatibility ***************/
 | 
|---|
| 724 |   "[ADAPTERTYPE]",      TOK_ADAPTERTYPE,
 | 
|---|
| 725 |   "[CHIPSET]",          TOK_CHIPSET,
 | 
|---|
| 726 | /***************** for backward compatibility ***************/
 | 
|---|
| 727 |   "[PMIVERSION]",       TOK_PMIVERSION,
 | 
|---|
| 728 |   "[COMMENT]",          TOK_COMMENT,
 | 
|---|
| 729 |   "[MODEINFO]",         TOK_MODEINFO,
 | 
|---|
| 730 |   "[SETMODE]",          TOK_SETMODE,
 | 
|---|
| 731 |   "[MONITORMODEINFO]",  TOK_MONITORMODEINFO,
 | 
|---|
| 732 |   "[TRAPREGS]",         TOK_TRAPREGS,
 | 
|---|
| 733 |   "[UNLOCK]",           TOK_UNLOCK,
 | 
|---|
| 734 |   "[LOCK]",             TOK_LOCK,
 | 
|---|
| 735 |   "[CLEANUP]",          TOK_CLEANUP,
 | 
|---|
| 736 |   "[SETBANK]",          TOK_SETBANK,
 | 
|---|
| 737 |   "[GETBANK]",          TOK_GETBANK,
 | 
|---|
| 738 |   "[DECLARATIONS]",     TOK_DECLARATIONS,
 | 
|---|
| 739 |   "[COPYVRAM]",         TOK_COPYVRAM,
 | 
|---|
| 740 |   "[TUNEDISPLAY]",      TOK_TUNEDISPLAY,
 | 
|---|
| 741 |   "[SETMEMORYIOADDRESS]",TOK_SETMEMORYIOADDRESS,  // @V3.2TSU00
 | 
|---|
| 742 |   "[HARDWARE]",         TOK_HARDWARE,
 | 
|---|
| 743 |   "[IDENTIFYADAPTER]",  TOK_IDENTIFYADAPTER,
 | 
|---|
| 744 |   "[ISENGINEBUSY]",     TOK_ISENGINEBUSY,
 | 
|---|
| 745 |   "[ENABLECONTROLLER]", TOK_ENABLECONTROLLER,
 | 
|---|
| 746 |   "[DISABLECONTROLLER]",TOK_DISABLECONTROLLER,
 | 
|---|
| 747 |   "[SETMONITORTIMINGS]",TOK_SETMONITORTIMINGS,
 | 
|---|
| 748 |   "INCLUDE",            TOK_INCLUDE,                   /* text include */
 | 
|---|
| 749 |   "INCLUDECODE",        TOK_INCLUDECODE,               /* DLL include  */
 | 
|---|
| 750 |   /*
 | 
|---|
| 751 |    * Hardware Section
 | 
|---|
| 752 |    */
 | 
|---|
| 753 |   "BUSTYPE",            TOK_BUSTYPE,
 | 
|---|
| 754 |   "OEMSTRING",          TOK_OEMSTRING,
 | 
|---|
| 755 |   "DACSTRING",          TOK_DACSTRING,
 | 
|---|
| 756 |   "VERSION",            TOK_VERSION,
 | 
|---|
| 757 |   "TOTALMEMORY",        TOK_TOTALMEMORY,
 | 
|---|
| 758 |   "MEMORYIOADDRESS",    TOK_MEMORYIOADDRESS,
 | 
|---|
| 759 |   "PORTIOADDRESS",      TOK_PORTIOADDRESS,
 | 
|---|
| 760 |   "ENDIAN",             TOK_ENDIAN,
 | 
|---|
| 761 |   "INT10SETMODE",       TOK_INT10SETMODE,    /* @V3.1TSU00  */
 | 
|---|
| 762 |   /*
 | 
|---|
| 763 |    * TrapRegs Section
 | 
|---|
| 764 |    */
 | 
|---|
| 765 |   "BYTE_IOPORT",        TOK_BYTE_IOPORT,
 | 
|---|
| 766 |   "WORD_IOPORT",        TOK_WORD_IOPORT,
 | 
|---|
| 767 |   "DWORD_IOPORT",       TOK_DWORD_IOPORT,
 | 
|---|
| 768 |   "BYTE_MMIOPORT",      TOK_BYTE_MMIOPORT,
 | 
|---|
| 769 |   "WORD_MMIOPORT",      TOK_WORD_MMIOPORT,
 | 
|---|
| 770 |   "DWORD_MMIOPORT",     TOK_DWORD_MMIOPORT,
 | 
|---|
| 771 |   "RESET",              TOK_RESET,
 | 
|---|
| 772 |   "INDEX",              TOK_INDEX,
 | 
|---|
| 773 |   "INDEXMASK",          TOK_INDEXMASK,
 | 
|---|
| 774 |   "DATAMASK",           TOK_DATAMASK,
 | 
|---|
| 775 |   "ACCEL",              TOK_ACCEL,
 | 
|---|
| 776 |   "RO",                 TOK_RO,
 | 
|---|
| 777 |   "WO",                 TOK_WO,
 | 
|---|
| 778 |   "RW",                 TOK_RW,
 | 
|---|
| 779 |   /*
 | 
|---|
| 780 |    * ModeInfo Section
 | 
|---|
| 781 |    */
 | 
|---|
| 782 |   "INT10MODESET",       TOK_INT10MODESET,
 | 
|---|
| 783 |   "MODEATTRIBUTES",     TOK_MODEATTRIBUTES,
 | 
|---|
| 784 |   "BYTESPERSCANLINE",   TOK_BYTESPERSCANLINE,
 | 
|---|
| 785 |   "TEXTROWS",           TOK_TEXTROWS,
 | 
|---|
| 786 |   "XRESOLUTION",        TOK_XRESOLUTION,
 | 
|---|
| 787 |   "YRESOLUTION",        TOK_YRESOLUTION,
 | 
|---|
| 788 |   "XCHARSIZE",          TOK_XCHARSIZE,
 | 
|---|
| 789 |   "YCHARSIZE",          TOK_YCHARSIZE,
 | 
|---|
| 790 |   "BITSPERPIXEL",       TOK_BITSPERPIXEL,
 | 
|---|
| 791 |   "NUMBEROFPLANES",     TOK_NUMBEROFPLANES,
 | 
|---|
| 792 |   "PAGELENGTH",         TOK_PAGELENGTH,
 | 
|---|
| 793 |   "SAVESIZE",           TOK_SAVESIZE,
 | 
|---|
| 794 |   "BUFFERADDRESS",      TOK_BUFFERADDRESS,
 | 
|---|
| 795 |   "APERTURESIZE",       TOK_APERTURESIZE,
 | 
|---|
| 796 |   "COLORFORMAT",        TOK_COLORFORMAT,
 | 
|---|
| 797 |   "COLORWEIGHT",        TOK_COLORWEIGHT,
 | 
|---|
| 798 | /***************** for backward compatibility ***************/
 | 
|---|
| 799 |   "INTERLACEMODE",      TOK_INTERLACEMODE,
 | 
|---|
| 800 | /***************** for backward compatibility ***************/
 | 
|---|
| 801 |   "VERTICALREFRESH",    TOK_VERTICALREFRESH,
 | 
|---|
| 802 |   "HORIZONTALREFRESH",  TOK_HORIZONTALREFRESH,
 | 
|---|
| 803 |   "VPOLARITYPOSITIVE",  TOK_VPOLARITYPOSITIVE,
 | 
|---|
| 804 |   "HPOLARITYPOSITIVE",  TOK_HPOLARITYPOSITIVE,
 | 
|---|
| 805 |   "SCREENLEFTEDGE",     TOK_SCREENLEFTEDGE,
 | 
|---|
| 806 |   "SCREENRIGHTEDGE",    TOK_SCREENRIGHTEDGE,
 | 
|---|
| 807 |   "SCREENTOPEDGE",      TOK_SCREENTOPEDGE,
 | 
|---|
| 808 |   "SCREENBOTTOMEDGE",   TOK_SCREENBOTTOMEDGE,
 | 
|---|
| 809 |   "COLORS",             TOK_COLORS,    /* @V3.2SEN01 */
 | 
|---|
| 810 |   /*
 | 
|---|
| 811 |    * PMI Commands
 | 
|---|
| 812 |    */
 | 
|---|
| 813 |   "INB",                TOK_INB,
 | 
|---|
| 814 |   "OUTB",               TOK_OUTB,
 | 
|---|
| 815 |   "INW",                TOK_INW,
 | 
|---|
| 816 |   "OUTW",               TOK_OUTW,
 | 
|---|
| 817 |   "INDW",               TOK_INDW,
 | 
|---|
| 818 |   "OUTDW",              TOK_OUTDW,
 | 
|---|
| 819 |   "BINB",               TOK_BINB,
 | 
|---|
| 820 |   "BOUTB",              TOK_BOUTB,
 | 
|---|
| 821 |   "RMWBI",              TOK_RMWBI,
 | 
|---|
| 822 |   "RMWBN",              TOK_RMWBN,
 | 
|---|
| 823 | /***************** for backward compatibility ***************/
 | 
|---|
| 824 |   "RMWB",               TOK_RMWBI,
 | 
|---|
| 825 |   "RMWW",               TOK_RMWBN,
 | 
|---|
| 826 | /***************** for backward compatibility ***************/
 | 
|---|
| 827 |   "RMWWN",               TOK_RMWWN,
 | 
|---|
| 828 |   "ABOUTW",             TOK_ABOUTW,
 | 
|---|
| 829 |   "ABOUTDW",            TOK_ABOUTDW,
 | 
|---|
| 830 |   "IF",                 TOK_IF,
 | 
|---|
| 831 |   "GOTO",               TOK_GOTO,
 | 
|---|
| 832 |   "WHILE",              TOK_WHILE,
 | 
|---|
| 833 |   "ENDWHILE",           TOK_ENDWHILE,
 | 
|---|
| 834 |   "MEMCMP",             TOK_MEMCMP,
 | 
|---|
| 835 |   "STRCMP",             TOK_STRCMP,
 | 
|---|
| 836 |   "READB",              TOK_READB,      /* @V2.2TSU00          */
 | 
|---|
| 837 |   "READW",              TOK_READW,      /* Don't rearrange the */
 | 
|---|
| 838 |   "READDW",             TOK_READDW,     /* order or put        */
 | 
|---|
| 839 |   "WRITEB",             TOK_WRITEB,     /* anything in between */
 | 
|---|
| 840 |   "WRITEW",             TOK_WRITEW,     /* for these MMIO      */
 | 
|---|
| 841 |   "WRITEDW",            TOK_WRITEDW,    /* commands            */
 | 
|---|
| 842 |   "CALL",               TOK_CALL,
 | 
|---|
| 843 | /***************** for backward compatibility ***************/
 | 
|---|
| 844 |   "WAIT",               TOK_WAIT,
 | 
|---|
| 845 | /***************** for backward compatibility ***************/
 | 
|---|
| 846 |   "WAITB",              TOK_WAITB,
 | 
|---|
| 847 |   "WAITW",              TOK_WAITW,
 | 
|---|
| 848 |   "WAITDW",             TOK_WAITDW,
 | 
|---|
| 849 |   /*
 | 
|---|
| 850 |    * others
 | 
|---|
| 851 |    */
 | 
|---|
| 852 |   "MMIO",               TOK_MMIO,    /* used in [Declarations]  */
 | 
|---|
| 853 | /***************** for backward compatibility ***************/
 | 
|---|
| 854 |   "P",                  TOK_MMIO,    /* used in [Declarations]  */
 | 
|---|
| 855 | /***************** for backward compatibility ***************/
 | 
|---|
| 856 |   "PIO",                TOK_PIO,     /*                         */
 | 
|---|
| 857 |   "ISA",                TOK_ISA,
 | 
|---|
| 858 |   "VLB",                TOK_VLB,
 | 
|---|
| 859 |   "PCI",                TOK_PCI,
 | 
|---|
| 860 |   "EISA",               TOK_EISA,
 | 
|---|
| 861 |   "PCMCIA",             TOK_PCMCIA,
 | 
|---|
| 862 |   "MCA",                TOK_MCA,
 | 
|---|
| 863 |   "SHADOWVRAM",         TOK_SHADOWVRAM,
 | 
|---|
| 864 |   "BIG",                TOK_BIG_ENDIAN,
 | 
|---|
| 865 |   "LITTLE",             TOK_LITTLE_ENDIAN,
 | 
|---|
| 866 |   "MINIVDM",            TOK_MINIVDM,         /* @V3.1TSU00  */
 | 
|---|
| 867 |   "FULLVDM",            TOK_FULLVDM          /* @V3.1TSU00  */
 | 
|---|
| 868 | 
 | 
|---|
| 869 | } ;
 | 
|---|
| 870 | 
 | 
|---|
| 871 | extern TOK Tokens[];
 | 
|---|
| 872 | 
 | 
|---|
| 873 | #endif  /* PMI_TOKEN_ARRAY */
 | 
|---|
| 874 | 
 | 
|---|
| 875 | /*
 | 
|---|
| 876 | ** PMI subsystem errors
 | 
|---|
| 877 | */
 | 
|---|
| 878 | #define ERROR_ADAPTER_NOT_SUPPORTED          ERROR_USER_DEFINED_BASE+0x10
 | 
|---|
| 879 | #define ERROR_REFRESH_NOT_SUPPORTED          ERROR_USER_DEFINED_BASE+0x11
 | 
|---|
| 880 | #define ERROR_MODE_NOT_SUPPORTED             ERROR_USER_DEFINED_BASE+0x12
 | 
|---|
| 881 | #define ERROR_REQ_SECTION_UNDEFINED          ERROR_USER_DEFINED_BASE+0x13
 | 
|---|
| 882 | #define ERROR_PMI_FILE_SYNTAX                ERROR_USER_DEFINED_BASE+0x14
 | 
|---|
| 883 | #define ERROR_NO_MONITOR_SUPPORT             ERROR_USER_DEFINED_BASE+0x15
 | 
|---|
| 884 | #define ERROR_INVALID_CONFIGURATION          ERROR_USER_DEFINED_BASE+0x16
 | 
|---|
| 885 | /* @V3.2SEN01 start */
 | 
|---|
| 886 | #define ERROR_INADEQUATE_VDM_SUPPORT       ERROR_USER_DEFINED_BASE+0x17
 | 
|---|
| 887 | #define ERROR_VDM_CREATION_NOT_SHELLPROCESS    ERROR_USER_DEFINED_BASE+0x18
 | 
|---|
| 888 | #define ERROR_MINIVDM_PROCESSSUPPORTONLY   ERROR_USER_DEFINED_BASE+0x19
 | 
|---|
| 889 | #define ERROR_INVALID_ADAPTER_EXTENSION      ERROR_USER_DEFINED_BASE+0x20
 | 
|---|
| 890 | #define ERROR_ADAPTER_STILL_IN_USE           ERROR_USER_DEFINED_BASE+0x21
 | 
|---|
| 891 | #define ERROR_UPLEVEL_VIDEOPMI               ERROR_USER_DEFINED_BASE+0x22  //structure change for cb and ulcolors
 | 
|---|
| 892 | /* @V3.2SEN01 end */
 | 
|---|
| 893 | 
 | 
|---|
| 894 | /* INC */
 | 
|---|
| 895 | 
 | 
|---|