
                         The Universal VESA VBE
                         ----------------------

                   Copyright (C) 1993 SciTech Software
                           All rights reserved.

What is it?
-----------

The Universal VESA VBE is a small Terminate and Stay Resident (TSR) program
that extends the video BIOS of SuperVGA video cards to make them compatible
with the Video Electonics Standards Association (VESA) recommended
Video BIOS Extensions (VBE).

By having a video card that has a VESA VBE compatible BIOS, or by
installing this small TSR, programs that support the VESA VBE programming
interface will work correctly for your SuperVGA. This helps to solve a
lot of problems with compatability between different SuperVGA cards on the
market. Note that this program will not take advantage of any of the
acceleration features that your video card may provide.

Why use it?
-----------

You may already have a VESA VBE TSR for you video card, or you video card
may have a VESA VBE compatible BIOS already, so why would you want to use
this program?

The simple answer is that most of the TSR's that exist today, and a lot
of the not-so-new SuperVGA cards that are around implement an older version
of the VESA VBE programming interface (if any at all). For this reason, some
programs that use the advanced features of the new VESA VBE standard will
not work with the TSR or BIOS that you currently have.

So what advanced features does this TSR provide that other's don't? The
Universal VESA VBE implements the VESA VBE 1.2 programming interface,
which supports the following features:

    . SuperVGA page flipping. High performance animation programs can
      use your card to full potential using the VESA BIOS to implement
      extended page flipping (imagine, 1024x768x16 double buffered
      animation, or even 800x600x256 and 640x400x32k/64k on a 1Mb video
      card!!).

    . SuperVGA virtual screens. Programs may set up a virtual display
      resolution of say 1024x1024 pixels, and smoothly scroll a window
      with less physical resolution around within this buffer.

    . Support for the 32k, 64k and 16 million color video modes. As well
      as supporting the industry standard 16 and 256 color video
      modes.

    . Speed. The bank switching code in this package tends to run faster
      than the routines embedded in the VIDEO BIOS of some video cards.

    . Programs that know about the Universal VESA VBE protected mode
      extensions can use the high performance protected mode programming
      interface provided by this TSR.

    . Extremely small size. When the TSR is resident in your computer it
      only requires about 3k of memory which is smaller than the
      size of most commerical VESA VBE TSR's. It may also be loaded high
      to save even more memory.

Hardware Requirements
---------------------

The Universal VESA VBE will run on any 80x86 based IBM PC compatible
running MSDOS. Currently the Universal VESA VBE supports the following
SuperVGA cards (note that not all of these have been fully tested):

    - ATI Technologies 18800, 28800
    - Ahead A & B
    - Chips & Technologies 82c451/452/453
    - Everex
    - Genoa Systems GVGA
    - OAK Technologies OTI-037C, OTI-067, OTI-077, OTI-087
    - Paradise PVGA1A, WD90C00/10/11/20/21/30/31
    - NCR 77C20/21/22E
    - Trident 88/8900
    - Video7 V7VGA versions 1-5
    - Tseng Labs ET3000, ET4000, ET4000/W32
    - AcuMos AVGA2
    - S3 86c911/924/801/805/928
    - Advance Logic AL2101 SuperVGA
    - MXIC 86010 SuperVGA
    - Primus 2000 SuperVGA
    - RealTek 3106 SuperVGA
    - Cirrus Logic CL-GD 5420, 5422, 5424, 5426, 5428

How do I install it?
--------------------

You can install the TSR from the command line, or from your autoexec.bat
file. Don't worry about installing it twice, it will automatically detect
if you have already installed it.

To install it simply type:

    univesa

from the command line. It will determine what type of SuperVGA card you
have installed and install itself accordingly. If you wish to remove the
TSR from memory after it has been installed, simply type:

    univesa -u

This will remove the program from memory, even if it was not the last
TSR to be installed. However if you installed another TSR after this
one that has hooked into the Int 10h interface the old TSR will cease
to function.

You may also use command line options to modify the the installation
process used by the program. The following is produced by typing
'univesa -h' at the command line:

Options are:
    -s<name> - Force detection of SuperVGA 'name'
    -c<x>    - Force detection of SuperVGA chipset (numerical id)
    -m<size> - Force memory size to 'size'
    -d<x>    - Force DAC type (0:VGA, 1:15 bit, 2:16 bit, 3:24 bit)
    -i       - Do not perform SuperVGA detection
    -q       - Quiet mode
    -g       - Regenerate default .ini file
    -u       - Unload the Universal VESA VBE from memory
    -t       - Don't go TSR, just return the detected SuperVGA id
    -b       - Swap the RED and BLUE bytes in 24 bit modes.

It is possible the SuperVGA detection code will hang the machine on old
VGA/SVGA cards. You can optionally force the program to work with any
combination of card, chipset, memory size and DAC, but unless you specify
the -i option, unspecified values will be filled in automatically for you.

Thus you if the detection code did not correctly identify you video card
configuration, you can force the TSR to work with the correct values.

For some SuperVGA cards, I have not been able to work out a solid method
of detecting the amount of video memory on board. If this is the case,
the Universal VESA VBE will refuse to install itself and ask that you
specify the amount of video memory on your card from the command line.

The Universal VESA VBE does not provide support for any of the extended
text modes that your video card may provide, but will provide support
for any extended text modes supported by an underlying VESA VBE compliant
BIOS. Thus if you video card already has a VBE BIOS or you install
your favorite VESA VBE TSR for your video card _before_ installing the
Universal VESA VBE, the Universal VESA VBE will use a pass-through
mechanism to ensure the extended text modes still work correctly.

What's the .ini file for?
-------------------------

For most installations, the Universal VESA VBE will automatically
determine the video modes that you card supports. However on some older
video cards some video modes that the Universal VESA VBE thinks are
available aren't and so an error will occur if a program tries to set
the video mode. The .ini file is used to remove support for those video
modes. You can edit the .ini file yourself or you can get the TSR
to automatically generate the default .ini file for you.

In order to generate the default .ini file for you, you must remove the
TSR from memory, delete the old .ini file, re-install the TSR in memory
and run the program with the -g option. The default .ini file is now
generated. You should then remove the TSR again and re-install it using
the values in the new .ini file. A batch file called 'makeini.bat'
is provided which will do this for you.

The format of the .ini file is simple. All the video modes removed by
the program are listed under the section '[remove]' in the .ini file.
They are listed as the hexadecimal internal mode numbers used by the
TSR (see the next section for a list of the mode numbers used). An
example .ini file might be:

[remove]

10D

Video modes supported by this TSR
---------------------------------

The Universal VESA VBE supports the VESA VBE 1.2 programming interface,
which defines a number of standard video modes numbers. The new version
of the VESA VBE specs will allow the vendor to extend the video numbers
used to whatever values they wish, so I have taken the liberty to
extend the mode numbers used by the Universal VESA VBE to include
modes not originally specified in the VBE 1.2 specs, but supported by
a number of popular video cards on the market. Depending on how well
your applications have been written, they may or may not be able to
use those modes.

The following is a list of the internal mode numbers used by the Universal
VESA VBE and a description of each video mode:

    102   - 800x600 16 color
    104   - 1024x768 16 color
    106   - 1280x1024 16 color
    11C   - 640x350 256 color
    100   - 640x400 256 color
    101   - 640x480 256 color
    103   - 800x600 256 color
    105   - 1024x768 256 color
    107   - 1280x1024 256 color
    10D   - 320x200 32k color
    11D   - 640x350 32k color
    11E   - 640x400 32k color
    110   - 640x480 32k color
    113   - 800x600 32k color
    116   - 1024x768 32k color
    119   - 1280x1024 32k color
    10E   - 320x200 64k color
    11F   - 640x350 64k color
    120   - 640x400 64k color
    111   - 640x480 64k color
    114   - 800x600 64k color
    117   - 1024x768 64k color
    11A   - 1280x1024 64k color
    10F   - 320x200 16m color
    121   - 640x350 16m color
    122   - 640x400 16m color
    112   - 640x480 16m color
    115   - 800x600 16m color
    118   - 1024x768 16m color
    11B   - 1280x1024 16m color

Problems and known bugs
-----------------------

The Universal VESA TSR seems to have problems with QEMM, since QEMM does
something weird with the Video BIOS. In order to fix this problem,
you should use the QEMM 'exclude' options to exclude the Video BIOS
area. Do this by including the following in the QEMM options:

        EXCLUDE=C000-C1FF

Refer to the BUGS file for a list of known problems with the Universal
VESA VBE.

