- 4MB memory probe added (patch from Fabrice Bellard)
[vgabios.git] / README
blobf66c7f68b245425a70a3ed1d3c5cb59c4997d7cd
1 Plex86/Bochs VGABios
2 --------------------
4 The goal of this project is to have a LGPL'd Video Bios in plex86
5 and bochs.
6 This VGA Bios is very specific to the emulated VGA card.
7 It is NOT meant to drive a physical vga card.
10 Install
11 -------
12 To compile the VGA Bios you will need :
13 - gcc
14 - bcc
15 - as86
16 - ld86
18 Untar the archive, and type make. You should get a "VGABIOS-lgpl-latest.bin"
19 file. Alternatively, you can use the binary file "VGABIOS-lgpl-latest.bin",
20 i have compiled for you.
22 Edit your plex86/bochs conf file, and modify the load-rom command in the
23 VGA BIOS section, to point to the new vgabios image file.
26 Debugging
27 ---------
28 You can get a very basic debugging system: messages printed by the vgabios.
29 You have to register the "unmapped" device driver in plex86 or bochs, and make
30 sure it grabs port 0xfff0.
32 Comment the #undef DEBUG at the beginning of vgabios.c. 
33 You can then use the "printf" function in the bios. 
36 Testing
37 -------
38 Look at the "testvga.c" file in the archive. This is a minimal Turbo C 2.0 
39 source file that calls a few int10 functions. Feel free to modify it to suit 
40 your needs.
43 Copyright and License
44 ---------------------
45 This program has been written by Christophe Bothamy
46 It is protected by the GNU Lesser Public License, which you should
47 have received a copy of along with this package. 
50 Reverse Engineering
51 -------------------
52 The VGA Bios has been written without reverse-engineering any existing Bios.
55 Acknowledgment
56 --------------
57 The source code contains code ripped from rombios.c of plex86, written
58 by Kevin Lawton <kevin2001@yahoo.com>
60 The source code contains fonts from fntcol16.zip (c) by Joseph Gil avalable at :
61 ftp://ftp.simtel.net/pub/simtelnet/msdos/screen/fntcol16.zip
62 These fonts are public domain
64 The source code is based on information taken from :
65 - Kevin Lawton's vga card emulation for bochs/plex86
66 - Ralf Brown's interrupts list avalaible at 
67   http://www.cs.cmu.edu/afs/cs/user/ralf/pub/WWW/files.html
68 - Finn Thogersons' VGADOC4b available at http://home.worldonline.dk/~finth/
69 - Michael Abrash's Graphics Programming Black Book
70 - Francois Gervais' book "programmation des cartes graphiques cga-ega-vga" 
71   edited by sybex
72 - DOSEMU 1.0.1 source code for several tables values and formulas
75 Feedback
76 --------
77 Please report any bugs, comments, patches for this VGA Bios to cbothamy@free.fr
78 You can find the latest release at : http://www.nongnu.org/vgabios/
79 For any information on bochs, visit the website http://bochs.sourceforge.net/
82 History
83 -------
84 vgabios-0.4c : Nov 06 2003
85   - Christophe
86     . fix font problem on initial screen of NT4 Loader
87     
88 vgabios-0.4b : Nov 04 2003
89   - Volker 
90     . fix offset of character tables
91     . optimizations of CRT controller accesses
92     . VBE i/o registers changed to 0x01CE/CF 
93       (suggestion from Daniel Gimpelevich)
94     . "noclear" flag stored in BIOS area
95     . fix character height returned by get_font_info function
97 vgabios-0.4a : Aug 17 2003
98   - Volker
99     . VBE mode search rewritten (VBE modes with LFB bit removed)
100     . many bugfixes and optimizations
101     . write character function implemented for graphics modes
102     . support for 15bpp, 16bpp, 24bpp and 32bpp VBE modes added
103     . SVGA mode 0x6A added
104     . VBE modes 0x102, 0x117, 0x118 and 0x142 (Bochs specific)
106 vgabios-0.3b : Nov 23 2002
107   - Christophe
108     . added lfb-mode numbers (patch from mathis)
109     . updated the Makefile
110     . removed display of copyrights. 
111     . changed the Copyright string to "LGPL VGABios developers"
112   - Volker 
113     . set the cursor shape depending on the current font height
114     . clear BL before calling int 0x10 function 0x1103 in vgabios_init_func
115     . added some text font functions
116   - Jeroen
117     . Forced to new DISPI (0xb0c1) interface (requires latest bochs vbe code)
118     . Added multibuffering support
119     . Added new DISPI interface for: virt width, height, x offset, y offset
120     . Added LFB modes (to be used with the vbe-lfb patch in bochs)
121       see VBE_HAVE_LFB in vbe.c (currently default enabled)
122     . updated TODO & docs for changes after bochs 1.4
124 vgabios-0.3a : Mar 10 2002
125   - Christophe
126     . Fixed bug in function ah=13
127   - Jeroen
128     . updated vbebios implementation to new api
129     . added vbe_display_api documentation
130     . added 640x400x8, 640x480x8, 800x600x8, 1024x768 
131       (>640x480 needs a special bochs patch atm)
132     . added 320x200x8 vbe support (uses the standard 320x200x8 vga mode to
133       display, this allows for testing & having something on screen as well,
134       at least until bochs host side display is up & running)
135     . adding lfbprof (vbe) testprogram (+some small fixes to it)
136     . merging with vbebios 0.2
138 vgabios-0.2b : Nov 19 2001
139   - Christophe
140     . Fixed bug in function ah=13
142 vgabios-0.2a : Nov 09 2001
143   - Christophe
144     . Included bugfix from techt@pikeonline.net about grayscale summing
145     . Added the "IBM" string at org 0x1e as Bart Oldeman suggested
146     . Fixed DS and ES that where inverted in the int10 parameters list!
147     . The following have been implemented :
148         - function ax=1a00, ax=1a01, ah=1b
149         - function ax=1130                
150     . Added debug messages for unimplemented/unknown functions
151       Must be compiled with DEBUG defined. The output is trapped
152       by the unknown-ioport driver of plex/bochs (port 0xfff0 is used)
154 vgabios-0.1a : May 8 2001
155   - Christophe
156     . First release. The work has been focused only on text mode.
157     . The following have been implemented :
158         - inits
159         - int 10 handler
160         - functions ah=00, ah=01, ah=02, ah=03, ah=05, ah=06, ah=07, ah=08
161           ah=09, ah=0a, ah=0e, ah=0f, ax=1000, ax=1001, ax=1002, ax=1003
162           ax=1007, ax=1008, ax=1009, ax=1010, ax=1012, ax=1013, ax=1015
163           ax=1017, ax=1018, ax=1019, ax=101a, ax=101b, ah=12 bl=10,
164           ah=12 bl=30, ah=12 bl=31, ah=12 bl=32, ah=12 bl=33, ah=12 bl=34
165           ah=13