home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v5.zip / DDKX86 / SRC / VDH / VDHDATA.H < prev    next >
C/C++ Source or Header  |  1995-04-14  |  77KB  |  1,719 lines

  1. /*DDK*************************************************************************/
  2. /*                                                                           */
  3. /* COPYRIGHT (C) Microsoft Corporation, 1989                                 */
  4. /* COPYRIGHT    Copyright (C) 1995 IBM Corporation                           */
  5. /*                                                                           */
  6. /*    The following IBM OS/2 WARP source code is provided to you solely for  */
  7. /*    the purpose of assisting you in your development of OS/2 WARP device   */
  8. /*    drivers. You may use this code in accordance with the IBM License      */
  9. /*    Agreement provided in the IBM Device Driver Source Kit for OS/2. This  */
  10. /*    Copyright statement may not be removed.                                */
  11. /*                                                                           */
  12. /*****************************************************************************/
  13. /**************************************************************************
  14.  *
  15.  * SOURCE FILE NAME = VDHDATA.H
  16.  *
  17.  * DESCRIPTIVE NAME = Video Device Handler data include file
  18.  *
  19.  *
  20.  * VERSION = V2.0
  21.  *
  22.  * DATE
  23.  *
  24.  * DESCRIPTION
  25.  *
  26.  * FUNCTIONS    NONE
  27.  *
  28.  * NOTES
  29.  *
  30.  *
  31.  * STRUCTURES
  32.  *
  33.  * EXTERNAL REFERENCES
  34.  *
  35.  * EXTERNAL FUNCTIONS
  36.  *
  37. */
  38.  
  39. /*
  40. ** Global variables - data shared by more than one VDH routine
  41. */
  42.  
  43. #if DEBUG
  44. unsigned DEBUG_OUT = 0;              /* Debug printf (trace) output request */
  45. #if VDHVGA
  46. char *DEBUG_BVH_VERSION = "BVHVGA ";
  47. #endif  /* VDHVGA */
  48. #if VDHEGA
  49. char *DEBUG_BVH_VERSION = "BVHEGA ";
  50. #endif  /* VDHEGA */
  51. #if VDHCGA
  52. char *DEBUG_BVH_VERSION = "BVHCGA ";
  53. #endif  /* VDHCGA */
  54. #if VDHMPA
  55. char *DEBUG_BVH_VERSION = "BVHMPA ";
  56. #endif  /* VDHMPA */
  57. #if VDH8514A
  58. char *DEBUG_BVH_VERSION = "BVH8514A ";
  59. #endif  /* VDH8514A */
  60. #if VDHINIT
  61. char *DEBUG_BVH_VERSION = "BVHINIT ";
  62. #endif  /* VDHINIT */
  63. #if VDHWNDW
  64. char *DEBUG_BVH_VERSION = "BVHWNDW ";
  65. #endif  /* VDHWNDW */
  66.  
  67. UCHAR   DEBUG_ACTIVE[]  =
  68.         {
  69.         0, /* FnTextBufferUpdate        */
  70.         0, /* FnInitializeEnvironment   */
  71.         1, /* FnSaveEnvironment         */
  72.         1, /* FnRestoreEnvironment      */
  73.         0, /* FnReturnConfigInfo        */
  74.         0, /* FnGetDBCSDisplayInfo      */
  75.         0, /* FnGetColorLookupTable     */
  76.         0, /* FnSetColorLookupTable     */
  77.         0, /* FnGetCursorInfo           */
  78.         0, /* FnSetCursorInfo           */
  79.         0, /* FnGetFont                 */
  80.         0, /* FnSetFont                 */
  81.         0, /* FnGetMode                 */
  82.         0, /* FnSetMode                 */
  83.         0, /* FnGetPaletteRegisters     */
  84.         0, /* FnSetPaletteRegisters     */
  85.         0, /* FnGetPhysBuf              */
  86.         0, /* FnFreePhysBuf             */
  87.         0, /* FnGetVariableInfo         */
  88.         0, /* FnSetVariableInfo         */
  89.         0, /* FnExtendedVioCall         */
  90.         0, /* FnReserved1               */              /* print screen */
  91.         0, /* FnReserved2               */              /* write TTY    */
  92.         0, /* FnGetLVBInfo              */              /*                     */
  93.         0, /* FnGetState                */              /*                     */
  94.         0, /* FnSetState                */              /*                     */
  95.         0xFF    /* end marker for humans */
  96.         };
  97. /* unsigned     DEBUG_NAME_LEN  = 24; */  /* debug name string length */
  98. char    *DEBUG_NAME[]   =
  99.         {     /* names for function codes */
  100.         "FnTextBufferUpdate\x0A\x0D",
  101.         "FnInitializeEnvironment\x0A\x0D",
  102.         "FnSaveEnvironment\x0A\x0D",
  103.         "FnRestoreEnvironment\x0A\x0D",
  104.         "FnReturnConfigInfo\x0A\x0D",
  105.         "FnGetDBCSDisplayInfo\x0A\x0D",
  106.         "FnGetColorLookupTable\x0A\x0D",
  107.         "FnSetColorLookupTable\x0A\x0D",
  108.         "FnGetCursorInfo\x0A\x0D",
  109.         "FnSetCursorInfo\x0A\x0D",
  110.         "FnGetFont\x0A\x0D",
  111.         "FnSetFont\x0A\x0D",
  112.         "FnGetMode\x0A\x0D",
  113.         "FnSetMode\x0A\x0D",
  114.         "FnGetPaletteRegisters\x0A\x0D",
  115.         "FnSetPaletteRegisters\x0A\x0D",
  116.         "FnGetPhysBuf\x0A\x0D",
  117.         "FnFreePhysBuf\x0A\x0D",
  118.         "FnGetVariableInfo\x0A\x0D",
  119.         "FnSetVariableInfo\x0A\x0D",
  120.         "FnExtendedVioCall\x0A\x0D",
  121.         "FnReserved1\x0A\x0D",          /* print screen */
  122.         "FnReserved2\x0A\x0D",          /* write TTY    */
  123.         "FnGetLVBInfo\x0A\x0D",         /*                     */
  124.         "FnGetState\x0A\x0D",
  125.         "FnSetState\x0A\x0D",
  126.         "EndOfTable\x0A\x0D",
  127.         };
  128. #endif  /* DEBUG */
  129.  
  130. #if VDHVGA
  131.  
  132. /*
  133. ** The following is a programming table for the intensity values
  134. ** to be used on 8 to 32 shade monochrome VGA displays (such as LCD).
  135. ** The 16 values correspond to the 16 colors in text mode.
  136. */
  137.  
  138. UCHAR LCDGrayLUT[]={    0x00,0x04,0x0C,0x0E,0x08,0x09,0x0A,0x12,
  139.                         0x01,0x07,0x19,0x1B,0x15,0x17,0x1D,0x1F };
  140. #endif  /* VDHVGA */
  141.  
  142. USHORT HugeShift = 0;    /* Amount added to a huge selector to get to the next */
  143. USHORT DeviceDriver = 0; /* version number                                     */
  144. UCHAR FIRST_ENTRY = TRUE;/* Flag to force only one device initialization       */
  145. UCHAR FIRST_INIT = TRUE; /* Flag to force only one INIT device initialization  */
  146. UCHAR READABLE = 0;      /* Flag to determine if hardware is write-only        */
  147. USHORT ConfigFlag = 0;
  148. ULONG PartialSaveSize=0;/* Room required to save entire PVB in the popup mode  */
  149. UCHAR DefaultAttribute[] = {0x07,0x0,0x0};/* default attribute used by WrtTTY  */
  150. CLUTDATA far *LCLUT = 0 ;       /* @BB1 */
  151.  
  152. VIDEOHARDWARE VideoHardware = {0x0};  /* installed video hardware */    /*          */
  153. ENVIRONMENT Env1 = {0}; /* Popup environment */                   /*                      */
  154. ENVIRONMENT Env2 = {0}; /* Harderr environment */                 /*                      */
  155.  
  156. #if VDHINIT                                                           /*@ISO*/
  157. DMQSDATA far *pDMQSdata = 0;                                          /*@ISO*/
  158. USHORT machinetype;                                                   /*@RAD*/
  159. #endif                                                                /*@ISO*/
  160.  
  161. #if FONT_SUPPORT
  162.  
  163. rcp_addr RomCP_tbl = {0x0};                                           /*          */
  164. cp_addr  CodePage = {0x0};                                            /*          */
  165. UCHAR CodePage_Support = 0;                                           /*          */
  166. USHORT ROMCP_NUM = 0;                                 /*PTM 2895,                 */
  167.  
  168. /*            CODEPAGES CodePageTable[MAX_CODEPAGES]; */
  169.  
  170.  
  171. #endif  /* FONT_SUPPORT */
  172.  
  173. #if VDH8514A                                                         /* MS00 */
  174.  
  175. USHORT (APIENTRY *ChainedCallVectorTable[MaxFn])() = {0};            /*            */
  176.  
  177. USHORT VGA_PRESENT = 0;  /* TRUE if VGA VDH has been installed */
  178. VDHCONFIGINFO VGAConfigData = {0x0};
  179.  
  180. #endif  /* VDH8514A */                                                 /* MS00 */
  181.  
  182. #if !(VDH8514A)
  183. extern USHORT *hScreenDD; /* Handle to screen device driver ( for DosDevIOCtl ) */ /*@T52*/
  184. #endif
  185.  
  186. /*
  187. ** OEM Flags:
  188. **      This word contains flags used to remember that an OEM video
  189. **      adapter has been detected.  This may be used to control the
  190. **      programming of features unique to a particular vendor's
  191. **      implementation of one of the OS/2 supported video adapters.
  192. */
  193.  
  194. USHORT  OEMFlags        = 0x0000;
  195. USHORT  SVGAPresent     = FALSE;                // @drw
  196.  
  197. /*
  198. ** Table of VDH entry points
  199. **
  200. ** Device chaining is not implemented in these video device handlers.  If the
  201. ** VDH supports the VDH function, DevEnable will over-write the current
  202. ** entry in the call vector table.  If the VDH does not support the VDH
  203. ** function, the call vector table entry will not be touched.
  204. */
  205.  
  206. #if DEBUG                                                               /* MS07 */
  207. static USHORT (EXPENTRY *DebugTrace)() = DEBUG_TRACE;                   /* MS07 */
  208. #endif  /* DEBUG */                                                     /* MS07 */
  209. static USHORT far * VDHEntryPoint[] = {                                 /* SM04398 */
  210.  
  211. #if VDH8514A
  212.  
  213.                              (USHORT far *)ChainRouter,         /* 256 */
  214.  
  215. #else
  216.  
  217.                              (USHORT far *)BufferUpdate,        /* 256 */
  218.  
  219. #endif  /* VDH8514A */                                                  /* MS00 */
  220.  
  221.                              (USHORT far *)InitEnv,             /* 257 */
  222.                              (USHORT far *)SaveEnv,             /* 258 */
  223.                              (USHORT far *)RestoreEnv,          /* 259 */
  224.                              (USHORT far *)RetConfigInfo,       /* 260 */
  225.  
  226. #if VDH8514A                                                            //MS00
  227.  
  228.                              (USHORT far *)ChainRouter,         /* 261 */
  229.  
  230. #else
  231.  
  232. /* Get DBCS Display Info */  (USHORT far *)GetDBCSInfo,         /* 261             */
  233.  
  234. #endif  /* VDH8514A */                                                  /* MS00 */
  235.  
  236. #if VDHVGA || VDH8514A                                          /*               */
  237.  
  238.                              (USHORT far *)GetColorLookup,      /* 262 */
  239.                              (USHORT far *)SetColorLookup,      /* 263 */
  240.  
  241. #else
  242.  
  243.                              (USHORT far *)UNSUPPORTED_FUNCTION,/* 262 */
  244.                              (USHORT far *)UNSUPPORTED_FUNCTION,/* 263 */
  245.  
  246. #endif  /* VDHVGA || VDH8514A                                             MS00 */
  247.  
  248. #if VDH8514A                                                            /* MS00 */
  249.  
  250.                              (USHORT far *)ChainRouter,         /* 264 */
  251.                              (USHORT far *)ChainRouter,         /* 265 */
  252.  
  253. #else
  254.  
  255.                              (USHORT far *)GetCursorInfo,       /* 264 */
  256.                              (USHORT far *)SetCursorInfo,       /* 265 */
  257.  
  258. #endif  /* VDH8514A                                                       MS00 */
  259.  
  260. #if ROMFONT_SUPPORT     /* VGA, EGA, CGA and INIT */              /*               */
  261.  
  262.                              (USHORT far *)GetCurrentFont,      /* 266 */
  263.                              (USHORT far *)SetCurrentFont,      /* 267 */
  264.  
  265. #elif VDH8514A                                                          /* MS00 */
  266.  
  267.                              (USHORT far *)ChainRouter,         /* 266 */
  268.                              (USHORT far *)ChainRouter,         /* 267 */
  269.  
  270. #else   /* MPA */
  271.  
  272.                              (USHORT far *)UNSUPPORTED_FUNCTION,/* 266 */
  273.                              (USHORT far *)SetCurrentFont      ,/* 267,          */
  274.  
  275. #endif  /* FONT_SUPPORT */
  276.  
  277.                              (USHORT far *)GetMode,             /* 268 */
  278.                              (USHORT far *)SetMode,             /* 269 */
  279.  
  280. #if PALETTE_SUPPORT                                                     /* MS00 */
  281.  
  282.                              (USHORT far *)GetPaletteReg,       /* 270 */
  283.                              (USHORT far *)SetPaletteReg,       /* 271 */
  284.  
  285. #elif VDH8514A                                                          /* MS00 */
  286.  
  287.                              (USHORT far *)ChainRouter,         /* 270 */
  288.                              (USHORT far *)ChainRouter,         /* 271 */
  289.  
  290. #else
  291.  
  292.                              (USHORT far *)UNSUPPORTED_FUNCTION,/* 270 */
  293.                              (USHORT far *)UNSUPPORTED_FUNCTION,/* 271 */
  294.  
  295. #endif  /* PALETTE_SUPPORT                                              MS00 */
  296.  
  297. #if VDH8514A                                                            /*MS00 */
  298.  
  299.                              (USHORT far *)ChainRouter,         /* 272 */
  300.                              (USHORT far *)ChainRouter,         /* 273 */
  301.  
  302. #else
  303.  
  304.                              (USHORT far *)GetPhysBuf,          /* 272 */
  305.                              (USHORT far *)FreePhysBuf,         /* 273 */
  306.  
  307. #endif  /* VDH8514A                                                     MS00 */
  308.  
  309.                              (USHORT far *)GetVariableInfo,     /* 274 */
  310.                              (USHORT far *)SetVariableInfo,     /* 275 */
  311.                              (USHORT far *)UNSUPPORTED_FUNCTION,/* 276             */
  312.                              (USHORT far *)UNSUPPORTED_FUNCTION,/* 277             */
  313.                              (USHORT far *)UNSUPPORTED_FUNCTION,/* 278             */
  314.  
  315.  
  316. #if VDH8514A                                                    /*                 */
  317.  
  318.                              (USHORT far *)ChainRouter,         /* 279             */
  319.                              (USHORT far *)ChainRouter,         /*                */
  320.                              (USHORT far *)ChainRouter,         /*                */
  321. #else                                                           /*                 */
  322.  
  323. /* Get LVB size info     */  (USHORT far *)GetLVBInfo,          /* 279             */
  324.  
  325.                              (USHORT far *)GetState,            /*                */
  326.                              (USHORT far *)SetState             /*                */
  327.  
  328. #endif  /* VDH8514A                                                                */
  329. };                                                              /*                */
  330.  
  331. /*
  332. ** Video mode table -
  333. **    typedef struct {
  334. **              USHORT cb;              ; VioGetMode structure
  335. **              UCHAR  fbType;
  336. **              UCHAR  color;
  337. **              USHORT col;
  338. **              USHORT row;
  339. **              USHORT hres;
  340. **              USHORT vres;
  341. **              UCHAR  fmt_ID;
  342. **              UCHAR  attrib;
  343. **              UCHAR  MemMap;          ; Index in memory map table
  344. **              UCHAR  ROMFontIndex;    ; Index in ROM font table
  345. **              UCHAR  CompRegs[5];     ; Unique mode-identifying registers
  346. **              REGCMD ModeRegs[8];     ; Register command table
  347. **              } VIDEOMODE;
  348. **
  349. ** The mode table is arranged in a highest resolution to lowest resolution
  350. ** order so that a "best" default mode can be selected if only partial
  351. ** mode data is given via VioSetMode.
  352. **
  353. **            - 01/90, Mode table modified per suggestions from engineering to
  354. ** fix problem described by PTR B710847.  Misc output reg is set twice, once
  355. ** before setting the crt ctrlr regs and once after setting them.  If the
  356. ** mode uses the 28 MHz clock, the misc output reg is first set to the 25 MHz
  357. ** clock and then set to the 28 MHz clock.  (selected by bits 2 and 3 of the
  358. ** misc output reg)
  359. */
  360.  
  361. VIDEOMODE Modes[] = {
  362.  
  363. #if VDHVGA                                                              /*MS00 */
  364.  
  365. /*
  366. **  Mode index 0
  367. */
  368. { 12, NOT_MONO, 4, 80, 25, 720, 400, 0, 1,            /*            VioSetMode Structure */
  369.   MemMap_Text80, ROMFont9x16, NOT_PLASMA,
  370.  { 0x67, 0x0C, 0x0F, 0x00 },
  371.  {  /* [0][0-6] vga3p */
  372.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  373.   { Sequencers_CMD, { "\x01\x00\x03\x00\x02", 0x00, 0x04+1 } },
  374.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  375.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\xBF\x1F\x0\x4F\xD\xE\x0\x0\x0\x0\x9C\xAE\x8F\x28\x1F\x96\xB9\xA3\xFF", 0x00, 0x18+1 } },
  376.   { RegOutput_CMD,  { "\x67", MiscOutputRegWrite, 0x01 } },
  377.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x8", 0x00, 0x14 } },
  378.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  379.   { Terminate_CMD }
  380.  } },   /* Modes 2+, 3+ */
  381.  
  382. /*
  383. **  Mode index 1
  384. */
  385. { 12, NOT_MONO, 4, 80, 25, 640, 400, 0, 1,            /*  VioSetMode Structure */
  386.   MemMap_Text80, ROMFont8x16, 0,
  387.  { 0x63, 0x0C, 0x0F, 0x01 },
  388.  {  /* [1][0-6] vgp3p */
  389.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  390.   { Sequencers_CMD, { "\x1\x1\x3\x0\x2", 0x00, 0x04+1 } },
  391.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  392.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\xBF\x1F\x0\x4F\xD\xE\x0\x0\x0\x0\x9C\xAE\x8F\x28\x1F\x96\xB9\xA3\xFF", 0x00, 0x18+1 } },
  393.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x0", 0x00, 0x14 } },
  394.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  395.   { Terminate_CMD }
  396.  } },   /* Modes 2#, 3# */
  397.  
  398. /*
  399. **  Mode index 2
  400. */
  401. { 12, 0, 0, 80, 25, 720, 400, 0, 1,                   /* VioSetMode Structure */
  402.   MemMap_Mono, ROMFont9x16, IGNORE_CLR_BRST+NOT_PLASMA,
  403.  { 0x66, 0x0E, 0x0F, 0x00 },
  404.  {  /* [2][0-6] vgm7p */
  405.   { RegOutput_CMD,  { "\x62", MiscOutputRegWrite, 0x01 } },
  406.   { Sequencers_CMD, { "\x01\x00\x03\x00\x02", 0x00, 0x04+1 } },
  407.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  408.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\x0BF\x1F\x00\x4F\x0D\x0E\x0\x0\x0\x0\x9C\xAE\x8F\x28\x0F\x96\x0B9\x0A3\x0FF", 0x00, 0x18+1 } },
  409.   { RegOutput_CMD,  { "\x66", MiscOutputRegWrite, 0x01 } },
  410.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x08", 0x00, 0x14 } },
  411.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\x0FF", 0x00, 0x09 } },
  412.   { Terminate_CMD }
  413.  } },   /* Mode 7+ */
  414.  
  415. /*
  416. **  Mode index 3
  417. **             - BEGIN
  418. */
  419. { 12, NOT_MONO, 4, 80, 25, 640, 400, 0, 1,            /* VioSetMode Structure */
  420.   MemMap_Text80, ROMFont8x16, 0,
  421.  { 0x62, 0x0E, 0x0F, 0x01 },
  422.  {  /* [3][0-6] vgp7p */
  423.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  424.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  425.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  426.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\x0BF\x1F\x00\x4F\x0D\x0E\x0\x0\x0\x0\x9C\xAE\x8F\x28\x0F\x96\x0B9\x0A3\x0FF", 0x00, 0x18+1 } },
  427.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x0", 0x00, 0x14 } },   /*          */
  428.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\x0FF", 0x00, 0x09 } },
  429.   { Terminate_CMD }
  430.  } },   /* Mode 7# */                                   /*            - END */
  431.  
  432. /*
  433. **  Mode index 4
  434. */
  435. { 12, 0, 0, 80, 25, 640, 400, 0, 1,                   /* VioSetMode Structure */
  436.   MemMap_Mono, ROMFont8x16, IGNORE_CLR_BRST,
  437.  { 0x62, 0x0E, 0x0F, 0x01 },
  438.  {  /* [3][0-6] vgp7p */
  439.   { RegOutput_CMD,  { "\x62", MiscOutputRegWrite, 0x01 } },
  440.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  441.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  442.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\x0BF\x1F\x00\x4F\x0D\x0E\x0\x0\x0\x0\x9C\xAE\x8F\x28\x0F\x96\x0B9\x0A3\x0FF", 0x00, 0x18+1 } },
  443.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x00", 0x00, 0x14 } },
  444.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\x0FF", 0x00, 0x09 } },
  445.   { Terminate_CMD }
  446.  } },   /* Mode 7# */
  447.  
  448. /*
  449. **  Mode index 5
  450. */
  451. { 12, NOT_MONO, 4, 40, 25, 360, 400, 0, 1,            /* VioSetMode Structure */
  452.   MemMap_Text40, ROMFont9x16, NOT_PLASMA,
  453.  { 0x67, 0x0C, 0x0F, 0x08 },
  454.  {  /* [4][0-5] vga1p */
  455.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  456.   { Sequencers_CMD, { "\x01\x08\x03\x00\x02", 0x00, 0x04+1 } },
  457.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  458.   { CRTCtlRegs_CMD, { "\x2D\x27\x28\x90\x2B\x0A0\x0BF\x1F\x00\x4F\x0D\x0E\x0\x0\x0\x0\x09C\xAE\x8F\x14\x1F\x96\x0B9\x0A3\x0FF", 0x00, 0x18+1 } },
  459.   { RegOutput_CMD,  { "\x67", MiscOutputRegWrite, 0x01 } },
  460.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x8", 0x00, 0x14 } },
  461.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  462.   { Terminate_CMD }
  463.  } },   /* Modes 0+, 1+ */
  464.  
  465. /*
  466. **  Mode index 6 - OEM 480 scan line 40 column mode
  467. */
  468. { 12, NOT_MONO, 4, 40, 30, 360, 480, 0, 1,            /* VioSetMode Structure */
  469.   MemMap_Text40, ROMFont9x16, NOT_PLASMA,
  470.  { 0xE7, 0x0C, 0x0F, 0x08 },
  471.  {  /* [4][0-5] vga1p */
  472.   { RegOutput_CMD,  { "\xE3", MiscOutputRegWrite, 0x01 } },
  473.   { Sequencers_CMD, { "\x01\x08\x03\x00\x02", 0x00, 0x04+1 } },
  474.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  475.   { CRTCtlRegs_CMD, { "\x2D\x27\x28\x90\x2B\x0A0\x0B\x3E\x00\x4F\x0D\x0E\x0\x0\x0\x0\x0EA\xAC\xDF\x14\x1F\xE7\x04\x0A3\x0FF", 0x00, 0x18+1 } },
  476.   { RegOutput_CMD,  { "\xE7", MiscOutputRegWrite, 0x01 } },
  477.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x0", 0x00, 0x14 } },
  478.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  479.   { Terminate_CMD }
  480.  } },   /* Modes 0+, 1+ */                                     /*MS?? - END */
  481.  
  482. /*
  483. **  Mode index 7
  484. */
  485. { 12, NOT_MONO, 4, 40, 25, 320, 400, 0, 1,            /* VioSetMode Structure */
  486.   MemMap_Text40, ROMFont8x16, 0,
  487.  { 0x63, 0x0C, 0x0F, 0x09 },
  488.  {  /* [5][0-5] vgp1p */
  489.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  490.   { Sequencers_CMD, { "\x01\x09\x03\x00\x02", 0x00, 0x04+1 } },
  491.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  492.   { CRTCtlRegs_CMD, { "\x2D\x27\x28\x90\x2B\x0A0\x0BF\x1F\x00\x4F\x0D\x0E\x0\x0\x0\x0\x09C\xAE\x8F\x14\x1F\x96\x0B9\x0A3\x0FF", 0x00, 0x18+1 } },
  493.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x0", 0x00, 0x14 } },
  494.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  495.   { Terminate_CMD }
  496.  } },   /* Modes 0#, 1# */
  497.  
  498. /*
  499. **  Mode index 8 - OEM 480 scan line 40 column mode
  500. */
  501. { 12, NOT_MONO, 4, 40, 30, 320, 480, 0, 1,            /* VioSetMode Structure */
  502.   MemMap_Text40, ROMFont8x16, 0,
  503.  { 0xE3, 0x0C, 0x0F, 0x09 },
  504.  {  /* [5][0-5] vgp1sx */
  505.   { RegOutput_CMD,  { "\xE3", MiscOutputRegWrite, 0x01 } },
  506.   { Sequencers_CMD, { "\x01\x09\x03\x00\x02", 0x00, 0x04+1 } },
  507.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  508.   { CRTCtlRegs_CMD, { "\x2D\x27\x28\x90\x2B\x0A0\x0B\x3E\x00\x4F\x0D\x0E\x0\x0\x0\x0\x0EA\xAC\xDF\x14\x1F\xE7\x04\x0A3\x0FF", 0x00, 0x18+1 } },
  509.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x0", 0x00, 0x14 } },
  510.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  511.   { Terminate_CMD }
  512.  } },   /* Modes 0#, 1# */                                     /*MS?? - END */
  513.  
  514. /*
  515. **  Mode index 9
  516. */
  517. { 12, NOT_MONO, 4, 80, 25, 640, 350, 0, 1,            /* VioSetMode Structure */
  518.   MemMap_Text80, ROMFont8x14, 0,
  519.  { 0xA3, 0x08, 0x0F, 0x01 },
  520.  {  /* [6][0-6] vga3s */
  521.   { RegOutput_CMD,  { "\xA3", MiscOutputRegWrite, 0x01 } },
  522.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  523.   { CRTCtlRegs_CMD, { "\x05", 0x11, 0x01 } },
  524.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\xBF\x1F\x0\x4D\xB\xC\x0\x0\x0\x0\x83\xA5\x5D\x28\x1F\x63\x0BA\x0A3\x0FF", 0x00, 0x18+1 } }, /*          */
  525.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x08\x0\x0F\x0", 0x00, 0x14 } },
  526.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  527.   { Terminate_CMD }
  528.  } },   /* Modes 2*, 3* */
  529.  
  530. /*
  531. **  Mode index 10
  532. */
  533. { 12, NOT_MONO, 4, 40, 25, 320, 350, 0, 1,            /* VioSetMode Structure */
  534.   MemMap_Text40, ROMFont8x14, 0,
  535.  { 0xA3, 0x08, 0x0F, 0x09 },
  536.  {  /* [7][0-5] vga1s */
  537.   { RegOutput_CMD,  { "\xA3", MiscOutputRegWrite, 0x01 } },
  538.   { Sequencers_CMD, { "\x01\x09\x03\x00\x02", 0x00, 0x04+1 } },
  539.   { CRTCtlRegs_CMD, { "\x05", 0x11, 0x01 } },
  540.   { CRTCtlRegs_CMD, { "\x2D\x27\x28\x90\x2B\x0A0\x0BF\x1F\x00\x4D\x0B\x0C\x0\x0\x0\x0\x83\xA5\x5D\x14\x1F\x63\x0BA\x0A3\x0FF", 0x00, 0x18+1 } },
  541.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x08\x0\x0F\x0", 0x00, 0x14 } },
  542.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  543.   { Terminate_CMD }
  544.  } },   /* Modes 0*, 1* */
  545.  
  546. /*
  547. **  Mode index 11
  548. */
  549. { 12, NOT_MONO, 4, 80, 25, 640, 200, 0, 1,            /* VioSetMode Structure */
  550.   MemMap_Text80, ROMFont8x8, 0,
  551.  { 0x63, 0x08, 0x0F, 0x01 },
  552.  {  /* [8][0-6] vga3 */
  553.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  554.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  555.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  556.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\x0BF\x1F\x00\x0C7\x06\x07\x0\x0\x0\x0\x9C\xAE\x8F\x28\x1F\x96\x0B9\x0A3\x0FF", 0x00, 0x18+1 } },
  557.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x6\x7\x10\x11\x12\x13\x14\x15\x16\x17\x08\x0\x0F\x0", 0x00, 0x14 } },
  558.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  559.   { Terminate_CMD }
  560.  } },   /* Modes 2, 3 */
  561.  
  562. /*
  563. **  Mode index 12
  564. */
  565. { 12, 0, 0, 80, 25, 720, 350, 0, 1,                   /* VioSetMode Structure */
  566.   MemMap_Mono, ROMFont9x14, IGNORE_CLR_BRST+NOT_PLASMA,
  567.  { 0xA6, 0x0E, 0x0F, 0x00 },
  568.  {  /* [9][0-5] vgm7 */
  569.   { RegOutput_CMD,  { "\xA2", MiscOutputRegWrite, 0x01 } },
  570.   { Sequencers_CMD, { "\x01\x00\x03\x00\x02", 0x00, 0x04+1 } },
  571.   { CRTCtlRegs_CMD, { "\x05", 0x11, 0x01 } },
  572.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\x0BF\x1F\x00\x4D\x0B\x0C\x0\x0\x0\x0\x83\xA5\x5D\x28\x0D\x63\x0BA\x0A3\x0FF", 0x00, 0x18+1 } },
  573.   { RegOutput_CMD,  { "\xA6", MiscOutputRegWrite, 0x01 } },
  574.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x08", 0x00, 0x14 } },
  575.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\x0FF", 0x00, 0x09 } },
  576.   { Terminate_CMD }
  577.  } },   /* Mode 7 */
  578.  
  579. /*
  580. **  Mode index 13
  581. */
  582. { 12, 0, 0, 80, 25, 640, 350, 0, 1,                   /* VioSetMode Structure */
  583.   MemMap_Mono, ROMFont8x14, IGNORE_CLR_BRST,
  584.  { 0xA2, 0x0E, 0x0F, 0x01 },
  585.  {  /* [10][0-5] vgp7 */
  586.   { RegOutput_CMD,  { "\xA2", MiscOutputRegWrite, 0x01 } },
  587.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  588.   { CRTCtlRegs_CMD, { "\x05", 0x11, 0x01 } },
  589.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\x0BF\x1F\x00\x4D\x0B\x0C\x0\x0\x0\x0\x83\xA5\x5D\x28\x0D\x63\x0BA\x0A3\x0FF", 0x00, 0x18+1 } },
  590.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x00", 0x00, 0x14 } },
  591.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\x0FF", 0x00, 0x09 } },
  592.   { Terminate_CMD }
  593.  } },   /* Mode 7p */
  594.  
  595. /*
  596. **  Mode index 14
  597. */
  598. { 12, NOT_MONO, 4, 40, 25, 320, 200, 0, 1,            /* VioSetMode Structure */
  599.   MemMap_Text40, ROMFont8x8, 0,
  600.  { 0x63, 0x08, 0x0F, 0x09 },
  601.  {  /* [11][0-5] vga1 */
  602.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  603.   { Sequencers_CMD, { "\x01\x09\x03\x00\x02", 0x00, 0x04+1 } },
  604.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  605.   { CRTCtlRegs_CMD, { "\x2D\x27\x28\x90\x2B\x0A0\x0BF\x1F\x00\x0C7\x06\x07\x0\x0\x0\x0\x9C\xAE\x8F\x14\x1F\x96\x0B9\x0A3\x0FF", 0x00, 0x18+1 } },
  606. /* this is BIOS compatible but is not presently being used with a
  607.    BIOS compatible CLUT */
  608.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x6\x7\x10\x11\x12\x13\x14\x15\x16\x17\x08\x0\x0F\x0", 0x00, 0x14 } },
  609.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  610.   { Terminate_CMD }
  611.  } },   /* Modes 0, 1 */
  612.  
  613. /*
  614. **  Mode index 15
  615. */
  616. { 12, NOT_MONO+GRAPHICS, 2, 40, 25, 320, 200, 0, 1,   /* VioSetMode Structure */
  617.   MemMap_LoRes, ROMFont8x8, 0,
  618.  { 0x63, 0x01, 0x03, 0x09 },
  619.  {  /* [12][0-6] vga4 */
  620.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  621.   { Sequencers_CMD, { "\x01\x09\x03\x00\x02", 0x00, 0x04+1 } },
  622.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  623.   { CRTCtlRegs_CMD, { "\x2D\x27\x28\x90\x2B\x80\xBF\x1F\x0\xC1\x0\x0\x0\x0\x0\x0\x9C\xAE\x8F\x14\x0\x96\xB9\xA2\xFF", 0x00, 0x18+1 } },
  624.   { Attributes_CMD, { "\x0\x13\x15\x17\x2\x4\x6\x7\x10\x11\x12\x13\x14\x15\x16\x17\x01\x0\x03\x0", 0x00, 0x14 } },
  625.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x30\x0F\x00\x0FF ", 0x00, 0x09 } },
  626.   { Terminate_CMD }
  627.  } },   /* Modes 4, 5 */
  628.  
  629. /*
  630. **  Mode index 16
  631. */
  632. { 12, NOT_MONO+GRAPHICS, 1, 80, 25, 640, 200, 0, 1,   /* VioSetMode Structure */
  633.   MemMap_LoRes, ROMFont8x8, IGNORE_CLR_BRST,
  634.  { 0x63, 0x01, 0x01, 0x01 },
  635.  {  /* [13][0-6] vga6 */
  636.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  637.   { Sequencers_CMD, { "\x01\x01\x01\x00\x06", 0x00, 0x04+1 } },
  638.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  639.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x54\x80\xBF\x1F\x0\xC1\x0\x0\x0\x0\x0\x0\x9C\xAE\x8F\x28\x0\x96\xB9\xC2\xFF", 0x00, 0x18+1 } },
  640.   { Attributes_CMD, { "\x0\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x01\x0\x01\x0", 0x00, 0x14 } },
  641.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x0D\x0\x0FF", 0x00, 0x09 } },
  642.   { Terminate_CMD }
  643.  } },   /* Mode 6 */
  644.  
  645. /*
  646. **  Mode index 17
  647. */
  648. { 12, NOT_MONO+GRAPHICS, 4, 40, 25, 320, 200, 0, 1,   /* VioSetMode Structure */
  649.   MemMap_ModeD, ROMFont8x8, IGNORE_CLR_BRST,
  650.  { 0x63, 0x01, 0x0F, 0x09 },
  651.  {  /* [14][0-6] vgaD */
  652.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  653.   { Sequencers_CMD, { "\x01\x09\x0F\x00\x06", 0x00, 0x04+1 } },
  654.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  655.   { CRTCtlRegs_CMD, { "\x2D\x27\x28\x90\x2B\x80\xBF\x1F\x0\xC0\x0\x0\x0\x0\x0\x0\x9C\xAE\x8F\x14\x0\x96\xB9\xE3\xFF", 0x00, 0x18+1 } },
  656.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x6\x7\x10\x11\x12\x13\x14\x15\x16\x17\x01\x0\x0F\x0", 0x00, 0x14 } },
  657.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x05\x0F\x0FF", 0x00, 0x09 } },
  658.   { Terminate_CMD }
  659.  } },   /* Mode D */
  660.  
  661. /*
  662. **  Mode index 18
  663. */
  664. { 12, NOT_MONO+GRAPHICS, 4, 80, 25, 640, 200, 0, 1,   /* VioSetMode Structure */
  665.   MemMap_ModeE, ROMFont8x8, IGNORE_CLR_BRST,
  666.  { 0x63, 0x01, 0x0F, 0x01 },
  667.  {  /* [15][0-5] vgaE */
  668.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  669.   { Sequencers_CMD, { "\x01\x01\x0F\x00\x06", 0x00, 0x04+1 } },
  670.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  671.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x54\x80\xBF\x1F\x0\xC0\x0\x0\x0\x0\x0\x0\x9C\xAE\x8F\x28\x0\x96\xB9\xE3\xFF", 0x00, 0x18+1 } },
  672.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  673.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x6\x7\x10\x11\x12\x13\x14\x15\x16\x17\x01\x0\x0F\x0", 0x00, 0x14 } },
  674.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x05\x0F\x0FF", 0x00, 0x09 } },
  675.   { Terminate_CMD }
  676.  } },   /* Mode E */
  677.  
  678. /*
  679. **  Mode index 19
  680. */
  681. { 12, GRAPHICS, 0, 80, 25, 640, 350, 0, 1,            /* VioSetMode Structure */
  682.   MemMap_ModeF, ROMFont8x14, IGNORE_CLR_BRST,
  683.  { 0xA2, 0x0B, 0x05, 0x01 },
  684.  {  /* [16][0-6] vgaF */
  685.   { RegOutput_CMD,  { "\xA2", MiscOutputRegWrite, 0x01 } },
  686.   { Sequencers_CMD, { "\x01\x01\x0F\x00\x06", 0x00, 0x04+1 } },
  687.   { CRTCtlRegs_CMD, { "\x05", 0x11, 0x01 } },
  688.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x54\x80\xBF\x1F\x0\x40\x0\x0\x0\x0\x0\x0\x83\xA5\x5D\x28\xF\x63\xBA\xE3\xFF", 0x00, 0x18+1 } },
  689.   { Attributes_CMD, { "\x0\x8\x0\x0\x18\x18\x0\x0\x0\x8\x0\x0\x0\x18\x0\x0\xB\x0\x5\x0", 0x00, 0x14 } },
  690.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x5\xF\xFF", 0x00, 0x09 } },
  691.   { Terminate_CMD }
  692.  } },   /* Mode F */
  693.  
  694. /*
  695. **  Mode index 20
  696. */
  697. { 12, NOT_MONO+GRAPHICS, 4, 80, 25, 640, 350, 0, 1,   /* VioSetMode Structure */
  698.   MemMap_Mode10, ROMFont8x14, IGNORE_CLR_BRST,
  699.  { 0xA3, 0x01, 0x0F, 0x01 },
  700.  {  /* [17][0-6] vga10 */
  701.   { RegOutput_CMD,  { "\xA3", MiscOutputRegWrite, 0x01 } },
  702.   { Sequencers_CMD, { "\x01\x01\x0F\x00\x06", 0x00, 0x04+1 } },
  703.   { CRTCtlRegs_CMD, { "\x05", 0x11, 0x01 } },
  704.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x54\x80\xBF\x1F\x0\x40\x0\x0\x0\x0\x0\x0\x83\xA5\x5D\x28\xF\x63\xBA\xE3\xFF", 0x00, 0x18+1 } },
  705.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x01\x0\x0F\x0", 0x00, 0x14 } },
  706.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x05\x0F\x0FF", 0x00, 0x09 } },
  707.   { Terminate_CMD }
  708.  } },   /* Mode 10+ */
  709.  
  710. /*
  711. **  Mode index 21
  712. */
  713. { 12, NOT_MONO+GRAPHICS, 1, 80, 30, 640, 480, 0, 1,   /* VioSetMode Structure */
  714.   MemMap_Mode11, ROMFont8x16, IGNORE_CLR_BRST,
  715.  { 0xE3, 0x01, 0x01, 0x01 },
  716.  {  /* [18][0-6] vga11 */
  717.   { RegOutput_CMD,  { "\xE3", MiscOutputRegWrite, 0x01 } },
  718.   { Sequencers_CMD, { "\x01\x01\x0F\x00\x06", 0x00, 0x04+1 } },
  719.   { CRTCtlRegs_CMD, { "\x0C", 0x11, 0x01 } },
  720.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x54\x80\xB\x3E\x0\x40\x0\x0\x0\x0\x0\x0\xEA\xAC\xDF\x28\x0\xE7\x4\xC3\xFF", 0x00, 0x18+1 } },
  721.   { Attributes_CMD, { "\x0\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x01\x0\x01\x0", 0x00, 0x14 } },
  722.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x05\x01\x0FF", 0x00, 0x09 } },
  723.   { Terminate_CMD }
  724.  } },   /* Mode 11 */
  725.  
  726. /*
  727. **  Mode index 22
  728. */
  729. { 12, NOT_MONO+GRAPHICS, 4, 80, 30, 640, 480, 0, 1,   /* VioSetMode Structure */
  730.   MemMap_Mode12, ROMFont8x16, IGNORE_CLR_BRST,
  731.  { 0xE3, 0x01, 0x0F, 0x01 },
  732.  {  /* [19][0-5] vga12 */
  733.   { RegOutput_CMD,  { "\xE3", MiscOutputRegWrite, 0x01 } },
  734.   { Sequencers_CMD, { "\x01\x01\x0F\x00\x06", 0x00, 0x04+1 } },
  735.   { CRTCtlRegs_CMD, { "\x05", 0x11, 0x01 } },
  736.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x54\x80\xB\x3E\x0\x40\x0\x0\x0\x0\x0\x0\xEA\xAC\xDF\x28\x0\xE7\x4\xC3\xFF", 0x00, 0x18+1 } },
  737.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x01\x0\x0F\x0", 0x00, 0x14 } },
  738.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x05\x0F\x0FF", 0x00, 0x09 } },
  739.   { Terminate_CMD }
  740.  } },   /* Mode 12 */
  741.  
  742. /*
  743. **  Mode index 23
  744. */
  745. { 12, NOT_MONO+GRAPHICS, 8, 40, 25, 320, 200, 0, 1,   /* VioSetMode Structure */
  746.   MemMap_Mode13, ROMFont8x8, IGNORE_CLR_BRST,
  747.  { 0x63, 0x41, 0x0F, 0x01 },
  748.  {  /* [20][0-6] vga13 */
  749.   { RegOutput_CMD,  { "\x63", MiscOutputRegWrite, 0x01 } },
  750.   { Sequencers_CMD, { "\x01\x01\x0F\x00\x0E", 0x00, 0x04+1 } },
  751.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  752.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x54\x80\xBF\x1F\x0\x41\x0\x0\x0\x0\x0\x0\x9C\xAE\x8F\x28\x40\x96\xB9\xA3\xFF", 0x00, 0x18+1 } },
  753.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\x0A\x0B\x0C\x0D\x0E\x0F\x41\x0\x0F\x0", 0x00, 0x14 } },
  754.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x40\x05\x0F\x0FF", 0x00, 0x09 } },
  755.   { Terminate_CMD }
  756.  } },   /* Mode 13 */
  757.  
  758. /*
  759. **  Mode index 24
  760. */
  761. { 12, NOT_MONO, 4, 80, 30, 720, 480, 0, 1,            /* VioSetMode Structure */
  762.   MemMap_Text480, ROMFont9x16, NOT_PLASMA,
  763.  { 0xE7, 0x0C, 0x0F, 0x00 },
  764.  {  /* [0][0-6] vga3px */
  765.   { RegOutput_CMD,  { "\xE3", MiscOutputRegWrite, 0x01 } },
  766.   { Sequencers_CMD, { "\x01\x00\x03\x00\x02", 0x00, 0x04+1 } },
  767.   { CRTCtlRegs_CMD, { "\x0C", 0x11, 0x01 } },
  768.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\x0B\x3E\x0\x4F\xD\xE\x0\x0\x0\x0\xEA\xAC\xDF\x28\x1F\xE7\x04\xA3\xFF", 0x00, 0x18+1 } },
  769.   { RegOutput_CMD,  { "\xE7", MiscOutputRegWrite, 0x01 } },
  770.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x8", 0x00, 0x14 } },
  771.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  772.   { Terminate_CMD }
  773.  } },   /* Non-BIOS Mode = 480-pel text (3++) */        /*STJ*/
  774.  
  775. /*
  776. **  Mode index 25 - OEM 480 scan line mono text mode
  777. */
  778. { 12, 0, 0, 80, 30, 720, 480, 0, 1,                   /* VioSetMode Structure */
  779.   MemMap_Mono, ROMFont9x16, IGNORE_CLR_BRST+NOT_PLASMA,
  780.  { 0xE6, 0x0E, 0x0F, 0x00 },
  781.  {  /* [2][0-6] vgm7px */
  782.   { RegOutput_CMD,  { "\xE2", MiscOutputRegWrite, 0x01 } },
  783.   { Sequencers_CMD, { "\x01\x00\x03\x00\x02", 0x00, 0x04+1 } },
  784.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  785.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\x0B\x3E\x00\x4F\x0D\x0E\x0\x0\x0\x0\xEA\xAC\xDF\x28\x0F\xE7\x04\x0A3\x0FF", 0x00, 0x18+1 } },
  786.   { RegOutput_CMD,  { "\xE6", MiscOutputRegWrite, 0x01 } },
  787.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x08", 0x00, 0x14 } },
  788.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\x0FF", 0x00, 0x09 } },
  789.   { Terminate_CMD }
  790.  } },   /* Non-Bios Mode = 480-pel mono text (7++) */          /*MS?? - END */
  791.  
  792. /*
  793. **  Mode index 26
  794. */
  795. { 12, NOT_MONO, 4, 80, 30, 640, 480, 0, 1,            /* VioSetMode Structure */
  796.   MemMap_Text480, ROMFont9x16, 0,
  797.  { 0xE3, 0x0C, 0x0F, 0x01 },
  798.  {  /* [0][0-6] vga3sx */
  799.   { RegOutput_CMD,  { "\xE3", MiscOutputRegWrite, 0x01 } },
  800.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  801.   { CRTCtlRegs_CMD, { "\x0C", 0x11, 0x01 } },
  802.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\x0B\x3E\x0\x4F\xD\xE\x0\x0\x0\x0\xEA\xAC\xDF\x28\x1F\xE7\x04\xA3\xFF", 0x00, 0x18+1 } },
  803.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x0", 0x00, 0x14 } },
  804.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  805.   { Terminate_CMD }
  806.  } },   /* Non-BIOS Mode = 480-pel text (3##) */        /*STJ*/
  807.  
  808. /*
  809. **  Mode index 27 - 480 scan line mono text mode
  810. */
  811. { 12, 0, 0, 80, 30, 640, 480, 0, 1,                   /* VioSetMode Structure */
  812.   MemMap_Mono, ROMFont8x16, IGNORE_CLR_BRST,
  813.  { 0xE2, 0x0E, 0x0F, 0x01 },
  814.  {  /* [3][0-6] vgp7sx */
  815.   { RegOutput_CMD,  { "\xE2", MiscOutputRegWrite, 0x01 } },
  816.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  817.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  818.   { CRTCtlRegs_CMD, { "\x5F\x4F\x50\x82\x55\x81\x0B\x3E\x00\x4F\x0D\x0E\x0\x0\x0\x0\xEA\xAC\xDF\x28\x0F\xE7\x04\x0A3\x0FF", 0x00, 0x18+1 } },
  819.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x00", 0x00, 0x14 } },
  820.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\x0FF", 0x00, 0x09 } },
  821.   { Terminate_CMD }
  822.  } },   /* Non-Bios Mode = 480-pel mono text (7##) */          /*MS?? - END */
  823.  
  824. /*
  825. **            specific code - BEGIN (IBM VGA-E 132 column text modes:)
  826. */
  827.  
  828. /*
  829. **  Mode index 28
  830. */
  831. { 12, NOT_MONO, 4, 132, 25, 1056, 400, 0, 1,          /* VioSetMode Structure */ /*          */
  832.   MemMap_Text80, ROMFont8x16, 0,
  833.  { 0x73, 0x0C, 0x0F, 0x01 },
  834.  {  /* [8][0-6] vga3 */
  835.   { RegOutput_CMD,  { "\x73", MiscOutputRegWrite, 0x01 } },
  836.   { Sequencers_CMD, { "\x03\x01\x03\x00\x02", 0x00, 0x04+1 } },
  837.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  838.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8A\x9E\x0BF\x1F\x00\x04F\x0D\x0E\x0\x0\x0\x0\x9C\xAE\x8F\x42\x1F\x96\x0B9\x0A3\x0FF", 0x00, 0x18+1 } },
  839.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x0", 0x00, 0x14 } },
  840.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  841.   { Terminate_CMD }
  842.  } },   /* Mode 14#   */
  843.  
  844. /*
  845. **  Mode index 29
  846. */
  847. { 12, 0, 0, 132, 25, 1056, 400, 0, 1,                 /* VioSetMode Structure */ /*          */
  848.   MemMap_Mono, ROMFont8x16, IGNORE_CLR_BRST,
  849.  { 0x72, 0x0E, 0x0F, 0x01 },
  850.  {  /* [8][0-6] vga3 */
  851.   { RegOutput_CMD,  { "\x72", MiscOutputRegWrite, 0x01 } },
  852.   { Sequencers_CMD, { "\x03\x01\x03\x00\x02", 0x00, 0x04+1 } },
  853.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  854.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8A\x9E\x0BF\x1F\x00\x04F\x0D\x0E\x0\x0\x0\x0\x9C\xAE\x8F\x42\x0F\x96\x0B9\x0A3\x0FF", 0x00, 0x18+1 } },
  855.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x00", 0x00, 0x14 } },
  856.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\xFF", 0x00, 0x09 } },
  857.   { Terminate_CMD }
  858.  } },   /* Mode 14#M  */
  859.  
  860. /*
  861. **  Mode index 30
  862. */
  863. { 12, NOT_MONO, 4, 132, 25, 1056, 350, 0, 1,          /* VioSetMode Structure */ /*          */
  864.   MemMap_Text80, ROMFont8x14, 0,
  865.  { 0xB3, 0x08, 0x0F, 0x01 },
  866.  {  /* [8][0-6] vga3 */
  867.   { RegOutput_CMD,  { "\xB3", MiscOutputRegWrite, 0x01 } },
  868.   { Sequencers_CMD, { "\x03\x01\x03\x00\x02", 0x00, 0x04+1 } },
  869.   { CRTCtlRegs_CMD, { "\x05", 0x11, 0x01 } },
  870.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8A\x9E\x0BF\x1F\x00\x04D\x0B\x0C\x0\x0\x0\x0\x83\xA5\x5D\x42\x1F\x93\x0BC\x0A3\x0FF", 0x00, 0x18+1 } },
  871.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x08\x0\x0F\x0", 0x00, 0x14 } },
  872.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  873.   { Terminate_CMD }
  874.  } },   /* Mode 14+   */
  875.  
  876. /*
  877. **  Mode index 31
  878. */
  879. { 12, 0, 0, 132, 25, 1056, 350, 0, 1,                 /* VioSetMode Structure */ /*          */
  880.   MemMap_Mono, ROMFont8x14, IGNORE_CLR_BRST,
  881.  { 0xB2, 0x0E, 0x0F, 0x01 },
  882.  {  /* [8][0-6] vga3 */
  883.   { RegOutput_CMD,  { "\xB2", MiscOutputRegWrite, 0x01 } },
  884.   { Sequencers_CMD, { "\x03\x01\x03\x00\x02", 0x00, 0x04+1 } },
  885.   { CRTCtlRegs_CMD, { "\x05", 0x11, 0x01 } },
  886.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8A\x9E\x0BF\x1F\x00\x04D\x0B\x0C\x0\x0\x0\x0\x83\xA5\x5D\x42\x0F\x93\x0BC\x0A3\x0FF", 0x00, 0x18+1 } },
  887.   { RegOutput_CMD,  { "\xB2", MiscOutputRegWrite, 0x01 } },
  888.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x00", 0x00, 0x14 } },
  889.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\xFF", 0x00, 0x09 } },
  890.   { Terminate_CMD }
  891.  } },   /* Mode 14+M  */
  892.  
  893. /*
  894. **  Mode index 32
  895. */
  896. { 12, NOT_MONO, 4, 132, 25, 1056, 200, 0, 1,          /* VioSetMode Structure */ /*          */
  897.   MemMap_Text80, ROMFont8x8, 0,
  898.  { 0x73, 0x08, 0x0F, 0x01 },
  899.  {  /* [8][0-6] vga3 */
  900.   { RegOutput_CMD,  { "\x73", MiscOutputRegWrite, 0x01 } },
  901.   { Sequencers_CMD, { "\x03\x01\x03\x00\x02", 0x00, 0x04+1 } },
  902.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  903.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8A\x9E\x0BF\x1F\x00\x0C7\x06\x07\x0\x0\x0\x0\x9C\xAE\x8F\x42\x1F\x93\x0BC\x0A3\x0FF", 0x00, 0x18+1 } },
  904.   { RegOutput_CMD,  { "\x73", MiscOutputRegWrite, 0x01 } },
  905.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x08\x0\x0F\x0", 0x00, 0x14 } },
  906.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  907.   { Terminate_CMD }
  908.  } },   /* Mode 14    */
  909.  
  910. /*
  911. **  Mode index 33
  912. */
  913. { 12, 0, 0, 132, 25, 1056, 200, 0, 1,                 /* VioSetMode Structure */ /*          */
  914.   MemMap_Mono, ROMFont8x8, IGNORE_CLR_BRST,
  915.  { 0x72, 0x08, 0x0F, 0x01 },
  916.  {  /* [8][0-6] vga3 */
  917.   { RegOutput_CMD,  { "\x72", MiscOutputRegWrite, 0x01 } },
  918.   { Sequencers_CMD, { "\x03\x01\x03\x00\x02", 0x00, 0x04+1 } },
  919.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  920.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8A\x9E\x0BF\x1F\x00\x0C7\x06\x07\x0\x0\x0\x0\x9C\xAE\x8F\x42\x0F\x93\x0BC\x0A3\x0FF", 0x00, 0x18+1 } },
  921.   { RegOutput_CMD,  { "\x72", MiscOutputRegWrite, 0x01 } },
  922.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x00", 0x00, 0x14 } },
  923.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\xFF", 0x00, 0x09 } },
  924.   { Terminate_CMD }
  925.  } },   /* Mode 14M   */
  926.  
  927. /*
  928. **  Mode index 34
  929. */
  930. { 12, NOT_MONO, 4, 132, 30, 1056, 480, 0, 1,          /* VioSetMode Structure */ /*          */
  931.   MemMap_Text480, ROMFont8x16, 0,
  932.  { 0xF3, 0x0C, 0x0F, 0x01 },
  933.  {  /* [0][0-6] vga3p */
  934.   { RegOutput_CMD,  { "\xF3", MiscOutputRegWrite, 0x01 } },
  935.   { Sequencers_CMD, { "\x03\x01\x03\x00\x02", 0x00, 0x04+1 } },
  936.   { CRTCtlRegs_CMD, { "\x0C", 0x11, 0x01 } },
  937.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8A\x9E\x0B\x3E\x0\x4F\x0D\x0E\x0\x0\x0\x0\xEA\xAC\xDF\x42\x1F\xE7\x04\xA3\xFF", 0x00, 0x18+1 } },
  938.   { RegOutput_CMD,  { "\xF3", MiscOutputRegWrite, 0x01 } },
  939.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x0", 0x00, 0x14 } },
  940.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  941.   { Terminate_CMD }
  942.  } },   /* Non-BIOS Mode = 132 col 480-pel text */
  943.  
  944. /*
  945. **  Mode index 35
  946. */
  947. { 12, 0, 0, 132, 30, 1056, 480, 0, 1,                 /* VioSetMode Structure */ /*          */
  948.   MemMap_Mono, ROMFont8x16, IGNORE_CLR_BRST,
  949.  { 0xF2, 0x0E, 0x0F, 0x01 },
  950.  {  /* [0][0-6] vga3p */
  951.   { RegOutput_CMD,  { "\xF2", MiscOutputRegWrite, 0x01 } },
  952.   { Sequencers_CMD, { "\x03\x01\x03\x00\x02", 0x00, 0x04+1 } },
  953.   { CRTCtlRegs_CMD, { "\x0C", 0x11, 0x01 } },
  954.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8A\x9E\x0B\x3E\x0\x4F\x0D\x0E\x0\x0\x0\x0\xEA\xAC\xDF\x42\x1F\xE7\x04\xA3\xFF", 0x00, 0x18+1 } },
  955.   { RegOutput_CMD,  { "\xF2", MiscOutputRegWrite, 0x01 } },
  956.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x00", 0x00, 0x14 } },
  957.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\xFF", 0x00, 0x09 } },
  958.   { Terminate_CMD }
  959.  } },   /* Non-BIOS Mode = 132 col 480-pel text */
  960.  
  961. /*
  962. **{ 0x63, 0x08, 0x0F, 0x01 }, (Unique mode id registers)
  963. **  |     |     |     |
  964. **  |     |     |     +-2nd from beginning in Sequencers_CMD
  965. **  |     |     |
  966. **  |     |     +-2nd from end in Attributes_CMD
  967. **  |     |
  968. **  |     +-4th from end in Attributes_CMD
  969. **  |
  970. **  +-1st in RegOutput_CMD
  971. */
  972.  
  973. /*
  974. **            specific code - END
  975. */
  976.  
  977. /* Mode index 36 - BEGIN (OEM 132 column text modes:) */       /*MS?? - BEGIN */
  978. { 12, NOT_MONO, 4, 132, 25, 1056, 400, 0, 1,
  979.   MemMap_Text80, ROMFont8x16, NOT_PLASMA,
  980.   { 0x6B, 0x0C, 0x0F, 0x01 },
  981.  {
  982.   { RegOutput_CMD,  { "\x6B", MiscOutputRegWrite, 0x01 } },
  983.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  984.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  985.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8D\x9B\xBF\x1F\x0\x4F\xD\xE\x0\x0\x0\x0\x9C\xAE\x8F\x42\x1F\x96\xB9\xA3\xFF", 0x00, 0x18+1 } },
  986.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x0", 0x00, 0x14 } },
  987.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  988.   { Terminate_CMD }
  989.  } },   /* Mode 23h,24h,27h */
  990.  
  991. /* Mode index 37 */
  992. { 12, 0, 0, 132, 25, 1056, 400, 0, 1,
  993.   MemMap_Mono, ROMFont8x16, IGNORE_CLR_BRST+NOT_PLASMA,
  994.   { 0x6A, 0x0E, 0x0F, 0x01 },
  995.  {
  996.   { RegOutput_CMD,  { "\x6A", MiscOutputRegWrite, 0x01 } },
  997.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  998.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  999.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8D\x9B\xBF\x1F\x0\x4F\xD\xE\x0\x0\x0\x0\x9C\xAE\x8F\x42\x1F\x96\xB9\xA3\xFF", 0x00, 0x18+1 } },
  1000.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x00", 0x00, 0x14 } },
  1001.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\x0FF", 0x00, 0x09 } },
  1002.   { Terminate_CMD }
  1003.  } },   /* Mode 19h,1Ah,1Bh */
  1004.  
  1005. /* Mode index 38 */
  1006. { 12, NOT_MONO, 4, 132, 43, 1056, 350, 0, 1,
  1007.   MemMap_Text80, ROMFont8x8, NOT_PLASMA,
  1008.   { 0xAB, 0x0C, 0x0F, 0x01 },
  1009.  {
  1010.   { RegOutput_CMD,  { "\xAB", MiscOutputRegWrite, 0x01 } },
  1011.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  1012.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  1013.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8D\x9B\xBF\x1F\x0\x47\x6\x7\x0\x0\x0\x0\x83\xA5\x57\x42\x1F\x63\xBA\xA3\xFF", 0x00, 0x18+1 } },
  1014.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x0", 0x00, 0x14 } },
  1015.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  1016.   { Terminate_CMD }
  1017.  } },   /* Mode 22h */
  1018.  
  1019. /* Mode index 39 */
  1020. { 12, NOT_MONO, 4, 132, 60, 1056, 480, 0, 1,
  1021.   MemMap_Text80, ROMFont8x8, NOT_PLASMA,
  1022.   { 0xEB, 0x0C, 0x0F, 0x01 },
  1023.  {
  1024.   { RegOutput_CMD,  { "\xEB", MiscOutputRegWrite, 0x01 } },
  1025.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  1026.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  1027.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8D\x9B\x8\x3E\x0\x47\x6\x7\x0\x0\x0\x0\xEA\xAC\xDF\x42\x1F\xE7\x4\xA3\xFF", 0x00, 0x18+1 } },
  1028.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\xC\x0\xF\x0", 0x00, 0x14 } },
  1029.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0E\x00\xFF", 0x00, 0x09 } },
  1030.   { Terminate_CMD }
  1031.  } },   /* Mode 28h */
  1032.  
  1033. /* Mode index 40 */
  1034. { 12, 0, 0, 132, 43, 1056, 350, 0, 1,
  1035.   MemMap_Mono, ROMFont8x8, IGNORE_CLR_BRST+NOT_PLASMA,
  1036.   { 0xAA, 0x0E, 0x0F, 0x01 },
  1037.  {
  1038.   { RegOutput_CMD,  { "\xAA", MiscOutputRegWrite, 0x01 } },
  1039.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  1040.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  1041.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8D\x9B\xBF\x1F\x0\x47\x6\x7\x0\x0\x0\x0\x83\xA5\x57\x42\x1F\x63\xBA\xA3\xFF", 0x00, 0x18+1 } },
  1042.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x00", 0x00, 0x14 } },
  1043.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\x0FF", 0x00, 0x09 } },
  1044.   { Terminate_CMD }
  1045.  } },   /* Mode 18h */
  1046.  
  1047. /* Mode index 41 */
  1048. { 12, 0, 0, 132, 60, 1056, 480, 0, 1,
  1049.   MemMap_Mono, ROMFont8x8, IGNORE_CLR_BRST+NOT_PLASMA,
  1050.   { 0xEA, 0x0E, 0x0F, 0x01 },
  1051.  {
  1052.   { RegOutput_CMD,  { "\xEA", MiscOutputRegWrite, 0x01 } },
  1053.   { Sequencers_CMD, { "\x01\x01\x03\x00\x02", 0x00, 0x04+1 } },
  1054.   { CRTCtlRegs_CMD, { "\x0E", 0x11, 0x01 } },
  1055.   { CRTCtlRegs_CMD, { "\xA0\x83\x84\x83\x8D\x9B\x8\x3E\x0\x47\x6\x7\x0\x0\x0\x0\xEA\xAC\xDF\x42\x1F\xE7\x4\xA3\xFF", 0x00, 0x18+1 } },
  1056.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\x0E\x0\x0F\x00", 0x00, 0x14 } },
  1057.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x0A\x00\x0FF", 0x00, 0x09 } },
  1058.   { Terminate_CMD }
  1059.  } },   /* Mode 1Ch */                                         /*MS?? - END */
  1060.  
  1061.  
  1062. /* Mode index 42 */
  1063. { 12, NOT_MONO+GRAPHICS, 8, 80, 30, 640, 480, 0, 1,
  1064.   MemMap_Mode2E, ROMFont8x16, IGNORE_CLR_BRST+NOT_PLASMA,
  1065.   { 0xE3, 0x41, 0x0F, 0x01 },
  1066.  {
  1067.   { RegOutput_CMD,  { "\xE3", MiscOutputRegWrite, 0x01 } },
  1068.   { Sequencers_CMD, { "\x01\x01\xFF\x00\x0E", 0x00, 0x05 } },
  1069.   { CRTCtlRegs_CMD, { "\x05", 0x11, 0x01 } },
  1070.   { CRTCtlRegs_CMD, { "\xC3\x9F\xA1\x85\xA6\x1F\xB\x3E\x0\x40\x0\x0\x0\x0\x0\x0\xEA\x8C\xDF\x80\x40\xE7\x4\xE3\xFF", 0x00, 0x19 } },
  1071.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xA\xB\xC\xD\xE\xF\x41\x0\xF\x0", 0x00, 0x14 } },
  1072.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x05\x0F\xFF", 0x00, 0x09 } },
  1073.   { Graphics_CMD,   { "\x1\x0\x0\x7\x0\x0\x8", 0x40, 0x07 } },
  1074.   { Terminate_CMD }
  1075.  } },   /* Mode 2E */
  1076.  
  1077. /*
  1078. ** 664 pixel wide mode (for 132 columns in a APA VGA mode)
  1079. */
  1080.  
  1081. /*
  1082. **  Mode index 43
  1083. **  @DAK 12-Sep-91
  1084. */
  1085. { 12, NOT_MONO+GRAPHICS, 4, 80, 30, 664, 480, 0, 1,   /* VioSetMode Structure */
  1086.   MemMap_Mode12, ROMFont8x16, IGNORE_CLR_BRST+NOT_PLASMA,
  1087.  { 0xE3, 0x01, 0x0F, 0x01 },
  1088.  {
  1089.   { RegOutput_CMD,  { "\xE3", MiscOutputRegWrite, 0x01 } },
  1090.   { Sequencers_CMD, { "\x01\x01\x0F\x00\x06", 0x00, 0x04+1 } },
  1091.   { CRTCtlRegs_CMD, { "\x05", 0x11, 0x01 } },
  1092.   { CRTCtlRegs_CMD, { "\x5F\x52\x53\x82\x55\x81\xB\x3E\x0\x40\x0\x0\x0\x0\x0\x0\xEA\x8C\xDF\x2A\x0\xE7\x4\xC3\xFF", 0x00, 0x18+1 } },
  1093.   { RegOutput_CMD,  { "\xE3", MiscOutputRegWrite, 0x01 } },
  1094.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x01\x0\x0F\x0", 0x00, 0x14 } },
  1095.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x05\x0F\x0FF", 0x00, 0x09 } },
  1096.   { Terminate_CMD }
  1097.  } }   /* Mode 12 */
  1098.  
  1099. #endif  /* VDHVGA                                                         MS00 */
  1100.  
  1101. #if VDHEGA                                                              /*MS00 */
  1102.  
  1103. /*
  1104. ** Greater than 64K of memory on display adapter
  1105. */
  1106.  
  1107. /*
  1108. **  Mode index 0
  1109. */
  1110. { 12, NOT_MONO+GRAPHICS, 2, 40, 25, 320, 200, 0, 1,   /* VioSetMode Structure */
  1111.   MemMap_LoRes, ROMFont8x8, EGA_GT_64K,
  1112.  {  /* [0][0-7] ega4 */
  1113.   { Sequencers_CMD, { "\x1\xB\x3\x0\x2", 0x00, 0x04+1 } },
  1114.   { RegOutput_CMD,  { "\x23", MiscOutputRegWrite, 0x01 } },
  1115.   { CRTCtlRegs_CMD, { "\x37\x27\x2D\x37\x30\x14\x4\x11\x0\x1\x0\x0\x0\x0\x0\x0\xE1\x24\xC7\x14\x0\xE0\xF0\xA2\xFF", 0x00, 0x18+1 } },
  1116.   { Attributes_CMD, { "\x0\x13\x15\x17\x2\x4\x6\x7\x10\x11\x12\x13\x14\x15\x16\x17\x1\x0\x3\x0", 0x00, 0x14 } },
  1117.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1118.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1119.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x30\xF\x0\xFF", 0x00, 0x09 } },
  1120.   { Terminate_CMD }
  1121.  } },   /* Modes 4, 5 */
  1122.  
  1123. /*
  1124. **  Mode index 1
  1125. */
  1126. { 12, GRAPHICS, 0, 80, 25, 640, 350, 0, 1,            /* VioSetMode Structure */
  1127.   MemMap_ModeF, ROMFont8x14, IGNORE_CLR_BRST+EGA_GT_64K,                /*          */
  1128.  {  /* [1][0-7] egaF */
  1129.   { Sequencers_CMD, { "\x01\x01\x0F\x00\x06", 0x00, 0x04+1 } },
  1130.   { RegOutput_CMD,  { "\xA2", MiscOutputRegWrite, 0x01 } },
  1131.   { CRTCtlRegs_CMD, { "\x60\x4F\x56\x3A\x50\x60\x70\x1F\x0\x0\x0\x0\x0\x0\x0\x0\x5E\x2E\x5D\x28\xD\x5E\x6E\xE3\xFF", 0x00, 0x18+1 } },
  1132.   { Attributes_CMD, { "\x0\x8\x0\x0\x18\x18\x0\x0\x0\x8\x0\x0\x0\x18\x0\x0\xB\x0\x5\x0", 0x00, 0x14 } },
  1133.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1134.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1135.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x5\xF\xFF", 0x00, 0x09 } },
  1136.   { Terminate_CMD }
  1137.  } },   /* Mode F */
  1138.  
  1139. /*
  1140. ** Less than or equal to 64K of memory on display adapter
  1141. */
  1142.  
  1143. /*
  1144. **  Mode index 2
  1145. */
  1146. { 12, NOT_MONO+GRAPHICS, 2, 40, 25, 320, 200, 0, 1,   /* VioSetMode Structure */
  1147.   MemMap_LoRes, ROMFont8x8, 0,
  1148.  {  /* [3][0-0] ega4b */
  1149.   { Sequencers_CMD, { "\x1\xB\x3\x0\x2", 0x00, 0x04+1 } },
  1150.   { RegOutput_CMD,  { "\x23", MiscOutputRegWrite, 0x01 } },
  1151.   { CRTCtlRegs_CMD, { "\x37\x27\x2D\x37\x30\x14\x4\x11\x0\x1\x0\x0\x0\x0\x0\x0\xE1\x24\xC7\x14\x0\xE0\xF0\xA2\xFF", 0x00, 0x18+1 } },
  1152.   { Attributes_CMD, { "\x0\x13\x15\x17\x2\x4\x6\x7\x10\x11\x12\x13\x14\x15\x16\x17\x1\x0\x3\x0", 0x00, 0x14 } },
  1153.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1154.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1155.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x30\xF\x0\xFF", 0x00, 0x09 } },
  1156.   { Terminate_CMD }
  1157.  } },   /* Modes 4, 5 */
  1158.  
  1159. /*
  1160. **  Mode index 3
  1161. */
  1162. { 12, GRAPHICS, 0, 80, 25, 640, 350, 0, 1,            /* VioSetMode Structure */
  1163.   MemMap_ModeF, ROMFont8x14, IGNORE_CLR_BRST, /*          */
  1164.  {  /* [4][0-7] egaFm */
  1165.   { Sequencers_CMD, { "\x1\x5\xF\x0\x0", 0x00, 0x04+1 } },
  1166.   { RegOutput_CMD,  { "\xA2", MiscOutputRegWrite, 0x01 } },
  1167.   { CRTCtlRegs_CMD, { "\x60\x4F\x56\x1A\x50\xE0\x70\x1F\x0\x0\x0\x0\x0\x0\x0\x0\x5E\x2E\x5D\x14\xD\x5E\x6E\x8B\xFF", 0x00, 0x18+1 } },
  1168.   { Attributes_CMD, { "\x0\x8\x0\x0\x18\x18\x0\x0\x0\x8\x0\x0\x0\x18\x0\x0\xB\x0\x5\x0", 0x00, 0x14 } },
  1169.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1170.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1171.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x7\xF\xFF", 0x00, 0x09 } },
  1172.   { Terminate_CMD }
  1173.  } },   /* Mode Fm */
  1174.  
  1175. /*
  1176. **  Mode index 4
  1177. */
  1178. { 12, NOT_MONO, 4, 80, 25, 640, 350, 0, 1,            /* VioSetMode Structure */
  1179.   MemMap_Text80, ROMFont8x14, ENHANCED_MONITOR,
  1180.  {  /* [6][0-7] ega3 */
  1181.   { Sequencers_CMD, { "\x01\x01\x03\x00\x03", 0x00, 0x04+1 } },
  1182.   { RegOutput_CMD,  { "\xA7", MiscOutputRegWrite, 0x01 } },
  1183.   { CRTCtlRegs_CMD, { "\x5B\x4F\x53\x37\x51\x5B\x6C\x1F\x0\xD\xB\xD\x0\x0\x0\x0\x5E\x2B\x5D\x28\x1F\x5E\xA\xA3\xFF", 0x00, 0x18+1 } },
  1184.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x8\x0\xF\x0", 0x00, 0x14 } },
  1185.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1186.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1187.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\xE\x0\xFF", 0x00, 0x09 } },
  1188.   { Terminate_CMD }
  1189.  } },   /* Mode 3 */
  1190.  
  1191. /*
  1192. **  Mode index 5
  1193. */
  1194. { 12, 0, 0, 80, 25, 720, 350, 0, 1,                   /* VioSetMode Structure */
  1195.   MemMap_Mono, ROMFont9x14, IGNORE_CLR_BRST, /*          */
  1196.  {  /* [7][0-7] egm7 */
  1197.   { Sequencers_CMD, { "\x1\x0\x3\x0\x3", 0x00, 0x04+1 } },
  1198.   { RegOutput_CMD,  { "\xA6", MiscOutputRegWrite, 0x01 } },
  1199.   { CRTCtlRegs_CMD, { "\x60\x4F\x56\x3A\x51\x60\x70\x1F\x0\xD\xB\xD\x0\x0\x0\x0\x5E\x2E\x5D\x28\x1F\x5E\x6E\xA3\xFF", 0x00, 0x18+1 } },
  1200.   { Attributes_CMD, { "\x0\x8\x8\x8\x8\x8\x8\x8\x10\x18\x18\x18\x18\x18\x18\x18\xE\x0\xF\x8", 0x00, 0x14 } },
  1201.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1202.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1203.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\xA\x0\xFF", 0x00, 0x09 } },
  1204.   { Terminate_CMD }
  1205.  } },   /* Mode 7 */
  1206.  
  1207. /*
  1208. **  Mode index 6
  1209. */
  1210. { 12, NOT_MONO, 4, 40, 25, 320, 350, 0, 1,            /* VioSetMode Structure */
  1211.   MemMap_Text40, ROMFont8x14, ENHANCED_MONITOR,
  1212.  {  /* [8][0-3] ega1 */
  1213.   { Sequencers_CMD, { "\x1\xB\x3\x0\x3", 0x00, 0x04+1 } },
  1214.   { RegOutput_CMD,  { "\xA7", MiscOutputRegWrite, 0x01 } },
  1215.   { CRTCtlRegs_CMD, { "\x2D\x27\x2B\x2D\x28\x6D\x6C\x1F\x0\xD\xB\xD\x0\x0\x0\x0\x5E\x2B\x5D\x14\x1F\x5E\xA\xA3\xFF", 0x00, 0x18+1 } },
  1216.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x8\x0\xF\x0", 0x00, 0x14 } },
  1217.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1218.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1219.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\xE\x0\xFF", 0x00, 0x09 } },
  1220.   { Terminate_CMD }
  1221.  } },   /* Modes 1 */
  1222.  
  1223. /*
  1224. **  Mode index 7
  1225. */
  1226. { 12, NOT_MONO, 4, 80, 25, 640, 200, 0, 1,            /* VioSetMode Structure */
  1227.   MemMap_Text80, ROMFont8x8, 0,
  1228.  {  /* [9][0-7] egc3 */
  1229.   { Sequencers_CMD, { "\x1\x1\x3\x0\x3", 0x00, 0x04+1 } },
  1230.   { RegOutput_CMD,  { "\x23", MiscOutputRegWrite, 0x01 } },
  1231.   { CRTCtlRegs_CMD, { "\x70\x4F\x5C\x2F\x5F\x7\x4\x11\x0\x7\x6\x0\x0\x0\x0\x0\xE1\x24\xC7\x28\x1F\xE0\xF0\xA3\xFF", 0x00, 0x18+1 } },
  1232.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x6\x7\x10\x11\x12\x13\x14\x15\x16\x17\x8\x0\xF\x0", 0x00, 0x14 } },
  1233.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1234.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1235.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\xE\x0\xFF", 0x00, 0x09 } },
  1236.   { Terminate_CMD }
  1237.  } },   /* Mode 3c*/
  1238.  
  1239. /*
  1240. **  Mode index 8
  1241. */
  1242. { 12, NOT_MONO, 4, 40, 25, 320, 200, 0, 1,            /* VioSetMode Structure */
  1243.   MemMap_Text40, ROMFont8x8, 0,
  1244.  {  /* [10][0-3] egc1 */
  1245.   { Sequencers_CMD, { "\x1\xB\x3\x0\x3", 0x00, 0x04+1 } },
  1246.   { RegOutput_CMD,  { "\x23", MiscOutputRegWrite, 0x01 } },
  1247.   { CRTCtlRegs_CMD, { "\x37\x27\x2D\x37\x31\x15\x4\x11\x0\x7\x6\x0\x0\x0\x0\x0\xE1\x24\xC7\x14\x1F\xE0\xF0\xA3\xFF", 0x00, 0x18+1 } },
  1248.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x6\x7\x10\x11\x12\x13\x14\x15\x16\x17\x8\x0\xF\x0", 0x00, 0x14 } },
  1249.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1250.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1251.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\xE\x0\xFF", 0x00, 0x09 } },
  1252.   { Terminate_CMD }
  1253.  } },   /* Modes 1c */
  1254.  
  1255. /*
  1256. **  Mode index 9
  1257. */
  1258. { 12, NOT_MONO+GRAPHICS, 1, 80, 25, 640, 200, 0, 1,   /* VioSetMode Structure */
  1259.   MemMap_LoRes, ROMFont8x8, IGNORE_CLR_BRST,
  1260.  {  /* [10][0-7] ega6 */
  1261.   { Sequencers_CMD, { "\x01\x01\x01\x00\x06", 0x00, 0x04+1 } },
  1262.   { RegOutput_CMD,  { "\x23", MiscOutputRegWrite, 0x01 } },
  1263.   { CRTCtlRegs_CMD, { "\x70\x4F\x59\x2D\x5E\x6\x4\x11\x0\x1\x0\x0\x0\x0\x0\x0\xE0\x23\xC7\x28\x0\xDF\xEF\xC2\xFF", 0x00, 0x18+1 } },
  1264.   { Attributes_CMD, { "\x0\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x1\x0\x1\x0", 0x00, 0x14 } },
  1265.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1266.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1267.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\xD\x0\xFF", 0x00, 0x09 } },
  1268.   { Terminate_CMD }
  1269.  } },   /* Mode 6 */
  1270.  
  1271. /*
  1272. **  Mode index 10
  1273. **            
  1274. */
  1275. { 12, NOT_MONO+GRAPHICS, 4, 80, 25, 640, 350, 0, 1,   /* VioSetMode Structure */
  1276.   MemMap_Mode10, ROMFont8x14, IGNORE_CLR_BRST+ENHANCED_MONITOR+EGA_GT_64K, /*          */
  1277.  {  /* [2][0-7] ega10 */
  1278.   { Sequencers_CMD, { "\x1\x1\xF\x0\x6", 0x00, 0x04+1 } },
  1279.   { RegOutput_CMD,  { "\xA7", MiscOutputRegWrite, 0x01 } },
  1280.   { CRTCtlRegs_CMD, { "\x5B\x4F\x53\x37\x52\x0\x6C\x1F\x0\x0\x0\x0\x0\x0\x0\x0\x5E\x2B\x5D\x28\xF\x5F\xA\xE3\xFF", 0x00, 0x18+1 } },
  1281.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x14\x7\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x1\x0\xF\x0", 0x00, 0x14 } },
  1282.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1283.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1284.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x5\xF\xFF", 0x00, 0x09 } },
  1285.   { Terminate_CMD }
  1286.  } },   /* Mode 10 */
  1287.  
  1288. /*
  1289. **  Mode index 11
  1290. **            
  1291. */
  1292. { 12, NOT_MONO+GRAPHICS, 4, 80, 25, 640, 200, 0, 1,   /* VioSetMode Structure */
  1293.   MemMap_ModeE, ROMFont8x8, IGNORE_CLR_BRST,
  1294.  {  /* [13][0-5] egaE */
  1295.   { Sequencers_CMD, { "\x1\x1\xF\x0\x6", 0x00, 0x04+1 } },
  1296.   { RegOutput_CMD,  { "\x23", MiscOutputRegWrite, 0x01 } },
  1297.   { CRTCtlRegs_CMD, { "\x70\x4F\x56\x2D\x5E\x6\x4\x11\x0\x0\x0\x0\x0\x0\x0\x0\xE0\x23\xC7\x28\x0\xDF\xEF\xE3\xFF", 0x00, 0x18+1 } },
  1298.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x6\x7\x10\x11\x12\x13\x14\x15\x16\x17\x1\x0\xF\x0", 0x00, 0x14 } },
  1299.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x5\xF\xFF", 0x00, 0x09 } },
  1300.   { Terminate_CMD }
  1301.  } },   /* Mode E */
  1302.  
  1303. /*
  1304. **  Mode index 12
  1305. **            
  1306. */
  1307. { 12, NOT_MONO+GRAPHICS, 4, 40, 25, 320, 200, 0, 1,   /* VioSetMode Structure */
  1308.   MemMap_ModeD, ROMFont8x8, IGNORE_CLR_BRST,
  1309.  {  /* [12][0-7] egaD */
  1310.   { Sequencers_CMD, { "\x1\xB\xF\x0\x6", 0x00, 0x04+1 } },
  1311.   { RegOutput_CMD,  { "\x23", MiscOutputRegWrite, 0x01 } },
  1312.   { CRTCtlRegs_CMD, { "\x37\x27\x2D\x37\x30\x14\x4\x11\x0\x0\x0\x0\x0\x0\x0\x0\xE1\x24\xC7\x14\x0\xE0\xF0\xE3\xFF", 0x00, 0x18+1 } },
  1313.   { Attributes_CMD, { "\x0\x1\x2\x3\x4\x5\x6\x7\x10\x11\x12\x13\x14\x15\x16\x17\x1\x0\xF\x0", 0x00, 0x14 } },
  1314.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1315.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1316.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x0\x5\xF\xFF", 0x00, 0x09 } },
  1317.   { Terminate_CMD }
  1318.  } },   /* Mode D */
  1319.  
  1320. /*
  1321. **  Mode index 13
  1322. */
  1323. { 12, NOT_MONO+GRAPHICS, 2, 80, 25, 640, 350, 0, 1,   /* VioSetMode Structure */
  1324.   MemMap_Mode10, ROMFont8x14, IGNORE_CLR_BRST+ENHANCED_MONITOR, /*          */
  1325.  {  /* [5][0-7] ega10s */
  1326.   { Sequencers_CMD, { "\x1\x5\xF\x0\x0", 0x00, 0x04+1 } },
  1327.   { RegOutput_CMD,  { "\xA7", MiscOutputRegWrite, 0x01 } },
  1328.   { CRTCtlRegs_CMD, { "\x5B\x4F\x53\x17\x50\xBA\x6C\x1F\x0\x0\x0\x0\x0\x0\x0\x0\x5E\x2B\x5D\x14\xF\x5F\xA\x8B\xFF", 0x00, 0x18+1 } },
  1329.   { Attributes_CMD, { "\x0\x1\x0\x0\x4\x7\x0\x0\x0\x1\x0\x0\x4\x7\x0\x0\x1\x0\x5\x0", 0x00, 0x14 } },
  1330.   { RegOutput_CMD,  { "\x00", Graphics1PosReg, 0x01 } },
  1331.   { RegOutput_CMD,  { "\x01", Graphics2PosReg, 0x01 } },
  1332.   { Graphics_CMD,   { "\x0\x0\x0\x0\x0\x10\x7\xF\xFF", 0x00, 0x09 } },
  1333.   { Terminate_CMD }
  1334.  } },   /* Mode 10* */
  1335.  
  1336. #endif  /* VDHEGA */
  1337. #if VDHCGA                                                              /*MS00 */
  1338.  
  1339. /*
  1340. **  Mode index 0
  1341. **  for high resolution VDUs & DSMs
  1342. */
  1343. { 12, NOT_MONO, 4, 80, 25, 720, 350, 0, 1,            /* VioSetMode Structure */
  1344.   MemMap_Text80, ROMFont8x8, VDU_DSM_ONLY,
  1345.  {  /* [0][0-3] cga3s */
  1346.   { CRTCtlRegs_CMD, { "\x71\x50\x5A\xA\x19\x6\x19\x19\x2\xD\xB\xC\x0\x0\x0\x0", 0x00, 16 } },
  1347.   { RegOutput_CMD,  { "\x29", CGAModeCtlReg,  0x01 } },
  1348.   { RegOutput_CMD,  { "\x30", CGAColorSelReg, 0x01 } },
  1349.   { Terminate_CMD }
  1350.  } },   /* Mode 3* */
  1351.  
  1352. /*
  1353. **  Mode index 1
  1354. */
  1355. { 12, NOT_MONO, 4, 80, 25, 640, 200, 0, 1,            /* VioSetMode Structure */
  1356.  
  1357.   MemMap_Text80, ROMFont8x8, 0,
  1358.  
  1359.  {  /* [0][0-3] cga3 */
  1360.   { CRTCtlRegs_CMD, { "\x71\x50\x5A\xA\x1F\x6\x19\x1C\x2\x7\x6\x7\x0\x0\x0\x0", 0x00, 16 } },
  1361.   { RegOutput_CMD,  { "\x29", CGAModeCtlReg,  0x01 } },
  1362.   { RegOutput_CMD,  { "\x30", CGAColorSelReg, 0x01 } },
  1363.   { Terminate_CMD }
  1364.  } },   /* Mode 3 */
  1365.  
  1366. /*
  1367. **  Mode index 2
  1368. */
  1369. { 12, NOT_MONO+NO_CLR_BRST, 4, 80, 25, 640, 200, 0, 1,/* VioSetMode Structure */
  1370.  
  1371.  
  1372.   MemMap_Text80, ROMFont8x8, 0,
  1373.  
  1374.  {  /* [1][0-3] cga2 */
  1375.   { CRTCtlRegs_CMD, { "\x71\x50\x5A\xA\x1F\x6\x19\x1C\x2\x7\x6\x7\x0\x0\x0\x0", 0x00, 16 } },
  1376.   { RegOutput_CMD,  { "\x2D", CGAModeCtlReg,  0x01 } },
  1377.   { RegOutput_CMD,  { "\x30", CGAColorSelReg, 0x01 } },
  1378.   { Terminate_CMD }
  1379.  } },   /* Mode 2 */
  1380.  
  1381. /*
  1382. **  Mode index 3
  1383. */
  1384. { 12, NOT_MONO, 4, 40, 25, 320, 200, 0, 1,            /* VioSetMode Structure */
  1385.  
  1386.  
  1387.   MemMap_Text40, ROMFont8x8, 0,
  1388.  
  1389.  {  /* [2][0-3] cga1 */
  1390.   { CRTCtlRegs_CMD, { "\x38\x28\x2D\xA\x1F\x6\x19\x1C\x2\x7\x6\x7\x0\x0\x0\x0", 0x00, 16 } },
  1391.   { RegOutput_CMD,  { "\x28", CGAModeCtlReg,  0x01 } },
  1392.   { RegOutput_CMD,  { "\x30", CGAColorSelReg, 0x01 } },
  1393.   { Terminate_CMD }
  1394.  } },   /* Mode 1 */
  1395.  
  1396. /*
  1397. **  Mode index 4
  1398. */
  1399. { 12, NOT_MONO+NO_CLR_BRST, 4, 40, 25, 320, 200, 0, 1,/* VioSetMode Structure */
  1400.  
  1401.  
  1402.   MemMap_Text40, ROMFont8x8, 0,
  1403.  
  1404.  {  /* [3][0-3] cga0 */
  1405.   { CRTCtlRegs_CMD, { "\x38\x28\x2D\xA\x1F\x6\x19\x1C\x2\x7\x6\x7\x0\x0\x0\x0", 0x00, 16 } },
  1406.   { RegOutput_CMD,  { "\x2C", CGAModeCtlReg,  0x01 } },
  1407.   { RegOutput_CMD,  { "\x30", CGAColorSelReg, 0x01 } },
  1408.   { Terminate_CMD }
  1409.  } },   /* Mode 0 */
  1410.  
  1411. /*
  1412. **  Mode index 5
  1413. */
  1414. { 12, NOT_MONO+GRAPHICS, 2, 40, 25, 320, 200, 0, 1,   /* VioSetMode Structure */
  1415.  
  1416.   MemMap_LoRes, ROMFont8x8, 0,
  1417.  
  1418.  {  /* [4][0-3] cga5 */
  1419.   { CRTCtlRegs_CMD, { "\x38\x28\x2D\xA\x7F\x6\x64\x70\x2\x1\x6\x7\x0\x0\x0\x0", 0x00, 16 } },
  1420.   { RegOutput_CMD,  { "\x2A", CGAModeCtlReg,  0x01 } },
  1421.   { RegOutput_CMD,  { "\x30", CGAColorSelReg, 0x01 } },
  1422.   { Terminate_CMD }
  1423.  } },   /* Mode 5 */
  1424.  
  1425. /*
  1426. **  Mode index 6
  1427. */
  1428. { 12, NOT_MONO+GRAPHICS+NO_CLR_BRST, 2, 40, 25, 320, 200, 0, 1, /* VioSetMode Structure */
  1429.  
  1430.  
  1431.   MemMap_LoRes, ROMFont8x8, 0,
  1432.  
  1433.  {  /* [5][0-3] cga4 */
  1434.   { CRTCtlRegs_CMD, { "\x38\x28\x2D\xA\x7F\x6\x64\x70\x2\x1\x6\x7\x0\x0\x0\x0", 0x00, 16 } },
  1435.   { RegOutput_CMD,  { "\x2E", CGAModeCtlReg,  0x01 } },
  1436.   { RegOutput_CMD,  { "\x30", CGAColorSelReg, 0x01 } },
  1437.   { Terminate_CMD }
  1438.  } },   /* Mode 4 */
  1439.  
  1440. /*
  1441. **  Mode index 7
  1442. */
  1443. { 12, NOT_MONO+GRAPHICS, 1, 80, 25, 640, 200, 0, 1,   /* VioSetMode Structure */
  1444.  
  1445.   MemMap_LoRes, ROMFont8x8, IGNORE_CLR_BRST,
  1446.  
  1447.  {  /* [6][0-3] cga6 */
  1448.   { CRTCtlRegs_CMD, { "\x38\x28\x2D\xA\x7F\x6\x64\x70\x2\x1\x6\x7\x0\x0\x0\x0", 0x00, 16 } },
  1449.   { RegOutput_CMD,  { "\x1E", CGAModeCtlReg,  0x01 } },
  1450.   { RegOutput_CMD,  { "\x3F", CGAColorSelReg, 0x01 } },
  1451.   { Terminate_CMD }
  1452.  } },   /* Mode 6 */
  1453.  
  1454.  
  1455. /* Add BIOS mode 40 640x400 monochrome graphics here */
  1456.  
  1457. /*
  1458. **  Mode index 15
  1459. */
  1460.  
  1461. { 12, NOT_MONO+GRAPHICS, 1, 80, 25, 640, 400, 0, 1,   /* VioSetMode Structure */
  1462.  
  1463.   MemMap_Mode40, ROMFont8x8, IGNORE_CLR_BRST+IDC_PLASMA_ONLY,
  1464.  
  1465.  {  /* [7][0-3] dmp40 */
  1466.  
  1467.   { CRTCtlRegs_CMD, { "\x38\x28\x2D\xA\x7F\x6\x64\x70\x2\x1\x6\x7\x0\x0\x0\x0", 0x00, 16 } },
  1468.  
  1469.   { RegOutput_CMD,  { "\x1E", CGAModeCtlReg,  0x01 } },
  1470.   { RegOutput_CMD,  { "\x3F", CGAColorSelReg, 0x01 } },
  1471.   { Terminate_CMD }
  1472.  } },   /* Mode 40 */
  1473.  
  1474. #endif  /* VDHCGA */
  1475. #if VDHMPA                                                              /*MS00 */
  1476.  
  1477. /*
  1478. **  Mode index 0
  1479. */
  1480. { 12, 0, 0, 80, 25, 720, 350, 0, 1,                   /* VioSetMode Structure */
  1481.   MemMap_Mono, 0, IGNORE_CLR_BRST, /*          */
  1482.  {  /* [0][0-3] mpa7 */
  1483.   { RegOutput_CMD,  { "\x01", CRTCtlPort1, 0x01 } },
  1484.   { CRTCtlRegs_CMD, { "\x61\x50\x52\xF\x19\x6\x19\x19\x2\xD\xB\xC\x0\x0\x0\x0", 0x00, 16 } },
  1485.   { RegOutput_CMD,  { "\x29", CRTCtlPort1, 0x01 } },
  1486.   { Terminate_CMD }
  1487.  } }    /* Mode 7 */
  1488.  
  1489. #endif  /* VDHMPA                                                         MS00 */
  1490. #if VDH8514A                                                            /*MS00 */
  1491.  
  1492. /*
  1493. **  Mode index 0
  1494. */
  1495. { 12, NATIVE+GRAPHICS+NOT_MONO, 8, 85, 38, 1024, 768, 0, 1, /* VioSetMode Structure */
  1496.   0, 0, IGNORE_CLR_BRST, /*          */
  1497.  {  /* [0][0] bga1 */
  1498.   { RegOutput_CMD,  { "\x53"    , 0x22E8, 0x01 } },     /*          */
  1499.   { RegOutput_CMD,  { "\x07"    , 0x4AE8, 0x01 } },     /*          */
  1500.   { RegOutput_CMD,  { "\x60\x06", 0x12E8, SETWORD } },  /*          */
  1501.   { RegOutput_CMD,  { "\x00\x06", 0x1AE8, SETWORD } },  /*          */
  1502.   { RegOutput_CMD,  { "\xFB\x05", 0x16E8, SETWORD } },  /*          */
  1503.   { RegOutput_CMD,  { "\x9D"    , 0x02E8, 0x01 } },     /*          */
  1504.   { RegOutput_CMD,  { "\x81"    , 0x0AE8, 0x01 } },     /*          */
  1505.   { RegOutput_CMD,  { "\x7F"    , 0x06E8, 0x01 } },     /*          */
  1506.   { RegOutput_CMD,  { "\x16"    , 0x0EE8, 0x01 } },     /*          */
  1507.   { RegOutput_CMD,  { "\x08"    , 0x1EE8, 0x01 } },     /*          */
  1508.   { RegOutput_CMD,  { "\x33"    , 0x22E8, 0x01 } },     /*          */
  1509.   { RegOutput_CMD,  { "\xFF"    , 0x02EA, 0x01 } },     /*          */
  1510.   { Terminate_CMD }
  1511.  } },
  1512.  
  1513. /*
  1514. **  Mode index 1
  1515. */
  1516. { 12, NATIVE+GRAPHICS+NOT_MONO, 8, 80, 34, 640, 480, 0, 1, /* VioSetMode Structure */
  1517.   0, 0, IGNORE_CLR_BRST, /*          */
  1518.  {  /* [1][0] bga2 */
  1519.   { RegOutput_CMD,  { "\x43"    , 0x22E8, 0x01 } },     /*          */
  1520.   { RegOutput_CMD,  { "\x03"    , 0x4AE8, 0x01 } },     /*          */
  1521.   { RegOutput_CMD,  { "\x18\x04", 0x12E8, SETWORD } },  /*          */
  1522.   { RegOutput_CMD,  { "\xD2\x03", 0x1AE8, SETWORD } },  /*          */
  1523.   { RegOutput_CMD,  { "\xBB\x03", 0x16E8, SETWORD } },  /*          */
  1524.   { RegOutput_CMD,  { "\x63"    , 0x02E8, 0x01 } },     /*          */
  1525.   { RegOutput_CMD,  { "\x52"    , 0x0AE8, 0x01 } },     /*          */
  1526.   { RegOutput_CMD,  { "\x4F"    , 0x06E8, 0x01 } },     /*              */
  1527.   { RegOutput_CMD,  { "\x2C"    , 0x0EE8, 0x01 } },     /*              */
  1528.   { RegOutput_CMD,  { "\x22"    , 0x1EE8, 0x01 } },     /*          */
  1529.   { RegOutput_CMD,  { "\x23"    , 0x22E8, 0x01 } },     /*          */
  1530.   { RegOutput_CMD,  { "\xFF"    , 0x02EA, 0x01 } },     /*          */
  1531.   { Terminate_CMD }
  1532.  } },
  1533.  
  1534. /*
  1535. **  Mode index 2
  1536. */
  1537. { 12, NATIVE+GRAPHICS+NOT_MONO, 4, 85, 38, 1024, 768, 0, 1, /* VioSetMode Structure */
  1538.   0, 0, IGNORE_CLR_BRST, /*          */
  1539.  {  /* [2][0] bga3 */
  1540.   { RegOutput_CMD,  { "\x53"    , 0x22E8, 0x01 } },     /*          */
  1541.   { RegOutput_CMD,  { "\x07"    , 0x4AE8, 0x01 } },     /*          */
  1542.   { RegOutput_CMD,  { "\x60\x06", 0x12E8, SETWORD } },  /*          */
  1543.   { RegOutput_CMD,  { "\x00\x06", 0x1AE8, SETWORD } },  /*          */
  1544.   { RegOutput_CMD,  { "\xFB\x05", 0x16E8, SETWORD } },  /*          */
  1545.   { RegOutput_CMD,  { "\x9D"    , 0x02E8, 0x01 } },     /*          */
  1546.   { RegOutput_CMD,  { "\x81"    , 0x0AE8, 0x01 } },     /*          */
  1547.   { RegOutput_CMD,  { "\x7F"    , 0x06E8, 0x01 } },     /*          */
  1548.   { RegOutput_CMD,  { "\x16"    , 0x0EE8, 0x01 } },     /*          */
  1549.   { RegOutput_CMD,  { "\x08"    , 0x1EE8, 0x01 } },     /*          */
  1550.   { RegOutput_CMD,  { "\x33"    , 0x22E8, 0x01 } },     /*          */
  1551.   { RegOutput_CMD,  { "\xFF"    , 0x02EA, 0x01 } },     /*          */
  1552.   { Terminate_CMD }
  1553.  } },
  1554.  
  1555. /*
  1556. **  Mode index 3
  1557. */
  1558. { 12, NATIVE+GRAPHICS+NOT_MONO, 4, 80, 34, 640, 480, 0, 1, /* VioSetMode Structure */
  1559.   0, 0, IGNORE_CLR_BRST, /*          */
  1560.  {  /* [3][0] bga4 */
  1561.   { RegOutput_CMD,  { "\x41"    , 0x22E8, 0x01 } },     /*          */
  1562.   { RegOutput_CMD,  { "\x03"    , 0x4AE8, 0x01 } },     /*          */
  1563.   { RegOutput_CMD,  { "\x30\x08", 0x12E8, SETWORD } },  /*          */
  1564.   { RegOutput_CMD,  { "\xA8\x07", 0x1AE8, SETWORD } },  /*          */
  1565.   { RegOutput_CMD,  { "\x79\x07", 0x16E8, SETWORD } },  /*          */
  1566.   { RegOutput_CMD,  { "\x63"    , 0x02E8, 0x01 } },     /*          */
  1567.   { RegOutput_CMD,  { "\x52"    , 0x0AE8, 0x01 } },     /*          */
  1568.   { RegOutput_CMD,  { "\x4F"    , 0x06E8, 0x01 } },     /*          */
  1569.   { RegOutput_CMD,  { "\x2C"    , 0x0EE8, 0x01 } },     /*          */
  1570.   { RegOutput_CMD,  { "\x22"    , 0x1EE8, 0x01 } },     /*          */
  1571.   { RegOutput_CMD,  { "\x21"    , 0x22E8, 0x01 } },     /*          */
  1572.   { RegOutput_CMD,  { "\xFF"    , 0x02EA, 0x01 } },     /*          */
  1573.   { Terminate_CMD }
  1574.  } }
  1575.  
  1576. #endif  /* VDH8514A                                                      MS00 */
  1577.  
  1578.  };
  1579.  
  1580. /*
  1581. ** ROM font data table -
  1582. **    typedef struct {
  1583. **              FarAddress PVB;             ; Physical starting address
  1584. **              USHORT     PVBLen;          ; Length
  1585. **              USHORT     Partner;         ; Table index to base font
  1586. **              USHORT     PelColumns;
  1587. **              USHORT     PelRows;
  1588. **              USHORT     Flags;           ; PARTIAL: 1, CODEPTS: 2, FULL: 0
  1589. **              USHORT     FirstCodePoint;
  1590. **              USHORT     NumCodePoints;
  1591. **              } FONTBUFFER;
  1592. **
  1593. ** During first device initialization ( DevEnable ), physical starting
  1594. ** addresses are entered into the table ( via scanning adapter ROM ).
  1595. ** ROM scanning is done over an adapter-dependent range:
  1596. **         E0000 - EFFFF ( VGA )
  1597. **         C0000 - CFFFF ( EGA and PS/2 adapter )
  1598. **         F0000 - FFFFF ( CGA and MPA )
  1599. */
  1600.  
  1601. #if ROMFONT_SUPPORT                                                     /*MS00 */
  1602.  
  1603. /*            ROMCP_TABLE RomCP_Tbl[ROM_FONTS+MAX_CODEPAGES*NUM_FONTS]; */ /* PTM 2895            */
  1604. /*            USHORT CP_Fonts [5][2] = {{8,8}, {8,14}, {9,14}, {8,16}, {9,16}};*/ /* PTM 2895 */
  1605. /*            USHORT ROMCP_NUM;                                       PTM 2895 */
  1606. /*            USHORT NumPreparedCodePages;                      */                  /*            */
  1607.  
  1608.  
  1609.                    /*
  1610.                    ** CGA, EGA and VGA ROM fonts only
  1611.                    */
  1612. FONTBUFFER Fonts[] = {
  1613. { (char far *)0xA0000, 0x2000, NoBaseFont },     /* Font area in video buffer */
  1614. { (char far *)0x00000, Size8, NoBaseFont, 8, 8, FULL }            /* 8x8 ROM */
  1615.  
  1616. #if VDHEGA || VDHVGA                                                    /*MS00 */
  1617.  
  1618.                    /*
  1619.                    ** EGA and VGA ROM fonts only
  1620.                    */
  1621.  
  1622. ,{ (char far *)0x00000, Size14, NoBaseFont,  8, 14, FULL }                  /* 8x14 ROM */
  1623. ,{ (char far *)0x00000, Size14, ROMFont8x14, 9, 14, PARTIAL+CODEPTS, 0, 0 } /* 9x14 ROM */
  1624.  
  1625. #endif  /* VDHEGA || VDHVGA                                               MS00 */
  1626.  
  1627. #if VDHVGA                                                              /*MS00 */
  1628.  
  1629.                    /*
  1630.                    ** VGA ROM fonts only
  1631.                    */
  1632. ,{ (char far *)0x00000, Size16, NoBaseFont,  8, 16, FULL }                  /* 8x16 ROM */
  1633. ,{ (char far *)0x00000, Size16, ROMFont8x16, 9, 16, PARTIAL+CODEPTS, 0, 0 } /* 9x16 ROM */
  1634.  
  1635. #endif  /* VDHVGA                                                         MS00 */
  1636.  
  1637. };
  1638.  
  1639. #endif  /* ROMFONT_SUPPORT                                                MS00 */
  1640.  
  1641. /*
  1642. ** Memory map table -
  1643. **    typedef struct {
  1644. **              USHORT     PageLength; ; Length of each page
  1645. **              USHORT     PageReal;   ; Length of each page (Real Mode)
  1646. **              ULONG      TotalSize;  ; Total size of all pages combined
  1647. **              ULONG      TotalReal;  ; Total size of all pages (Real Mode)
  1648. **              USHORT     BitPlanes;  ; Flag byte of bit planes used
  1649. **              FarAddress Start;
  1650. **              } MEMORYMAPS;
  1651. **
  1652. ** **ese memory maps are used to save and restore the physical video buffer
  1653. */
  1654.  
  1655. MEMORYMAPS MemoryMaps[] = {
  1656.  
  1657. #if VDHMPA                                                              /*MS00 */
  1658.  
  1659. /*          */  {4000,  4096,  4000,  4096,  0, (char far *)0xB0000 }   /* 7 */
  1660.  
  1661. #endif  /* VDHMPA                                                         MS00 */
  1662. #if VDHCGA || VDHEGA || VDHVGA || VDH8514A
  1663.  
  1664. /*          */  {4000, 0x4000, 4000, 0x6000, 0, (char far *)0xB0000 } /* 7, 7p */
  1665. /*          */ ,{2000, 0x4000, 2000, 0x6000, 0, (char far *)0xB8000 } /* 0, 1, s, p */
  1666. /*          */ ,{4000, 0x4000, 4000, 0x6000, 0, (char far *)0xB8000 } /* 2, 3, s, p */
  1667. /*          */ ,{16192,0x4000, 16192,0x4000, 0, (char far *)0xB8000 } /* 4, 5, 6 */
  1668.  
  1669. #endif  /* VDHCGA || VDHEGA || VDHVGA || VDH8514A */
  1670.  
  1671. /*
  1672. ** This is the memory map which describes CGA 640x400 graphics mode #40.
  1673. ** Somehow it didn't get in here when the IDC stuff was originally added.
  1674. ** This is paired with MemMap_Mode40 in VDH.H.  -AJP
  1675. */
  1676.  
  1677. #if VDHCGA
  1678. /*          */ ,{32576,0x8000, 32576,0x8000, 0, (char far *)0xB8000 } /* 40 */
  1679. #endif
  1680.  
  1681. #if VDHEGA      /* 64K EGA default values */                           /*            */
  1682.         /*                                                          */ /*            */
  1683.         /*  PageLength, PageReal, TotalSize and TotalReal will      */ /*            */
  1684.         /*  be dynamically modify by the _getVideoType routine      */ /*            */
  1685.         /*  in VDHXCONF.C according to the memory switch setting    */ /*            */
  1686.  
  1687. /*          */ ,{8000, 0x3F40, 32000, 0x0FD00, 1+2+4+8, (char far *)0xA0000 } /* D */
  1688. /*          */ ,{16000,0x3E80, 64000, 0x0FA00, 1+2+4+8, (char far *)0xA0000 } /* E */
  1689. /*          */ ,{28000,0x7000, 56000, 0x0E000, 1  +4  , (char far *)0xA0000 } /* F */
  1690. /*          */ ,{28000,0x7000, 56000, 0x0E000, 1  +4  , (char far *)0xA0000 } /* 10 */
  1691.  
  1692. #endif  /* VDHEGA */
  1693. #if VDHVGA || VDH8514A  /* 256K VGA default values */                  /*            */
  1694.  
  1695. /*          */ ,{8000, 0xFF40, 32000, 0x3FD00, 1+2+4+8, (char far *)0xA0000 } /* D */
  1696. /*          */ ,{16000,0xFE80, 64000, 0x3FA00, 1+2+4+8, (char far *)0xA0000 } /* E */
  1697. /*          */ ,{28000,0xF000, 56000, 0x1E000, 1  +4  , (char far *)0xA0000 } /* F */
  1698. /*          */ ,{28000,0xF000, 112000,0x3C000, 1+2+4+8, (char far *)0xA0000 } /* 10 */
  1699.  
  1700. #endif  /* VDHVGA || VDH8514A */
  1701. #if VDHVGA
  1702.  
  1703. /*          */ ,{38400,0xA000, 38400, 0x0A000, 0,       (char far *)0xA0000 } /* 11 */
  1704. /*          */ ,{38400,0xA000, 153600,0x28000, 1+2+4+8, (char far *)0xA0000 } /* 12 */
  1705. /*          */ ,{64000,0x0000, 64000, 0x10000, 0,       (char far *)0xA0000 } /* 13 */
  1706. /*          */ ,{4800, 0x4000, 4800,  0x06000, 0,       (char far *)0xB8000 } /* Text480 */
  1707.  
  1708. /*
  1709. ** Memory map for STARDUST 640x480x256 graphics mode.  This has been udated
  1710. ** to report protected-mode total VRAM size of 300K instead of 512K.   -AJP
  1711. */
  1712.  
  1713. /*          */ ,{0000, 0x0000, 307200,0x80000, 0,       (char far *)0xA0000 } /* 2E */
  1714.  
  1715.  
  1716. #endif  /* VDHVGA */
  1717.         };
  1718.  
  1719.