/*++

Copyright (c) 1992  Microsoft Corporation
Copyright (c) 1993  Compaq Computer Corporation

Module Name:

    modeqv.h

Abstract:

    This module contains the mode information to set the individual
    modes for the QVision card.  This module also contains the CRTC
    register information for a monitor set.

Environment:

    Kernel mode

Revision History:


   $0005 - MikeD - 02/08/94
	 . modified to work with build 547's new display.cpl
   $0004
      miked: 1/26/1994
	 . Added third party monitor support to force a 76Hz refresh rate

    Adrian Crisan - First version 4/4/93.

--*/

//
// Constants
//

//
// QVision register definitions
//
                                            // port in mono mode
#define ATT_INITIALIZE_PORT_MONO    INPUT_STATUS_1_MONO
                                            // Register to read to reset
                                            // Attribute Controller index/data
					    // toggle in mono mode

#define ATT_INITIALIZE_PORT_COLOR   INPUT_STATUS_1_COLOR
                                            // Register to read to reset
                                            // Attribute Controller index/data
					    // toggle in color mode
// Aries Specific register equates

#define ARIES_CTL_1 	0x63CA		    // Aries BitBlt Control Register 1
#define DAC_CMD_2	0x13C9		    // Aries DAC Command Register 2
#define OVERFLOW_REG_1	0x42		    // Aries Gfx Ctrl Overflow Reg 1
#define OVERFLOW_REG_2	0x51		    // Aries Gfx Ctrl Overflow Reg 2
#define CO_COLOR_WRITE	0x83C8		    // Aries Cursor/Overscan Write Index Reg
#define CO_COLOR_DATA	0x83c9		    // Aries Cursor/Overscan Data Reg
#define HIGH_ADDR_MAP	0x48		    // Index for High Addr Map register


//
// Graphics Miscellaneous Register     - Index 0x06
//
#define MISC_REG	      0x06	    // Graphics Miscellaneous Register
#define MISC_A0000_128K	      0x00	    // 128K video ram starting at A0000
#define MISC_A0000_64K	      0x04	    // 64K  video ram starting at A0000
#define MISC_B0000_32K	      0x08	    // 32K  video ram starting at B0000
#define MISC_B8000_32K	      0x0C	    // 32K  video ram starting at B8000

//
// Register defines for the QVClearScreen code which uses the BitBLT engin
//
#define ROPSELECT_NO_ROPS      0x00
#define PIXELMASK_ONLY	       0x00
#define PLANARMASK_NONE_0XFF   0x04
#define SRC_IS_PATTERN_REGS    0x02
#define PREG_0		       0x33CA
#define PREG_1		       0x33CB
#define PREG_2		       0x33CC
#define PREG_3		       0x33CD
#define PREG_4		       0x33CA
#define PREG_5		       0x33CB
#define PREG_6		       0x33CC
#define PREG_7		       0x33CD
#define BLT_DEST_ADDR_LO       0x63CC
#define BLT_DEST_ADDR_HI       0x63CE
#define BITMAP_WIDTH	       0x23C2
#define BITMAP_HEIGHT	       0x23C4
#define BLT_CMD_0	       0x33CE
#define BLT_CMD_1	       0x33CF
#define XY_SRC_ADDR	       0x40
#define XY_DEST_ADDR	       0x80
#define BLT_FORWARD	       0x00
#define BLT_START	       0x01
#define GLOBAL_BUSY_BIT        0x40

//
// QVision indexed register indexes.
//

#define IND_CURSOR_START        0x0A        // index in CRTC of the Cursor Start
#define IND_CURSOR_END          0x0B        //  and End registers
#define IND_CURSOR_HIGH_LOC     0x0E        // index in CRTC of the Cursor Location
#define IND_CURSOR_LOW_LOC      0x0F        //  High and Low Registers
#define IND_VSYNC_END           0x11        // index in CRTC of the Vertical Sync
                                            //  End register, which has the bit
                                                                                                         //  that protects/unprotects CRTC
                                                                                                         //  index registers 0-7
#define IND_READ_MAP            0x04        // index of Read Map reg in Graph Ctlr
#define IND_BIT_MASK            0x08        // index of Bit Mask reg in Graph Ctlr
#define IND_SYNC_RESET          0x00        // index of Sync Reset reg in Seq
#define IND_MEMORY_MODE         0x04        // index of Memory Mode reg in Seq

#define START_SYNC_RESET_VALUE  0x01        // value for Sync Reset reg to start
                                            //  synchronous reset
#define END_SYNC_RESET_VALUE    0x03        // value for Sync Reset reg to end

#define MEMORY_MAP_BASE 0x23c6              // Juniper memory map base register
#define CTRL_REG_2      0x23c7              // Juniper control register 2
#define CTRL_REG_3      0x63cb              // Juniper control register 3
//
//  Global Variables
//

//
//  Mode commands for inidividual modes.
//
#define VALID_MODE   0x01                   // monitor supports mode index
#define INVALID_MODE 0x00                   // monitor does not support mode index


//////////////////////////////////////////////////////////////
//    Mode index 0
//    Color text mode 3+, 720x400, 9x16 char cell (VGA)
//    BIOS mode: 0x03
//////////////////////////////////////////////////////////////
#define QV_TEXT_720x400x4_INDEX  0

USHORT QV_TEXT_720x400x4[] = {

   OW,                                      // start sync reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (START_SYNC_RESET_VALUE << 8),

   OWM,
   SEQ_ADDRESS_PORT,
   4,
   0x0001,0x0302,0x0003,0x0204,             // program up sequencer

   //
   // Set the Miscellaneous Output register to establish color/mono addressing
   // and select clocks and sync polarities.
   // Synchronous reset must be in effect while this register is being set,
   // because it contains clock control bits.
   //
   OB,                                      // output a byte
   MISC_OUTPUT_REG_WRITE_PORT,              // at this address
   0x67,                                    // with this value


   OW,
   GRAPH_ADDRESS_PORT,
   0x0e06,

   OW,                                      // End sync reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (END_SYNC_RESET_VALUE << 8),

   OW,                                      // unlock extended registers
   GRAPH_ADDRESS_PORT,
   0x050f,

   OW,                                      // enable BitBlt engine
   GRAPH_ADDRESS_PORT,                      // and disable IRQ 9
   0x2810,

   QVNEW+ARIES,                             // make sure this is an aries mode

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_0,                               // 83c6
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_1,
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_2,
   0x01,
   0x20,

   OW,
   CRTC_ADDRESS_PORT_COLOR,
   0x0511,

   //
   // Set all 25 CRT Controller registers.
   //
   METAOUT+INDXOUT,                         // program crtc registers
   CRTC_ADDRESS_PORT_COLOR,
   VGA_NUM_CRTC_PORTS,                      // count
   0,                                       // start index
   0x5F,0x4f,0x50,0x82,
   0x55,0x81,0xbf,0x1f,
   0x00,0x4f,0x0d,0x0e,
   0x00,0x00,0x00,0x00,
   0x9c,0xBe,0x8f,0x28,
   0x1f,0x96,0xb9,0xa3,
   0xFF,

   IB,                                      // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   METAOUT+ATCOUT,                          //
   ATT_ADDRESS_PORT,                        // port
   VGA_NUM_ATTRIB_CONT_PORTS,               // count
   0,                                       // start index
   0x0,0x1,0x2,0x3,0x4,0x5,0x14,0x7,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
   0x04,0x0,0x0F,0x08,0x0,

   METAOUT+INDXOUT,                         //
   GRAPH_ADDRESS_PORT,                      // port
   VGA_NUM_GRAPH_CONT_PORTS,                // count
   0,                                       // start index
   0x00,0x0,0x0,0x0,0x0,0x10,0x0e,0x0,0xFF,

   OB,
   DAC_PIXEL_MASK_PORT,
   0xFF,

   IB,                                      // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   OB,                                      // turn video on.
   ATT_ADDRESS_PORT,
   VIDEO_ENABLE,

   EOD

}; // QV_TEXT_720x400x4

