
Changes in v1.24:

Fix bug causing "not running in ..." messages if vga_init wasn't called.
Better structure for driver interface ("DriverSpecs"). Fields other
than the basic driver functions can be included. Type checking is also
better. Most drivers haven't been updated for the new return types;
feel free to send patches. Something might be broken, watch out.
Better acceleration inferface.
Fix ARK chiptype detection.
Untested ARK chip support.
Largely fixed S3-864 + SDAC support.
Untested clock/DAC support for the Trio64 in the S3 driver.
Unlock extended registers when forcing Cirrus in config file.
Try to avoid Cirrus hardware lock-up when switching certain modes.
Add "accel" program to test new acceleration interface.

Changes in v1.23: (8 Feb 1994)

ET4000/W32 tweaks.
Added gl_allocatecontext. Use this instead of declaring GraphicsContext
variables statically. Demo programs changed accordingly.
Safer VC switching with blits.
Allow Cirrus SVGA modes with 512K memory.
Possible Cirrus 5422 MCLK detection fix.
Incorporate ATI 'driver' from Scott Heavner (allows VGA with 132-column
textmode).
Untested ARK driver and untested generic S3 support (640x480x256 @ 60 Hz).
Unused acceleration interface sketch (accel.h/cirrus.c).

Changes in v1.22:

ET4000 additions for STG170x DAC (tseng3.c and driver), linear addressing
support for W32p, better general linear addressing handling with new driver
function, 8-bit color components CLUT support for AT&T DAC (David
Etherton).
Cirrus driver tweaks.
S3 driver rewritten for S3-864 + SDAC (doesn't work yet) using new
interface.
Linear addressing probing with vga_setlinearaddressing. Console switching
is not a good idea with linear addressing enabled.
Treat Oak 077 as standard VGA (incompatible with OTI-087 mode dumps).
Fix planar getpixel (untested).
VC switching in RAW keyboard mode (e.g. Doom) (doesn't always work,
function keys seem to return different scancodes at different times).

'VGAGL' status:
	Should be usable seperate from svgalib with minor changes.
	GraphicsContext should be allocated dynamically (malloc)
	by library for compatibility/extensibility.
	Non-expanded font text write functions added (untested...).
	Missing is proper direct page flipping support (double-buffering
	in video memory). This would require all operations to be
	performanced at a certain offset into the framebuffer.

Changes in v1.21: (23 Dec 94)

Partially restructured Cirrus driving using clean, XFree86-style
SVGA-generalized interface. Check out timing.*, vgaregs.* and cirrus.c.
Cirrus driver itself should now support all 542x/543x cards.
Fix MouseSystems movement overflow.
Fix PS/2 mouse support finally (sorry).
Fix (old) Logitech protocol mouse handling (hopefully - I lost the
message that contained the fix).
Fix Cirrus bitblt bug.
gvga6400 driver BIOS check changed; munmap seems to mess things up.
Add vga_getpixel() (untested).
Incorporate restorepalette patch from Charles Blake, allows custom
textmode console colors (see utils/README).

Changes from Michael Weller:
Made GSVGAMODE parsing case insensitive, and added names for 16M32 modes.
vgatest displays info about 16M32 modes better.
mach32 - Support for 8bit clut on type 2 DACS.
Added testaccel demo.
mach32 - Support for all accelerator functions.
Added vga_hlinelist(), vga_blitwait(), vga_ext_set(), [vga_accel()]
mach32 - eeprom interpretation more robust and configurable for stupid AST
	 boards.
mach32 - changed 16M4 -> 16M32 for compatibility
Fix: reserve memory for one screen on EACH setmode call (as the README
     states).
mach32 - Added support for AST style EEPROM checksums.
Added commands to control RTS/DTR lines for multiprotocol mice.
Fix: mach32 - VGA modes should work now even in 132 columns text modes.
Sanity check for MAX_REGS in vga.c
Fix: Raised MAX_REGS as was actually needed.
Fix: Textmode utils now give errors on problems with accessing files.
Fix: Restore of Mach32 regs after clock probe was broken (cosmetic, no
     problems reported).
Fix: Mach32 Dac1&4 have to use double/triple clocks in 16/24bpp.


Changes in v1.20: (25 Nov 94)

Clean up VT code a bit.
Slight ET4000/W32p detection fix.
Possible mach32 32bpp copyscreen fix.
Allow VT-switching with mouse support (it was disabled because of
interaction with an old version of selection, I take it things are
better now?).
Preliminary Cirrus 5434 support (untested, only 1280x1024x256 for now),
will be fixed soon.
New Oak driver (Christopher Wiles).
Use seteuid instead of setuid to give up setuid-root permissions.
Hack that may fix 132-column textmode/VGA mode problems on ET4000.
Fix color/mono config option (mono was broken).
Disable 320x200x256 page flipping for ET4000.
Fix Cirrus fillblt register corruption problem.
GVGA6400 driver (Arno Schaefer).
vga_init now returns -1 if not on a suitable console (0 otherwise); hard
	exit can only happen in vga_setmode (David Liu). This should help
	programs with multiple output devices like gnuplot.
Added mouse_init_return_fd and keyboard_init_return_fd for select() use.
Add SIGKILL catch to raw keyboard interface.
PS/2 mouse support possibly fixed.
Shared library 1.2.0 (corresponds with main svgalib version number).


Changes in v1.12: (17 June 1994)

Delay console checking until actually setting a mode (should fix problems
with device-probing programs like gnuplot).
Fix planar mode getmodeinfo bug for Trident and others (should fix floating
point exceptions in zgv).
Support PS/2 mouse in config file.
Fix one-byte-per-pixel gl_putboxmask.
Shared library 1.1.8.

Changes in v1.11: (19 May 94).

Better fix for ET4000/W32 auto-detection.
Fix typo that prevented ET3000 auto-detection.
Clipping bug with compiled bitmaps fixed.
Shared library 1.1.7.

Changes in v1.10: (9 May 94)

Possible fix for ET4000/W32 auto-detection (does iopl(3) now).
Logitech mouse fix.
Repeated keyboard_init/keyboard_close fix.
vgagl fixes for mach32 'misordered' 32bpp truecolor and 32bpp paged fillbox.
mach32 - Forgot to disable write mask for VGA framebuffer (zgv2.2 screen
	 corruption after online help)
mach32 - Wrong assumption about BIOS enabling the mem aperture.. was actually
	 done by Xfree.. driver will setup linear framebuffer itself using
	 info from the EEPROM now.
mach32 - added mach32/mach32.std-modes info file..
mach32 - ran a spell checker over my README's to throw away the worst errors.
mach32 - Patched vgapix for correct RGB_MISORDERED support.
mach32 - This needed an additional global for the modeinfo-flags (short cut is MODEFLAGS).
mach32 - Changed blankadjust for 32bpp modes and DAC-type 2.
mach32 - Patched mach32 autodetection code.
mach32 - Changed 32bpp setting at all by defining a new dacmode (needed for dac-types 5)
mach32 - Changed VFIFO handling and vfifo defaults for 16/24/32bpp modes.
mach32 - Added fuzz factor of 0.5KHz when obeying monitor horz restriction.
mach32 - deleted dacwidth config command (was not useful)
mach32 - Added setuplinear command for mach32 (would be useful for cirrus too)
mach32 - Changed order of restore of extended ati registers to obey locking..
	 may need even more fixing..that is ensure restore of vgaregs before they are locked
	 again when restoring extended ATI lock registers.
mach32 - Had to change order of entries in save-/setregs array for mach32 for this.
Shared library v1.1.6.

Changes in v1.09: (2 May 94)

Significant mach32 driver/docs update (potentially dangerous bug fixed).
Some vga_draw primitives now support 32-bit pixel modes (better support is
in vgagl).
Cirrus 320x200x256 registers redefined to support page flipping (setmodeX
doesn't work anymore).
Trident 320x200x256 page-flipping disabled.
Shared library 1.1.5.

Changes in v1.08: (27 Apr 94)

Improved vgagl 24-bit physical/32-bit virtual screen support (pageflipping
really fixed, speed increase (alignment)).
S3 driver hacked (try it if you are bold).
Sierra 15025/26 DAC support should work for 32K modes now.
Added PS/2 mouse support (untested).
More vgagl 32bpp primitives.
320x200x256 vgagl page flipping fix (this is a big one).
Added ctrl-c detection to low-level keyboard interface.
vgagl copyboxfromcontext added, and more efficient copyboxtocontext.
Shared library 1.1.4.

Changes in v1.07: (19 Apr 94)

Moved main library source into src/. Cleaned up shared library making.
Fix permissions of utils/convfont.
Fix tty behaviour:
Open /dev/tty instead of /dev/tty0 (previously non-root users could not run
programs if /dev/tty0 was not world-readable, like in the recent slackware).
Don't kill the terminal settings when detecting a non-graphics capable
virtual console (stupid bug related to use of atexit()).
Limited support for ioperm(1) by Olaf Titz. Allows non-root users to run
svgalib binaries which are not setuid-root.
Emulated paged copybox in vgagl (untested).
Utility to read out the ATI mach32 EEPROM.
Shared library 1.1.3.

Changes in v1.06: (11 Apr 94)

vgagl pageflipping fix for 24-bit/32-bit virtual screen.
Fix 16 color mode availability on ATI mach32.
Possible ET4000/W32 Sierra 15025/26 64K color fix.
vgagl compiled bitmaps enhanced (not completely compatible with v1.05),
but still untested.
Possible Trident 320x200 page flipping fix.
Shared library 1.1.2

Changes in v1.05: (2 Apr 94)

Some unfinished SVPMI stuff (feedback strongly encouraged).
Added vgagl compiled bitmap functions (256 color only, untested).
Added definitions for 32 bits per pixel truecolor modes (not used yet). I
don't feel like adding vga_draw* functions for these; use vgagl.
vgagl now supports VGA 16 color modes indirectly.
Added RAW mode keyboard interface (vgakeyboard.h).
Mouse driver fix.
Shared library 1.1.1.

Changes in v1.04: (29 Mar 94)

Support for more than 1Mbyte of memory on ET4000W32i/W32p and 24-bit Sierra
DAC (15025/6) (untested). Fixed copying 4 bytes per pixel virtual screen to
three bytes per pixel screen (e.g. '3d' in truecolor modes). Fixed missing
gl_enablepageflipping. Fixed Cirrus linear addressing.
Amazing alpha ATI mach32 driver by Michael Weller; configuration file format
extended.
Shared library version 1.1.

Changes in v1.03:

EGA support fixed (Kapil Paranjabe). Added vga_safety_fork. 
utils/Makefile fixed.

Changes in v1.02:

vgagl bitmap scaling improved. vga_lockvc/unlockvc should be useful now to
avoid corruption of certain VGA registers used for drawing.

Changes in v1.01:

Fixed copying to planar 256 color mode in vgagl, and added page flipping
support. Setting an SVGA mode after a planar 256 color mode clears the
screen properly now. Shared library 1.0.10.

Changes in v1.00: (Jan 94)

[The version number doesn't say anything about stability/completeness etc.]
A number of bug fixes related to Mode X (display start, console switching,
planar 320x200x256 allowed with vga_setmodeX()).
Added vga_copytoplanar256 for Mode X-like modes. Added smooth scrolling demo
program. Demo programs moved to demos/.
Cirrus linear addressing works (if you have less than 16Mb of memory); see
demos/testlinear. Added ET3000 driver. Trident 8900 reboot-beep problem should
be fixed.
Shared library 1.0.9

Changes in v0.99:

ET4000 patches by Hartmut Schirmer: ET4000 register dumps now have extra
registers, so old register dumps won't work; register dump program (tseng3,
moved to et4000/ directory) supports VESA modes. Microsoft mouse handling
bug fixed. Shared library 1.0.8.

Changes in v0.98:

Some minor bugfixes, low-level mouse handling rewritten (was very slow).
Added vga_runinbackground and vga_oktowrite as a kludge to allow a graphics
program to run in the background (not entirely safe). Disabled ET4000 clock
detection (wasn't used yet).
Shared library version 1.0.7.

Changes in v0.97:

Fixed Cirrus 1024x768x256 non-interlaced. Other modes use default (lowest)
frequencies. Fixed bad virtual screen bug in vgagl (copyscreen).
Incorporates patches from Hartmut Schirmer (et4000 clock frequency
determination). Shared library 1.0.6.

Changes in v0.96:

Corrected et4000/et4000.default. Cirrus 1024x768x256 non-interlaced.
Hopefully fixed Cirrus monitor settings. Cirrus blitting works again. Fixes
in vgagl truecolor framebuffer support. Shared library 1.0.5.

Changes in v0.95:

Avoid writing to some reserved registers on ET4000 and Trident (fixes dual
monitor setups) (David Monro). Cirrus 1024x768x256 was doing scary things if
the svgalib monitor type was set to allow non-interlaced. Added Cirrus
1024x768x16 non-interlaced and 1280x1024x16 interlaced. Shared library
1.0.4.

Changes in v0.94:

Added 132x43 textmode tweaking utility. Put utilities in utils/.
restoretextmode was not saving/restoring extended registers anymore. Shared
library 1.0.3. Hack to prevent standard VGA modes from failing to work after
having run XFree86 on Cirrus. gl_setcontextwidth fixed.

Changes in v0.93:

Oops, version 0.92 was not quite up to date. Shared library is 1.0.2. We'll
get libvga.so.1.0.99 before the end of the year at this rate :-).
gl_copybox truly fixed.

Changes in v0.92:

Fixed broken configuration file reading; some minor changes.
Shared library is now version 1.0.1. Source is flawed.

Changes in v0.91:

Various fixes. Dumpreg should work better in X now. The default dynamically
defined ET4000 registers are now in /usr/local/lib/libvga.et4000.
Added vga_getgraphmem.
Shared library support (requires tools 2.8 to build). This greatly reduces
executable size and is good for binary compatibility.
__svgalib_graph_mem is now shadowed in a read-only user-visible global
variable (graph_mem) for easier shared library building.
Fixed console switching bug when a textmode is set in between the setting
of graphics modes.

Oak 640x480x256 should work now.

vgalgl updates. Added 4 bytes per pixel virtual screen support.

Added vga_init. This will detect and initialize the driver, and give up
supervisor rights, having obtained I/O permissions. This is the recommended
first line of any program that uses svgalib.

Should do chmod a+s on restorefont.

EGA support from egalib by Kapil Paranjabe integrated into svgalib. This
is currently untested.

Mouse support (can also be used independently). Added vga_lockvc and
vga_unlockvc; vga_getkey (read keyboard without waiting). Using the mouse
means no console switching for now.

Initial untested S3 driver. Goal is to provide support for truecolor modes
on the 801/805/928, in SVGA mode. Properly uses monitor type variable.
[doesn't work]

Configuration file for mouse/monitor type. Monitor type not used by drivers
yet, except Cirrus.


Changes in v0.9:

Extensive changes and restructuring, by Hartmut Schirmer. Dynamic
(run-time) register loading from a configuration file for ET4000 cards,
providing binary compatibility. High resolution 16-color modes (for ET4000
at least). More stable virtual console switching.

copybox, and gl_setpalettecolor bugs fixed in vgagl.

Fixed setting of standard VGA mode after SVGA mode.


Changes in v0.82:

Virtual console switching cleanup.

The dumpreg program now also shows extended registers.

Added Oak driver, but extended registers have not been filled in. Somebody
should run XFree86 with the Oak driver, dump the extended registers with the
dumpreg program (make sure the Oak driver is enabled in config.h), and put
them in oak.c. With some luck it'll work.


Changes in v0.81:

Restorefont (write option) was broken again due to bug in vga.c; gl/text.c
was missing in v0.8. Added vga_disabledriverreport.


Changes in v0.8:

Fixed major bug in vga_getmodeinfo in vgadrv.c. This may have caused
spic to fail on unsupported SVGA cards in 320x200x256.

vga.c split, and other changes (Hartmut Schirmer). Note that mode numbers
beyond 1024x768x256 have changed. Standard VGA modes 720x350x16 and
720x480x16 added.

Virtual console switching improved (bank/linewidth/displaystart preserved).


Changes in v0.7:

Trident textmode restoration and SVGA modes should work now on 1M cards
(thanks to Scott Heavner).

Bug fixes in vgagl.


Changes in v0.6:

Trident driver bug fixed; detection cleaned up. 800x600 and 1024x768 on 1Mb
cards don't work correctly.

Added Cirrus 800x600x16M NI (at 50 Hz), and program to set the Cirrus memory
clock to a higher value (setmclk.c).

Added framebuffer graphics library for one, two and three byte-per-pixel
modes. Documentation improved.

vga_setrgbcolor added.

ET4000 Hicolor fixes (thanks to Savio Lam), and other fixes (Scott Heavner).


Changes in v0.5:

Fixed palette register timing bug (caused occasional corruption of textmode
palette).

Added function that checks the environment variable GSVGAMODE for a 
default mode (vga_getdefaultmode). The environment string can either be a
mode number (compatible with VGAlib Ghostscript), or a mode name as
in (G640x480x2, G640x480x16, G640x480x256, G640x480x32K, G640x480x64K,
G640x480x16M, PROMPT (ignore)).


Changes in v0.4:

restorefont.c as distributed in v0.3 missed a case line in a switch
statement which made it useless.

Each VGA register write in the library was producing silly debugging code
(I forgot to restore the macro definition), making everything significantly
larger than neccessary.

Added vga_getchipset function. vgatest now only lists modes that are
available.

The ET4000 driver has been improved, including Hicolor DAC detection 
(thanks to David Monro and Daniel Jackson).

Cirrus driver:
Fixed 5420/2/4 bug, cleaned up detection, changed the 800x600 timings, and 
added missing modes 1024x768x256/32K/64K, as well as 320x200x15/16/24bit.
Also, there's support for some of the accelerated features of the Cirrus
5426, the driver provides bitblt (move box), fillblt (fill box), and
imageblt (write bitmap from system memory) functions.

Display start address can now be meaningfully changed in 16-color and planar
256 color VGA modes for page-flipping (address is expressed as number of
pixels).

Fixed the vga_flip() functionality; if you press escape during
vga_getch() the console is switched to textmode until another key is
pressed. [note: this has been obsoleted by console switching]
The default amount of video memory saved in SVGA modes is the size
of one screen. If the program uses more (if it uses page-flipping, for
example), you must indicate it with the vga_claimvideomemory function. This
prevents 2048 or 1024K being saved when only a few hundred K is required.

svgalib now waits until the virtual console it is running in becomes active
before setting the first graphics mode.

Implemented transparent virtual console switching (which uses vga_flip).

