windows-nt/Source/XPSP1/NT/drivers/video/ms/weitek/mini/p9gbl.c
2020-09-26 16:20:57 +08:00

1732 lines
81 KiB
C

/*++
Copyright (c) 1993 Weitek Corporation
Module Name:
p9gbl.c
Abstract:
This module contains the global data for the Weitek P9 miniport
device driver.
Environment:
Kernel mode
Revision History may be found at the end of this file.
--*/
#include "p9.h"
#include "p9gbl.h"
#include "p9000.h"
#include "bt485.h"
#include "vga.h"
#include "p91regs.h"
#include "p91dac.h"
#include "pci.h"
//
// This global is used as an error flag to error out quickly on the multiple
// calls to P9FindAdapter when a board is not supported.
//
VP_STATUS vpP91AdapterStatus = NO_ERROR;
BOOLEAN bFoundPCI = FALSE;
//
// Coprocessor info structure for the Weitek P9100.
//
//
// The P9100's total address space is 16mb (0x0100000). The maximum
// frame-buffer is 4mb (0x00400000). So define the coproc length as
// the maximum (16mb) less the size of the frame buffer (4mb).
// Note: we might want to map the optional video power coprocessor
// discretely.
//
// NOTE only ask for 0x00C00000 since that;s was preconfigured PCI devices
// have.
//
P9_COPROC P9100Info =
{
P9100_ID,
0x00C00000, // Size of memory address space.
0x00000000, // Offset to coproc regs.
0x00800000, // Size of coproc register block.
0x00800000, // Offset to frame buffer.
P91SizeVideoMemory // Memory sizing function.
};
//
// Coprocessor info structure for the Weitek P9000.
//
P9_COPROC P9000Info =
{
P9000_ID,
0x00400000, // Size of memory address space.
0x00100000, // Offset to coproc regs.
0x00100000, // Size of coproc register block.
0x00200000, // Offset to frame buffer.
P9000SizeMem // Memory sizing function.
};
//
// The default adapter description structure for the Weitek P9 PCI
// boards.
//
ADAPTER_DESC WtkPciDesc =
{
{L"Weitek P9000 PCI Adapter"},
0L, // P9 Memconf value (un-initialized)
HSYNC_INTERNAL | VSYNC_INTERNAL |
COMPOSITE_SYNC | VIDEO_NORMAL, // P9 Srctl value
TRUE, // Should autodetection be attempted?
TRUE, // Is this a PCI adapter ?
PciGetBaseAddr, // Routine to detect/map P9 base addr
VLSetMode, // Routine to set the P9 mode
VLEnableP9, // Routine to enable P9 video
VLDisableP9, // Routine to disable P9 video
PciP9MemEnable, // Routine to enable memory/io
8, // Clock divisor value
TRUE, // Is a Wtk 5x86 VGA present?
TRUE
};
//
// The default adapter description structure for the Weitek P9100 PCI
// boards.
//
ADAPTER_DESC WtkP91PciDesc =
{
{L"Weitek P9100 PCI Adapter"},
0L, // P9 Memconf value (un-initialized)
HSYNC_INTERNAL | VSYNC_INTERNAL |
COMPOSITE_SYNC | VIDEO_NORMAL, // P9 Srctl value
TRUE, // Should autodetection be attempted?
TRUE, // Is this a PCI adapter ?
PciGetBaseAddr, // Routine to detect/map P9 base addr
VLSetModeP91, // Routine to set the P9 mode
VLEnableP91, // Routine to enable P9 video
VLDisableP91, // Routine to disable P9 video
// PciP9MemEnable, // Routine to enable memory/io
NULL,
4, // Clock divisor value
TRUE, // Is a Wtk 5x86 VGA present?
FALSE
};
//
// The default adapter description structure for the Diamond Viper VL board.
//
ADAPTER_DESC ViperVLDesc =
{
{L"Diamond Viper P9000 VL Adapter"},
0L, // P9 Memconf value (un-initialized)
HSYNC_INTERNAL | VSYNC_INTERNAL |
COMPOSITE_SYNC | VIDEO_NORMAL, // P9 Srctl value
TRUE, // Should autodetection be attempted?
FALSE, // Is this a PCI adapter ?
ViperGetBaseAddr, // Routine to detect/map P9 base addr
ViperSetMode, // Routine to set the P9 mode
ViperEnableP9, // Routine to enable P9 video
ViperDisableP9, // Routine to disable P9 video
ViperEnableMem, // Routine to enable P9 memory
4, // Clock divisor value
TRUE, // Is a Wtk 5x86 VGA present?
TRUE
};
//
// The default adapter description structure for the Weitek P9100 PCI
// boards.
//
ADAPTER_DESC WtkP91VLDesc =
{
{L"Weitek P9100 VL Adapter"},
0L, // P9 Memconf value (un-initialized)
HSYNC_INTERNAL | VSYNC_INTERNAL |
COMPOSITE_SYNC | VIDEO_NORMAL, // P9 Srctl value
TRUE, // Should autodetection be attempted?
FALSE, // Is this a PCI adapter ?
VLGetBaseAddrP91, // Routine to detect/map P9 base addr
VLSetModeP91, // Routine to set the P9 mode
VLEnableP91, // Routine to enable P9 video
VLDisableP91, // Routine to disable P9 video
// PciP9MemEnable, // Routine to enable memory/io
NULL,
4, // Clock divisor value
TRUE, // Is a Wtk 5x86 VGA present?
FALSE
};
//
// The default adapter description structure for the Weitek P9000 VL board.
//
ADAPTER_DESC WtkVLDesc =
{
{L"Generic Weitek P9000 VL Adapter"},
0L, // P9 Memconf value (un-initialized)
HSYNC_INTERNAL | VSYNC_INTERNAL |
COMPOSITE_SYNC | VIDEO_NORMAL, // P9 Srctl value
FALSE, // Should autodetection be attempted?
FALSE, // Is this a PCI adapter ?
VLGetBaseAddr, // Routine to detect/map P9 base addr
VLSetMode, // Routine to set the P9 mode
VLEnableP9, // Routine to enable P9 video
VLDisableP9, // Routine to disable P9 video
(PVOID) 0, // Routine to enable P9 memory
4, // Clock divisor value
TRUE, // Is a Wtk 5x86 VGA present?
TRUE
};
//
// List of OEM P9ADAPTER structures.
//
P9ADAPTER OEMAdapter[NUM_OEM_ADAPTERS] =
{
//
// Weitek P9100 PCI adapters, with the IBM525,
// including Viper PCI Adapter.
//
{
&WtkP91PciDesc,
&Ibm525,
&P9100Info
},
// Weitek P9100 PCI adapters, with the Bt485
//
{
&WtkP91PciDesc,
&P91Bt485,
&P9100Info
},
//
// Weitek P9100 PCI adapters, with the Bt489
//
{
&WtkP91PciDesc,
&P91Bt489,
&P9100Info
},
//
// Weitek PCI adapters, including Viper PCI Adapter.
//
{
&WtkPciDesc,
&Bt485,
&P9000Info
},
//
// Weitek P9100 VL adapters, with the IBM525,
//
{
&WtkP91VLDesc,
&Ibm525,
&P9100Info
},
//
// Weitek P9100 VL adapters, with the Bt485,
//
{
&WtkP91VLDesc,
&Bt485,
&P9100Info
},
// Viper VL Adapter.
//
{
&ViperVLDesc,
&Bt485,
&P9000Info
},
//
// Adapters based on the Weitek VL Design.
//
{
&WtkVLDesc,
&Bt485,
&P9000Info
}
};
//
// DriverAccessRanges are used to verify access to the P9 coprocessor's
// address space and to the VGA and DAC registers.
//
VIDEO_ACCESS_RANGE DriverAccessRanges[NUM_DRIVER_ACCESS_RANGES
+ NUM_DAC_ACCESS_RANGES
+ NUM_MISC_ACCESS_RANGES] =
{
//
// The P9 Coprocessor's access range. Everything is initialized
// except for the base address and length which are Coprocessor
// specific.
//
{
0L, // Low address. To be initialized.
0L, // Hi address
0L, // length. To be initialized.
0, // Is range in i/o space?
1, // Range should be visible
1 // Range should be shareable
},
//
// The VGA Access Range. Every field is initialized.
//
{
0x000003C0, // Low addr vga & dac
0x00000000, // Hi addr
0x20, // length
1, // Is range in i/o space?
1, // Range should be visible
1 // Range should be shareable
},
//
// The following access ranges are for the DAC and are uninitialized.
//
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
},
//
// This is a miscellaneous access range. It is uninitialized and
// is only used (currently) by the PCI adapter type.
//
{
0L, // Low address
0L, // Hi address
0L, // length
0, // Is range in i/o space?
0, // Range should be visible
0 // Range should be shareable
}
};
VDATA v1280_1K_55[] =
{
10018L, // Dot Freq 1
184L, // Horiz Sync Pulse
200L, // Horiz Back Porch
1280L, // X size
44L, // Horiz Front Porch
360L, // hco
POSITIVE, // Horizontal Polarity
55L, // Vertical Refresh Rate in Hz.
3L, // Vertical Sync Pulse
26L, // Vertical Back Porch
1024L, // Y size
3L, // Vertical Front Porch
27L, // vco
POSITIVE, // Vertical Polarity
0, // IcdSerPixClk
0xFFFFFFFF, // IcdCtrlPixClk
0, // IcdSer525Ref
0xFFFFFFFF, // IcdCtrl525Ref
0xFFFFFFFF, // 525RefClkCnt
0xFFFFFFFF, // 525VidClkFreq
0xFFFFFFFF, // MemCfgClr
0 // MemCfgSet
};
//
// These values came from the 3.1 driver.
// They are more current than the 3.5 values
//
VDATA v640_480_60[] =
{
2517L, // Dot Freq 1
96L, // Horiz Sync Pulse
32L, // Horiz Back Porch
640L, // X size
32L, // Horiz Front Porch
0L, // hco
NEGATIVE, // Horizontal Polarity
60L, // Vertical Refresh Rate in Hz.
4L, // Vertical Sync Pulse
24L, // Vertical Back Porch
480L, // Y size
17L, // Vertical Front Porch
0L, // vco
NEGATIVE, // Vertical Polarity
0, // IcdSerPixClk
0xFFFFFFFF, // IcdCtrlPixClk
0, // IcdSer525Ref
0xFFFFFFFF, // IcdCtrl525Ref
0xFFFFFFFF, // 525RefClkCnt
0xFFFFFFFF, // 525VidClkFreq
0xFFFFFFFF, // MemCfgClr
0 // MemCfgSet
};
VDATA v640_480_72[] =
{
3150L, // Dot Freq 1
40L, // Horiz Sync Pulse
136L, // Horiz Back Porch
640L, // X size
32L, // Horiz Front Porch
144L, // hco
NEGATIVE, // Horizontal Polarity
72L, // Vertical Refresh Rate in Hz.
3L, // Vertical Sync Pulse
28L, // Vertical Back Porch
480L, // Y size
9L, // Vertical Front Porch
35L, // vco
NEGATIVE, // Vertical Polarity
0, // IcdSerPixClk
0xFFFFFFFF, // IcdCtrlPixClk
0, // IcdSer525Ref
0xFFFFFFFF, // IcdCtrl525Ref
0xFFFFFFFF, // 525RefClkCnt
0xFFFFFFFF, // 525VidClkFreq
0xFFFFFFFF, // MemCfgClr
0 // MemCfgSet
};
VDATA v800_600_60[] =
{
4000L, // Dot Freq 1
128L, // Horiz Sync Pulse
88L, // Horiz Back Porch
800L, // X size
40L, // Horiz Front Porch
192L, // hco
POSITIVE, // Horizontal Polarity
60L, // Vertical Refresh Rate in Hz.
4L, // Vertical Sync Pulse
23L, // Vertical Back Porch
600L, // Y size
1L, // Vertical Front Porch
22L, // vco
POSITIVE, // Vertical Polarity
0, // IcdSerPixClk
0xFFFFFFFF, // IcdCtrlPixClk
0, // IcdSer525Ref
0xFFFFFFFF, // IcdCtrl525Ref
0xFFFFFFFF, // 525RefClkCnt
0xFFFFFFFF, // 525VidClkFreq
0xFFFFFFFF, // MemCfgClr
0 // MemCfgSet
};
VDATA v800_600_72[] =
{
5000L, // Dot Freq 1
120L, // Horiz Sync Pulse
64L, // Horiz Back Porch
800L, // X size
56L, // Horiz Front Porch
192L, // hco
POSITIVE, // Horizontal Polarity
72L, // Vertical Refresh Rate in Hz.
6L, // Vertical Sync Pulse
23L, // Vertical Back Porch
600L, // Y size
37L, // Vertical Front Porch
22L, // vco
POSITIVE, // Vertical Polarity
0, // IcdSerPixClk
0xFFFFFFFF, // IcdCtrlPixClk
0, // IcdSer525Ref
0xFFFFFFFF, // IcdCtrl525Ref
0xFFFFFFFF, // 525RefClkCnt
0xFFFFFFFF, // 525VidClkFreq
0xFFFFFFFF, // MemCfgClr
0 // MemCfgSet
};
VDATA v1K_768_60[] =
{
6500L, // Dot Freq 1
136L, // Horiz Sync Pulse
160L, // Horiz Back Porch
1024L, // X size
24L, // Horiz Front Porch
272L, // hco
NEGATIVE, // Horizontal Polarity
60L, // Vertical Refresh Rate in Hz.
6L, // Vertical Sync Pulse
29L, // Vertical Back Porch
768L, // Y size
3L, // Vertical Front Porch
30L, // vco
NEGATIVE, // Vertical Polarity
0, // IcdSerPixClk
0xFFFFFFFF, // IcdCtrlPixClk
0, // IcdSer525Ref
0xFFFFFFFF, // IcdCtrl525Ref
0xFFFFFFFF, // 525RefClkCnt
0xFFFFFFFF, // 525VidClkFreq
0xFFFFFFFF, // MemCfgClr
0 // MemCfgSet
};
VDATA v1K_768_70[] =
{
7500L, // Dot Freq 1
136L, // Horiz Sync Pulse
144L, // Horiz Back Porch
1024L, // X size
24L, // Horiz Front Porch
256L, // hco
NEGATIVE, // Horizontal Polarity
70L, // Vertical Refresh Rate in Hz.
6L, // Vertical Sync Pulse
29L, // Vertical Back Porch
768L, // Y size
3L, // Vertical Front Porch
30L, // vco
NEGATIVE, // Vertical Polarity
0, // IcdSerPixClk
0xFFFFFFFF, // IcdCtrlPixClk
0, // IcdSer525Ref
0xFFFFFFFF, // IcdCtrl525Ref
0xFFFFFFFF, // 525RefClkCnt
0xFFFFFFFF, // 525VidClkFreq
0xFFFFFFFF, // MemCfgClr
0 // MemCfgSet
};
VDATA v1280_1K_60[] =
{
11500L, // Dot Freq 1
224L, // Horiz Sync Pulse
256L, // Horiz Back Porch
1280L, // X size
32L, // Horiz Front Porch
456L, // hco
POSITIVE, // Horizontal Polarity
60L, // Vertical Refresh Rate in Hz.
3L, // Vertical Sync Pulse
42L, // Vertical Back Porch
1024L, // Y size
1L, // Vertical Front Porch
41L, // vco
POSITIVE, // Vertical Polarity
0, // IcdSerPixClk
0xFFFFFFFF, // IcdCtrlPixClk
0, // IcdSer525Ref
0xFFFFFFFF, // IcdCtrl525Ref
0xFFFFFFFF, // 525RefClkCnt
0xFFFFFFFF, // 525VidClkFreq
0xFFFFFFFF, // MemCfgClr
0 // MemCfgSet
};
VDATA v1280_1K_74[] =
{
13500L, // Dot Freq 1
144L, // Horiz Sync Pulse
256L, // Horiz Back Porch
1280L, // X size
32L, // Horiz Front Porch
0L, // hco
POSITIVE, // Horizontal Polarity
74L, // Vertical Refresh Rate in Hz.
3L, // Vertical Sync Pulse
38L, // Vertical Back Porch
1024L, // Y size
1L, // Vertical Front Porch
0L, // vco
POSITIVE, // Vertical Polarity
0, // IcdSerPixClk
0xFFFFFFFF, // IcdCtrlPixClk
0, // IcdSer525Ref
0xFFFFFFFF, // IcdCtrl525Ref
0xFFFFFFFF, // 525RefClkCnt
0xFFFFFFFF, // 525VidClkFreq
0xFFFFFFFF, // MemCfgClr
0 // MemCfgSet
};
VDATA v1280_1K_75[] =
{
12800L, // Dot Freq 1
112L, // Horiz Sync Pulse
240L, // Horiz Back Porch
1280L, // X size
32L, // Horiz Front Porch
0L, // hco
POSITIVE, // Horizontal Polarity
75L, // Vertical Refresh Rate in Hz.
15L, // Vertical Sync Pulse
26L, // Vertical Back Porch
1024L, // Y size
3L, // Vertical Front Porch
0L, // vco
POSITIVE, // Vertical Polarity
0, // IcdSerPixClk
0xFFFFFFFF, // IcdCtrlPixClk
0, // IcdSer525Ref
0xFFFFFFFF, // IcdCtrl525Ref
0xFFFFFFFF, // 525RefClkCnt
0xFFFFFFFF, // 525VidClkFreq
0xFFFFFFFF, // MemCfgClr
0 // MemCfgSet
};
VDATA v1600_1200_60[] =
{
16000L, // Dot Freq 1
144L, // Horiz Sync Pulse
272L, // Horiz Back Porch
1600L, // X size
32L, // Horiz Front Porch
0L, // hco
NEGATIVE, // Horizontal Polarity
60L, // Vertical Refresh Rate in Hz.
8L, // Vertical Sync Pulse
49L, // Vertical Back Porch
1200L, // Y size
4L, // Vertical Front Porch
0L, // vco
NEGATIVE, // Vertical Polarity
0, // IcdSerPixClk
0xFFFFFFFF, // IcdCtrlPixClk
0, // IcdSer525Ref
0xFFFFFFFF, // IcdCtrl525Ref
0xFFFFFFFF, // 525RefClkCnt
0xFFFFFFFF, // 525VidClkFreq
0xFFFFFFFF, // MemCfgClr
0 // MemCfgSet
};
//
// P9 mode information Tables. This is the data which is returned to
// the Win32 driver so that it can select the proper video mode.
//
P9INITDATA P9Modes[mP9ModeCount] =
{
{
18, // Number of entries in the structure
(P9000_ID | P9100_ID),
v640_480_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode informtion structure
m640_480_8_60, // Index used to set this mode
640, // X Resolution, in pixels
480, // Y Resolution, in pixels
640, // physical scanline byte length
1, // Number of video memory planes
8, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00000000, // Mask for Red bits in non-palette modes
0x00000000, // Mask for Green bits in non-palette modes
0x00000000, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS | VIDEO_MODE_PALETTE_DRIVEN |
VIDEO_MODE_MANAGED_PALETTE, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the structure
(P9000_ID | P9100_ID),
v640_480_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode informtion structure
m640_480_16_60, // Index used to set this mode
640, // X Resolution, in pixels
480, // Y Resolution, in pixels
640 * 2, // physical scanline byte length
1, // Number of video memory planes
16, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
5, // # of Red bits in non-palette modes
5, // # of Green bits in non-palette modes
5, // # of Blue bits in non-palette modes
0x00007C00, // Mask for Red bits in non-palette modes
0x000003E0, // Mask for Green bits in non-palette modes
0x0000001F, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the structure
P9100_ID,
v640_480_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode informtion structure
m640_480_24_60, // Index used to set this mode
640, // X Resolution, in pixels
480, // Y Resolution, in pixels
640 * 3, // physical scanline byte length
1, // Number of video memory planes
24, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the structure
(P9000_ID | P9100_ID),
v640_480_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode informtion structure
m640_480_32_60, // Index used to set this mode
640, // X Resolution, in pixels
480, // Y Resolution, in pixels
640 * 4, // physical scanline byte length
1, // Number of video memory planes
32, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the structure
(P9000_ID | P9100_ID),
v640_480_72, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode informtion structure
m640_480_8_72, // Index used to set this mode
640, // X Resolution, in pixels
480, // Y Resolution, in pixels
640, // physical scanline byte length
1, // Number of video memory planes
8, // Number of bits per plane
72, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00000000, // Mask for Red bits in non-palette modes
0x00000000, // Mask for Green bits in non-palette modes
0x00000000, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS | VIDEO_MODE_PALETTE_DRIVEN |
VIDEO_MODE_MANAGED_PALETTE, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the structure
(P9000_ID | P9100_ID),
v640_480_72, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode informtion structure
m640_480_16_72, // Index used to set this mode
640, // X Resolution, in pixels
480, // Y Resolution, in pixels
640 * 2, // physical scanline byte length
1, // Number of video memory planes
16, // Number of bits per plane
72, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
5, // # of Red bits in non-palette modes
5, // # of Green bits in non-palette modes
5, // # of Blue bits in non-palette modes
0x00007C00, // Mask for Red bits in non-palette modes
0x000003E0, // Mask for Green bits in non-palette modes
0x0000001F, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the structure
P9100_ID,
v640_480_72, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode informtion structure
m640_480_24_72, // Index used to set this mode
640, // X Resolution, in pixels
480, // Y Resolution, in pixels
640 * 3, // physical scanline byte length
1, // Number of video memory planes
24, // Number of bits per plane
72, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the structure
(P9000_ID | P9100_ID),
v640_480_72, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode informtion structure
m640_480_32_72, // Index used to set this mode
640, // X Resolution, in pixels
480, // Y Resolution, in pixels
640 * 4, // physical scanline byte length
1, // Number of video memory planes
32, // Number of bits per plane
72, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the mode set structure
(P9000_ID | P9100_ID),
v800_600_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m800_600_8_60, // Index used to set this mode
800, // X Resolution, in pixels
600, // Y Resolution, in pixels
800, // physical scanline byte length
1, // Number of video memory planes
8, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00000000, // Mask for Red bits in non-palette modes
0x00000000, // Mask for Green bits in non-palette modes
0x00000000, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS | VIDEO_MODE_PALETTE_DRIVEN |
VIDEO_MODE_MANAGED_PALETTE, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the mode set structure
(P9000_ID | P9100_ID),
v800_600_72, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m800_600_8_72, // Index used to set this mode
800, // X Resolution, in pixels
600, // Y Resolution, in pixels
800, // physical scanline byte length
1, // Number of video memory planes
8, // Number of bits per plane
72, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00000000, // Mask for Red bits in non-palette modes
0x00000000, // Mask for Green bits in non-palette modes
0x00000000, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS | VIDEO_MODE_PALETTE_DRIVEN |
VIDEO_MODE_MANAGED_PALETTE, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the mode set structure
(P9000_ID | P9100_ID),
v800_600_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m800_600_16_60, // Index used to set this mode
800, // X Resolution, in pixels
600, // Y Resolution, in pixels
800 * 2, // physical scanline byte length
1, // Number of video memory planes
16, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
5, // # of Red bits in non-palette modes
5, // # of Green bits in non-palette modes
5, // # of Blue bits in non-palette modes
0x00007C00, // Mask for Red bits in non-palette modes
0x000003E0, // Mask for Green bits in non-palette modes
0x0000001F, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the mode set structure
(P9000_ID | P9100_ID),
v800_600_72, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m800_600_16_72, // Index used to set this mode
800, // X Resolution, in pixels
600, // Y Resolution, in pixels
800 * 2, // physical scanline byte length
1, // Number of video memory planes
16, // Number of bits per plane
72, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
5, // # of Red bits in non-palette modes
5, // # of Green bits in non-palette modes
5, // # of Blue bits in non-palette modes
0x00007C00, // Mask for Red bits in non-palette modes
0x000003E0, // Mask for Green bits in non-palette modes
0x0000001F, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the struct
P9100_ID,
v800_600_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m800_600_24_60, // Index used to set this mode
800, // X Resolution, in pixels
600, // Y Resolution, in pixels
800 * 3, // physical scanline byte length
1, // Number of video memory planes
24, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
} // Mode flags
},
{
18, // Number of entries in the struct
P9100_ID,
v800_600_72, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m800_600_24_72, // Index used to set this mode
800, // X Resolution, in pixels
600, // Y Resolution, in pixels
800 * 3, // physical scanline byte length
1, // Number of video memory planes
24, // Number of bits per plane
72, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
} // Mode flags
},
{
18, // Number of entries in the struct
(P9000_ID | P9100_ID),
v800_600_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m800_600_32_60, // Index used to set this mode
800, // X Resolution, in pixels
600, // Y Resolution, in pixels
800 * 4, // physical scanline byte length
1, // Number of video memory planes
32, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
} // Mode flags
},
{
18, // Number of entries in the struct
(P9000_ID | P9100_ID),
v800_600_72, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m800_600_32_72, // Index used to set this mode
800, // X Resolution, in pixels
600, // Y Resolution, in pixels
800 * 4, // physical scanline byte length
1, // Number of video memory planes
32, // Number of bits per plane
72, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
} // Mode flags
},
{
18, // Number of entries in the struct
(P9000_ID | P9100_ID),
v1K_768_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1K_768_8_60, // Index used to set this mode
1024, // X Resolution, in pixels
768, // Y Resolution, in pixels
1024, // physical scanline byte length
1, // Number of video memory planes
8, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00000000, // Mask for Red bits in non-palette modes
0x00000000, // Mask for Green bits in non-palette modes
0x00000000, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS | VIDEO_MODE_PALETTE_DRIVEN |
VIDEO_MODE_MANAGED_PALETTE, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the struct
(P9000_ID | P9100_ID),
v1K_768_70, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1K_768_8_70, // Index used to set this mode
1024, // X Resolution, in pixels
768, // Y Resolution, in pixels
1024, // physical scanline byte length
1, // Number of video memory planes
8, // Number of bits per plane
70, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00000000, // Mask for Red bits in non-palette modes
0x00000000, // Mask for Green bits in non-palette modes
0x00000000, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS | VIDEO_MODE_PALETTE_DRIVEN |
VIDEO_MODE_MANAGED_PALETTE, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the struct
(P9000_ID | P9100_ID),
v1K_768_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1K_768_16_60, // Index used to set this mode
1024, // X Resolution, in pixels
768, // Y Resolution, in pixels
1024 * 2, // physical scanline byte length
1, // Number of video memory planes
16, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
5, // # of Red bits in non-palette modes
5, // # of Green bits in non-palette modes
5, // # of Blue bits in non-palette modes
0x00007C00, // Mask for Red bits in non-palette modes
0x000003E0, // Mask for Green bits in non-palette modes
0x0000001F, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
} // Mode flags
},
{
18, // Number of entries in the struct
(P9000_ID | P9100_ID),
v1K_768_70, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1K_768_16_70, // Index used to set this mode
1024, // X Resolution, in pixels
768, // Y Resolution, in pixels
1024 * 2, // physical scanline byte length
1, // Number of video memory planes
16, // Number of bits per plane
70, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
5, // # of Red bits in non-palette modes
5, // # of Green bits in non-palette modes
5, // # of Blue bits in non-palette modes
0x00007C00, // Mask for Red bits in non-palette modes
0x000003E0, // Mask for Green bits in non-palette modes
0x0000001F, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
} // Mode flags
},
{
18, // Number of entries in the struct
P9100_ID,
v1K_768_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1K_768_24_60, // Index used to set this mode
1024, // X Resolution, in pixels
768, // Y Resolution, in pixels
1024 * 3, // physical scanline byte length
1, // Number of video memory planes
24, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
} // Mode flags
},
{
18, // Number of entries in the struct
P9100_ID,
v1K_768_70, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1K_768_24_70, // Index used to set this mode
1024, // X Resolution, in pixels
768, // Y Resolution, in pixels
1024 * 3, // physical scanline byte length
1, // Number of video memory planes
24, // Number of bits per plane
70, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
} // Mode flags
},
{
18, // Number of entries in the struct
P9100_ID,
v1K_768_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1K_768_32_60, // Index used to set this mode
1024, // X Resolution, in pixels
768, // Y Resolution, in pixels
1024 * 4, // physical scanline byte length
1, // Number of video memory planes
32, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
} // Mode flags
},
{
18, // Number of entries in the struct
P9100_ID,
v1K_768_70, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1K_768_32_70, // Index used to set this mode
1024, // X Resolution, in pixels
768, // Y Resolution, in pixels
1024 * 4, // physical scanline byte length
1, // Number of video memory planes
32, // Number of bits per plane
70, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
} // Mode flags
},
{
18, // Number of entries in the struct
P9000_ID,
v1280_1K_55, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1280_1K_8_55, // Index used to set this mode
1280, // X Resolution, in pixels
1024, // Y Resolution, in pixels
1280, // physical scanline byte length
1, // Number of video memory planes
8, // Number of bits per plane
55, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00000000, // Mask for Red bits in non-palette modes
0x00000000, // Mask for Green bits in non-palette modes
0x00000000, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS | VIDEO_MODE_PALETTE_DRIVEN |
VIDEO_MODE_MANAGED_PALETTE, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the struct
(P9000_ID | P9100_ID),
v1280_1K_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1280_1K_8_60, // Index used to set this mode
1280, // X Resolution, in pixels
1024, // Y Resolution, in pixels
1280, // physical scanline byte length
1, // Number of video memory planes
8, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00000000, // Mask for Red bits in non-palette modes
0x00000000, // Mask for Green bits in non-palette modes
0x00000000, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS | VIDEO_MODE_PALETTE_DRIVEN |
VIDEO_MODE_MANAGED_PALETTE, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the struct
(P9000_ID | P9100_ID),
v1280_1K_74, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1280_1K_8_74, // Index used to set this mode
1280, // X Resolution, in pixels
1024, // Y Resolution, in pixels
1280, // physical scanline byte length
1, // Number of video memory planes
8, // Number of bits per plane
74, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00000000, // Mask for Red bits in non-palette modes
0x00000000, // Mask for Green bits in non-palette modes
0x00000000, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS | VIDEO_MODE_PALETTE_DRIVEN |
VIDEO_MODE_MANAGED_PALETTE, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the struct
(P9000_ID | P9100_ID),
v1280_1K_75, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1280_1K_8_75, // Index used to set this mode
1280, // X Resolution, in pixels
1024, // Y Resolution, in pixels
1280, // physical scanline byte length
1, // Number of video memory planes
8, // Number of bits per plane
75, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00000000, // Mask for Red bits in non-palette modes
0x00000000, // Mask for Green bits in non-palette modes
0x00000000, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS | VIDEO_MODE_PALETTE_DRIVEN |
VIDEO_MODE_MANAGED_PALETTE, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the struct
P9100_ID,
v1280_1K_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1280_1K_16_60, // Index used to set this mode
1280, // X Resolution, in pixels
1024, // Y Resolution, in pixels
1280 * 2, // physical scanline byte length
1, // Number of video memory planes
16, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
5, // # of Red bits in non-palette modes
5, // # of Green bits in non-palette modes
5, // # of Blue bits in non-palette modes
0x00007C00, // Mask for Red bits in non-palette modes
0x000003E0, // Mask for Green bits in non-palette modes
0x0000001F, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
}
},
{
18, // Number of entries in the struct
P9100_ID,
v1280_1K_74, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1280_1K_16_74, // Index used to set this mode
1280, // X Resolution, in pixels
1024, // Y Resolution, in pixels
1280 * 2, // physical scanline byte length
1, // Number of video memory planes
16, // Number of bits per plane
74, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
5, // # of Red bits in non-palette modes
5, // # of Green bits in non-palette modes
5, // # of Blue bits in non-palette modes
0x00007C00, // Mask for Red bits in non-palette modes
0x000003E0, // Mask for Green bits in non-palette modes
0x0000001F, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
}
},
{
18, // Number of entries in the struct
P9100_ID,
v1280_1K_75, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1280_1K_16_75, // Index used to set this mode
1280, // X Resolution, in pixels
1024, // Y Resolution, in pixels
1280 * 2, // physical scanline byte length
1, // Number of video memory planes
16, // Number of bits per plane
75, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
5, // # of Red bits in non-palette modes
5, // # of Green bits in non-palette modes
5, // # of Blue bits in non-palette modes
0x00007C00, // Mask for Red bits in non-palette modes
0x000003E0, // Mask for Green bits in non-palette modes
0x0000001F, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
}
},
{
18, // Number of entries in the struct
P9100_ID,
v1280_1K_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1280_1K_24_60, // Index used to set this mode
1280, // X Resolution, in pixels
1024, // Y Resolution, in pixels
1280 * 3, // physical scanline byte length
1, // Number of video memory planes
24, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the struct
P9100_ID,
v1280_1K_74, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1280_1K_24_74, // Index used to set this mode
1280, // X Resolution, in pixels
1024, // Y Resolution, in pixels
1280 * 3, // physical scanline byte length
1, // Number of video memory planes
24, // Number of bits per plane
74, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the struct
P9100_ID,
v1280_1K_75, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1280_1K_24_75, // Index used to set this mode
1280, // X Resolution, in pixels
1024, // Y Resolution, in pixels
1280 * 3, // physical scanline byte length
1, // Number of video memory planes
24, // Number of bits per plane
75, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00FF0000, // Mask for Red bits in non-palette modes
0x0000FF00, // Mask for Green bits in non-palette modes
0x000000FF, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the struct
(P9000_ID | P9100_ID),
v1600_1200_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1600_1200_8_60, // Index used to set this mode
1600, // X Resolution, in pixels
1200, // Y Resolution, in pixels
1600, // physical scanline byte length
1, // Number of video memory planes
8, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
8, // # of Red bits in non-palette modes
8, // # of Green bits in non-palette modes
8, // # of Blue bits in non-palette modes
0x00000000, // Mask for Red bits in non-palette modes
0x00000000, // Mask for Green bits in non-palette modes
0x00000000, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS | VIDEO_MODE_PALETTE_DRIVEN |
VIDEO_MODE_MANAGED_PALETTE, // Mode flags
0L, 0L
}
},
{
18, // Number of entries in the struct
P9100_ID,
v1600_1200_60, // Ptr to the default video parms
FALSE,
{ // containing the video parms.
sizeof(VIDEO_MODE_INFORMATION), // Size of the mode info struct
m1600_1200_16_60, // Index used to set this mode
1600, // X Resolution, in pixels
1200, // Y Resolution, in pixels
1600 * 2, // physical scanline byte length
1, // Number of video memory planes
16, // Number of bits per plane
60, // Screen Frequency, in Hertz.
330, // Horizontal size of screen in mm
240, // Vertical size of screen in mm
5, // # of Red bits in non-palette modes
5, // # of Green bits in non-palette modes
5, // # of Blue bits in non-palette modes
0x00007C00, // Mask for Red bits in non-palette modes
0x000003E0, // Mask for Green bits in non-palette modes
0x0000001F, // Mask for Blue bits in non-palette modes
VIDEO_MODE_COLOR | VIDEO_MODE_GRAPHICS,
0L, 0L
}
}
};
//
// Dummy variables used as destination reads of the P9 VRTC register reads.
// They are used to detect vertical retrace.
//
ULONG ulStrtScan;
ULONG ulCurScan;