//////////////////////////////////////////////////////////////
//    Mode index 1
//    Color text mode 3, 640x350, 8x14 char cell (EGA)
//    BIOS mode:0x10
//////////////////////////////////////////////////////////////
#define QV_TEXT_640x350x4_INDEX  1

USHORT QV_TEXT_640x350x4[] = {
   OW,                                     // start sync reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (START_SYNC_RESET_VALUE << 8),

   OWM,
   SEQ_ADDRESS_PORT,
   4,
   0x0101,0x0302,0x0003,0x0204,            // program up sequencer

   OB,
   MISC_OUTPUT_REG_WRITE_PORT,
   0xA3,

   OW,
   GRAPH_ADDRESS_PORT,
   0x0e06,

   OW,                                     // end sync reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (END_SYNC_RESET_VALUE << 8),

   OW,                                      // unlock extended registers
   GRAPH_ADDRESS_PORT,
   0x050f,

   OW,                                      // enable BitBlt engine
   GRAPH_ADDRESS_PORT,                      // and disable IRQ 9
   0x2810,

   QVNEW+ARIES,                             // make sure this is an aries mode

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_0,                               // 83c6
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_1,
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_2,
   0x01,
   0x20,

   OW,
   CRTC_ADDRESS_PORT_COLOR,
   0x0511,

   METAOUT+INDXOUT,                        // program crtc registers
   CRTC_ADDRESS_PORT_COLOR,
   VGA_NUM_CRTC_PORTS,                     // count
   0,                                      // start index
   0x5F,0x4f,0x50,0x82,
   0x55,0x81,0xbf,0x1f,
   0x00,0x4d,0x0b,0x0c,
   0x00,0x00,0x00,0x00,
   0x83,0xB5,0x5d,0x28,
   0x1f,0x63,0xba,0xa3,
   0xFF,

   IB,                                     // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   METAOUT+ATCOUT,                         //
   ATT_ADDRESS_PORT,                       // port
   VGA_NUM_ATTRIB_CONT_PORTS,              // count
   0,                                      // start index
   0x00,0x1,0x2,0x3,0x4,0x5,0x14,0x7,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
   0x00,0x00,0x0F,0x00,0x00,

   METAOUT+INDXOUT,                        //
   GRAPH_ADDRESS_PORT,                     // port
   VGA_NUM_GRAPH_CONT_PORTS,               // count
   0,                                      // start index
   0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00,0x0FF,

   OB,
   DAC_PIXEL_MASK_PORT,
   0xFF,

   IB,                                     // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   OB,                                     // turn video on.
   ATT_ADDRESS_PORT,
   VIDEO_ENABLE,

   EOD
}; // QV_TEXT_640x350x4


//////////////////////////////////////////////////////////////
//    Mode index 2
//    Standard VGA Color graphics, 640x480x4 - 16 colors
//    BIOS mode: 0x12
//////////////////////////////////////////////////////////////
#define QV_TEXT_640x480x4_INDEX   2

USHORT QV_TEXT_640x480x4[] = {
   OW,                                      // start sync reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (START_SYNC_RESET_VALUE << 8),

   OWM,
   SEQ_ADDRESS_PORT,
   4,
   0x0101,0x0f02,0x0003,0x0604,             // program up sequencer


   OB,
   MISC_OUTPUT_REG_WRITE_PORT,
   0xe3,

   OW,                                      //{ SetGraphCmd,{ "\x05", 0x06, 1 } },
   GRAPH_ADDRESS_PORT,
   0x0506,

   OW,                                      // End Sync reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (END_SYNC_RESET_VALUE << 8),

   OW,                                      // unlock extended registers
   GRAPH_ADDRESS_PORT,
   0x050f,

   OW,                                      // enable BitBlt engine
   GRAPH_ADDRESS_PORT,                      // and disable IRQ 9
   0x2810,

   QVNEW+ARIES,                             // make sure this is an aries mode

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_0,                               // 83c6
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_1,
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_2,
   0x01,
   0x20,

   OW,
   CRTC_ADDRESS_PORT_COLOR,
   0x0511,

   METAOUT+INDXOUT,                         // program crtc registers
   CRTC_ADDRESS_PORT_COLOR,
   VGA_NUM_CRTC_PORTS,                      // count
   0,                                       // start index
   0x5F,0x4F,0x50,0x82,
   0x54,0x80,0x0B,0x3E,
   0x00,0x40,0x00,0x00,
   0x00,0x00,0x00,0x00,
   0xEA,0xBC,0xDF,0x28,
   0x00,0xE7,0x04,0xE3,
   0xFF,

   IB,                                      // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   METAOUT+ATCOUT,                          //
   ATT_ADDRESS_PORT,                        // port
   VGA_NUM_ATTRIB_CONT_PORTS,               // count
   0,                                       // start index
   0x00,0x01,0x02,0x03,0x04,
   0x05,0x14,0x07,0x38,0x39,
   0x3A,0x3B,0x3C,0x3D,0x3E,
   0x3F,0x01,0x00,0x0F,0x00,0x00,

   METAOUT+INDXOUT,                         //
   GRAPH_ADDRESS_PORT,                      // port
   VGA_NUM_GRAPH_CONT_PORTS,                // count
   0,                                       // start index
   0x00,0x0,0x0,0x0,0x0,0x0,0x05,0x0F,0x0FF,

   OB,
   DAC_PIXEL_MASK_PORT,
   0xFF,

   IB,                                      // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   OB,                                      // turn video on.
   ATT_ADDRESS_PORT,
   VIDEO_ENABLE,

   EOD

}; // QV_TEXT_640x480x4

//////////////////////////////////////////////////////////////
//    Mode index 3
//    VGA Color graphics, 640x480x8 - 256 colors
//    BIOS mode: 0x32
//////////////////////////////////////////////////////////////
#define QV_640x480x8_INDEX    3

