Previous Table of Contents Next


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];
                       };


Previous Table of Contents Next