ia64/xen-unstable

changeset 17970:d133d452cb71

vgabios: upgrade to CVS version

cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/vgabios
co vgabios

Patchs backported:
- vgabios: Support VESA power management extensions. (cs 17692)
- x86, hvm: Allow Cirrus VGA BIOS to clear framebuffer with minimal
PIO writes. (cs 16242)

This patch fixes the bug with the IDR boot CD.

Signed-off-by: Jean Guyader <jean.guyader@eu.citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Fri Jul 04 13:02:31 2008 +0100 (2008-07-04)
parents 6c2fe520e32d
children a49673cd23d2
files tools/firmware/vgabios/ChangeLog tools/firmware/vgabios/Makefile tools/firmware/vgabios/README tools/firmware/vgabios/TODO tools/firmware/vgabios/biossums.c tools/firmware/vgabios/clext.c tools/firmware/vgabios/vbe.c tools/firmware/vgabios/vbe.h tools/firmware/vgabios/vbe_display_api.txt tools/firmware/vgabios/vbetables-gen.c tools/firmware/vgabios/vbetables.h tools/firmware/vgabios/vgabios.c tools/firmware/vgabios/vgatables.h
line diff
     1.1 --- a/tools/firmware/vgabios/ChangeLog	Fri Jul 04 12:39:18 2008 +0100
     1.2 +++ b/tools/firmware/vgabios/ChangeLog	Fri Jul 04 13:02:31 2008 +0100
     1.3 @@ -1,3 +1,207 @@
     1.4 +2008-05-11 08:40  vruppert
     1.5 +
     1.6 +	* biossums.c (1.6):
     1.7 +
     1.8 +	- fixed a warning
     1.9 +
    1.10 +2008-03-02 08:47  vruppert
    1.11 +
    1.12 +	* vbe.c (1.60):
    1.13 +
    1.14 +	- added debug message for unsupported VBE modes
    1.15 +
    1.16 +2008-02-24 09:18  vruppert
    1.17 +
    1.18 +	* vbe.c (1.59):
    1.19 +
    1.20 +	- in LFB modes the number of banks must be set to 1
    1.21 +
    1.22 +2008-01-27 10:44  vruppert
    1.23 +
    1.24 +	* Makefile (1.21), biossums.c (1.5), vgabios.c (1.67):
    1.25 +
    1.26 +	- added PCI data structure for the Cirrus VGABIOS images
    1.27 +	- added support for the PCI data structure in biossums
    1.28 +	- updated year in copyright
    1.29 +
    1.30 +2008-01-26 11:46  vruppert
    1.31 +
    1.32 +	* BUGS (1.4), Makefile (1.20), README (1.14), TODO (1.13), vbe_display_api.txt (1.14):
    1.33 +
    1.34 +	- whitespace cleanup
    1.35 +
    1.36 +2006-11-26 10:43  vruppert
    1.37 +
    1.38 +	* Makefile (1.19):
    1.39 +
    1.40 +	- disable the generation of linemarkers by the preprocessor, since the latest
    1.41 +	  versions of bcc don't like them
    1.42 +
    1.43 +2006-09-02 13:15  vruppert
    1.44 +
    1.45 +	* biossums.c (1.4):
    1.46 +
    1.47 +	- the biossums utility no longer modifies VGABIOS images with proper checksum
    1.48 +	  and size
    1.49 +
    1.50 +2006-08-19 14:28  vruppert
    1.51 +
    1.52 +	* Changelog (1.26), README (1.13), TODO (1.12):
    1.53 +
    1.54 +	- updates for 0.6a release
    1.55 +
    1.56 +2006-08-19 09:39  vruppert
    1.57 +
    1.58 +	* vbe.c (1.58):
    1.59 +
    1.60 +	- improved VGA compatible setup for VBE modes (disable CGA and Hercules
    1.61 +	  compatible memory layout)
    1.62 +
    1.63 +2006-08-18 20:39  vruppert
    1.64 +
    1.65 +	* vbe.c (1.57):
    1.66 +
    1.67 +	- improved VGA compatible setup for >=8bpp VBE modes (CRTC doubleword mode and
    1.68 +	  GRDC shift register setting added)
    1.69 +	- now using symbolic name for CRTC address register
    1.70 +
    1.71 +2006-08-15 20:42  vruppert
    1.72 +
    1.73 +	* vbe.c (1.56), vbetables-gen.c (1.4):
    1.74 +
    1.75 +	- init 4bpp VBE modes by a temporary switch to VGA mode 0x6A
    1.76 +	- all 4bpp VBE modes now enabled
    1.77 +
    1.78 +2006-08-14 20:24  vruppert
    1.79 +
    1.80 +	* vbe.c (1.55):
    1.81 +
    1.82 +	- VGA compatible setup for VBE modes improved (Bochs hack can be removed now)
    1.83 +
    1.84 +2006-08-12 07:51  vruppert
    1.85 +
    1.86 +	* .cvsignore (1.1):
    1.87 +
    1.88 +	- .cvsignore added for auto-generated file
    1.89 +
    1.90 +2006-08-12 07:47  vruppert
    1.91 +
    1.92 +	* vbe.c (1.54), vbe.h (1.27), vbe_display_api.txt (1.13), vbetables-gen.c (1.3):
    1.93 +
    1.94 +	- cleaned up VBE memory size definitions (removed duplicate defines, main
    1.95 +	  definition now in vbetables-gen.c)
    1.96 +
    1.97 +2006-08-09 21:28  vruppert
    1.98 +
    1.99 +	* vbetables.h (1.30):
   1.100 +
   1.101 +	- removed auto-generated file
   1.102 +
   1.103 +2006-08-09 21:26  vruppert
   1.104 +
   1.105 +	* vbe.c (1.53), vbe.h (1.26), vbe_display_api.txt (1.12), vbetables-gen.c (1.2),
   1.106 +	  vbetables.h (1.29):
   1.107 +
   1.108 +	- VBE video memory increased to 8 MB
   1.109 +	- VBE dispi ID changed to B0C4
   1.110 +	- documentation update
   1.111 +
   1.112 +2006-07-11 08:03  vruppert
   1.113 +
   1.114 +	* Makefile (1.18), vbetables-gen.c (1.1), vbetables.h (1.28):
   1.115 +
   1.116 +	- generate vbetables.h dynamicly
   1.117 +	  * initial patch from the qemu project by Fabrice Bellard
   1.118 +	  * only add modes that fit in video memory (still 4 MB)
   1.119 +	  * several other fixes (e.g. 4 bpp specific stuff, number of pages)
   1.120 +
   1.121 +2006-07-10 07:47  vruppert
   1.122 +
   1.123 +	* vgabios.c (1.66):
   1.124 +
   1.125 +	- biosfn_scroll(): check variable 'i' for underflowing when scrolling downwards
   1.126 +	  to avoid screen corruption
   1.127 +
   1.128 +2006-07-10 07:47  vruppert
   1.129 +
   1.130 +	* vbe.c (1.52):
   1.131 +
   1.132 +	- VBE set bank functions failure handling added
   1.133 +	- VBE get/set logical scan line length fixes for the 4bpp mode
   1.134 +
   1.135 +2006-07-08 13:27  vruppert
   1.136 +
   1.137 +	* vbe.c (1.51), vbetables.h (1.27):
   1.138 +
   1.139 +	- added special case for the 4 bpp when setting VBE display start
   1.140 +	- VBE mode table fixes
   1.141 +
   1.142 +2006-07-07 13:30  vruppert
   1.143 +
   1.144 +	* clext.c (1.12):
   1.145 +
   1.146 +	- bank pointer must be set to 0 after a mode set
   1.147 +
   1.148 +2006-06-21 16:58  vruppert
   1.149 +
   1.150 +	* vbe.c (1.50), vbetables.h (1.26):
   1.151 +
   1.152 +	- improved VBE display capabilities check (X resulution checked now)
   1.153 +	- removed obsolete defines (LFB always available, always generate dynamic list)
   1.154 +	- CR/LF to LF fixes
   1.155 +
   1.156 +2006-06-18 15:22  vruppert
   1.157 +
   1.158 +	* clext.c (1.11), vbe.c (1.49), vbe.h (1.25), vbetables.h (1.25), vgabios.c
   1.159 +	  (1.65):
   1.160 +
   1.161 +	- applied patch from the qemu project (Fabrice Bellard)
   1.162 +	  * Cirrus SVGA now supports the "no clear" bit when switching to Cirrus or
   1.163 +	    VESA mode
   1.164 +	  * Bochs VBE protected mode interface improved
   1.165 +	  * save/restore video state support for Bochs VBE and standard VGA added
   1.166 +	  * Bochs VBE prepared for more modi
   1.167 +
   1.168 +2006-03-25 10:19  vruppert
   1.169 +
   1.170 +	* clext.c (1.10), vgabios.c (1.64), vgatables.h (1.10):
   1.171 +
   1.172 +	- applied patch from Fabrice Bellard
   1.173 +	 * added minimal support for the video parameter table (VPT)
   1.174 +	 * added Cirrus SVGA mode 0x7b (1600x1200x8)
   1.175 +
   1.176 +2005-12-26 19:50  vruppert
   1.177 +
   1.178 +	* vbe.c (1.48), vgabios.c (1.63):
   1.179 +
   1.180 +	- Bochs VBE protected mode interface added (based on a patch by malc@pulsesoft.com)
   1.181 +
   1.182 +2005-12-26 19:50  vruppert
   1.183 +
   1.184 +	* biossums.c (1.3):
   1.185 +
   1.186 +	- biossums utility now supports VGABIOS sizes up to 64 kBytes
   1.187 +
   1.188 +2005-09-21 18:45  vruppert
   1.189 +
   1.190 +	* vgatables.h (1.9):
   1.191 +
   1.192 +	- mode 0x11: all color planes must be enabled in this 2-color VGA mode
   1.193 +
   1.194 +2005-08-30 18:41  vruppert
   1.195 +
   1.196 +	* biossums.c (1.2):
   1.197 +
   1.198 +	- missing license text added in biossums.c
   1.199 +
   1.200 +2005-07-02 18:39  vruppert
   1.201 +
   1.202 +	* vgabios.c (1.62):
   1.203 +
   1.204 +	- BIOS configuration word usually reports initial mode 80x25 color text
   1.205 +	- vgabios function 0x0e (write teletype): linefeed (0x0a) only increments the
   1.206 +	  cursor row value
   1.207 +
   1.208  2005-05-24 16:50  vruppert
   1.209  
   1.210  	* vbe.c (1.47), vgabios.c (1.61):
     2.1 --- a/tools/firmware/vgabios/Makefile	Fri Jul 04 12:39:18 2008 +0100
     2.2 +++ b/tools/firmware/vgabios/Makefile	Fri Jul 04 13:02:31 2008 +0100
     2.3 @@ -21,7 +21,7 @@ cirrus-bios: vgabios-cirrus.bin vgabios-
     2.4  
     2.5  .PHONY: clean
     2.6  clean:
     2.7 -	rm -f biossums *.o *.s *.ld86 \
     2.8 +	rm -f  biossums vbetables-gen vbetables.h *.o *.s *.ld86 \
     2.9            temp.awk.* vgabios*.orig _vgabios_* _vgabios-debug_* core vgabios*.bin vgabios*.txt $(RELEASE).bin *.bak
    2.10  	rm -f VGABIOS-lgpl-latest*.bin
    2.11  
    2.12 @@ -37,7 +37,7 @@ release:
    2.13  	tar czvf ../$(RELEASE).tgz --exclude CVS -C .. $(RELEASE)/
    2.14  
    2.15  vgabios.bin: biossums vgabios.c vgabios.h vgafonts.h vgatables.h vbe.h vbe.c vbetables.h
    2.16 -	$(GCC) -E -P vgabios.c $(VGABIOS_VERS) $(VGABIOS_DATE) > _vgabios_.c
    2.17 +	$(GCC) -E -P vgabios.c $(VGABIOS_VERS) -DVBE $(VGABIOS_DATE) > _vgabios_.c
    2.18  	$(BCC) -o vgabios.s -C-c -D__i86__ -S -0 _vgabios_.c
    2.19  	sed -e 's/^\.text//' -e 's/^\.data//' vgabios.s > _vgabios_.s
    2.20  	$(AS86) _vgabios_.s -b vgabios.bin -u -w- -g -0 -j -O -l vgabios.txt
    2.21 @@ -47,7 +47,7 @@ vgabios.bin: biossums vgabios.c vgabios.
    2.22  	ls -l VGABIOS-lgpl-latest.bin
    2.23  
    2.24  vgabios.debug.bin: biossums vgabios.c vgabios.h vgafonts.h vgatables.h vbe.h vbe.c vbetables.h
    2.25 -	$(GCC) -E -P vgabios.c $(VGABIOS_VERS) -DDEBUG $(VGABIOS_DATE) > _vgabios-debug_.c
    2.26 +	$(GCC) -E -P vgabios.c $(VGABIOS_VERS) -DVBE -DDEBUG $(VGABIOS_DATE) > _vgabios-debug_.c
    2.27  	$(BCC) -o vgabios-debug.s -C-c -D__i86__ -S -0 _vgabios-debug_.c
    2.28  	sed -e 's/^\.text//' -e 's/^\.data//' vgabios-debug.s > _vgabios-debug_.s
    2.29  	$(AS86) _vgabios-debug_.s -b vgabios.debug.bin -u -w- -g -0 -j -O -l vgabios.debug.txt
    2.30 @@ -57,7 +57,7 @@ vgabios.debug.bin: biossums vgabios.c vg
    2.31  	ls -l VGABIOS-lgpl-latest.debug.bin
    2.32  
    2.33  vgabios-cirrus.bin: biossums vgabios.c vgabios.h vgafonts.h vgatables.h clext.c
    2.34 -	$(GCC) -E -P vgabios.c $(VGABIOS_VERS) -DCIRRUS $(VGABIOS_DATE) > _vgabios-cirrus_.c
    2.35 +	$(GCC) -E -P vgabios.c $(VGABIOS_VERS) -DCIRRUS -DPCIBIOS $(VGABIOS_DATE) > _vgabios-cirrus_.c
    2.36  	$(BCC) -o vgabios-cirrus.s -C-c -D__i86__ -S -0 _vgabios-cirrus_.c
    2.37  	sed -e 's/^\.text//' -e 's/^\.data//' vgabios-cirrus.s > _vgabios-cirrus_.s
    2.38  	$(AS86) _vgabios-cirrus_.s -b vgabios-cirrus.bin -u -w- -g -0 -j -O -l vgabios-cirrus.txt
    2.39 @@ -67,7 +67,7 @@ vgabios-cirrus.bin: biossums vgabios.c v
    2.40  	ls -l VGABIOS-lgpl-latest.cirrus.bin
    2.41  
    2.42  vgabios-cirrus.debug.bin: biossums vgabios.c vgabios.h vgafonts.h vgatables.h clext.c
    2.43 -	$(GCC) -E -P vgabios.c $(VGABIOS_VERS) -DCIRRUS -DCIRRUS_DEBUG $(VGABIOS_DATE) > _vgabios-cirrus-debug_.c
    2.44 +	$(GCC) -E -P vgabios.c $(VGABIOS_VERS) -DCIRRUS -DCIRRUS_DEBUG -DPCIBIOS $(VGABIOS_DATE) > _vgabios-cirrus-debug_.c
    2.45  	$(BCC) -o vgabios-cirrus-debug.s -C-c -D__i86__ -S -0 _vgabios-cirrus-debug_.c
    2.46  	sed -e 's/^\.text//' -e 's/^\.data//' vgabios-cirrus-debug.s > _vgabios-cirrus-debug_.s
    2.47  	$(AS86) _vgabios-cirrus-debug_.s -b vgabios-cirrus.debug.bin -u -w- -g -0 -j -O -l vgabios-cirrus.debug.txt
    2.48 @@ -78,3 +78,9 @@ vgabios-cirrus.debug.bin: biossums vgabi
    2.49  
    2.50  biossums: biossums.c
    2.51  	$(CC) -o biossums biossums.c
    2.52 +
    2.53 +vbetables-gen: vbetables-gen.c
    2.54 +	$(CC) -o vbetables-gen vbetables-gen.c
    2.55 +
    2.56 +vbetables.h: vbetables-gen
    2.57 +	./vbetables-gen > $@
     3.1 --- a/tools/firmware/vgabios/README	Fri Jul 04 12:39:18 2008 +0100
     3.2 +++ b/tools/firmware/vgabios/README	Fri Jul 04 13:02:31 2008 +0100
     3.3 @@ -90,6 +90,34 @@ For any information on qemu, visit the w
     3.4  
     3.5  History
     3.6  -------
     3.7 +vgabios-0.6b : May 30 2008
     3.8 +  - Volker
     3.9 +    . added PCI data structure for the Cirrus VGABIOS images
    3.10 +    . minor bugfixes in biossums utility, VBE support and makefile
    3.11 +
    3.12 +vgabios-0.6a : Aug 19 2006
    3.13 +  - Volker
    3.14 +    . added minimal support for the video parameter table (VPT)
    3.15 +    . Cirrus SVGA now supports the "no clear" bit in Cirrus and VESA mode
    3.16 +    . Bochs VBE protected mode interface improved
    3.17 +    . save/restore video state support for Bochs VBE and standard VGA added
    3.18 +    . generate vbetables.h dynamicly
    3.19 +    . VBE video memory increased to 8 MB (VBE dispi ID changed to B0C4)
    3.20 +    . lots of 4bpp VBE fixes (all 4bpp VBE modes now enabled)
    3.21 +    . VGA compatible setup for VBE modes added
    3.22 +
    3.23 +vgabios-0.5d : Dec 29 2005
    3.24 +  - Volker
    3.25 +    . Bochs VBE protected mode interface added (based on a patch by malc@pulsesoft.com)
    3.26 +    . biossums utility now supports VGABIOS sizes up to 64 kBytes
    3.27 +    . VGA mode 0x11: all color planes must be enabled in this 2-color VGA mode
    3.28 +
    3.29 +vgabios-0.5c : Jul 07 2005
    3.30 +  - Volker
    3.31 +    . BIOS configuration word usually reports initial mode 80x25 color text
    3.32 +    . vgabios function 0x0e (write teletype): linefeed (0x0a) only increments the
    3.33 +      cursor row value
    3.34 +
    3.35  vgabios-0.5b : May 24 2005
    3.36    - Volker
    3.37      . fixed return value for the default case in the VBE section (non-debug mode)
     4.1 --- a/tools/firmware/vgabios/TODO	Fri Jul 04 12:39:18 2008 +0100
     4.2 +++ b/tools/firmware/vgabios/TODO	Fri Jul 04 13:02:31 2008 +0100
     4.3 @@ -6,13 +6,11 @@ General
     4.4    - Add new functionalities and modify static functionality table 
     4.5    - Performance : 16 bits IO
     4.6  
     4.7 -v0.6
     4.8 -  - Reimplement the tables so it is compatible with the video save pointer table
     4.9 +v0.7
    4.10    - Implement the remaining functions (don't know if all are needed):
    4.11  	- chargen ax=1120, ax=1121, ax=1122, ax=1123, ax=1124
    4.12  	- display switch interface ah=12 bl=35
    4.13  	- video refresh control ah=12 bl=36
    4.14 -        - save/restore state ah=1c
    4.15    - Graphic modes
    4.16  
    4.17  v1.0
     5.1 --- a/tools/firmware/vgabios/biossums.c	Fri Jul 04 12:39:18 2008 +0100
     5.2 +++ b/tools/firmware/vgabios/biossums.c	Fri Jul 04 13:02:31 2008 +0100
     5.3 @@ -1,25 +1,35 @@
     5.4  /* biossums.c  --- written by Eike W. for the Bochs BIOS */
     5.5  /* adapted for the LGPL'd VGABIOS by vruppert */
     5.6  
     5.7 +/*  This library is free software; you can redistribute it and/or
     5.8 + *  modify it under the terms of the GNU Lesser General Public
     5.9 + *  License as published by the Free Software Foundation; either
    5.10 + *  version 2 of the License, or (at your option) any later version.
    5.11 + *
    5.12 + *  This library is distributed in the hope that it will be useful,
    5.13 + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    5.14 + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    5.15 + *  Lesser General Public License for more details.
    5.16 + *
    5.17 + *  You should have received a copy of the GNU Lesser General Public
    5.18 + *  License along with this library; if not, write to the Free Software
    5.19 + *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
    5.20 + */
    5.21  #include <stdlib.h>
    5.22  #include <stdio.h>
    5.23 +#include <string.h>
    5.24  
    5.25  typedef unsigned char byte;
    5.26  
    5.27  void check( int value, char* message );
    5.28  
    5.29 -#define LEN_BIOS_DATA 0x8000
    5.30 -#define MAX_OFFSET    (LEN_BIOS_DATA - 1)
    5.31 -
    5.32 -
    5.33 -#define BIOS_OFFSET 0x7FFF
    5.34 +#define MAX_BIOS_DATA 0x10000
    5.35  
    5.36  long chksum_bios_get_offset( byte* data, long offset );
    5.37  byte chksum_bios_calc_value( byte* data, long offset );
    5.38  byte chksum_bios_get_value(  byte* data, long offset );
    5.39  void chksum_bios_set_value(  byte* data, long offset, byte value );
    5.40  
    5.41 -
    5.42  #define PMID_LEN        20
    5.43  #define PMID_CHKSUM     19
    5.44  
    5.45 @@ -28,33 +38,55 @@ byte chksum_pmid_calc_value( byte* data,
    5.46  byte chksum_pmid_get_value(  byte* data, long offset );
    5.47  void chksum_pmid_set_value(  byte* data, long offset, byte value );
    5.48  
    5.49 +#define PCIR_LEN        24
    5.50  
    5.51 -byte bios_data[LEN_BIOS_DATA];
    5.52 +long chksum_pcir_get_offset( byte* data, long offset );
    5.53 +
    5.54 +
    5.55 +byte bios_data[MAX_BIOS_DATA];
    5.56 +long bios_len;
    5.57  
    5.58  
    5.59 -int main( int argc, char* argv[] ) {
    5.60 -
    5.61 +int main(int argc, char* argv[])
    5.62 +{
    5.63    FILE* stream;
    5.64 -  long  offset, tmp_offset;
    5.65 -  byte  cur_val = 0, new_val = 0;
    5.66 -  int   hits;
    5.67 +  long  offset, tmp_offset, pcir_offset;
    5.68 +  byte  bios_len_byte, cur_val = 0, new_val = 0;
    5.69 +  int   hits, modified;
    5.70  
    5.71 -
    5.72 -  if( argc != 2 ) {
    5.73 +  if (argc != 2) {
    5.74      printf( "Error. Need a file-name as an argument.\n" );
    5.75      exit( EXIT_FAILURE );
    5.76    }
    5.77  
    5.78 -  if(( stream = fopen( argv[1], "rb" )) == NULL ) {
    5.79 -    printf( "Error opening %s for reading.\n", argv[1] );
    5.80 -    exit( EXIT_FAILURE );
    5.81 +  if ((stream = fopen(argv[1], "rb")) == NULL) {
    5.82 +    printf("Error opening %s for reading.\n", argv[1]);
    5.83 +    exit(EXIT_FAILURE);
    5.84 +  }
    5.85 +  memset(bios_data, 0, MAX_BIOS_DATA);
    5.86 +  bios_len = fread(bios_data, 1, MAX_BIOS_DATA, stream);
    5.87 +  if (bios_len > MAX_BIOS_DATA) {
    5.88 +    printf("Error reading max. 65536 Bytes from %s.\n", argv[1]);
    5.89 +    fclose(stream);
    5.90 +    exit(EXIT_FAILURE);
    5.91    }
    5.92 -  if( fread( bios_data, 1, LEN_BIOS_DATA, stream ) >= LEN_BIOS_DATA ) {
    5.93 -    printf( "Error reading max. 32767 Bytes from %s.\n", argv[1] );
    5.94 -    fclose( stream );
    5.95 -    exit( EXIT_FAILURE );
    5.96 +  fclose(stream);
    5.97 +  modified = 0;
    5.98 +  if (bios_len < 0x8000) {
    5.99 +    bios_len = 0x8000;
   5.100 +    modified = 1;
   5.101 +  } else if ((bios_len & 0x1FF) != 0) {
   5.102 +    bios_len = (bios_len + 0x200) & ~0x1FF;
   5.103 +    modified = 1;
   5.104    }
   5.105 -  fclose( stream );
   5.106 +  bios_len_byte = (byte)(bios_len / 512);
   5.107 +  if (bios_len_byte != bios_data[2]) {
   5.108 +    if (modified == 0) {
   5.109 +      bios_len += 0x200;
   5.110 +    }
   5.111 +    bios_data[2] = (byte)(bios_len / 512);
   5.112 +    modified = 1;
   5.113 +  }
   5.114  
   5.115    hits   = 0;
   5.116    offset = 0L;
   5.117 @@ -67,44 +99,76 @@ int main( int argc, char* argv[] ) {
   5.118      printf( "Calculated checksum:  0x%02X  ",   new_val );
   5.119      hits++;
   5.120    }
   5.121 -  if( hits == 1 && cur_val != new_val ) {
   5.122 -    printf( "Setting checksum." );
   5.123 +  if ((hits == 1) && (cur_val != new_val)) {
   5.124 +    printf("Setting checksum.");
   5.125      chksum_pmid_set_value( bios_data, offset, new_val );
   5.126 +    if (modified == 0) {
   5.127 +      bios_len += 0x200;
   5.128 +      bios_data[2]++;
   5.129 +    }
   5.130 +    modified = 1;
   5.131    }
   5.132 -  if( hits >= 2 ) {
   5.133 +  if (hits >= 2) {
   5.134      printf( "Multiple PMID entries! No checksum set." );
   5.135    }
   5.136 -  if( hits ) {
   5.137 -    printf( "\n" );
   5.138 +  if (hits) {
   5.139 +    printf("\n");
   5.140    }
   5.141  
   5.142 +  offset = 0L;
   5.143 +  pcir_offset = chksum_pcir_get_offset( bios_data, offset );
   5.144 +  if (pcir_offset != -1L) {
   5.145 +    if (bios_data[pcir_offset + 16] != bios_data[2]) {
   5.146 +      bios_data[pcir_offset + 16] = bios_data[2];
   5.147 +      if (modified == 0) {
   5.148 +        bios_len += 0x200;
   5.149 +        bios_data[2]++;
   5.150 +        bios_data[pcir_offset + 16]++;
   5.151 +      }
   5.152 +      modified = 1;
   5.153 +    }
   5.154 +  }
   5.155  
   5.156    offset  = 0L;
   5.157 -  offset  = chksum_bios_get_offset( bios_data, offset );
   5.158 -  cur_val = chksum_bios_get_value(  bios_data, offset );
   5.159 -  new_val = chksum_bios_calc_value( bios_data, offset );
   5.160 -  printf( "\nBios checksum at:   0x%4lX\n", offset  );
   5.161 -  printf( "Current checksum:     0x%02X\n",   cur_val );
   5.162 -  printf( "Calculated checksum:  0x%02X  ",   new_val );
   5.163 -  if( cur_val != new_val ) {
   5.164 -    printf( "Setting checksum." );
   5.165 -    chksum_bios_set_value( bios_data, offset, new_val );
   5.166 -  }
   5.167 -  printf( "\n" );
   5.168 -
   5.169 +  do {
   5.170 +    offset  = chksum_bios_get_offset(bios_data, offset);
   5.171 +    cur_val = chksum_bios_get_value(bios_data, offset);
   5.172 +    new_val = chksum_bios_calc_value(bios_data, offset);
   5.173 +    if ((cur_val != new_val) && (modified == 0)) {
   5.174 +      bios_len += 0x200;
   5.175 +      bios_data[2]++;
   5.176 +      if (pcir_offset != -1L) {
   5.177 +        bios_data[pcir_offset + 16]++;
   5.178 +      }
   5.179 +      modified = 1;
   5.180 +    } else {
   5.181 +      printf("\nBios checksum at:   0x%4lX\n", offset);
   5.182 +      printf("Current checksum:     0x%02X\n", cur_val);
   5.183 +      printf("Calculated checksum:  0x%02X  ", new_val);
   5.184 +      if (cur_val != new_val) {
   5.185 +        printf("Setting checksum.");
   5.186 +        chksum_bios_set_value(bios_data, offset, new_val);
   5.187 +        cur_val = new_val;
   5.188 +        modified = 1;
   5.189 +      }
   5.190 +      printf( "\n" );
   5.191 +    }
   5.192 +  } while (cur_val != new_val);
   5.193  
   5.194 -  if(( stream = fopen( argv[1], "wb" )) == NULL ) {
   5.195 -    printf( "Error opening %s for writing.\n", argv[1] );
   5.196 -    exit( EXIT_FAILURE );
   5.197 +  if (modified == 1) {
   5.198 +    if ((stream = fopen( argv[1], "wb")) == NULL) {
   5.199 +      printf("Error opening %s for writing.\n", argv[1]);
   5.200 +      exit(EXIT_FAILURE);
   5.201 +    }
   5.202 +    if (fwrite(bios_data, 1, bios_len, stream) < bios_len) {
   5.203 +      printf("Error writing %d KBytes to %s.\n", bios_len / 1024, argv[1]);
   5.204 +      fclose(stream);
   5.205 +      exit(EXIT_FAILURE);
   5.206 +    }
   5.207 +    fclose(stream);
   5.208    }
   5.209 -  if( fwrite( bios_data, 1, LEN_BIOS_DATA, stream ) < LEN_BIOS_DATA ) {
   5.210 -    printf( "Error writing 32KBytes to %s.\n", argv[1] );
   5.211 -    fclose( stream );
   5.212 -    exit( EXIT_FAILURE );
   5.213 -  }
   5.214 -  fclose( stream );
   5.215  
   5.216 -  return( EXIT_SUCCESS );
   5.217 +  return (EXIT_SUCCESS);
   5.218  }
   5.219  
   5.220  
   5.221 @@ -119,7 +183,7 @@ void check( int okay, char* message ) {
   5.222  
   5.223  long chksum_bios_get_offset( byte* data, long offset ) {
   5.224  
   5.225 -  return( BIOS_OFFSET );
   5.226 +  return (bios_len - 1);
   5.227  }
   5.228  
   5.229  
   5.230 @@ -129,7 +193,7 @@ byte chksum_bios_calc_value( byte* data,
   5.231    byte  sum;
   5.232  
   5.233    sum = 0;
   5.234 -  for( i = 0; i < MAX_OFFSET; i++ ) {
   5.235 +  for( i = 0; i < offset; i++ ) {
   5.236      sum = sum + *( data + i );
   5.237    }
   5.238    sum = -sum;          /* iso ensures -s + s == 0 on unsigned types */
   5.239 @@ -139,13 +203,13 @@ byte chksum_bios_calc_value( byte* data,
   5.240  
   5.241  byte chksum_bios_get_value( byte* data, long offset ) {
   5.242  
   5.243 -  return( *( data + BIOS_OFFSET ) );
   5.244 +  return( *( data + offset ) );
   5.245  }
   5.246  
   5.247  
   5.248  void chksum_bios_set_value( byte* data, long offset, byte value ) {
   5.249  
   5.250 -  *( data + BIOS_OFFSET ) = value;
   5.251 +  *( data + offset ) = value;
   5.252  }
   5.253  
   5.254  
   5.255 @@ -156,7 +220,7 @@ byte chksum_pmid_calc_value( byte* data,
   5.256    byte sum;
   5.257  
   5.258    len = PMID_LEN;
   5.259 -  check( offset + len <= MAX_OFFSET, "PMID entry length out of bounds" );
   5.260 +  check((offset + len) <= (bios_len - 1), "PMID entry length out of bounds" );
   5.261    sum = 0;
   5.262    for( i = 0; i < len; i++ ) {
   5.263      if( i != PMID_CHKSUM ) {
   5.264 @@ -172,7 +236,7 @@ long chksum_pmid_get_offset( byte* data,
   5.265  
   5.266    long result = -1L;
   5.267  
   5.268 -  while( offset + PMID_LEN < MAX_OFFSET ) {
   5.269 +  while ((offset + PMID_LEN) < (bios_len - 1)) {
   5.270      offset = offset + 1;
   5.271      if( *( data + offset + 0 ) == 'P' && \
   5.272          *( data + offset + 1 ) == 'M' && \
   5.273 @@ -188,13 +252,31 @@ long chksum_pmid_get_offset( byte* data,
   5.274  
   5.275  byte chksum_pmid_get_value( byte* data, long offset ) {
   5.276  
   5.277 -  check( offset + PMID_CHKSUM <= MAX_OFFSET, "PMID checksum out of bounds" );
   5.278 +  check((offset + PMID_CHKSUM) <= (bios_len - 1), "PMID checksum out of bounds" );
   5.279    return(  *( data + offset + PMID_CHKSUM ) );
   5.280  }
   5.281  
   5.282  
   5.283  void chksum_pmid_set_value( byte* data, long offset, byte value ) {
   5.284  
   5.285 -  check( offset + PMID_CHKSUM <= MAX_OFFSET, "PMID checksum out of bounds" );
   5.286 +  check((offset + PMID_CHKSUM) <= (bios_len - 1), "PMID checksum out of bounds" );
   5.287    *( data + offset + PMID_CHKSUM ) = value;
   5.288  }
   5.289 +
   5.290 +
   5.291 +long chksum_pcir_get_offset( byte* data, long offset ) {
   5.292 +
   5.293 +  long result = -1L;
   5.294 +
   5.295 +  while ((offset + PCIR_LEN) < (bios_len - 1)) {
   5.296 +    offset = offset + 1;
   5.297 +    if( *( data + offset + 0 ) == 'P' && \
   5.298 +        *( data + offset + 1 ) == 'C' && \
   5.299 +        *( data + offset + 2 ) == 'I' && \
   5.300 +        *( data + offset + 3 ) == 'R' ) {
   5.301 +      result = offset;
   5.302 +      break;
   5.303 +    }
   5.304 +  }
   5.305 +  return( result );
   5.306 +}
     6.1 --- a/tools/firmware/vgabios/clext.c	Fri Jul 04 12:39:18 2008 +0100
     6.2 +++ b/tools/firmware/vgabios/clext.c	Fri Jul 04 13:02:31 2008 +0100
     6.3 @@ -239,6 +239,21 @@ 0x001a,0x321b,0x001d,
     6.4  0xffff
     6.5  };
     6.6  
     6.7 +/* 1600x1200x8 */
     6.8 +unsigned short cseq_1600x1200x8[] = {
     6.9 +0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1107,
    6.10 +0x760b,0x760c,0x760d,0x760e,
    6.11 +0x0412,0x0013,0x2017,
    6.12 +0x341b,0x341c,0x341d,0x341e,
    6.13 +0xffff
    6.14 +};
    6.15 +unsigned short ccrtc_1600x1200x8[] = {
    6.16 +0x2911,0xc300,0x9f01,0x9f02,0x8603,0x8304,0x9405,0x2406,0xf707,
    6.17 +0x6009,0x000c,0x000d,
    6.18 +0x0310,0xff12,0xa013,0x4014,0xff15,0x2416,0xc317,0xff18,
    6.19 +0x001a,0x221b,0x001d,
    6.20 +0xffff
    6.21 +};
    6.22  
    6.23  cirrus_mode_t cirrus_modes[] =
    6.24  {
    6.25 @@ -292,6 +307,10 @@ cirrus_mode_t cirrus_modes[] =
    6.26     cseq_1280x1024x16,cgraph_svgacolor,ccrtc_1280x1024x16,16,
    6.27     6,5,11,6,5,5,0,0,0},
    6.28  
    6.29 + {0x7b,1600,1200,8,0x00,
    6.30 +   cseq_1600x1200x8,cgraph_svgacolor,ccrtc_1600x1200x8,8,
    6.31 +   4,0,0,0,0,0,0,0,0},
    6.32 +
    6.33   {0xfe,0,0,0,0,cseq_vga,cgraph_vga,ccrtc_vga,0,
    6.34     0xff,0,0,0,0,0,0,0,0},
    6.35   {0xff,0,0,0,0,0,0,0,0,
    6.36 @@ -1561,6 +1580,10 @@ cirrus_clear_vram_1:
    6.37    cmp ah, bl
    6.38    jne cirrus_clear_vram_1
    6.39  
    6.40 +  xor ah,ah
    6.41 +  mov dx, #0x3ce
    6.42 +  out dx, ax
    6.43 +
    6.44    pop es
    6.45    popa
    6.46    ret
    6.47 @@ -1652,6 +1675,7 @@ cirrus_vesa_handlers:
    6.48    dw cirrus_vesa_10h
    6.49  
    6.50  
    6.51 +
    6.52  ASM_END
    6.53  
    6.54  #ifdef CIRRUS_VESA3_PMINFO
     7.1 --- a/tools/firmware/vgabios/vbe.c	Fri Jul 04 12:39:18 2008 +0100
     7.2 +++ b/tools/firmware/vgabios/vbe.c	Fri Jul 04 13:02:31 2008 +0100
     7.3 @@ -30,19 +30,15 @@
     7.4  
     7.5  
     7.6  // defines available
     7.7 -// enable LFB support
     7.8 -#define VBE_HAVE_LFB
     7.9  
    7.10  // disable VESA/VBE2 check in vbe info
    7.11  //#define VBE2_NO_VESA_CHECK
    7.12  
    7.13 -// dynamicly generate a mode_info list
    7.14 -#define DYN_LIST
    7.15 -
    7.16  
    7.17  #include "vbe.h"
    7.18  #include "vbetables.h"
    7.19  
    7.20 +#define VBE_TOTAL_VIDEO_MEMORY_DIV_64K (VBE_DISPI_TOTAL_VIDEO_MEMORY_MB*1024/64)
    7.21  
    7.22  // The current OEM Software Revision of this VBE Bios
    7.23  #define VBE_OEM_SOFTWARE_REV 0x0002;
    7.24 @@ -52,10 +48,6 @@ extern char vbebios_vendor_name;
    7.25  extern char vbebios_product_name;
    7.26  extern char vbebios_product_revision;
    7.27  
    7.28 -#ifndef DYN_LIST
    7.29 -extern Bit16u vbebios_mode_list;
    7.30 -#endif
    7.31 -
    7.32  ASM_START
    7.33  // FIXME: 'merge' these (c) etc strings with the vgabios.c strings?
    7.34  _vbebios_copyright:
    7.35 @@ -71,7 +63,7 @@ ASM_START
    7.36  .byte        0x00
    7.37  
    7.38  _vbebios_product_revision:
    7.39 -.ascii       "$Id: vbe.c,v 1.47 2005/05/24 16:50:50 vruppert Exp $"
    7.40 +.ascii       "$Id: vbe.c,v 1.60 2008/03/02 07:47:21 vruppert Exp $"
    7.41  .byte        0x00
    7.42  
    7.43  _vbebios_info_string:
    7.44 @@ -88,35 +80,143 @@ ASM_START
    7.45  
    7.46  #if defined(USE_BX_INFO) || defined(DEBUG)
    7.47  msg_vbe_init:
    7.48 -.ascii      "VBE Bios $Id: vbe.c,v 1.47 2005/05/24 16:50:50 vruppert Exp $"
    7.49 +.ascii      "VBE Bios $Id: vbe.c,v 1.60 2008/03/02 07:47:21 vruppert Exp $"
    7.50  .byte	0x0a,0x0d, 0x00
    7.51  #endif
    7.52  
    7.53 -#ifndef DYN_LIST
    7.54 -// FIXME: for each new mode add a statement here
    7.55 -//        at least until dynamic list creation is working
    7.56 -_vbebios_mode_list:
    7.57 +  .align 2
    7.58 +vesa_pm_start:
    7.59 +  dw vesa_pm_set_window - vesa_pm_start
    7.60 +  dw vesa_pm_set_display_start - vesa_pm_start
    7.61 +  dw vesa_pm_unimplemented - vesa_pm_start
    7.62 +  dw vesa_pm_io_ports_table - vesa_pm_start
    7.63 +vesa_pm_io_ports_table:
    7.64 +  dw VBE_DISPI_IOPORT_INDEX
    7.65 +  dw VBE_DISPI_IOPORT_INDEX + 1
    7.66 +  dw VBE_DISPI_IOPORT_DATA
    7.67 +  dw VBE_DISPI_IOPORT_DATA + 1
    7.68 +  dw 0xffff
    7.69 +  dw 0xffff
    7.70 +
    7.71 +  USE32
    7.72 +vesa_pm_set_window:
    7.73 +  cmp  bx, #0x00
    7.74 +  je  vesa_pm_set_display_window1
    7.75 +  mov  ax, #0x0100
    7.76 +  ret
    7.77 +vesa_pm_set_display_window1:
    7.78 +  mov  ax, dx
    7.79 +  push dx
    7.80 +  push ax
    7.81 +  mov  dx, # VBE_DISPI_IOPORT_INDEX
    7.82 +  mov  ax, # VBE_DISPI_INDEX_BANK
    7.83 +  out  dx, ax
    7.84 +  pop  ax
    7.85 +  mov  dx, # VBE_DISPI_IOPORT_DATA
    7.86 +  out  dx, ax
    7.87 +  in   ax, dx
    7.88 +  pop  dx
    7.89 +  cmp  dx, ax
    7.90 +  jne  illegal_window
    7.91 +  mov  ax, #0x004f
    7.92 +  ret
    7.93 +illegal_window:
    7.94 +  mov  ax, #0x014f
    7.95 +  ret
    7.96 +
    7.97 +vesa_pm_set_display_start:
    7.98 +  cmp  bl, #0x80
    7.99 +  je   vesa_pm_set_display_start1
   7.100 +  cmp  bl, #0x00
   7.101 +  je   vesa_pm_set_display_start1
   7.102 +  mov  ax, #0x0100
   7.103 +  ret
   7.104 +vesa_pm_set_display_start1:
   7.105 +; convert offset to (X, Y) coordinate 
   7.106 +; (would be simpler to change Bochs VBE API...)
   7.107 +  push eax
   7.108 +  push ecx
   7.109 +  push edx
   7.110 +  push esi
   7.111 +  push edi
   7.112 +  shl edx, #16
   7.113 +  and ecx, #0xffff
   7.114 +  or ecx, edx
   7.115 +  shl ecx, #2
   7.116 +  mov eax, ecx
   7.117  
   7.118 -.word VBE_VESA_MODE_640X400X8
   7.119 -.word VBE_VESA_MODE_640X480X8
   7.120 -.word VBE_VESA_MODE_800X600X4
   7.121 -.word VBE_VESA_MODE_800X600X8
   7.122 -.word VBE_VESA_MODE_1024X768X8
   7.123 -.word VBE_VESA_MODE_640X480X1555
   7.124 -.word VBE_VESA_MODE_640X480X565
   7.125 -.word VBE_VESA_MODE_640X480X888
   7.126 -.word VBE_VESA_MODE_800X600X1555
   7.127 -.word VBE_VESA_MODE_800X600X565
   7.128 -.word VBE_VESA_MODE_800X600X888
   7.129 -.word VBE_VESA_MODE_1024X768X1555
   7.130 -.word VBE_VESA_MODE_1024X768X565
   7.131 -.word VBE_VESA_MODE_1024X768X888
   7.132 -.word VBE_OWN_MODE_640X480X8888
   7.133 -.word VBE_OWN_MODE_800X600X8888
   7.134 -.word VBE_OWN_MODE_1024X768X8888
   7.135 -.word VBE_OWN_MODE_320X200X8
   7.136 -.word VBE_VESA_MODE_END_OF_LIST
   7.137 -#endif
   7.138 +  push eax
   7.139 +  mov  dx, # VBE_DISPI_IOPORT_INDEX
   7.140 +  mov  ax, # VBE_DISPI_INDEX_VIRT_WIDTH
   7.141 +  out  dx, ax
   7.142 +  mov  dx, # VBE_DISPI_IOPORT_DATA
   7.143 +  in   ax, dx
   7.144 +  movzx ecx, ax
   7.145 +
   7.146 +  mov  dx, # VBE_DISPI_IOPORT_INDEX
   7.147 +  mov  ax, # VBE_DISPI_INDEX_BPP
   7.148 +  out  dx, ax
   7.149 +  mov  dx, # VBE_DISPI_IOPORT_DATA
   7.150 +  in   ax, dx
   7.151 +  movzx esi, ax
   7.152 +  pop  eax
   7.153 +
   7.154 +  cmp esi, #4
   7.155 +  jz bpp4_mode
   7.156 +  add esi, #7
   7.157 +  shr esi, #3
   7.158 +  imul ecx, esi
   7.159 +  xor edx, edx
   7.160 +  div ecx
   7.161 +  mov edi, eax
   7.162 +  mov eax, edx
   7.163 +  xor edx, edx
   7.164 +  div esi
   7.165 +  jmp set_xy_regs
   7.166 +
   7.167 +bpp4_mode:
   7.168 +  shr ecx, #1
   7.169 +  xor edx, edx
   7.170 +  div ecx
   7.171 +  mov edi, eax
   7.172 +  mov eax, edx
   7.173 +  shl eax, #1
   7.174 +
   7.175 +set_xy_regs:
   7.176 +  push dx
   7.177 +  push ax
   7.178 +  mov  dx, # VBE_DISPI_IOPORT_INDEX
   7.179 +  mov  ax, # VBE_DISPI_INDEX_X_OFFSET
   7.180 +  out  dx, ax
   7.181 +  pop  ax
   7.182 +  mov  dx, # VBE_DISPI_IOPORT_DATA
   7.183 +  out  dx, ax
   7.184 +  pop  dx
   7.185 +
   7.186 +  mov  ax, di
   7.187 +  push dx
   7.188 +  push ax
   7.189 +  mov  dx, # VBE_DISPI_IOPORT_INDEX
   7.190 +  mov  ax, # VBE_DISPI_INDEX_Y_OFFSET
   7.191 +  out  dx, ax
   7.192 +  pop  ax
   7.193 +  mov  dx, # VBE_DISPI_IOPORT_DATA
   7.194 +  out  dx, ax
   7.195 +  pop  dx
   7.196 +
   7.197 +  pop edi
   7.198 +  pop esi
   7.199 +  pop edx
   7.200 +  pop ecx
   7.201 +  pop eax
   7.202 +  mov  ax, #0x004f
   7.203 +  ret
   7.204 +
   7.205 +vesa_pm_unimplemented:
   7.206 +  mov ax, #0x014f
   7.207 +  ret
   7.208 +  USE16
   7.209 +vesa_pm_end:
   7.210  
   7.211  ; DISPI ioport functions
   7.212  
   7.213 @@ -158,20 +258,6 @@ ASM_START
   7.214    mov  dx, # VBE_DISPI_IOPORT_DATA
   7.215    mov  ax, 4[bp] ; xres
   7.216    out  dx, ax
   7.217 -  push ax
   7.218 -  mov  dx, #0x03d4
   7.219 -  mov  ax, #0x0011
   7.220 -  out  dx, ax
   7.221 -  mov  dx, #0x03d4
   7.222 -  pop  ax
   7.223 -  push ax
   7.224 -  shr  ax, #3
   7.225 -  dec  ax
   7.226 -  mov  ah, al
   7.227 -  mov  al, #0x01
   7.228 -  out  dx, ax
   7.229 -  pop  ax
   7.230 -  call vga_set_virt_width
   7.231  
   7.232    pop  dx
   7.233    pop  ax
   7.234 @@ -211,6 +297,28 @@ get_bpp_noinc:
   7.235    pop  dx
   7.236    ret
   7.237  
   7.238 +; get display capabilities
   7.239 +
   7.240 +_dispi_get_max_xres:
   7.241 +  push dx
   7.242 +  push bx
   7.243 +  call dispi_get_enable
   7.244 +  mov  bx, ax
   7.245 +  or   ax, # VBE_DISPI_GETCAPS
   7.246 +  call _dispi_set_enable
   7.247 +  mov  dx, # VBE_DISPI_IOPORT_INDEX
   7.248 +  mov  ax, # VBE_DISPI_INDEX_XRES
   7.249 +  out  dx, ax
   7.250 +  mov  dx, # VBE_DISPI_IOPORT_DATA
   7.251 +  in   ax, dx
   7.252 +  push ax
   7.253 +  mov  ax, bx
   7.254 +  call _dispi_set_enable
   7.255 +  pop  ax
   7.256 +  pop  bx
   7.257 +  pop  dx
   7.258 +  ret
   7.259 +
   7.260  _dispi_get_max_bpp:
   7.261    push dx
   7.262    push bx
   7.263 @@ -283,13 +391,20 @@ ASM_START
   7.264    je dispi_set_bank_farcall_get
   7.265    or bx,bx
   7.266    jnz dispi_set_bank_farcall_error
   7.267 +  mov ax,dx
   7.268    push dx
   7.269 +  push ax
   7.270    mov ax,# VBE_DISPI_INDEX_BANK
   7.271    mov dx,# VBE_DISPI_IOPORT_INDEX
   7.272    out dx,ax
   7.273    pop ax
   7.274    mov dx,# VBE_DISPI_IOPORT_DATA
   7.275    out dx,ax
   7.276 +  in  ax,dx
   7.277 +  pop dx
   7.278 +  cmp dx,ax
   7.279 +  jne dispi_set_bank_farcall_error
   7.280 +  mov ax, #0x004f
   7.281    retf
   7.282  dispi_set_bank_farcall_get:
   7.283    mov ax,# VBE_DISPI_INDEX_BANK
   7.284 @@ -358,10 +473,10 @@ vga_set_virt_width:
   7.285    call dispi_get_bpp
   7.286    cmp  al, #0x04
   7.287    ja   set_width_svga
   7.288 -  shr  bx, #2
   7.289 +  shr  bx, #1
   7.290  set_width_svga:
   7.291 -  shr  bx, #2
   7.292 -  mov  dx, #0x03d4
   7.293 +  shr  bx, #3
   7.294 +  mov  dx, # VGAREG_VGA_CRTC_ADDRESS
   7.295    mov  ah, bl
   7.296    mov  al, #0x13
   7.297    out  dx, ax
   7.298 @@ -402,6 +517,134 @@ dispi_get_virt_height:
   7.299    in   ax, dx
   7.300    pop  dx
   7.301    ret
   7.302 +
   7.303 +_vga_compat_setup:
   7.304 +  push ax
   7.305 +  push dx
   7.306 +
   7.307 +  ; set CRT X resolution
   7.308 +  mov  dx, # VBE_DISPI_IOPORT_INDEX
   7.309 +  mov  ax, # VBE_DISPI_INDEX_XRES
   7.310 +  out  dx, ax
   7.311 +  mov  dx, # VBE_DISPI_IOPORT_DATA
   7.312 +  in   ax, dx
   7.313 +  push ax
   7.314 +  mov  dx, # VGAREG_VGA_CRTC_ADDRESS
   7.315 +  mov  ax, #0x0011
   7.316 +  out  dx, ax
   7.317 +  pop  ax
   7.318 +  push ax
   7.319 +  shr  ax, #3
   7.320 +  dec  ax
   7.321 +  mov  ah, al
   7.322 +  mov  al, #0x01
   7.323 +  out  dx, ax
   7.324 +  pop  ax
   7.325 +  call vga_set_virt_width
   7.326 +
   7.327 +  ; set CRT Y resolution
   7.328 +  mov  dx, # VBE_DISPI_IOPORT_INDEX
   7.329 +  mov  ax, # VBE_DISPI_INDEX_YRES
   7.330 +  out  dx, ax
   7.331 +  mov  dx, # VBE_DISPI_IOPORT_DATA
   7.332 +  in   ax, dx
   7.333 +  dec  ax
   7.334 +  push ax
   7.335 +  mov  dx, # VGAREG_VGA_CRTC_ADDRESS
   7.336 +  mov  ah, al
   7.337 +  mov  al, #0x12
   7.338 +  out  dx, ax
   7.339 +  pop  ax
   7.340 +  mov  al, #0x07
   7.341 +  out  dx, al
   7.342 +  inc  dx
   7.343 +  in   al, dx
   7.344 +  and  al, #0xbd
   7.345 +  test ah, #0x01
   7.346 +  jz   bit8_clear
   7.347 +  or   al, #0x02
   7.348 +bit8_clear:
   7.349 +  test ah, #0x02
   7.350 +  jz   bit9_clear
   7.351 +  or   al, #0x40
   7.352 +bit9_clear:
   7.353 +  out  dx, al
   7.354 +
   7.355 +  ; other settings
   7.356 +  mov  dx, # VGAREG_VGA_CRTC_ADDRESS
   7.357 +  mov  ax, #0x0009
   7.358 +  out  dx, ax
   7.359 +  mov  al, #0x17
   7.360 +  out  dx, al
   7.361 +  mov  dx, # VGAREG_VGA_CRTC_DATA
   7.362 +  in   al, dx
   7.363 +  or   al, #0x03
   7.364 +  out  dx, al
   7.365 +  mov  dx, # VGAREG_ACTL_RESET
   7.366 +  in   al, dx
   7.367 +  mov  dx, # VGAREG_ACTL_ADDRESS
   7.368 +  mov  al, #0x10
   7.369 +  out  dx, al
   7.370 +  mov  dx, # VGAREG_ACTL_READ_DATA
   7.371 +  in   al, dx
   7.372 +  or   al, #0x01
   7.373 +  mov  dx, # VGAREG_ACTL_ADDRESS
   7.374 +  out  dx, al
   7.375 +  mov  al, #0x20
   7.376 +  out  dx, al
   7.377 +  mov  dx, # VGAREG_GRDC_ADDRESS
   7.378 +  mov  ax, #0x0506
   7.379 +  out  dx, ax
   7.380 +  mov  dx, # VGAREG_SEQU_ADDRESS
   7.381 +  mov  ax, #0x0f02
   7.382 +  out  dx, ax
   7.383 +
   7.384 +  ; settings for >= 8bpp
   7.385 +  mov  dx, # VBE_DISPI_IOPORT_INDEX
   7.386 +  mov  ax, # VBE_DISPI_INDEX_BPP
   7.387 +  out  dx, ax
   7.388 +  mov  dx, # VBE_DISPI_IOPORT_DATA
   7.389 +  in   ax, dx
   7.390 +  cmp  al, #0x08
   7.391 +  jb   vga_compat_end
   7.392 +  mov  dx, # VGAREG_VGA_CRTC_ADDRESS
   7.393 +  mov  al, #0x14
   7.394 +  out  dx, al
   7.395 +  mov  dx, # VGAREG_VGA_CRTC_DATA
   7.396 +  in   al, dx
   7.397 +  or   al, #0x40
   7.398 +  out  dx, al
   7.399 +  mov  dx, # VGAREG_ACTL_RESET
   7.400 +  in   al, dx
   7.401 +  mov  dx, # VGAREG_ACTL_ADDRESS
   7.402 +  mov  al, #0x10
   7.403 +  out  dx, al
   7.404 +  mov  dx, # VGAREG_ACTL_READ_DATA
   7.405 +  in   al, dx
   7.406 +  or   al, #0x40
   7.407 +  mov  dx, # VGAREG_ACTL_ADDRESS
   7.408 +  out  dx, al
   7.409 +  mov  al, #0x20
   7.410 +  out  dx, al
   7.411 +  mov  dx, # VGAREG_SEQU_ADDRESS
   7.412 +  mov  al, #0x04
   7.413 +  out  dx, al
   7.414 +  mov  dx, # VGAREG_SEQU_DATA
   7.415 +  in   al, dx
   7.416 +  or   al, #0x08
   7.417 +  out  dx, al
   7.418 +  mov  dx, # VGAREG_GRDC_ADDRESS
   7.419 +  mov  al, #0x05
   7.420 +  out  dx, al
   7.421 +  mov  dx, # VGAREG_GRDC_DATA
   7.422 +  in   al, dx
   7.423 +  and  al, #0x9f
   7.424 +  or   al, #0x40
   7.425 +  out  dx, al
   7.426 +
   7.427 +vga_compat_end:
   7.428 +  pop  dx
   7.429 +  pop  ax
   7.430  ASM_END
   7.431  
   7.432  
   7.433 @@ -472,7 +715,7 @@ vbe_init:
   7.434    mov  [bx], al
   7.435    pop  bx
   7.436    pop  ds
   7.437 -  mov  ax, # VBE_DISPI_ID3
   7.438 +  mov  ax, # VBE_DISPI_ID4
   7.439    call dispi_set_id
   7.440  no_vbe_interface:
   7.441  #if defined(USE_BX_INFO) || defined(DEBUG)
   7.442 @@ -573,15 +816,9 @@ Bit16u *AX;Bit16u ES;Bit16u DI;
   7.443          vbe_info_block.Capabilities[2] = 0;
   7.444          vbe_info_block.Capabilities[3] = 0;
   7.445  
   7.446 -#ifdef DYN_LIST
   7.447          // VBE Video Mode Pointer (dynamicly generated from the mode_info_list)
   7.448          vbe_info_block.VideoModePtr_Seg= ES ;
   7.449          vbe_info_block.VideoModePtr_Off= DI + 34;
   7.450 -#else
   7.451 -        // VBE Video Mode Pointer (staticly in rom)
   7.452 -        vbe_info_block.VideoModePtr_Seg = 0xc000;
   7.453 -        vbe_info_block.VideoModePtr_Off = &vbebios_mode_list;
   7.454 -#endif
   7.455  
   7.456          // VBE Total Memory (in 64b blocks)
   7.457          vbe_info_block.TotalMemory = VBE_TOTAL_VIDEO_MEMORY_DIV_64K;
   7.458 @@ -606,23 +843,26 @@ Bit16u *AX;Bit16u ES;Bit16u DI;
   7.459                  memcpyb(ES, DI, ss, &vbe_info_block, 256);
   7.460  	}
   7.461                  
   7.462 -#ifdef DYN_LIST
   7.463          do
   7.464          {
   7.465 -                if (cur_info->info.BitsPerPixel <= dispi_get_max_bpp()) {
   7.466 +                if ((cur_info->info.XResolution <= dispi_get_max_xres()) &&
   7.467 +                    (cur_info->info.BitsPerPixel <= dispi_get_max_bpp())) {
   7.468  #ifdef DEBUG
   7.469                    printf("VBE found mode %x => %x\n", cur_info->mode,cur_mode);
   7.470  #endif
   7.471                    write_word(ES, DI + cur_ptr, cur_info->mode);
   7.472                    cur_mode++;
   7.473                    cur_ptr+=2;
   7.474 +                } else {
   7.475 +#ifdef DEBUG
   7.476 +                  printf("VBE mode %x (xres=%x / bpp=%02x) not supported by display\n", cur_info->mode,cur_info->info.XResolution,cur_info->info.BitsPerPixel);
   7.477 +#endif
   7.478                  }
   7.479                  cur_info++;
   7.480          } while (cur_info->mode != VBE_VESA_MODE_END_OF_LIST);
   7.481          
   7.482          // Add vesa mode list terminator
   7.483          write_word(ES, DI + cur_ptr, cur_info->mode);
   7.484 -#endif
   7.485  
   7.486          result = 0x4f;
   7.487  
   7.488 @@ -666,6 +906,9 @@ Bit16u *AX;Bit16u CX; Bit16u ES;Bit16u D
   7.489  #endif        
   7.490                  memsetb(ss, &info, 0, sizeof(ModeInfoBlock));
   7.491                  memcpyb(ss, &info, 0xc000, &(cur_info->info), sizeof(ModeInfoBlockCompact));
   7.492 +                if (using_lfb) {
   7.493 +                  info.NumberOfBanks = 1;
   7.494 +                }
   7.495                  if (info.WinAAttributes & VBE_WINDOW_ATTRIBUTE_RELOCATABLE) {
   7.496                    info.WinFuncPtr = 0xC0000000UL;
   7.497                    *(Bit16u *)&(info.WinFuncPtr) = (Bit16u)(dispi_set_bank_farcall);
   7.498 @@ -747,7 +990,7 @@ Bit16u *AX;Bit16u BX; Bit16u ES;Bit16u D
   7.499                  // first disable current mode (when switching between vesa modi)
   7.500                  dispi_set_enable(VBE_DISPI_DISABLED);
   7.501  
   7.502 -                if (cur_info->mode == VBE_VESA_MODE_800X600X4)
   7.503 +                if (cur_info->info.BitsPerPixel == 4)
   7.504                  {
   7.505                    biosfn_set_video_mode(0x6a);
   7.506                  }
   7.507 @@ -757,6 +1000,7 @@ Bit16u *AX;Bit16u BX; Bit16u ES;Bit16u D
   7.508                  dispi_set_yres(cur_info->info.YResolution);
   7.509                  dispi_set_bank(0);
   7.510                  dispi_set_enable(VBE_DISPI_ENABLED | no_clear | lfb_flag);
   7.511 +                vga_compat_setup();
   7.512  
   7.513                  write_word(BIOSMEM_SEG,BIOSMEM_VBE_MODE,BX);
   7.514                  write_byte(BIOSMEM_SEG,BIOSMEM_VIDEO_CTL,(0x60 | no_clear));
   7.515 @@ -812,6 +1056,64 @@ vbe_03_ok:
   7.516  ASM_END
   7.517  
   7.518  
   7.519 +Bit16u vbe_biosfn_read_video_state_size()
   7.520 +{
   7.521 +    return 9 * 2;
   7.522 +}
   7.523 +
   7.524 +void vbe_biosfn_save_video_state(ES, BX)
   7.525 +     Bit16u ES; Bit16u BX;
   7.526 +{
   7.527 +    Bit16u enable, i;
   7.528 +
   7.529 +    outw(VBE_DISPI_IOPORT_INDEX,VBE_DISPI_INDEX_ENABLE);
   7.530 +    enable = inw(VBE_DISPI_IOPORT_DATA);
   7.531 +    write_word(ES, BX, enable);
   7.532 +    BX += 2;
   7.533 +    if (!(enable & VBE_DISPI_ENABLED)) 
   7.534 +        return;
   7.535 +    for(i = VBE_DISPI_INDEX_XRES; i <= VBE_DISPI_INDEX_Y_OFFSET; i++) {
   7.536 +        if (i != VBE_DISPI_INDEX_ENABLE) {
   7.537 +            outw(VBE_DISPI_IOPORT_INDEX, i);
   7.538 +            write_word(ES, BX, inw(VBE_DISPI_IOPORT_DATA));
   7.539 +            BX += 2;
   7.540 +        }
   7.541 +    }
   7.542 +}
   7.543 +
   7.544 +
   7.545 +void vbe_biosfn_restore_video_state(ES, BX)
   7.546 +     Bit16u ES; Bit16u BX;
   7.547 +{
   7.548 +    Bit16u enable, i;
   7.549 +
   7.550 +    enable = read_word(ES, BX);
   7.551 +    BX += 2;
   7.552 +    
   7.553 +    if (!(enable & VBE_DISPI_ENABLED)) {
   7.554 +        outw(VBE_DISPI_IOPORT_INDEX,VBE_DISPI_INDEX_ENABLE);
   7.555 +        outw(VBE_DISPI_IOPORT_DATA, enable);
   7.556 +    } else {
   7.557 +        outw(VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_XRES);
   7.558 +        outw(VBE_DISPI_IOPORT_DATA, read_word(ES, BX));
   7.559 +        BX += 2;
   7.560 +        outw(VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_YRES);
   7.561 +        outw(VBE_DISPI_IOPORT_DATA, read_word(ES, BX));
   7.562 +        BX += 2;
   7.563 +        outw(VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_BPP);
   7.564 +        outw(VBE_DISPI_IOPORT_DATA, read_word(ES, BX));
   7.565 +        BX += 2;
   7.566 +        outw(VBE_DISPI_IOPORT_INDEX,VBE_DISPI_INDEX_ENABLE);
   7.567 +        outw(VBE_DISPI_IOPORT_DATA, enable);
   7.568 +
   7.569 +        for(i = VBE_DISPI_INDEX_BANK; i <= VBE_DISPI_INDEX_Y_OFFSET; i++) {
   7.570 +            outw(VBE_DISPI_IOPORT_INDEX, i);
   7.571 +            outw(VBE_DISPI_IOPORT_DATA, read_word(ES, BX));
   7.572 +            BX += 2;
   7.573 +        }
   7.574 +    }
   7.575 +}
   7.576 +
   7.577  /** Function 04h - Save/Restore State
   7.578   * 
   7.579   * Input:
   7.580 @@ -826,11 +1128,49 @@ ASM_END
   7.581   *              BX      = Number of 64-byte blocks to hold the state buffer (if DL=00h)
   7.582   * 
   7.583   */
   7.584 -void vbe_biosfn_save_restore_state(AX, DL, CX, ES, BX)
   7.585 +void vbe_biosfn_save_restore_state(AX, CX, DX, ES, BX)
   7.586 +Bit16u *AX; Bit16u CX; Bit16u DX; Bit16u ES; Bit16u *BX;
   7.587  {
   7.588 +    Bit16u ss=get_SS();
   7.589 +    Bit16u result, val;
   7.590 +
   7.591 +    result = 0x4f;
   7.592 +    switch(GET_DL()) {
   7.593 +    case 0x00:
   7.594 +        val = biosfn_read_video_state_size2(CX);
   7.595 +#ifdef DEBUG
   7.596 +        printf("VGA state size=%x\n", val);
   7.597 +#endif
   7.598 +        if (CX & 8)
   7.599 +            val += vbe_biosfn_read_video_state_size();
   7.600 +        write_word(ss, BX, val);
   7.601 +        break;
   7.602 +    case 0x01:
   7.603 +        val = read_word(ss, BX);
   7.604 +        val = biosfn_save_video_state(CX, ES, val);
   7.605 +#ifdef DEBUG
   7.606 +        printf("VGA save_state offset=%x\n", val);
   7.607 +#endif
   7.608 +        if (CX & 8)
   7.609 +            vbe_biosfn_save_video_state(ES, val);
   7.610 +        break;
   7.611 +    case 0x02:
   7.612 +        val = read_word(ss, BX);
   7.613 +        val = biosfn_restore_video_state(CX, ES, val);
   7.614 +#ifdef DEBUG
   7.615 +        printf("VGA restore_state offset=%x\n", val);
   7.616 +#endif
   7.617 +        if (CX & 8)
   7.618 +            vbe_biosfn_restore_video_state(ES, val);
   7.619 +        break;
   7.620 +    default:
   7.621 +        // function failed
   7.622 +        result = 0x100;
   7.623 +        break;
   7.624 +    }
   7.625 +    write_word(ss, AX, result);
   7.626  }
   7.627  
   7.628 -
   7.629  /** Function 05h - Display Window Control
   7.630   * 
   7.631   * Input:
   7.632 @@ -913,6 +1253,11 @@ set_logical_scan_line_bytes:
   7.633    call dispi_get_bpp
   7.634    xor  bh, bh
   7.635    mov  bl, ah
   7.636 +  or   bl, bl
   7.637 +  jnz  no_4bpp_1
   7.638 +  shl  ax, #3
   7.639 +  mov  bl, #1
   7.640 +no_4bpp_1:
   7.641    xor  dx, dx
   7.642    pop  ax
   7.643    div  bx
   7.644 @@ -924,6 +1269,11 @@ get_logical_scan_line_length:
   7.645    mov  bl, ah
   7.646    call dispi_get_virt_width
   7.647    mov  cx, ax
   7.648 +  or   bl, bl
   7.649 +  jnz  no_4bpp_2
   7.650 +  shr  ax, #3
   7.651 +  mov  bl, #1
   7.652 +no_4bpp_2:
   7.653    mul  bx
   7.654    mov  bx, ax
   7.655    call dispi_get_virt_height
   7.656 @@ -1055,14 +1405,28 @@ void vbe_biosfn_set_get_palette_data(AX)
   7.657  }
   7.658  
   7.659  /** Function 0Ah - Return VBE Protected Mode Interface
   7.660 - * 
   7.661 - * Input:
   7.662 - *              AX      = 4F0Ah
   7.663 - * Output:
   7.664 - *              AX      = VBE Return Status
   7.665 + * Input:    AX   = 4F0Ah   VBE 2.0 Protected Mode Interface
   7.666 + *           BL   = 00h          Return protected mode table
   7.667 + *
   7.668   *
   7.669 - * FIXME: incomplete API description, Input & Output
   7.670 + * Output:   AX   =         Status
   7.671 + *           ES   =         Real Mode Segment of Table
   7.672 + *           DI   =         Offset of Table
   7.673 + *           CX   =         Length of Table including protected mode code
   7.674 + *                          (for copying purposes)
   7.675   */
   7.676 -void vbe_biosfn_return_protected_mode_interface(AX)
   7.677 -{
   7.678 -}
   7.679 +ASM_START
   7.680 +vbe_biosfn_return_protected_mode_interface:
   7.681 +  test bl, bl
   7.682 +  jnz _fail
   7.683 +  mov di, #0xc000
   7.684 +  mov es, di
   7.685 +  mov di, # vesa_pm_start
   7.686 +  mov cx, # vesa_pm_end
   7.687 +  sub cx, di
   7.688 +  mov ax, #0x004f
   7.689 +  ret
   7.690 +_fail:
   7.691 +  mov ax, #0x014f
   7.692 +  ret
   7.693 +ASM_END
     8.1 --- a/tools/firmware/vgabios/vbe.h	Fri Jul 04 12:39:18 2008 +0100
     8.2 +++ b/tools/firmware/vgabios/vbe.h	Fri Jul 04 13:02:31 2008 +0100
     8.3 @@ -14,7 +14,7 @@ Boolean vbe_has_vbe_display();
     8.4  void vbe_biosfn_return_controller_information(AX, ES, DI);
     8.5  void vbe_biosfn_return_mode_information(AX, CX, ES, DI);
     8.6  void vbe_biosfn_set_mode(AX, BX, ES, DI);
     8.7 -void vbe_biosfn_save_restore_state(AX, DL, CX, ES, BX); 
     8.8 +void vbe_biosfn_save_restore_state(AX, CX, DX, ES, BX);
     8.9  void vbe_biosfn_set_get_palette_data(AX);
    8.10  void vbe_biosfn_return_protected_mode_interface(AX);
    8.11  
    8.12 @@ -151,6 +151,12 @@ typedef struct ModeInfoBlock
    8.13     Bit8u  Reserved[189];
    8.14  } ModeInfoBlock;
    8.15  
    8.16 +typedef struct ModeInfoListItem
    8.17 +{
    8.18 +  Bit16u                mode;
    8.19 +  ModeInfoBlockCompact  info;
    8.20 +} ModeInfoListItem;
    8.21 +
    8.22  // VBE Return Status Info
    8.23  // AL
    8.24  #define VBE_RETURN_STATUS_SUPPORTED                      0x4F
    8.25 @@ -193,6 +199,10 @@ typedef struct ModeInfoBlock
    8.26  #define VBE_VESA_MODE_1280X1024X1555                     0x119
    8.27  #define VBE_VESA_MODE_1280X1024X565                      0x11A
    8.28  #define VBE_VESA_MODE_1280X1024X888                      0x11B
    8.29 +#define VBE_VESA_MODE_1600X1200X8                        0x11C
    8.30 +#define VBE_VESA_MODE_1600X1200X1555                     0x11D
    8.31 +#define VBE_VESA_MODE_1600X1200X565                      0x11E
    8.32 +#define VBE_VESA_MODE_1600X1200X888                      0x11F
    8.33  
    8.34  // BOCHS/PLEX86 'own' mode numbers
    8.35  #define VBE_OWN_MODE_320X200X8888                        0x140
    8.36 @@ -202,6 +212,12 @@ typedef struct ModeInfoBlock
    8.37  #define VBE_OWN_MODE_1024X768X8888                       0x144
    8.38  #define VBE_OWN_MODE_1280X1024X8888                      0x145
    8.39  #define VBE_OWN_MODE_320X200X8                           0x146
    8.40 +#define VBE_OWN_MODE_1600X1200X8888                      0x147
    8.41 +#define VBE_OWN_MODE_1152X864X8                          0x148
    8.42 +#define VBE_OWN_MODE_1152X864X1555                       0x149
    8.43 +#define VBE_OWN_MODE_1152X864X565                        0x14a
    8.44 +#define VBE_OWN_MODE_1152X864X888                        0x14b
    8.45 +#define VBE_OWN_MODE_1152X864X8888                       0x14c
    8.46  
    8.47  #define VBE_VESA_MODE_END_OF_LIST                        0xFFFF
    8.48  
    8.49 @@ -259,8 +275,6 @@ typedef struct ModeInfoBlock
    8.50  //        like 0xE0000000
    8.51  
    8.52  
    8.53 -  #define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 4
    8.54 -
    8.55    #define VBE_DISPI_BANK_ADDRESS          0xA0000
    8.56    #define VBE_DISPI_BANK_SIZE_KB          64
    8.57    
    8.58 @@ -285,6 +299,7 @@ typedef struct ModeInfoBlock
    8.59    #define VBE_DISPI_ID1                   0xB0C1
    8.60    #define VBE_DISPI_ID2                   0xB0C2
    8.61    #define VBE_DISPI_ID3                   0xB0C3
    8.62 +  #define VBE_DISPI_ID4                   0xB0C4
    8.63    
    8.64    #define VBE_DISPI_DISABLED              0x00
    8.65    #define VBE_DISPI_ENABLED               0x01
    8.66 @@ -295,8 +310,4 @@ typedef struct ModeInfoBlock
    8.67    
    8.68    #define VBE_DISPI_LFB_PHYSICAL_ADDRESS  0xE0000000
    8.69  
    8.70 -
    8.71 -#define VBE_TOTAL_VIDEO_MEMORY_DIV_64K                  (VBE_DISPI_TOTAL_VIDEO_MEMORY_MB*1024/64)
    8.72 -
    8.73 -
    8.74  #endif
     9.1 --- a/tools/firmware/vgabios/vbe_display_api.txt	Fri Jul 04 12:39:18 2008 +0100
     9.2 +++ b/tools/firmware/vgabios/vbe_display_api.txt	Fri Jul 04 13:02:31 2008 +0100
     9.3 @@ -4,7 +4,7 @@ VBE Display API
     9.4    it specifies the bochs host <-> vbebios client communication.
     9.5    
     9.6    That means, the display code implementation and the vbebios code depend
     9.7 -  very heavily on each other. As such, this documents needs be synchronised 
     9.8 +  very heavily on each other. As such, this documents needs be synchronised
     9.9    between bochs CVS and the vgabios CVS.
    9.10    
    9.11    This document does not describe how the VBEBios implements the VBE2/3 spec.
    9.12 @@ -12,7 +12,7 @@ VBE Display API
    9.13  
    9.14  
    9.15  API History
    9.16 ------------                
    9.17 +-----------
    9.18  0xb0c0            supports the following VBE_DISPI_ interfaces (present in Bochs 1.4):
    9.19                    VBE_DISPI_INDEX_ID
    9.20                    VBE_DISPI_INDEX_XRES
    9.21 @@ -20,7 +20,7 @@ 0xb0c0            supports the following
    9.22                    VBE_DISPI_INDEX_BPP
    9.23                    VBE_DISPI_INDEX_ENABLE
    9.24                    VBE_DISPI_INDEX_BANK
    9.25 -                  
    9.26 +
    9.27                    Bpp format supported is:
    9.28                    VBE_DISPI_BPP_8
    9.29  
    9.30 @@ -40,13 +40,15 @@ 0xb0c3            supports 0xb0c2 VBE_DI
    9.31                    additional features:
    9.32                    VBE_DISPI_INDEX_ENABLE supports new flags VBE_DISPI_GETCAPS and VBE_DISPI_8BIT_DAC
    9.33  
    9.34 +0xb0c4            VBE video memory increased to 8 MB
    9.35 +
    9.36  
    9.37  History
    9.38  -------
    9.39    Version 0.6     2002 Nov 23  Jeroen Janssen
    9.40                    - Added LFB support
    9.41                    - Added Virt width, height and x,y offset
    9.42 -                  
    9.43 +
    9.44    Version 0.5     2002 March 08   Jeroen Janssen
    9.45                    - Added documentation about panic behaviour / current limits of the data values.
    9.46                    - Changed BPP API (in order to include future (A)RGB formats)
    9.47 @@ -60,16 +62,16 @@ Todo
    9.48    
    9.49  References
    9.50  ----------
    9.51 -  [VBE3]          VBE 3 Specification at 
    9.52 +  [VBE3]          VBE 3 Specification at
    9.53                    http://www.vesa.org/vbe3.pdf
    9.54 -                  
    9.55 -  [BOCHS]         Bochs Open Source IA-32 Emulator at 
    9.56 +
    9.57 +  [BOCHS]         Bochs Open Source IA-32 Emulator at
    9.58                    http://bochs.sourceforge.net
    9.59 -                  
    9.60 -  [VBEBIOS]       VBE Bios for Bochs at 
    9.61 +
    9.62 +  [VBEBIOS]       VBE Bios for Bochs at
    9.63                    http://savannah.gnu.org/projects/vgabios/
    9.64 -                  
    9.65 -  [Screenshots]   Screenshots of programs using the VBE Bios at 
    9.66 +
    9.67 +  [Screenshots]   Screenshots of programs using the VBE Bios at
    9.68                    http://japj.org/projects/bochs_plex86/screenshots.html
    9.69  
    9.70  Abbreviations
    9.71 @@ -82,16 +84,19 @@ Abbreviations
    9.72  
    9.73  #defines
    9.74  --------
    9.75 -  #define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 4
    9.76 +vbetables-gen.c
    9.77 +  #define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 8
    9.78 +
    9.79 +vbe.h
    9.80    #define VBE_DISPI_BANK_ADDRESS          0xA0000
    9.81    #define VBE_DISPI_BANK_SIZE_KB          64
    9.82 -  
    9.83 +
    9.84    #define VBE_DISPI_MAX_XRES              1024
    9.85    #define VBE_DISPI_MAX_YRES              768
    9.86 -  
    9.87 +
    9.88    #define VBE_DISPI_IOPORT_INDEX          0x01CE
    9.89    #define VBE_DISPI_IOPORT_DATA           0x01CF
    9.90 -  
    9.91 +
    9.92    #define VBE_DISPI_INDEX_ID              0x0
    9.93    #define VBE_DISPI_INDEX_XRES            0x1
    9.94    #define VBE_DISPI_INDEX_YRES            0x2
    9.95 @@ -102,21 +107,23 @@ Abbreviations
    9.96    #define VBE_DISPI_INDEX_VIRT_HEIGHT     0x7
    9.97    #define VBE_DISPI_INDEX_X_OFFSET        0x8
    9.98    #define VBE_DISPI_INDEX_Y_OFFSET        0x9
    9.99 -  
   9.100 +
   9.101    #define VBE_DISPI_ID0                   0xB0C0
   9.102    #define VBE_DISPI_ID1                   0xB0C1
   9.103    #define VBE_DISPI_ID2                   0xB0C2
   9.104 -  
   9.105 +  #define VBE_DISPI_ID3                   0xB0C3
   9.106 +  #define VBE_DISPI_ID4                   0xB0C4
   9.107 +
   9.108    #define VBE_DISPI_DISABLED              0x00
   9.109    #define VBE_DISPI_ENABLED               0x01
   9.110    #define VBE_DISPI_VBE_ENABLED           0x40
   9.111    #define VBE_DISPI_NOCLEARMEM            0x80
   9.112 -  
   9.113 +
   9.114    #define VBE_DISPI_LFB_PHYSICAL_ADDRESS  0xE0000000
   9.115  
   9.116  API
   9.117  ---
   9.118 -  The display api works by using a index (VBE_DISPI_IOPORT_INDEX) and 
   9.119 +  The display api works by using a index (VBE_DISPI_IOPORT_INDEX) and
   9.120    data (VBE_DISPI_IOPORT_DATA) ioport. One writes the index of the parameter to the index port.
   9.121    Next, the parameter value can be read or written.
   9.122  
   9.123 @@ -128,41 +135,41 @@ API
   9.124      display code is present.
   9.125      As a result, a PANIC can be generated if an incompatible vbebios/display code combination is detected.
   9.126      This panic can be generated from the bochs display code (NOT the bios, see Notes).
   9.127 -    
   9.128 +
   9.129      Example values: VBE_DISPI_ID0
   9.130 -        
   9.131 +
   9.132    * VBE_DISPI_INDEX_XRES : WORD {R,W}
   9.133      This parameter can be used to read/write the vbe display X resolution (in pixels).
   9.134      It's illegal to set the XRES when the VBE is enabled (display code should generate PANIC).
   9.135 -    
   9.136 +
   9.137      If the value written exceeds VBE_DISPI_MAX_XRES, the display code needs to generate a PANIC.
   9.138 -    
   9.139 +
   9.140      Example values:   320,640,800,1024
   9.141  
   9.142    * VBE_DISPI_INDEX_YRES : WORD {R,W}
   9.143      This parameter can be used to read/write the vbe display Y resolution (in pixels).
   9.144      It's illegal to set the YRES when the VBE is enabled (display code should generate PANIC).
   9.145 -    
   9.146 +
   9.147      If the value written exceeds VBE_DISPI_MAX_YRES, the display code needs to generate a PANIC.
   9.148 -    
   9.149 +
   9.150      Example values:   200,400,480,600,768
   9.151 -  
   9.152 +
   9.153    * VBE_DISPI_INDEX_BPP : WORD {R,W}
   9.154      This parameter can be used to read/write the vbe display BPP.
   9.155      It's illegal to set the BPP when the VBE is enabled (display code should generate PANIC).
   9.156 -    
   9.157 +
   9.158      If the value written is an incompatible BPP, the display code needs to generate a PANIC.
   9.159 -    
   9.160 +
   9.161      Example values:   VBE_DISPI_BPP_8
   9.162 -    
   9.163 +
   9.164    * VBE_DISPI_INDEX_ENABLE : WORD {R,W}
   9.165      This parameter can be used to read/write the vbe ENABLED state.
   9.166 -    If the bios writes VBE_DISPI_ENABLED then the display code will setup a hostside display mode 
   9.167 +    If the bios writes VBE_DISPI_ENABLED then the display code will setup a hostside display mode
   9.168      with the current XRES, YRES and BPP settings.
   9.169      If the bios write VBE_DISPI_DISABLED then the display code will switch back to normal vga mode behaviour.
   9.170 -    
   9.171 +
   9.172      Example values: VBE_DISPI_ENABLED, VBE_DISPI_DISABLED
   9.173 -  
   9.174 +
   9.175    * VBE_DISPI_INDEX_BANK : WORD {R,W}
   9.176      This parameter can be used to read/write the current selected BANK (at 0xA0000).
   9.177      This can be used for switching banks in banked mode.
   9.178 @@ -173,11 +180,11 @@ API
   9.179      Upon enabling a mode, this will be set to the current xres
   9.180      Setting this field during enabled mode will result in the virtual width to be changed.
   9.181      Value will be adjusted if current setting is not possible.
   9.182 -  
   9.183 +
   9.184    * VBE_DISPI_INDEX_VIRT_HEIGHT : WORD {R}
   9.185      This parameter can be read in order to obtain the current virtual height.
   9.186      This setting will be adjusted after setting a virtual width in order to stay within limit of video memory.
   9.187 -    
   9.188 +
   9.189    * VBE_DISPI_INDEX_X_OFFSET : WORD {R,W}
   9.190      The current X offset (in pixels!) of the visible screen part.
   9.191      Writing a new offset will also result in a complete screen refresh.
   9.192 @@ -202,6 +209,9 @@ API
   9.193      return the gui capabilities.
   9.194      The new flag VBE_DISPI_8BIT_DAC switches the DAC to 8 bit mode.
   9.195  
   9.196 +[0xb0c4]
   9.197 +  * VBE_DISPI_TOTAL_VIDEO_MEMORY_MB set to 8 (moved to auto-generated vbetables.h)
   9.198 +
   9.199  Displaying GFX (banked mode)
   9.200  --------------
   9.201    What happens is that the total screen is devided in banks of 'VBE_DISPI_BANK_SIZE_KB' KiloByte in size.
   9.202 @@ -219,7 +229,7 @@ Displaying GFX (linear frame buffer mode
   9.203    NOT WRITTEN YET
   9.204  
   9.205  Notes
   9.206 ------ 
   9.207 +-----
   9.208    * Since the XRES/YRES/BPP may not be written when VBE is enabled, if you want to switch from one VBE mode
   9.209      to another, you will need to disable VBE first.
   9.210  
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/tools/firmware/vgabios/vbetables-gen.c	Fri Jul 04 13:02:31 2008 +0100
    10.3 @@ -0,0 +1,240 @@
    10.4 +/* Generate the VGABIOS VBE Tables */
    10.5 +#include <stdlib.h>
    10.6 +#include <stdio.h>
    10.7 +
    10.8 +#define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 8
    10.9 +
   10.10 +typedef struct {
   10.11 +    int width;
   10.12 +    int height;
   10.13 +    int depth;
   10.14 +    int mode;
   10.15 +} ModeInfo;
   10.16 +
   10.17 +ModeInfo modes[] = {
   10.18 +    /* standard VESA modes */
   10.19 +{ 640, 400, 8                          , 0x100},
   10.20 +{ 640, 480, 8                          , 0x101},
   10.21 +{ 800, 600, 4                          , 0x102},
   10.22 +{ 800, 600, 8                          , 0x103},
   10.23 +{ 1024, 768, 4                         , 0x104},
   10.24 +{ 1024, 768, 8                         , 0x105},
   10.25 +{ 1280, 1024, 4                        , 0x106},
   10.26 +{ 1280, 1024, 8                        , 0x107},
   10.27 +{ 320, 200, 15                       , 0x10D},
   10.28 +{ 320, 200, 16                        , 0x10E},
   10.29 +{ 320, 200, 24                        , 0x10F},
   10.30 +{ 640, 480, 15                       , 0x110},
   10.31 +{ 640, 480, 16                        , 0x111},
   10.32 +{ 640, 480, 24                        , 0x112},
   10.33 +{ 800, 600, 15                       , 0x113},
   10.34 +{ 800, 600, 16                        , 0x114},
   10.35 +{ 800, 600, 24                        , 0x115},
   10.36 +{ 1024, 768, 15                      , 0x116},
   10.37 +{ 1024, 768, 16                       , 0x117},
   10.38 +{ 1024, 768, 24                       , 0x118},
   10.39 +{ 1280, 1024, 15                     , 0x119},
   10.40 +{ 1280, 1024, 16                      , 0x11A},
   10.41 +{ 1280, 1024, 24                      , 0x11B},
   10.42 +{ 1600, 1200, 8                        , 0x11C},
   10.43 +{ 1600, 1200, 15                     , 0x11D},
   10.44 +{ 1600, 1200, 16                      , 0x11E},
   10.45 +{ 1600, 1200, 24                      , 0x11F},
   10.46 +
   10.47 +      /* BOCHS/PLE, 86 'own' mode numbers */
   10.48 +{ 320, 200, 32                        , 0x140},
   10.49 +{ 640, 400, 32                        , 0x141},
   10.50 +{ 640, 480, 32                        , 0x142},
   10.51 +{ 800, 600, 32                        , 0x143},
   10.52 +{ 1024, 768, 32                       , 0x144},
   10.53 +{ 1280, 1024, 32                      , 0x145},
   10.54 +{ 320, 200, 8                           , 0x146},
   10.55 +{ 1600, 1200, 32                      , 0x147},
   10.56 +{ 1152, 864, 8                      , 0x148},
   10.57 +{ 1152, 864, 15                      , 0x149},
   10.58 +{ 1152, 864, 16                      , 0x14a},
   10.59 +{ 1152, 864, 24                      , 0x14b},
   10.60 +{ 1152, 864, 32                      , 0x14c},
   10.61 +{ 0, },
   10.62 +};
   10.63 +
   10.64 +int main(int argc, char **argv)
   10.65 +{
   10.66 +  const ModeInfo *pm;
   10.67 +  int pages, pitch;
   10.68 +  int r_size, r_pos, g_size, g_pos, b_size, b_pos, a_size, a_pos;
   10.69 +  const char *str;
   10.70 +  long vram_size = VBE_DISPI_TOTAL_VIDEO_MEMORY_MB * 1024 * 1024;
   10.71 +
   10.72 +  printf("/* THIS FILE IS AUTOMATICALLY GENERATED - DO NOT EDIT */\n\n");
   10.73 +  printf("#define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB %d\n\n", VBE_DISPI_TOTAL_VIDEO_MEMORY_MB);
   10.74 +  printf("static ModeInfoListItem mode_info_list[]=\n");
   10.75 +  printf("{\n");
   10.76 +  for (pm = modes; pm->mode != 0; pm++) {
   10.77 +    if (pm->depth == 4)
   10.78 +      pitch = (pm->width + 7) / 8;
   10.79 +    else
   10.80 +      pitch = pm->width * ((pm->depth + 7) / 8);
   10.81 +    pages = vram_size / (pm->height * pitch);
   10.82 +    if (pages > 0) {
   10.83 +      printf("{ 0x%04x, /* %dx%dx%d */\n", 
   10.84 +             pm->mode, pm->width, pm->height, pm->depth);
   10.85 +      if (pm->depth == 4)
   10.86 +        printf("{ /*Bit16u ModeAttributes*/ %s,\n", 
   10.87 +               "VBE_MODE_ATTRIBUTE_SUPPORTED | "
   10.88 +               "VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | "
   10.89 +               "VBE_MODE_ATTRIBUTE_COLOR_MODE | "
   10.90 +               "VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT | "
   10.91 +               "VBE_MODE_ATTRIBUTE_GRAPHICS_MODE");
   10.92 +      else
   10.93 +        printf("{ /*Bit16u ModeAttributes*/ %s,\n", 
   10.94 +               "VBE_MODE_ATTRIBUTE_SUPPORTED | "
   10.95 +               "VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | "
   10.96 +               "VBE_MODE_ATTRIBUTE_COLOR_MODE | "
   10.97 +               "VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | "
   10.98 +               "VBE_MODE_ATTRIBUTE_GRAPHICS_MODE");
   10.99 +      printf("/*Bit8u  WinAAttributes*/ %s,\n",
  10.100 +             "VBE_WINDOW_ATTRIBUTE_RELOCATABLE | "
  10.101 +             "VBE_WINDOW_ATTRIBUTE_READABLE | "
  10.102 +             "VBE_WINDOW_ATTRIBUTE_WRITEABLE");
  10.103 +
  10.104 +      printf("/*Bit8u  WinBAttributes*/ %d,\n", 0);
  10.105 +
  10.106 +      printf("/*Bit16u WinGranularity*/ %s,\n", "VBE_DISPI_BANK_SIZE_KB");
  10.107 +
  10.108 +      printf("/*Bit16u WinSize*/ %s,\n", "VBE_DISPI_BANK_SIZE_KB");
  10.109 +
  10.110 +      printf("/*Bit16u WinASegment*/ %s,\n", "VGAMEM_GRAPH");
  10.111 +
  10.112 +      printf("/*Bit16u WinBSegment*/ 0x%04x,\n", 0);
  10.113 +
  10.114 +      printf("/*Bit32u WinFuncPtr*/ %d,\n", 0);
  10.115 +
  10.116 +      printf("/*Bit16u BytesPerScanLine*/ %d,\n", pitch);
  10.117 +
  10.118 +      // Mandatory information for VBE 1.2 and above
  10.119 +      printf("/*Bit16u XResolution*/ %d,\n", pm->width);
  10.120 +      printf("/*Bit16u YResolution*/ %d,\n", pm->height);
  10.121 +      printf("/*Bit8u  XCharSize*/ %d,\n", 8);
  10.122 +      printf("/*Bit8u  YCharSize*/ %d,\n", 16);
  10.123 +      if (pm->depth == 4) {
  10.124 +        printf("/*Bit8u  NumberOfPlanes*/ %d,\n", 4);
  10.125 +      } else {
  10.126 +        printf("/*Bit8u  NumberOfPlanes*/ %d,\n", 1);
  10.127 +      }
  10.128 +      printf("/*Bit8u  BitsPerPixel*/ %d,\n", pm->depth);
  10.129 +      printf("/*Bit8u  NumberOfBanks*/ %d,\n", 
  10.130 +             (pm->height * pitch + 65535) / 65536);
  10.131 +
  10.132 +      if (pm->depth == 4)
  10.133 +        str = "VBE_MEMORYMODEL_PLANAR";
  10.134 +      else if (pm->depth == 8)
  10.135 +        str = "VBE_MEMORYMODEL_PACKED_PIXEL";
  10.136 +      else
  10.137 +        str = "VBE_MEMORYMODEL_DIRECT_COLOR";
  10.138 +      printf("/*Bit8u  MemoryModel*/ %s,\n", str);
  10.139 +      printf("/*Bit8u  BankSize*/ %d,\n", 0);
  10.140 +      if (pm->depth == 4)
  10.141 +        printf("/*Bit8u  NumberOfImagePages*/ %d,\n", (pages / 4) - 1);
  10.142 +      else
  10.143 +        printf("/*Bit8u  NumberOfImagePages*/ %d,\n", pages - 1);
  10.144 +      printf("/*Bit8u  Reserved_page*/ %d,\n", 0);
  10.145 +
  10.146 +      // Direct Color fields (required for direct/6 and YUV/7 memory models)
  10.147 +      switch(pm->depth) {
  10.148 +        case 15:
  10.149 +          r_size = 5;
  10.150 +          r_pos = 10;
  10.151 +          g_size = 5;
  10.152 +          g_pos = 5;
  10.153 +          b_size = 5;
  10.154 +          b_pos = 0;
  10.155 +          a_size = 1;
  10.156 +          a_pos = 15;
  10.157 +          break;
  10.158 +        case 16:
  10.159 +          r_size = 5;
  10.160 +          r_pos = 11;
  10.161 +          g_size = 6;
  10.162 +          g_pos = 5;
  10.163 +          b_size = 5;
  10.164 +          b_pos = 0;
  10.165 +          a_size = 0;
  10.166 +          a_pos = 0;
  10.167 +          break;
  10.168 +        case 24:
  10.169 +          r_size = 8;
  10.170 +          r_pos = 16;
  10.171 +          g_size = 8;
  10.172 +          g_pos = 8;
  10.173 +          b_size = 8;
  10.174 +          b_pos = 0;
  10.175 +          a_size = 0;
  10.176 +          a_pos = 0;
  10.177 +          break;
  10.178 +        case 32:
  10.179 +          r_size = 8;
  10.180 +          r_pos = 16;
  10.181 +          g_size = 8;
  10.182 +          g_pos = 8;
  10.183 +          b_size = 8;
  10.184 +          b_pos = 0;
  10.185 +          a_size = 8;
  10.186 +          a_pos = 24;
  10.187 +          break;
  10.188 +        default:
  10.189 +          r_size = 0;
  10.190 +          r_pos = 0;
  10.191 +          g_size = 0;
  10.192 +          g_pos = 0;
  10.193 +          b_size = 0;
  10.194 +          b_pos = 0;
  10.195 +          a_size = 0;
  10.196 +          a_pos = 0;
  10.197 +          break;
  10.198 +      }
  10.199 +
  10.200 +      printf("/*Bit8u  RedMaskSize*/ %d,\n", r_size);               
  10.201 +      printf("/*Bit8u  RedFieldPosition*/ %d,\n", r_pos);          
  10.202 +      printf("/*Bit8u  GreenMaskSize*/ %d,\n", g_size);             
  10.203 +      printf("/*Bit8u  GreenFieldPosition*/ %d,\n", g_pos);        
  10.204 +      printf("/*Bit8u  BlueMaskSize*/ %d,\n", b_size);              
  10.205 +      printf("/*Bit8u  BlueFieldPosition*/ %d,\n", b_pos);         
  10.206 +      printf("/*Bit8u  RsvdMaskSize*/ %d,\n", a_size);              
  10.207 +      printf("/*Bit8u  RsvdFieldPosition*/ %d,\n", a_pos);         
  10.208 +      if (pm->depth == 32)
  10.209 +        printf("/*Bit8u  DirectColorModeInfo*/ %s,\n",
  10.210 +               "VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE");
  10.211 +      else
  10.212 +        printf("/*Bit8u  DirectColorModeInfo*/ %s,\n", "0");
  10.213 +
  10.214 +// Mandatory information for VBE 2.0 and above
  10.215 +      if (pm->depth > 4)
  10.216 +        printf("/*Bit32u PhysBasePtr*/ %s,\n",
  10.217 +               "VBE_DISPI_LFB_PHYSICAL_ADDRESS");
  10.218 +      else
  10.219 +        printf("/*Bit32u PhysBasePtr*/ %s,\n", "0");
  10.220 +      printf("/*Bit32u OffScreenMemOffset*/ %d,\n", 0);
  10.221 +      printf("/*Bit16u OffScreenMemSize*/ %d,\n", 0);
  10.222 +      // Mandatory information for VBE 3.0 and above
  10.223 +      printf("/*Bit16u LinBytesPerScanLine*/ %d,\n", pitch);
  10.224 +      printf("/*Bit8u  BnkNumberOfPages*/ %d,\n", 0);
  10.225 +      printf("/*Bit8u  LinNumberOfPages*/ %d,\n", 0);
  10.226 +      printf("/*Bit8u  LinRedMaskSize*/ %d,\n", r_size);
  10.227 +      printf("/*Bit8u  LinRedFieldPosition*/ %d,\n", r_pos);
  10.228 +      printf("/*Bit8u  LinGreenMaskSize*/ %d,\n", g_size);
  10.229 +      printf("/*Bit8u  LinGreenFieldPosition*/ %d,\n", g_pos);
  10.230 +      printf("/*Bit8u  LinBlueMaskSize*/ %d,\n", b_size);
  10.231 +      printf("/*Bit8u  LinBlueFieldPosition*/ %d,\n", b_pos);
  10.232 +      printf("/*Bit8u  LinRsvdMaskSize*/ %d,\n", a_size);
  10.233 +      printf("/*Bit8u  LinRsvdFieldPosition*/ %d,\n", a_pos);
  10.234 +      printf("/*Bit32u MaxPixelClock*/ %d,\n", 0);
  10.235 +      printf("} },\n");
  10.236 +    }
  10.237 +  }
  10.238 +  printf("{ VBE_VESA_MODE_END_OF_LIST,\n");
  10.239 +  printf("{ 0,\n");
  10.240 +  printf("} },\n");
  10.241 +  printf("};\n");
  10.242 +  return 0;
  10.243 +}
    11.1 --- a/tools/firmware/vgabios/vbetables.h	Fri Jul 04 12:39:18 2008 +0100
    11.2 +++ b/tools/firmware/vgabios/vbetables.h	Fri Jul 04 13:02:31 2008 +0100
    11.3 @@ -1,1282 +1,1850 @@
    11.4 -#ifndef vbetables_h_included
    11.5 -#define vbetables_h_included
    11.6 -
    11.7 -/* vbetables.h
    11.8 -
    11.9 -   This file contains a static mode information list containing all
   11.10 -   bochs/plex86 "supported" VBE modi and their 'settings'.
   11.11 +/* THIS FILE IS AUTOMATICALLY GENERATED - DO NOT EDIT */
   11.12  
   11.13 -*/
   11.14 +#define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 8
   11.15  
   11.16 -typedef struct ModeInfoListItem
   11.17 -{
   11.18 -        Bit16u                  mode;
   11.19 -        ModeInfoBlockCompact    info;
   11.20 -} ModeInfoListItem;
   11.21 -
   11.22 -// FIXME: check all member variables to be correct for the different modi
   11.23 -// FIXME: add more modi
   11.24  static ModeInfoListItem mode_info_list[]=
   11.25  {
   11.26 -        {
   11.27 -                VBE_VESA_MODE_640X400X8,
   11.28 -                {
   11.29 -/*typedef struct ModeInfoBlock
   11.30 -{*/
   11.31 -// Mandatory information for all VBE revisions
   11.32 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
   11.33 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
   11.34 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
   11.35 -#ifdef VBE_HAVE_LFB
   11.36 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
   11.37 -#endif
   11.38 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
   11.39 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
   11.40 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
   11.41 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
   11.42 -   /*Bit8u  WinBAttributes*/            0,
   11.43 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
   11.44 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
   11.45 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
   11.46 -   /*Bit16u WinBSegment*/               0,
   11.47 -   /*Bit32u WinFuncPtr*/                0,
   11.48 -   /*Bit16u BytesPerScanLine*/          640,
   11.49 -// Mandatory information for VBE 1.2 and above
   11.50 -   /*Bit16u XResolution*/               640,
   11.51 -   /*Bit16u YResolution*/               400,
   11.52 -   /*Bit8u  XCharSize*/                 8,
   11.53 -   /*Bit8u  YCharSize*/                 16,
   11.54 -   /*Bit8u  NumberOfPlanes*/            1,
   11.55 -   /*Bit8u  BitsPerPixel*/              8,
   11.56 -   /*Bit8u  NumberOfBanks*/             4, // 640x400/64kb == 4
   11.57 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_PACKED_PIXEL,
   11.58 -   /*Bit8u  BankSize*/                  0,
   11.59 -   /*Bit8u  NumberOfImagePages*/        15,
   11.60 -   /*Bit8u  Reserved_page*/             0,
   11.61 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
   11.62 -   /*Bit8u  RedMaskSize*/               0,
   11.63 -   /*Bit8u  RedFieldPosition*/          0,
   11.64 -   /*Bit8u  GreenMaskSize*/             0,
   11.65 -   /*Bit8u  GreenFieldPosition*/        0,
   11.66 -   /*Bit8u  BlueMaskSize*/              0,
   11.67 -   /*Bit8u  BlueFieldPosition*/         0,
   11.68 -   /*Bit8u  RsvdMaskSize*/              0,
   11.69 -   /*Bit8u  RsvdFieldPosition*/         0,
   11.70 -   /*Bit8u  DirectColorModeInfo*/       0,
   11.71 -// Mandatory information for VBE 2.0 and above
   11.72 -#ifdef VBE_HAVE_LFB
   11.73 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
   11.74 -#else
   11.75 -   /*Bit32u PhysBasePtr*/               0,
   11.76 -#endif
   11.77 -   /*Bit32u OffScreenMemOffset*/        0,
   11.78 -   /*Bit16u OffScreenMemSize*/          0,
   11.79 -// Mandatory information for VBE 3.0 and above
   11.80 -   /*Bit16u LinBytesPerScanLine*/       640,
   11.81 -   /*Bit8u  BnkNumberOfPages*/          0,
   11.82 -   /*Bit8u  LinNumberOfPages*/          0,
   11.83 -   /*Bit8u  LinRedMaskSize*/            0,
   11.84 -   /*Bit8u  LinRedFieldPosition*/       0,
   11.85 -   /*Bit8u  LinGreenMaskSize*/          0,
   11.86 -   /*Bit8u  LinGreenFieldPosition*/     0,
   11.87 -   /*Bit8u  LinBlueMaskSize*/           0,
   11.88 -   /*Bit8u  LinBlueFieldPosition*/      0,
   11.89 -   /*Bit8u  LinRsvdMaskSize*/           0,
   11.90 -   /*Bit8u  LinRsvdFieldPosition*/      0,
   11.91 -   /*Bit32u MaxPixelClock*/             0,
   11.92 -/*} ModeInfoBlock;*/
   11.93 -                }
   11.94 -        },
   11.95 -
   11.96 -        {
   11.97 -                VBE_VESA_MODE_640X480X8,
   11.98 -                {
   11.99 -/*typedef struct ModeInfoBlock
  11.100 -{*/
  11.101 -// Mandatory information for all VBE revisions
  11.102 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.103 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.104 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.105 -#ifdef VBE_HAVE_LFB
  11.106 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
  11.107 -#endif
  11.108 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.109 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_READABLE |
  11.110 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.111 -   /*Bit8u  WinBAttributes*/            0,
  11.112 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.113 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.114 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.115 -   /*Bit16u WinBSegment*/               0,
  11.116 -   /*Bit32u WinFuncPtr*/                0,
  11.117 -   /*Bit16u BytesPerScanLine*/          640,
  11.118 -// Mandatory information for VBE 1.2 and above
  11.119 -   /*Bit16u XResolution*/               640,
  11.120 -   /*Bit16u YResolution*/               480,
  11.121 -   /*Bit8u  XCharSize*/                 8,
  11.122 -   /*Bit8u  YCharSize*/                 16,
  11.123 -   /*Bit8u  NumberOfPlanes*/            1,
  11.124 -   /*Bit8u  BitsPerPixel*/              8,
  11.125 -   /*Bit8u  NumberOfBanks*/             5, // 640x480/64kb == 5
  11.126 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_PACKED_PIXEL,
  11.127 -   /*Bit8u  BankSize*/                  0,
  11.128 -   /*Bit8u  NumberOfImagePages*/        11,
  11.129 -   /*Bit8u  Reserved_page*/             0,
  11.130 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.131 -   /*Bit8u  RedMaskSize*/               0,
  11.132 -   /*Bit8u  RedFieldPosition*/          0,
  11.133 -   /*Bit8u  GreenMaskSize*/             0,
  11.134 -   /*Bit8u  GreenFieldPosition*/        0,
  11.135 -   /*Bit8u  BlueMaskSize*/              0,
  11.136 -   /*Bit8u  BlueFieldPosition*/         0,
  11.137 -   /*Bit8u  RsvdMaskSize*/              0,
  11.138 -   /*Bit8u  RsvdFieldPosition*/         0,
  11.139 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.140 -// Mandatory information for VBE 2.0 and above
  11.141 -#ifdef VBE_HAVE_LFB
  11.142 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
  11.143 -#else
  11.144 -   /*Bit32u PhysBasePtr*/               0,
  11.145 -#endif
  11.146 -   /*Bit32u OffScreenMemOffset*/        0,
  11.147 -   /*Bit16u OffScreenMemSize*/          0,
  11.148 -// Mandatory information for VBE 3.0 and above
  11.149 -   /*Bit16u LinBytesPerScanLine*/       640,
  11.150 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.151 -   /*Bit8u  LinNumberOfPages*/          0,
  11.152 -   /*Bit8u  LinRedMaskSize*/            0,
  11.153 -   /*Bit8u  LinRedFieldPosition*/       0,
  11.154 -   /*Bit8u  LinGreenMaskSize*/          0,
  11.155 -   /*Bit8u  LinGreenFieldPosition*/     0,
  11.156 -   /*Bit8u  LinBlueMaskSize*/           0,
  11.157 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.158 -   /*Bit8u  LinRsvdMaskSize*/           0,
  11.159 -   /*Bit8u  LinRsvdFieldPosition*/      0,
  11.160 -   /*Bit32u MaxPixelClock*/             0,
  11.161 -/*} ModeInfoBlock;*/
  11.162 -                }
  11.163 -        },
  11.164 -
  11.165 -        {
  11.166 -                VBE_VESA_MODE_800X600X4,
  11.167 -                {
  11.168 -/*typedef struct ModeInfoBlock
  11.169 -{*/
  11.170 -// Mandatory information for all VBE revisions
  11.171 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.172 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.173 -                                        VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT |
  11.174 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.175 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.176 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
  11.177 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
  11.178 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.179 -   /*Bit8u  WinBAttributes*/            0,
  11.180 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.181 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.182 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.183 -   /*Bit16u WinBSegment*/               0,
  11.184 -   /*Bit32u WinFuncPtr*/                0,
  11.185 -   /*Bit16u BytesPerScanLine*/          100,
  11.186 -// Mandatory information for VBE 1.2 and above
  11.187 -   /*Bit16u XResolution*/               800,
  11.188 -   /*Bit16u YResolution*/               600,
  11.189 -   /*Bit8u  XCharSize*/                 8,
  11.190 -   /*Bit8u  YCharSize*/                 16,
  11.191 -   /*Bit8u  NumberOfPlanes*/            4,
  11.192 -   /*Bit8u  BitsPerPixel*/              4,
  11.193 -   /*Bit8u  NumberOfBanks*/             16,
  11.194 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_PLANAR,
  11.195 -   /*Bit8u  BankSize*/                  0,
  11.196 -   /*Bit8u  NumberOfImagePages*/        15,
  11.197 -   /*Bit8u  Reserved_page*/             0,
  11.198 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.199 -   /*Bit8u  RedMaskSize*/               0,
  11.200 -   /*Bit8u  RedFieldPosition*/          0,
  11.201 -   /*Bit8u  GreenMaskSize*/             0,
  11.202 -   /*Bit8u  GreenFieldPosition*/        0,
  11.203 -   /*Bit8u  BlueMaskSize*/              0,
  11.204 -   /*Bit8u  BlueFieldPosition*/         0,
  11.205 -   /*Bit8u  RsvdMaskSize*/              0,
  11.206 -   /*Bit8u  RsvdFieldPosition*/         0,
  11.207 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.208 -// Mandatory information for VBE 2.0 and above
  11.209 -   /*Bit32u PhysBasePtr*/               0,
  11.210 -   /*Bit32u OffScreenMemOffset*/        0,
  11.211 -   /*Bit16u OffScreenMemSize*/          0,
  11.212 -// Mandatory information for VBE 3.0 and above
  11.213 -   /*Bit16u LinBytesPerScanLine*/       100,
  11.214 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.215 -   /*Bit8u  LinNumberOfPages*/          0,
  11.216 -   /*Bit8u  LinRedMaskSize*/            0,
  11.217 -   /*Bit8u  LinRedFieldPosition*/       0,
  11.218 -   /*Bit8u  LinGreenMaskSize*/          0,
  11.219 -   /*Bit8u  LinGreenFieldPosition*/     0,
  11.220 -   /*Bit8u  LinBlueMaskSize*/           0,
  11.221 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.222 -   /*Bit8u  LinRsvdMaskSize*/           0,
  11.223 -   /*Bit8u  LinRsvdFieldPosition*/      0,
  11.224 -   /*Bit32u MaxPixelClock*/             0,
  11.225 -/*} ModeInfoBlock;*/
  11.226 -                }
  11.227 -        },
  11.228 -
  11.229 -        {
  11.230 -                VBE_VESA_MODE_800X600X8,
  11.231 -                {
  11.232 -/*typedef struct ModeInfoBlock
  11.233 -{*/
  11.234 -// Mandatory information for all VBE revisions
  11.235 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.236 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.237 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.238 -#ifdef VBE_HAVE_LFB
  11.239 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
  11.240 -#endif
  11.241 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.242 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
  11.243 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
  11.244 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.245 -   /*Bit8u  WinBAttributes*/            0,
  11.246 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.247 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.248 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.249 -   /*Bit16u WinBSegment*/               0,
  11.250 -   /*Bit32u WinFuncPtr*/                0,
  11.251 -   /*Bit16u BytesPerScanLine*/          800,
  11.252 -// Mandatory information for VBE 1.2 and above
  11.253 -   /*Bit16u XResolution*/               800,
  11.254 -   /*Bit16u YResolution*/               600,
  11.255 -   /*Bit8u  XCharSize*/                 8,
  11.256 -   /*Bit8u  YCharSize*/                 16,
  11.257 -   /*Bit8u  NumberOfPlanes*/            1,
  11.258 -   /*Bit8u  BitsPerPixel*/              8,
  11.259 -   /*Bit8u  NumberOfBanks*/             8, // 800x600/64kb == 8
  11.260 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_PACKED_PIXEL,
  11.261 -   /*Bit8u  BankSize*/                  0,
  11.262 -   /*Bit8u  NumberOfImagePages*/        7,
  11.263 -   /*Bit8u  Reserved_page*/             0,
  11.264 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.265 -   /*Bit8u  RedMaskSize*/               0,
  11.266 -   /*Bit8u  RedFieldPosition*/          0,
  11.267 -   /*Bit8u  GreenMaskSize*/             0,
  11.268 -   /*Bit8u  GreenFieldPosition*/        0,
  11.269 -   /*Bit8u  BlueMaskSize*/              0,
  11.270 -   /*Bit8u  BlueFieldPosition*/         0,
  11.271 -   /*Bit8u  RsvdMaskSize*/              0,
  11.272 -   /*Bit8u  RsvdFieldPosition*/         0,
  11.273 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.274 -// Mandatory information for VBE 2.0 and above
  11.275 -#ifdef VBE_HAVE_LFB
  11.276 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
  11.277 -#else
  11.278 -   /*Bit32u PhysBasePtr*/               0,
  11.279 -#endif
  11.280 -   /*Bit32u OffScreenMemOffset*/        0,
  11.281 -   /*Bit16u OffScreenMemSize*/          0,
  11.282 -// Mandatory information for VBE 3.0 and above
  11.283 -   /*Bit16u LinBytesPerScanLine*/       800,
  11.284 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.285 -   /*Bit8u  LinNumberOfPages*/          0,
  11.286 -   /*Bit8u  LinRedMaskSize*/            0,
  11.287 -   /*Bit8u  LinRedFieldPosition*/       0,
  11.288 -   /*Bit8u  LinGreenMaskSize*/          0,
  11.289 -   /*Bit8u  LinGreenFieldPosition*/     0,
  11.290 -   /*Bit8u  LinBlueMaskSize*/           0,
  11.291 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.292 -   /*Bit8u  LinRsvdMaskSize*/           0,
  11.293 -   /*Bit8u  LinRsvdFieldPosition*/      0,
  11.294 -   /*Bit32u MaxPixelClock*/             0,
  11.295 -/*} ModeInfoBlock;*/
  11.296 -                }
  11.297 -        },
  11.298 -
  11.299 -        {
  11.300 -                VBE_VESA_MODE_1024X768X8,
  11.301 -                {
  11.302 -/*typedef struct ModeInfoBlock
  11.303 -{*/
  11.304 -// Mandatory information for all VBE revisions
  11.305 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.306 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.307 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.308 -#ifdef VBE_HAVE_LFB
  11.309 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
  11.310 -#endif
  11.311 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.312 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
  11.313 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
  11.314 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.315 -   /*Bit8u  WinBAttributes*/            0,
  11.316 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.317 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.318 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.319 -   /*Bit16u WinBSegment*/               0,
  11.320 -   /*Bit32u WinFuncPtr*/                0,
  11.321 -   /*Bit16u BytesPerScanLine*/          1024,
  11.322 -// Mandatory information for VBE 1.2 and above
  11.323 -   /*Bit16u XResolution*/               1024,
  11.324 -   /*Bit16u YResolution*/               768,
  11.325 -   /*Bit8u  XCharSize*/                 8,
  11.326 -   /*Bit8u  YCharSize*/                 16,
  11.327 -   /*Bit8u  NumberOfPlanes*/            1,
  11.328 -   /*Bit8u  BitsPerPixel*/              8,
  11.329 -   /*Bit8u  NumberOfBanks*/             12, // 1024x768/64kb == 12
  11.330 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_PACKED_PIXEL,
  11.331 -   /*Bit8u  BankSize*/                  0,
  11.332 -   /*Bit8u  NumberOfImagePages*/        3,
  11.333 -   /*Bit8u  Reserved_page*/             0,
  11.334 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.335 -   /*Bit8u  RedMaskSize*/               0,
  11.336 -   /*Bit8u  RedFieldPosition*/          0,
  11.337 -   /*Bit8u  GreenMaskSize*/             0,
  11.338 -   /*Bit8u  GreenFieldPosition*/        0,
  11.339 -   /*Bit8u  BlueMaskSize*/              0,
  11.340 -   /*Bit8u  BlueFieldPosition*/         0,
  11.341 -   /*Bit8u  RsvdMaskSize*/              0,
  11.342 -   /*Bit8u  RsvdFieldPosition*/         0,
  11.343 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.344 -// Mandatory information for VBE 2.0 and above
  11.345 -#ifdef VBE_HAVE_LFB
  11.346 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
  11.347 -#else
  11.348 -   /*Bit32u PhysBasePtr*/               0,
  11.349 -#endif
  11.350 -   /*Bit32u OffScreenMemOffset*/        0,
  11.351 -   /*Bit16u OffScreenMemSize*/          0,
  11.352 -// Mandatory information for VBE 3.0 and above
  11.353 -   /*Bit16u LinBytesPerScanLine*/       1024,
  11.354 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.355 -   /*Bit8u  LinNumberOfPages*/          0,
  11.356 -   /*Bit8u  LinRedMaskSize*/            0,
  11.357 -   /*Bit8u  LinRedFieldPosition*/       0,
  11.358 -   /*Bit8u  LinGreenMaskSize*/          0,
  11.359 -   /*Bit8u  LinGreenFieldPosition*/     0,
  11.360 -   /*Bit8u  LinBlueMaskSize*/           0,
  11.361 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.362 -   /*Bit8u  LinRsvdMaskSize*/           0,
  11.363 -   /*Bit8u  LinRsvdFieldPosition*/      0,
  11.364 -   /*Bit32u MaxPixelClock*/             0,
  11.365 -/*} ModeInfoBlock;*/
  11.366 -                }
  11.367 -        },
  11.368 -
  11.369 -        {
  11.370 -                VBE_VESA_MODE_640X480X1555,
  11.371 -                {
  11.372 -/*typedef struct ModeInfoBlock
  11.373 -{*/
  11.374 -// Mandatory information for all VBE revisions
  11.375 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.376 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.377 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.378 -#ifdef VBE_HAVE_LFB
  11.379 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
  11.380 -#endif
  11.381 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.382 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
  11.383 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
  11.384 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.385 -   /*Bit8u  WinBAttributes*/            0,
  11.386 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.387 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.388 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.389 -   /*Bit16u WinBSegment*/               0,
  11.390 -   /*Bit32u WinFuncPtr*/                0,
  11.391 -   /*Bit16u BytesPerScanLine*/          640*2,
  11.392 -// Mandatory information for VBE 1.2 and above
  11.393 -   /*Bit16u XResolution*/               640,
  11.394 -   /*Bit16u YResolution*/               480,
  11.395 -   /*Bit8u  XCharSize*/                 8,
  11.396 -   /*Bit8u  YCharSize*/                 16,
  11.397 -   /*Bit8u  NumberOfPlanes*/            1,
  11.398 -   /*Bit8u  BitsPerPixel*/              15,
  11.399 -   /*Bit8u  NumberOfBanks*/             1,
  11.400 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_DIRECT_COLOR,
  11.401 -   /*Bit8u  BankSize*/                  0,
  11.402 -   /*Bit8u  NumberOfImagePages*/        5,
  11.403 -   /*Bit8u  Reserved_page*/             0,
  11.404 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.405 -   /*Bit8u  RedMaskSize*/               5,
  11.406 -   /*Bit8u  RedFieldPosition*/          10,
  11.407 -   /*Bit8u  GreenMaskSize*/             5,
  11.408 -   /*Bit8u  GreenFieldPosition*/        5,
  11.409 -   /*Bit8u  BlueMaskSize*/              5,
  11.410 -   /*Bit8u  BlueFieldPosition*/         0,
  11.411 -   /*Bit8u  RsvdMaskSize*/              1,
  11.412 -   /*Bit8u  RsvdFieldPosition*/         15,
  11.413 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.414 -// Mandatory information for VBE 2.0 and above
  11.415 -#ifdef VBE_HAVE_LFB
  11.416 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
  11.417 -#else
  11.418 -   /*Bit32u PhysBasePtr*/               0,
  11.419 -#endif
  11.420 -   /*Bit32u OffScreenMemOffset*/        0,
  11.421 -   /*Bit16u OffScreenMemSize*/          0,
  11.422 -// Mandatory information for VBE 3.0 and above
  11.423 -   /*Bit16u LinBytesPerScanLine*/       640*2,
  11.424 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.425 -   /*Bit8u  LinNumberOfPages*/          0,
  11.426 -   /*Bit8u  LinRedMaskSize*/            5,
  11.427 -   /*Bit8u  LinRedFieldPosition*/       10,
  11.428 -   /*Bit8u  LinGreenMaskSize*/          0,
  11.429 -   /*Bit8u  LinGreenFieldPosition*/     5,
  11.430 -   /*Bit8u  LinBlueMaskSize*/           5,
  11.431 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.432 -   /*Bit8u  LinRsvdMaskSize*/           1,
  11.433 -   /*Bit8u  LinRsvdFieldPosition*/      15,
  11.434 -   /*Bit32u MaxPixelClock*/             0,
  11.435 -/*} ModeInfoBlock;*/
  11.436 -                }
  11.437 -        },
  11.438 -
  11.439 -        {
  11.440 -                VBE_VESA_MODE_800X600X1555,
  11.441 -                {
  11.442 -/*typedef struct ModeInfoBlock
  11.443 -{*/
  11.444 -// Mandatory information for all VBE revisions
  11.445 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.446 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.447 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.448 -#ifdef VBE_HAVE_LFB
  11.449 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
  11.450 -#endif
  11.451 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.452 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
  11.453 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
  11.454 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.455 -   /*Bit8u  WinBAttributes*/            0,
  11.456 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.457 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.458 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.459 -   /*Bit16u WinBSegment*/               0,
  11.460 -   /*Bit32u WinFuncPtr*/                0,
  11.461 -   /*Bit16u BytesPerScanLine*/          800*2,
  11.462 -// Mandatory information for VBE 1.2 and above
  11.463 -   /*Bit16u XResolution*/               800,
  11.464 -   /*Bit16u YResolution*/               600,
  11.465 -   /*Bit8u  XCharSize*/                 8,
  11.466 -   /*Bit8u  YCharSize*/                 16,
  11.467 -   /*Bit8u  NumberOfPlanes*/            1,
  11.468 -   /*Bit8u  BitsPerPixel*/              15,
  11.469 -   /*Bit8u  NumberOfBanks*/             1,
  11.470 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_DIRECT_COLOR,
  11.471 -   /*Bit8u  BankSize*/                  0,
  11.472 -   /*Bit8u  NumberOfImagePages*/        3,
  11.473 -   /*Bit8u  Reserved_page*/             0,
  11.474 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.475 -   /*Bit8u  RedMaskSize*/               5,
  11.476 -   /*Bit8u  RedFieldPosition*/          10,
  11.477 -   /*Bit8u  GreenMaskSize*/             5,
  11.478 -   /*Bit8u  GreenFieldPosition*/        5,
  11.479 -   /*Bit8u  BlueMaskSize*/              5,
  11.480 -   /*Bit8u  BlueFieldPosition*/         0,
  11.481 -   /*Bit8u  RsvdMaskSize*/              1,
  11.482 -   /*Bit8u  RsvdFieldPosition*/         15,
  11.483 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.484 -// Mandatory information for VBE 2.0 and above
  11.485 -#ifdef VBE_HAVE_LFB
  11.486 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
  11.487 -#else
  11.488 -   /*Bit32u PhysBasePtr*/               0,
  11.489 -#endif
  11.490 -   /*Bit32u OffScreenMemOffset*/        0,
  11.491 -   /*Bit16u OffScreenMemSize*/          0,
  11.492 -// Mandatory information for VBE 3.0 and above
  11.493 -   /*Bit16u LinBytesPerScanLine*/       800*2,
  11.494 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.495 -   /*Bit8u  LinNumberOfPages*/          0,
  11.496 -   /*Bit8u  LinRedMaskSize*/            5,
  11.497 -   /*Bit8u  LinRedFieldPosition*/       10,
  11.498 -   /*Bit8u  LinGreenMaskSize*/          5,
  11.499 -   /*Bit8u  LinGreenFieldPosition*/     5,
  11.500 -   /*Bit8u  LinBlueMaskSize*/           5,
  11.501 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.502 -   /*Bit8u  LinRsvdMaskSize*/           1,
  11.503 -   /*Bit8u  LinRsvdFieldPosition*/      15,
  11.504 -   /*Bit32u MaxPixelClock*/             0,
  11.505 -/*} ModeInfoBlock;*/
  11.506 -                }
  11.507 -        },
  11.508 -
  11.509 -        {
  11.510 -                VBE_VESA_MODE_1024X768X1555,
  11.511 -                {
  11.512 -/*typedef struct ModeInfoBlock
  11.513 -{*/
  11.514 -// Mandatory information for all VBE revisions
  11.515 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.516 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.517 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.518 -#ifdef VBE_HAVE_LFB
  11.519 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
  11.520 -#endif
  11.521 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.522 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
  11.523 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
  11.524 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.525 -   /*Bit8u  WinBAttributes*/            0,
  11.526 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.527 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.528 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.529 -   /*Bit16u WinBSegment*/               0,
  11.530 -   /*Bit32u WinFuncPtr*/                0,
  11.531 -   /*Bit16u BytesPerScanLine*/          1024*2,
  11.532 -// Mandatory information for VBE 1.2 and above
  11.533 -   /*Bit16u XResolution*/               1024,
  11.534 -   /*Bit16u YResolution*/               768,
  11.535 -   /*Bit8u  XCharSize*/                 8,
  11.536 -   /*Bit8u  YCharSize*/                 16,
  11.537 -   /*Bit8u  NumberOfPlanes*/            1,
  11.538 -   /*Bit8u  BitsPerPixel*/              15,
  11.539 -   /*Bit8u  NumberOfBanks*/             1,
  11.540 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_DIRECT_COLOR,
  11.541 -   /*Bit8u  BankSize*/                  0,
  11.542 -   /*Bit8u  NumberOfImagePages*/        1,
  11.543 -   /*Bit8u  Reserved_page*/             0,
  11.544 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.545 -   /*Bit8u  RedMaskSize*/               5,
  11.546 -   /*Bit8u  RedFieldPosition*/          10,
  11.547 -   /*Bit8u  GreenMaskSize*/             5,
  11.548 -   /*Bit8u  GreenFieldPosition*/        5,
  11.549 -   /*Bit8u  BlueMaskSize*/              5,
  11.550 -   /*Bit8u  BlueFieldPosition*/         0,
  11.551 -   /*Bit8u  RsvdMaskSize*/              1,
  11.552 -   /*Bit8u  RsvdFieldPosition*/         15,
  11.553 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.554 -// Mandatory information for VBE 2.0 and above
  11.555 -#ifdef VBE_HAVE_LFB
  11.556 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
  11.557 -#else
  11.558 -   /*Bit32u PhysBasePtr*/               0,
  11.559 -#endif
  11.560 -   /*Bit32u OffScreenMemOffset*/        0,
  11.561 -   /*Bit16u OffScreenMemSize*/          0,
  11.562 -// Mandatory information for VBE 3.0 and above
  11.563 -   /*Bit16u LinBytesPerScanLine*/       1024*2,
  11.564 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.565 -   /*Bit8u  LinNumberOfPages*/          0,
  11.566 -   /*Bit8u  LinRedMaskSize*/            5,
  11.567 -   /*Bit8u  LinRedFieldPosition*/       10,
  11.568 -   /*Bit8u  LinGreenMaskSize*/          5,
  11.569 -   /*Bit8u  LinGreenFieldPosition*/     5,
  11.570 -   /*Bit8u  LinBlueMaskSize*/           5,
  11.571 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.572 -   /*Bit8u  LinRsvdMaskSize*/           1,
  11.573 -   /*Bit8u  LinRsvdFieldPosition*/      15,
  11.574 -   /*Bit32u MaxPixelClock*/             0,
  11.575 -/*} ModeInfoBlock;*/
  11.576 -                }
  11.577 -        },
  11.578 -
  11.579 -        {
  11.580 -                VBE_VESA_MODE_640X480X565,
  11.581 -                {
  11.582 -/*typedef struct ModeInfoBlock
  11.583 -{*/
  11.584 -// Mandatory information for all VBE revisions
  11.585 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.586 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.587 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.588 -#ifdef VBE_HAVE_LFB
  11.589 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
  11.590 -#endif
  11.591 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.592 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
  11.593 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
  11.594 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.595 -   /*Bit8u  WinBAttributes*/            0,
  11.596 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.597 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.598 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.599 -   /*Bit16u WinBSegment*/               0,
  11.600 -   /*Bit32u WinFuncPtr*/                0,
  11.601 -   /*Bit16u BytesPerScanLine*/          640*2,
  11.602 -// Mandatory information for VBE 1.2 and above
  11.603 -   /*Bit16u XResolution*/               640,
  11.604 -   /*Bit16u YResolution*/               480,
  11.605 -   /*Bit8u  XCharSize*/                 8,
  11.606 -   /*Bit8u  YCharSize*/                 16,
  11.607 -   /*Bit8u  NumberOfPlanes*/            1,
  11.608 -   /*Bit8u  BitsPerPixel*/              16,
  11.609 -   /*Bit8u  NumberOfBanks*/             1,
  11.610 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_DIRECT_COLOR,
  11.611 -   /*Bit8u  BankSize*/                  0,
  11.612 -   /*Bit8u  NumberOfImagePages*/        5,
  11.613 -   /*Bit8u  Reserved_page*/             0,
  11.614 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.615 -   /*Bit8u  RedMaskSize*/               5,
  11.616 -   /*Bit8u  RedFieldPosition*/          11,
  11.617 -   /*Bit8u  GreenMaskSize*/             6,
  11.618 -   /*Bit8u  GreenFieldPosition*/        5,
  11.619 -   /*Bit8u  BlueMaskSize*/              5,
  11.620 -   /*Bit8u  BlueFieldPosition*/         0,
  11.621 -   /*Bit8u  RsvdMaskSize*/              0,
  11.622 -   /*Bit8u  RsvdFieldPosition*/         0,
  11.623 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.624 -// Mandatory information for VBE 2.0 and above
  11.625 -#ifdef VBE_HAVE_LFB
  11.626 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
  11.627 -#else
  11.628 -   /*Bit32u PhysBasePtr*/               0,
  11.629 -#endif
  11.630 -   /*Bit32u OffScreenMemOffset*/        0,
  11.631 -   /*Bit16u OffScreenMemSize*/          0,
  11.632 -// Mandatory information for VBE 3.0 and above
  11.633 -   /*Bit16u LinBytesPerScanLine*/       640*2,
  11.634 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.635 -   /*Bit8u  LinNumberOfPages*/          0,
  11.636 -   /*Bit8u  LinRedMaskSize*/            5,
  11.637 -   /*Bit8u  LinRedFieldPosition*/       11,
  11.638 -   /*Bit8u  LinGreenMaskSize*/          6,
  11.639 -   /*Bit8u  LinGreenFieldPosition*/     5,
  11.640 -   /*Bit8u  LinBlueMaskSize*/           5,
  11.641 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.642 -   /*Bit8u  LinRsvdMaskSize*/           0,
  11.643 -   /*Bit8u  LinRsvdFieldPosition*/      0,
  11.644 -   /*Bit32u MaxPixelClock*/             0,
  11.645 -/*} ModeInfoBlock;*/
  11.646 -                }
  11.647 -        },
  11.648 -
  11.649 -        {
  11.650 -                VBE_VESA_MODE_800X600X565,
  11.651 -                {
  11.652 -/*typedef struct ModeInfoBlock
  11.653 -{*/
  11.654 -// Mandatory information for all VBE revisions
  11.655 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.656 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.657 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.658 -#ifdef VBE_HAVE_LFB
  11.659 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
  11.660 -#endif
  11.661 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.662 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
  11.663 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
  11.664 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.665 -   /*Bit8u  WinBAttributes*/            0,
  11.666 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.667 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.668 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.669 -   /*Bit16u WinBSegment*/               0,
  11.670 -   /*Bit32u WinFuncPtr*/                0,
  11.671 -   /*Bit16u BytesPerScanLine*/          800*2,
  11.672 -// Mandatory information for VBE 1.2 and above
  11.673 -   /*Bit16u XResolution*/               800,
  11.674 -   /*Bit16u YResolution*/               600,
  11.675 -   /*Bit8u  XCharSize*/                 8,
  11.676 -   /*Bit8u  YCharSize*/                 16,
  11.677 -   /*Bit8u  NumberOfPlanes*/            1,
  11.678 -   /*Bit8u  BitsPerPixel*/              16,
  11.679 -   /*Bit8u  NumberOfBanks*/             1,
  11.680 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_DIRECT_COLOR,
  11.681 -   /*Bit8u  BankSize*/                  0,
  11.682 -   /*Bit8u  NumberOfImagePages*/        3,
  11.683 -   /*Bit8u  Reserved_page*/             0,
  11.684 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.685 -   /*Bit8u  RedMaskSize*/               5,
  11.686 -   /*Bit8u  RedFieldPosition*/          11,
  11.687 -   /*Bit8u  GreenMaskSize*/             6,
  11.688 -   /*Bit8u  GreenFieldPosition*/        5,
  11.689 -   /*Bit8u  BlueMaskSize*/              5,
  11.690 -   /*Bit8u  BlueFieldPosition*/         0,
  11.691 -   /*Bit8u  RsvdMaskSize*/              0,
  11.692 -   /*Bit8u  RsvdFieldPosition*/         0,
  11.693 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.694 -// Mandatory information for VBE 2.0 and above
  11.695 -#ifdef VBE_HAVE_LFB
  11.696 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
  11.697 -#else
  11.698 -   /*Bit32u PhysBasePtr*/               0,
  11.699 -#endif
  11.700 -   /*Bit32u OffScreenMemOffset*/        0,
  11.701 -   /*Bit16u OffScreenMemSize*/          0,
  11.702 -// Mandatory information for VBE 3.0 and above
  11.703 -   /*Bit16u LinBytesPerScanLine*/       800*2,
  11.704 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.705 -   /*Bit8u  LinNumberOfPages*/          0,
  11.706 -   /*Bit8u  LinRedMaskSize*/            5,
  11.707 -   /*Bit8u  LinRedFieldPosition*/       11,
  11.708 -   /*Bit8u  LinGreenMaskSize*/          6,
  11.709 -   /*Bit8u  LinGreenFieldPosition*/     5,
  11.710 -   /*Bit8u  LinBlueMaskSize*/           5,
  11.711 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.712 -   /*Bit8u  LinRsvdMaskSize*/           0,
  11.713 -   /*Bit8u  LinRsvdFieldPosition*/      0,
  11.714 -   /*Bit32u MaxPixelClock*/             0,
  11.715 -/*} ModeInfoBlock;*/
  11.716 -                }
  11.717 -        },
  11.718 -
  11.719 -        {
  11.720 -                VBE_VESA_MODE_1024X768X565,
  11.721 -                {
  11.722 -/*typedef struct ModeInfoBlock
  11.723 -{*/
  11.724 -// Mandatory information for all VBE revisions
  11.725 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.726 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.727 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.728 -#ifdef VBE_HAVE_LFB
  11.729 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
  11.730 -#endif
  11.731 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.732 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
  11.733 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
  11.734 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.735 -   /*Bit8u  WinBAttributes*/            0,
  11.736 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.737 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.738 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.739 -   /*Bit16u WinBSegment*/               0,
  11.740 -   /*Bit32u WinFuncPtr*/                0,
  11.741 -   /*Bit16u BytesPerScanLine*/          1024*2,
  11.742 -// Mandatory information for VBE 1.2 and above
  11.743 -   /*Bit16u XResolution*/               1024,
  11.744 -   /*Bit16u YResolution*/               768,
  11.745 -   /*Bit8u  XCharSize*/                 8,
  11.746 -   /*Bit8u  YCharSize*/                 16,
  11.747 -   /*Bit8u  NumberOfPlanes*/            1,
  11.748 -   /*Bit8u  BitsPerPixel*/              16,
  11.749 -   /*Bit8u  NumberOfBanks*/             1,
  11.750 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_DIRECT_COLOR,
  11.751 -   /*Bit8u  BankSize*/                  0,
  11.752 -   /*Bit8u  NumberOfImagePages*/        1,
  11.753 -   /*Bit8u  Reserved_page*/             0,
  11.754 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.755 -   /*Bit8u  RedMaskSize*/               5,
  11.756 -   /*Bit8u  RedFieldPosition*/          11,
  11.757 -   /*Bit8u  GreenMaskSize*/             6,
  11.758 -   /*Bit8u  GreenFieldPosition*/        5,
  11.759 -   /*Bit8u  BlueMaskSize*/              5,
  11.760 -   /*Bit8u  BlueFieldPosition*/         0,
  11.761 -   /*Bit8u  RsvdMaskSize*/              0,
  11.762 -   /*Bit8u  RsvdFieldPosition*/         0,
  11.763 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.764 -// Mandatory information for VBE 2.0 and above
  11.765 -#ifdef VBE_HAVE_LFB
  11.766 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
  11.767 -#else
  11.768 -   /*Bit32u PhysBasePtr*/               0,
  11.769 -#endif
  11.770 -   /*Bit32u OffScreenMemOffset*/        0,
  11.771 -   /*Bit16u OffScreenMemSize*/          0,
  11.772 -// Mandatory information for VBE 3.0 and above
  11.773 -   /*Bit16u LinBytesPerScanLine*/       1024*2,
  11.774 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.775 -   /*Bit8u  LinNumberOfPages*/          0,
  11.776 -   /*Bit8u  LinRedMaskSize*/            5,
  11.777 -   /*Bit8u  LinRedFieldPosition*/       11,
  11.778 -   /*Bit8u  LinGreenMaskSize*/          6,
  11.779 -   /*Bit8u  LinGreenFieldPosition*/     5,
  11.780 -   /*Bit8u  LinBlueMaskSize*/           5,
  11.781 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.782 -   /*Bit8u  LinRsvdMaskSize*/           0,
  11.783 -   /*Bit8u  LinRsvdFieldPosition*/      0,
  11.784 -   /*Bit32u MaxPixelClock*/             0,
  11.785 -/*} ModeInfoBlock;*/
  11.786 -                }
  11.787 -        },
  11.788 -
  11.789 -        {
  11.790 -                VBE_VESA_MODE_640X480X888,
  11.791 -                {
  11.792 -/*typedef struct ModeInfoBlock
  11.793 -{*/
  11.794 -// Mandatory information for all VBE revisions
  11.795 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.796 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.797 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.798 -#ifdef VBE_HAVE_LFB
  11.799 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
  11.800 -#endif
  11.801 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.802 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
  11.803 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
  11.804 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.805 -   /*Bit8u  WinBAttributes*/            0,
  11.806 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.807 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.808 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.809 -   /*Bit16u WinBSegment*/               0,
  11.810 -   /*Bit32u WinFuncPtr*/                0,
  11.811 -   /*Bit16u BytesPerScanLine*/          640*3,
  11.812 -// Mandatory information for VBE 1.2 and above
  11.813 -   /*Bit16u XResolution*/               640,
  11.814 -   /*Bit16u YResolution*/               480,
  11.815 -   /*Bit8u  XCharSize*/                 8,
  11.816 -   /*Bit8u  YCharSize*/                 16,
  11.817 -   /*Bit8u  NumberOfPlanes*/            1,
  11.818 -   /*Bit8u  BitsPerPixel*/              24,
  11.819 -   /*Bit8u  NumberOfBanks*/             1,
  11.820 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_DIRECT_COLOR,
  11.821 -   /*Bit8u  BankSize*/                  0,
  11.822 -   /*Bit8u  NumberOfImagePages*/        3,
  11.823 -   /*Bit8u  Reserved_page*/             0,
  11.824 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.825 -   /*Bit8u  RedMaskSize*/               8,
  11.826 -   /*Bit8u  RedFieldPosition*/          16,
  11.827 -   /*Bit8u  GreenMaskSize*/             8,
  11.828 -   /*Bit8u  GreenFieldPosition*/        8,
  11.829 -   /*Bit8u  BlueMaskSize*/              8,
  11.830 -   /*Bit8u  BlueFieldPosition*/         0,
  11.831 -   /*Bit8u  RsvdMaskSize*/              0,
  11.832 -   /*Bit8u  RsvdFieldPosition*/         0,
  11.833 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.834 -// Mandatory information for VBE 2.0 and above
  11.835 -#ifdef VBE_HAVE_LFB
  11.836 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
  11.837 -#else
  11.838 -   /*Bit32u PhysBasePtr*/               0,
  11.839 -#endif
  11.840 -   /*Bit32u OffScreenMemOffset*/        0,
  11.841 -   /*Bit16u OffScreenMemSize*/          0,
  11.842 -// Mandatory information for VBE 3.0 and above
  11.843 -   /*Bit16u LinBytesPerScanLine*/       640*3,
  11.844 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.845 -   /*Bit8u  LinNumberOfPages*/          0,
  11.846 -   /*Bit8u  LinRedMaskSize*/            8,
  11.847 -   /*Bit8u  LinRedFieldPosition*/       16,
  11.848 -   /*Bit8u  LinGreenMaskSize*/          8,
  11.849 -   /*Bit8u  LinGreenFieldPosition*/     8,
  11.850 -   /*Bit8u  LinBlueMaskSize*/           8,
  11.851 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.852 -   /*Bit8u  LinRsvdMaskSize*/           0,
  11.853 -   /*Bit8u  LinRsvdFieldPosition*/      0,
  11.854 -   /*Bit32u MaxPixelClock*/             0,
  11.855 -/*} ModeInfoBlock;*/
  11.856 -                }
  11.857 -        },
  11.858 -
  11.859 -        {
  11.860 -                VBE_VESA_MODE_800X600X888,
  11.861 -                {
  11.862 -/*typedef struct ModeInfoBlock
  11.863 -{*/
  11.864 -// Mandatory information for all VBE revisions
  11.865 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.866 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.867 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.868 -#ifdef VBE_HAVE_LFB
  11.869 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
  11.870 -#endif
  11.871 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.872 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
  11.873 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
  11.874 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.875 -   /*Bit8u  WinBAttributes*/            0,
  11.876 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.877 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.878 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.879 -   /*Bit16u WinBSegment*/               0,
  11.880 -   /*Bit32u WinFuncPtr*/                0,
  11.881 -   /*Bit16u BytesPerScanLine*/          800*3,
  11.882 -// Mandatory information for VBE 1.2 and above
  11.883 -   /*Bit16u XResolution*/               800,
  11.884 -   /*Bit16u YResolution*/               600,
  11.885 -   /*Bit8u  XCharSize*/                 8,
  11.886 -   /*Bit8u  YCharSize*/                 16,
  11.887 -   /*Bit8u  NumberOfPlanes*/            1,
  11.888 -   /*Bit8u  BitsPerPixel*/              24,
  11.889 -   /*Bit8u  NumberOfBanks*/             1,
  11.890 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_DIRECT_COLOR,
  11.891 -   /*Bit8u  BankSize*/                  0,
  11.892 -   /*Bit8u  NumberOfImagePages*/        1,
  11.893 -   /*Bit8u  Reserved_page*/             0,
  11.894 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.895 -   /*Bit8u  RedMaskSize*/               8,
  11.896 -   /*Bit8u  RedFieldPosition*/          16,
  11.897 -   /*Bit8u  GreenMaskSize*/             8,
  11.898 -   /*Bit8u  GreenFieldPosition*/        8,
  11.899 -   /*Bit8u  BlueMaskSize*/              8,
  11.900 -   /*Bit8u  BlueFieldPosition*/         0,
  11.901 -   /*Bit8u  RsvdMaskSize*/              0,
  11.902 -   /*Bit8u  RsvdFieldPosition*/         0,
  11.903 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.904 -// Mandatory information for VBE 2.0 and above
  11.905 -#ifdef VBE_HAVE_LFB
  11.906 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
  11.907 -#else
  11.908 -   /*Bit32u PhysBasePtr*/               0,
  11.909 -#endif
  11.910 -   /*Bit32u OffScreenMemOffset*/        0,
  11.911 -   /*Bit16u OffScreenMemSize*/          0,
  11.912 -// Mandatory information for VBE 3.0 and above
  11.913 -   /*Bit16u LinBytesPerScanLine*/       800*3,
  11.914 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.915 -   /*Bit8u  LinNumberOfPages*/          0,
  11.916 -   /*Bit8u  LinRedMaskSize*/            8,
  11.917 -   /*Bit8u  LinRedFieldPosition*/       16,
  11.918 -   /*Bit8u  LinGreenMaskSize*/          8,
  11.919 -   /*Bit8u  LinGreenFieldPosition*/     8,
  11.920 -   /*Bit8u  LinBlueMaskSize*/           8,
  11.921 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.922 -   /*Bit8u  LinRsvdMaskSize*/           0,
  11.923 -   /*Bit8u  LinRsvdFieldPosition*/      0,
  11.924 -   /*Bit32u MaxPixelClock*/             0,
  11.925 -/*} ModeInfoBlock;*/
  11.926 -                }
  11.927 -        },
  11.928 -
  11.929 -        {
  11.930 -                VBE_VESA_MODE_1024X768X888,
  11.931 -                {
  11.932 -/*typedef struct ModeInfoBlock
  11.933 -{*/
  11.934 -// Mandatory information for all VBE revisions
  11.935 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
  11.936 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
  11.937 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
  11.938 -#ifdef VBE_HAVE_LFB
  11.939 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
  11.940 -#endif
  11.941 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
  11.942 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
  11.943 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
  11.944 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
  11.945 -   /*Bit8u  WinBAttributes*/            0,
  11.946 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
  11.947 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
  11.948 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
  11.949 -   /*Bit16u WinBSegment*/               0,
  11.950 -   /*Bit32u WinFuncPtr*/                0,
  11.951 -   /*Bit16u BytesPerScanLine*/          1024*3,
  11.952 -// Mandatory information for VBE 1.2 and above
  11.953 -   /*Bit16u XResolution*/               1024,
  11.954 -   /*Bit16u YResolution*/               768,
  11.955 -   /*Bit8u  XCharSize*/                 8,
  11.956 -   /*Bit8u  YCharSize*/                 16,
  11.957 -   /*Bit8u  NumberOfPlanes*/            1,
  11.958 -   /*Bit8u  BitsPerPixel*/              24,
  11.959 -   /*Bit8u  NumberOfBanks*/             1,
  11.960 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_DIRECT_COLOR,
  11.961 -   /*Bit8u  BankSize*/                  0,
  11.962 -   /*Bit8u  NumberOfImagePages*/        0,
  11.963 -   /*Bit8u  Reserved_page*/             0,
  11.964 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
  11.965 -   /*Bit8u  RedMaskSize*/               8,
  11.966 -   /*Bit8u  RedFieldPosition*/          16,
  11.967 -   /*Bit8u  GreenMaskSize*/             8,
  11.968 -   /*Bit8u  GreenFieldPosition*/        8,
  11.969 -   /*Bit8u  BlueMaskSize*/              8,
  11.970 -   /*Bit8u  BlueFieldPosition*/         0,
  11.971 -   /*Bit8u  RsvdMaskSize*/              0,
  11.972 -   /*Bit8u  RsvdFieldPosition*/         0,
  11.973 -   /*Bit8u  DirectColorModeInfo*/       0,
  11.974 -// Mandatory information for VBE 2.0 and above
  11.975 -#ifdef VBE_HAVE_LFB
  11.976 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
  11.977 -#else
  11.978 -   /*Bit32u PhysBasePtr*/               0,
  11.979 -#endif
  11.980 -   /*Bit32u OffScreenMemOffset*/        0,
  11.981 -   /*Bit16u OffScreenMemSize*/          0,
  11.982 -// Mandatory information for VBE 3.0 and above
  11.983 -   /*Bit16u LinBytesPerScanLine*/       1024*3,
  11.984 -   /*Bit8u  BnkNumberOfPages*/          0,
  11.985 -   /*Bit8u  LinNumberOfPages*/          0,
  11.986 -   /*Bit8u  LinRedMaskSize*/            8,
  11.987 -   /*Bit8u  LinRedFieldPosition*/       16,
  11.988 -   /*Bit8u  LinGreenMaskSize*/          8,
  11.989 -   /*Bit8u  LinGreenFieldPosition*/     8,
  11.990 -   /*Bit8u  LinBlueMaskSize*/           8,
  11.991 -   /*Bit8u  LinBlueFieldPosition*/      0,
  11.992 -   /*Bit8u  LinRsvdMaskSize*/           0,
  11.993 -   /*Bit8u  LinRsvdFieldPosition*/      0,
  11.994 -   /*Bit32u MaxPixelClock*/             0,
  11.995 -/*} ModeInfoBlock;*/
  11.996 -                }
  11.997 -        },
  11.998 -
  11.999 -        {
 11.1000 -                VBE_OWN_MODE_640X480X8888,
 11.1001 -                {
 11.1002 -/*typedef struct ModeInfoBlock
 11.1003 -{*/
 11.1004 -// Mandatory information for all VBE revisions
 11.1005 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
 11.1006 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
 11.1007 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
 11.1008 -#ifdef VBE_HAVE_LFB
 11.1009 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
 11.1010 -#endif
 11.1011 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
 11.1012 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
 11.1013 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
 11.1014 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1015 -   /*Bit8u  WinBAttributes*/            0,
 11.1016 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
 11.1017 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
 11.1018 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
 11.1019 -   /*Bit16u WinBSegment*/               0,
 11.1020 -   /*Bit32u WinFuncPtr*/                0,
 11.1021 -   /*Bit16u BytesPerScanLine*/          640*4,
 11.1022 -// Mandatory information for VBE 1.2 and above
 11.1023 -   /*Bit16u XResolution*/               640,
 11.1024 -   /*Bit16u YResolution*/               480,
 11.1025 -   /*Bit8u  XCharSize*/                 8,
 11.1026 -   /*Bit8u  YCharSize*/                 16,
 11.1027 -   /*Bit8u  NumberOfPlanes*/            1,
 11.1028 -   /*Bit8u  BitsPerPixel*/              32,
 11.1029 -   /*Bit8u  NumberOfBanks*/             1,
 11.1030 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_DIRECT_COLOR,
 11.1031 -   /*Bit8u  BankSize*/                  0,
 11.1032 -   /*Bit8u  NumberOfImagePages*/        1,
 11.1033 -   /*Bit8u  Reserved_page*/             0,
 11.1034 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
 11.1035 -   /*Bit8u  RedMaskSize*/               8,
 11.1036 -   /*Bit8u  RedFieldPosition*/          16,
 11.1037 -   /*Bit8u  GreenMaskSize*/             8,
 11.1038 -   /*Bit8u  GreenFieldPosition*/        8,
 11.1039 -   /*Bit8u  BlueMaskSize*/              8,
 11.1040 -   /*Bit8u  BlueFieldPosition*/         0,
 11.1041 -   /*Bit8u  RsvdMaskSize*/              8,
 11.1042 -   /*Bit8u  RsvdFieldPosition*/         24,
 11.1043 -   /*Bit8u  DirectColorModeInfo*/       VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE,
 11.1044 -// Mandatory information for VBE 2.0 and above
 11.1045 -#ifdef VBE_HAVE_LFB
 11.1046 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1047 -#else
 11.1048 -   /*Bit32u PhysBasePtr*/               0,
 11.1049 -#endif
 11.1050 -   /*Bit32u OffScreenMemOffset*/        0,
 11.1051 -   /*Bit16u OffScreenMemSize*/          0,
 11.1052 -// Mandatory information for VBE 3.0 and above
 11.1053 -   /*Bit16u LinBytesPerScanLine*/       640*4,
 11.1054 -   /*Bit8u  BnkNumberOfPages*/          0,
 11.1055 -   /*Bit8u  LinNumberOfPages*/          0,
 11.1056 -   /*Bit8u  LinRedMaskSize*/            8,
 11.1057 -   /*Bit8u  LinRedFieldPosition*/       16,
 11.1058 -   /*Bit8u  LinGreenMaskSize*/          8,
 11.1059 -   /*Bit8u  LinGreenFieldPosition*/     8,
 11.1060 -   /*Bit8u  LinBlueMaskSize*/           8,
 11.1061 -   /*Bit8u  LinBlueFieldPosition*/      0,
 11.1062 -   /*Bit8u  LinRsvdMaskSize*/           8,
 11.1063 -   /*Bit8u  LinRsvdFieldPosition*/      24,
 11.1064 -   /*Bit32u MaxPixelClock*/             0,
 11.1065 -/*} ModeInfoBlock;*/
 11.1066 -                }
 11.1067 -        },
 11.1068 -
 11.1069 -        {
 11.1070 -                VBE_OWN_MODE_800X600X8888,
 11.1071 -                {
 11.1072 -/*typedef struct ModeInfoBlock
 11.1073 -{*/
 11.1074 -// Mandatory information for all VBE revisions
 11.1075 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
 11.1076 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
 11.1077 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
 11.1078 -#ifdef VBE_HAVE_LFB
 11.1079 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
 11.1080 -#endif
 11.1081 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
 11.1082 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
 11.1083 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
 11.1084 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1085 -   /*Bit8u  WinBAttributes*/            0,
 11.1086 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
 11.1087 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
 11.1088 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
 11.1089 -   /*Bit16u WinBSegment*/               0,
 11.1090 -   /*Bit32u WinFuncPtr*/                0,
 11.1091 -   /*Bit16u BytesPerScanLine*/          800*4,
 11.1092 -// Mandatory information for VBE 1.2 and above
 11.1093 -   /*Bit16u XResolution*/               800,
 11.1094 -   /*Bit16u YResolution*/               600,
 11.1095 -   /*Bit8u  XCharSize*/                 8,
 11.1096 -   /*Bit8u  YCharSize*/                 16,
 11.1097 -   /*Bit8u  NumberOfPlanes*/            1,
 11.1098 -   /*Bit8u  BitsPerPixel*/              32,
 11.1099 -   /*Bit8u  NumberOfBanks*/             1,
 11.1100 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_DIRECT_COLOR,
 11.1101 -   /*Bit8u  BankSize*/                  0,
 11.1102 -   /*Bit8u  NumberOfImagePages*/        1,
 11.1103 -   /*Bit8u  Reserved_page*/             0,
 11.1104 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
 11.1105 -   /*Bit8u  RedMaskSize*/               8,
 11.1106 -   /*Bit8u  RedFieldPosition*/          16,
 11.1107 -   /*Bit8u  GreenMaskSize*/             8,
 11.1108 -   /*Bit8u  GreenFieldPosition*/        8,
 11.1109 -   /*Bit8u  BlueMaskSize*/              8,
 11.1110 -   /*Bit8u  BlueFieldPosition*/         0,
 11.1111 -   /*Bit8u  RsvdMaskSize*/              8,
 11.1112 -   /*Bit8u  RsvdFieldPosition*/         24,
 11.1113 -   /*Bit8u  DirectColorModeInfo*/       VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE,
 11.1114 -// Mandatory information for VBE 2.0 and above
 11.1115 -#ifdef VBE_HAVE_LFB
 11.1116 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1117 -#else
 11.1118 -   /*Bit32u PhysBasePtr*/               0,
 11.1119 -#endif
 11.1120 -   /*Bit32u OffScreenMemOffset*/        0,
 11.1121 -   /*Bit16u OffScreenMemSize*/          0,
 11.1122 -// Mandatory information for VBE 3.0 and above
 11.1123 -   /*Bit16u LinBytesPerScanLine*/       800*4,
 11.1124 -   /*Bit8u  BnkNumberOfPages*/          0,
 11.1125 -   /*Bit8u  LinNumberOfPages*/          0,
 11.1126 -   /*Bit8u  LinRedMaskSize*/            8,
 11.1127 -   /*Bit8u  LinRedFieldPosition*/       16,
 11.1128 -   /*Bit8u  LinGreenMaskSize*/          8,
 11.1129 -   /*Bit8u  LinGreenFieldPosition*/     8,
 11.1130 -   /*Bit8u  LinBlueMaskSize*/           8,
 11.1131 -   /*Bit8u  LinBlueFieldPosition*/      0,
 11.1132 -   /*Bit8u  LinRsvdMaskSize*/           8,
 11.1133 -   /*Bit8u  LinRsvdFieldPosition*/      24,
 11.1134 -   /*Bit32u MaxPixelClock*/             0,
 11.1135 -/*} ModeInfoBlock;*/
 11.1136 -                }
 11.1137 -        },
 11.1138 -
 11.1139 -        {
 11.1140 -                VBE_OWN_MODE_1024X768X8888,
 11.1141 -                {
 11.1142 -/*typedef struct ModeInfoBlock
 11.1143 -{*/
 11.1144 -// Mandatory information for all VBE revisions
 11.1145 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
 11.1146 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
 11.1147 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
 11.1148 -#ifdef VBE_HAVE_LFB
 11.1149 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
 11.1150 -#endif
 11.1151 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
 11.1152 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
 11.1153 -                                        VBE_WINDOW_ATTRIBUTE_READABLE |
 11.1154 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1155 -   /*Bit8u  WinBAttributes*/            0,
 11.1156 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
 11.1157 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
 11.1158 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
 11.1159 -   /*Bit16u WinBSegment*/               0,
 11.1160 -   /*Bit32u WinFuncPtr*/                0,
 11.1161 -   /*Bit16u BytesPerScanLine*/          1024*4,
 11.1162 -// Mandatory information for VBE 1.2 and above
 11.1163 -   /*Bit16u XResolution*/               1024,
 11.1164 -   /*Bit16u YResolution*/               768,
 11.1165 -   /*Bit8u  XCharSize*/                 8,
 11.1166 -   /*Bit8u  YCharSize*/                 16,
 11.1167 -   /*Bit8u  NumberOfPlanes*/            1,
 11.1168 -   /*Bit8u  BitsPerPixel*/              32,
 11.1169 -   /*Bit8u  NumberOfBanks*/             1,
 11.1170 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_DIRECT_COLOR,
 11.1171 -   /*Bit8u  BankSize*/                  0,
 11.1172 -   /*Bit8u  NumberOfImagePages*/        1,
 11.1173 -   /*Bit8u  Reserved_page*/             0,
 11.1174 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
 11.1175 -   /*Bit8u  RedMaskSize*/               8,
 11.1176 -   /*Bit8u  RedFieldPosition*/          16,
 11.1177 -   /*Bit8u  GreenMaskSize*/             8,
 11.1178 -   /*Bit8u  GreenFieldPosition*/        8,
 11.1179 -   /*Bit8u  BlueMaskSize*/              8,
 11.1180 -   /*Bit8u  BlueFieldPosition*/         0,
 11.1181 -   /*Bit8u  RsvdMaskSize*/              8,
 11.1182 -   /*Bit8u  RsvdFieldPosition*/         24,
 11.1183 -   /*Bit8u  DirectColorModeInfo*/       VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE,
 11.1184 -// Mandatory information for VBE 2.0 and above
 11.1185 -#ifdef VBE_HAVE_LFB
 11.1186 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1187 -#else
 11.1188 -   /*Bit32u PhysBasePtr*/               0,
 11.1189 -#endif
 11.1190 -   /*Bit32u OffScreenMemOffset*/        0,
 11.1191 -   /*Bit16u OffScreenMemSize*/          0,
 11.1192 -// Mandatory information for VBE 3.0 and above
 11.1193 -   /*Bit16u LinBytesPerScanLine*/       1024*4,
 11.1194 -   /*Bit8u  BnkNumberOfPages*/          0,
 11.1195 -   /*Bit8u  LinNumberOfPages*/          0,
 11.1196 -   /*Bit8u  LinRedMaskSize*/            8,
 11.1197 -   /*Bit8u  LinRedFieldPosition*/       16,
 11.1198 -   /*Bit8u  LinGreenMaskSize*/          8,
 11.1199 -   /*Bit8u  LinGreenFieldPosition*/     8,
 11.1200 -   /*Bit8u  LinBlueMaskSize*/           8,
 11.1201 -   /*Bit8u  LinBlueFieldPosition*/      0,
 11.1202 -   /*Bit8u  LinRsvdMaskSize*/           8,
 11.1203 -   /*Bit8u  LinRsvdFieldPosition*/      24,
 11.1204 -   /*Bit32u MaxPixelClock*/             0,
 11.1205 -/*} ModeInfoBlock;*/
 11.1206 -                }
 11.1207 -        },
 11.1208 -
 11.1209 -        {
 11.1210 -                VBE_OWN_MODE_320X200X8,
 11.1211 -                {
 11.1212 -/*typedef struct ModeInfoBlock
 11.1213 -{*/
 11.1214 -// Mandatory information for all VBE revisions
 11.1215 -   /*Bit16u ModeAttributes*/            VBE_MODE_ATTRIBUTE_SUPPORTED |
 11.1216 -                                        VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
 11.1217 -                                        VBE_MODE_ATTRIBUTE_COLOR_MODE |
 11.1218 -#ifdef VBE_HAVE_LFB
 11.1219 -                                        VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
 11.1220 -#endif
 11.1221 -                                        VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
 11.1222 -   /*Bit8u  WinAAttributes*/            VBE_WINDOW_ATTRIBUTE_READABLE |
 11.1223 -                                        VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1224 -   /*Bit8u  WinBAttributes*/            0,
 11.1225 -   /*Bit16u WinGranularity*/            VBE_DISPI_BANK_SIZE_KB,
 11.1226 -   /*Bit16u WinSize*/                   VBE_DISPI_BANK_SIZE_KB,
 11.1227 -   /*Bit16u WinASegment*/               VGAMEM_GRAPH,
 11.1228 -   /*Bit16u WinBSegment*/               0,
 11.1229 -   /*Bit32u WinFuncPtr*/                0,
 11.1230 -   /*Bit16u BytesPerScanLine*/          320,
 11.1231 -// Mandatory information for VBE 1.2 and above
 11.1232 -   /*Bit16u XResolution*/               320,
 11.1233 -   /*Bit16u YResolution*/               200,
 11.1234 -   /*Bit8u  XCharSize*/                 8,
 11.1235 -   /*Bit8u  YCharSize*/                 16,
 11.1236 -   /*Bit8u  NumberOfPlanes*/            1,
 11.1237 -   /*Bit8u  BitsPerPixel*/              8,
 11.1238 -   /*Bit8u  NumberOfBanks*/             1,
 11.1239 -   /*Bit8u  MemoryModel*/               VBE_MEMORYMODEL_PACKED_PIXEL,
 11.1240 -   /*Bit8u  BankSize*/                  0,
 11.1241 -   /*Bit8u  NumberOfImagePages*/        3,
 11.1242 -   /*Bit8u  Reserved_page*/             0,
 11.1243 -// Direct Color fields (required for direct/6 and YUV/7 memory models)
 11.1244 -   /*Bit8u  RedMaskSize*/               0,
 11.1245 -   /*Bit8u  RedFieldPosition*/          0,
 11.1246 -   /*Bit8u  GreenMaskSize*/             0,
 11.1247 -   /*Bit8u  GreenFieldPosition*/        0,
 11.1248 -   /*Bit8u  BlueMaskSize*/              0,
 11.1249 -   /*Bit8u  BlueFieldPosition*/         0,
 11.1250 -   /*Bit8u  RsvdMaskSize*/              0,
 11.1251 -   /*Bit8u  RsvdFieldPosition*/         0,
 11.1252 -   /*Bit8u  DirectColorModeInfo*/       0,
 11.1253 -// Mandatory information for VBE 2.0 and above
 11.1254 -#ifdef VBE_HAVE_LFB
 11.1255 -   /*Bit32u PhysBasePtr*/               VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1256 -#else
 11.1257 -   /*Bit32u PhysBasePtr*/               0,
 11.1258 -#endif
 11.1259 -   /*Bit32u OffScreenMemOffset*/        0,
 11.1260 -   /*Bit16u OffScreenMemSize*/          0,
 11.1261 -// Mandatory information for VBE 3.0 and above
 11.1262 -   /*Bit16u LinBytesPerScanLine*/       320,
 11.1263 -   /*Bit8u  BnkNumberOfPages*/          0,
 11.1264 -   /*Bit8u  LinNumberOfPages*/          0,
 11.1265 -   /*Bit8u  LinRedMaskSize*/            0,
 11.1266 -   /*Bit8u  LinRedFieldPosition*/       0,
 11.1267 -   /*Bit8u  LinGreenMaskSize*/          0,
 11.1268 -   /*Bit8u  LinGreenFieldPosition*/     0,
 11.1269 -   /*Bit8u  LinBlueMaskSize*/           0,
 11.1270 -   /*Bit8u  LinBlueFieldPosition*/      0,
 11.1271 -   /*Bit8u  LinRsvdMaskSize*/           0,
 11.1272 -   /*Bit8u  LinRsvdFieldPosition*/      0,
 11.1273 -   /*Bit32u MaxPixelClock*/             0,
 11.1274 -/*} ModeInfoBlock;*/
 11.1275 -                }
 11.1276 -        },
 11.1277 -
 11.1278 -/** END OF THE LIST **/
 11.1279 -        {
 11.1280 -                VBE_VESA_MODE_END_OF_LIST,
 11.1281 -                {
 11.1282 -                        0,
 11.1283 -                }
 11.1284 -        }
 11.1285 +{ 0x0100, /* 640x400x8 */
 11.1286 +{ /*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,
 11.1287 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1288 +/*Bit8u  WinBAttributes*/ 0,
 11.1289 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1290 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1291 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1292 +/*Bit16u WinBSegment*/ 0x0000,
 11.1293 +/*Bit32u WinFuncPtr*/ 0,
 11.1294 +/*Bit16u BytesPerScanLine*/ 640,
 11.1295 +/*Bit16u XResolution*/ 640,
 11.1296 +/*Bit16u YResolution*/ 400,
 11.1297 +/*Bit8u  XCharSize*/ 8,
 11.1298 +/*Bit8u  YCharSize*/ 16,
 11.1299 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1300 +/*Bit8u  BitsPerPixel*/ 8,
 11.1301 +/*Bit8u  NumberOfBanks*/ 4,
 11.1302 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL,
 11.1303 +/*Bit8u  BankSize*/ 0,
 11.1304 +/*Bit8u  NumberOfImagePages*/ 31,
 11.1305 +/*Bit8u  Reserved_page*/ 0,
 11.1306 +/*Bit8u  RedMaskSize*/ 0,
 11.1307 +/*Bit8u  RedFieldPosition*/ 0,
 11.1308 +/*Bit8u  GreenMaskSize*/ 0,
 11.1309 +/*Bit8u  GreenFieldPosition*/ 0,
 11.1310 +/*Bit8u  BlueMaskSize*/ 0,
 11.1311 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1312 +/*Bit8u  RsvdMaskSize*/ 0,
 11.1313 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.1314 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1315 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1316 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1317 +/*Bit16u OffScreenMemSize*/ 0,
 11.1318 +/*Bit16u LinBytesPerScanLine*/ 640,
 11.1319 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1320 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1321 +/*Bit8u  LinRedMaskSize*/ 0,
 11.1322 +/*Bit8u  LinRedFieldPosition*/ 0,
 11.1323 +/*Bit8u  LinGreenMaskSize*/ 0,
 11.1324 +/*Bit8u  LinGreenFieldPosition*/ 0,
 11.1325 +/*Bit8u  LinBlueMaskSize*/ 0,
 11.1326 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1327 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.1328 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.1329 +/*Bit32u MaxPixelClock*/ 0,
 11.1330 +} },
 11.1331 +{ 0x0101, /* 640x480x8 */
 11.1332 +{ /*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,
 11.1333 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1334 +/*Bit8u  WinBAttributes*/ 0,
 11.1335 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1336 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1337 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1338 +/*Bit16u WinBSegment*/ 0x0000,
 11.1339 +/*Bit32u WinFuncPtr*/ 0,
 11.1340 +/*Bit16u BytesPerScanLine*/ 640,
 11.1341 +/*Bit16u XResolution*/ 640,
 11.1342 +/*Bit16u YResolution*/ 480,
 11.1343 +/*Bit8u  XCharSize*/ 8,
 11.1344 +/*Bit8u  YCharSize*/ 16,
 11.1345 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1346 +/*Bit8u  BitsPerPixel*/ 8,
 11.1347 +/*Bit8u  NumberOfBanks*/ 5,
 11.1348 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL,
 11.1349 +/*Bit8u  BankSize*/ 0,
 11.1350 +/*Bit8u  NumberOfImagePages*/ 26,
 11.1351 +/*Bit8u  Reserved_page*/ 0,
 11.1352 +/*Bit8u  RedMaskSize*/ 0,
 11.1353 +/*Bit8u  RedFieldPosition*/ 0,
 11.1354 +/*Bit8u  GreenMaskSize*/ 0,
 11.1355 +/*Bit8u  GreenFieldPosition*/ 0,
 11.1356 +/*Bit8u  BlueMaskSize*/ 0,
 11.1357 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1358 +/*Bit8u  RsvdMaskSize*/ 0,
 11.1359 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.1360 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1361 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1362 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1363 +/*Bit16u OffScreenMemSize*/ 0,
 11.1364 +/*Bit16u LinBytesPerScanLine*/ 640,
 11.1365 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1366 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1367 +/*Bit8u  LinRedMaskSize*/ 0,
 11.1368 +/*Bit8u  LinRedFieldPosition*/ 0,
 11.1369 +/*Bit8u  LinGreenMaskSize*/ 0,
 11.1370 +/*Bit8u  LinGreenFieldPosition*/ 0,
 11.1371 +/*Bit8u  LinBlueMaskSize*/ 0,
 11.1372 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1373 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.1374 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.1375 +/*Bit32u MaxPixelClock*/ 0,
 11.1376 +} },
 11.1377 +{ 0x0102, /* 800x600x4 */
 11.1378 +{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
 11.1379 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1380 +/*Bit8u  WinBAttributes*/ 0,
 11.1381 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1382 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1383 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1384 +/*Bit16u WinBSegment*/ 0x0000,
 11.1385 +/*Bit32u WinFuncPtr*/ 0,
 11.1386 +/*Bit16u BytesPerScanLine*/ 100,
 11.1387 +/*Bit16u XResolution*/ 800,
 11.1388 +/*Bit16u YResolution*/ 600,
 11.1389 +/*Bit8u  XCharSize*/ 8,
 11.1390 +/*Bit8u  YCharSize*/ 16,
 11.1391 +/*Bit8u  NumberOfPlanes*/ 4,
 11.1392 +/*Bit8u  BitsPerPixel*/ 4,
 11.1393 +/*Bit8u  NumberOfBanks*/ 1,
 11.1394 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_PLANAR,
 11.1395 +/*Bit8u  BankSize*/ 0,
 11.1396 +/*Bit8u  NumberOfImagePages*/ 33,
 11.1397 +/*Bit8u  Reserved_page*/ 0,
 11.1398 +/*Bit8u  RedMaskSize*/ 0,
 11.1399 +/*Bit8u  RedFieldPosition*/ 0,
 11.1400 +/*Bit8u  GreenMaskSize*/ 0,
 11.1401 +/*Bit8u  GreenFieldPosition*/ 0,
 11.1402 +/*Bit8u  BlueMaskSize*/ 0,
 11.1403 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1404 +/*Bit8u  RsvdMaskSize*/ 0,
 11.1405 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.1406 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1407 +/*Bit32u PhysBasePtr*/ 0,
 11.1408 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1409 +/*Bit16u OffScreenMemSize*/ 0,
 11.1410 +/*Bit16u LinBytesPerScanLine*/ 100,
 11.1411 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1412 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1413 +/*Bit8u  LinRedMaskSize*/ 0,
 11.1414 +/*Bit8u  LinRedFieldPosition*/ 0,
 11.1415 +/*Bit8u  LinGreenMaskSize*/ 0,
 11.1416 +/*Bit8u  LinGreenFieldPosition*/ 0,
 11.1417 +/*Bit8u  LinBlueMaskSize*/ 0,
 11.1418 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1419 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.1420 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.1421 +/*Bit32u MaxPixelClock*/ 0,
 11.1422 +} },
 11.1423 +{ 0x0103, /* 800x600x8 */
 11.1424 +{ /*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,
 11.1425 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1426 +/*Bit8u  WinBAttributes*/ 0,
 11.1427 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1428 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1429 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1430 +/*Bit16u WinBSegment*/ 0x0000,
 11.1431 +/*Bit32u WinFuncPtr*/ 0,
 11.1432 +/*Bit16u BytesPerScanLine*/ 800,
 11.1433 +/*Bit16u XResolution*/ 800,
 11.1434 +/*Bit16u YResolution*/ 600,
 11.1435 +/*Bit8u  XCharSize*/ 8,
 11.1436 +/*Bit8u  YCharSize*/ 16,
 11.1437 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1438 +/*Bit8u  BitsPerPixel*/ 8,
 11.1439 +/*Bit8u  NumberOfBanks*/ 8,
 11.1440 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL,
 11.1441 +/*Bit8u  BankSize*/ 0,
 11.1442 +/*Bit8u  NumberOfImagePages*/ 16,
 11.1443 +/*Bit8u  Reserved_page*/ 0,
 11.1444 +/*Bit8u  RedMaskSize*/ 0,
 11.1445 +/*Bit8u  RedFieldPosition*/ 0,
 11.1446 +/*Bit8u  GreenMaskSize*/ 0,
 11.1447 +/*Bit8u  GreenFieldPosition*/ 0,
 11.1448 +/*Bit8u  BlueMaskSize*/ 0,
 11.1449 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1450 +/*Bit8u  RsvdMaskSize*/ 0,
 11.1451 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.1452 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1453 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1454 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1455 +/*Bit16u OffScreenMemSize*/ 0,
 11.1456 +/*Bit16u LinBytesPerScanLine*/ 800,
 11.1457 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1458 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1459 +/*Bit8u  LinRedMaskSize*/ 0,
 11.1460 +/*Bit8u  LinRedFieldPosition*/ 0,
 11.1461 +/*Bit8u  LinGreenMaskSize*/ 0,
 11.1462 +/*Bit8u  LinGreenFieldPosition*/ 0,
 11.1463 +/*Bit8u  LinBlueMaskSize*/ 0,
 11.1464 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1465 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.1466 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.1467 +/*Bit32u MaxPixelClock*/ 0,
 11.1468 +} },
 11.1469 +{ 0x0104, /* 1024x768x4 */
 11.1470 +{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
 11.1471 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1472 +/*Bit8u  WinBAttributes*/ 0,
 11.1473 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1474 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1475 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1476 +/*Bit16u WinBSegment*/ 0x0000,
 11.1477 +/*Bit32u WinFuncPtr*/ 0,
 11.1478 +/*Bit16u BytesPerScanLine*/ 128,
 11.1479 +/*Bit16u XResolution*/ 1024,
 11.1480 +/*Bit16u YResolution*/ 768,
 11.1481 +/*Bit8u  XCharSize*/ 8,
 11.1482 +/*Bit8u  YCharSize*/ 16,
 11.1483 +/*Bit8u  NumberOfPlanes*/ 4,
 11.1484 +/*Bit8u  BitsPerPixel*/ 4,
 11.1485 +/*Bit8u  NumberOfBanks*/ 2,
 11.1486 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_PLANAR,
 11.1487 +/*Bit8u  BankSize*/ 0,
 11.1488 +/*Bit8u  NumberOfImagePages*/ 20,
 11.1489 +/*Bit8u  Reserved_page*/ 0,
 11.1490 +/*Bit8u  RedMaskSize*/ 0,
 11.1491 +/*Bit8u  RedFieldPosition*/ 0,
 11.1492 +/*Bit8u  GreenMaskSize*/ 0,
 11.1493 +/*Bit8u  GreenFieldPosition*/ 0,
 11.1494 +/*Bit8u  BlueMaskSize*/ 0,
 11.1495 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1496 +/*Bit8u  RsvdMaskSize*/ 0,
 11.1497 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.1498 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1499 +/*Bit32u PhysBasePtr*/ 0,
 11.1500 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1501 +/*Bit16u OffScreenMemSize*/ 0,
 11.1502 +/*Bit16u LinBytesPerScanLine*/ 128,
 11.1503 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1504 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1505 +/*Bit8u  LinRedMaskSize*/ 0,
 11.1506 +/*Bit8u  LinRedFieldPosition*/ 0,
 11.1507 +/*Bit8u  LinGreenMaskSize*/ 0,
 11.1508 +/*Bit8u  LinGreenFieldPosition*/ 0,
 11.1509 +/*Bit8u  LinBlueMaskSize*/ 0,
 11.1510 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1511 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.1512 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.1513 +/*Bit32u MaxPixelClock*/ 0,
 11.1514 +} },
 11.1515 +{ 0x0105, /* 1024x768x8 */
 11.1516 +{ /*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,
 11.1517 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1518 +/*Bit8u  WinBAttributes*/ 0,
 11.1519 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1520 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1521 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1522 +/*Bit16u WinBSegment*/ 0x0000,
 11.1523 +/*Bit32u WinFuncPtr*/ 0,
 11.1524 +/*Bit16u BytesPerScanLine*/ 1024,
 11.1525 +/*Bit16u XResolution*/ 1024,
 11.1526 +/*Bit16u YResolution*/ 768,
 11.1527 +/*Bit8u  XCharSize*/ 8,
 11.1528 +/*Bit8u  YCharSize*/ 16,
 11.1529 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1530 +/*Bit8u  BitsPerPixel*/ 8,
 11.1531 +/*Bit8u  NumberOfBanks*/ 12,
 11.1532 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL,
 11.1533 +/*Bit8u  BankSize*/ 0,
 11.1534 +/*Bit8u  NumberOfImagePages*/ 9,
 11.1535 +/*Bit8u  Reserved_page*/ 0,
 11.1536 +/*Bit8u  RedMaskSize*/ 0,
 11.1537 +/*Bit8u  RedFieldPosition*/ 0,
 11.1538 +/*Bit8u  GreenMaskSize*/ 0,
 11.1539 +/*Bit8u  GreenFieldPosition*/ 0,
 11.1540 +/*Bit8u  BlueMaskSize*/ 0,
 11.1541 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1542 +/*Bit8u  RsvdMaskSize*/ 0,
 11.1543 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.1544 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1545 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1546 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1547 +/*Bit16u OffScreenMemSize*/ 0,
 11.1548 +/*Bit16u LinBytesPerScanLine*/ 1024,
 11.1549 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1550 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1551 +/*Bit8u  LinRedMaskSize*/ 0,
 11.1552 +/*Bit8u  LinRedFieldPosition*/ 0,
 11.1553 +/*Bit8u  LinGreenMaskSize*/ 0,
 11.1554 +/*Bit8u  LinGreenFieldPosition*/ 0,
 11.1555 +/*Bit8u  LinBlueMaskSize*/ 0,
 11.1556 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1557 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.1558 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.1559 +/*Bit32u MaxPixelClock*/ 0,
 11.1560 +} },
 11.1561 +{ 0x0106, /* 1280x1024x4 */
 11.1562 +{ /*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED | VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
 11.1563 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1564 +/*Bit8u  WinBAttributes*/ 0,
 11.1565 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1566 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1567 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1568 +/*Bit16u WinBSegment*/ 0x0000,
 11.1569 +/*Bit32u WinFuncPtr*/ 0,
 11.1570 +/*Bit16u BytesPerScanLine*/ 160,
 11.1571 +/*Bit16u XResolution*/ 1280,
 11.1572 +/*Bit16u YResolution*/ 1024,
 11.1573 +/*Bit8u  XCharSize*/ 8,
 11.1574 +/*Bit8u  YCharSize*/ 16,
 11.1575 +/*Bit8u  NumberOfPlanes*/ 4,
 11.1576 +/*Bit8u  BitsPerPixel*/ 4,
 11.1577 +/*Bit8u  NumberOfBanks*/ 3,
 11.1578 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_PLANAR,
 11.1579 +/*Bit8u  BankSize*/ 0,
 11.1580 +/*Bit8u  NumberOfImagePages*/ 11,
 11.1581 +/*Bit8u  Reserved_page*/ 0,
 11.1582 +/*Bit8u  RedMaskSize*/ 0,
 11.1583 +/*Bit8u  RedFieldPosition*/ 0,
 11.1584 +/*Bit8u  GreenMaskSize*/ 0,
 11.1585 +/*Bit8u  GreenFieldPosition*/ 0,
 11.1586 +/*Bit8u  BlueMaskSize*/ 0,
 11.1587 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1588 +/*Bit8u  RsvdMaskSize*/ 0,
 11.1589 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.1590 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1591 +/*Bit32u PhysBasePtr*/ 0,
 11.1592 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1593 +/*Bit16u OffScreenMemSize*/ 0,
 11.1594 +/*Bit16u LinBytesPerScanLine*/ 160,
 11.1595 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1596 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1597 +/*Bit8u  LinRedMaskSize*/ 0,
 11.1598 +/*Bit8u  LinRedFieldPosition*/ 0,
 11.1599 +/*Bit8u  LinGreenMaskSize*/ 0,
 11.1600 +/*Bit8u  LinGreenFieldPosition*/ 0,
 11.1601 +/*Bit8u  LinBlueMaskSize*/ 0,
 11.1602 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1603 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.1604 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.1605 +/*Bit32u MaxPixelClock*/ 0,
 11.1606 +} },
 11.1607 +{ 0x0107, /* 1280x1024x8 */
 11.1608 +{ /*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,
 11.1609 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1610 +/*Bit8u  WinBAttributes*/ 0,
 11.1611 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1612 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1613 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1614 +/*Bit16u WinBSegment*/ 0x0000,
 11.1615 +/*Bit32u WinFuncPtr*/ 0,
 11.1616 +/*Bit16u BytesPerScanLine*/ 1280,
 11.1617 +/*Bit16u XResolution*/ 1280,
 11.1618 +/*Bit16u YResolution*/ 1024,
 11.1619 +/*Bit8u  XCharSize*/ 8,
 11.1620 +/*Bit8u  YCharSize*/ 16,
 11.1621 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1622 +/*Bit8u  BitsPerPixel*/ 8,
 11.1623 +/*Bit8u  NumberOfBanks*/ 20,
 11.1624 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL,
 11.1625 +/*Bit8u  BankSize*/ 0,
 11.1626 +/*Bit8u  NumberOfImagePages*/ 5,
 11.1627 +/*Bit8u  Reserved_page*/ 0,
 11.1628 +/*Bit8u  RedMaskSize*/ 0,
 11.1629 +/*Bit8u  RedFieldPosition*/ 0,
 11.1630 +/*Bit8u  GreenMaskSize*/ 0,
 11.1631 +/*Bit8u  GreenFieldPosition*/ 0,
 11.1632 +/*Bit8u  BlueMaskSize*/ 0,
 11.1633 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1634 +/*Bit8u  RsvdMaskSize*/ 0,
 11.1635 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.1636 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1637 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1638 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1639 +/*Bit16u OffScreenMemSize*/ 0,
 11.1640 +/*Bit16u LinBytesPerScanLine*/ 1280,
 11.1641 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1642 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1643 +/*Bit8u  LinRedMaskSize*/ 0,
 11.1644 +/*Bit8u  LinRedFieldPosition*/ 0,
 11.1645 +/*Bit8u  LinGreenMaskSize*/ 0,
 11.1646 +/*Bit8u  LinGreenFieldPosition*/ 0,
 11.1647 +/*Bit8u  LinBlueMaskSize*/ 0,
 11.1648 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1649 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.1650 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.1651 +/*Bit32u MaxPixelClock*/ 0,
 11.1652 +} },
 11.1653 +{ 0x010d, /* 320x200x15 */
 11.1654 +{ /*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,
 11.1655 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1656 +/*Bit8u  WinBAttributes*/ 0,
 11.1657 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1658 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1659 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1660 +/*Bit16u WinBSegment*/ 0x0000,
 11.1661 +/*Bit32u WinFuncPtr*/ 0,
 11.1662 +/*Bit16u BytesPerScanLine*/ 640,
 11.1663 +/*Bit16u XResolution*/ 320,
 11.1664 +/*Bit16u YResolution*/ 200,
 11.1665 +/*Bit8u  XCharSize*/ 8,
 11.1666 +/*Bit8u  YCharSize*/ 16,
 11.1667 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1668 +/*Bit8u  BitsPerPixel*/ 15,
 11.1669 +/*Bit8u  NumberOfBanks*/ 2,
 11.1670 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.1671 +/*Bit8u  BankSize*/ 0,
 11.1672 +/*Bit8u  NumberOfImagePages*/ 64,
 11.1673 +/*Bit8u  Reserved_page*/ 0,
 11.1674 +/*Bit8u  RedMaskSize*/ 5,
 11.1675 +/*Bit8u  RedFieldPosition*/ 10,
 11.1676 +/*Bit8u  GreenMaskSize*/ 5,
 11.1677 +/*Bit8u  GreenFieldPosition*/ 5,
 11.1678 +/*Bit8u  BlueMaskSize*/ 5,
 11.1679 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1680 +/*Bit8u  RsvdMaskSize*/ 1,
 11.1681 +/*Bit8u  RsvdFieldPosition*/ 15,
 11.1682 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1683 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1684 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1685 +/*Bit16u OffScreenMemSize*/ 0,
 11.1686 +/*Bit16u LinBytesPerScanLine*/ 640,
 11.1687 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1688 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1689 +/*Bit8u  LinRedMaskSize*/ 5,
 11.1690 +/*Bit8u  LinRedFieldPosition*/ 10,
 11.1691 +/*Bit8u  LinGreenMaskSize*/ 5,
 11.1692 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.1693 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.1694 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1695 +/*Bit8u  LinRsvdMaskSize*/ 1,
 11.1696 +/*Bit8u  LinRsvdFieldPosition*/ 15,
 11.1697 +/*Bit32u MaxPixelClock*/ 0,
 11.1698 +} },
 11.1699 +{ 0x010e, /* 320x200x16 */
 11.1700 +{ /*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,
 11.1701 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1702 +/*Bit8u  WinBAttributes*/ 0,
 11.1703 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1704 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1705 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1706 +/*Bit16u WinBSegment*/ 0x0000,
 11.1707 +/*Bit32u WinFuncPtr*/ 0,
 11.1708 +/*Bit16u BytesPerScanLine*/ 640,
 11.1709 +/*Bit16u XResolution*/ 320,
 11.1710 +/*Bit16u YResolution*/ 200,
 11.1711 +/*Bit8u  XCharSize*/ 8,
 11.1712 +/*Bit8u  YCharSize*/ 16,
 11.1713 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1714 +/*Bit8u  BitsPerPixel*/ 16,
 11.1715 +/*Bit8u  NumberOfBanks*/ 2,
 11.1716 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.1717 +/*Bit8u  BankSize*/ 0,
 11.1718 +/*Bit8u  NumberOfImagePages*/ 64,
 11.1719 +/*Bit8u  Reserved_page*/ 0,
 11.1720 +/*Bit8u  RedMaskSize*/ 5,
 11.1721 +/*Bit8u  RedFieldPosition*/ 11,
 11.1722 +/*Bit8u  GreenMaskSize*/ 6,
 11.1723 +/*Bit8u  GreenFieldPosition*/ 5,
 11.1724 +/*Bit8u  BlueMaskSize*/ 5,
 11.1725 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1726 +/*Bit8u  RsvdMaskSize*/ 0,
 11.1727 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.1728 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1729 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1730 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1731 +/*Bit16u OffScreenMemSize*/ 0,
 11.1732 +/*Bit16u LinBytesPerScanLine*/ 640,
 11.1733 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1734 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1735 +/*Bit8u  LinRedMaskSize*/ 5,
 11.1736 +/*Bit8u  LinRedFieldPosition*/ 11,
 11.1737 +/*Bit8u  LinGreenMaskSize*/ 6,
 11.1738 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.1739 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.1740 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1741 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.1742 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.1743 +/*Bit32u MaxPixelClock*/ 0,
 11.1744 +} },
 11.1745 +{ 0x010f, /* 320x200x24 */
 11.1746 +{ /*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,
 11.1747 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1748 +/*Bit8u  WinBAttributes*/ 0,
 11.1749 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1750 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1751 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1752 +/*Bit16u WinBSegment*/ 0x0000,
 11.1753 +/*Bit32u WinFuncPtr*/ 0,
 11.1754 +/*Bit16u BytesPerScanLine*/ 960,
 11.1755 +/*Bit16u XResolution*/ 320,
 11.1756 +/*Bit16u YResolution*/ 200,
 11.1757 +/*Bit8u  XCharSize*/ 8,
 11.1758 +/*Bit8u  YCharSize*/ 16,
 11.1759 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1760 +/*Bit8u  BitsPerPixel*/ 24,
 11.1761 +/*Bit8u  NumberOfBanks*/ 3,
 11.1762 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.1763 +/*Bit8u  BankSize*/ 0,
 11.1764 +/*Bit8u  NumberOfImagePages*/ 42,
 11.1765 +/*Bit8u  Reserved_page*/ 0,
 11.1766 +/*Bit8u  RedMaskSize*/ 8,
 11.1767 +/*Bit8u  RedFieldPosition*/ 16,
 11.1768 +/*Bit8u  GreenMaskSize*/ 8,
 11.1769 +/*Bit8u  GreenFieldPosition*/ 8,
 11.1770 +/*Bit8u  BlueMaskSize*/ 8,
 11.1771 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1772 +/*Bit8u  RsvdMaskSize*/ 0,
 11.1773 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.1774 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1775 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1776 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1777 +/*Bit16u OffScreenMemSize*/ 0,
 11.1778 +/*Bit16u LinBytesPerScanLine*/ 960,
 11.1779 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1780 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1781 +/*Bit8u  LinRedMaskSize*/ 8,
 11.1782 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.1783 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.1784 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.1785 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.1786 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1787 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.1788 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.1789 +/*Bit32u MaxPixelClock*/ 0,
 11.1790 +} },
 11.1791 +{ 0x0110, /* 640x480x15 */
 11.1792 +{ /*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,
 11.1793 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1794 +/*Bit8u  WinBAttributes*/ 0,
 11.1795 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1796 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1797 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1798 +/*Bit16u WinBSegment*/ 0x0000,
 11.1799 +/*Bit32u WinFuncPtr*/ 0,
 11.1800 +/*Bit16u BytesPerScanLine*/ 1280,
 11.1801 +/*Bit16u XResolution*/ 640,
 11.1802 +/*Bit16u YResolution*/ 480,
 11.1803 +/*Bit8u  XCharSize*/ 8,
 11.1804 +/*Bit8u  YCharSize*/ 16,
 11.1805 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1806 +/*Bit8u  BitsPerPixel*/ 15,
 11.1807 +/*Bit8u  NumberOfBanks*/ 10,
 11.1808 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.1809 +/*Bit8u  BankSize*/ 0,
 11.1810 +/*Bit8u  NumberOfImagePages*/ 12,
 11.1811 +/*Bit8u  Reserved_page*/ 0,
 11.1812 +/*Bit8u  RedMaskSize*/ 5,
 11.1813 +/*Bit8u  RedFieldPosition*/ 10,
 11.1814 +/*Bit8u  GreenMaskSize*/ 5,
 11.1815 +/*Bit8u  GreenFieldPosition*/ 5,
 11.1816 +/*Bit8u  BlueMaskSize*/ 5,
 11.1817 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1818 +/*Bit8u  RsvdMaskSize*/ 1,
 11.1819 +/*Bit8u  RsvdFieldPosition*/ 15,
 11.1820 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1821 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1822 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1823 +/*Bit16u OffScreenMemSize*/ 0,
 11.1824 +/*Bit16u LinBytesPerScanLine*/ 1280,
 11.1825 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1826 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1827 +/*Bit8u  LinRedMaskSize*/ 5,
 11.1828 +/*Bit8u  LinRedFieldPosition*/ 10,
 11.1829 +/*Bit8u  LinGreenMaskSize*/ 5,
 11.1830 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.1831 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.1832 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1833 +/*Bit8u  LinRsvdMaskSize*/ 1,
 11.1834 +/*Bit8u  LinRsvdFieldPosition*/ 15,
 11.1835 +/*Bit32u MaxPixelClock*/ 0,
 11.1836 +} },
 11.1837 +{ 0x0111, /* 640x480x16 */
 11.1838 +{ /*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,
 11.1839 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1840 +/*Bit8u  WinBAttributes*/ 0,
 11.1841 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1842 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1843 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1844 +/*Bit16u WinBSegment*/ 0x0000,
 11.1845 +/*Bit32u WinFuncPtr*/ 0,
 11.1846 +/*Bit16u BytesPerScanLine*/ 1280,
 11.1847 +/*Bit16u XResolution*/ 640,
 11.1848 +/*Bit16u YResolution*/ 480,
 11.1849 +/*Bit8u  XCharSize*/ 8,
 11.1850 +/*Bit8u  YCharSize*/ 16,
 11.1851 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1852 +/*Bit8u  BitsPerPixel*/ 16,
 11.1853 +/*Bit8u  NumberOfBanks*/ 10,
 11.1854 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.1855 +/*Bit8u  BankSize*/ 0,
 11.1856 +/*Bit8u  NumberOfImagePages*/ 12,
 11.1857 +/*Bit8u  Reserved_page*/ 0,
 11.1858 +/*Bit8u  RedMaskSize*/ 5,
 11.1859 +/*Bit8u  RedFieldPosition*/ 11,
 11.1860 +/*Bit8u  GreenMaskSize*/ 6,
 11.1861 +/*Bit8u  GreenFieldPosition*/ 5,
 11.1862 +/*Bit8u  BlueMaskSize*/ 5,
 11.1863 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1864 +/*Bit8u  RsvdMaskSize*/ 0,
 11.1865 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.1866 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1867 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1868 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1869 +/*Bit16u OffScreenMemSize*/ 0,
 11.1870 +/*Bit16u LinBytesPerScanLine*/ 1280,
 11.1871 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1872 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1873 +/*Bit8u  LinRedMaskSize*/ 5,
 11.1874 +/*Bit8u  LinRedFieldPosition*/ 11,
 11.1875 +/*Bit8u  LinGreenMaskSize*/ 6,
 11.1876 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.1877 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.1878 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1879 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.1880 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.1881 +/*Bit32u MaxPixelClock*/ 0,
 11.1882 +} },
 11.1883 +{ 0x0112, /* 640x480x24 */
 11.1884 +{ /*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,
 11.1885 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1886 +/*Bit8u  WinBAttributes*/ 0,
 11.1887 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1888 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1889 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1890 +/*Bit16u WinBSegment*/ 0x0000,
 11.1891 +/*Bit32u WinFuncPtr*/ 0,
 11.1892 +/*Bit16u BytesPerScanLine*/ 1920,
 11.1893 +/*Bit16u XResolution*/ 640,
 11.1894 +/*Bit16u YResolution*/ 480,
 11.1895 +/*Bit8u  XCharSize*/ 8,
 11.1896 +/*Bit8u  YCharSize*/ 16,
 11.1897 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1898 +/*Bit8u  BitsPerPixel*/ 24,
 11.1899 +/*Bit8u  NumberOfBanks*/ 15,
 11.1900 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.1901 +/*Bit8u  BankSize*/ 0,
 11.1902 +/*Bit8u  NumberOfImagePages*/ 8,
 11.1903 +/*Bit8u  Reserved_page*/ 0,
 11.1904 +/*Bit8u  RedMaskSize*/ 8,
 11.1905 +/*Bit8u  RedFieldPosition*/ 16,
 11.1906 +/*Bit8u  GreenMaskSize*/ 8,
 11.1907 +/*Bit8u  GreenFieldPosition*/ 8,
 11.1908 +/*Bit8u  BlueMaskSize*/ 8,
 11.1909 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1910 +/*Bit8u  RsvdMaskSize*/ 0,
 11.1911 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.1912 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1913 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1914 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1915 +/*Bit16u OffScreenMemSize*/ 0,
 11.1916 +/*Bit16u LinBytesPerScanLine*/ 1920,
 11.1917 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1918 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1919 +/*Bit8u  LinRedMaskSize*/ 8,
 11.1920 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.1921 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.1922 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.1923 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.1924 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1925 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.1926 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.1927 +/*Bit32u MaxPixelClock*/ 0,
 11.1928 +} },
 11.1929 +{ 0x0113, /* 800x600x15 */
 11.1930 +{ /*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,
 11.1931 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1932 +/*Bit8u  WinBAttributes*/ 0,
 11.1933 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1934 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1935 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1936 +/*Bit16u WinBSegment*/ 0x0000,
 11.1937 +/*Bit32u WinFuncPtr*/ 0,
 11.1938 +/*Bit16u BytesPerScanLine*/ 1600,
 11.1939 +/*Bit16u XResolution*/ 800,
 11.1940 +/*Bit16u YResolution*/ 600,
 11.1941 +/*Bit8u  XCharSize*/ 8,
 11.1942 +/*Bit8u  YCharSize*/ 16,
 11.1943 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1944 +/*Bit8u  BitsPerPixel*/ 15,
 11.1945 +/*Bit8u  NumberOfBanks*/ 15,
 11.1946 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.1947 +/*Bit8u  BankSize*/ 0,
 11.1948 +/*Bit8u  NumberOfImagePages*/ 7,
 11.1949 +/*Bit8u  Reserved_page*/ 0,
 11.1950 +/*Bit8u  RedMaskSize*/ 5,
 11.1951 +/*Bit8u  RedFieldPosition*/ 10,
 11.1952 +/*Bit8u  GreenMaskSize*/ 5,
 11.1953 +/*Bit8u  GreenFieldPosition*/ 5,
 11.1954 +/*Bit8u  BlueMaskSize*/ 5,
 11.1955 +/*Bit8u  BlueFieldPosition*/ 0,
 11.1956 +/*Bit8u  RsvdMaskSize*/ 1,
 11.1957 +/*Bit8u  RsvdFieldPosition*/ 15,
 11.1958 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.1959 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.1960 +/*Bit32u OffScreenMemOffset*/ 0,
 11.1961 +/*Bit16u OffScreenMemSize*/ 0,
 11.1962 +/*Bit16u LinBytesPerScanLine*/ 1600,
 11.1963 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.1964 +/*Bit8u  LinNumberOfPages*/ 0,
 11.1965 +/*Bit8u  LinRedMaskSize*/ 5,
 11.1966 +/*Bit8u  LinRedFieldPosition*/ 10,
 11.1967 +/*Bit8u  LinGreenMaskSize*/ 5,
 11.1968 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.1969 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.1970 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.1971 +/*Bit8u  LinRsvdMaskSize*/ 1,
 11.1972 +/*Bit8u  LinRsvdFieldPosition*/ 15,
 11.1973 +/*Bit32u MaxPixelClock*/ 0,
 11.1974 +} },
 11.1975 +{ 0x0114, /* 800x600x16 */
 11.1976 +{ /*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,
 11.1977 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.1978 +/*Bit8u  WinBAttributes*/ 0,
 11.1979 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.1980 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.1981 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.1982 +/*Bit16u WinBSegment*/ 0x0000,
 11.1983 +/*Bit32u WinFuncPtr*/ 0,
 11.1984 +/*Bit16u BytesPerScanLine*/ 1600,
 11.1985 +/*Bit16u XResolution*/ 800,
 11.1986 +/*Bit16u YResolution*/ 600,
 11.1987 +/*Bit8u  XCharSize*/ 8,
 11.1988 +/*Bit8u  YCharSize*/ 16,
 11.1989 +/*Bit8u  NumberOfPlanes*/ 1,
 11.1990 +/*Bit8u  BitsPerPixel*/ 16,
 11.1991 +/*Bit8u  NumberOfBanks*/ 15,
 11.1992 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.1993 +/*Bit8u  BankSize*/ 0,
 11.1994 +/*Bit8u  NumberOfImagePages*/ 7,
 11.1995 +/*Bit8u  Reserved_page*/ 0,
 11.1996 +/*Bit8u  RedMaskSize*/ 5,
 11.1997 +/*Bit8u  RedFieldPosition*/ 11,
 11.1998 +/*Bit8u  GreenMaskSize*/ 6,
 11.1999 +/*Bit8u  GreenFieldPosition*/ 5,
 11.2000 +/*Bit8u  BlueMaskSize*/ 5,
 11.2001 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2002 +/*Bit8u  RsvdMaskSize*/ 0,
 11.2003 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.2004 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2005 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2006 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2007 +/*Bit16u OffScreenMemSize*/ 0,
 11.2008 +/*Bit16u LinBytesPerScanLine*/ 1600,
 11.2009 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2010 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2011 +/*Bit8u  LinRedMaskSize*/ 5,
 11.2012 +/*Bit8u  LinRedFieldPosition*/ 11,
 11.2013 +/*Bit8u  LinGreenMaskSize*/ 6,
 11.2014 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.2015 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.2016 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2017 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.2018 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.2019 +/*Bit32u MaxPixelClock*/ 0,
 11.2020 +} },
 11.2021 +{ 0x0115, /* 800x600x24 */
 11.2022 +{ /*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,
 11.2023 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2024 +/*Bit8u  WinBAttributes*/ 0,
 11.2025 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2026 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2027 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2028 +/*Bit16u WinBSegment*/ 0x0000,
 11.2029 +/*Bit32u WinFuncPtr*/ 0,
 11.2030 +/*Bit16u BytesPerScanLine*/ 2400,
 11.2031 +/*Bit16u XResolution*/ 800,
 11.2032 +/*Bit16u YResolution*/ 600,
 11.2033 +/*Bit8u  XCharSize*/ 8,
 11.2034 +/*Bit8u  YCharSize*/ 16,
 11.2035 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2036 +/*Bit8u  BitsPerPixel*/ 24,
 11.2037 +/*Bit8u  NumberOfBanks*/ 22,
 11.2038 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2039 +/*Bit8u  BankSize*/ 0,
 11.2040 +/*Bit8u  NumberOfImagePages*/ 4,
 11.2041 +/*Bit8u  Reserved_page*/ 0,
 11.2042 +/*Bit8u  RedMaskSize*/ 8,
 11.2043 +/*Bit8u  RedFieldPosition*/ 16,
 11.2044 +/*Bit8u  GreenMaskSize*/ 8,
 11.2045 +/*Bit8u  GreenFieldPosition*/ 8,
 11.2046 +/*Bit8u  BlueMaskSize*/ 8,
 11.2047 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2048 +/*Bit8u  RsvdMaskSize*/ 0,
 11.2049 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.2050 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2051 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2052 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2053 +/*Bit16u OffScreenMemSize*/ 0,
 11.2054 +/*Bit16u LinBytesPerScanLine*/ 2400,
 11.2055 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2056 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2057 +/*Bit8u  LinRedMaskSize*/ 8,
 11.2058 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.2059 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.2060 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.2061 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.2062 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2063 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.2064 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.2065 +/*Bit32u MaxPixelClock*/ 0,
 11.2066 +} },
 11.2067 +{ 0x0116, /* 1024x768x15 */
 11.2068 +{ /*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,
 11.2069 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2070 +/*Bit8u  WinBAttributes*/ 0,
 11.2071 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2072 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2073 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2074 +/*Bit16u WinBSegment*/ 0x0000,
 11.2075 +/*Bit32u WinFuncPtr*/ 0,
 11.2076 +/*Bit16u BytesPerScanLine*/ 2048,
 11.2077 +/*Bit16u XResolution*/ 1024,
 11.2078 +/*Bit16u YResolution*/ 768,
 11.2079 +/*Bit8u  XCharSize*/ 8,
 11.2080 +/*Bit8u  YCharSize*/ 16,
 11.2081 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2082 +/*Bit8u  BitsPerPixel*/ 15,
 11.2083 +/*Bit8u  NumberOfBanks*/ 24,
 11.2084 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2085 +/*Bit8u  BankSize*/ 0,
 11.2086 +/*Bit8u  NumberOfImagePages*/ 4,
 11.2087 +/*Bit8u  Reserved_page*/ 0,
 11.2088 +/*Bit8u  RedMaskSize*/ 5,
 11.2089 +/*Bit8u  RedFieldPosition*/ 10,
 11.2090 +/*Bit8u  GreenMaskSize*/ 5,
 11.2091 +/*Bit8u  GreenFieldPosition*/ 5,
 11.2092 +/*Bit8u  BlueMaskSize*/ 5,
 11.2093 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2094 +/*Bit8u  RsvdMaskSize*/ 1,
 11.2095 +/*Bit8u  RsvdFieldPosition*/ 15,
 11.2096 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2097 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2098 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2099 +/*Bit16u OffScreenMemSize*/ 0,
 11.2100 +/*Bit16u LinBytesPerScanLine*/ 2048,
 11.2101 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2102 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2103 +/*Bit8u  LinRedMaskSize*/ 5,
 11.2104 +/*Bit8u  LinRedFieldPosition*/ 10,
 11.2105 +/*Bit8u  LinGreenMaskSize*/ 5,
 11.2106 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.2107 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.2108 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2109 +/*Bit8u  LinRsvdMaskSize*/ 1,
 11.2110 +/*Bit8u  LinRsvdFieldPosition*/ 15,
 11.2111 +/*Bit32u MaxPixelClock*/ 0,
 11.2112 +} },
 11.2113 +{ 0x0117, /* 1024x768x16 */
 11.2114 +{ /*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,
 11.2115 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2116 +/*Bit8u  WinBAttributes*/ 0,
 11.2117 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2118 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2119 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2120 +/*Bit16u WinBSegment*/ 0x0000,
 11.2121 +/*Bit32u WinFuncPtr*/ 0,
 11.2122 +/*Bit16u BytesPerScanLine*/ 2048,
 11.2123 +/*Bit16u XResolution*/ 1024,
 11.2124 +/*Bit16u YResolution*/ 768,
 11.2125 +/*Bit8u  XCharSize*/ 8,
 11.2126 +/*Bit8u  YCharSize*/ 16,
 11.2127 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2128 +/*Bit8u  BitsPerPixel*/ 16,
 11.2129 +/*Bit8u  NumberOfBanks*/ 24,
 11.2130 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2131 +/*Bit8u  BankSize*/ 0,
 11.2132 +/*Bit8u  NumberOfImagePages*/ 4,
 11.2133 +/*Bit8u  Reserved_page*/ 0,
 11.2134 +/*Bit8u  RedMaskSize*/ 5,
 11.2135 +/*Bit8u  RedFieldPosition*/ 11,
 11.2136 +/*Bit8u  GreenMaskSize*/ 6,
 11.2137 +/*Bit8u  GreenFieldPosition*/ 5,
 11.2138 +/*Bit8u  BlueMaskSize*/ 5,
 11.2139 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2140 +/*Bit8u  RsvdMaskSize*/ 0,
 11.2141 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.2142 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2143 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2144 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2145 +/*Bit16u OffScreenMemSize*/ 0,
 11.2146 +/*Bit16u LinBytesPerScanLine*/ 2048,
 11.2147 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2148 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2149 +/*Bit8u  LinRedMaskSize*/ 5,
 11.2150 +/*Bit8u  LinRedFieldPosition*/ 11,
 11.2151 +/*Bit8u  LinGreenMaskSize*/ 6,
 11.2152 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.2153 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.2154 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2155 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.2156 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.2157 +/*Bit32u MaxPixelClock*/ 0,
 11.2158 +} },
 11.2159 +{ 0x0118, /* 1024x768x24 */
 11.2160 +{ /*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,
 11.2161 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2162 +/*Bit8u  WinBAttributes*/ 0,
 11.2163 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2164 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2165 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2166 +/*Bit16u WinBSegment*/ 0x0000,
 11.2167 +/*Bit32u WinFuncPtr*/ 0,
 11.2168 +/*Bit16u BytesPerScanLine*/ 3072,
 11.2169 +/*Bit16u XResolution*/ 1024,
 11.2170 +/*Bit16u YResolution*/ 768,
 11.2171 +/*Bit8u  XCharSize*/ 8,
 11.2172 +/*Bit8u  YCharSize*/ 16,
 11.2173 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2174 +/*Bit8u  BitsPerPixel*/ 24,
 11.2175 +/*Bit8u  NumberOfBanks*/ 36,
 11.2176 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2177 +/*Bit8u  BankSize*/ 0,
 11.2178 +/*Bit8u  NumberOfImagePages*/ 2,
 11.2179 +/*Bit8u  Reserved_page*/ 0,
 11.2180 +/*Bit8u  RedMaskSize*/ 8,
 11.2181 +/*Bit8u  RedFieldPosition*/ 16,
 11.2182 +/*Bit8u  GreenMaskSize*/ 8,
 11.2183 +/*Bit8u  GreenFieldPosition*/ 8,
 11.2184 +/*Bit8u  BlueMaskSize*/ 8,
 11.2185 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2186 +/*Bit8u  RsvdMaskSize*/ 0,
 11.2187 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.2188 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2189 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2190 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2191 +/*Bit16u OffScreenMemSize*/ 0,
 11.2192 +/*Bit16u LinBytesPerScanLine*/ 3072,
 11.2193 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2194 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2195 +/*Bit8u  LinRedMaskSize*/ 8,
 11.2196 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.2197 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.2198 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.2199 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.2200 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2201 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.2202 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.2203 +/*Bit32u MaxPixelClock*/ 0,
 11.2204 +} },
 11.2205 +{ 0x0119, /* 1280x1024x15 */
 11.2206 +{ /*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,
 11.2207 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2208 +/*Bit8u  WinBAttributes*/ 0,
 11.2209 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2210 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2211 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2212 +/*Bit16u WinBSegment*/ 0x0000,
 11.2213 +/*Bit32u WinFuncPtr*/ 0,
 11.2214 +/*Bit16u BytesPerScanLine*/ 2560,
 11.2215 +/*Bit16u XResolution*/ 1280,
 11.2216 +/*Bit16u YResolution*/ 1024,
 11.2217 +/*Bit8u  XCharSize*/ 8,
 11.2218 +/*Bit8u  YCharSize*/ 16,
 11.2219 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2220 +/*Bit8u  BitsPerPixel*/ 15,
 11.2221 +/*Bit8u  NumberOfBanks*/ 40,
 11.2222 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2223 +/*Bit8u  BankSize*/ 0,
 11.2224 +/*Bit8u  NumberOfImagePages*/ 2,
 11.2225 +/*Bit8u  Reserved_page*/ 0,
 11.2226 +/*Bit8u  RedMaskSize*/ 5,
 11.2227 +/*Bit8u  RedFieldPosition*/ 10,
 11.2228 +/*Bit8u  GreenMaskSize*/ 5,
 11.2229 +/*Bit8u  GreenFieldPosition*/ 5,
 11.2230 +/*Bit8u  BlueMaskSize*/ 5,
 11.2231 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2232 +/*Bit8u  RsvdMaskSize*/ 1,
 11.2233 +/*Bit8u  RsvdFieldPosition*/ 15,
 11.2234 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2235 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2236 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2237 +/*Bit16u OffScreenMemSize*/ 0,
 11.2238 +/*Bit16u LinBytesPerScanLine*/ 2560,
 11.2239 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2240 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2241 +/*Bit8u  LinRedMaskSize*/ 5,
 11.2242 +/*Bit8u  LinRedFieldPosition*/ 10,
 11.2243 +/*Bit8u  LinGreenMaskSize*/ 5,
 11.2244 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.2245 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.2246 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2247 +/*Bit8u  LinRsvdMaskSize*/ 1,
 11.2248 +/*Bit8u  LinRsvdFieldPosition*/ 15,
 11.2249 +/*Bit32u MaxPixelClock*/ 0,
 11.2250 +} },
 11.2251 +{ 0x011a, /* 1280x1024x16 */
 11.2252 +{ /*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,
 11.2253 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2254 +/*Bit8u  WinBAttributes*/ 0,
 11.2255 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2256 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2257 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2258 +/*Bit16u WinBSegment*/ 0x0000,
 11.2259 +/*Bit32u WinFuncPtr*/ 0,
 11.2260 +/*Bit16u BytesPerScanLine*/ 2560,
 11.2261 +/*Bit16u XResolution*/ 1280,
 11.2262 +/*Bit16u YResolution*/ 1024,
 11.2263 +/*Bit8u  XCharSize*/ 8,
 11.2264 +/*Bit8u  YCharSize*/ 16,
 11.2265 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2266 +/*Bit8u  BitsPerPixel*/ 16,
 11.2267 +/*Bit8u  NumberOfBanks*/ 40,
 11.2268 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2269 +/*Bit8u  BankSize*/ 0,
 11.2270 +/*Bit8u  NumberOfImagePages*/ 2,
 11.2271 +/*Bit8u  Reserved_page*/ 0,
 11.2272 +/*Bit8u  RedMaskSize*/ 5,
 11.2273 +/*Bit8u  RedFieldPosition*/ 11,
 11.2274 +/*Bit8u  GreenMaskSize*/ 6,
 11.2275 +/*Bit8u  GreenFieldPosition*/ 5,
 11.2276 +/*Bit8u  BlueMaskSize*/ 5,
 11.2277 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2278 +/*Bit8u  RsvdMaskSize*/ 0,
 11.2279 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.2280 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2281 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2282 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2283 +/*Bit16u OffScreenMemSize*/ 0,
 11.2284 +/*Bit16u LinBytesPerScanLine*/ 2560,
 11.2285 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2286 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2287 +/*Bit8u  LinRedMaskSize*/ 5,
 11.2288 +/*Bit8u  LinRedFieldPosition*/ 11,
 11.2289 +/*Bit8u  LinGreenMaskSize*/ 6,
 11.2290 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.2291 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.2292 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2293 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.2294 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.2295 +/*Bit32u MaxPixelClock*/ 0,
 11.2296 +} },
 11.2297 +{ 0x011b, /* 1280x1024x24 */
 11.2298 +{ /*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,
 11.2299 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2300 +/*Bit8u  WinBAttributes*/ 0,
 11.2301 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2302 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2303 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2304 +/*Bit16u WinBSegment*/ 0x0000,
 11.2305 +/*Bit32u WinFuncPtr*/ 0,
 11.2306 +/*Bit16u BytesPerScanLine*/ 3840,
 11.2307 +/*Bit16u XResolution*/ 1280,
 11.2308 +/*Bit16u YResolution*/ 1024,
 11.2309 +/*Bit8u  XCharSize*/ 8,
 11.2310 +/*Bit8u  YCharSize*/ 16,
 11.2311 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2312 +/*Bit8u  BitsPerPixel*/ 24,
 11.2313 +/*Bit8u  NumberOfBanks*/ 60,
 11.2314 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2315 +/*Bit8u  BankSize*/ 0,
 11.2316 +/*Bit8u  NumberOfImagePages*/ 1,
 11.2317 +/*Bit8u  Reserved_page*/ 0,
 11.2318 +/*Bit8u  RedMaskSize*/ 8,
 11.2319 +/*Bit8u  RedFieldPosition*/ 16,
 11.2320 +/*Bit8u  GreenMaskSize*/ 8,
 11.2321 +/*Bit8u  GreenFieldPosition*/ 8,
 11.2322 +/*Bit8u  BlueMaskSize*/ 8,
 11.2323 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2324 +/*Bit8u  RsvdMaskSize*/ 0,
 11.2325 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.2326 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2327 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2328 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2329 +/*Bit16u OffScreenMemSize*/ 0,
 11.2330 +/*Bit16u LinBytesPerScanLine*/ 3840,
 11.2331 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2332 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2333 +/*Bit8u  LinRedMaskSize*/ 8,
 11.2334 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.2335 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.2336 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.2337 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.2338 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2339 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.2340 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.2341 +/*Bit32u MaxPixelClock*/ 0,
 11.2342 +} },
 11.2343 +{ 0x011c, /* 1600x1200x8 */
 11.2344 +{ /*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,
 11.2345 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2346 +/*Bit8u  WinBAttributes*/ 0,
 11.2347 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2348 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2349 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2350 +/*Bit16u WinBSegment*/ 0x0000,
 11.2351 +/*Bit32u WinFuncPtr*/ 0,
 11.2352 +/*Bit16u BytesPerScanLine*/ 1600,
 11.2353 +/*Bit16u XResolution*/ 1600,
 11.2354 +/*Bit16u YResolution*/ 1200,
 11.2355 +/*Bit8u  XCharSize*/ 8,
 11.2356 +/*Bit8u  YCharSize*/ 16,
 11.2357 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2358 +/*Bit8u  BitsPerPixel*/ 8,
 11.2359 +/*Bit8u  NumberOfBanks*/ 30,
 11.2360 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL,
 11.2361 +/*Bit8u  BankSize*/ 0,
 11.2362 +/*Bit8u  NumberOfImagePages*/ 3,
 11.2363 +/*Bit8u  Reserved_page*/ 0,
 11.2364 +/*Bit8u  RedMaskSize*/ 0,
 11.2365 +/*Bit8u  RedFieldPosition*/ 0,
 11.2366 +/*Bit8u  GreenMaskSize*/ 0,
 11.2367 +/*Bit8u  GreenFieldPosition*/ 0,
 11.2368 +/*Bit8u  BlueMaskSize*/ 0,
 11.2369 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2370 +/*Bit8u  RsvdMaskSize*/ 0,
 11.2371 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.2372 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2373 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2374 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2375 +/*Bit16u OffScreenMemSize*/ 0,
 11.2376 +/*Bit16u LinBytesPerScanLine*/ 1600,
 11.2377 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2378 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2379 +/*Bit8u  LinRedMaskSize*/ 0,
 11.2380 +/*Bit8u  LinRedFieldPosition*/ 0,
 11.2381 +/*Bit8u  LinGreenMaskSize*/ 0,
 11.2382 +/*Bit8u  LinGreenFieldPosition*/ 0,
 11.2383 +/*Bit8u  LinBlueMaskSize*/ 0,
 11.2384 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2385 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.2386 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.2387 +/*Bit32u MaxPixelClock*/ 0,
 11.2388 +} },
 11.2389 +{ 0x011d, /* 1600x1200x15 */
 11.2390 +{ /*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,
 11.2391 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2392 +/*Bit8u  WinBAttributes*/ 0,
 11.2393 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2394 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2395 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2396 +/*Bit16u WinBSegment*/ 0x0000,
 11.2397 +/*Bit32u WinFuncPtr*/ 0,
 11.2398 +/*Bit16u BytesPerScanLine*/ 3200,
 11.2399 +/*Bit16u XResolution*/ 1600,
 11.2400 +/*Bit16u YResolution*/ 1200,
 11.2401 +/*Bit8u  XCharSize*/ 8,
 11.2402 +/*Bit8u  YCharSize*/ 16,
 11.2403 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2404 +/*Bit8u  BitsPerPixel*/ 15,
 11.2405 +/*Bit8u  NumberOfBanks*/ 59,
 11.2406 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2407 +/*Bit8u  BankSize*/ 0,
 11.2408 +/*Bit8u  NumberOfImagePages*/ 1,
 11.2409 +/*Bit8u  Reserved_page*/ 0,
 11.2410 +/*Bit8u  RedMaskSize*/ 5,
 11.2411 +/*Bit8u  RedFieldPosition*/ 10,
 11.2412 +/*Bit8u  GreenMaskSize*/ 5,
 11.2413 +/*Bit8u  GreenFieldPosition*/ 5,
 11.2414 +/*Bit8u  BlueMaskSize*/ 5,
 11.2415 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2416 +/*Bit8u  RsvdMaskSize*/ 1,
 11.2417 +/*Bit8u  RsvdFieldPosition*/ 15,
 11.2418 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2419 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2420 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2421 +/*Bit16u OffScreenMemSize*/ 0,
 11.2422 +/*Bit16u LinBytesPerScanLine*/ 3200,
 11.2423 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2424 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2425 +/*Bit8u  LinRedMaskSize*/ 5,
 11.2426 +/*Bit8u  LinRedFieldPosition*/ 10,
 11.2427 +/*Bit8u  LinGreenMaskSize*/ 5,
 11.2428 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.2429 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.2430 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2431 +/*Bit8u  LinRsvdMaskSize*/ 1,
 11.2432 +/*Bit8u  LinRsvdFieldPosition*/ 15,
 11.2433 +/*Bit32u MaxPixelClock*/ 0,
 11.2434 +} },
 11.2435 +{ 0x011e, /* 1600x1200x16 */
 11.2436 +{ /*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,
 11.2437 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2438 +/*Bit8u  WinBAttributes*/ 0,
 11.2439 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2440 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2441 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2442 +/*Bit16u WinBSegment*/ 0x0000,
 11.2443 +/*Bit32u WinFuncPtr*/ 0,
 11.2444 +/*Bit16u BytesPerScanLine*/ 3200,
 11.2445 +/*Bit16u XResolution*/ 1600,
 11.2446 +/*Bit16u YResolution*/ 1200,
 11.2447 +/*Bit8u  XCharSize*/ 8,
 11.2448 +/*Bit8u  YCharSize*/ 16,
 11.2449 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2450 +/*Bit8u  BitsPerPixel*/ 16,
 11.2451 +/*Bit8u  NumberOfBanks*/ 59,
 11.2452 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2453 +/*Bit8u  BankSize*/ 0,
 11.2454 +/*Bit8u  NumberOfImagePages*/ 1,
 11.2455 +/*Bit8u  Reserved_page*/ 0,
 11.2456 +/*Bit8u  RedMaskSize*/ 5,
 11.2457 +/*Bit8u  RedFieldPosition*/ 11,
 11.2458 +/*Bit8u  GreenMaskSize*/ 6,
 11.2459 +/*Bit8u  GreenFieldPosition*/ 5,
 11.2460 +/*Bit8u  BlueMaskSize*/ 5,
 11.2461 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2462 +/*Bit8u  RsvdMaskSize*/ 0,
 11.2463 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.2464 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2465 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2466 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2467 +/*Bit16u OffScreenMemSize*/ 0,
 11.2468 +/*Bit16u LinBytesPerScanLine*/ 3200,
 11.2469 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2470 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2471 +/*Bit8u  LinRedMaskSize*/ 5,
 11.2472 +/*Bit8u  LinRedFieldPosition*/ 11,
 11.2473 +/*Bit8u  LinGreenMaskSize*/ 6,
 11.2474 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.2475 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.2476 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2477 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.2478 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.2479 +/*Bit32u MaxPixelClock*/ 0,
 11.2480 +} },
 11.2481 +{ 0x011f, /* 1600x1200x24 */
 11.2482 +{ /*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,
 11.2483 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2484 +/*Bit8u  WinBAttributes*/ 0,
 11.2485 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2486 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2487 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2488 +/*Bit16u WinBSegment*/ 0x0000,
 11.2489 +/*Bit32u WinFuncPtr*/ 0,
 11.2490 +/*Bit16u BytesPerScanLine*/ 4800,
 11.2491 +/*Bit16u XResolution*/ 1600,
 11.2492 +/*Bit16u YResolution*/ 1200,
 11.2493 +/*Bit8u  XCharSize*/ 8,
 11.2494 +/*Bit8u  YCharSize*/ 16,
 11.2495 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2496 +/*Bit8u  BitsPerPixel*/ 24,
 11.2497 +/*Bit8u  NumberOfBanks*/ 88,
 11.2498 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2499 +/*Bit8u  BankSize*/ 0,
 11.2500 +/*Bit8u  NumberOfImagePages*/ 0,
 11.2501 +/*Bit8u  Reserved_page*/ 0,
 11.2502 +/*Bit8u  RedMaskSize*/ 8,
 11.2503 +/*Bit8u  RedFieldPosition*/ 16,
 11.2504 +/*Bit8u  GreenMaskSize*/ 8,
 11.2505 +/*Bit8u  GreenFieldPosition*/ 8,
 11.2506 +/*Bit8u  BlueMaskSize*/ 8,
 11.2507 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2508 +/*Bit8u  RsvdMaskSize*/ 0,
 11.2509 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.2510 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2511 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2512 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2513 +/*Bit16u OffScreenMemSize*/ 0,
 11.2514 +/*Bit16u LinBytesPerScanLine*/ 4800,
 11.2515 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2516 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2517 +/*Bit8u  LinRedMaskSize*/ 8,
 11.2518 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.2519 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.2520 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.2521 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.2522 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2523 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.2524 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.2525 +/*Bit32u MaxPixelClock*/ 0,
 11.2526 +} },
 11.2527 +{ 0x0140, /* 320x200x32 */
 11.2528 +{ /*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,
 11.2529 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2530 +/*Bit8u  WinBAttributes*/ 0,
 11.2531 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2532 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2533 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2534 +/*Bit16u WinBSegment*/ 0x0000,
 11.2535 +/*Bit32u WinFuncPtr*/ 0,
 11.2536 +/*Bit16u BytesPerScanLine*/ 1280,
 11.2537 +/*Bit16u XResolution*/ 320,
 11.2538 +/*Bit16u YResolution*/ 200,
 11.2539 +/*Bit8u  XCharSize*/ 8,
 11.2540 +/*Bit8u  YCharSize*/ 16,
 11.2541 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2542 +/*Bit8u  BitsPerPixel*/ 32,
 11.2543 +/*Bit8u  NumberOfBanks*/ 4,
 11.2544 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2545 +/*Bit8u  BankSize*/ 0,
 11.2546 +/*Bit8u  NumberOfImagePages*/ 31,
 11.2547 +/*Bit8u  Reserved_page*/ 0,
 11.2548 +/*Bit8u  RedMaskSize*/ 8,
 11.2549 +/*Bit8u  RedFieldPosition*/ 16,
 11.2550 +/*Bit8u  GreenMaskSize*/ 8,
 11.2551 +/*Bit8u  GreenFieldPosition*/ 8,
 11.2552 +/*Bit8u  BlueMaskSize*/ 8,
 11.2553 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2554 +/*Bit8u  RsvdMaskSize*/ 8,
 11.2555 +/*Bit8u  RsvdFieldPosition*/ 24,
 11.2556 +/*Bit8u  DirectColorModeInfo*/ VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE,
 11.2557 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2558 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2559 +/*Bit16u OffScreenMemSize*/ 0,
 11.2560 +/*Bit16u LinBytesPerScanLine*/ 1280,
 11.2561 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2562 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2563 +/*Bit8u  LinRedMaskSize*/ 8,
 11.2564 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.2565 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.2566 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.2567 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.2568 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2569 +/*Bit8u  LinRsvdMaskSize*/ 8,
 11.2570 +/*Bit8u  LinRsvdFieldPosition*/ 24,
 11.2571 +/*Bit32u MaxPixelClock*/ 0,
 11.2572 +} },
 11.2573 +{ 0x0141, /* 640x400x32 */
 11.2574 +{ /*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,
 11.2575 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2576 +/*Bit8u  WinBAttributes*/ 0,
 11.2577 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2578 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2579 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2580 +/*Bit16u WinBSegment*/ 0x0000,
 11.2581 +/*Bit32u WinFuncPtr*/ 0,
 11.2582 +/*Bit16u BytesPerScanLine*/ 2560,
 11.2583 +/*Bit16u XResolution*/ 640,
 11.2584 +/*Bit16u YResolution*/ 400,
 11.2585 +/*Bit8u  XCharSize*/ 8,
 11.2586 +/*Bit8u  YCharSize*/ 16,
 11.2587 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2588 +/*Bit8u  BitsPerPixel*/ 32,
 11.2589 +/*Bit8u  NumberOfBanks*/ 16,
 11.2590 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2591 +/*Bit8u  BankSize*/ 0,
 11.2592 +/*Bit8u  NumberOfImagePages*/ 7,
 11.2593 +/*Bit8u  Reserved_page*/ 0,
 11.2594 +/*Bit8u  RedMaskSize*/ 8,
 11.2595 +/*Bit8u  RedFieldPosition*/ 16,
 11.2596 +/*Bit8u  GreenMaskSize*/ 8,
 11.2597 +/*Bit8u  GreenFieldPosition*/ 8,
 11.2598 +/*Bit8u  BlueMaskSize*/ 8,
 11.2599 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2600 +/*Bit8u  RsvdMaskSize*/ 8,
 11.2601 +/*Bit8u  RsvdFieldPosition*/ 24,
 11.2602 +/*Bit8u  DirectColorModeInfo*/ VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE,
 11.2603 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2604 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2605 +/*Bit16u OffScreenMemSize*/ 0,
 11.2606 +/*Bit16u LinBytesPerScanLine*/ 2560,
 11.2607 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2608 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2609 +/*Bit8u  LinRedMaskSize*/ 8,
 11.2610 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.2611 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.2612 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.2613 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.2614 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2615 +/*Bit8u  LinRsvdMaskSize*/ 8,
 11.2616 +/*Bit8u  LinRsvdFieldPosition*/ 24,
 11.2617 +/*Bit32u MaxPixelClock*/ 0,
 11.2618 +} },
 11.2619 +{ 0x0142, /* 640x480x32 */
 11.2620 +{ /*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,
 11.2621 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2622 +/*Bit8u  WinBAttributes*/ 0,
 11.2623 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2624 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2625 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2626 +/*Bit16u WinBSegment*/ 0x0000,
 11.2627 +/*Bit32u WinFuncPtr*/ 0,
 11.2628 +/*Bit16u BytesPerScanLine*/ 2560,
 11.2629 +/*Bit16u XResolution*/ 640,
 11.2630 +/*Bit16u YResolution*/ 480,
 11.2631 +/*Bit8u  XCharSize*/ 8,
 11.2632 +/*Bit8u  YCharSize*/ 16,
 11.2633 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2634 +/*Bit8u  BitsPerPixel*/ 32,
 11.2635 +/*Bit8u  NumberOfBanks*/ 19,
 11.2636 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2637 +/*Bit8u  BankSize*/ 0,
 11.2638 +/*Bit8u  NumberOfImagePages*/ 5,
 11.2639 +/*Bit8u  Reserved_page*/ 0,
 11.2640 +/*Bit8u  RedMaskSize*/ 8,
 11.2641 +/*Bit8u  RedFieldPosition*/ 16,
 11.2642 +/*Bit8u  GreenMaskSize*/ 8,
 11.2643 +/*Bit8u  GreenFieldPosition*/ 8,
 11.2644 +/*Bit8u  BlueMaskSize*/ 8,
 11.2645 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2646 +/*Bit8u  RsvdMaskSize*/ 8,
 11.2647 +/*Bit8u  RsvdFieldPosition*/ 24,
 11.2648 +/*Bit8u  DirectColorModeInfo*/ VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE,
 11.2649 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2650 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2651 +/*Bit16u OffScreenMemSize*/ 0,
 11.2652 +/*Bit16u LinBytesPerScanLine*/ 2560,
 11.2653 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2654 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2655 +/*Bit8u  LinRedMaskSize*/ 8,
 11.2656 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.2657 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.2658 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.2659 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.2660 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2661 +/*Bit8u  LinRsvdMaskSize*/ 8,
 11.2662 +/*Bit8u  LinRsvdFieldPosition*/ 24,
 11.2663 +/*Bit32u MaxPixelClock*/ 0,
 11.2664 +} },
 11.2665 +{ 0x0143, /* 800x600x32 */
 11.2666 +{ /*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,
 11.2667 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2668 +/*Bit8u  WinBAttributes*/ 0,
 11.2669 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2670 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2671 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2672 +/*Bit16u WinBSegment*/ 0x0000,
 11.2673 +/*Bit32u WinFuncPtr*/ 0,
 11.2674 +/*Bit16u BytesPerScanLine*/ 3200,
 11.2675 +/*Bit16u XResolution*/ 800,
 11.2676 +/*Bit16u YResolution*/ 600,
 11.2677 +/*Bit8u  XCharSize*/ 8,
 11.2678 +/*Bit8u  YCharSize*/ 16,
 11.2679 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2680 +/*Bit8u  BitsPerPixel*/ 32,
 11.2681 +/*Bit8u  NumberOfBanks*/ 30,
 11.2682 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2683 +/*Bit8u  BankSize*/ 0,
 11.2684 +/*Bit8u  NumberOfImagePages*/ 3,
 11.2685 +/*Bit8u  Reserved_page*/ 0,
 11.2686 +/*Bit8u  RedMaskSize*/ 8,
 11.2687 +/*Bit8u  RedFieldPosition*/ 16,
 11.2688 +/*Bit8u  GreenMaskSize*/ 8,
 11.2689 +/*Bit8u  GreenFieldPosition*/ 8,
 11.2690 +/*Bit8u  BlueMaskSize*/ 8,
 11.2691 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2692 +/*Bit8u  RsvdMaskSize*/ 8,
 11.2693 +/*Bit8u  RsvdFieldPosition*/ 24,
 11.2694 +/*Bit8u  DirectColorModeInfo*/ VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE,
 11.2695 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2696 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2697 +/*Bit16u OffScreenMemSize*/ 0,
 11.2698 +/*Bit16u LinBytesPerScanLine*/ 3200,
 11.2699 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2700 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2701 +/*Bit8u  LinRedMaskSize*/ 8,
 11.2702 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.2703 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.2704 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.2705 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.2706 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2707 +/*Bit8u  LinRsvdMaskSize*/ 8,
 11.2708 +/*Bit8u  LinRsvdFieldPosition*/ 24,
 11.2709 +/*Bit32u MaxPixelClock*/ 0,
 11.2710 +} },
 11.2711 +{ 0x0144, /* 1024x768x32 */
 11.2712 +{ /*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,
 11.2713 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2714 +/*Bit8u  WinBAttributes*/ 0,
 11.2715 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2716 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2717 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2718 +/*Bit16u WinBSegment*/ 0x0000,
 11.2719 +/*Bit32u WinFuncPtr*/ 0,
 11.2720 +/*Bit16u BytesPerScanLine*/ 4096,
 11.2721 +/*Bit16u XResolution*/ 1024,
 11.2722 +/*Bit16u YResolution*/ 768,
 11.2723 +/*Bit8u  XCharSize*/ 8,
 11.2724 +/*Bit8u  YCharSize*/ 16,
 11.2725 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2726 +/*Bit8u  BitsPerPixel*/ 32,
 11.2727 +/*Bit8u  NumberOfBanks*/ 48,
 11.2728 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2729 +/*Bit8u  BankSize*/ 0,
 11.2730 +/*Bit8u  NumberOfImagePages*/ 1,
 11.2731 +/*Bit8u  Reserved_page*/ 0,
 11.2732 +/*Bit8u  RedMaskSize*/ 8,
 11.2733 +/*Bit8u  RedFieldPosition*/ 16,
 11.2734 +/*Bit8u  GreenMaskSize*/ 8,
 11.2735 +/*Bit8u  GreenFieldPosition*/ 8,
 11.2736 +/*Bit8u  BlueMaskSize*/ 8,
 11.2737 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2738 +/*Bit8u  RsvdMaskSize*/ 8,
 11.2739 +/*Bit8u  RsvdFieldPosition*/ 24,
 11.2740 +/*Bit8u  DirectColorModeInfo*/ VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE,
 11.2741 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2742 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2743 +/*Bit16u OffScreenMemSize*/ 0,
 11.2744 +/*Bit16u LinBytesPerScanLine*/ 4096,
 11.2745 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2746 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2747 +/*Bit8u  LinRedMaskSize*/ 8,
 11.2748 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.2749 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.2750 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.2751 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.2752 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2753 +/*Bit8u  LinRsvdMaskSize*/ 8,
 11.2754 +/*Bit8u  LinRsvdFieldPosition*/ 24,
 11.2755 +/*Bit32u MaxPixelClock*/ 0,
 11.2756 +} },
 11.2757 +{ 0x0145, /* 1280x1024x32 */
 11.2758 +{ /*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,
 11.2759 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2760 +/*Bit8u  WinBAttributes*/ 0,
 11.2761 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2762 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2763 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2764 +/*Bit16u WinBSegment*/ 0x0000,
 11.2765 +/*Bit32u WinFuncPtr*/ 0,
 11.2766 +/*Bit16u BytesPerScanLine*/ 5120,
 11.2767 +/*Bit16u XResolution*/ 1280,
 11.2768 +/*Bit16u YResolution*/ 1024,
 11.2769 +/*Bit8u  XCharSize*/ 8,
 11.2770 +/*Bit8u  YCharSize*/ 16,
 11.2771 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2772 +/*Bit8u  BitsPerPixel*/ 32,
 11.2773 +/*Bit8u  NumberOfBanks*/ 80,
 11.2774 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2775 +/*Bit8u  BankSize*/ 0,
 11.2776 +/*Bit8u  NumberOfImagePages*/ 0,
 11.2777 +/*Bit8u  Reserved_page*/ 0,
 11.2778 +/*Bit8u  RedMaskSize*/ 8,
 11.2779 +/*Bit8u  RedFieldPosition*/ 16,
 11.2780 +/*Bit8u  GreenMaskSize*/ 8,
 11.2781 +/*Bit8u  GreenFieldPosition*/ 8,
 11.2782 +/*Bit8u  BlueMaskSize*/ 8,
 11.2783 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2784 +/*Bit8u  RsvdMaskSize*/ 8,
 11.2785 +/*Bit8u  RsvdFieldPosition*/ 24,
 11.2786 +/*Bit8u  DirectColorModeInfo*/ VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE,
 11.2787 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2788 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2789 +/*Bit16u OffScreenMemSize*/ 0,
 11.2790 +/*Bit16u LinBytesPerScanLine*/ 5120,
 11.2791 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2792 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2793 +/*Bit8u  LinRedMaskSize*/ 8,
 11.2794 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.2795 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.2796 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.2797 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.2798 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2799 +/*Bit8u  LinRsvdMaskSize*/ 8,
 11.2800 +/*Bit8u  LinRsvdFieldPosition*/ 24,
 11.2801 +/*Bit32u MaxPixelClock*/ 0,
 11.2802 +} },
 11.2803 +{ 0x0146, /* 320x200x8 */
 11.2804 +{ /*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,
 11.2805 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2806 +/*Bit8u  WinBAttributes*/ 0,
 11.2807 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2808 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2809 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2810 +/*Bit16u WinBSegment*/ 0x0000,
 11.2811 +/*Bit32u WinFuncPtr*/ 0,
 11.2812 +/*Bit16u BytesPerScanLine*/ 320,
 11.2813 +/*Bit16u XResolution*/ 320,
 11.2814 +/*Bit16u YResolution*/ 200,
 11.2815 +/*Bit8u  XCharSize*/ 8,
 11.2816 +/*Bit8u  YCharSize*/ 16,
 11.2817 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2818 +/*Bit8u  BitsPerPixel*/ 8,
 11.2819 +/*Bit8u  NumberOfBanks*/ 1,
 11.2820 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL,
 11.2821 +/*Bit8u  BankSize*/ 0,
 11.2822 +/*Bit8u  NumberOfImagePages*/ 130,
 11.2823 +/*Bit8u  Reserved_page*/ 0,
 11.2824 +/*Bit8u  RedMaskSize*/ 0,
 11.2825 +/*Bit8u  RedFieldPosition*/ 0,
 11.2826 +/*Bit8u  GreenMaskSize*/ 0,
 11.2827 +/*Bit8u  GreenFieldPosition*/ 0,
 11.2828 +/*Bit8u  BlueMaskSize*/ 0,
 11.2829 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2830 +/*Bit8u  RsvdMaskSize*/ 0,
 11.2831 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.2832 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2833 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2834 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2835 +/*Bit16u OffScreenMemSize*/ 0,
 11.2836 +/*Bit16u LinBytesPerScanLine*/ 320,
 11.2837 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2838 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2839 +/*Bit8u  LinRedMaskSize*/ 0,
 11.2840 +/*Bit8u  LinRedFieldPosition*/ 0,
 11.2841 +/*Bit8u  LinGreenMaskSize*/ 0,
 11.2842 +/*Bit8u  LinGreenFieldPosition*/ 0,
 11.2843 +/*Bit8u  LinBlueMaskSize*/ 0,
 11.2844 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2845 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.2846 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.2847 +/*Bit32u MaxPixelClock*/ 0,
 11.2848 +} },
 11.2849 +{ 0x0147, /* 1600x1200x32 */
 11.2850 +{ /*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,
 11.2851 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2852 +/*Bit8u  WinBAttributes*/ 0,
 11.2853 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2854 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2855 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2856 +/*Bit16u WinBSegment*/ 0x0000,
 11.2857 +/*Bit32u WinFuncPtr*/ 0,
 11.2858 +/*Bit16u BytesPerScanLine*/ 6400,
 11.2859 +/*Bit16u XResolution*/ 1600,
 11.2860 +/*Bit16u YResolution*/ 1200,
 11.2861 +/*Bit8u  XCharSize*/ 8,
 11.2862 +/*Bit8u  YCharSize*/ 16,
 11.2863 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2864 +/*Bit8u  BitsPerPixel*/ 32,
 11.2865 +/*Bit8u  NumberOfBanks*/ 118,
 11.2866 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2867 +/*Bit8u  BankSize*/ 0,
 11.2868 +/*Bit8u  NumberOfImagePages*/ 0,
 11.2869 +/*Bit8u  Reserved_page*/ 0,
 11.2870 +/*Bit8u  RedMaskSize*/ 8,
 11.2871 +/*Bit8u  RedFieldPosition*/ 16,
 11.2872 +/*Bit8u  GreenMaskSize*/ 8,
 11.2873 +/*Bit8u  GreenFieldPosition*/ 8,
 11.2874 +/*Bit8u  BlueMaskSize*/ 8,
 11.2875 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2876 +/*Bit8u  RsvdMaskSize*/ 8,
 11.2877 +/*Bit8u  RsvdFieldPosition*/ 24,
 11.2878 +/*Bit8u  DirectColorModeInfo*/ VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE,
 11.2879 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2880 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2881 +/*Bit16u OffScreenMemSize*/ 0,
 11.2882 +/*Bit16u LinBytesPerScanLine*/ 6400,
 11.2883 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2884 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2885 +/*Bit8u  LinRedMaskSize*/ 8,
 11.2886 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.2887 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.2888 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.2889 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.2890 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2891 +/*Bit8u  LinRsvdMaskSize*/ 8,
 11.2892 +/*Bit8u  LinRsvdFieldPosition*/ 24,
 11.2893 +/*Bit32u MaxPixelClock*/ 0,
 11.2894 +} },
 11.2895 +{ 0x0148, /* 1152x864x8 */
 11.2896 +{ /*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,
 11.2897 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2898 +/*Bit8u  WinBAttributes*/ 0,
 11.2899 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2900 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2901 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2902 +/*Bit16u WinBSegment*/ 0x0000,
 11.2903 +/*Bit32u WinFuncPtr*/ 0,
 11.2904 +/*Bit16u BytesPerScanLine*/ 1152,
 11.2905 +/*Bit16u XResolution*/ 1152,
 11.2906 +/*Bit16u YResolution*/ 864,
 11.2907 +/*Bit8u  XCharSize*/ 8,
 11.2908 +/*Bit8u  YCharSize*/ 16,
 11.2909 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2910 +/*Bit8u  BitsPerPixel*/ 8,
 11.2911 +/*Bit8u  NumberOfBanks*/ 16,
 11.2912 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_PACKED_PIXEL,
 11.2913 +/*Bit8u  BankSize*/ 0,
 11.2914 +/*Bit8u  NumberOfImagePages*/ 7,
 11.2915 +/*Bit8u  Reserved_page*/ 0,
 11.2916 +/*Bit8u  RedMaskSize*/ 0,
 11.2917 +/*Bit8u  RedFieldPosition*/ 0,
 11.2918 +/*Bit8u  GreenMaskSize*/ 0,
 11.2919 +/*Bit8u  GreenFieldPosition*/ 0,
 11.2920 +/*Bit8u  BlueMaskSize*/ 0,
 11.2921 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2922 +/*Bit8u  RsvdMaskSize*/ 0,
 11.2923 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.2924 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2925 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2926 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2927 +/*Bit16u OffScreenMemSize*/ 0,
 11.2928 +/*Bit16u LinBytesPerScanLine*/ 1152,
 11.2929 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2930 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2931 +/*Bit8u  LinRedMaskSize*/ 0,
 11.2932 +/*Bit8u  LinRedFieldPosition*/ 0,
 11.2933 +/*Bit8u  LinGreenMaskSize*/ 0,
 11.2934 +/*Bit8u  LinGreenFieldPosition*/ 0,
 11.2935 +/*Bit8u  LinBlueMaskSize*/ 0,
 11.2936 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2937 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.2938 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.2939 +/*Bit32u MaxPixelClock*/ 0,
 11.2940 +} },
 11.2941 +{ 0x0149, /* 1152x864x15 */
 11.2942 +{ /*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,
 11.2943 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2944 +/*Bit8u  WinBAttributes*/ 0,
 11.2945 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2946 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2947 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2948 +/*Bit16u WinBSegment*/ 0x0000,
 11.2949 +/*Bit32u WinFuncPtr*/ 0,
 11.2950 +/*Bit16u BytesPerScanLine*/ 2304,
 11.2951 +/*Bit16u XResolution*/ 1152,
 11.2952 +/*Bit16u YResolution*/ 864,
 11.2953 +/*Bit8u  XCharSize*/ 8,
 11.2954 +/*Bit8u  YCharSize*/ 16,
 11.2955 +/*Bit8u  NumberOfPlanes*/ 1,
 11.2956 +/*Bit8u  BitsPerPixel*/ 15,
 11.2957 +/*Bit8u  NumberOfBanks*/ 31,
 11.2958 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.2959 +/*Bit8u  BankSize*/ 0,
 11.2960 +/*Bit8u  NumberOfImagePages*/ 3,
 11.2961 +/*Bit8u  Reserved_page*/ 0,
 11.2962 +/*Bit8u  RedMaskSize*/ 5,
 11.2963 +/*Bit8u  RedFieldPosition*/ 10,
 11.2964 +/*Bit8u  GreenMaskSize*/ 5,
 11.2965 +/*Bit8u  GreenFieldPosition*/ 5,
 11.2966 +/*Bit8u  BlueMaskSize*/ 5,
 11.2967 +/*Bit8u  BlueFieldPosition*/ 0,
 11.2968 +/*Bit8u  RsvdMaskSize*/ 1,
 11.2969 +/*Bit8u  RsvdFieldPosition*/ 15,
 11.2970 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.2971 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.2972 +/*Bit32u OffScreenMemOffset*/ 0,
 11.2973 +/*Bit16u OffScreenMemSize*/ 0,
 11.2974 +/*Bit16u LinBytesPerScanLine*/ 2304,
 11.2975 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.2976 +/*Bit8u  LinNumberOfPages*/ 0,
 11.2977 +/*Bit8u  LinRedMaskSize*/ 5,
 11.2978 +/*Bit8u  LinRedFieldPosition*/ 10,
 11.2979 +/*Bit8u  LinGreenMaskSize*/ 5,
 11.2980 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.2981 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.2982 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.2983 +/*Bit8u  LinRsvdMaskSize*/ 1,
 11.2984 +/*Bit8u  LinRsvdFieldPosition*/ 15,
 11.2985 +/*Bit32u MaxPixelClock*/ 0,
 11.2986 +} },
 11.2987 +{ 0x014a, /* 1152x864x16 */
 11.2988 +{ /*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,
 11.2989 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.2990 +/*Bit8u  WinBAttributes*/ 0,
 11.2991 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.2992 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.2993 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.2994 +/*Bit16u WinBSegment*/ 0x0000,
 11.2995 +/*Bit32u WinFuncPtr*/ 0,
 11.2996 +/*Bit16u BytesPerScanLine*/ 2304,
 11.2997 +/*Bit16u XResolution*/ 1152,
 11.2998 +/*Bit16u YResolution*/ 864,
 11.2999 +/*Bit8u  XCharSize*/ 8,
 11.3000 +/*Bit8u  YCharSize*/ 16,
 11.3001 +/*Bit8u  NumberOfPlanes*/ 1,
 11.3002 +/*Bit8u  BitsPerPixel*/ 16,
 11.3003 +/*Bit8u  NumberOfBanks*/ 31,
 11.3004 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.3005 +/*Bit8u  BankSize*/ 0,
 11.3006 +/*Bit8u  NumberOfImagePages*/ 3,
 11.3007 +/*Bit8u  Reserved_page*/ 0,
 11.3008 +/*Bit8u  RedMaskSize*/ 5,
 11.3009 +/*Bit8u  RedFieldPosition*/ 11,
 11.3010 +/*Bit8u  GreenMaskSize*/ 6,
 11.3011 +/*Bit8u  GreenFieldPosition*/ 5,
 11.3012 +/*Bit8u  BlueMaskSize*/ 5,
 11.3013 +/*Bit8u  BlueFieldPosition*/ 0,
 11.3014 +/*Bit8u  RsvdMaskSize*/ 0,
 11.3015 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.3016 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.3017 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.3018 +/*Bit32u OffScreenMemOffset*/ 0,
 11.3019 +/*Bit16u OffScreenMemSize*/ 0,
 11.3020 +/*Bit16u LinBytesPerScanLine*/ 2304,
 11.3021 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.3022 +/*Bit8u  LinNumberOfPages*/ 0,
 11.3023 +/*Bit8u  LinRedMaskSize*/ 5,
 11.3024 +/*Bit8u  LinRedFieldPosition*/ 11,
 11.3025 +/*Bit8u  LinGreenMaskSize*/ 6,
 11.3026 +/*Bit8u  LinGreenFieldPosition*/ 5,
 11.3027 +/*Bit8u  LinBlueMaskSize*/ 5,
 11.3028 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.3029 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.3030 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.3031 +/*Bit32u MaxPixelClock*/ 0,
 11.3032 +} },
 11.3033 +{ 0x014b, /* 1152x864x24 */
 11.3034 +{ /*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,
 11.3035 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.3036 +/*Bit8u  WinBAttributes*/ 0,
 11.3037 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.3038 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.3039 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.3040 +/*Bit16u WinBSegment*/ 0x0000,
 11.3041 +/*Bit32u WinFuncPtr*/ 0,
 11.3042 +/*Bit16u BytesPerScanLine*/ 3456,
 11.3043 +/*Bit16u XResolution*/ 1152,
 11.3044 +/*Bit16u YResolution*/ 864,
 11.3045 +/*Bit8u  XCharSize*/ 8,
 11.3046 +/*Bit8u  YCharSize*/ 16,
 11.3047 +/*Bit8u  NumberOfPlanes*/ 1,
 11.3048 +/*Bit8u  BitsPerPixel*/ 24,
 11.3049 +/*Bit8u  NumberOfBanks*/ 46,
 11.3050 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.3051 +/*Bit8u  BankSize*/ 0,
 11.3052 +/*Bit8u  NumberOfImagePages*/ 1,
 11.3053 +/*Bit8u  Reserved_page*/ 0,
 11.3054 +/*Bit8u  RedMaskSize*/ 8,
 11.3055 +/*Bit8u  RedFieldPosition*/ 16,
 11.3056 +/*Bit8u  GreenMaskSize*/ 8,
 11.3057 +/*Bit8u  GreenFieldPosition*/ 8,
 11.3058 +/*Bit8u  BlueMaskSize*/ 8,
 11.3059 +/*Bit8u  BlueFieldPosition*/ 0,
 11.3060 +/*Bit8u  RsvdMaskSize*/ 0,
 11.3061 +/*Bit8u  RsvdFieldPosition*/ 0,
 11.3062 +/*Bit8u  DirectColorModeInfo*/ 0,
 11.3063 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.3064 +/*Bit32u OffScreenMemOffset*/ 0,
 11.3065 +/*Bit16u OffScreenMemSize*/ 0,
 11.3066 +/*Bit16u LinBytesPerScanLine*/ 3456,
 11.3067 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.3068 +/*Bit8u  LinNumberOfPages*/ 0,
 11.3069 +/*Bit8u  LinRedMaskSize*/ 8,
 11.3070 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.3071 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.3072 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.3073 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.3074 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.3075 +/*Bit8u  LinRsvdMaskSize*/ 0,
 11.3076 +/*Bit8u  LinRsvdFieldPosition*/ 0,
 11.3077 +/*Bit32u MaxPixelClock*/ 0,
 11.3078 +} },
 11.3079 +{ 0x014c, /* 1152x864x32 */
 11.3080 +{ /*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,
 11.3081 +/*Bit8u  WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE,
 11.3082 +/*Bit8u  WinBAttributes*/ 0,
 11.3083 +/*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB,
 11.3084 +/*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB,
 11.3085 +/*Bit16u WinASegment*/ VGAMEM_GRAPH,
 11.3086 +/*Bit16u WinBSegment*/ 0x0000,
 11.3087 +/*Bit32u WinFuncPtr*/ 0,
 11.3088 +/*Bit16u BytesPerScanLine*/ 4608,
 11.3089 +/*Bit16u XResolution*/ 1152,
 11.3090 +/*Bit16u YResolution*/ 864,
 11.3091 +/*Bit8u  XCharSize*/ 8,
 11.3092 +/*Bit8u  YCharSize*/ 16,
 11.3093 +/*Bit8u  NumberOfPlanes*/ 1,
 11.3094 +/*Bit8u  BitsPerPixel*/ 32,
 11.3095 +/*Bit8u  NumberOfBanks*/ 61,
 11.3096 +/*Bit8u  MemoryModel*/ VBE_MEMORYMODEL_DIRECT_COLOR,
 11.3097 +/*Bit8u  BankSize*/ 0,
 11.3098 +/*Bit8u  NumberOfImagePages*/ 1,
 11.3099 +/*Bit8u  Reserved_page*/ 0,
 11.3100 +/*Bit8u  RedMaskSize*/ 8,
 11.3101 +/*Bit8u  RedFieldPosition*/ 16,
 11.3102 +/*Bit8u  GreenMaskSize*/ 8,
 11.3103 +/*Bit8u  GreenFieldPosition*/ 8,
 11.3104 +/*Bit8u  BlueMaskSize*/ 8,
 11.3105 +/*Bit8u  BlueFieldPosition*/ 0,
 11.3106 +/*Bit8u  RsvdMaskSize*/ 8,
 11.3107 +/*Bit8u  RsvdFieldPosition*/ 24,
 11.3108 +/*Bit8u  DirectColorModeInfo*/ VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE,
 11.3109 +/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
 11.3110 +/*Bit32u OffScreenMemOffset*/ 0,
 11.3111 +/*Bit16u OffScreenMemSize*/ 0,
 11.3112 +/*Bit16u LinBytesPerScanLine*/ 4608,
 11.3113 +/*Bit8u  BnkNumberOfPages*/ 0,
 11.3114 +/*Bit8u  LinNumberOfPages*/ 0,
 11.3115 +/*Bit8u  LinRedMaskSize*/ 8,
 11.3116 +/*Bit8u  LinRedFieldPosition*/ 16,
 11.3117 +/*Bit8u  LinGreenMaskSize*/ 8,
 11.3118 +/*Bit8u  LinGreenFieldPosition*/ 8,
 11.3119 +/*Bit8u  LinBlueMaskSize*/ 8,
 11.3120 +/*Bit8u  LinBlueFieldPosition*/ 0,
 11.3121 +/*Bit8u  LinRsvdMaskSize*/ 8,
 11.3122 +/*Bit8u  LinRsvdFieldPosition*/ 24,
 11.3123 +/*Bit32u MaxPixelClock*/ 0,
 11.3124 +} },
 11.3125 +{ VBE_VESA_MODE_END_OF_LIST,
 11.3126 +{ 0,
 11.3127 +} },
 11.3128  };
 11.3129 -
 11.3130 -#endif
    12.1 --- a/tools/firmware/vgabios/vgabios.c	Fri Jul 04 12:39:18 2008 +0100
    12.2 +++ b/tools/firmware/vgabios/vgabios.c	Fri Jul 04 13:02:31 2008 +0100
    12.3 @@ -4,7 +4,7 @@
    12.4   */
    12.5  // ============================================================================================
    12.6  //  
    12.7 -//  Copyright (C) 2001,2002 the LGPL VGABios developers Team
    12.8 +//  Copyright (C) 2001-2008 the LGPL VGABios developers Team
    12.9  //
   12.10  //  This library is free software; you can redistribute it and/or
   12.11  //  modify it under the terms of the GNU Lesser General Public
   12.12 @@ -54,7 +54,6 @@
   12.13  #include "vbe.h"
   12.14  #endif
   12.15  
   12.16 -#undef	DEBUG
   12.17  #define USE_BX_INFO
   12.18  
   12.19  /* Declares */
   12.20 @@ -110,8 +109,9 @@ static void biosfn_enable_video_refresh_
   12.21  static void biosfn_write_string();
   12.22  static void biosfn_read_state_info();
   12.23  static void biosfn_read_video_state_size();
   12.24 -static void biosfn_save_video_state();
   12.25 -static void biosfn_restore_video_state();
   12.26 +static Bit16u biosfn_save_video_state();
   12.27 +static Bit16u biosfn_restore_video_state();
   12.28 +extern Bit8u video_save_pointer_table[];
   12.29  
   12.30  // This is for compiling with gcc2 and gcc3
   12.31  #define ASM_START #asm
   12.32 @@ -149,16 +149,24 @@ vgabios_entry_point:
   12.33             
   12.34    jmp vgabios_init_func
   12.35  
   12.36 -vgabios_name:
   12.37 -.ascii	"Plex86/Bochs VGABios"
   12.38 -.ascii	" "
   12.39 -.byte	0x00
   12.40 +#ifdef PCIBIOS
   12.41 +.org 0x18
   12.42 +.word vgabios_pci_data
   12.43 +#endif
   12.44  
   12.45  // Info from Bart Oldeman
   12.46  .org 0x1e
   12.47  .ascii  "IBM"
   12.48  .byte   0x00
   12.49  
   12.50 +vgabios_name:
   12.51 +.ascii	"Plex86/Bochs VGABios"
   12.52 +#ifdef PCIBIOS
   12.53 +.ascii	" (PCI)"
   12.54 +#endif
   12.55 +.ascii	" "
   12.56 +.byte	0x00
   12.57 +
   12.58  vgabios_version:
   12.59  #ifndef VGABIOS_VERS
   12.60  .ascii	"current-cvs"
   12.61 @@ -173,7 +181,7 @@ vgabios_date:
   12.62  .byte	0x00
   12.63  
   12.64  vgabios_copyright:
   12.65 -.ascii	"(C) 2003 the LGPL VGABios developers Team"
   12.66 +.ascii	"(C) 2008 the LGPL VGABios developers Team"
   12.67  .byte	0x0a,0x0d
   12.68  .byte	0x00
   12.69  
   12.70 @@ -194,7 +202,28 @@ vgabios_website:
   12.71  .byte	0x0a,0x0d
   12.72  .byte	0x0a,0x0d
   12.73  .byte	0x00
   12.74 - 
   12.75 +
   12.76 +#ifdef PCIBIOS
   12.77 +vgabios_pci_data:
   12.78 +.ascii "PCIR"
   12.79 +#ifdef CIRRUS
   12.80 +.word 0x1013
   12.81 +.word 0x00b8 // CLGD5446
   12.82 +#else
   12.83 +#error "Unknown PCI vendor and device id"
   12.84 +#endif
   12.85 +.word 0 // reserved
   12.86 +.word 0x18 // dlen
   12.87 +.byte 0 // revision
   12.88 +.byte 0x0 // class,hi: vga display
   12.89 +.word 0x300 // class,lo: vga display
   12.90 +.word 0x40 // bios size
   12.91 +.word 1 // revision
   12.92 +.byte 0 // intel x86 data
   12.93 +.byte 0x80 // last image
   12.94 +.word 0 // reserved
   12.95 +#endif
   12.96 +
   12.97  
   12.98  ;; ============================================================================================
   12.99  ;;
  12.100 @@ -348,8 +377,13 @@ int10_test_vbe_07:
  12.101    jmp   int10_end
  12.102  int10_test_vbe_08:
  12.103    cmp   al, #0x08
  12.104 +  jne   int10_test_vbe_0A
  12.105 +  call  vbe_biosfn_set_get_dac_palette_format
  12.106 +  jmp   int10_end
  12.107 +int10_test_vbe_0A:
  12.108 +  cmp   al, #0x0A
  12.109    jne   int10_normal
  12.110 -  call  vbe_biosfn_set_get_dac_palette_format
  12.111 +  call  vbe_biosfn_return_protected_mode_interface
  12.112    jmp   int10_end
  12.113  #endif
  12.114  
  12.115 @@ -403,7 +437,7 @@ init_vga_card:
  12.116  
  12.117  #if defined(USE_BX_INFO) || defined(DEBUG)
  12.118  msg_vga_init:
  12.119 -.ascii "VGABios $Id: vgabios.c,v 1.61 2005/05/24 16:50:50 vruppert Exp $"
  12.120 +.ascii "VGABios $Id: vgabios.c,v 1.67 2008/01/27 09:44:12 vruppert Exp $"
  12.121  .byte 0x0d,0x0a,0x00
  12.122  #endif
  12.123  ASM_END
  12.124 @@ -422,6 +456,8 @@ init_bios_area:
  12.125    mov   bx, # BIOSMEM_INITIAL_MODE
  12.126    mov   ax, [bx]
  12.127    and   ax, #0xffcf
  12.128 +;; set 80x25 color (not clear from RBIL but usual)
  12.129 +  or    ax, #0x0020
  12.130    mov   [bx], ax
  12.131  
  12.132  ;; Just for the first int10 find its children
  12.133 @@ -453,6 +489,29 @@ init_bios_area:
  12.134  
  12.135    pop ds
  12.136    ret
  12.137 +
  12.138 +_video_save_pointer_table:
  12.139 +  .word _video_param_table
  12.140 +  .word 0xc000
  12.141 +
  12.142 +  .word 0 /* XXX: fill it */
  12.143 +  .word 0
  12.144 +
  12.145 +  .word 0 /* XXX: fill it */
  12.146 +  .word 0
  12.147 +
  12.148 +  .word 0 /* XXX: fill it */
  12.149 +  .word 0
  12.150 +
  12.151 +  .word 0 /* XXX: fill it */
  12.152 +  .word 0
  12.153 +
  12.154 +  .word 0 /* XXX: fill it */
  12.155 +  .word 0
  12.156 +
  12.157 +  .word 0 /* XXX: fill it */
  12.158 +  .word 0
  12.159 +
  12.160  ASM_END
  12.161  
  12.162  // --------------------------------------------------------------------------------------------
  12.163 @@ -718,12 +777,7 @@ static void int10_func(DI, SI, BP, SP, B
  12.164            vbe_biosfn_set_mode(&AX,BX,ES,DI);
  12.165            break;
  12.166           case 0x04:
  12.167 -          //FIXME
  12.168 -#ifdef DEBUG
  12.169 -          unimplemented();
  12.170 -#endif
  12.171 -          // function failed
  12.172 -          AX=0x100;
  12.173 +          vbe_biosfn_save_restore_state(&AX, CX, DX, ES, &BX);
  12.174            break;
  12.175           case 0x09:
  12.176            //FIXME
  12.177 @@ -774,8 +828,8 @@ static void biosfn_set_video_mode(mode) 
  12.178  
  12.179   // Should we clear the screen ?
  12.180   Bit8u noclearmem=mode&0x80;
  12.181 - Bit8u line,mmask,*palette;
  12.182 - Bit16u i,twidth,theight,cheight;
  12.183 + Bit8u line,mmask,*palette,vpti;
  12.184 + Bit16u i,twidth,theightm1,cheight;
  12.185   Bit8u modeset_ctl,video_ctl,vga_switches;
  12.186   Bit16u crtc_addr;
  12.187   
  12.188 @@ -798,9 +852,10 @@ static void biosfn_set_video_mode(mode) 
  12.189   if(line==0xFF)
  12.190    return;
  12.191  
  12.192 - twidth=vga_modes[line].twidth;
  12.193 - theight=vga_modes[line].theight;
  12.194 - cheight=vga_modes[line].cheight;
  12.195 + vpti=line_to_vpti[line];
  12.196 + twidth=video_param_table[vpti].twidth;
  12.197 + theightm1=video_param_table[vpti].theightm1;
  12.198 + cheight=video_param_table[vpti].cheight;
  12.199   
  12.200   // Read the bios vga control
  12.201   video_ctl=read_byte(BIOSMEM_SEG,BIOSMEM_VIDEO_CTL);
  12.202 @@ -837,11 +892,9 @@ static void biosfn_set_video_mode(mode) 
  12.203        palette=&palette3;
  12.204        break;
  12.205      }
  12.206 -
  12.207     // Always 256*3 values
  12.208     for(i=0;i<0x0100;i++)
  12.209 -    {
  12.210 -    if(i<=dac_regs[vga_modes[line].dacmodel])
  12.211 +    {if(i<=dac_regs[vga_modes[line].dacmodel])
  12.212        {outb(VGAREG_DAC_DATA,palette[(i*3)+0]);
  12.213         outb(VGAREG_DAC_DATA,palette[(i*3)+1]);
  12.214         outb(VGAREG_DAC_DATA,palette[(i*3)+2]);
  12.215 @@ -862,21 +915,25 @@ static void biosfn_set_video_mode(mode) 
  12.216   inb(VGAREG_ACTL_RESET);
  12.217  
  12.218   // Set Attribute Ctl
  12.219 - for(i=0;i<=ACTL_MAX_REG;i++)
  12.220 + for(i=0;i<=0x13;i++)
  12.221    {outb(VGAREG_ACTL_ADDRESS,i);
  12.222 -   outb(VGAREG_ACTL_WRITE_DATA,actl_regs[vga_modes[line].actlmodel][i]);
  12.223 +   outb(VGAREG_ACTL_WRITE_DATA,video_param_table[vpti].actl_regs[i]);
  12.224    }
  12.225 + outb(VGAREG_ACTL_ADDRESS,0x14);
  12.226 + outb(VGAREG_ACTL_WRITE_DATA,0x00);
  12.227  
  12.228   // Set Sequencer Ctl
  12.229 - for(i=0;i<=SEQU_MAX_REG;i++)
  12.230 + outb(VGAREG_SEQU_ADDRESS,0);
  12.231 + outb(VGAREG_SEQU_DATA,0x03);
  12.232 + for(i=1;i<=4;i++)
  12.233    {outb(VGAREG_SEQU_ADDRESS,i);
  12.234 -   outb(VGAREG_SEQU_DATA,sequ_regs[vga_modes[line].sequmodel][i]);
  12.235 +   outb(VGAREG_SEQU_DATA,video_param_table[vpti].sequ_regs[i - 1]);
  12.236    }
  12.237  
  12.238   // Set Grafx Ctl
  12.239 - for(i=0;i<=GRDC_MAX_REG;i++)
  12.240 + for(i=0;i<=8;i++)
  12.241    {outb(VGAREG_GRDC_ADDRESS,i);
  12.242 -   outb(VGAREG_GRDC_DATA,grdc_regs[vga_modes[line].grdcmodel][i]);
  12.243 +   outb(VGAREG_GRDC_DATA,video_param_table[vpti].grdc_regs[i]);
  12.244    }
  12.245  
  12.246   // Set CRTC address VGA or MDA 
  12.247 @@ -885,13 +942,13 @@ static void biosfn_set_video_mode(mode) 
  12.248   // Disable CRTC write protection
  12.249   outw(crtc_addr,0x0011);
  12.250   // Set CRTC regs
  12.251 - for(i=0;i<=CRTC_MAX_REG;i++)
  12.252 + for(i=0;i<=0x18;i++)
  12.253    {outb(crtc_addr,i);
  12.254 -   outb(crtc_addr+1,crtc_regs[vga_modes[line].crtcmodel][i]);
  12.255 +   outb(crtc_addr+1,video_param_table[vpti].crtc_regs[i]);
  12.256    }
  12.257  
  12.258   // Set the misc register
  12.259 - outb(VGAREG_WRITE_MISC_OUTPUT,vga_modes[line].miscreg);
  12.260 + outb(VGAREG_WRITE_MISC_OUTPUT,video_param_table[vpti].miscreg);
  12.261  
  12.262   // Enable video
  12.263   outb(VGAREG_ACTL_ADDRESS,0x20);
  12.264 @@ -923,9 +980,9 @@ static void biosfn_set_video_mode(mode) 
  12.265   // Set the BIOS mem
  12.266   write_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MODE,mode);
  12.267   write_word(BIOSMEM_SEG,BIOSMEM_NB_COLS,twidth);
  12.268 - write_word(BIOSMEM_SEG,BIOSMEM_PAGE_SIZE,vga_modes[line].slength);
  12.269 + write_word(BIOSMEM_SEG,BIOSMEM_PAGE_SIZE,*(Bit16u *)&video_param_table[vpti].slength_l);
  12.270   write_word(BIOSMEM_SEG,BIOSMEM_CRTC_ADDRESS,crtc_addr);
  12.271 - write_byte(BIOSMEM_SEG,BIOSMEM_NB_ROWS,theight-1);
  12.272 + write_byte(BIOSMEM_SEG,BIOSMEM_NB_ROWS,theightm1);
  12.273   write_word(BIOSMEM_SEG,BIOSMEM_CHAR_HEIGHT,cheight);
  12.274   write_byte(BIOSMEM_SEG,BIOSMEM_VIDEO_CTL,(0x60|noclearmem));
  12.275   write_byte(BIOSMEM_SEG,BIOSMEM_SWITCHES,0xF9);
  12.276 @@ -933,8 +990,8 @@ static void biosfn_set_video_mode(mode) 
  12.277  
  12.278   // FIXME We nearly have the good tables. to be reworked
  12.279   write_byte(BIOSMEM_SEG,BIOSMEM_DCC_INDEX,0x08);    // 8 is VGA should be ok for now
  12.280 - write_word(BIOSMEM_SEG,BIOSMEM_VS_POINTER,0x00);
  12.281 - write_word(BIOSMEM_SEG,BIOSMEM_VS_POINTER+2,0x00);
  12.282 + write_word(BIOSMEM_SEG,BIOSMEM_VS_POINTER, video_save_pointer_table);
  12.283 + write_word(BIOSMEM_SEG,BIOSMEM_VS_POINTER+2, 0xc000);
  12.284  
  12.285   // FIXME
  12.286   write_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MSR,0x00); // Unavailable on vanilla vga, but...
  12.287 @@ -1110,7 +1167,7 @@ Bit8u page;
  12.288    }
  12.289   else
  12.290    {
  12.291 -   address = page*vga_modes[line].slength;
  12.292 +   address = page * (*(Bit16u *)&video_param_table[line_to_vpti[line]].slength_l);
  12.293    }
  12.294  
  12.295   // CRTC regs 0x0c and 0x0d
  12.296 @@ -1260,6 +1317,7 @@ Bit8u nblines;Bit8u attr;Bit8u rul;Bit8u
  12.297            memsetw(vga_modes[line].sstart,address+(i*nbcols+cul)*2,(Bit16u)attr*0x100+' ',cols);
  12.298           else
  12.299            memcpyw(vga_modes[line].sstart,address+(i*nbcols+cul)*2,vga_modes[line].sstart,((i-nblines)*nbcols+cul)*2,cols);
  12.300 +         if (i>rlr) break;
  12.301          }
  12.302        }
  12.303      }
  12.304 @@ -1267,7 +1325,7 @@ Bit8u nblines;Bit8u attr;Bit8u rul;Bit8u
  12.305   else
  12.306    {
  12.307     // FIXME gfx mode not complete
  12.308 -   cheight=vga_modes[line].cheight;
  12.309 +   cheight=video_param_table[line_to_vpti[line]].cheight;
  12.310     switch(vga_modes[line].memmodel)
  12.311      {
  12.312       case PLANAR4:
  12.313 @@ -1296,6 +1354,7 @@ Bit8u nblines;Bit8u attr;Bit8u rul;Bit8u
  12.314                vgamem_fill_pl4(cul,i,cols,nbcols,cheight,attr);
  12.315               else
  12.316                vgamem_copy_pl4(cul,i,i-nblines,cols,nbcols,cheight);
  12.317 +             if (i>rlr) break;
  12.318              }
  12.319            }
  12.320          }
  12.321 @@ -1331,6 +1390,7 @@ Bit8u nblines;Bit8u attr;Bit8u rul;Bit8u
  12.322                vgamem_fill_cga(cul,i,cols,nbcols,cheight,attr);
  12.323               else
  12.324                vgamem_copy_cga(cul,i,i-nblines,cols,nbcols,cheight);
  12.325 +             if (i>rlr) break;
  12.326              }
  12.327            }
  12.328          }
  12.329 @@ -1572,18 +1632,12 @@ Bit8u car;Bit8u page;Bit8u attr;Bit16u c
  12.330     address=SCREEN_MEM_START(nbcols,nbrows,page)+(xcurs+ycurs*nbcols)*2;
  12.331  
  12.332     dummy=((Bit16u)attr<<8)+car;
  12.333 -/*
  12.334 -printf("sstart=%x\n", vga_modes[line].sstart);
  12.335 -printf("address=%x\n", address);
  12.336 -printf("dummy=%x\n", dummy);
  12.337 -printf("count=%x\n", count);
  12.338 -*/
  12.339     memsetw(vga_modes[line].sstart,address,dummy,count);
  12.340    }
  12.341   else
  12.342    {
  12.343     // FIXME gfx mode not complete
  12.344 -   cheight=vga_modes[line].cheight;
  12.345 +   cheight=video_param_table[line_to_vpti[line]].cheight;
  12.346     bpp=vga_modes[line].pixbits;
  12.347     while((count-->0) && (xcurs<nbcols))
  12.348      {
  12.349 @@ -1643,7 +1697,7 @@ Bit8u car;Bit8u page;Bit8u attr;Bit16u c
  12.350   else
  12.351    {
  12.352     // FIXME gfx mode not complete
  12.353 -   cheight=vga_modes[line].cheight;
  12.354 +   cheight=video_param_table[line_to_vpti[line]].cheight;
  12.355     bpp=vga_modes[line].pixbits;
  12.356     while((count-->0) && (xcurs<nbcols))
  12.357      {
  12.358 @@ -1923,7 +1977,6 @@ Bit8u car;Bit8u page;Bit8u attr;Bit8u fl
  12.359      break;
  12.360  
  12.361     case '\n':
  12.362 -    xcurs=0;
  12.363      ycurs++;
  12.364      break;
  12.365  
  12.366 @@ -1952,7 +2005,7 @@ Bit8u car;Bit8u page;Bit8u attr;Bit8u fl
  12.367      else
  12.368       {
  12.369        // FIXME gfx mode not complete
  12.370 -      cheight=vga_modes[line].cheight;
  12.371 +      cheight=video_param_table[line_to_vpti[line]].cheight;
  12.372        bpp=vga_modes[line].pixbits;
  12.373        switch(vga_modes[line].memmodel)
  12.374         {
  12.375 @@ -3112,23 +3165,215 @@ Bit16u BX;Bit16u ES;Bit16u DI;
  12.376  }
  12.377  
  12.378  // --------------------------------------------------------------------------------------------
  12.379 -static void biosfn_read_video_state_size (CX,ES,BX) Bit16u CX;Bit16u ES;Bit16u BX;
  12.380 +// --------------------------------------------------------------------------------------------
  12.381 +static Bit16u biosfn_read_video_state_size2 (CX) 
  12.382 +     Bit16u CX;
  12.383  {
  12.384 -#ifdef DEBUG
  12.385 - unimplemented();
  12.386 -#endif
  12.387 +    Bit16u size;
  12.388 +    size = 0;
  12.389 +    if (CX & 1) {
  12.390 +        size += 0x46;
  12.391 +    }
  12.392 +    if (CX & 2) {
  12.393 +        size += (5 + 8 + 5) * 2 + 6;
  12.394 +    }
  12.395 +    if (CX & 4) {
  12.396 +        size += 3 + 256 * 3 + 1;
  12.397  }
  12.398 -static void biosfn_save_video_state (CX,ES,BX) Bit16u CX;Bit16u ES;Bit16u BX;
  12.399 +    return size;
  12.400 +}
  12.401 +
  12.402 +static void biosfn_read_video_state_size (CX, BX) 
  12.403 +     Bit16u CX; Bit16u *BX;
  12.404 +{
  12.405 +    Bit16u ss=get_SS();
  12.406 +    write_word(ss, BX, biosfn_read_video_state_size2(CX));
  12.407 +}
  12.408 +
  12.409 +static Bit16u biosfn_save_video_state (CX,ES,BX) 
  12.410 +     Bit16u CX;Bit16u ES;Bit16u BX;
  12.411  {
  12.412 -#ifdef DEBUG
  12.413 - unimplemented();
  12.414 -#endif
  12.415 +    Bit16u i, v, crtc_addr, ar_index;
  12.416 +
  12.417 +    crtc_addr = read_word(BIOSMEM_SEG, BIOSMEM_CRTC_ADDRESS);
  12.418 +    if (CX & 1) {
  12.419 +        write_byte(ES, BX, inb(VGAREG_SEQU_ADDRESS)); BX++;
  12.420 +        write_byte(ES, BX, inb(crtc_addr)); BX++;
  12.421 +        write_byte(ES, BX, inb(VGAREG_GRDC_ADDRESS)); BX++;
  12.422 +        inb(VGAREG_ACTL_RESET);
  12.423 +        ar_index = inb(VGAREG_ACTL_ADDRESS);
  12.424 +        write_byte(ES, BX, ar_index); BX++;
  12.425 +        write_byte(ES, BX, inb(VGAREG_READ_FEATURE_CTL)); BX++;
  12.426 +
  12.427 +        for(i=1;i<=4;i++){
  12.428 +            outb(VGAREG_SEQU_ADDRESS, i);
  12.429 +            write_byte(ES, BX, inb(VGAREG_SEQU_DATA)); BX++;
  12.430 +        }
  12.431 +        outb(VGAREG_SEQU_ADDRESS, 0);
  12.432 +        write_byte(ES, BX, inb(VGAREG_SEQU_DATA)); BX++;
  12.433 +
  12.434 +        for(i=0;i<=0x18;i++) {
  12.435 +            outb(crtc_addr,i);
  12.436 +            write_byte(ES, BX, inb(crtc_addr+1)); BX++;
  12.437 +        }
  12.438 +
  12.439 +        for(i=0;i<=0x13;i++) {
  12.440 +            inb(VGAREG_ACTL_RESET);
  12.441 +            outb(VGAREG_ACTL_ADDRESS, i | (ar_index & 0x20));
  12.442 +            write_byte(ES, BX, inb(VGAREG_ACTL_READ_DATA)); BX++;
  12.443 +        }
  12.444 +        inb(VGAREG_ACTL_RESET);
  12.445 +
  12.446 +        for(i=0;i<=8;i++) {
  12.447 +            outb(VGAREG_GRDC_ADDRESS,i);
  12.448 +            write_byte(ES, BX, inb(VGAREG_GRDC_DATA)); BX++;
  12.449 +        }
  12.450 +
  12.451 +        write_word(ES, BX, crtc_addr); BX+= 2;
  12.452 +
  12.453 +        /* XXX: read plane latches */
  12.454 +        write_byte(ES, BX, 0); BX++;
  12.455 +        write_byte(ES, BX, 0); BX++;
  12.456 +        write_byte(ES, BX, 0); BX++;
  12.457 +        write_byte(ES, BX, 0); BX++;
  12.458 +    }
  12.459 +    if (CX & 2) {
  12.460 +        write_byte(ES, BX, read_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MODE)); BX++;
  12.461 +        write_word(ES, BX, read_word(BIOSMEM_SEG,BIOSMEM_NB_COLS)); BX += 2;
  12.462 +        write_word(ES, BX, read_word(BIOSMEM_SEG,BIOSMEM_PAGE_SIZE)); BX += 2;
  12.463 +        write_word(ES, BX, read_word(BIOSMEM_SEG,BIOSMEM_CRTC_ADDRESS)); BX += 2;
  12.464 +        write_byte(ES, BX, read_byte(BIOSMEM_SEG,BIOSMEM_NB_ROWS)); BX++;
  12.465 +        write_word(ES, BX, read_word(BIOSMEM_SEG,BIOSMEM_CHAR_HEIGHT)); BX += 2;
  12.466 +        write_byte(ES, BX, read_byte(BIOSMEM_SEG,BIOSMEM_VIDEO_CTL)); BX++;
  12.467 +        write_byte(ES, BX, read_byte(BIOSMEM_SEG,BIOSMEM_SWITCHES)); BX++;
  12.468 +        write_byte(ES, BX, read_byte(BIOSMEM_SEG,BIOSMEM_MODESET_CTL)); BX++;
  12.469 +        write_word(ES, BX, read_word(BIOSMEM_SEG,BIOSMEM_CURSOR_TYPE)); BX += 2;
  12.470 +        for(i=0;i<8;i++) {
  12.471 +            write_word(ES, BX, read_word(BIOSMEM_SEG, BIOSMEM_CURSOR_POS+2*i));
  12.472 +            BX += 2;
  12.473 +        }
  12.474 +        write_word(ES, BX, read_word(BIOSMEM_SEG,BIOSMEM_CURRENT_START)); BX += 2;
  12.475 +        write_byte(ES, BX, read_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_PAGE)); BX++;
  12.476 +        /* current font */
  12.477 +        write_word(ES, BX, read_word(0, 0x1f * 4)); BX += 2;
  12.478 +        write_word(ES, BX, read_word(0, 0x1f * 4 + 2)); BX += 2;
  12.479 +        write_word(ES, BX, read_word(0, 0x43 * 4)); BX += 2;
  12.480 +        write_word(ES, BX, read_word(0, 0x43 * 4 + 2)); BX += 2;
  12.481 +    }
  12.482 +    if (CX & 4) {
  12.483 +        /* XXX: check this */
  12.484 +        write_byte(ES, BX, inb(VGAREG_DAC_STATE)); BX++; /* read/write mode dac */
  12.485 +        write_byte(ES, BX, inb(VGAREG_DAC_WRITE_ADDRESS)); BX++; /* pix address */
  12.486 +        write_byte(ES, BX, inb(VGAREG_PEL_MASK)); BX++;
  12.487 +        // Set the whole dac always, from 0
  12.488 +        outb(VGAREG_DAC_WRITE_ADDRESS,0x00);
  12.489 +        for(i=0;i<256*3;i++) {
  12.490 +            write_byte(ES, BX, inb(VGAREG_DAC_DATA)); BX++;
  12.491 +        }
  12.492 +        write_byte(ES, BX, 0); BX++; /* color select register */
  12.493 +    }
  12.494 +    return BX;
  12.495  }
  12.496 -static void biosfn_restore_video_state (CX,ES,BX) Bit16u CX;Bit16u ES;Bit16u BX;
  12.497 +
  12.498 +static Bit16u biosfn_restore_video_state (CX,ES,BX) 
  12.499 +     Bit16u CX;Bit16u ES;Bit16u BX;
  12.500  {
  12.501 -#ifdef DEBUG
  12.502 - unimplemented();
  12.503 -#endif
  12.504 +    Bit16u i, crtc_addr, v, addr1, ar_index;
  12.505 +
  12.506 +    if (CX & 1) {
  12.507 +        // Reset Attribute Ctl flip-flop
  12.508 +        inb(VGAREG_ACTL_RESET);
  12.509 +
  12.510 +        crtc_addr = read_word(ES, BX + 0x40);
  12.511 +        addr1 = BX;
  12.512 +        BX += 5;
  12.513 +        
  12.514 +        for(i=1;i<=4;i++){
  12.515 +            outb(VGAREG_SEQU_ADDRESS, i);
  12.516 +            outb(VGAREG_SEQU_DATA, read_byte(ES, BX)); BX++;
  12.517 +        }
  12.518 +        outb(VGAREG_SEQU_ADDRESS, 0);
  12.519 +        outb(VGAREG_SEQU_DATA, read_byte(ES, BX)); BX++;
  12.520 +
  12.521 +        // Disable CRTC write protection
  12.522 +        outw(crtc_addr,0x0011);
  12.523 +        // Set CRTC regs
  12.524 +        for(i=0;i<=0x18;i++) {
  12.525 +            if (i != 0x11) {
  12.526 +                outb(crtc_addr,i);
  12.527 +                outb(crtc_addr+1, read_byte(ES, BX));
  12.528 +            }
  12.529 +            BX++;
  12.530 +        }
  12.531 +        // select crtc base address
  12.532 +        v = inb(VGAREG_READ_MISC_OUTPUT) & ~0x01;
  12.533 +        if (crtc_addr = 0x3d4)
  12.534 +            v |= 0x01;
  12.535 +        outb(VGAREG_WRITE_MISC_OUTPUT, v);
  12.536 +
  12.537 +        // enable write protection if needed
  12.538 +        outb(crtc_addr, 0x11);
  12.539 +        outb(crtc_addr+1, read_byte(ES, BX - 0x18 + 0x11));
  12.540 +        
  12.541 +        // Set Attribute Ctl
  12.542 +        ar_index = read_byte(ES, addr1 + 0x03);
  12.543 +        inb(VGAREG_ACTL_RESET);
  12.544 +        for(i=0;i<=0x13;i++) {
  12.545 +            outb(VGAREG_ACTL_ADDRESS, i | (ar_index & 0x20));
  12.546 +            outb(VGAREG_ACTL_WRITE_DATA, read_byte(ES, BX)); BX++;
  12.547 +        }
  12.548 +        outb(VGAREG_ACTL_ADDRESS, ar_index);
  12.549 +        inb(VGAREG_ACTL_RESET);
  12.550 +        
  12.551 +        for(i=0;i<=8;i++) {
  12.552 +            outb(VGAREG_GRDC_ADDRESS,i);
  12.553 +            outb(VGAREG_GRDC_DATA, read_byte(ES, BX)); BX++;
  12.554 +        }
  12.555 +        BX += 2; /* crtc_addr */
  12.556 +        BX += 4; /* plane latches */
  12.557 +        
  12.558 +        outb(VGAREG_SEQU_ADDRESS, read_byte(ES, addr1)); addr1++;
  12.559 +        outb(crtc_addr, read_byte(ES, addr1)); addr1++;
  12.560 +        outb(VGAREG_GRDC_ADDRESS, read_byte(ES, addr1)); addr1++;
  12.561 +        addr1++;
  12.562 +        outb(crtc_addr - 0x4 + 0xa, read_byte(ES, addr1)); addr1++;
  12.563 +    }
  12.564 +    if (CX & 2) {
  12.565 +        write_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MODE, read_byte(ES, BX)); BX++;
  12.566 +        write_word(BIOSMEM_SEG,BIOSMEM_NB_COLS, read_word(ES, BX)); BX += 2;
  12.567 +        write_word(BIOSMEM_SEG,BIOSMEM_PAGE_SIZE, read_word(ES, BX)); BX += 2;
  12.568 +        write_word(BIOSMEM_SEG,BIOSMEM_CRTC_ADDRESS, read_word(ES, BX)); BX += 2;
  12.569 +        write_byte(BIOSMEM_SEG,BIOSMEM_NB_ROWS, read_byte(ES, BX)); BX++;
  12.570 +        write_word(BIOSMEM_SEG,BIOSMEM_CHAR_HEIGHT, read_word(ES, BX)); BX += 2;
  12.571 +        write_byte(BIOSMEM_SEG,BIOSMEM_VIDEO_CTL, read_byte(ES, BX)); BX++;
  12.572 +        write_byte(BIOSMEM_SEG,BIOSMEM_SWITCHES, read_byte(ES, BX)); BX++;
  12.573 +        write_byte(BIOSMEM_SEG,BIOSMEM_MODESET_CTL, read_byte(ES, BX)); BX++;
  12.574 +        write_word(BIOSMEM_SEG,BIOSMEM_CURSOR_TYPE, read_word(ES, BX)); BX += 2;
  12.575 +        for(i=0;i<8;i++) {
  12.576 +            write_word(BIOSMEM_SEG, BIOSMEM_CURSOR_POS+2*i, read_word(ES, BX));
  12.577 +            BX += 2;
  12.578 +        }
  12.579 +        write_word(BIOSMEM_SEG,BIOSMEM_CURRENT_START, read_word(ES, BX)); BX += 2;
  12.580 +        write_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_PAGE, read_byte(ES, BX)); BX++;
  12.581 +        /* current font */
  12.582 +        write_word(0, 0x1f * 4, read_word(ES, BX)); BX += 2;
  12.583 +        write_word(0, 0x1f * 4 + 2, read_word(ES, BX)); BX += 2;
  12.584 +        write_word(0, 0x43 * 4, read_word(ES, BX)); BX += 2;
  12.585 +        write_word(0, 0x43 * 4 + 2, read_word(ES, BX)); BX += 2;
  12.586 +    }
  12.587 +    if (CX & 4) {
  12.588 +        BX++;
  12.589 +        v = read_byte(ES, BX); BX++;
  12.590 +        outb(VGAREG_PEL_MASK, read_byte(ES, BX)); BX++;
  12.591 +        // Set the whole dac always, from 0
  12.592 +        outb(VGAREG_DAC_WRITE_ADDRESS,0x00);
  12.593 +        for(i=0;i<256*3;i++) {
  12.594 +            outb(VGAREG_DAC_DATA, read_byte(ES, BX)); BX++;
  12.595 +        }
  12.596 +        BX++;
  12.597 +        outb(VGAREG_DAC_WRITE_ADDRESS, v);
  12.598 +    }
  12.599 +    return BX;
  12.600  }
  12.601  
  12.602  // ============================================================================================
  12.603 @@ -3566,9 +3811,9 @@ void printf(s)
  12.604          for (i=0; i<format_width; i++) {
  12.605            nibble = (arg >> (4 * digit)) & 0x000f;
  12.606            if (nibble <= 9)
  12.607 -            outb(0xE9, nibble + '0');
  12.608 +            outb(0x0500, nibble + '0');
  12.609            else
  12.610 -            outb(0xE9, (nibble - 10) + 'A');
  12.611 +            outb(0x0500, (nibble - 10) + 'A');
  12.612            digit--;
  12.613            }
  12.614          in_format = 0;
  12.615 @@ -3578,7 +3823,7 @@ void printf(s)
  12.616        //  }
  12.617        }
  12.618      else {
  12.619 -      outb(0xE9, c);
  12.620 +      outb(0x0500, c);
  12.621        }
  12.622      s ++;
  12.623      }
    13.1 --- a/tools/firmware/vgabios/vgatables.h	Fri Jul 04 12:39:18 2008 +0100
    13.2 +++ b/tools/firmware/vgabios/vgatables.h	Fri Jul 04 13:02:31 2008 +0100
    13.3 @@ -78,7 +78,7 @@
    13.4   * Tables of default values for each mode
    13.5   *
    13.6   */
    13.7 -#define MODE_MAX   0x14
    13.8 +#define MODE_MAX   15
    13.9  #define TEXT       0x00
   13.10  #define GRAPH      0x01
   13.11  
   13.12 @@ -97,126 +97,38 @@
   13.13  
   13.14  typedef struct
   13.15  {Bit8u  svgamode;
   13.16 - Bit16u vesamode;
   13.17   Bit8u  class;    /* TEXT, GRAPH */
   13.18   Bit8u  memmodel; /* CTEXT,MTEXT,CGA,PL1,PL2,PL4,P8,P15,P16,P24,P32 */
   13.19 - Bit8u  nbpages; 
   13.20   Bit8u  pixbits;
   13.21 - Bit16u swidth, sheight;
   13.22 - Bit16u twidth, theight;
   13.23 - Bit16u cwidth, cheight;
   13.24   Bit16u sstart;
   13.25 - Bit16u slength;
   13.26 - Bit8u  miscreg;
   13.27   Bit8u  pelmask;
   13.28 - Bit8u  crtcmodel;
   13.29 - Bit8u  actlmodel;
   13.30 - Bit8u  grdcmodel;
   13.31 - Bit8u  sequmodel;
   13.32   Bit8u  dacmodel; /* 0 1 2 3 */
   13.33  } VGAMODES;
   13.34  
   13.35  static VGAMODES vga_modes[MODE_MAX+1]=
   13.36 -{//mode  vesa   class  model   pg bits sw   sh  tw  th  cw ch  sstart  slength misc  pelm  crtc  actl  gdc   sequ  dac
   13.37 - {0x00, 0xFFFF, TEXT,  CTEXT,   8, 4, 360, 400, 40, 25, 9, 16, 0xB800, 0x0800, 0x67, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02},
   13.38 - {0x01, 0xFFFF, TEXT,  CTEXT,   8, 4, 360, 400, 40, 25, 9, 16, 0xB800, 0x0800, 0x67, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02},
   13.39 - {0x02, 0xFFFF, TEXT,  CTEXT,   4, 4, 720, 400, 80, 25, 9, 16, 0xB800, 0x1000, 0x67, 0xFF, 0x01, 0x00, 0x00, 0x01, 0x02},
   13.40 - {0x03, 0xFFFF, TEXT,  CTEXT,   4, 4, 720, 400, 80, 25, 9, 16, 0xB800, 0x1000, 0x67, 0xFF, 0x01, 0x00, 0x00, 0x01, 0x02},
   13.41 - {0x04, 0xFFFF, GRAPH, CGA,     4, 2, 320, 200, 40, 25, 8, 8,  0xB800, 0x0800, 0x63, 0xFF, 0x02, 0x01, 0x01, 0x02, 0x01},
   13.42 - {0x05, 0xFFFF, GRAPH, CGA,     1, 2, 320, 200, 40, 25, 8, 8,  0xB800, 0x0800, 0x63, 0xFF, 0x02, 0x01, 0x01, 0x02, 0x01},
   13.43 - {0x06, 0xFFFF, GRAPH, CGA,     1, 1, 640, 200, 80, 25, 8, 8,  0xB800, 0x1000, 0x63, 0xFF, 0x03, 0x02, 0x02, 0x03, 0x01},
   13.44 - {0x07, 0xFFFF, TEXT,  MTEXT,   4, 4, 720, 400, 80, 25, 9, 16, 0xB000, 0x1000, 0x66, 0xFF, 0x04, 0x03, 0x03, 0x01, 0x00},
   13.45 - {0x0D, 0xFFFF, GRAPH, PLANAR4, 8, 4, 320, 200, 40, 25, 8, 8,  0xA000, 0x2000, 0x63, 0xFF, 0x05, 0x04, 0x04, 0x04, 0x01},
   13.46 - {0x0E, 0xFFFF, GRAPH, PLANAR4, 4, 4, 640, 200, 80, 25, 8, 8,  0xA000, 0x4000, 0x63, 0xFF, 0x06, 0x04, 0x04, 0x05, 0x01},
   13.47 - {0x0F, 0xFFFF, GRAPH, PLANAR1, 2, 1, 640, 350, 80, 25, 8, 14, 0xA000, 0x8000, 0xa3, 0xFF, 0x07, 0x05, 0x04, 0x05, 0x00},
   13.48 - {0x10, 0xFFFF, GRAPH, PLANAR4, 2, 4, 640, 350, 80, 25, 8, 14, 0xA000, 0x8000, 0xa3, 0xFF, 0x07, 0x06, 0x04, 0x05, 0x02},
   13.49 - {0x11, 0xFFFF, GRAPH, PLANAR1, 1, 1, 640, 480, 80, 30, 8, 16, 0xA000, 0x0000, 0xe3, 0xFF, 0x08, 0x07, 0x04, 0x05, 0x02},
   13.50 - {0x12, 0xFFFF, GRAPH, PLANAR4, 1, 4, 640, 480, 80, 30, 8, 16, 0xA000, 0x0000, 0xe3, 0xFF, 0x08, 0x06, 0x04, 0x05, 0x02},
   13.51 - {0x13, 0xFFFF, GRAPH, LINEAR8, 1, 8, 320, 200, 40, 25, 8, 8,  0xA000, 0x0000, 0x63, 0xFF, 0x09, 0x08, 0x05, 0x06, 0x03},
   13.52 - {0x6A, 0xFFFF, GRAPH, PLANAR4, 1, 4, 800, 600,100, 37, 8, 16, 0xA000, 0x0000, 0xe3, 0xFF, 0x0A, 0x06, 0x04, 0x05, 0x02}
   13.53 -};
   13.54 -
   13.55 -/* CRTC */
   13.56 -#define CRTC_MAX_REG   0x18
   13.57 -#define CRTC_MAX_MODEL 0x0A
   13.58 -static Bit8u crtc_access[CRTC_MAX_REG+1]=
   13.59 -{        /* 00   01   02   03   04   05   06   07   08   09   0A   0B   0C   0D   0E   0F   10   11   12   13   14   15   16   17   18 */
   13.60 -          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
   13.61 -};
   13.62 -static Bit8u crtc_regs[CRTC_MAX_MODEL+1][CRTC_MAX_REG+1]=
   13.63 -{/* Model   00   01   02   03   04   05   06   07   08   09   0A   0B   0C   0D   0E   0F   10   11   12   13   14   15   16   17   18 */
   13.64 - /* 00 */ 0x2d,0x27,0x28,0x90,0x2b,0xa0,0xbf,0x1f,0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x14,0x1f,0x96,0xb9,0xa3,0xff,
   13.65 - /* 01 */ 0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x1f,0x96,0xb9,0xa3,0xff,
   13.66 - /* 02 */ 0x2d,0x27,0x28,0x90,0x2b,0x80,0xbf,0x1f,0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x14,0x00,0x96,0xb9,0xa2,0xff,
   13.67 - /* 03 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0xbf,0x1f,0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x00,0x96,0xb9,0xc2,0xff,
   13.68 - /* 04 */ 0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x0f,0x96,0xb9,0xa3,0xff,
   13.69 - /* 05 */ 0x2d,0x27,0x28,0x90,0x2b,0x80,0xbf,0x1f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x14,0x00,0x96,0xb9,0xe3,0xff,
   13.70 - /* 06 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0xbf,0x1f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x00,0x96,0xb9,0xe3,0xff,
   13.71 - /* 07 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0xbf,0x1f,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x85,0x5d,0x28,0x0f,0x63,0xba,0xe3,0xff,
   13.72 - /* 08 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0x0b,0x3e,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x8c,0xdf,0x28,0x00,0xe7,0x04,0xe3,0xff,
   13.73 - /* 09 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0xbf,0x1f,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x40,0x96,0xb9,0xa3,0xff,
   13.74 - /* 0A */ 0x7f,0x63,0x63,0x83,0x6b,0x1b,0x72,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x59,0x8d,0x57,0x32,0x00,0x57,0x73,0xe3,0xff
   13.75 -};
   13.76 -
   13.77 -/* Attribute Controler 0x3c0 */
   13.78 -#define ACTL_MAX_REG   0x14
   13.79 -#define ACTL_MAX_MODEL 0x08
   13.80 -
   13.81 -static Bit8u actl_access[ACTL_MAX_REG+1]=
   13.82 -{/*         00   01   02   03   04   05   06   07   08   09   0A   0B   OC   OD   OE   OF   10   11   12   13   14 */
   13.83 -          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
   13.84 +{//mode  class  model bits sstart  pelm  dac
   13.85 + {0x00, TEXT,  CTEXT,   4, 0xB800, 0xFF, 0x02},
   13.86 + {0x01, TEXT,  CTEXT,   4, 0xB800, 0xFF, 0x02},
   13.87 + {0x02, TEXT,  CTEXT,   4, 0xB800, 0xFF, 0x02},
   13.88 + {0x03, TEXT,  CTEXT,   4, 0xB800, 0xFF, 0x02},
   13.89 + {0x04, GRAPH, CGA,     2, 0xB800, 0xFF, 0x01},
   13.90 + {0x05, GRAPH, CGA,     2, 0xB800, 0xFF, 0x01},
   13.91 + {0x06, GRAPH, CGA,     1, 0xB800, 0xFF, 0x01},
   13.92 + {0x07, TEXT,  MTEXT,   4, 0xB000, 0xFF, 0x00},
   13.93 + {0x0D, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x01},
   13.94 + {0x0E, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x01},
   13.95 + {0x0F, GRAPH, PLANAR1, 1, 0xA000, 0xFF, 0x00},
   13.96 + {0x10, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x02},
   13.97 + {0x11, GRAPH, PLANAR1, 1, 0xA000, 0xFF, 0x02},
   13.98 + {0x12, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x02},
   13.99 + {0x13, GRAPH, LINEAR8, 8, 0xA000, 0xFF, 0x03},
  13.100 + {0x6A, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x02}
  13.101  };
  13.102  
  13.103 -static Bit8u actl_regs[ACTL_MAX_MODEL+1][ACTL_MAX_REG+1]=
  13.104 -{/* Model   00   01   02   03   04   05   06   07   08   09   0A   0B   OC   OD   OE   OF   10   11   12   13   14 */
  13.105 - /* 00 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x0c,0x00,0x0f,0x08,0x00,
  13.106 - /* 01 */ 0x00,0x13,0x15,0x17,0x02,0x04,0x06,0x07,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x01,0x00,0x03,0x00,0x00,
  13.107 - /* 02 */ 0x00,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x01,0x00,0x01,0x00,0x00,
  13.108 - /* 03 */ 0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x0e,0x00,0x0f,0x08,0x00,
  13.109 - /* 04 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x01,0x00,0x0f,0x00,0x00,
  13.110 - /* 05 */ 0x00,0x08,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x00,
  13.111 - /* 06 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x01,0x00,0x0f,0x00,0x00,
  13.112 - /* 07 */ 0x00,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x01,0x00,0x01,0x00,0x00,
  13.113 - /* 08 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x41,0x00,0x0f,0x00,0x00
  13.114 -};
  13.115 -
  13.116 -/* Sequencer 0x3c4 */
  13.117 -#define SEQU_MAX_REG   0x04
  13.118 -#define SEQU_MAX_MODEL 0x06
  13.119 -
  13.120 -static Bit8u sequ_access[SEQU_MAX_REG+1]=
  13.121 -{      /*   00   01   02   03   04 */
  13.122 -          0x00,0x00,0x00,0x00,0x00
  13.123 -};
  13.124 -
  13.125 -static Bit8u sequ_regs[SEQU_MAX_MODEL+1][SEQU_MAX_REG+1]=
  13.126 -{/* Model   00   01   02   03   04 */
  13.127 - /* 00 */ 0x03,0x08,0x03,0x00,0x02,
  13.128 - /* 01 */ 0x03,0x00,0x03,0x00,0x02,
  13.129 - /* 02 */ 0x03,0x09,0x03,0x00,0x02,
  13.130 - /* 03 */ 0x03,0x01,0x01,0x00,0x06,
  13.131 - /* 04 */ 0x03,0x09,0x0f,0x00,0x06,
  13.132 - /* 05 */ 0x03,0x01,0x0f,0x00,0x06,
  13.133 - /* 06 */ 0x03,0x01,0x0f,0x00,0x0e
  13.134 -};
  13.135 -
  13.136 -/* Graphic ctl 0x3ce */
  13.137 -#define GRDC_MAX_REG   0x08
  13.138 -#define GRDC_MAX_MODEL 0x05
  13.139 -
  13.140 -static Bit8u grdc_access[GRDC_MAX_REG+1]=
  13.141 -{      /*   00   01   02   03   04   05   06   07   08 */
  13.142 -          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  13.143 -};
  13.144 -
  13.145 -static Bit8u grdc_regs[GRDC_MAX_MODEL+1][GRDC_MAX_REG+1]=
  13.146 -{/* Model   00   01   02   03   04   05   06   07   08 */
  13.147 - /* 00 */ 0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x0f,0xff,
  13.148 - /* 01 */ 0x00,0x00,0x00,0x00,0x00,0x30,0x0f,0x0f,0xff,
  13.149 - /* 02 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x0f,0xff,
  13.150 - /* 03 */ 0x00,0x00,0x00,0x00,0x00,0x10,0x0a,0x0f,0xff,
  13.151 - /* 04 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f,0xff,
  13.152 - /* 05 */ 0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0f,0xff 
  13.153 +/* convert index in vga_modes[] to index in video_param_table[] */
  13.154 +static Bit8u line_to_vpti[MODE_MAX+1]={
  13.155 +    0x17, 0x17, 0x18, 0x18, 0x04, 0x05, 0x06, 0x07, 
  13.156 +    0x0d, 0x0e, 0x11, 0x12, 0x1a, 0x1b, 0x1c, 0x1d,
  13.157  };
  13.158  
  13.159  /* Default Palette */
  13.160 @@ -225,6 +137,398 @@ static Bit8u grdc_regs[GRDC_MAX_MODEL+1]
  13.161  static Bit8u dac_regs[DAC_MAX_MODEL+1]=
  13.162  {0x3f,0x3f,0x3f,0xff};
  13.163  
  13.164 +/* standard BIOS Video Parameter Table */
  13.165 +typedef struct {
  13.166 +    Bit8u  twidth;
  13.167 +    Bit8u  theightm1;
  13.168 +    Bit8u  cheight;
  13.169 +    Bit8u  slength_l;
  13.170 +    Bit8u  slength_h;
  13.171 +    Bit8u  sequ_regs[4];
  13.172 +    Bit8u  miscreg;
  13.173 +    Bit8u  crtc_regs[25];
  13.174 +    Bit8u  actl_regs[20];
  13.175 +    Bit8u  grdc_regs[9];
  13.176 +} VideoParamTableEntry;
  13.177 +
  13.178 +static VideoParamTableEntry video_param_table[30] = {
  13.179 +{
  13.180 + /* index=0x00 no mode defined */
  13.181 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.182 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.183 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.184 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.185 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.186 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.187 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.188 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.189 +},
  13.190 +{
  13.191 + /* index=0x01 no mode defined */
  13.192 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.193 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.194 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.195 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.196 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.197 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.198 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.199 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.200 +},
  13.201 +{
  13.202 + /* index=0x02 no mode defined */
  13.203 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.204 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.205 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.206 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.207 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.208 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.209 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.210 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.211 +},
  13.212 +{
  13.213 + /* index=0x03 no mode defined */
  13.214 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.215 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.216 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.217 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.218 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.219 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.220 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.221 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.222 +},
  13.223 +{
  13.224 + /* index=0x04 vga mode 0x04 */
  13.225 + 40, 24, 8, 0x00, 0x08, /* tw, th-1, ch, slength */
  13.226 + 0x09, 0x03, 0x00, 0x02, /* sequ_regs */
  13.227 + 0x63, /* miscreg */
  13.228 + 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
  13.229 + 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.230 + 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
  13.231 + 0xff, /* crtc_regs */
  13.232 + 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
  13.233 + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
  13.234 + 0x01, 0x00, 0x03, 0x00, /* actl_regs */
  13.235 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff, /* grdc_regs */
  13.236 +},
  13.237 +{
  13.238 + /* index=0x05 vga mode 0x05 */
  13.239 + 40, 24, 8, 0x00, 0x08, /* tw, th-1, ch, slength */
  13.240 + 0x09, 0x03, 0x00, 0x02, /* sequ_regs */
  13.241 + 0x63, /* miscreg */
  13.242 + 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
  13.243 + 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.244 + 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
  13.245 + 0xff, /* crtc_regs */
  13.246 + 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
  13.247 + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
  13.248 + 0x01, 0x00, 0x03, 0x00, /* actl_regs */
  13.249 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff, /* grdc_regs */
  13.250 +},
  13.251 +{
  13.252 + /* index=0x06 vga mode 0x06 */
  13.253 + 80, 24, 8, 0x00, 0x10, /* tw, th-1, ch, slength */
  13.254 + 0x01, 0x01, 0x00, 0x06, /* sequ_regs */
  13.255 + 0x63, /* miscreg */
  13.256 + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
  13.257 + 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.258 + 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xc2,
  13.259 + 0xff, /* crtc_regs */
  13.260 + 0x00, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
  13.261 + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
  13.262 + 0x01, 0x00, 0x01, 0x00, /* actl_regs */
  13.263 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0xff, /* grdc_regs */
  13.264 +},
  13.265 +{
  13.266 + /* index=0x07 vga mode 0x07 */
  13.267 + 80, 24, 16, 0x00, 0x10, /* tw, th-1, ch, slength */
  13.268 + 0x00, 0x03, 0x00, 0x02, /* sequ_regs */
  13.269 + 0x66, /* miscreg */
  13.270 + 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
  13.271 + 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
  13.272 + 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3,
  13.273 + 0xff, /* crtc_regs */
  13.274 + 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
  13.275 + 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
  13.276 + 0x0e, 0x00, 0x0f, 0x08, /* actl_regs */
  13.277 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff, /* grdc_regs */
  13.278 +},
  13.279 +{
  13.280 + /* index=0x08 no mode defined */
  13.281 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.282 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.283 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.284 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.285 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.286 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.287 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.288 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.289 +},
  13.290 +{
  13.291 + /* index=0x09 no mode defined */
  13.292 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.293 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.294 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.295 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.296 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.297 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.298 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.299 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.300 +},
  13.301 +{
  13.302 + /* index=0x0a no mode defined */
  13.303 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.304 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.305 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.306 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.307 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.308 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.309 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.310 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.311 +},
  13.312 +{
  13.313 + /* index=0x0b no mode defined */
  13.314 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.315 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.316 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.317 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.318 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.319 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.320 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.321 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.322 +},
  13.323 +{
  13.324 + /* index=0x0c no mode defined */
  13.325 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.326 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.327 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.328 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.329 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.330 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.331 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.332 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.333 +},
  13.334 +{
  13.335 + /* index=0x0d vga mode 0x0d */
  13.336 + 40, 24, 8, 0x00, 0x20, /* tw, th-1, ch, slength */
  13.337 + 0x09, 0x0f, 0x00, 0x06, /* sequ_regs */
  13.338 + 0x63, /* miscreg */
  13.339 + 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
  13.340 + 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.341 + 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xe3,
  13.342 + 0xff, /* crtc_regs */
  13.343 + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
  13.344 + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
  13.345 + 0x01, 0x00, 0x0f, 0x00, /* actl_regs */
  13.346 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
  13.347 +},
  13.348 +{
  13.349 + /* index=0x0e vga mode 0x0e */
  13.350 + 80, 24, 8, 0x00, 0x40, /* tw, th-1, ch, slength */
  13.351 + 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */
  13.352 + 0x63, /* miscreg */
  13.353 + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
  13.354 + 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.355 + 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xe3,
  13.356 + 0xff, /* crtc_regs */
  13.357 + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
  13.358 + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
  13.359 + 0x01, 0x00, 0x0f, 0x00, /* actl_regs */
  13.360 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
  13.361 +},
  13.362 +{
  13.363 + /* index=0x0f no mode defined */
  13.364 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.365 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.366 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.367 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.368 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.369 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.370 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.371 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.372 +},
  13.373 +{
  13.374 + /* index=0x10 no mode defined */
  13.375 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.376 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.377 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.378 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.379 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.380 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.381 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.382 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.383 +},
  13.384 +{
  13.385 + /* index=0x11 vga mode 0x0f */
  13.386 + 80, 24, 14, 0x00, 0x80, /* tw, th-1, ch, slength */
  13.387 + 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */
  13.388 + 0xa3, /* miscreg */
  13.389 + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
  13.390 + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.391 + 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
  13.392 + 0xff, /* crtc_regs */
  13.393 + 0x00, 0x08, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00,
  13.394 + 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
  13.395 + 0x01, 0x00, 0x01, 0x00, /* actl_regs */
  13.396 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
  13.397 +},
  13.398 +{
  13.399 + /* index=0x12 vga mode 0x10 */
  13.400 + 80, 24, 14, 0x00, 0x80, /* tw, th-1, ch, slength */
  13.401 + 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */
  13.402 + 0xa3, /* miscreg */
  13.403 + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
  13.404 + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.405 + 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
  13.406 + 0xff, /* crtc_regs */
  13.407 + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
  13.408 + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
  13.409 + 0x01, 0x00, 0x0f, 0x00, /* actl_regs */
  13.410 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
  13.411 +},
  13.412 +{
  13.413 + /* index=0x13 no mode defined */
  13.414 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.415 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.416 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.417 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.418 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.419 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.420 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.421 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.422 +},
  13.423 +{
  13.424 + /* index=0x14 no mode defined */
  13.425 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.426 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.427 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.428 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.429 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.430 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.431 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.432 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.433 +},
  13.434 +{
  13.435 + /* index=0x15 no mode defined */
  13.436 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.437 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.438 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.439 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.440 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.441 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.442 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.443 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.444 +},
  13.445 +{
  13.446 + /* index=0x16 no mode defined */
  13.447 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.448 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.449 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.450 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.451 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.452 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.453 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.454 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.455 +},
  13.456 +{
  13.457 + /* index=0x17 vga mode 0x01 */
  13.458 + 40, 24, 16, 0x00, 0x08, /* tw, th-1, ch, slength */
  13.459 + 0x08, 0x03, 0x00, 0x02, /* sequ_regs */
  13.460 + 0x67, /* miscreg */
  13.461 + 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f,
  13.462 + 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
  13.463 + 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3,
  13.464 + 0xff, /* crtc_regs */
  13.465 + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
  13.466 + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
  13.467 + 0x0c, 0x00, 0x0f, 0x08, /* actl_regs */
  13.468 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff, /* grdc_regs */
  13.469 +},
  13.470 +{
  13.471 + /* index=0x18 vga mode 0x03 */
  13.472 + 80, 24, 16, 0x00, 0x10, /* tw, th-1, ch, slength */
  13.473 + 0x00, 0x03, 0x00, 0x02, /* sequ_regs */
  13.474 + 0x67, /* miscreg */
  13.475 + 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
  13.476 + 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
  13.477 + 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3,
  13.478 + 0xff, /* crtc_regs */
  13.479 + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
  13.480 + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
  13.481 + 0x0c, 0x00, 0x0f, 0x08, /* actl_regs */
  13.482 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff, /* grdc_regs */
  13.483 +},
  13.484 +{
  13.485 + /* index=0x19 vga mode 0x07 */
  13.486 + 80, 24, 16, 0x00, 0x10, /* tw, th-1, ch, slength */
  13.487 + 0x00, 0x03, 0x00, 0x02, /* sequ_regs */
  13.488 + 0x66, /* miscreg */
  13.489 + 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
  13.490 + 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
  13.491 + 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3,
  13.492 + 0xff, /* crtc_regs */
  13.493 + 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
  13.494 + 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
  13.495 + 0x0e, 0x00, 0x0f, 0x08, /* actl_regs */
  13.496 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff, /* grdc_regs */
  13.497 +},
  13.498 +{
  13.499 + /* index=0x1a vga mode 0x11 */
  13.500 + 80, 29, 16, 0x00, 0x00, /* tw, th-1, ch, slength */
  13.501 + 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */
  13.502 + 0xe3, /* miscreg */
  13.503 + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
  13.504 + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.505 + 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3,
  13.506 + 0xff, /* crtc_regs */
  13.507 + 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f,
  13.508 + 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f,
  13.509 + 0x01, 0x00, 0x0f, 0x00, /* actl_regs */
  13.510 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
  13.511 +},
  13.512 +{
  13.513 + /* index=0x1b vga mode 0x12 */
  13.514 + 80, 29, 16, 0x00, 0x00, /* tw, th-1, ch, slength */
  13.515 + 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */
  13.516 + 0xe3, /* miscreg */
  13.517 + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
  13.518 + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.519 + 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3,
  13.520 + 0xff, /* crtc_regs */
  13.521 + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
  13.522 + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
  13.523 + 0x01, 0x00, 0x0f, 0x00, /* actl_regs */
  13.524 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
  13.525 +},
  13.526 +{
  13.527 + /* index=0x1c vga mode 0x13 */
  13.528 + 40, 24, 8, 0x00, 0x00, /* tw, th-1, ch, slength */
  13.529 + 0x01, 0x0f, 0x00, 0x0e, /* sequ_regs */
  13.530 + 0x63, /* miscreg */
  13.531 + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
  13.532 + 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.533 + 0x9c, 0x8e, 0x8f, 0x28, 0x40, 0x96, 0xb9, 0xa3,
  13.534 + 0xff, /* crtc_regs */
  13.535 + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
  13.536 + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
  13.537 + 0x41, 0x00, 0x0f, 0x00, /* actl_regs */
  13.538 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f, 0xff, /* grdc_regs */
  13.539 +},
  13.540 +{
  13.541 + /* index=0x1d vga mode 0x6a */
  13.542 + 100, 36, 16, 0x00, 0x00, /* tw, th-1, ch, slength */
  13.543 + 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */
  13.544 + 0xe3, /* miscreg */
  13.545 + 0x7f, 0x63, 0x63, 0x83, 0x6b, 0x1b, 0x72, 0xf0,
  13.546 + 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13.547 + 0x59, 0x8d, 0x57, 0x32, 0x00, 0x57, 0x73, 0xe3,
  13.548 + 0xff, /* crtc_regs */
  13.549 + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
  13.550 + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
  13.551 + 0x01, 0x00, 0x0f, 0x00, /* actl_regs */
  13.552 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
  13.553 +},
  13.554 +};
  13.555 +
  13.556  /* Mono */
  13.557  static Bit8u palette0[63+1][3]=
  13.558  {