|
Appendix D VESA.H and PCX.H Headers
VESA.H
#define VESA_MODES_ONLY 1
#define VIDEO_INT 0x10
#define VIDEO_MODE_0x03 0x03
#define VESA_FUNCTION 0x4F
#define VESA_GRAPHICS_640x400x256 0x0100
#define VESA_GRAPHICS_640x480x256 0x0101
#define VESA_GRAPHICS_800x600x16 0x0102
#define VESA_GRAPHICS_800x600x256 0x0103
#define VESA_GRAPHICS_1024x768x16 0x0104
#define VESA_GRAPHICS_1024x768x256 0x0105
#define VESA_GRAPHICS_1280x1024x16 0x0106
#define VESA_GRAPHICS_1280x1024x256 0x0107
#define VESA_TEXT_80x60 0x0108
#define VESA_TEXT_132x25 0x0109
#define VESA_TEXT_132x43 0x010A
#define VESA_TEXT_132x50 0x010B
#define VESA_TEXT_132x60 0x010C
#define VESA_DIRECT_320x200_1_5_5_5 0x010D
#define VESA_DIRECT_320x200_0_5_6_5 0x010E
#define VESA_DIRECT_320x200_0_8_8_8 0x010F
#define VESA_DIRECT_640x480_1_5_5_5 0x010D
#define VESA_DIRECT_640x480_0_5_6_5 0x010E
#define VESA_DIRECT_640x480_0_8_8_8 0x010F
#define VESA_DIRECT_800x600_1_5_5_5 0x0110
#define VESA_DIRECT_800x600_0_5_6_5 0x0111
#define VESA_DIRECT_800x600_0_8_8_8 0x0112
#define VESA_DIRECT_1024x768_1_5_5_5 0x0113
#define VESA_DIRECT_1024x768_0_5_6_5 0x0114
#define VESA_DIRECT_1024x768_0_8_8_8 0x0115
#define VESA_DIRECT_1280x1024_1_5_5_5 0x0116
#define VESA_DIRECT_1280x1024_0_5_6_5 0x0117
#define VESA_DIRECT_1280x1024_0_8_8_8 0x0118
#define VESA_WINDOW_A 0
#define VESA_WINDOW_B 1
#define VESA_CLEAR_VIDEO_MEMORY_FLAG 0x0000
#define VESA_DO_NOT_CLEAR_VIDEO_MEMORY_FLAG 0x8000
#define VESA_RETURN_INFO 0x00
#define VESA_RETURN_MODE_INFO 0x01
#define VESA_SET_MODE 0x02
#define VESA_RETURN_CURRENT_MODE 0x03
#define VESA_SAVE_OR_RESTORE_STATE 0x04
#define VESA_WINDOW_CONTROL 0x05
#define VESA_LOGICAL_SCAN_LINE_LENGTH 0x06
#define VESA_SET_OR_GET_DISPLAY_START 0x07
#define VESA_SET_OR_GET_DAC_CONTROL 0x08
#define VESA_SELECT_DISPLAY_START 0x00
#define VESA_RETURN_DISPLAY_START 0x01
#define VESA_SET_DAC_PALETTE_WIDTH 0x00
#define VESA_GET_DAC_PALETTE_WIDTH 0x01
#define VESA_CALL_SUCCESSFUL 0x00
#define VESA_FUNCTION_SUPPORTED 0x4F
#define VESA_DAC_WIDTH_TEST_BIT 0x01
#define VESA_VIDEO_MODE_TEST_BIT 0x0100
#define VESA_SELECT_WINDOW_GRANULE 0x00
#define VESA_RETURN_WINDOW_GRANULE 0x01
#define VESA_MODE_AVAILABLE_TEST_BIT 0x0001
#define VESA_MODE_EXTENDED_INFO_AVAIL_TEST_BIT 0x0002
#define VESA_MODE_OUTPUT_FUN_TEST_BIT 0x0004
#define VESA_MODE_MONO_COLOR_TEST_BIT 0x0008
#define VESA_MODE_MONO_TYPE_TEST_BIT 0x0010
#define VESA_WINDOW_SUPPORTED_TEST_BIT 0x01
#define VESA_WINDOW_READABLE_TEST_BIT 0x02
#define VESA_WINDOW_WRITABLE_TEST_BIT 0x04
#define VESA_MODE_TEXT 0x00
#define VESA_MODE_CGA_GRAPHICS 0x01
#define VESA_MODE_HERCULES_GRAPHICS 0x02
#define VESA_MODE_4_PLANE_PLANAR 0x03
#define VESA_MODE_PACKED_PIXEL 0x04
#define VESA_MODE_NON_CHAIN_4_256_COLOR 0x05
#define VESA_MODE_DIRECT_COLOR 0x06
#define VESA_MODE_YCbCr 0x07
#define VESA_PROGRAMMABLE_DIRECT_COLOR_RAMP_TEST_BIT 0x01
#define VESA_RESERVED_BITS_ARE_USABLE_TEST_BIT 0x02
struct VesaInfoBlock
{
USGC VesaSignature[4]; /* 'VESA' */
USGI VesaVersion; /* eg. 0x0102 == 1.2 */
char far *OemStringPtr; /* who dat? */
USGC Capabilities[4];
USGI far *VideoModePtr;
USGI Total64kMemoryBlocks;
char Reserved[256]; /* more than enough space */
}
struct VesaModeInfoBlock
{
USGI ModeAttributes;
USGC WinAAttributes;
USGC WinBAttributes;
USGI WinGranularity;
USGI WinSize;
USGI WinASegment;
USGI WinBSegment;
void ((far *WinFuncPtr)());
USGI BytesPerScanLine;
USGI XResolution;
USGI YResolution;
USGC XCharSize;
USGC YCharSize;
USGC NumberOfPlanes;
USGC BitsPerPixel;
USGC NumberOfBanks;
USGC MemoryModel;
USGC BankSize;
USGC NumberOfImagePages;
USGC ReservedForPageFunction;
USGC RedMaskSize;
USGC RedFieldPosition;
USGC GreenMaskSize;
USGC GreenFieldPosition;
USGC BlueMaskSize;
USGC BlueFieldPosition;
USGC RsvdMaskSize;
USGC RsvdFieldPosition;
USGC DirectColorModeInfo;
char Reserved[256]; /* more than enough space */
};
PCX.H
#define PCX_FILE_FLAG 0x0A
#define PCX_FILE_RUN_LENGTH_ENCODING 0x01
#define PCX_FILE_VERSION_2_5 0x00
#define PCX_FILE_VERSION_2_8_WITH_PALETTE 0x02
#define PCX_FILE_VERSION_2_8_WITHOUT_PALETTE 0x03
#define PCX_FILE_PC_PAINTBRUSH_FOR_WINDOWS 0x04
#define PCX_FILE_VERSION_3_0 0x05
#define PCX_FILE_COLOR_BW_PALETTE 0x01
#define PCX_FILE_GRAYSCALE_PALETTE 0x02
#define PCX_FILE_IMAGE_DATA_OFFSET (128L)
#define PCX_FILE_256_COLOR_PALETTE_FLAG 0x0C
#define PCX_FILE_256_COLOR_PALETTE_FLAG_OFFSET (-769L)
#define PCX_FILE_16_COLOR_PALETTE_SIZE (3 * 16)
#define PCX_FILE_16_COLOR_PALETTE_OFFSET (16)
#define PCX_RUN_LENGTH_INDICATOR_MASK 0x00C0
struct PcxHeaderStruct {
USGC ManufacturerFlag;
USGC FileFormatVersionNumber;
USGC EncodingMethod;
USGC BitsPerPixelPerPlane;
USGI XMin, YMin, XMax, YMax;
USGI SuggestedHorizontalDPI;
USGI SuggestedVerticalDPI;
USGC SixteenColorPalette[48];
USGC Reserved;
USGC NumberOfColorPlanes;
USGI BytesPerScanLine;
USGI PaletteInformation;
USGI ScreenHorizontalPixelCount;
USGI ScreenVerticalPixelCount;
USGC Filler[54];
};
|