USHORT QV_640x480x8[] = {
   QVNEW+SETRAM,                                // set aries videoram

   OW,                                          // unlock extended registers
   GRAPH_ADDRESS_PORT,
   0x050f,

   OW,                                          // start sync reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (START_SYNC_RESET_VALUE << 8),

   OWM,
   SEQ_ADDRESS_PORT,
   4,
   0x0101,0xff02,0x0003,0x0e04,                 // program up sequencer


   OW,                                  // set seq memory register 4 to 0x0e
   SEQ_ADDRESS_PORT,
   0x0e04,

   OB,                                          // FIX VGA BUG
   SEQ_ADDRESS_PORT,
   0x07,

   IB,
   MISC_OUTPUT_REG_WRITE_OFFSET,

   OW,                                          // END FIX VGA BUG
   CRTC_ADDRESS_COLOR_OFFSET,
   0x013f,

   OW,                                          // end synch reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (END_SYNC_RESET_VALUE << 8),

   OW,                                          // unlock extended registers
   GRAPH_ADDRESS_PORT,
   0x050f,

   OW,                                          // Set AVGA mode
   GRAPH_ADDRESS_PORT,                          // 3ce
   0x0140,

   OW,                                      // set pixel write mask reg to ff
   SEQ_ADDRESS_PORT,                        // 3c4
   0xFF02,                                  // enable 256 colors again

   OW,                                      // enable BitBlt engine
   GRAPH_ADDRESS_PORT,                      // and disable IRQ 9
   0x2810,

   QVCMD+BYTE2PORT,                         // enable 8BPP Aries Mode
   ARIES_CTL_1,
   0x01,
   0x03,

   QVNEW+ARIES,                             // make sure this is an aries mode

   QVCMD+SETMISCOUT,                        // set MISC OUT registers based
                                            // on monitor type

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_0,
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_1,
   0x01,
   0x40,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_2,
   0x01,
   0x20,

   OW,                                      // unlock the CRTC registers
   CRTC_ADDRESS_PORT_COLOR,
   0x0011,

   QVCMD+SETMONCRTC,                        // Set monitor specific CRTC registers

   QVCMD+SETMONOVFLW,                       // Set monitor specific overflow register

   OW,                                      // write 0 to Overflow_reg_1
   GRAPH_ADDRESS_PORT,                      // register (index 42)
   0x0042,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_WRITE,
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_DATA,
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_DATA,
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_DATA,
   0x01,
   0x00,


   IB,                                      // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   METAOUT+ATCOUT,                          //
   ATT_ADDRESS_PORT,                        // port
   VGA_NUM_ATTRIB_CONT_PORTS,               // count
   0,                                       // start index
   0x00,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
   0x41,0x00,0x0F,0x00,0x00,


   OWM,                                     // program the graphics controller
   GRAPH_ADDRESS_PORT,
   VGA_NUM_GRAPH_CONT_PORTS,
   0x0000, 0x0001, 0x0002, 0x0003,
   0x0004, 0x0005, 0x0506, 0x0f07,
   0xFF08,

   OB,
   DAC_PIXEL_MASK_PORT,
   0xFF,

   IB,                                      // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   OB,                                      // turn video on.
   ATT_ADDRESS_PORT,
   VIDEO_ENABLE,

   EOD
}; // QV_640x480x8

//////////////////////////////////////////////////////////////
//    Mode index 4
//    SVGA color graphics, 800x600x8 - 256 colors
//    BIOS Mode: 0x34.
//////////////////////////////////////////////////////////////
#define QV_800x600x8_INDEX    4

USHORT QV_800x600x8[] = {
   QVNEW+SETRAM,                            // set aries videoram

   OW,                                      // unlock extended registers
   GRAPH_ADDRESS_PORT,
   0x050f,

   OW,                                      // start synch reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (START_SYNC_RESET_VALUE << 8),

   OWM,
   SEQ_ADDRESS_PORT,
   4,
   0x0101,0xff02,0x0003,0x0e04,             // program up sequencer

   OW,                                      // set seq memory register 4 to 0x0e
   SEQ_ADDRESS_PORT,
   0x0e04,

   OB,                                      // FIX VGA BUG
   SEQ_ADDRESS_PORT,
   0x07,

   IB,
   MISC_OUTPUT_REG_WRITE_OFFSET,

   OW,                                      // END FIX VGA BUG
   CRTC_ADDRESS_COLOR_OFFSET,
   0x013f,

   OW,                                      // End sync reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (END_SYNC_RESET_VALUE << 8),

   OW,                                      // unlock extended registers
   GRAPH_ADDRESS_PORT,
   0x050f,

   OW,                                      // Set AVGA mode
   GRAPH_ADDRESS_PORT,                      // 3ce
   0x0140,

   OW,                                      // set pixel write mask reg to ff
   SEQ_ADDRESS_PORT,                        // 3c4
   0xFF02,

   OW,                                      // enable BitBlt engine
   GRAPH_ADDRESS_PORT,                      // and disable IRQ 9
   0x2810,

   QVCMD+BYTE2PORT,                         // enable 8BPP Aries Mode
   ARIES_CTL_1,
   0x01,
   0x03,

   QVNEW+ARIES,                             // make sure this is an aries mode

   QVCMD+SETMISCOUT,                        // set MISC OUT registers based
                                            // on monitor type

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_0,
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_1,
   0x01,
   0x40,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_2,
   0x01,
   0x20,

   OW,                                      // unlock the CRTC registers
   CRTC_ADDRESS_PORT_COLOR,
   0x0011,

   QVCMD+SETMONCRTC,                        // Set monitor specific CRTC registers

   QVCMD+SETMONOVFLW,                       // Set monitor specific overflow register

   OW,                                      // write 0 to Overflow_reg_1
   GRAPH_ADDRESS_PORT,                      // register (index 42)
   0x0042,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_WRITE,
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_DATA,
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_DATA,
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_DATA,
   0x01,
   0x00,


   IB,                                      // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   METAOUT+ATCOUT,                          //
   ATT_ADDRESS_PORT,                        // port
   VGA_NUM_ATTRIB_CONT_PORTS,               // count
   0,                                       // start index
   0x00,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
   0x41,0x00,0x0F,0x00,0x00,


   OWM,                                     // program the graphics controller
   GRAPH_ADDRESS_PORT,
   VGA_NUM_GRAPH_CONT_PORTS,
   0x0000, 0x0001, 0x0002, 0x0003,
   0x0004, 0x0005, 0x0506, 0x0F07,
   0xFF08,

   OB,
   DAC_PIXEL_MASK_PORT,
   0xFF,

   IB,                                      // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   OB,                                      // turn video on.
   ATT_ADDRESS_PORT,
   VIDEO_ENABLE,

   EOD
}; // QV_800x600x8


//////////////////////////////////////////////////////////////
//    Mode index 5
//    SVGA color graphics, 1024x768x8 - 256 colors
//    BIOS mode:0x38
//////////////////////////////////////////////////////////////
#define QV_1024x768x8_INDEX   5

