#ifndef __VESA_HPP #define __VESA_HPP #include "porttype.hpp" #pragma pack(1); //VESA BIOS Extensions struct SuperVGAInformation { uint8 signature[4]; uint16 version; char far * OEM_name; uint8 capabilities[4]; uint16 far *supported_modes; uint8 _filler[242]; }; int VBE_GetInformation(SuperVGAInformation *info); struct SuperVGAModeInformation { uint16 mode_supported : 1; uint16 optional_information_available : 1; uint16 BIOS_output_supported : 1; uint16 color : 1; uint16 graphics : 1; uint16 _filler1 : 11; uint8 windowA_exists : 1; uint8 windowA_readable : 1; uint8 windowA_writable : 1; uint8 _filler2 : 5; uint8 windowB_exists : 1; uint8 windowB_readable : 1; uint8 windowB_writable : 1; uint8 _filler3 : 5; uint16 window_granularityKB; uint16 window_sizeKB; uint16 windowA_segment; uint16 windowB_segment; void (far * window_positioning)(); uint16 bytes_per_scanline; //optional, needed for OEM modes uint16 width; uint16 height; uint8 charcell_width; uint8 charcell_height; uint8 planes; uint8 bpp; uint8 banks; uint8 memory_model; uint8 bank_sizeKB; uint8 pages; uint8 reserved; //VBE 1.2+ uint8 redmasksize; uint8 redfieldpos; uint8 greenmasksize; uint8 greenfieldpos; uint8 bluemasksize; uint8 bluefieldpos; uint8 reservedmasksize; uint8 reservedmaskpos; uint8 directcolor_info; uint8 _filler[216]; }; #define mm_16color 0x03 #define mm_packedpixel 0x04 #define mm_sequ256 0x05 #define mm_directcolor 0x06 #define mm_YUV 0x07 int VBE_GetModeInformation(SuperVGAModeInformation *info, int mode); #define VVM_640x400x256 0x0100 #define VVM_640x480x256 0x0101 #define VVM_800x600x16 0x0102 #define VVM_800x600x256 0x0103 #define VVM_1024x768x16 0x0104 #define VVM_1024x768x256 0x0105 #define VVM_1280x1024x16 0x0106 #define VVM_1280x1024x256 0x0107 //text modes omitted #define VVM_320x200x32K 0x010D #define VVM_320x200x64K 0x010E #define VVM_320x200x16M 0x010F #define VVM_640x480x32K 0x0110 #define VVM_640x480x64K 0x0111 #define VVM_640x480x16M 0x0112 #define VVM_800x600x32K 0x0113 #define VVM_800x600x64K 0x0114 #define VVM_800x600x16M 0x0115 #define VVM_1024x768x32K 0x0116 #define VVM_1024x768x64K 0x0117 #define VVM_1024x768x16M 0x0118 #define VVM_1280x1024x32K 0x0119 #define VVM_1280x1024x64K 0x011A #define VVM_1280x1024x16M 0x011B int VBE_SetVideoMode(int mode, int clear=1); int VBE_GetCurrentVideoMode(); int VBE_QueryVideoStateBufferBytes(); int VBE_SaveVideoState(void *buffer); int VBE_RestoreVideoState(const void *buffer); int VBE_SelectVideoMemoryWindow(unsigned addressG, unsigned window); int SetDACRegisters(void *table, unsigned start, unsigned registers); #pragma pack(); #endif