Home | History | Annotate | only in /external/qemu-pc-bios/vgabios
Up to higher level directory
NameDateSize
biossums.c15-Nov-20117.2K
BUGS15-Nov-201195
ChangeLog15-Nov-201135.4K
clext.c15-Nov-201130K
COPYING15-Nov-201125.8K
dataseghack15-Nov-2011539
Makefile15-Nov-20113.6K
Notes15-Nov-2011303
README15-Nov-20118K
tests/15-Nov-2011
TODO15-Nov-2011634
vbe.c15-Nov-201134.2K
vbe.h15-Nov-201111.3K
vbe_display_api.txt15-Nov-20119.4K
vbetables-gen.c15-Nov-20119.8K
vgabios.c15-Nov-201185.3K
vgabios.h15-Nov-20111.3K
vgafonts.h15-Nov-201158.1K
vgatables.h15-Nov-201126.2K

README

      1 Plex86/Bochs VGABios
      2 --------------------
      3 
      4 The goal of this project is to have a LGPL'd Video Bios in plex86,
      5 Bochs and qemu.
      6 This VGA Bios is very specific to the emulated VGA card.
      7 It is NOT meant to drive a physical vga card.
      8 
      9 
     10 Cirrus SVGA extension
     11 ---------------------
     12 
     13 The Cirrus SVGA extension is designed for the Cirrus emulation in Bochs and
     14 qemu. The initial patch for the Cirrus extension has been written by Makoto
     15 Suzuki (suzu).
     16 
     17 
     18 Install
     19 -------
     20 To compile the VGA Bios you will need :
     21 - gcc
     22 - bcc
     23 - as86
     24 - ld86
     25 
     26 Untar the archive, and type make. You should get a "VGABIOS-lgpl-latest.bin"
     27 file. Alternatively, you can use the binary file "VGABIOS-lgpl-latest.bin",
     28 i have compiled for you.
     29 
     30 Edit your plex86/bochs conf file, and modify the load-rom command in the
     31 VGA BIOS section, to point to the new vgabios image file.
     32 
     33 
     34 Debugging
     35 ---------
     36 You can get a very basic debugging system: messages printed by the vgabios.
     37 You have to register the "unmapped" device driver in plex86 or bochs, and make
     38 sure it grabs port 0xfff0.
     39 
     40 Comment the #undef DEBUG at the beginning of vgabios.c.
     41 You can then use the "printf" function in the bios.
     42 
     43 
     44 Testing
     45 -------
     46 Look at the "testvga.c" file in the archive. This is a minimal Turbo C 2.0
     47 source file that calls a few int10 functions. Feel free to modify it to suit
     48 your needs.
     49 
     50 
     51 Copyright and License
     52 ---------------------
     53 This program has been written by Christophe Bothamy
     54 It is protected by the GNU Lesser Public License, which you should
     55 have received a copy of along with this package.
     56 
     57 
     58 Reverse Engineering
     59 -------------------
     60 The VGA Bios has been written without reverse-engineering any existing Bios.
     61 
     62 
     63 Acknowledgment
     64 --------------
     65 The source code contains code ripped from rombios.c of plex86, written
     66 by Kevin Lawton <kevin2001 (a] yahoo.com>
     67 
     68 The source code contains fonts from fntcol16.zip (c) by Joseph Gil avalable at :
     69 ftp://ftp.simtel.net/pub/simtelnet/msdos/screen/fntcol16.zip
     70 These fonts are public domain
     71 
     72 The source code is based on information taken from :
     73 - Kevin Lawton's vga card emulation for bochs/plex86
     74 - Ralf Brown's interrupts list avalaible at
     75   http://www.cs.cmu.edu/afs/cs/user/ralf/pub/WWW/files.html
     76 - Finn Thogersons' VGADOC4b available at http://home.worldonline.dk/~finth/
     77 - Michael Abrash's Graphics Programming Black Book
     78 - Francois Gervais' book "programmation des cartes graphiques cga-ega-vga"
     79   edited by sybex
     80 - DOSEMU 1.0.1 source code for several tables values and formulas
     81 
     82 
     83 Feedback
     84 --------
     85 Please report any bugs, comments, patches for this VGA Bios to info (a] vruppert.de
     86 You can find the latest release at : http://www.nongnu.org/vgabios/
     87 For any information on bochs, visit the website http://bochs.sourceforge.net/
     88 For any information on qemu, visit the website http://fabrice.bellard.free.fr/qemu/
     89 
     90 
     91 History
     92 -------
     93 vgabios-0.6c : Apr 08 2009
     94   - Volker
     95     . added DPMS support to cirrus vgabios (patch from Gleb Natapov)
     96     . use VBE LFB address from PCI base address if present
     97     . added support for a lot more non-standard VBE modes (e.g. widescreen modes)
     98     . minor bugfixes
     99 
    100 vgabios-0.6b : May 30 2008
    101   - Volker
    102     . added PCI data structure for the Cirrus VGABIOS images
    103     . minor bugfixes in biossums utility, VBE support and makefile
    104 
    105 vgabios-0.6a : Aug 19 2006
    106   - Volker
    107     . added minimal support for the video parameter table (VPT)
    108     . Cirrus SVGA now supports the "no clear" bit in Cirrus and VESA mode
    109     . Bochs VBE protected mode interface improved
    110     . save/restore video state support for Bochs VBE and standard VGA added
    111     . generate vbetables.h dynamicly
    112     . VBE video memory increased to 8 MB (VBE dispi ID changed to B0C4)
    113     . lots of 4bpp VBE fixes (all 4bpp VBE modes now enabled)
    114     . VGA compatible setup for VBE modes added
    115 
    116 vgabios-0.5d : Dec 29 2005
    117   - Volker
    118     . Bochs VBE protected mode interface added (based on a patch by malc (a] pulsesoft.com)
    119     . biossums utility now supports VGABIOS sizes up to 64 kBytes
    120     . VGA mode 0x11: all color planes must be enabled in this 2-color VGA mode
    121 
    122 vgabios-0.5c : Jul 07 2005
    123   - Volker
    124     . BIOS configuration word usually reports initial mode 80x25 color text
    125     . vgabios function 0x0e (write teletype): linefeed (0x0a) only increments the
    126       cursor row value
    127 
    128 vgabios-0.5b : May 24 2005
    129   - Volker
    130     . fixed return value for the default case in the VBE section (non-debug mode)
    131     . removed unused stuff
    132 
    133 vgabios-0.5a : Mar 07 2005
    134   - Volker
    135     . Cirrus SVGA extension (initial patches from Makoto Suzuki, improvements
    136       from Fabrice Bellard)
    137     . vgabios image size is now exactly 32k with a checksum
    138     . a lot of vgabios and vbe functions rewritten in assembler
    139     . dynamicly generated VBE mode info list
    140     . write character function for CGA and LINEAR8 modes
    141     . read/write graphics pixel for some graphics modes
    142     . text scroll feature for some graphics modes
    143     . VBE 8-bit DAC support
    144 
    145 vgabios-0.4c : Nov 06 2003
    146   - Christophe
    147     . fix font problem on initial screen of NT4 Loader
    148     
    149 vgabios-0.4b : Nov 04 2003
    150   - Volker
    151     . fix offset of character tables
    152     . optimizations of CRT controller accesses
    153     . VBE i/o registers changed to 0x01CE/CF 
    154       (suggestion from Daniel Gimpelevich)
    155     . "noclear" flag stored in BIOS area
    156     . fix character height returned by get_font_info function
    157 
    158 vgabios-0.4a : Aug 17 2003
    159   - Volker
    160     . VBE mode search rewritten (VBE modes with LFB bit removed)
    161     . many bugfixes and optimizations
    162     . write character function implemented for graphics modes
    163     . support for 15bpp, 16bpp, 24bpp and 32bpp VBE modes added
    164     . SVGA mode 0x6A added
    165     . VBE modes 0x102, 0x117, 0x118 and 0x142 (Bochs specific)
    166 
    167 vgabios-0.3b : Nov 23 2002
    168   - Christophe
    169     . added lfb-mode numbers (patch from mathis)
    170     . updated the Makefile
    171     . removed display of copyrights.
    172     . changed the Copyright string to "LGPL VGABios developers"
    173   - Volker
    174     . set the cursor shape depending on the current font height
    175     . clear BL before calling int 0x10 function 0x1103 in vgabios_init_func
    176     . added some text font functions
    177   - Jeroen
    178     . Forced to new DISPI (0xb0c1) interface (requires latest bochs vbe code)
    179     . Added multibuffering support
    180     . Added new DISPI interface for: virt width, height, x offset, y offset
    181     . Added LFB modes (to be used with the vbe-lfb patch in bochs)
    182       see VBE_HAVE_LFB in vbe.c (currently default enabled)
    183     . updated TODO & docs for changes after bochs 1.4
    184 
    185 vgabios-0.3a : Mar 10 2002
    186   - Christophe
    187     . Fixed bug in function ah=13
    188   - Jeroen
    189     . updated vbebios implementation to new api
    190     . added vbe_display_api documentation
    191     . added 640x400x8, 640x480x8, 800x600x8, 1024x768
    192       (>640x480 needs a special bochs patch atm)
    193     . added 320x200x8 vbe support (uses the standard 320x200x8 vga mode to
    194       display, this allows for testing & having something on screen as well,
    195       at least until bochs host side display is up & running)
    196     . adding lfbprof (vbe) testprogram (+some small fixes to it)
    197     . merging with vbebios 0.2
    198 
    199 vgabios-0.2b : Nov 19 2001
    200   - Christophe
    201     . Fixed bug in function ah=13
    202 
    203 vgabios-0.2a : Nov 09 2001
    204   - Christophe
    205     . Included bugfix from techt (a] pikeonline.net about grayscale summing
    206     . Added the "IBM" string at org 0x1e as Bart Oldeman suggested
    207     . Fixed DS and ES that where inverted in the int10 parameters list!
    208     . The following have been implemented :
    209 	- function ax=1a00, ax=1a01, ah=1b
    210 	- function ax=1130
    211     . Added debug messages for unimplemented/unknown functions
    212       Must be compiled with DEBUG defined. The output is trapped
    213       by the unknown-ioport driver of plex/bochs (port 0xfff0 is used)
    214 
    215 vgabios-0.1a : May 8 2001
    216   - Christophe
    217     . First release. The work has been focused only on text mode.
    218     . The following have been implemented :
    219 	- inits
    220 	- int 10 handler
    221 	- functions ah=00, ah=01, ah=02, ah=03, ah=05, ah=06, ah=07, ah=08
    222 	  ah=09, ah=0a, ah=0e, ah=0f, ax=1000, ax=1001, ax=1002, ax=1003
    223 	  ax=1007, ax=1008, ax=1009, ax=1010, ax=1012, ax=1013, ax=1015
    224 	  ax=1017, ax=1018, ax=1019, ax=101a, ax=101b, ah=12 bl=10,
    225 	  ah=12 bl=30, ah=12 bl=31, ah=12 bl=32, ah=12 bl=33, ah=12 bl=34
    226 	  ah=13
    227