USHORT QV_1024x768x8[] = {
   QVNEW+SETRAM,                            // set aries videoram

   OW,                                      // unlock extended registers
   GRAPH_ADDRESS_PORT,
   0x050f,

   OW,                                      // start synch reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (START_SYNC_RESET_VALUE << 8),

   OWM,
   SEQ_ADDRESS_PORT,
   4,
   0x0101,0xff02,0x0003,0x0e04,             // program up sequencer

   OW,                                      // set seq memory register 4 to 0x0e
   SEQ_ADDRESS_PORT,
   0x0e04,

   OB,                                      // FIX VGA BUG
   SEQ_ADDRESS_PORT,
   0x07,

   IB,
   MISC_OUTPUT_REG_WRITE_OFFSET,

   OW,                                      // END FIX VGA BUG
   CRTC_ADDRESS_COLOR_OFFSET,
   0x013f,

   OW,                                      // end synch reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (END_SYNC_RESET_VALUE << 8),

   OW,                                      // unlock extended registers
   GRAPH_ADDRESS_PORT,
   0x050f,

   OW,                                      // Set AVGA mode
   GRAPH_ADDRESS_PORT,                      // 3ce
   0x0140,

   OW,                                      // set pixel write mask reg to ff
   SEQ_ADDRESS_PORT,                        // 3c4
   0xFF02,

   OW,                                      // enable BitBlt engine
   GRAPH_ADDRESS_PORT,                      // and disable IRQ 9
   0x2810,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   ARIES_CTL_1,                             // 63ca
   0x01,
   0x03,

   QVNEW+ARIES,                             // make sure this is an aries mode

   QVCMD+SETMISCOUT,                        // set MISC_OUT register according
                                            // to the connected monitor.

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_0,                               // 83c6
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_1,                               // 13c8
   0x01,
   0x40,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_2,                               // 13c9
   0x01,
   0x20,

   OW,                                      // unlock the CRTC registers
   CRTC_ADDRESS_PORT_COLOR,
   0x0011,

   QVCMD+SETMONCRTC,                        // Set monitor specific CRTC registers

   QVCMD+SETMONOVFLW,                       // Set monitor specific overflow register

   OW,                                      // Set the Overflow_reg_1
   GRAPH_ADDRESS_PORT,
   0x0042,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_WRITE,                          // 83c8
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_DATA,                           // 83c9
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_DATA,                           // 83c9
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_DATA,                           // 83c9
   0x01,
   0x00,


   IB,                                      // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   METAOUT+ATCOUT,                          //
   ATT_ADDRESS_PORT,                        // port
   VGA_NUM_ATTRIB_CONT_PORTS,               // count
   0,                                       // start index
   0x00,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
   0x41,0x00,0x0F,0x00,0x00,


   OWM,                                     // program the graphics controller
   GRAPH_ADDRESS_PORT,
   VGA_NUM_GRAPH_CONT_PORTS,
   0x0000, 0x0001, 0x0002, 0x0003,
   0x0004, 0x0005, 0x0506, 0x0F07,
   0xFF08,

   OB,
   DAC_PIXEL_MASK_PORT,
   0xFF,

   IB,                                      // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   OB,                                      // turn video on.
   ATT_ADDRESS_PORT,
   VIDEO_ENABLE,

   EOD
}; // QV_1024x768x8


//////////////////////////////////////////////////////////////
//    Mode index 6
//    SVGA color graphics, 1280x1024x8 - 256 colors
//    BIOS mode:0x3A
//////////////////////////////////////////////////////////////
#define QV_1280x1024x8_INDEX   6

USHORT QV_1280x1024x8[] = {
   QVNEW+SETRAM,                            // set aries videoram

   OW,                                      // unlock extended registers
   GRAPH_ADDRESS_PORT,
   0x050f,

   OW,                                      // start synch reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (START_SYNC_RESET_VALUE << 8),

   OWM,
   SEQ_ADDRESS_PORT,
   4,
   0x0101,0xff02,0x0003,0x0e04,             // program up sequencer

   OW,                                      // set seq memory register 4 to 0x0e
   SEQ_ADDRESS_PORT,
   0x0e04,

   OB,                                      // FIX VGA BUG
   SEQ_ADDRESS_PORT,
   0x07,

   IB,
   MISC_OUTPUT_REG_WRITE_OFFSET,

   OW,                                      // END FIX VGA BUG
   CRTC_ADDRESS_COLOR_OFFSET,
   0x013f,

   OW,                                      // end synch reset
   SEQ_ADDRESS_PORT,
   IND_SYNC_RESET + (END_SYNC_RESET_VALUE << 8),

   OW,                                      // unlock extended registers
   GRAPH_ADDRESS_PORT,
   0x050f,

   OW,                                      // Set ORION mode
   GRAPH_ADDRESS_PORT,                      // 3ce
   0x0140,

   OW,                                      // set pixel write mask reg to ff
   SEQ_ADDRESS_PORT,                        // 3c4
   0xFF02,

   OW,                                      // enable BitBlt engine
   GRAPH_ADDRESS_PORT,                      // and disable IRQ 9
   0x2810,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   ARIES_CTL_1,                             // 63ca
   0x01,
   0x03,

   QVNEW+V32,                               // Set board in V32 mode

   QVCMD+SETMISCOUT,                        // set MISC_OUT register according
                                            // to the connected monitor.

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_0,                               // 83c6
   0x01,
   0x80,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_CMD_1,                               // 13c8
   0x01,
   0x40,

   // VidalL 04/25/93
   //
   // IMPORTANT: DAC Command register 2 should really be included in the
   // =========  CRTC parameters because of the following:
   //            Qvision 200 monitors (at 76Hz) require the use of pixel
   //            clock 2, which means value 30.  However, the 68Hz
   //            and 60Hz timings require pixel clock 1, which means
   //            value 20.  So, when 60 and 68Hz timings are used, default
   //            to value 20.  But if a Qvision monitor is being used
   //            (CPQ MON), then must changed this value to 30 !!!
   //            Otherwise, the screen will NOT sync in 1280 resolution
   //
   //            DAC_CMD_2 is set by the QVNEW+V32 command. It must NOT
   //            be set later in this stream !!! Otherwise, 1280 may
   //            may not sync on the monitor.
   //
   // VidalL 04/25/93

//   QVCMD+BYTE2PORT,                         // setup DAC control registers
//   DAC_CMD_2,                               // 13c9
//   0x01,
//   0x30  or  0x20,


   QVCMD+BYTE2PORT,                         // setup DAC control registers
   DAC_STATUS_REG,                          // 13c6
   0x01,
   0x08,

   OW,                                      // unlock the CRTC registers
   CRTC_ADDRESS_PORT_COLOR,
   0x0011,

   QVCMD+SETMONCRTC,                        // Set monitor specific CRTC registers

   QVCMD+SETMONOVFLW,                       // Set monitor specific overflow register

   OW,                                      // Set the Overflow_reg_1
   GRAPH_ADDRESS_PORT,
   0x0142,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_WRITE,                          // 83c8
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_DATA,                           // 83c9
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_DATA,                           // 83c9
   0x01,
   0x00,

   QVCMD+BYTE2PORT,                         // setup DAC control registers
   CO_COLOR_DATA,                           // 83c9
   0x01,
   0x00,


   IB,                                      // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   METAOUT+ATCOUT,                          //
   ATT_ADDRESS_PORT,                        // port
   VGA_NUM_ATTRIB_CONT_PORTS,               // count
   0,                                       // start index
   0x00,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
   0x41,0x00,0x0F,0x00,0x00,


   OWM,                                     // program the graphics controller
   GRAPH_ADDRESS_PORT,
   VGA_NUM_GRAPH_CONT_PORTS,
   0x0000, 0x0001, 0x0002, 0x0003,
   0x0004, 0x0005, 0x0506, 0x0F07,
   0xFF08,

   OB,
   DAC_PIXEL_MASK_PORT,
   0xFF,

   IB,                                      // prepare atc for writing
   INPUT_STATUS_1_COLOR,

   OB,                                      // turn video on.
   ATT_ADDRESS_PORT,
   VIDEO_ENABLE,

   EOD
}; // QV_1280x1024x8


