diff options
author | Jeroen Janssen <japj@xs4all.nl> | 2002-03-06 17:00:57 +0000 |
---|---|---|
committer | Jeroen Janssen <japj@xs4all.nl> | 2002-03-06 17:00:57 +0000 |
commit | e4d18dfab132aa282f74c9e4208faadc414564ee (patch) | |
tree | 8835dcdf05fdd0bd0a7a55cf43121094d13692e2 | |
parent | 4fbc1220df38aa9559886c04e145a0d18c99e486 (diff) | |
download | vgabios-e4d18dfab132aa282f74c9e4208faadc414564ee.tar.gz |
- implemented banked & lfb support for 320x200x8bpp
(some fixes for vbetest program not displaying anything)
-rw-r--r-- | vbe.c | 2 | ||||
-rw-r--r-- | vbe.h | 3 | ||||
-rw-r--r-- | vbetables.h | 57 |
3 files changed, 44 insertions, 18 deletions
@@ -70,6 +70,7 @@ _vbebios_product_revision: // FIXME: for each new mode add a statement here // at least until dynamic list creation is working _vbebios_mode_list: +#ifdef LIST_UNSUPPORTED_MODI .word VBE_VESA_MODE_640X400X8 .word VBE_VESA_MODE_640X480X8 .word VBE_VESA_MODE_640X480X565 @@ -78,6 +79,7 @@ _vbebios_mode_list: .word VBE_VESA_MODE_800X600X888 .word VBE_OWN_MODE_800X600X8888 .word VBE_OWN_MODE_1024X768X8888 +#endif .word VBE_OWN_MODE_320X200X8 .word VBE_VESA_MODE_END_OF_LIST #endif @@ -262,6 +262,9 @@ typedef struct ModeInfoBlock // like 0xE0000000 #define VBE_PHYSICAL_BASE_ADDRESS 0x3b00000 +#define VGAMEM_GRAPH_PHYSICAL_ADDRESS 0xA0000 +#define VBE_BANK_SIZE_KB 64 + // FIXME: Add actual host <-> guest IOPORT #define VBE_BIOS_CALLBACK_IOPORT 0xFF00 #define VBE_TOTAL_VIDEO_MEMORY_DIV_64K (4*1024/64) diff --git a/vbetables.h b/vbetables.h index c6ad88c..fc39fbb 100644 --- a/vbetables.h +++ b/vbetables.h @@ -14,6 +14,7 @@ typedef struct ModeInfoListItem ModeInfoBlockCompact info; } ModeInfoListItem; +//#define LIST_UNSUPPORTED_MODI // FIXME: check all member variables to be correct for the different modi // FIXME: add more modi @@ -25,16 +26,21 @@ static ModeInfoListItem mode_info_list[]= /*typedef struct ModeInfoBlock {*/ // Mandatory information for all VBE revisions - /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTTRIBUTE_LFB_ONLY, - /*Bit8u WinAAttributes*/ 0, + /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | + VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | + VBE_MODE_ATTRIBUTE_COLOR_MODE | + VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | + VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, + /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_READABLE | + VBE_WINDOW_ATTRIBUTE_WRITEABLE, /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ 0, - /*Bit16u WinSize*/ 0, - /*Bit16u WinASegment*/ 0, + /*Bit16u WinGranularity*/ VBE_BANK_SIZE_KB, + /*Bit16u WinSize*/ VBE_BANK_SIZE_KB, + /*Bit16u WinASegment*/ VGAMEM_GRAPH, /*Bit16u WinBSegment*/ 0, /*Bit32u WinFuncPtr*/ 0, /*Bit16u BytesPerScanLine*/ 320, -// Mandatory information for VBE 1.2 and above +// Mandatory information for VBE 1.2 and above /*Bit16u XResolution*/ 320, /*Bit16u YResolution*/ 200, /*Bit8u XCharSize*/ 8, @@ -57,10 +63,10 @@ static ModeInfoListItem mode_info_list[]= /*Bit8u RsvdFieldPosition*/ 0, /*Bit8u DirectColorModeInfo*/ 0, // Mandatory information for VBE 2.0 and above - /*Bit32u PhysBasePtr*/ 0xa0000, //FIXME: this allows this mode to be displayed using the standard 320x200x8 vga mode + /*Bit32u PhysBasePtr*/ VGAMEM_GRAPH_PHYSICAL_ADDRESS, //FIXME: this allows this mode to be displayed using the standard 320x200x8 vga mode /*Bit32u OffScreenMemOffset*/ 0, /*Bit16u OffScreenMemSize*/ 0, -// Mandatory information for VBE 3.0 and above +// Mandatory information for VBE 3.0 and above /*Bit16u LinBytesPerScanLine*/ 320, /*Bit8u BnkNumberOfPages*/ 0, /*Bit8u LinNumberOfPages*/ 0, @@ -76,14 +82,16 @@ static ModeInfoListItem mode_info_list[]= /*} ModeInfoBlock;*/ } }, - +#ifdef LIST_UNSUPPORTED_MODI { VBE_VESA_MODE_640X400X8, { /*typedef struct ModeInfoBlock {*/ // Mandatory information for all VBE revisions - /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | VBE_MODE_ATTTRIBUTE_LFB_ONLY, + /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | + VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | + VBE_MODE_ATTTRIBUTE_LFB_ONLY, /*Bit8u WinAAttributes*/ 0, /*Bit8u WinBAttributes*/ 0, /*Bit16u WinGranularity*/ 0, @@ -92,7 +100,7 @@ static ModeInfoListItem mode_info_list[]= /*Bit16u WinBSegment*/ 0, /*Bit32u WinFuncPtr*/ 0, /*Bit16u BytesPerScanLine*/ 640, -// Mandatory information for VBE 1.2 and above +// Mandatory information for VBE 1.2 and above /*Bit16u XResolution*/ 640, /*Bit16u YResolution*/ 400, /*Bit8u XCharSize*/ 8, @@ -118,7 +126,7 @@ static ModeInfoListItem mode_info_list[]= /*Bit32u PhysBasePtr*/ VBE_PHYSICAL_BASE_ADDRESS, /*Bit32u OffScreenMemOffset*/ 0, /*Bit16u OffScreenMemSize*/ 0, -// Mandatory information for VBE 3.0 and above +// Mandatory information for VBE 3.0 and above /*Bit16u LinBytesPerScanLine*/ 640, /*Bit8u BnkNumberOfPages*/ 0, /*Bit8u LinNumberOfPages*/ 0, @@ -141,7 +149,9 @@ static ModeInfoListItem mode_info_list[]= /*typedef struct ModeInfoBlock {*/ // Mandatory information for all VBE revisions - /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | VBE_MODE_ATTTRIBUTE_LFB_ONLY, + /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | + VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | + VBE_MODE_ATTTRIBUTE_LFB_ONLY, /*Bit8u WinAAttributes*/ 0, /*Bit8u WinBAttributes*/ 0, /*Bit16u WinGranularity*/ 0, @@ -199,7 +209,9 @@ static ModeInfoListItem mode_info_list[]= /*typedef struct ModeInfoBlock {*/ // Mandatory information for all VBE revisions - /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | VBE_MODE_ATTTRIBUTE_LFB_ONLY, + /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | + VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | + VBE_MODE_ATTTRIBUTE_LFB_ONLY, /*Bit8u WinAAttributes*/ 0, /*Bit8u WinBAttributes*/ 0, /*Bit16u WinGranularity*/ 0, @@ -315,7 +327,9 @@ static ModeInfoListItem mode_info_list[]= /*typedef struct ModeInfoBlock {*/ // Mandatory information for all VBE revisions - /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | VBE_MODE_ATTTRIBUTE_LFB_ONLY, + /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | + VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | + VBE_MODE_ATTTRIBUTE_LFB_ONLY, /*Bit8u WinAAttributes*/ 0, /*Bit8u WinBAttributes*/ 0, /*Bit16u WinGranularity*/ 0, @@ -373,7 +387,9 @@ static ModeInfoListItem mode_info_list[]= /*typedef struct ModeInfoBlock {*/ // Mandatory information for all VBE revisions - /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | VBE_MODE_ATTTRIBUTE_LFB_ONLY, + /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | + VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | + VBE_MODE_ATTTRIBUTE_LFB_ONLY, /*Bit8u WinAAttributes*/ 0, /*Bit8u WinBAttributes*/ 0, /*Bit16u WinGranularity*/ 0, @@ -431,7 +447,9 @@ static ModeInfoListItem mode_info_list[]= /*typedef struct ModeInfoBlock {*/ // Mandatory information for all VBE revisions - /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | VBE_MODE_ATTTRIBUTE_LFB_ONLY, + /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | + VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | + VBE_MODE_ATTTRIBUTE_LFB_ONLY, /*Bit8u WinAAttributes*/ 0, /*Bit8u WinBAttributes*/ 0, /*Bit16u WinGranularity*/ 0, @@ -489,7 +507,9 @@ static ModeInfoListItem mode_info_list[]= /*typedef struct ModeInfoBlock {*/ // Mandatory information for all VBE revisions - /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | VBE_MODE_ATTTRIBUTE_LFB_ONLY, + /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | + VBE_MODE_ATTRIBUTE_GRAPHICS_MODE | + VBE_MODE_ATTTRIBUTE_LFB_ONLY, /*Bit8u WinAAttributes*/ 0, /*Bit8u WinBAttributes*/ 0, /*Bit16u WinGranularity*/ 0, @@ -540,6 +560,7 @@ static ModeInfoListItem mode_info_list[]= /*} ModeInfoBlock;*/ } }, +#endif /** END OF THE LIST **/ { |