|
|
1.1 root 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 <[email protected]>
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 [email protected]
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: -------
1.1.1.2 ! root 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:
1.1 root 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 [email protected])
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 [email protected] 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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.