//
//
//    The MonData is an array of bytes of the following format:
//    MONCLASS, ModeIndex, Validity, MiscOut, Overflow,
//    25 CRT register values.
//
//      MONCLASS  = The monitor type from the structure
//      ModeIndex = index of the mode (look above)
//      Validity  = 1 if this MONCLASS supports mode.
//      MiscOut   = Misc Out register value for this mode.
//      Overflow  = Overflow 2 register value for this mode.
//      The rest are register values for consecutive CRT registers.
//
//    If the mode is INVALID_MODE then the CRT registers are
//    not put in the array.  This will allow us to move
//    quickly through an array which contains many invalid modes.
//    We know that if the mode is VALID_MODE, we will have 25
//    register values after the Validity value for that mode.
//
//    An INVALID_MODE does not necessarily mean that the
//    particular mode index is not support on the monitor.
//    It only means that for that particular mode we do not
//    have to program the CRTC registers.
//
//
//$DEL$//USHORT usMonData[] = {
//$DEL$//   Monitor_Vga, QV_TEXT_720x400x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_Vga, QV_TEXT_640x350x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_Vga, QV_TEXT_640x480x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_Vga, QV_640x480x8_INDEX, VALID_MODE, 0xef, 0x08,
//$DEL$//      0x5f, 0x4f, 0x50, 0x81, 0x53, 0x9f, 0x0b, 0x3e, 0x00, 0x40,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xbc, 0xdf, 0x80,
//$DEL$//      0x00, 0xe5, 0x03, 0xe3, 0xff,
//$DEL$//   Monitor_Vga, QV_800x600x8_INDEX, INVALID_MODE,
//$DEL$//   Monitor_Vga, QV_1024x768x8_INDEX, INVALID_MODE,
//$DEL$//   Monitor_Vga, QV_1280x1024x8_INDEX, INVALID_MODE,
//$DEL$//
//$DEL$//   Monitor_AG1024, QV_TEXT_720x400x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_AG1024, QV_TEXT_640x350x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_AG1024, QV_TEXT_640x480x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_AG1024, QV_640x480x8_INDEX, VALID_MODE, 0xef, 0x08,
//$DEL$//      0x5f, 0x4f, 0x50, 0x81, 0x53, 0x9f, 0x0b, 0x3e, 0x00, 0x40,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xbc, 0xdf, 0x80,
//$DEL$//      0x00, 0xe5, 0x03, 0xe3, 0xff,
//$DEL$//   Monitor_AG1024, QV_800x600x8_INDEX, INVALID_MODE,
//$DEL$//   Monitor_AG1024, QV_1024x768x8_INDEX, VALID_MODE, 0x2b, 0x00,
//$DEL$//      0xa9, 0x7f, 0x7f, 0x0a, 0x87, 0x9f, 0x2e, 0xf5, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xba, 0xff, 0x80,
//$DEL$//      0x00, 0xff, 0x2c, 0xe3, 0xff,
//$DEL$//   Monitor_AG1024, QV_1280x1024x8_INDEX, INVALID_MODE,
//$DEL$//
//$DEL$//   Monitor_Qvision, QV_TEXT_720x400x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_Qvision, QV_TEXT_640x350x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_Qvision, QV_TEXT_640x480x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_Qvision, QV_640x480x8_INDEX, VALID_MODE, 0xef, 0x08,
//$DEL$//      0x5f, 0x4f, 0x50, 0x81, 0x53, 0x9f, 0x0b, 0x3e, 0x00, 0x40,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xbc, 0xdf, 0x80,
//$DEL$//      0x00, 0xe5, 0x03, 0xe3, 0xff,
//$DEL$//   Monitor_Qvision, QV_800x600x8_INDEX, VALID_MODE, 0x23, 0x20,
//$DEL$//      0x8b, 0x63, 0x66, 0x8b, 0x6d, 0x1d, 0xe9, 0xf0, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xba, 0x57, 0x80,
//$DEL$//      0x00, 0x6e, 0xd1, 0xe3, 0xff,
//$DEL$//   Monitor_Qvision, QV_1024x768x8_INDEX, VALID_MODE, 0x2b, 0x00,
//$DEL$//      0x9e, 0x7f, 0x7f, 0x81, 0x83, 0x93, 0x1e, 0xf1, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb3, 0xff, 0x80,
//$DEL$//      0x00, 0xff, 0x1e, 0xe3, 0xff,
//$DEL$//   Monitor_Qvision, QV_1280x1024x8_INDEX, INVALID_MODE,
//$DEL$//
//$DEL$//   Monitor_1280, QV_TEXT_720x400x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_1280, QV_TEXT_640x350x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_1280, QV_TEXT_640x480x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_1280, QV_640x480x8_INDEX, VALID_MODE, 0xf3, 0x28,
//$DEL$//      0x69, 0x4f, 0x55, 0x86, 0x58, 0x80, 0x56, 0xb2, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb3, 0xdf, 0x80,
//$DEL$//      0x00, 0x01, 0x32, 0xe3, 0xff,
//$DEL$//   Monitor_1280, QV_800x600x8_INDEX, VALID_MODE, 0x23, 0x20,
//$DEL$//      0x8b, 0x63, 0x66, 0x8b, 0x6d, 0x1d, 0xe9, 0xf0, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xba, 0x57, 0x80,
//$DEL$//      0x00, 0x6e, 0xd1, 0xe3, 0xff,
//$DEL$//   Monitor_1280, QV_1024x768x8_INDEX, VALID_MODE, 0x2b, 0x00,
//$DEL$//      0x9e, 0x7f, 0x7f, 0x81, 0x83, 0x93, 0x1e, 0xf1, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb3, 0xff, 0x80,
//$DEL$//      0x00, 0xff, 0x1e, 0xe3, 0xff,
//$DEL$//   Monitor_1280, QV_1280x1024x8_INDEX, VALID_MODE, 0x27, 0xe8,
//$DEL$//      0xca, 0x9f, 0x9f, 0x8d, 0xa6, 0x1a, 0x24, 0x5a, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb5, 0xff, 0x00,
//$DEL$//      0x00, 0xff, 0x24, 0xe3, 0xff,
//$DEL$//
//$DEL$//   Monitor_SVGA, QV_TEXT_720x400x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_SVGA, QV_TEXT_640x350x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_SVGA, QV_TEXT_640x480x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_SVGA, QV_640x480x8_INDEX, VALID_MODE, 0xef, 0x08,
//$DEL$//      0x5f, 0x4f, 0x50, 0x81, 0x53, 0x9f, 0x0b, 0x3e, 0x00, 0x40,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xbc, 0xdf, 0x80,
//$DEL$//      0x00, 0xe5, 0x03, 0xe3, 0xff,
//$DEL$//   Monitor_SVGA, QV_800x600x8_INDEX, VALID_MODE, 0xf3, 0x20,
//$DEL$//      0x7f, 0x63, 0x64, 0x80, 0x68, 0x19, 0x73, 0xf0, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xbc, 0x57, 0x80,
//$DEL$//      0x00, 0x58, 0x72, 0xe3, 0xff,
//$DEL$//   Monitor_SVGA, QV_1024x768x8_INDEX, INVALID_MODE,
//$DEL$//   Monitor_SVGA, QV_1280x1024x8_INDEX, INVALID_MODE,
//$DEL$//
//$DEL$//   Monitor_60Hz, QV_TEXT_720x400x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_60Hz, QV_TEXT_640x350x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_60Hz, QV_TEXT_640x480x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_60Hz, QV_640x480x8_INDEX, VALID_MODE, 0xef, 0x08,
//$DEL$//      0x5f, 0x4f, 0x50, 0x81, 0x53, 0x9f, 0x0b, 0x3e, 0x00, 0x40,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xbc, 0xdf, 0x80,
//$DEL$//      0x00, 0xe5, 0x03, 0xe3, 0xff,
//$DEL$//   Monitor_60Hz, QV_800x600x8_INDEX, VALID_MODE, 0xf3, 0x20,
//$DEL$//      0x7f, 0x63, 0x64, 0x80, 0x68, 0x19, 0x73, 0xf0, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xbc, 0x57, 0x80,
//$DEL$//      0x00, 0x58, 0x72, 0xe3, 0xff,
//$DEL$//   Monitor_60Hz, QV_1024x768x8_INDEX, VALID_MODE, 0xe3, 0x00,
//$DEL$//      0x9b, 0x7f, 0x7f, 0x9e, 0x87, 0x17, 0x31, 0xf5, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xb4, 0xff, 0x80,
//$DEL$//      0x00, 0xff, 0x31, 0xe3, 0xff,
//$DEL$//   Monitor_60Hz, QV_1280x1024x8_INDEX, VALID_MODE, 0x23, 0xc8,
//$DEL$//      0xed, 0x9f, 0x9f, 0x10, 0xae, 0x90, 0x2a, 0x5a, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xb7, 0xff, 0x00,
//$DEL$//      0x00, 0xff, 0x2a, 0xe3, 0xff,
//$DEL$//
//$DEL$//   Monitor_66Hz, QV_TEXT_720x400x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_66Hz, QV_TEXT_640x350x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_66Hz, QV_TEXT_640x480x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_66Hz, QV_640x480x8_INDEX, INVALID_MODE,
//$DEL$//   Monitor_66Hz, QV_800x600x8_INDEX, INVALID_MODE,
//$DEL$//   Monitor_66Hz, QV_1024x768x8_INDEX, VALID_MODE, 0x2b, 0x00,
//$DEL$//      0xa9, 0x7f, 0x7f, 0x0a, 0x87, 0x9f, 0x2e, 0xf5, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xba, 0xff, 0x80,
//$DEL$//      0x00, 0xff, 0x2c, 0xe3, 0xff,
//$DEL$//   Monitor_66Hz, QV_1280x1024x8_INDEX, INVALID_MODE,
//$DEL$//
//$DEL$//   Monitor_68Hz, QV_TEXT_720x400x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_68Hz, QV_TEXT_640x350x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_68Hz, QV_TEXT_640x480x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_68Hz, QV_640x480x8_INDEX, INVALID_MODE,
//$DEL$//   Monitor_68Hz, QV_800x600x8_INDEX, INVALID_MODE,
//$DEL$//   Monitor_68Hz, QV_1024x768x8_INDEX, INVALID_MODE,
//$DEL$//   Monitor_68Hz, QV_1280x1024x8_INDEX, VALID_MODE, 0x23, 0xe8,
//$DEL$//      0xcf, 0x9f, 0x9f, 0x12, 0xa4, 0x19, 0x2e, 0x5a, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xbb, 0xff, 0x00,
//$DEL$//      0x00, 0xff, 0x2e, 0xe3, 0xff,
//$DEL$//
//$DEL$//   Monitor_72Hz, QV_TEXT_720x400x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_72Hz, QV_TEXT_640x350x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_72Hz, QV_TEXT_640x480x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_72Hz, QV_640x480x8_INDEX, INVALID_MODE,
//$DEL$//   Monitor_72Hz, QV_800x600x8_INDEX, VALID_MODE, 0x23, 0x20,
//$DEL$//      0x8b, 0x63, 0x66, 0x8b, 0x6d, 0x1d, 0xe9, 0xf0, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xba, 0x57, 0x80,
//$DEL$//      0x00, 0x6e, 0xd1, 0xe3, 0xff,
//$DEL$//   Monitor_72Hz, QV_1024x768x8_INDEX, VALID_MODE, 0x2b, 0x00,
//$DEL$//      0x9e, 0x7f, 0x7f, 0x81, 0x83, 0x93, 0x1e, 0xf1, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb3, 0xff, 0x80,
//$DEL$//      0x00, 0xff, 0x1e, 0xe3, 0xff,
//$DEL$//   Monitor_72Hz, QV_1280x1024x8_INDEX, INVALID_MODE,
//$DEL$//
//$DEL$//   Monitor_75Hz, QV_TEXT_720x400x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_75Hz, QV_TEXT_640x350x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_75Hz, QV_TEXT_640x480x4_INDEX, INVALID_MODE,
//$DEL$//   Monitor_75Hz, QV_640x480x8_INDEX, INVALID_MODE,
//$DEL$//   Monitor_75Hz, QV_800x600x8_INDEX, INVALID_MODE,
//$DEL$//   Monitor_75Hz, QV_1024x768x8_INDEX, VALID_MODE, 0x2b, 0x00,
//$DEL$//      0x97, 0x7f, 0x7f, 0x9a, 0x82, 0x0f, 0x1f, 0xf1, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb4, 0xff, 0x80,
//$DEL$//      0x00, 0xfe, 0x1f, 0xe3, 0x00,
//$DEL$//
//$DEL$//   // Monitor_75Hz, QV_1280x1024x8_INDEX, INVALID_MODE,
//$DEL$//
//$DEL$//   //
//$DEL$//   // $0004 ************  miked 1/26/1994 *****************************
//$DEL$//   //
//$DEL$//   //Added third party monitor support to force a 76Hz refresh rate
//$DEL$//   //using the same timings as the QV200 timings.
//$DEL$//   //
//$DEL$//   //Note: The MonClass entry for 75Hz was used, because it was available
//$DEL$//   //	    and much less overhead than adding a new level to the array
//$DEL$//   //	    of monitor timings; so even though the "Monitor_75Hz" is used
//$DEL$//   //	    here, it really maps to 76Hz.
//$DEL$//   //
//$DEL$//   //	***************************************************************
//$DEL$//   Monitor_75Hz, QV_1280x1024x8_INDEX, VALID_MODE, 0x27, 0xe8,
//$DEL$//      0xca, 0x9f, 0x9f, 0x8d, 0xa6, 0x1a, 0x24, 0x5a, 0x00, 0x60,
//$DEL$//      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb5, 0xff, 0x00,
//$DEL$//      0x00, 0xff, 0x24, 0xe3, 0xff,
//$DEL$//}; // usMonData

