From 485ee8838b124d50860fcae85fad79aeb3d6b90b Mon Sep 17 00:00:00 2001 From: Christophe Bothamy Date: Sun, 17 Aug 2003 15:41:12 +0000 Subject: [PATCH] - update LGPL'd vgabios with release 0.4a --- bochs/bios/VGABIOS-lgpl-README | 76 +++++++++++++++++++++++++++++++-- bochs/bios/VGABIOS-lgpl-latest | Bin 27493 -> 29769 bytes 2 files changed, 73 insertions(+), 3 deletions(-) diff --git a/bochs/bios/VGABIOS-lgpl-README b/bochs/bios/VGABIOS-lgpl-README index 71395a3c7..4318bdd16 100644 --- a/bochs/bios/VGABIOS-lgpl-README +++ b/bochs/bios/VGABIOS-lgpl-README @@ -76,8 +76,78 @@ The source code is based on information taken from : Feedback -------- Please report any bugs, comments, patches for this VGA Bios to cbothamy@free.fr - You can find the latest release at : http://cbothamy.free.fr/projects/vgabios/ - -For any information on plex86, visit the website http://www.plex86.org/ For any information on bochs, visit the website http://bochs.sourceforge.net/ + + +History +------- +vgabios-0.4a : Aug 17 2003 + - Volker + . LFB flagged VBE modes removed + . many bugfixes and optimizations + . write character function implemeted for graphic modes + . support for 15bpp, 16bpp, 24bpp and 32bpp VBE modes added + . SVGA modes 0x6A added + . VBE mode 0x102, 0x117, 0x118, 0x142 (Bochs specific) + +vgabios-0.3b : Nov 23 2002 + - Christophe + . added lfb-mode numbers (patch from mathis) + . updated the Makefile + . removed display of copyrights. + . changed the Copyright string to "LGPL VGABios developers" + - Volker + . set the cursor shape depending on the current font height + . clear BL before calling int 0x10 function 0x1103 in vgabios_init_func + . added some text font functions + - Jeroen + . Forced to new DISPI (0xb0c1) interface (requires latest bochs vbe code) + . Added multibuffering support + . Added new DISPI interface for: virt width, height, x offset, y offset + . Added LFB modes (to be used with the vbe-lfb patch in bochs) + see VBE_HAVE_LFB in vbe.c (currently default enabled) + . updated TODO & docs for changes after bochs 1.4 + +vgabios-0.3a : Mar 10 2002 + - Christophe + . Fixed bug in function ah=13 + - Jeroen + . updated vbebios implementation to new api + . added vbe_display_api documentation + . added 640x400x8, 640x480x8, 800x600x8, 1024x768 + (>640x480 needs a special bochs patch atm) + . added 320x200x8 vbe support (uses the standard 320x200x8 vga mode to + display, this allows for testing & having something on screen as well, + at least until bochs host side display is up & running) + . adding lfbprof (vbe) testprogram (+some small fixes to it) + . merging with vbebios 0.2 + +vgabios-0.2b : Nov 19 2001 + - Christophe + . Fixed bug in function ah=13 + +vgabios-0.2a : Nov 09 2001 + - Christophe + . Included bugfix from techt@pikeonline.net about grayscale summing + . Added the "IBM" string at org 0x1e as Bart Oldeman suggested + . Fixed DS and ES that where inverted in the int10 parameters list! + . The following have been implemented : + - function ax=1a00, ax=1a01, ah=1b + - function ax=1130 + . Added debug messages for unimplemented/unknown functions + Must be compiled with DEBUG defined. The output is trapped + by the unknown-ioport driver of plex/bochs (port 0xfff0 is used) + +vgabios-0.1a : May 8 2001 + - Christophe + . First release. The work has been focused only on text mode. + . The following have been implemented : + - inits + - int 10 handler + - functions ah=00, ah=01, ah=02, ah=03, ah=05, ah=06, ah=07, ah=08 + ah=09, ah=0a, ah=0e, ah=0f, ax=1000, ax=1001, ax=1002, ax=1003 + ax=1007, ax=1008, ax=1009, ax=1010, ax=1012, ax=1013, ax=1015 + ax=1017, ax=1018, ax=1019, ax=101a, ax=101b, ah=12 bl=10, + ah=12 bl=30, ah=12 bl=31, ah=12 bl=32, ah=12 bl=33, ah=12 bl=34 + ah=13 diff --git a/bochs/bios/VGABIOS-lgpl-latest b/bochs/bios/VGABIOS-lgpl-latest index b4937a8410552c3cbd95457b3c900ef3f507f384..49b18b572b75f3039a272371c91226afb7125b09 100644 GIT binary patch delta 11716 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