From 9d0869b630baf5b94c6cb6a87520dd881ae08613 Mon Sep 17 00:00:00 2001 From: bellard Date: Wed, 14 Jun 2006 00:58:54 +0000 Subject: [PATCH] fixed VBE protected mode calls - added VGA and VBE save restore support (not fully tested) - automatic generation of VBE mode table git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1959 c046a42c-6fe2-441c-8c8c-71466251a162 --- pc-bios/vgabios-cirrus.bin | Bin 32768 -> 35328 bytes pc-bios/vgabios.bin | Bin 34304 -> 37888 bytes pc-bios/vgabios.diff | 3144 +++++++++--------------------------- 3 files changed, 781 insertions(+), 2363 deletions(-) diff --git a/pc-bios/vgabios-cirrus.bin b/pc-bios/vgabios-cirrus.bin index b9229f6638378d78cdaa5edbc9764fca8e7cca79..34f9a9ff7ce38e4b582c81067454b89bf8d55ac7 100644 GIT binary patch delta 7061 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 T)o`jO-(nOh1z<#X1snbgk=j_o diff --git a/pc-bios/vgabios.bin b/pc-bios/vgabios.bin index 9b815bc78944056eefb3d956fd0ecf08a37fd516..17cb63f6ad879a589142c09e836821e35b63f706 100644 GIT binary patch delta 9445 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 delta 5495 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 NQZ)sK>Bp(l{{{rDm+}Ar diff --git a/pc-bios/vgabios.diff b/pc-bios/vgabios.diff index 93e23d3a404..661c032e46c 100644 --- a/pc-bios/vgabios.diff +++ b/pc-bios/vgabios.diff @@ -1,10 +1,36 @@ +Index: Makefile +=================================================================== +RCS file: /sources/vgabios/vgabios/Makefile,v +retrieving revision 1.17 +diff -u -w -r1.17 Makefile +--- Makefile 6 Mar 2005 13:06:47 -0000 1.17 ++++ Makefile 14 Jun 2006 00:51:06 -0000 +@@ -22,7 +22,7 @@ + cirrus-bios: vgabios-cirrus.bin vgabios-cirrus.debug.bin + + clean: +- /bin/rm -f biossums *.o *.s *.ld86 \ ++ /bin/rm -f biossums vbetables-gen vbetables.h *.o *.s *.ld86 \ + temp.awk.* vgabios*.orig _vgabios_* _vgabios-debug_* core vgabios*.bin vgabios*.txt $(RELEASE).bin *.bak + + dist-clean: clean +@@ -79,3 +79,9 @@ + + biossums: biossums.c + $(CC) -o biossums biossums.c ++ ++vbetables-gen: vbetables-gen.c ++ $(CC) -o vbetables-gen vbetables-gen.c ++ ++vbetables.h: vbetables-gen ++ ./vbetables-gen > $@ Index: clext.c =================================================================== RCS file: /sources/vgabios/vgabios/clext.c,v retrieving revision 1.10 diff -u -w -r1.10 clext.c --- clext.c 25 Mar 2006 10:19:15 -0000 1.10 -+++ clext.c 13 Jun 2006 16:47:23 -0000 ++++ clext.c 14 Jun 2006 00:51:06 -0000 @@ -544,6 +544,13 @@ cirrus_set_video_mode_extended: call cirrus_switch_mode @@ -72,14 +98,289 @@ diff -u -w -r1.10 clext.c cirrus_extbios_handlers: ;; 80h dw cirrus_extbios_80h +Index: vbe.c +=================================================================== +RCS file: /sources/vgabios/vgabios/vbe.c,v +retrieving revision 1.48 +diff -u -w -r1.48 vbe.c +--- vbe.c 26 Dec 2005 19:50:26 -0000 1.48 ++++ vbe.c 14 Jun 2006 00:51:07 -0000 +@@ -118,21 +118,114 @@ + .word VBE_VESA_MODE_END_OF_LIST + #endif + ++ .align 2 + vesa_pm_start: + dw vesa_pm_set_window - vesa_pm_start +- dw vesa_pm_set_display_strt - vesa_pm_start ++ dw vesa_pm_set_display_start - vesa_pm_start + dw vesa_pm_unimplemented - vesa_pm_start +- dw 0 ++ dw vesa_pm_io_ports_table - vesa_pm_start ++vesa_pm_io_ports_table: ++ dw VBE_DISPI_IOPORT_INDEX ++ dw VBE_DISPI_IOPORT_INDEX + 1 ++ dw VBE_DISPI_IOPORT_DATA ++ dw VBE_DISPI_IOPORT_DATA + 1 ++ dw 0xffff ++ dw 0xffff + + USE32 + vesa_pm_set_window: +- mov ax, #0x4f05 +- int #0x10 ++ cmp bx, #0x00 ++ je vesa_pm_set_display_window1 ++ mov ax, #0x0100 ++ ret ++vesa_pm_set_display_window1: ++ mov ax, dx ++ push dx ++ push ax ++ mov dx, # VBE_DISPI_IOPORT_INDEX ++ mov ax, # VBE_DISPI_INDEX_BANK ++ out dx, ax ++ pop ax ++ mov dx, # VBE_DISPI_IOPORT_DATA ++ out dx, ax ++ pop dx ++ mov ax, #0x004f + ret + + vesa_pm_set_display_start: +- mov ax, #0x4f07 +- int #0x10 ++ cmp bl, #0x80 ++ je vesa_pm_set_display_start1 ++ cmp bl, #0x00 ++ je vesa_pm_set_display_start1 ++ mov ax, #0x0100 ++ ret ++vesa_pm_set_display_start1: ++; convert offset to (X, Y) coordinate ++; (would be simpler to change Bochs VBE API...) ++ push eax ++ push ecx ++ push edx ++ push esi ++ push edi ++ shl edx, #16 ++ and ecx, #0xffff ++ or ecx, edx ++ shl ecx, #2 ++ mov eax, ecx ++ ++ push eax ++ mov dx, # VBE_DISPI_IOPORT_INDEX ++ mov ax, # VBE_DISPI_INDEX_VIRT_WIDTH ++ out dx, ax ++ mov dx, # VBE_DISPI_IOPORT_DATA ++ in ax, dx ++ movzx ecx, ax ++ ++ mov dx, # VBE_DISPI_IOPORT_INDEX ++ mov ax, # VBE_DISPI_INDEX_BPP ++ out dx, ax ++ mov dx, # VBE_DISPI_IOPORT_DATA ++ in ax, dx ++ movzx esi, ax ++ pop eax ++ ++ add esi, #7 ++ shr esi, #3 ++ imul ecx, esi ++ xor edx, edx ++ div ecx ++ mov edi, eax ++ mov eax, edx ++ xor edx, edx ++ div esi ++ ++ push dx ++ push ax ++ mov dx, # VBE_DISPI_IOPORT_INDEX ++ mov ax, # VBE_DISPI_INDEX_X_OFFSET ++ out dx, ax ++ pop ax ++ mov dx, # VBE_DISPI_IOPORT_DATA ++ out dx, ax ++ pop dx ++ ++ mov ax, di ++ push dx ++ push ax ++ mov dx, # VBE_DISPI_IOPORT_INDEX ++ mov ax, # VBE_DISPI_INDEX_Y_OFFSET ++ out dx, ax ++ pop ax ++ mov dx, # VBE_DISPI_IOPORT_DATA ++ out dx, ax ++ pop dx ++ ++ pop edi ++ pop esi ++ pop edx ++ pop ecx ++ pop eax ++ mov ax, #0x004f + ret + + vesa_pm_unimplemented: +@@ -835,6 +928,64 @@ + ASM_END + + ++Bit16u vbe_biosfn_read_video_state_size() ++{ ++ return 9 * 2; ++} ++ ++void vbe_biosfn_save_video_state(ES, BX) ++ Bit16u ES; Bit16u BX; ++{ ++ Bit16u enable, i; ++ ++ outw(VBE_DISPI_IOPORT_INDEX,VBE_DISPI_INDEX_ENABLE); ++ enable = inw(VBE_DISPI_IOPORT_DATA); ++ write_word(ES, BX, enable); ++ BX += 2; ++ if (!(enable & VBE_DISPI_ENABLED)) ++ return; ++ for(i = VBE_DISPI_INDEX_XRES; i <= VBE_DISPI_INDEX_Y_OFFSET; i++) { ++ if (i != VBE_DISPI_INDEX_ENABLE) { ++ outw(VBE_DISPI_IOPORT_INDEX, i); ++ write_word(ES, BX, inw(VBE_DISPI_IOPORT_DATA)); ++ BX += 2; ++ } ++ } ++} ++ ++ ++void vbe_biosfn_restore_video_state(ES, BX) ++ Bit16u ES; Bit16u BX; ++{ ++ Bit16u enable, i; ++ ++ enable = read_word(ES, BX); ++ BX += 2; ++ ++ if (!(enable & VBE_DISPI_ENABLED)) { ++ outw(VBE_DISPI_IOPORT_INDEX,VBE_DISPI_INDEX_ENABLE); ++ outw(VBE_DISPI_IOPORT_DATA, enable); ++ } else { ++ outw(VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_XRES); ++ outw(VBE_DISPI_IOPORT_DATA, read_word(ES, BX)); ++ BX += 2; ++ outw(VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_YRES); ++ outw(VBE_DISPI_IOPORT_DATA, read_word(ES, BX)); ++ BX += 2; ++ outw(VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_BPP); ++ outw(VBE_DISPI_IOPORT_DATA, read_word(ES, BX)); ++ BX += 2; ++ outw(VBE_DISPI_IOPORT_INDEX,VBE_DISPI_INDEX_ENABLE); ++ outw(VBE_DISPI_IOPORT_DATA, enable); ++ ++ for(i = VBE_DISPI_INDEX_BANK; i <= VBE_DISPI_INDEX_Y_OFFSET; i++) { ++ outw(VBE_DISPI_IOPORT_INDEX, i); ++ outw(VBE_DISPI_IOPORT_DATA, read_word(ES, BX)); ++ BX += 2; ++ } ++ } ++} ++ + /** Function 04h - Save/Restore State + * + * Input: +@@ -849,10 +1000,48 @@ + * BX = Number of 64-byte blocks to hold the state buffer (if DL=00h) + * + */ +-void vbe_biosfn_save_restore_state(AX, DL, CX, ES, BX) ++void vbe_biosfn_save_restore_state(AX, CX, DX, ES, BX) ++Bit16u *AX; Bit16u CX; Bit16u DX; Bit16u ES; Bit16u *BX; + { +-} ++ Bit16u ss=get_SS(); ++ Bit16u result, val; + ++ result = 0x4f; ++ switch(GET_DL()) { ++ case 0x00: ++ val = biosfn_read_video_state_size2(CX); ++#ifdef DEBUG ++ printf("VGA state size=%x\n", val); ++#endif ++ if (CX & 8) ++ val += vbe_biosfn_read_video_state_size(); ++ write_word(ss, BX, val); ++ break; ++ case 0x01: ++ val = read_word(ss, BX); ++ val = biosfn_save_video_state(CX, ES, val); ++#ifdef DEBUG ++ printf("VGA save_state offset=%x\n", val); ++#endif ++ if (CX & 8) ++ vbe_biosfn_save_video_state(ES, val); ++ break; ++ case 0x02: ++ val = read_word(ss, BX); ++ val = biosfn_restore_video_state(CX, ES, val); ++#ifdef DEBUG ++ printf("VGA restore_state offset=%x\n", val); ++#endif ++ if (CX & 8) ++ vbe_biosfn_restore_video_state(ES, val); ++ break; ++ default: ++ // function failed ++ result = 0x100; ++ break; ++ } ++ write_word(ss, AX, result); ++} + + /** Function 05h - Display Window Control + * +@@ -1090,7 +1279,7 @@ + */ + ASM_START + vbe_biosfn_return_protected_mode_interface: +- test bx, bx ++ test bl, bl + jnz _fail + mov di, #0xc000 + mov es, di Index: vbe.h =================================================================== RCS file: /sources/vgabios/vgabios/vbe.h,v retrieving revision 1.24 diff -u -w -r1.24 vbe.h --- vbe.h 9 May 2004 20:31:31 -0000 1.24 -+++ vbe.h 13 Jun 2006 16:47:24 -0000 -@@ -193,6 +193,10 @@ ++++ vbe.h 14 Jun 2006 00:51:07 -0000 +@@ -14,7 +14,7 @@ + void vbe_biosfn_return_controller_information(AX, ES, DI); + void vbe_biosfn_return_mode_information(AX, CX, ES, DI); + void vbe_biosfn_set_mode(AX, BX, ES, DI); +-void vbe_biosfn_save_restore_state(AX, DL, CX, ES, BX); ++void vbe_biosfn_save_restore_state(AX, CX, DX, ES, BX); + void vbe_biosfn_set_get_palette_data(AX); + void vbe_biosfn_return_protected_mode_interface(AX); + +@@ -151,6 +151,12 @@ + Bit8u Reserved[189]; + } ModeInfoBlock; + ++typedef struct ModeInfoListItem ++{ ++ Bit16u mode; ++ ModeInfoBlockCompact info; ++} ModeInfoListItem; ++ + // VBE Return Status Info + // AL + #define VBE_RETURN_STATUS_SUPPORTED 0x4F +@@ -193,6 +199,10 @@ #define VBE_VESA_MODE_1280X1024X1555 0x119 #define VBE_VESA_MODE_1280X1024X565 0x11A #define VBE_VESA_MODE_1280X1024X888 0x11B @@ -90,7 +391,7 @@ diff -u -w -r1.24 vbe.h // BOCHS/PLEX86 'own' mode numbers #define VBE_OWN_MODE_320X200X8888 0x140 -@@ -202,6 +206,12 @@ +@@ -202,6 +212,12 @@ #define VBE_OWN_MODE_1024X768X8888 0x144 #define VBE_OWN_MODE_1280X1024X8888 0x145 #define VBE_OWN_MODE_320X200X8 0x146 @@ -103,7 +404,7 @@ diff -u -w -r1.24 vbe.h #define VBE_VESA_MODE_END_OF_LIST 0xFFFF -@@ -259,7 +269,7 @@ +@@ -259,7 +275,7 @@ // like 0xE0000000 @@ -112,2367 +413,484 @@ diff -u -w -r1.24 vbe.h #define VBE_DISPI_BANK_ADDRESS 0xA0000 #define VBE_DISPI_BANK_SIZE_KB 64 -Index: vbetables.h +Index: vgabios.c =================================================================== -RCS file: /sources/vgabios/vgabios/vbetables.h,v -retrieving revision 1.24 -diff -u -w -r1.24 vbetables.h ---- vbetables.h 22 Jul 2004 18:37:29 -0000 1.24 -+++ vbetables.h 13 Jun 2006 16:47:24 -0000 -@@ -14,46 +14,29 @@ - ModeInfoBlockCompact info; - } ModeInfoListItem; +RCS file: /sources/vgabios/vgabios/vgabios.c,v +retrieving revision 1.64 +diff -u -w -r1.64 vgabios.c +--- vgabios.c 25 Mar 2006 10:19:16 -0000 1.64 ++++ vgabios.c 14 Jun 2006 00:51:07 -0000 +@@ -109,8 +109,8 @@ + static void biosfn_write_string(); + static void biosfn_read_state_info(); + static void biosfn_read_video_state_size(); +-static void biosfn_save_video_state(); +-static void biosfn_restore_video_state(); ++static Bit16u biosfn_save_video_state(); ++static Bit16u biosfn_restore_video_state(); + extern Bit8u video_save_pointer_table[]; + + // This is for compiling with gcc2 and gcc3 +@@ -748,12 +748,7 @@ + vbe_biosfn_set_mode(&AX,BX,ES,DI); + break; + case 0x04: +- //FIXME +-#ifdef DEBUG +- unimplemented(); +-#endif +- // function failed +- AX=0x100; ++ vbe_biosfn_save_restore_state(&AX, CX, DX, ES, &BX); + break; + case 0x09: + //FIXME +@@ -3138,23 +3133,215 @@ + } --// FIXME: check all member variables to be correct for the different modi --// FIXME: add more modi - static ModeInfoListItem mode_info_list[]= + // -------------------------------------------------------------------------------------------- +-static void biosfn_read_video_state_size (CX,ES,BX) Bit16u CX;Bit16u ES;Bit16u BX; ++// -------------------------------------------------------------------------------------------- ++static Bit16u biosfn_read_video_state_size2 (CX) ++ Bit16u CX; { -- { -- VBE_VESA_MODE_640X400X8, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+{ 0x0100, /* 640x400x8 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, - /*Bit16u BytesPerScanLine*/ 640, --// Mandatory information for VBE 1.2 and above - /*Bit16u XResolution*/ 640, - /*Bit16u YResolution*/ 400, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, - /*Bit8u BitsPerPixel*/ 8, -- /*Bit8u NumberOfBanks*/ 4, // 640x400/64kb == 4 -+/*Bit8u NumberOfBanks*/ 4, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 15, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 0, - /*Bit8u RedFieldPosition*/ 0, - /*Bit8u GreenMaskSize*/ 0, -@@ -63,15 +46,9 @@ - /*Bit8u RsvdMaskSize*/ 0, - /*Bit8u RsvdFieldPosition*/ 0, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above - /*Bit16u LinBytesPerScanLine*/ 640, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, -@@ -84,45 +61,28 @@ - /*Bit8u LinRsvdMaskSize*/ 0, - /*Bit8u LinRsvdFieldPosition*/ 0, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_640X480X8, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0101, /* 640x480x8 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, - /*Bit16u BytesPerScanLine*/ 640, --// Mandatory information for VBE 1.2 and above - /*Bit16u XResolution*/ 640, - /*Bit16u YResolution*/ 480, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, - /*Bit8u BitsPerPixel*/ 8, -- /*Bit8u NumberOfBanks*/ 5, // 640x480/64kb == 5 -+/*Bit8u NumberOfBanks*/ 5, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 11, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 0, - /*Bit8u RedFieldPosition*/ 0, - /*Bit8u GreenMaskSize*/ 0, -@@ -132,15 +92,9 @@ - /*Bit8u RsvdMaskSize*/ 0, - /*Bit8u RsvdFieldPosition*/ 0, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above - /*Bit16u LinBytesPerScanLine*/ 640, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, -@@ -153,44 +107,28 @@ - /*Bit8u LinRsvdMaskSize*/ 0, - /*Bit8u LinRsvdFieldPosition*/ 0, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_800X600X4, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0102, /* 800x600x4 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, - /*Bit16u BytesPerScanLine*/ 100, --// Mandatory information for VBE 1.2 and above - /*Bit16u XResolution*/ 800, - /*Bit16u YResolution*/ 600, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 4, - /*Bit8u BitsPerPixel*/ 4, -- /*Bit8u NumberOfBanks*/ 16, -+/*Bit8u NumberOfBanks*/ 1, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_PLANAR, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 15, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 0, - /*Bit8u RedFieldPosition*/ 0, - /*Bit8u GreenMaskSize*/ 0, -@@ -200,11 +138,9 @@ - /*Bit8u RsvdMaskSize*/ 0, - /*Bit8u RsvdFieldPosition*/ 0, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above -- /*Bit32u PhysBasePtr*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above - /*Bit16u LinBytesPerScanLine*/ 100, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, -@@ -217,46 +153,28 @@ - /*Bit8u LinRsvdMaskSize*/ 0, - /*Bit8u LinRsvdFieldPosition*/ 0, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_800X600X8, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0103, /* 800x600x8 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, - /*Bit16u BytesPerScanLine*/ 800, --// Mandatory information for VBE 1.2 and above - /*Bit16u XResolution*/ 800, - /*Bit16u YResolution*/ 600, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, - /*Bit8u BitsPerPixel*/ 8, -- /*Bit8u NumberOfBanks*/ 8, // 800x600/64kb == 8 -+/*Bit8u NumberOfBanks*/ 8, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 7, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 0, - /*Bit8u RedFieldPosition*/ 0, - /*Bit8u GreenMaskSize*/ 0, -@@ -266,15 +184,9 @@ - /*Bit8u RsvdMaskSize*/ 0, - /*Bit8u RsvdFieldPosition*/ 0, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above - /*Bit16u LinBytesPerScanLine*/ 800, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, -@@ -287,46 +199,28 @@ - /*Bit8u LinRsvdMaskSize*/ 0, - /*Bit8u LinRsvdFieldPosition*/ 0, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_1024X768X8, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0105, /* 1024x768x8 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, - /*Bit16u BytesPerScanLine*/ 1024, --// Mandatory information for VBE 1.2 and above - /*Bit16u XResolution*/ 1024, - /*Bit16u YResolution*/ 768, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, - /*Bit8u BitsPerPixel*/ 8, -- /*Bit8u NumberOfBanks*/ 12, // 1024x768/64kb == 12 -+/*Bit8u NumberOfBanks*/ 12, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 3, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 0, - /*Bit8u RedFieldPosition*/ 0, - /*Bit8u GreenMaskSize*/ 0, -@@ -336,15 +230,9 @@ - /*Bit8u RsvdMaskSize*/ 0, - /*Bit8u RsvdFieldPosition*/ 0, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above - /*Bit16u LinBytesPerScanLine*/ 1024, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, -@@ -357,116 +245,74 @@ - /*Bit8u LinRsvdMaskSize*/ 0, - /*Bit8u LinRsvdFieldPosition*/ 0, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_640X480X1555, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0107, /* 1280x1024x8 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, -- /*Bit16u BytesPerScanLine*/ 640*2, --// Mandatory information for VBE 1.2 and above -- /*Bit16u XResolution*/ 640, -- /*Bit16u YResolution*/ 480, -+/*Bit16u BytesPerScanLine*/ 1280, -+/*Bit16u XResolution*/ 1280, -+/*Bit16u YResolution*/ 1024, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, -- /*Bit8u BitsPerPixel*/ 15, -- /*Bit8u NumberOfBanks*/ 1, -- /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BitsPerPixel*/ 8, -+/*Bit8u NumberOfBanks*/ 20, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 5, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) -- /*Bit8u RedMaskSize*/ 5, -- /*Bit8u RedFieldPosition*/ 10, -- /*Bit8u GreenMaskSize*/ 5, -- /*Bit8u GreenFieldPosition*/ 5, -- /*Bit8u BlueMaskSize*/ 5, -+/*Bit8u RedMaskSize*/ 0, -+/*Bit8u RedFieldPosition*/ 0, -+/*Bit8u GreenMaskSize*/ 0, -+/*Bit8u GreenFieldPosition*/ 0, -+/*Bit8u BlueMaskSize*/ 0, - /*Bit8u BlueFieldPosition*/ 0, -- /*Bit8u RsvdMaskSize*/ 1, -- /*Bit8u RsvdFieldPosition*/ 15, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above -- /*Bit16u LinBytesPerScanLine*/ 640*2, -+/*Bit16u LinBytesPerScanLine*/ 1280, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, -- /*Bit8u LinRedMaskSize*/ 5, -- /*Bit8u LinRedFieldPosition*/ 10, -+/*Bit8u LinRedMaskSize*/ 0, -+/*Bit8u LinRedFieldPosition*/ 0, - /*Bit8u LinGreenMaskSize*/ 0, -- /*Bit8u LinGreenFieldPosition*/ 5, -- /*Bit8u LinBlueMaskSize*/ 5, -+/*Bit8u LinGreenFieldPosition*/ 0, -+/*Bit8u LinBlueMaskSize*/ 0, - /*Bit8u LinBlueFieldPosition*/ 0, -- /*Bit8u LinRsvdMaskSize*/ 1, -- /*Bit8u LinRsvdFieldPosition*/ 15, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_800X600X1555, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x010d, /* 320x200x15 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, -- /*Bit16u BytesPerScanLine*/ 800*2, --// Mandatory information for VBE 1.2 and above -- /*Bit16u XResolution*/ 800, -- /*Bit16u YResolution*/ 600, -+/*Bit16u BytesPerScanLine*/ 640, -+/*Bit16u XResolution*/ 320, -+/*Bit16u YResolution*/ 200, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, - /*Bit8u BitsPerPixel*/ 15, -- /*Bit8u NumberOfBanks*/ 1, -+/*Bit8u NumberOfBanks*/ 2, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 3, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 5, - /*Bit8u RedFieldPosition*/ 10, - /*Bit8u GreenMaskSize*/ 5, -@@ -476,16 +322,10 @@ - /*Bit8u RsvdMaskSize*/ 1, - /*Bit8u RsvdFieldPosition*/ 15, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above -- /*Bit16u LinBytesPerScanLine*/ 800*2, -+/*Bit16u LinBytesPerScanLine*/ 640, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, - /*Bit8u LinRedMaskSize*/ 5, -@@ -497,256 +337,166 @@ - /*Bit8u LinRsvdMaskSize*/ 1, - /*Bit8u LinRsvdFieldPosition*/ 15, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_1024X768X1555, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x010e, /* 320x200x16 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, -- /*Bit16u BytesPerScanLine*/ 1024*2, --// Mandatory information for VBE 1.2 and above -- /*Bit16u XResolution*/ 1024, -- /*Bit16u YResolution*/ 768, -+/*Bit16u BytesPerScanLine*/ 640, -+/*Bit16u XResolution*/ 320, -+/*Bit16u YResolution*/ 200, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, -- /*Bit8u BitsPerPixel*/ 15, -- /*Bit8u NumberOfBanks*/ 1, -+/*Bit8u BitsPerPixel*/ 16, -+/*Bit8u NumberOfBanks*/ 2, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 1, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 5, -- /*Bit8u RedFieldPosition*/ 10, -- /*Bit8u GreenMaskSize*/ 5, -+/*Bit8u RedFieldPosition*/ 11, -+/*Bit8u GreenMaskSize*/ 6, - /*Bit8u GreenFieldPosition*/ 5, - /*Bit8u BlueMaskSize*/ 5, - /*Bit8u BlueFieldPosition*/ 0, -- /*Bit8u RsvdMaskSize*/ 1, -- /*Bit8u RsvdFieldPosition*/ 15, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above -- /*Bit16u LinBytesPerScanLine*/ 1024*2, -+/*Bit16u LinBytesPerScanLine*/ 640, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, - /*Bit8u LinRedMaskSize*/ 5, -- /*Bit8u LinRedFieldPosition*/ 10, -- /*Bit8u LinGreenMaskSize*/ 5, -+/*Bit8u LinRedFieldPosition*/ 11, -+/*Bit8u LinGreenMaskSize*/ 6, - /*Bit8u LinGreenFieldPosition*/ 5, - /*Bit8u LinBlueMaskSize*/ 5, - /*Bit8u LinBlueFieldPosition*/ 0, -- /*Bit8u LinRsvdMaskSize*/ 1, -- /*Bit8u LinRsvdFieldPosition*/ 15, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_640X480X565, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x010f, /* 320x200x24 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, -- /*Bit16u BytesPerScanLine*/ 640*2, --// Mandatory information for VBE 1.2 and above -- /*Bit16u XResolution*/ 640, -- /*Bit16u YResolution*/ 480, -+/*Bit16u BytesPerScanLine*/ 960, -+/*Bit16u XResolution*/ 320, -+/*Bit16u YResolution*/ 200, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, -- /*Bit8u BitsPerPixel*/ 16, -- /*Bit8u NumberOfBanks*/ 1, -+/*Bit8u BitsPerPixel*/ 24, -+/*Bit8u NumberOfBanks*/ 3, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 5, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) -- /*Bit8u RedMaskSize*/ 5, -- /*Bit8u RedFieldPosition*/ 11, -- /*Bit8u GreenMaskSize*/ 6, -- /*Bit8u GreenFieldPosition*/ 5, -- /*Bit8u BlueMaskSize*/ 5, -+/*Bit8u RedMaskSize*/ 8, -+/*Bit8u RedFieldPosition*/ 16, -+/*Bit8u GreenMaskSize*/ 8, -+/*Bit8u GreenFieldPosition*/ 8, -+/*Bit8u BlueMaskSize*/ 8, - /*Bit8u BlueFieldPosition*/ 0, - /*Bit8u RsvdMaskSize*/ 0, - /*Bit8u RsvdFieldPosition*/ 0, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above -- /*Bit16u LinBytesPerScanLine*/ 640*2, -+/*Bit16u LinBytesPerScanLine*/ 960, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, -- /*Bit8u LinRedMaskSize*/ 5, -- /*Bit8u LinRedFieldPosition*/ 11, -- /*Bit8u LinGreenMaskSize*/ 6, -- /*Bit8u LinGreenFieldPosition*/ 5, -- /*Bit8u LinBlueMaskSize*/ 5, -+/*Bit8u LinRedMaskSize*/ 8, -+/*Bit8u LinRedFieldPosition*/ 16, -+/*Bit8u LinGreenMaskSize*/ 8, -+/*Bit8u LinGreenFieldPosition*/ 8, -+/*Bit8u LinBlueMaskSize*/ 8, - /*Bit8u LinBlueFieldPosition*/ 0, - /*Bit8u LinRsvdMaskSize*/ 0, - /*Bit8u LinRsvdFieldPosition*/ 0, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_800X600X565, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0110, /* 640x480x15 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, -- /*Bit16u BytesPerScanLine*/ 800*2, --// Mandatory information for VBE 1.2 and above -- /*Bit16u XResolution*/ 800, -- /*Bit16u YResolution*/ 600, -+/*Bit16u BytesPerScanLine*/ 1280, -+/*Bit16u XResolution*/ 640, -+/*Bit16u YResolution*/ 480, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, -- /*Bit8u BitsPerPixel*/ 16, -- /*Bit8u NumberOfBanks*/ 1, -+/*Bit8u BitsPerPixel*/ 15, -+/*Bit8u NumberOfBanks*/ 10, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 3, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 5, -- /*Bit8u RedFieldPosition*/ 11, -- /*Bit8u GreenMaskSize*/ 6, -+/*Bit8u RedFieldPosition*/ 10, -+/*Bit8u GreenMaskSize*/ 5, - /*Bit8u GreenFieldPosition*/ 5, - /*Bit8u BlueMaskSize*/ 5, - /*Bit8u BlueFieldPosition*/ 0, -- /*Bit8u RsvdMaskSize*/ 0, -- /*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 1, -+/*Bit8u RsvdFieldPosition*/ 15, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above -- /*Bit16u LinBytesPerScanLine*/ 800*2, -+/*Bit16u LinBytesPerScanLine*/ 1280, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, - /*Bit8u LinRedMaskSize*/ 5, -- /*Bit8u LinRedFieldPosition*/ 11, -- /*Bit8u LinGreenMaskSize*/ 6, -+/*Bit8u LinRedFieldPosition*/ 10, -+/*Bit8u LinGreenMaskSize*/ 5, - /*Bit8u LinGreenFieldPosition*/ 5, - /*Bit8u LinBlueMaskSize*/ 5, - /*Bit8u LinBlueFieldPosition*/ 0, -- /*Bit8u LinRsvdMaskSize*/ 0, -- /*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 1, -+/*Bit8u LinRsvdFieldPosition*/ 15, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_1024X768X565, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0111, /* 640x480x16 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, -- /*Bit16u BytesPerScanLine*/ 1024*2, --// Mandatory information for VBE 1.2 and above -- /*Bit16u XResolution*/ 1024, -- /*Bit16u YResolution*/ 768, -+/*Bit16u BytesPerScanLine*/ 1280, -+/*Bit16u XResolution*/ 640, -+/*Bit16u YResolution*/ 480, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, - /*Bit8u BitsPerPixel*/ 16, -- /*Bit8u NumberOfBanks*/ 1, -+/*Bit8u NumberOfBanks*/ 10, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 1, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 5, - /*Bit8u RedFieldPosition*/ 11, - /*Bit8u GreenMaskSize*/ 6, -@@ -756,16 +506,10 @@ - /*Bit8u RsvdMaskSize*/ 0, - /*Bit8u RsvdFieldPosition*/ 0, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above -- /*Bit16u LinBytesPerScanLine*/ 1024*2, -+/*Bit16u LinBytesPerScanLine*/ 1280, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, - /*Bit8u LinRedMaskSize*/ 5, -@@ -777,46 +521,28 @@ - /*Bit8u LinRsvdMaskSize*/ 0, - /*Bit8u LinRsvdFieldPosition*/ 0, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_640X480X888, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0112, /* 640x480x24 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, -- /*Bit16u BytesPerScanLine*/ 640*3, --// Mandatory information for VBE 1.2 and above -+/*Bit16u BytesPerScanLine*/ 1920, - /*Bit16u XResolution*/ 640, - /*Bit16u YResolution*/ 480, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, - /*Bit8u BitsPerPixel*/ 24, -- /*Bit8u NumberOfBanks*/ 1, -+/*Bit8u NumberOfBanks*/ 15, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 3, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 8, - /*Bit8u RedFieldPosition*/ 16, - /*Bit8u GreenMaskSize*/ 8, -@@ -826,16 +552,10 @@ - /*Bit8u RsvdMaskSize*/ 0, - /*Bit8u RsvdFieldPosition*/ 0, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above -- /*Bit16u LinBytesPerScanLine*/ 640*3, -+/*Bit16u LinBytesPerScanLine*/ 1920, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, - /*Bit8u LinRedMaskSize*/ 8, -@@ -847,186 +567,764 @@ - /*Bit8u LinRsvdMaskSize*/ 0, - /*Bit8u LinRsvdFieldPosition*/ 0, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_800X600X888, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0113, /* 800x600x15 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, -- /*Bit16u BytesPerScanLine*/ 800*3, --// Mandatory information for VBE 1.2 and above -+/*Bit16u BytesPerScanLine*/ 1600, - /*Bit16u XResolution*/ 800, - /*Bit16u YResolution*/ 600, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, -- /*Bit8u BitsPerPixel*/ 24, -- /*Bit8u NumberOfBanks*/ 1, -+/*Bit8u BitsPerPixel*/ 15, -+/*Bit8u NumberOfBanks*/ 15, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 1, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) -- /*Bit8u RedMaskSize*/ 8, -- /*Bit8u RedFieldPosition*/ 16, -- /*Bit8u GreenMaskSize*/ 8, -- /*Bit8u GreenFieldPosition*/ 8, -- /*Bit8u BlueMaskSize*/ 8, -+/*Bit8u RedMaskSize*/ 5, -+/*Bit8u RedFieldPosition*/ 10, -+/*Bit8u GreenMaskSize*/ 5, -+/*Bit8u GreenFieldPosition*/ 5, -+/*Bit8u BlueMaskSize*/ 5, - /*Bit8u BlueFieldPosition*/ 0, -- /*Bit8u RsvdMaskSize*/ 0, -- /*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 1, -+/*Bit8u RsvdFieldPosition*/ 15, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above -- /*Bit16u LinBytesPerScanLine*/ 800*3, -+/*Bit16u LinBytesPerScanLine*/ 1600, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, -- /*Bit8u LinRedMaskSize*/ 8, -- /*Bit8u LinRedFieldPosition*/ 16, -- /*Bit8u LinGreenMaskSize*/ 8, -- /*Bit8u LinGreenFieldPosition*/ 8, -- /*Bit8u LinBlueMaskSize*/ 8, -+/*Bit8u LinRedMaskSize*/ 5, -+/*Bit8u LinRedFieldPosition*/ 10, -+/*Bit8u LinGreenMaskSize*/ 5, -+/*Bit8u LinGreenFieldPosition*/ 5, -+/*Bit8u LinBlueMaskSize*/ 5, - /*Bit8u LinBlueFieldPosition*/ 0, -- /*Bit8u LinRsvdMaskSize*/ 0, -- /*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 1, -+/*Bit8u LinRsvdFieldPosition*/ 15, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_VESA_MODE_1024X768X888, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0114, /* 800x600x16 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, -- /*Bit16u BytesPerScanLine*/ 1024*3, --// Mandatory information for VBE 1.2 and above -- /*Bit16u XResolution*/ 1024, -- /*Bit16u YResolution*/ 768, -+/*Bit16u BytesPerScanLine*/ 1600, -+/*Bit16u XResolution*/ 800, -+/*Bit16u YResolution*/ 600, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, -- /*Bit8u BitsPerPixel*/ 24, -- /*Bit8u NumberOfBanks*/ 1, -+/*Bit8u BitsPerPixel*/ 16, -+/*Bit8u NumberOfBanks*/ 15, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, - /*Bit8u BankSize*/ 0, - /*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) -- /*Bit8u RedMaskSize*/ 8, -- /*Bit8u RedFieldPosition*/ 16, -- /*Bit8u GreenMaskSize*/ 8, -- /*Bit8u GreenFieldPosition*/ 8, -- /*Bit8u BlueMaskSize*/ 8, -+/*Bit8u RedMaskSize*/ 5, -+/*Bit8u RedFieldPosition*/ 11, -+/*Bit8u GreenMaskSize*/ 6, -+/*Bit8u GreenFieldPosition*/ 5, -+/*Bit8u BlueMaskSize*/ 5, - /*Bit8u BlueFieldPosition*/ 0, - /*Bit8u RsvdMaskSize*/ 0, - /*Bit8u RsvdFieldPosition*/ 0, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above -- /*Bit16u LinBytesPerScanLine*/ 1024*3, -+/*Bit16u LinBytesPerScanLine*/ 1600, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, -- /*Bit8u LinRedMaskSize*/ 8, -- /*Bit8u LinRedFieldPosition*/ 16, -- /*Bit8u LinGreenMaskSize*/ 8, -- /*Bit8u LinGreenFieldPosition*/ 8, -+/*Bit8u LinRedMaskSize*/ 5, -+/*Bit8u LinRedFieldPosition*/ 11, -+/*Bit8u LinGreenMaskSize*/ 6, -+/*Bit8u LinGreenFieldPosition*/ 5, -+/*Bit8u LinBlueMaskSize*/ 5, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x0115, /* 800x600x24 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 2400, -+/*Bit16u XResolution*/ 800, -+/*Bit16u YResolution*/ 600, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 24, -+/*Bit8u NumberOfBanks*/ 22, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 8, -+/*Bit8u RedFieldPosition*/ 16, -+/*Bit8u GreenMaskSize*/ 8, -+/*Bit8u GreenFieldPosition*/ 8, -+/*Bit8u BlueMaskSize*/ 8, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 2400, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 8, -+/*Bit8u LinRedFieldPosition*/ 16, -+/*Bit8u LinGreenMaskSize*/ 8, -+/*Bit8u LinGreenFieldPosition*/ 8, -+/*Bit8u LinBlueMaskSize*/ 8, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x0116, /* 1024x768x15 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 2048, -+/*Bit16u XResolution*/ 1024, -+/*Bit16u YResolution*/ 768, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 15, -+/*Bit8u NumberOfBanks*/ 24, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 5, -+/*Bit8u RedFieldPosition*/ 10, -+/*Bit8u GreenMaskSize*/ 5, -+/*Bit8u GreenFieldPosition*/ 5, -+/*Bit8u BlueMaskSize*/ 5, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 1, -+/*Bit8u RsvdFieldPosition*/ 15, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 2048, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 5, -+/*Bit8u LinRedFieldPosition*/ 10, -+/*Bit8u LinGreenMaskSize*/ 5, -+/*Bit8u LinGreenFieldPosition*/ 5, -+/*Bit8u LinBlueMaskSize*/ 5, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 1, -+/*Bit8u LinRsvdFieldPosition*/ 15, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x0117, /* 1024x768x16 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 2048, -+/*Bit16u XResolution*/ 1024, -+/*Bit16u YResolution*/ 768, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 16, -+/*Bit8u NumberOfBanks*/ 24, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 5, -+/*Bit8u RedFieldPosition*/ 11, -+/*Bit8u GreenMaskSize*/ 6, -+/*Bit8u GreenFieldPosition*/ 5, -+/*Bit8u BlueMaskSize*/ 5, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 2048, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 5, -+/*Bit8u LinRedFieldPosition*/ 11, -+/*Bit8u LinGreenMaskSize*/ 6, -+/*Bit8u LinGreenFieldPosition*/ 5, -+/*Bit8u LinBlueMaskSize*/ 5, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x0118, /* 1024x768x24 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 3072, -+/*Bit16u XResolution*/ 1024, -+/*Bit16u YResolution*/ 768, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 24, -+/*Bit8u NumberOfBanks*/ 36, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 8, -+/*Bit8u RedFieldPosition*/ 16, -+/*Bit8u GreenMaskSize*/ 8, -+/*Bit8u GreenFieldPosition*/ 8, -+/*Bit8u BlueMaskSize*/ 8, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 3072, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 8, -+/*Bit8u LinRedFieldPosition*/ 16, -+/*Bit8u LinGreenMaskSize*/ 8, -+/*Bit8u LinGreenFieldPosition*/ 8, -+/*Bit8u LinBlueMaskSize*/ 8, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x0119, /* 1280x1024x15 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 2560, -+/*Bit16u XResolution*/ 1280, -+/*Bit16u YResolution*/ 1024, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 15, -+/*Bit8u NumberOfBanks*/ 40, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 5, -+/*Bit8u RedFieldPosition*/ 10, -+/*Bit8u GreenMaskSize*/ 5, -+/*Bit8u GreenFieldPosition*/ 5, -+/*Bit8u BlueMaskSize*/ 5, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 1, -+/*Bit8u RsvdFieldPosition*/ 15, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 2560, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 5, -+/*Bit8u LinRedFieldPosition*/ 10, -+/*Bit8u LinGreenMaskSize*/ 5, -+/*Bit8u LinGreenFieldPosition*/ 5, -+/*Bit8u LinBlueMaskSize*/ 5, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 1, -+/*Bit8u LinRsvdFieldPosition*/ 15, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x011a, /* 1280x1024x16 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 2560, -+/*Bit16u XResolution*/ 1280, -+/*Bit16u YResolution*/ 1024, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 16, -+/*Bit8u NumberOfBanks*/ 40, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 5, -+/*Bit8u RedFieldPosition*/ 11, -+/*Bit8u GreenMaskSize*/ 6, -+/*Bit8u GreenFieldPosition*/ 5, -+/*Bit8u BlueMaskSize*/ 5, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 2560, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 5, -+/*Bit8u LinRedFieldPosition*/ 11, -+/*Bit8u LinGreenMaskSize*/ 6, -+/*Bit8u LinGreenFieldPosition*/ 5, -+/*Bit8u LinBlueMaskSize*/ 5, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x011b, /* 1280x1024x24 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 3840, -+/*Bit16u XResolution*/ 1280, -+/*Bit16u YResolution*/ 1024, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 24, -+/*Bit8u NumberOfBanks*/ 60, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 8, -+/*Bit8u RedFieldPosition*/ 16, -+/*Bit8u GreenMaskSize*/ 8, -+/*Bit8u GreenFieldPosition*/ 8, -+/*Bit8u BlueMaskSize*/ 8, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 3840, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 8, -+/*Bit8u LinRedFieldPosition*/ 16, -+/*Bit8u LinGreenMaskSize*/ 8, -+/*Bit8u LinGreenFieldPosition*/ 8, -+/*Bit8u LinBlueMaskSize*/ 8, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x011c, /* 1600x1200x8 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 1600, -+/*Bit16u XResolution*/ 1600, -+/*Bit16u YResolution*/ 1200, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 8, -+/*Bit8u NumberOfBanks*/ 30, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 0, -+/*Bit8u RedFieldPosition*/ 0, -+/*Bit8u GreenMaskSize*/ 0, -+/*Bit8u GreenFieldPosition*/ 0, -+/*Bit8u BlueMaskSize*/ 0, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 1600, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 0, -+/*Bit8u LinRedFieldPosition*/ 0, -+/*Bit8u LinGreenMaskSize*/ 0, -+/*Bit8u LinGreenFieldPosition*/ 0, -+/*Bit8u LinBlueMaskSize*/ 0, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x011d, /* 1600x1200x15 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 3200, -+/*Bit16u XResolution*/ 1600, -+/*Bit16u YResolution*/ 1200, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 15, -+/*Bit8u NumberOfBanks*/ 59, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 5, -+/*Bit8u RedFieldPosition*/ 10, -+/*Bit8u GreenMaskSize*/ 5, -+/*Bit8u GreenFieldPosition*/ 5, -+/*Bit8u BlueMaskSize*/ 5, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 1, -+/*Bit8u RsvdFieldPosition*/ 15, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 3200, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 5, -+/*Bit8u LinRedFieldPosition*/ 10, -+/*Bit8u LinGreenMaskSize*/ 5, -+/*Bit8u LinGreenFieldPosition*/ 5, -+/*Bit8u LinBlueMaskSize*/ 5, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 1, -+/*Bit8u LinRsvdFieldPosition*/ 15, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x011e, /* 1600x1200x16 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 3200, -+/*Bit16u XResolution*/ 1600, -+/*Bit16u YResolution*/ 1200, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 16, -+/*Bit8u NumberOfBanks*/ 59, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 5, -+/*Bit8u RedFieldPosition*/ 11, -+/*Bit8u GreenMaskSize*/ 6, -+/*Bit8u GreenFieldPosition*/ 5, -+/*Bit8u BlueMaskSize*/ 5, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 3200, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 5, -+/*Bit8u LinRedFieldPosition*/ 11, -+/*Bit8u LinGreenMaskSize*/ 6, -+/*Bit8u LinGreenFieldPosition*/ 5, -+/*Bit8u LinBlueMaskSize*/ 5, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x011f, /* 1600x1200x24 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 4800, -+/*Bit16u XResolution*/ 1600, -+/*Bit16u YResolution*/ 1200, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 24, -+/*Bit8u NumberOfBanks*/ 88, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 8, -+/*Bit8u RedFieldPosition*/ 16, -+/*Bit8u GreenMaskSize*/ 8, -+/*Bit8u GreenFieldPosition*/ 8, -+/*Bit8u BlueMaskSize*/ 8, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 4800, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 8, -+/*Bit8u LinRedFieldPosition*/ 16, -+/*Bit8u LinGreenMaskSize*/ 8, -+/*Bit8u LinGreenFieldPosition*/ 8, - /*Bit8u LinBlueMaskSize*/ 8, - /*Bit8u LinBlueFieldPosition*/ 0, - /*Bit8u LinRsvdMaskSize*/ 0, - /*Bit8u LinRsvdFieldPosition*/ 0, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_OWN_MODE_640X480X8888, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0140, /* 320x200x32 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 1280, -+/*Bit16u XResolution*/ 320, -+/*Bit16u YResolution*/ 200, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 32, -+/*Bit8u NumberOfBanks*/ 4, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 8, -+/*Bit8u RedFieldPosition*/ 16, -+/*Bit8u GreenMaskSize*/ 8, -+/*Bit8u GreenFieldPosition*/ 8, -+/*Bit8u BlueMaskSize*/ 8, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 8, -+/*Bit8u RsvdFieldPosition*/ 24, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 1280, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 8, -+/*Bit8u LinRedFieldPosition*/ 16, -+/*Bit8u LinGreenMaskSize*/ 8, -+/*Bit8u LinGreenFieldPosition*/ 8, -+/*Bit8u LinBlueMaskSize*/ 8, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 8, -+/*Bit8u LinRsvdFieldPosition*/ 24, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x0141, /* 640x400x32 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 2560, -+/*Bit16u XResolution*/ 640, -+/*Bit16u YResolution*/ 400, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 32, -+/*Bit8u NumberOfBanks*/ 16, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 8, -+/*Bit8u RedFieldPosition*/ 16, -+/*Bit8u GreenMaskSize*/ 8, -+/*Bit8u GreenFieldPosition*/ 8, -+/*Bit8u BlueMaskSize*/ 8, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 8, -+/*Bit8u RsvdFieldPosition*/ 24, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 2560, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 8, -+/*Bit8u LinRedFieldPosition*/ 16, -+/*Bit8u LinGreenMaskSize*/ 8, -+/*Bit8u LinGreenFieldPosition*/ 8, -+/*Bit8u LinBlueMaskSize*/ 8, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 8, -+/*Bit8u LinRsvdFieldPosition*/ 24, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x0142, /* 640x480x32 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 2560, -+/*Bit16u XResolution*/ 640, -+/*Bit16u YResolution*/ 480, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 32, -+/*Bit8u NumberOfBanks*/ 19, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 8, -+/*Bit8u RedFieldPosition*/ 16, -+/*Bit8u GreenMaskSize*/ 8, -+/*Bit8u GreenFieldPosition*/ 8, -+/*Bit8u BlueMaskSize*/ 8, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 8, -+/*Bit8u RsvdFieldPosition*/ 24, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 2560, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 8, -+/*Bit8u LinRedFieldPosition*/ 16, -+/*Bit8u LinGreenMaskSize*/ 8, -+/*Bit8u LinGreenFieldPosition*/ 8, -+/*Bit8u LinBlueMaskSize*/ 8, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 8, -+/*Bit8u LinRsvdFieldPosition*/ 24, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x0143, /* 800x600x32 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, -- /*Bit16u BytesPerScanLine*/ 640*4, --// Mandatory information for VBE 1.2 and above -- /*Bit16u XResolution*/ 640, -- /*Bit16u YResolution*/ 480, -+/*Bit16u BytesPerScanLine*/ 3200, -+/*Bit16u XResolution*/ 800, -+/*Bit16u YResolution*/ 600, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, - /*Bit8u BitsPerPixel*/ 32, -- /*Bit8u NumberOfBanks*/ 1, -+/*Bit8u NumberOfBanks*/ 30, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 1, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 8, - /*Bit8u RedFieldPosition*/ 16, - /*Bit8u GreenMaskSize*/ 8, -@@ -1035,17 +1333,11 @@ - /*Bit8u BlueFieldPosition*/ 0, - /*Bit8u RsvdMaskSize*/ 8, - /*Bit8u RsvdFieldPosition*/ 24, -- /*Bit8u DirectColorModeInfo*/ VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB -+/*Bit8u DirectColorModeInfo*/ 0, - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above -- /*Bit16u LinBytesPerScanLine*/ 640*4, -+/*Bit16u LinBytesPerScanLine*/ 3200, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, - /*Bit8u LinRedMaskSize*/ 8, -@@ -1057,46 +1349,28 @@ - /*Bit8u LinRsvdMaskSize*/ 8, - /*Bit8u LinRsvdFieldPosition*/ 24, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_OWN_MODE_800X600X8888, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0144, /* 1024x768x32 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, -- /*Bit16u BytesPerScanLine*/ 800*4, --// Mandatory information for VBE 1.2 and above -- /*Bit16u XResolution*/ 800, -- /*Bit16u YResolution*/ 600, -+/*Bit16u BytesPerScanLine*/ 4096, -+/*Bit16u XResolution*/ 1024, -+/*Bit16u YResolution*/ 768, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, - /*Bit8u BitsPerPixel*/ 32, -- /*Bit8u NumberOfBanks*/ 1, -+/*Bit8u NumberOfBanks*/ 48, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 1, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 8, - /*Bit8u RedFieldPosition*/ 16, - /*Bit8u GreenMaskSize*/ 8, -@@ -1105,17 +1379,11 @@ - /*Bit8u BlueFieldPosition*/ 0, - /*Bit8u RsvdMaskSize*/ 8, - /*Bit8u RsvdFieldPosition*/ 24, -- /*Bit8u DirectColorModeInfo*/ VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB -+/*Bit8u DirectColorModeInfo*/ 0, - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above -- /*Bit16u LinBytesPerScanLine*/ 800*4, -+/*Bit16u LinBytesPerScanLine*/ 4096, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, - /*Bit8u LinRedMaskSize*/ 8, -@@ -1127,46 +1395,28 @@ - /*Bit8u LinRsvdMaskSize*/ 8, - /*Bit8u LinRsvdFieldPosition*/ 24, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_OWN_MODE_1024X768X8888, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | --#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | -- VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0145, /* 1280x1024x32 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, -- /*Bit16u BytesPerScanLine*/ 1024*4, --// Mandatory information for VBE 1.2 and above -- /*Bit16u XResolution*/ 1024, -- /*Bit16u YResolution*/ 768, -+/*Bit16u BytesPerScanLine*/ 5120, -+/*Bit16u XResolution*/ 1280, -+/*Bit16u YResolution*/ 1024, - /*Bit8u XCharSize*/ 8, - /*Bit8u YCharSize*/ 16, - /*Bit8u NumberOfPlanes*/ 1, - /*Bit8u BitsPerPixel*/ 32, -- /*Bit8u NumberOfBanks*/ 1, -+/*Bit8u NumberOfBanks*/ 80, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 1, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 8, - /*Bit8u RedFieldPosition*/ 16, - /*Bit8u GreenMaskSize*/ 8, -@@ -1175,17 +1425,11 @@ - /*Bit8u BlueFieldPosition*/ 0, - /*Bit8u RsvdMaskSize*/ 8, - /*Bit8u RsvdFieldPosition*/ 24, -- /*Bit8u DirectColorModeInfo*/ VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB -+/*Bit8u DirectColorModeInfo*/ 0, - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, --#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above -- /*Bit16u LinBytesPerScanLine*/ 1024*4, -+/*Bit16u LinBytesPerScanLine*/ 5120, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, - /*Bit8u LinRedMaskSize*/ 8, -@@ -1197,33 +1441,17 @@ - /*Bit8u LinRsvdMaskSize*/ 8, - /*Bit8u LinRsvdFieldPosition*/ 24, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- -- { -- VBE_OWN_MODE_320X200X8, -- { --/*typedef struct ModeInfoBlock --{*/ --// Mandatory information for all VBE revisions -- /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | -- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | -- VBE_MODE_ATTRIBUTE_COLOR_MODE | --#ifdef VBE_HAVE_LFB -- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | +-#ifdef DEBUG +- unimplemented(); +-#endif ++ Bit16u size; ++ size = 0; ++ if (CX & 1) { ++ size += 0x46; ++ } ++ if (CX & 2) { ++ size += (5 + 8 + 5) * 2 + 6; ++ } ++ if (CX & 4) { ++ size += 3 + 256 * 3 + 1; + } +-static void biosfn_save_video_state (CX,ES,BX) Bit16u CX;Bit16u ES;Bit16u BX; ++ return size; ++} ++ ++static void biosfn_read_video_state_size (CX, BX) ++ Bit16u CX; Bit16u *BX; + { +-#ifdef DEBUG +- unimplemented(); -#endif -- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -- /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_READABLE | -- VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+} }, -+{ 0x0146, /* 320x200x8 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, - /*Bit8u WinBAttributes*/ 0, - /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, - /*Bit16u WinASegment*/ VGAMEM_GRAPH, -- /*Bit16u WinBSegment*/ 0, -+/*Bit16u WinBSegment*/ 0x0000, - /*Bit32u WinFuncPtr*/ 0, - /*Bit16u BytesPerScanLine*/ 320, --// Mandatory information for VBE 1.2 and above - /*Bit16u XResolution*/ 320, - /*Bit16u YResolution*/ 200, - /*Bit8u XCharSize*/ 8, -@@ -1233,9 +1461,8 @@ - /*Bit8u NumberOfBanks*/ 1, - /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL, - /*Bit8u BankSize*/ 0, -- /*Bit8u NumberOfImagePages*/ 3, -+/*Bit8u NumberOfImagePages*/ 0, - /*Bit8u Reserved_page*/ 0, --// Direct Color fields (required for direct/6 and YUV/7 memory models) - /*Bit8u RedMaskSize*/ 0, - /*Bit8u RedFieldPosition*/ 0, - /*Bit8u GreenMaskSize*/ 0, -@@ -1245,15 +1472,9 @@ - /*Bit8u RsvdMaskSize*/ 0, - /*Bit8u RsvdFieldPosition*/ 0, - /*Bit8u DirectColorModeInfo*/ 0, --// Mandatory information for VBE 2.0 and above --#ifdef VBE_HAVE_LFB - /*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, --#else -- /*Bit32u PhysBasePtr*/ 0, ++ Bit16u ss=get_SS(); ++ write_word(ss, BX, biosfn_read_video_state_size2(CX)); + } +-static void biosfn_restore_video_state (CX,ES,BX) Bit16u CX;Bit16u ES;Bit16u BX; ++ ++static Bit16u biosfn_save_video_state (CX,ES,BX) ++ Bit16u CX;Bit16u ES;Bit16u BX; + { +-#ifdef DEBUG +- unimplemented(); -#endif - /*Bit32u OffScreenMemOffset*/ 0, - /*Bit16u OffScreenMemSize*/ 0, --// Mandatory information for VBE 3.0 and above - /*Bit16u LinBytesPerScanLine*/ 320, - /*Bit8u BnkNumberOfPages*/ 0, - /*Bit8u LinNumberOfPages*/ 0, -@@ -1266,17 +1487,286 @@ - /*Bit8u LinRsvdMaskSize*/ 0, - /*Bit8u LinRsvdFieldPosition*/ 0, - /*Bit32u MaxPixelClock*/ 0, --/*} ModeInfoBlock;*/ -- } -- }, -- --/** END OF THE LIST **/ -- { -- VBE_VESA_MODE_END_OF_LIST, -- { -- 0, -- } -- } -+} }, -+{ 0x0147, /* 1600x1200x32 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 6400, -+/*Bit16u XResolution*/ 1600, -+/*Bit16u YResolution*/ 1200, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 32, -+/*Bit8u NumberOfBanks*/ 118, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 8, -+/*Bit8u RedFieldPosition*/ 16, -+/*Bit8u GreenMaskSize*/ 8, -+/*Bit8u GreenFieldPosition*/ 8, -+/*Bit8u BlueMaskSize*/ 8, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 8, -+/*Bit8u RsvdFieldPosition*/ 24, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 6400, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 8, -+/*Bit8u LinRedFieldPosition*/ 16, -+/*Bit8u LinGreenMaskSize*/ 8, -+/*Bit8u LinGreenFieldPosition*/ 8, -+/*Bit8u LinBlueMaskSize*/ 8, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 8, -+/*Bit8u LinRsvdFieldPosition*/ 24, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x0148, /* 1152x864x8 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 1152, -+/*Bit16u XResolution*/ 1152, -+/*Bit16u YResolution*/ 864, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 8, -+/*Bit8u NumberOfBanks*/ 16, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 0, -+/*Bit8u RedFieldPosition*/ 0, -+/*Bit8u GreenMaskSize*/ 0, -+/*Bit8u GreenFieldPosition*/ 0, -+/*Bit8u BlueMaskSize*/ 0, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 1152, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 0, -+/*Bit8u LinRedFieldPosition*/ 0, -+/*Bit8u LinGreenMaskSize*/ 0, -+/*Bit8u LinGreenFieldPosition*/ 0, -+/*Bit8u LinBlueMaskSize*/ 0, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x0149, /* 1152x864x15 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 2304, -+/*Bit16u XResolution*/ 1152, -+/*Bit16u YResolution*/ 864, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 15, -+/*Bit8u NumberOfBanks*/ 31, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 5, -+/*Bit8u RedFieldPosition*/ 10, -+/*Bit8u GreenMaskSize*/ 5, -+/*Bit8u GreenFieldPosition*/ 5, -+/*Bit8u BlueMaskSize*/ 5, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 1, -+/*Bit8u RsvdFieldPosition*/ 15, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 2304, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 5, -+/*Bit8u LinRedFieldPosition*/ 10, -+/*Bit8u LinGreenMaskSize*/ 5, -+/*Bit8u LinGreenFieldPosition*/ 5, -+/*Bit8u LinBlueMaskSize*/ 5, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 1, -+/*Bit8u LinRsvdFieldPosition*/ 15, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x014a, /* 1152x864x16 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 2304, -+/*Bit16u XResolution*/ 1152, -+/*Bit16u YResolution*/ 864, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 16, -+/*Bit8u NumberOfBanks*/ 31, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 5, -+/*Bit8u RedFieldPosition*/ 11, -+/*Bit8u GreenMaskSize*/ 6, -+/*Bit8u GreenFieldPosition*/ 5, -+/*Bit8u BlueMaskSize*/ 5, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 2304, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 5, -+/*Bit8u LinRedFieldPosition*/ 11, -+/*Bit8u LinGreenMaskSize*/ 6, -+/*Bit8u LinGreenFieldPosition*/ 5, -+/*Bit8u LinBlueMaskSize*/ 5, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x014b, /* 1152x864x24 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 3456, -+/*Bit16u XResolution*/ 1152, -+/*Bit16u YResolution*/ 864, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 24, -+/*Bit8u NumberOfBanks*/ 46, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 8, -+/*Bit8u RedFieldPosition*/ 16, -+/*Bit8u GreenMaskSize*/ 8, -+/*Bit8u GreenFieldPosition*/ 8, -+/*Bit8u BlueMaskSize*/ 8, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 0, -+/*Bit8u RsvdFieldPosition*/ 0, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 3456, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 8, -+/*Bit8u LinRedFieldPosition*/ 16, -+/*Bit8u LinGreenMaskSize*/ 8, -+/*Bit8u LinGreenFieldPosition*/ 8, -+/*Bit8u LinBlueMaskSize*/ 8, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 0, -+/*Bit8u LinRsvdFieldPosition*/ 0, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ 0x014c, /* 1152x864x32 */ -+{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, -+/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, -+/*Bit8u WinBAttributes*/ 0, -+/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, -+/*Bit16u WinASegment*/ VGAMEM_GRAPH, -+/*Bit16u WinBSegment*/ 0x0000, -+/*Bit32u WinFuncPtr*/ 0, -+/*Bit16u BytesPerScanLine*/ 4608, -+/*Bit16u XResolution*/ 1152, -+/*Bit16u YResolution*/ 864, -+/*Bit8u XCharSize*/ 8, -+/*Bit8u YCharSize*/ 16, -+/*Bit8u NumberOfPlanes*/ 1, -+/*Bit8u BitsPerPixel*/ 32, -+/*Bit8u NumberOfBanks*/ 61, -+/*Bit8u MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR, -+/*Bit8u BankSize*/ 0, -+/*Bit8u NumberOfImagePages*/ 0, -+/*Bit8u Reserved_page*/ 0, -+/*Bit8u RedMaskSize*/ 8, -+/*Bit8u RedFieldPosition*/ 16, -+/*Bit8u GreenMaskSize*/ 8, -+/*Bit8u GreenFieldPosition*/ 8, -+/*Bit8u BlueMaskSize*/ 8, -+/*Bit8u BlueFieldPosition*/ 0, -+/*Bit8u RsvdMaskSize*/ 8, -+/*Bit8u RsvdFieldPosition*/ 24, -+/*Bit8u DirectColorModeInfo*/ 0, -+/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS, -+/*Bit32u OffScreenMemOffset*/ 0, -+/*Bit16u OffScreenMemSize*/ 0, -+/*Bit16u LinBytesPerScanLine*/ 4608, -+/*Bit8u BnkNumberOfPages*/ 0, -+/*Bit8u LinNumberOfPages*/ 0, -+/*Bit8u LinRedMaskSize*/ 8, -+/*Bit8u LinRedFieldPosition*/ 16, -+/*Bit8u LinGreenMaskSize*/ 8, -+/*Bit8u LinGreenFieldPosition*/ 8, -+/*Bit8u LinBlueMaskSize*/ 8, -+/*Bit8u LinBlueFieldPosition*/ 0, -+/*Bit8u LinRsvdMaskSize*/ 8, -+/*Bit8u LinRsvdFieldPosition*/ 24, -+/*Bit32u MaxPixelClock*/ 0, -+} }, -+{ VBE_VESA_MODE_END_OF_LIST, -+{ 0, -+} }, - }; ++ Bit16u i, v, crtc_addr, ar_index; ++ ++ crtc_addr = read_word(BIOSMEM_SEG, BIOSMEM_CRTC_ADDRESS); ++ if (CX & 1) { ++ write_byte(ES, BX, inb(VGAREG_SEQU_ADDRESS)); BX++; ++ write_byte(ES, BX, inb(crtc_addr)); BX++; ++ write_byte(ES, BX, inb(VGAREG_GRDC_ADDRESS)); BX++; ++ inb(VGAREG_ACTL_RESET); ++ ar_index = inb(VGAREG_ACTL_ADDRESS); ++ write_byte(ES, BX, ar_index); BX++; ++ write_byte(ES, BX, inb(VGAREG_READ_FEATURE_CTL)); BX++; ++ ++ for(i=1;i<=4;i++){ ++ outb(VGAREG_SEQU_ADDRESS, i); ++ write_byte(ES, BX, inb(VGAREG_SEQU_DATA)); BX++; ++ } ++ outb(VGAREG_SEQU_ADDRESS, 0); ++ write_byte(ES, BX, inb(VGAREG_SEQU_DATA)); BX++; ++ ++ for(i=0;i<=0x18;i++) { ++ outb(crtc_addr,i); ++ write_byte(ES, BX, inb(crtc_addr+1)); BX++; ++ } ++ ++ for(i=0;i<=0x13;i++) { ++ inb(VGAREG_ACTL_RESET); ++ outb(VGAREG_ACTL_ADDRESS, i | (ar_index & 0x20)); ++ write_byte(ES, BX, inb(VGAREG_ACTL_READ_DATA)); BX++; ++ } ++ inb(VGAREG_ACTL_RESET); ++ ++ for(i=0;i<=8;i++) { ++ outb(VGAREG_GRDC_ADDRESS,i); ++ write_byte(ES, BX, inb(VGAREG_GRDC_DATA)); BX++; ++ } ++ ++ write_word(ES, BX, crtc_addr); BX+= 2; ++ ++ /* XXX: read plane latches */ ++ write_byte(ES, BX, 0); BX++; ++ write_byte(ES, BX, 0); BX++; ++ write_byte(ES, BX, 0); BX++; ++ write_byte(ES, BX, 0); BX++; ++ } ++ if (CX & 2) { ++ write_byte(ES, BX, read_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MODE)); BX++; ++ write_word(ES, BX, read_word(BIOSMEM_SEG,BIOSMEM_NB_COLS)); BX += 2; ++ write_word(ES, BX, read_word(BIOSMEM_SEG,BIOSMEM_PAGE_SIZE)); BX += 2; ++ write_word(ES, BX, read_word(BIOSMEM_SEG,BIOSMEM_CRTC_ADDRESS)); BX += 2; ++ write_byte(ES, BX, read_byte(BIOSMEM_SEG,BIOSMEM_NB_ROWS)); BX++; ++ write_word(ES, BX, read_word(BIOSMEM_SEG,BIOSMEM_CHAR_HEIGHT)); BX += 2; ++ write_byte(ES, BX, read_byte(BIOSMEM_SEG,BIOSMEM_VIDEO_CTL)); BX++; ++ write_byte(ES, BX, read_byte(BIOSMEM_SEG,BIOSMEM_SWITCHES)); BX++; ++ write_byte(ES, BX, read_byte(BIOSMEM_SEG,BIOSMEM_MODESET_CTL)); BX++; ++ write_word(ES, BX, read_word(BIOSMEM_SEG,BIOSMEM_CURSOR_TYPE)); BX += 2; ++ for(i=0;i<8;i++) { ++ write_word(ES, BX, read_word(BIOSMEM_SEG, BIOSMEM_CURSOR_POS+2*i)); ++ BX += 2; ++ } ++ write_word(ES, BX, read_word(BIOSMEM_SEG,BIOSMEM_CURRENT_START)); BX += 2; ++ write_byte(ES, BX, read_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_PAGE)); BX++; ++ /* current font */ ++ write_word(ES, BX, read_word(0, 0x1f * 4)); BX += 2; ++ write_word(ES, BX, read_word(0, 0x1f * 4 + 2)); BX += 2; ++ write_word(ES, BX, read_word(0, 0x43 * 4)); BX += 2; ++ write_word(ES, BX, read_word(0, 0x43 * 4 + 2)); BX += 2; ++ } ++ if (CX & 4) { ++ /* XXX: check this */ ++ write_byte(ES, BX, inb(VGAREG_DAC_STATE)); BX++; /* read/write mode dac */ ++ write_byte(ES, BX, inb(VGAREG_DAC_WRITE_ADDRESS)); BX++; /* pix address */ ++ write_byte(ES, BX, inb(VGAREG_PEL_MASK)); BX++; ++ // Set the whole dac always, from 0 ++ outb(VGAREG_DAC_WRITE_ADDRESS,0x00); ++ for(i=0;i<256*3;i++) { ++ write_byte(ES, BX, inb(VGAREG_DAC_DATA)); BX++; ++ } ++ write_byte(ES, BX, 0); BX++; /* color select register */ ++ } ++ return BX; ++} ++ ++static Bit16u biosfn_restore_video_state (CX,ES,BX) ++ Bit16u CX;Bit16u ES;Bit16u BX; ++{ ++ Bit16u i, crtc_addr, v, addr1, ar_index; ++ ++ if (CX & 1) { ++ // Reset Attribute Ctl flip-flop ++ inb(VGAREG_ACTL_RESET); ++ ++ crtc_addr = read_word(ES, BX + 0x40); ++ addr1 = BX; ++ BX += 5; ++ ++ for(i=1;i<=4;i++){ ++ outb(VGAREG_SEQU_ADDRESS, i); ++ outb(VGAREG_SEQU_DATA, read_byte(ES, BX)); BX++; ++ } ++ outb(VGAREG_SEQU_ADDRESS, 0); ++ outb(VGAREG_SEQU_DATA, read_byte(ES, BX)); BX++; ++ ++ // Disable CRTC write protection ++ outw(crtc_addr,0x0011); ++ // Set CRTC regs ++ for(i=0;i<=0x18;i++) { ++ if (i != 0x11) { ++ outb(crtc_addr,i); ++ outb(crtc_addr+1, read_byte(ES, BX)); ++ } ++ BX++; ++ } ++ // select crtc base address ++ v = inb(VGAREG_READ_MISC_OUTPUT) & ~0x01; ++ if (crtc_addr = 0x3d4) ++ v |= 0x01; ++ outb(VGAREG_WRITE_MISC_OUTPUT, v); ++ ++ // enable write protection if needed ++ outb(crtc_addr, 0x11); ++ outb(crtc_addr+1, read_byte(ES, BX - 0x18 + 0x11)); ++ ++ // Set Attribute Ctl ++ ar_index = read_byte(ES, addr1 + 0x03); ++ inb(VGAREG_ACTL_RESET); ++ for(i=0;i<=0x13;i++) { ++ outb(VGAREG_ACTL_ADDRESS, i | (ar_index & 0x20)); ++ outb(VGAREG_ACTL_WRITE_DATA, read_byte(ES, BX)); BX++; ++ } ++ outb(VGAREG_ACTL_ADDRESS, ar_index); ++ inb(VGAREG_ACTL_RESET); ++ ++ for(i=0;i<=8;i++) { ++ outb(VGAREG_GRDC_ADDRESS,i); ++ outb(VGAREG_GRDC_DATA, read_byte(ES, BX)); BX++; ++ } ++ BX += 2; /* crtc_addr */ ++ BX += 4; /* plane latches */ ++ ++ outb(VGAREG_SEQU_ADDRESS, read_byte(ES, addr1)); addr1++; ++ outb(crtc_addr, read_byte(ES, addr1)); addr1++; ++ outb(VGAREG_GRDC_ADDRESS, read_byte(ES, addr1)); addr1++; ++ addr1++; ++ outb(crtc_addr - 0x4 + 0xa, read_byte(ES, addr1)); addr1++; ++ } ++ if (CX & 2) { ++ write_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MODE, read_byte(ES, BX)); BX++; ++ write_word(BIOSMEM_SEG,BIOSMEM_NB_COLS, read_word(ES, BX)); BX += 2; ++ write_word(BIOSMEM_SEG,BIOSMEM_PAGE_SIZE, read_word(ES, BX)); BX += 2; ++ write_word(BIOSMEM_SEG,BIOSMEM_CRTC_ADDRESS, read_word(ES, BX)); BX += 2; ++ write_byte(BIOSMEM_SEG,BIOSMEM_NB_ROWS, read_byte(ES, BX)); BX++; ++ write_word(BIOSMEM_SEG,BIOSMEM_CHAR_HEIGHT, read_word(ES, BX)); BX += 2; ++ write_byte(BIOSMEM_SEG,BIOSMEM_VIDEO_CTL, read_byte(ES, BX)); BX++; ++ write_byte(BIOSMEM_SEG,BIOSMEM_SWITCHES, read_byte(ES, BX)); BX++; ++ write_byte(BIOSMEM_SEG,BIOSMEM_MODESET_CTL, read_byte(ES, BX)); BX++; ++ write_word(BIOSMEM_SEG,BIOSMEM_CURSOR_TYPE, read_word(ES, BX)); BX += 2; ++ for(i=0;i<8;i++) { ++ write_word(BIOSMEM_SEG, BIOSMEM_CURSOR_POS+2*i, read_word(ES, BX)); ++ BX += 2; ++ } ++ write_word(BIOSMEM_SEG,BIOSMEM_CURRENT_START, read_word(ES, BX)); BX += 2; ++ write_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_PAGE, read_byte(ES, BX)); BX++; ++ /* current font */ ++ write_word(0, 0x1f * 4, read_word(ES, BX)); BX += 2; ++ write_word(0, 0x1f * 4 + 2, read_word(ES, BX)); BX += 2; ++ write_word(0, 0x43 * 4, read_word(ES, BX)); BX += 2; ++ write_word(0, 0x43 * 4 + 2, read_word(ES, BX)); BX += 2; ++ } ++ if (CX & 4) { ++ BX++; ++ v = read_byte(ES, BX); BX++; ++ outb(VGAREG_PEL_MASK, read_byte(ES, BX)); BX++; ++ // Set the whole dac always, from 0 ++ outb(VGAREG_DAC_WRITE_ADDRESS,0x00); ++ for(i=0;i<256*3;i++) { ++ outb(VGAREG_DAC_DATA, read_byte(ES, BX)); BX++; ++ } ++ BX++; ++ outb(VGAREG_DAC_WRITE_ADDRESS, v); ++ } ++ return BX; + } - #endif + // ============================================================================================ +diff -u -w vbetables-gen.c +--- vbetables-gen.c 1970-01-01 01:00:00.000000000 +0100 ++++ vbetables-gen.c 2006-06-14 00:52:18.000000000 +0200 +@@ -0,0 +1,217 @@ ++/* Generate the VGABIOS VBE Tables */ ++#include ++#include ++ ++typedef struct { ++ int width; ++ int height; ++ int depth; ++ int mode; ++} ModeInfo; ++ ++ModeInfo modes[] = { ++ /* standard VESA modes */ ++{ 640, 400, 8 , 0x100}, ++{ 640, 480, 8 , 0x101}, ++{ 800, 600, 4 , 0x102}, ++{ 800, 600, 8 , 0x103}, ++ //{ 1024, 768, 4 , 0x104}, ++{ 1024, 768, 8 , 0x105}, ++ //{ 1280, 1024, 4 , 0x106}, ++{ 1280, 1024, 8 , 0x107}, ++{ 320, 200, 15 , 0x10D}, ++{ 320, 200, 16 , 0x10E}, ++{ 320, 200, 24 , 0x10F}, ++{ 640, 480, 15 , 0x110}, ++{ 640, 480, 16 , 0x111}, ++{ 640, 480, 24 , 0x112}, ++{ 800, 600, 15 , 0x113}, ++{ 800, 600, 16 , 0x114}, ++{ 800, 600, 24 , 0x115}, ++{ 1024, 768, 15 , 0x116}, ++{ 1024, 768, 16 , 0x117}, ++{ 1024, 768, 24 , 0x118}, ++{ 1280, 1024, 15 , 0x119}, ++{ 1280, 1024, 16 , 0x11A}, ++{ 1280, 1024, 24 , 0x11B}, ++{ 1600, 1200, 8 , 0x11C}, ++{ 1600, 1200, 15 , 0x11D}, ++{ 1600, 1200, 16 , 0x11E}, ++{ 1600, 1200, 24 , 0x11F}, ++ ++ /* BOCHS/PLE, 86 'own' mode numbers */ ++{ 320, 200, 32 , 0x140}, ++{ 640, 400, 32 , 0x141}, ++{ 640, 480, 32 , 0x142}, ++{ 800, 600, 32 , 0x143}, ++{ 1024, 768, 32 , 0x144}, ++{ 1280, 1024, 32 , 0x145}, ++{ 320, 200, 8 , 0x146}, ++{ 1600, 1200, 32 , 0x147}, ++{ 1152, 864, 8 , 0x148}, ++{ 1152, 864, 15 , 0x149}, ++{ 1152, 864, 16 , 0x14a}, ++{ 1152, 864, 24 , 0x14b}, ++{ 1152, 864, 32 , 0x14c}, ++{ 0, }, ++}; ++ ++int main(int argc, char **argv) ++{ ++ const ModeInfo *pm; ++ int pitch, r_size, r_pos, g_size, g_pos, b_size, b_pos, a_size, a_pos; ++ const char *str; ++ ++ printf("/* THIS FILE IS AUTOMATICALLY GENERATED - DO NOT EDIT */\n"); ++ printf("static ModeInfoListItem mode_info_list[]=\n"); ++ printf("{\n"); ++ for(pm = modes; pm->mode != 0; pm++) { ++ printf("{ 0x%04x, /* %dx%dx%d */\n", ++ pm->mode, pm->width, pm->height, pm->depth); ++ printf("{ /*Bit16u ModeAttributes*/ %s,\n", ++ "VBE_MODE_ATTRIBUTE_SUPPORTED | " ++ "VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | " ++ "VBE_MODE_ATTRIBUTE_COLOR_MODE | " ++ "VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | " ++ "VBE_MODE_ATTRIBUTE_GRAPHICS_MODE"); ++ ++ printf("/*Bit8u WinAAttributes*/ %s,\n", ++ "VBE_WINDOW_ATTRIBUTE_RELOCATABLE | " ++ "VBE_WINDOW_ATTRIBUTE_READABLE | " ++ "VBE_WINDOW_ATTRIBUTE_WRITEABLE"); ++ ++ printf("/*Bit8u WinBAttributes*/ %d,\n", 0); ++ ++ printf("/*Bit16u WinGranularity*/ %s,\n", "VBE_DISPI_BANK_SIZE_KB"); ++ ++ printf("/*Bit16u WinSize*/ %s,\n", "VBE_DISPI_BANK_SIZE_KB"); ++ ++ printf("/*Bit16u WinASegment*/ %s,\n", "VGAMEM_GRAPH"); ++ ++ printf("/*Bit16u WinBSegment*/ 0x%04x,\n", 0); ++ ++ printf("/*Bit32u WinFuncPtr*/ %d,\n", 0); ++ ++ if (pm->depth == 4) ++ pitch = (pm->width + 7) / 8; ++ else ++ pitch = pm->width * ((pm->depth + 7) / 8); ++ printf("/*Bit16u BytesPerScanLine*/ %d,\n", pitch); ++ ++ // Mandatory information for VBE 1.2 and above ++ printf("/*Bit16u XResolution*/ %d,\n", pm->width); ++ printf("/*Bit16u YResolution*/ %d,\n", pm->height); ++ printf("/*Bit8u XCharSize*/ %d,\n", 8); ++ printf("/*Bit8u YCharSize*/ %d,\n", 16); ++ if (pm->depth == 4) { ++ printf("/*Bit8u NumberOfPlanes*/ %d,\n", 4); ++ printf("/*Bit8u BitsPerPixel*/ %d,\n", pm->depth); ++ } else { ++ printf("/*Bit8u NumberOfPlanes*/ %d,\n", 1); ++ printf("/*Bit8u BitsPerPixel*/ %d,\n", pm->depth); ++ } ++ printf("/*Bit8u NumberOfBanks*/ %d,\n", ++ (pm->height * pitch + 65535) / 65536); ++ ++ if (pm->depth == 4) ++ str = "VBE_MEMORYMODEL_PLANAR"; ++ else if (pm->depth == 8) ++ str = "VBE_MEMORYMODEL_PACKED_PIXEL"; ++ else ++ str = "VBE_MEMORYMODEL_DIRECT_COLOR"; ++ printf("/*Bit8u MemoryModel*/ %s,\n", str); ++ printf("/*Bit8u BankSize*/ %d,\n", 0); ++ /* XXX: check */ ++ printf("/*Bit8u NumberOfImagePages*/ %d,\n", 0); ++ printf("/*Bit8u Reserved_page*/ %d,\n", 0); ++ ++ // Direct Color fields (required for direct/6 and YUV/7 memory models) ++ switch(pm->depth) { ++ case 15: ++ r_size = 5; ++ r_pos = 10; ++ g_size = 5; ++ g_pos = 5; ++ b_size = 5; ++ b_pos = 0; ++ a_size = 1; ++ a_pos = 15; ++ break; ++ case 16: ++ r_size = 5; ++ r_pos = 11; ++ g_size = 6; ++ g_pos = 5; ++ b_size = 5; ++ b_pos = 0; ++ a_size = 0; ++ a_pos = 0; ++ break; ++ case 24: ++ r_size = 8; ++ r_pos = 16; ++ g_size = 8; ++ g_pos = 8; ++ b_size = 8; ++ b_pos = 0; ++ a_size = 0; ++ a_pos = 0; ++ break; ++ case 32: ++ r_size = 8; ++ r_pos = 16; ++ g_size = 8; ++ g_pos = 8; ++ b_size = 8; ++ b_pos = 0; ++ a_size = 8; ++ a_pos = 24; ++ break; ++ default: ++ r_size = 0; ++ r_pos = 0; ++ g_size = 0; ++ g_pos = 0; ++ b_size = 0; ++ b_pos = 0; ++ a_size = 0; ++ a_pos = 0; ++ break; ++ } ++ ++ printf("/*Bit8u RedMaskSize*/ %d,\n", r_size); ++ printf("/*Bit8u RedFieldPosition*/ %d,\n", r_pos); ++ printf("/*Bit8u GreenMaskSize*/ %d,\n", g_size); ++ printf("/*Bit8u GreenFieldPosition*/ %d,\n", g_pos); ++ printf("/*Bit8u BlueMaskSize*/ %d,\n", b_size); ++ printf("/*Bit8u BlueFieldPosition*/ %d,\n", b_pos); ++ printf("/*Bit8u RsvdMaskSize*/ %d,\n", a_size); ++ printf("/*Bit8u RsvdFieldPosition*/ %d,\n", a_pos); ++ printf("/*Bit8u DirectColorModeInfo*/ %d,\n", 0); ++ ++// Mandatory information for VBE 2.0 and above ++ printf("/*Bit32u PhysBasePtr*/ %s,\n", ++ "VBE_DISPI_LFB_PHYSICAL_ADDRESS"); ++ printf("/*Bit32u OffScreenMemOffset*/ %d,\n", 0); ++ printf("/*Bit16u OffScreenMemSize*/ %d,\n", 0); ++ // Mandatory information for VBE 3.0 and above ++ printf("/*Bit16u LinBytesPerScanLine*/ %d,\n", pitch); ++ printf("/*Bit8u BnkNumberOfPages*/ %d,\n", 0); ++ printf("/*Bit8u LinNumberOfPages*/ %d,\n", 0); ++ printf("/*Bit8u LinRedMaskSize*/ %d,\n", r_size); ++ printf("/*Bit8u LinRedFieldPosition*/ %d,\n", r_pos); ++ printf("/*Bit8u LinGreenMaskSize*/ %d,\n", g_size); ++ printf("/*Bit8u LinGreenFieldPosition*/ %d,\n", g_pos); ++ printf("/*Bit8u LinBlueMaskSize*/ %d,\n", b_size); ++ printf("/*Bit8u LinBlueFieldPosition*/ %d,\n", b_pos); ++ printf("/*Bit8u LinRsvdMaskSize*/ %d,\n", a_size); ++ printf("/*Bit8u LinRsvdFieldPosition*/ %d,\n", a_pos); ++ printf("/*Bit32u MaxPixelClock*/ %d,\n", 0); ++ printf("} },\n"); ++ } ++ printf("{ VBE_VESA_MODE_END_OF_LIST,\n"); ++ printf("{ 0,\n"); ++ printf("} },\n"); ++ printf("};\n"); ++ return 0; ++} -- 2.39.5