//
// $0005 - MikeD - 02/08/94
//  Daytona - new monitor data structure array
//

MONTYPE MonData[] = {
   //
   // Monitor_Vga
   //
   QV_TEXT_720x400x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x350x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x480x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_640x480x8_INDEX, VALID_MODE, 0xef, 0x08,
      0x5f, 0x4f, 0x50, 0x81, 0x53, 0x9f, 0x0b, 0x3e, 0x00, 0x40,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xbc, 0xdf, 0x80,
      0x00, 0xe5, 0x03, 0xe3, 0xff,
   QV_800x600x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_1024x768x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_1280x1024x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,

   //
   // Monitor_AG1024
   //
   QV_TEXT_720x400x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x350x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x480x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_640x480x8_INDEX, VALID_MODE, 0xef, 0x08,
      0x5f, 0x4f, 0x50, 0x81, 0x53, 0x9f, 0x0b, 0x3e, 0x00, 0x40,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xbc, 0xdf, 0x80,
      0x00, 0xe5, 0x03, 0xe3, 0xff,
   QV_800x600x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_1024x768x8_INDEX, VALID_MODE, 0x2b, 0x00,
      0xa9, 0x7f, 0x7f, 0x0a, 0x87, 0x9f, 0x2e, 0xf5, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xba, 0xff, 0x80,
      0x00, 0xff, 0x2c, 0xe3, 0xff,
   QV_1280x1024x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,

   //
   // Monitor_Qvision
   //
   QV_TEXT_720x400x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x350x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x480x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_640x480x8_INDEX, VALID_MODE, 0xef, 0x08,
      0x5f, 0x4f, 0x50, 0x81, 0x53, 0x9f, 0x0b, 0x3e, 0x00, 0x40,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xbc, 0xdf, 0x80,
      0x00, 0xe5, 0x03, 0xe3, 0xff,
   QV_800x600x8_INDEX, VALID_MODE, 0x23, 0x20,
      0x8b, 0x63, 0x66, 0x8b, 0x6d, 0x1d, 0xe9, 0xf0, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xba, 0x57, 0x80,
      0x00, 0x6e, 0xd1, 0xe3, 0xff,
   QV_1024x768x8_INDEX, VALID_MODE, 0x2b, 0x00,
      0x9e, 0x7f, 0x7f, 0x81, 0x83, 0x93, 0x1e, 0xf1, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb3, 0xff, 0x80,
      0x00, 0xff, 0x1e, 0xe3, 0xff,
   QV_1280x1024x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,

   //
   // Monitor_1280
   //
   QV_TEXT_720x400x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x350x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x480x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_640x480x8_INDEX, VALID_MODE, 0xf3, 0x28,
      0x69, 0x4f, 0x55, 0x86, 0x58, 0x80, 0x56, 0xb2, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb3, 0xdf, 0x80,
      0x00, 0x01, 0x32, 0xe3, 0xff,
   QV_800x600x8_INDEX, VALID_MODE, 0x23, 0x20,
      0x8b, 0x63, 0x66, 0x8b, 0x6d, 0x1d, 0xe9, 0xf0, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xba, 0x57, 0x80,
      0x00, 0x6e, 0xd1, 0xe3, 0xff,
   QV_1024x768x8_INDEX, VALID_MODE, 0x2b, 0x00,
      0x9e, 0x7f, 0x7f, 0x81, 0x83, 0x93, 0x1e, 0xf1, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb3, 0xff, 0x80,
      0x00, 0xff, 0x1e, 0xe3, 0xff,
   QV_1280x1024x8_INDEX, VALID_MODE, 0x27, 0xe8,
      0xca, 0x9f, 0x9f, 0x8d, 0xa6, 0x1a, 0x24, 0x5a, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb5, 0xff, 0x00,
      0x00, 0xff, 0x24, 0xe3, 0xff,

   //
   // Monitor_SVGA
   //
   QV_TEXT_720x400x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x350x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x480x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_640x480x8_INDEX, VALID_MODE, 0xef, 0x08,
      0x5f, 0x4f, 0x50, 0x81, 0x53, 0x9f, 0x0b, 0x3e, 0x00, 0x40,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xbc, 0xdf, 0x80,
      0x00, 0xe5, 0x03, 0xe3, 0xff,
   QV_800x600x8_INDEX, VALID_MODE, 0xf3, 0x20,
      0x7f, 0x63, 0x64, 0x80, 0x68, 0x19, 0x73, 0xf0, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xbc, 0x57, 0x80,
      0x00, 0x58, 0x72, 0xe3, 0xff,
   QV_1024x768x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_1280x1024x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,

   //
   // Monitor_60Hz
   //
   QV_TEXT_720x400x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x350x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x480x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_640x480x8_INDEX, VALID_MODE, 0xef, 0x08,
      0x5f, 0x4f, 0x50, 0x81, 0x53, 0x9f, 0x0b, 0x3e, 0x00, 0x40,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xbc, 0xdf, 0x80,
      0x00, 0xe5, 0x03, 0xe3, 0xff,
   QV_800x600x8_INDEX, VALID_MODE, 0xf3, 0x20,
      0x7f, 0x63, 0x64, 0x80, 0x68, 0x19, 0x73, 0xf0, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xbc, 0x57, 0x80,
      0x00, 0x58, 0x72, 0xe3, 0xff,
   QV_1024x768x8_INDEX, VALID_MODE, 0xe3, 0x00,
      0x9b, 0x7f, 0x7f, 0x9e, 0x87, 0x17, 0x31, 0xf5, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xb4, 0xff, 0x80,
      0x00, 0xff, 0x31, 0xe3, 0xff,
   QV_1280x1024x8_INDEX, VALID_MODE, 0x23, 0xc8,
      0xed, 0x9f, 0x9f, 0x10, 0xae, 0x90, 0x2a, 0x5a, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xb7, 0xff, 0x00,
      0x00, 0xff, 0x2a, 0xe3, 0xff,

   //
   // Monitor_66Hz
   //
   QV_TEXT_720x400x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x350x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x480x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_640x480x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_800x600x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_1024x768x8_INDEX, VALID_MODE, 0x2b, 0x00,
      0xa9, 0x7f, 0x7f, 0x0a, 0x87, 0x9f, 0x2e, 0xf5, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xba, 0xff, 0x80,
      0x00, 0xff, 0x2c, 0xe3, 0xff,
   QV_1280x1024x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,

   //
   // Monitor_68Hz
   //
   QV_TEXT_720x400x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x350x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x480x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_640x480x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_800x600x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_1024x768x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_1280x1024x8_INDEX, VALID_MODE, 0x23, 0xe8,
      0xcf, 0x9f, 0x9f, 0x12, 0xa4, 0x19, 0x2e, 0x5a, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xbb, 0xff, 0x00,
      0x00, 0xff, 0x2e, 0xe3, 0xff,

   //
   // Monitor_72Hz
   //
   QV_TEXT_720x400x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x350x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x480x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_640x480x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_800x600x8_INDEX, VALID_MODE, 0x23, 0x20,
      0x8b, 0x63, 0x66, 0x8b, 0x6d, 0x1d, 0xe9, 0xf0, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xba, 0x57, 0x80,
      0x00, 0x6e, 0xd1, 0xe3, 0xff,
   QV_1024x768x8_INDEX, VALID_MODE, 0x2b, 0x00,
      0x9e, 0x7f, 0x7f, 0x81, 0x83, 0x93, 0x1e, 0xf1, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb3, 0xff, 0x80,
      0x00, 0xff, 0x1e, 0xe3, 0xff,
   QV_1280x1024x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,

   //
   // Monitor_75Hz
   //
   QV_TEXT_720x400x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x350x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x480x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_640x480x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_800x600x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_1024x768x8_INDEX, VALID_MODE, 0x2b, 0x00,
      0x97, 0x7f, 0x7f, 0x9a, 0x82, 0x0f, 0x1f, 0xf1, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb4, 0xff, 0x80,
      0x00, 0xfe, 0x1f, 0xe3, 0x00,
   QV_1280x1024x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,

   //
   // Monitor_76Hz
   //
   QV_TEXT_720x400x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x350x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_TEXT_640x480x4_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_640x480x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_800x600x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_1024x768x8_INDEX, INVALID_MODE, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00,
   QV_1280x1024x8_INDEX, VALID_MODE, 0x27, 0xe8,
      0xca, 0x9f, 0x9f, 0x8d, 0xa6, 0x1a, 0x24, 0x5a, 0x00, 0x60,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb5, 0xff, 0x00,
      0x00, 0xff, 0x24, 0xe3, 0xff,
}; // MonData

