SVGA v0.2
---------

This is the second release of the GNAT/DOS SVGA (VESA) package.

Note that to make it possible to run this package on as many systems as
possible it is still based upon VESA v1.2, although it will use the VBE
2.0 linear frame buffer where available.

It assumes at least a GNAT/DOS 3.10p environment but should also compile
with earlier versions.

Although the outside interface of this package is essentially the same
as for the SVGA01 package, the implementation has been completely
rewritten.

Notable changes are:

   1. Fix a large number of subtle (and not so subtle) bugs in the
      original code;

   2. Increased conformance with VBE rules;

   3. Increased performance.

However, doing direct screen access from protected mode using VBE v1.2
will always remain relatively slow, as every screen access will require
a switch from protected-mode to real-mode and back and, in addition,
switching the video processors display memory window (the so-called
bankswitching).

Therefore in this version of the SVGA package, all graphics functions
are defined to operate either directly on the screen, or on a screen
buffer. Drawing on a protected mode screen buffer means no mode- or
bankswitching is needed.

Also, if an screen buffer is defined exactly the same size as the
screen, a highly optimized version of Put_Buffer (and Get_Buffer) is
available, moving the data at high speed while minimizing the number of
mode- and bankswitches.

The end result of using these techniques (also known as 'double
buffering') is a dramatic increase in speed, as shown in the demo
program.

A further, possibly dramatic, increase in speed is archieved when a
linear frame buffer (VESA 2.0 and up on suitable video cards) is
available.

BTW: you can ignore any warning about things not being assigned when
     compiling. Believe me, they are, GNAT just isn't noticing it :-)

Jerry van Dijk
september 17, 1998
jdijk@acm.org