//
//    This array contains a set of boolean values with the
//    following properties.
//    If a monitor supports a specified mode, the value
//    is TRUE.  If the monitor does not support the mode,
//    the value is FALSE.
//    +++++++++++++++++++++++++++++++++++++
//    ++++++++++++++ IMPORTANT ++++++++++++
//    +++++++++++++++++++++++++++++++++++++
//    The NUM_VIDEO_MODES value must be hardcoded because
//    a non constant value cannot be the index of an
//    array.
//    This value must be changed when new modes are added.
//    Currently, the QVISION BIOS does not support 800x600x8 so
//    we set these modes to be invalid if INT10 is chosen
//    as the initialization avenue.
//
#define NUM_VIDEO_MODES    7    // must be hardcoded for the fValidMode array.

BOOLEAN fValidMode[NUM_MONITOR_CLASSES][NUM_VIDEO_MODES] = {

//////////////////////////////////////////////////////////////
//  Monitor_Vga
//////////////////////////////////////////////////////////////
   TRUE,                                    // text 640x350 (EGA)
   TRUE,                                    // text 640x480 (VGA)
   TRUE,                                    // text 720x400 (VGA)
   TRUE,                                    // 640x480x8
#ifdef INIT_INT10                           // The Qvision hardware does not
   FALSE,                                   // support 800x600x8 in BIOS
#else                                       // so we always set this mode
   FALSE,                                   // to be invalid. (for now)
#endif
   FALSE,                                   // 1024x768x8
   FALSE,                                   // 1280x1024x8
//////////////////////////////////////////////////////////////
//  Monitor_AG1024
//////////////////////////////////////////////////////////////
   TRUE,                                    // text 640x350 (EGA)
   TRUE,                                    // text 640x480 (VGA)
   TRUE,                                    // text 720x400 (VGA)
   TRUE,                                    // 640x480x8
#ifdef INIT_INT10                           // The Qvision hardware does not
   FALSE,                                   // support 800x600x8 in BIOS
#else                                       // so we always set this mode
   FALSE,                                   // to be invalid. (for now)
#endif
   TRUE,                                    // 1024x768x8
   FALSE,                                   // 1280x1024x8
//////////////////////////////////////////////////////////////
//  Monitor_Qvision
//////////////////////////////////////////////////////////////
   TRUE,                                    // text 640x350 (EGA)
   TRUE,                                    // text 640x480 (VGA)
   TRUE,                                    // text 720x400 (VGA)
   TRUE,                                    // 640x480x8
#ifdef INIT_INT10                           // The Qvision hardware does not
   FALSE,                                   // support 800x600x8 in BIOS
#else                                       // so we always set this mode
   TRUE,                                    // to be invalid. (for now)
#endif
   TRUE,                                    // 1024x768x8
   FALSE,                                   // 1280x1024x8
//////////////////////////////////////////////////////////////
//  Monitor_1280
//////////////////////////////////////////////////////////////
   TRUE,                                    // text 640x350 (EGA)
   TRUE,                                    // text 640x480 (VGA)
   TRUE,                                    // text 720x400 (VGA)
   TRUE,                                    // 640x480x8
#ifdef INIT_INT10                           // The Qvision hardware does not
   FALSE,                                   // support 800x600x8 in BIOS
#else                                       // so we always set this mode
   TRUE,                                    // to be invalid. (for now)
#endif
   TRUE,                                    // 1024x768x8
   TRUE,                                    // 1280x1024x8
//////////////////////////////////////////////////////////////
//  Monitor_SVGA
//////////////////////////////////////////////////////////////
   TRUE,                                    // text 640x350 (EGA)
   TRUE,                                    // text 640x480 (VGA)
   TRUE,                                    // text 720x400 (VGA)
   TRUE,                                    // 640x480x8
#ifdef INIT_INT10                           // The Qvision hardware does not
   FALSE,                                   // support 800x600x8 in BIOS
#else                                       // so we always set this mode
   TRUE,                                    // to be invalid. (for now)
#endif
   FALSE,                                   // 1024x768x8
   FALSE,                                   // 1280x1024x8
//////////////////////////////////////////////////////////////
//    Monitor_60Hz
//////////////////////////////////////////////////////////////
   TRUE,                                    // text 640x350 (EGA)
   TRUE,                                    // text 640x480 (VGA)
   TRUE,                                    // text 720x400 (VGA)
   TRUE,                                    // 640x480x8
#ifdef INIT_INT10                           // The Qvision hardware does not
   FALSE,                                   // support 800x600x8 in BIOS
#else                                       // so we always set this mode
   TRUE,                                    // to be invalid. (for now)
#endif
   TRUE,                                    // 1024x768x8
   TRUE,                                    // 1280x1024x8
//////////////////////////////////////////////////////////////
//  Monitor_66Hz
//////////////////////////////////////////////////////////////
   TRUE,                                    // text 640x350 (EGA)
   TRUE,                                    // text 640x480 (VGA)
   TRUE,                                    // text 720x400 (VGA)
   FALSE,                                   // 640x480x8
#ifdef INIT_INT10                           // The Qvision hardware does not
   FALSE,                                   // support 800x600x8 in BIOS
#else                                       // so we always set this mode
   FALSE,                                   // to be invalid. (for now)
#endif
   TRUE,                                    // 1024x768x8
   FALSE,                                   // 1280x1024x8
//////////////////////////////////////////////////////////////
//    Monitor_68Hz
//////////////////////////////////////////////////////////////
   TRUE,                                    // text 640x350 (EGA)
   TRUE,                                    // text 640x480 (VGA)
   TRUE,                                    // text 720x400 (VGA)
   FALSE,                                   // 640x480x8
#ifdef INIT_INT10                           // The Qvision hardware does not
   FALSE,                                   // support 800x600x8 in BIOS
#else                                       // so we always set this mode
   FALSE,                                   // to be invalid. (for now)
#endif
   FALSE,                                   // 1024x768x8
   TRUE,                                    // 1280x1024x8
//////////////////////////////////////////////////////////////
//  Monitor_72Hz
//////////////////////////////////////////////////////////////
   TRUE,                                    // text 640x350 (EGA)
   TRUE,                                    // text 640x480 (VGA)
   TRUE,                                    // text 720x400 (VGA)
   FALSE,                                   // 640x480x8
#ifdef INIT_INT10                           // The Qvision hardware does not
   FALSE,                                   // support 800x600x8 in BIOS
#else                                       // so we always set this mode
   TRUE,                                    // to be invalid. (for now)
#endif
   TRUE,                                    // 1024x768x8
   FALSE,                                   // 1280x1024x8
//////////////////////////////////////////////////////////////
//    Monitor_75Hz
//////////////////////////////////////////////////////////////
   TRUE,                                    // text 640x350 (EGA)
   TRUE,                                    // text 640x480 (VGA)
   TRUE,                                    // text 720x400 (VGA)
   FALSE,                                   // 640x480x8
#ifdef INIT_INT10                           // The Qvision hardware does not
   FALSE,                                   // support 800x600x8 in BIOS
#else                                       // so we always set this mode
   FALSE,                                   // to be invalid. (for now)
#endif
   TRUE,				    // 1024x768x8
   FALSE,				    // 1280x1024x8
//////////////////////////////////////////////////////////////
//    Monitor_76Hz
//////////////////////////////////////////////////////////////
   TRUE,                                    // text 640x350 (EGA)
   TRUE,                                    // text 640x480 (VGA)
   TRUE,                                    // text 720x400 (VGA)
   FALSE,                                   // 640x480x8
#ifdef INIT_INT10                           // The Qvision hardware does not
   FALSE,                                   // support 800x600x8 in BIOS
#else                                       // so we always set this mode
   FALSE,                                   // to be invalid. (for now)
#endif
   FALSE,				    // 1024x768x8
   TRUE					    // 1280x1024x8

}; // fValidMode


