
                         README for XFree86 1.3
                         ----------------------
Contents
--------
    1) What is XFree86?
    2) What's new in XFree86 1.3?
    3) XFree86 features
    4) Systems XFree86 has been tested on
    5) Supported video-card chip-sets
    6) Where to get more information
    7) Bugs known fixed in XFree86 vs stock X11R5
    8) Known bugs in XFree86
    9) Building XFree86
   10) Using and configuring XFree86
   11) Configuring XFree86 for a new video card and monitor
   12) The monochrome server
   13) Reconfiguring the server (source distribution)
   14) Reconfiguring the server (binary distribution)
   15) Credits
   16) Contact information
   17) Source and binary archive sites

1 - What is XFree86?
--------------------
  XFree86 is a port of X11R5 that supports several versions of Intel-based
Unix and Unix-like operating systems.  The XFree86 servers are derived
from X386 1.2, which was the X server distributed with X11R5.  This
release consists of many new features and performance improvements as well
as many bug fixes.  The release is available as source patches against the
MIT X11R5 code, as well as binary distributions for many architectures.

Note that while the source and installation trees retain the name 'X386'
name (for simplicity of maintenance of the source tree), there is no
connection between XFree86 and the commercial X386 product sold by SGCS.
The XFree86 Core Team maintains technical contacts with SGCS in an effort
to keep user-affecting changes to the workings of the products from
diverging too radically.  There is no direct involvement of either group
in the workings of the other.

2 - What's new in XFree86 1.3?
------------------------------
  The following items have been added since XFree86 1.2 was released in
February 1993:

    0) The server binary names have been changed from 'X386' and
       'X386mono' to 'XF86_SVGA' and 'XF86_Mono'.  This is not
       particularly important, but may confuse people at first.
    1) MIT public fixes to X11R5 up to fix-25 have been incorporated
    2) Support for the following operating systems has been added:
		SCO SVR3 3.2.2 and 3.2.4
		ISC 2.0.2
		Amoeba
		Minix-386
    3) Support for the following SVGA chipsets has been added:
		Western Digital 90C3x
		Cirrus 542x
		Trident 8800CS, 8900B, 8900CL
		NCR 77C22, 77C22E
		Compaq AVGA
       We believe that the ET4000/W32 will also work with this release.
    4) For SVR3/4, the local connection mechanism used is selectable at
       run-time, rather than compile time.
    5) For 386BSD, the server now determines the console driver at
       run-time, removing the need for separate server binaries.
    6) Support for building Linux shared libraries is integrated into the
       source kit.
    7) The server Link Kit now includes driver sources, which allows for
       modification and addition of new drivers, without requiring the
       server source tree.
    8) The interface between the server and the drivers has been fully
       documented, and a stub driver is included.
    9) A preliminary version of the 'SuperProbe' program is included.
       This is a Unix-based program designed to detect and identify
       installed video hardware.
   10) The binary package is no longer required to exist in /usr/X386.
       Support for a $XWINHOME environment variable has been added to all
       hard-coded paths.
   11) PEX is now supported in the XFree86 source tree, and has been
       ported to Linux.
   12) The Hercules code has been fixed for Linux, 386BSD, Mach and SCO.
   13) The handling of the "overscan" region of the display has been
       dramatically improved.  This should prevent the area of the display
       outside the raster from changing to odd colors when colormap
       changes are made.
   14) Support has been added to handle mice that can switch between
       Microsoft and MouseSystems modes via toggling of DTR for OSs that
       provide a mechanism for manipulating RS-232 control leads.
   15) Support for a banked operation has been added to the ET3000 driver
       in the monochrome server.

Plus a number of other small things.  Refer to the CHANGELOG file in the
source distribution for full details.

3 - XFree86 Features
--------------------
  Here is a list of the other significant features that XFree86 adds over
stock X386 1.2 (X11R5):

    1) The SpeedUp package from Glenn Lai is an integral part of XFree86,
       selectable at run-time via the Xconfig file.  Some SpeedUps require
       an ET4000 based SVGA, and others require a virtual screen width of
       1024.  The SpeedUps suitable to the configuration are selected by
       default.  With a high-quality ET4000 board (VRAM), this can yield
       up to 40% improvement of the xStones benchmark over X386 1.2.
    2) The fX386 packages from Jim Tsillas are included as the default
       operating mode if SpeedUp is not selected.  This mode is now
       equivalent in performance to X386 1.1b (X11R4), and approximately
       20% faster than X386 1.2.
    3) A monochrome server that supports bank-switching of available SVGA
       memory to allow virtual screens up to 1600x1200.
    4) Support for the Hercules mono card has been added to the monochrome
       server, and with it the ability to support a "two headed" server -
       one VGA, and one Hercules.
    5) SVR3 shared libraries, tested under ISC SVR3 2.0.2, 2.2 and 3.0.1;
       SCO 3.2.2, 3.2.4.
    6) Support for Linux, 386BSD, Mach, SVR4.2, SCO, Amoeba, and Minix-386.
    7) Support for LOCALCONN.  This support is for both SVR3.2 and SVR4.
       For SVR4.0.4 with the 'Advanced Compatibility Package', local
       connections from SCO XSight/ODT clients are supported.
    8) Drivers for ATI, Trident, NCR, Compaq, and Cirrus SVGA chipsets.
       Refer to the files README.ati and README.trident for details about
       the ATI and Trident drivers.
    9) Support for compressed bitmap fonts has been added (Thomas
       Eberhardt's code from the contrib directory on export.lcs.mit.edu).
   10) Type1 Font code from MIT contrib tape has been included, and is
       compile-time selectable.  There are contributed Type1 fonts in the
       contrib directory on export.lcs.mit.edu.
   11) New configuration method which allows the server's drivers and font
       renderers to be reconfigured from both source and binary
       distributions.
   12) A new tutorial on how to develop correct video card and monitor
       timing data, written by Eric Raymond (derived from previous
       documentation and a lot of experimentation).
   13) Greatly improved support for international keyboards, including
       implementation of the Compose key functionality found on many
       vendor servers.
   14) Many enhancements in error handling and parsing of the Xconfig
       configuration file.  Error messages are much more informative and
       intuitive, and more validation is done.  There are many new options
       that can be enabled in the Xconfig file.

4 - Systems XFree86 has been tested on
--------------------------------------
    SVR4.0:
	Esix: 4.0.3A, 4.0.4
	Microport: 2.2, 3.1, 4.1, 4.2
	Dell: 2.1, 2.2
	UHC: 2.0, 3.6
	Consensys: 1.2
	MST: 4.0.3
	ISC: 4.0.3
	AT&T: 2.1, 4.0
	NCR: MP-RAS

    SVR4.2:
	Consensys
	Univel UnixWare

    SVR3:
	Interactive: 2.0.2, 2.2, 3.0
	SCO: 3.2.2, 3.2.4
	AT&T: 3.2.2

    Others:
	386BSD 0.1, NetBSD 0.8
	Mach 386
	Linux
	Amoeba
	Minix-386

5 - Supported video-card chipsets
---------------------------------
  At this time, XFree86 1.3 supports the following SVGA chipsets:
    
    Tseng ET3000, ET4000
    Western Digital/Paradise PVGA1
    Western Digital WD90C00, WD90C10, WD90C11, WD90C30, WD90C31
    Genoa GVGA
    Trident TVGA8800CS, TVGA8900B, TVGA8900C, TVGA8900CL, TVGA9000
    ATI 28800-4, 28800-5, 28800-a
    NCR 77C22, 77C22E
    Cirrus Logic GLGD5420, CLGD5422, CLGD5424, CLGD5426
    Compaq AVGA
    
All of the above are supported in both 256 color and monochrome modes,
with the exception of the ATI and Cirrus chipsets, which are only
supported in 256 color mode.

Refer to the chipset-specific README files (currently for Tseng, Western
Digital, ATI, and Trident) for more information about using those chipsets.

The monochrome server also supports generic VGA cards, using 64k of video
memory in a single bank, and the Hercules card.  On the Compaq AVGA, only
64k of video memory is supported for the monochrome server, and the GVGA
has not been tested with more than 64k.

It appears that some of the SVGA card manufacturers are going to
non-traditional mechanisms for selecting pixel-clock frequencies.  To
avoid having to modify the server to accommodate these schemes XFree86 1.2
added support for using an external program to select the pixel clock.
This allows programs to be written as new mechanisms are discovered.
Refer to the README.clkprog file for information on how these programs
work, if you need to write one.  If you do develop such a program, we
would be interested in including it with future XFree86 releases.

NOTE: The Diamond SpeedStar 24 (and possibly recent SpeedStar+) boards are
      NOT supported, even though they use the ET4000.  The reason for this
      is that Diamond has changed the mechanism used to select pixel clock
      frequencies, and will only release programming information under
      non-disclosure.  We are not willing to do this (as it would mean
      that source cannot be provided).  We have had discussions with
      Diamond over this, and they do not intend to change this policy.
      Hence we will do nothing to support Diamond products going forward
      (i.e. don't send us a program to run set their clocks).

A final mention must be made of accelerated chipsets.  At this point,
XFree86 does not support any accelerated chipsets.  These include the S3
86Cxxx, the ATI Mach8 and Mach32, the IBM 8514/A, the new Western Digital
chipset (on the Diamond SpeedStar 24X), the new Cirrus and Tseng chipsets,
and TIGA (TI 340x0).  Some of these will be supported in XFree86 2.0.

6 - Where to get more information
---------------------------------
  Additional documentation is available in the XFree86(1) and XF86keybd(1)
manual pages.  In addition, several README files and tutorial documents
are provided.  These are available in /usr/X386/lib/X11/etc in the binary
distributions, and in mit/server/ddx/x386 and ddx/x386/etc in the source
distribution.

Documentation on SVGA driver development can be found in the directory
/usr/X386/Server/VGADriverDoc in the binary distribution, and in the
directory mit/server/ddx/x386/VGADriverDoc in the source distribution.

If you are totally at a loss, you can contact the XFree86 Core Team at
the electronic mail address below.

7 - Bugs known fixed in XFree86 vs stock X11R5
----------------------------------------------
    1) Server now traps and exits cleanly if unexpected signals are
       received (a core is still generated for debugging).  There is an
       Xconfig option to disable this trapping.
    2) VT switching (on OS's that support the feature) is more robust.
       The server will no longer crash nor will the screen get corrupted
       as a result of starting or exiting clients while switched away.
       Also, the screen saver is turned off when switching back so you
       don't return to a blank screen.  These changes also ensure that xdm
       shuts down cleanly, and allow multiple servers to be active
       simultaneously
    3) Several bugs in the frame buffer code have been fixed.
    4) The use of xdm with xqueue under SVR4 has been fixed.
    5) The maximum number of server connections is now correctly
       determined for SVR4 by making use of getrlimit().
    6) The default pointer button mapping has been fixed.
    7) xterm no longer tries to open /dev/tty[psr]?? for SVR4.  This
       speeds up the startup time for xterm, as well as keeping it from
       using the wrong pty's on SVR4.0.4.
    8) xconsole fixed to use /dev/osm (SVR4 and some SVR3.2) for OS messages.
    9) A bug with XDM-AUTHORIZATION-1 which caused strange problems with
       some hardware has been fixed.
   10) The xman scroll bug has been fixed.
   11) Improved the accuracy of the server's probe for pixel clock
       frequencies
   12) Redefined the handling of the numeric keypad, so that it works
       correctly with Xt-based applications (translation problems
       resolved).
   13) Plugged security risk related to suid-root execution of the server.

8 - Known bugs in XFree86
-------------------------
    1) There are some problems with some of the 'xset fp' operations (in
       particular 'xset fp rehash').  These seem to be caused by memory
       allocation/deallocation problems in the server's font code.  We
       believe that we have worked around this problem, but have not yet
       solved the root cause.
    2) A bug relating to the 'xhost' command on SVR3 has been worked
       around.  We are still attempting to determine the root cause of
       this problem.

We welcome reports of bugs sent to the electronic mail address listed
below.

9 - Building XFree86
--------------------
NOTE - Refer to the appropriate OS-specific README file before attempting
       to build XFree86.  These files contain additional information that 
       you may need to successfully build under your OS.

0. We highly recommend using GCC-2 to build XFree86.  Do not use versions
   2.3.2 or 2.4.0 due to bugs that cause either build or execution failures.
   2.4.3 is currently available.  The XFree86 1.3 binary kits were built
   with 2.3.3, as it is not yet clear that 2.4.x is stable.  Use of GCC's 
   -m486 option will yield approximately 5% better performance on a 486, 
   with no degradation (other than larger binaries) on a 386.  (gcc-2 is 
   available from prep.ai.mit.edu and other sites archiving GNU source.)

1. You need the following:
    - about 60-70MB of free disk space is required for building XFree86.
      An additional 20-30MB (for OSs with shared libraries) or 30-50MB
      (for OSs without shared libraries) is required to install the built
      binaries, fonts, etc,
    - MIT X11R5 distribution with fixes 01-25 applied.  If you want to
      minimise disk usage, you can remove some or all of the following
      directories:

        mit/doc                         mit/hardcopy
        mit/lib/CLX                     mit/server/ddx/dec
        mit/server/ddx/ibm              mit/server/ddx/macII
        mit/server/ddx/mips             mit/server/ddx/omron
        mit/server/ddx/snf              mit/server/ddx/sun
        mit/server/ddx/tek

      If you don't want to build PEX, you can remove the following
      directories.  Since XFree86 now includes PEX support, doing this
      will cause some patches to fail (but they can safely be ignored).

        mit/demos/auto_box              mit/extensions/lib/PEX
        mit/demos/beach_ball            mit/extensions/server/PEX
        mit/demos/gpc                   mit/extensions/test/InsPEX
        mit/fonts/PEX                   mit/extensions/lib/PEXlib
        mit/util/PEX

      The following large fonts in mit/fonts/bdf/misc can also be removed
      if you don't need them:

         k14.bdf             hang*.bdf         jiskan*.bdf

    - XFree86-1.3.diff.gz, XFree86-1.3.sh, sdbm.tar.gz (for SVR4 and some
      SVR3), and optionally Type1.tar.gz, Type1.patch1.gz, Type1.patch2.gz
      if you wish to built the Adobe Type-1 font renderer.

    - If you are upgrading from XFree86 version 1.2, you will only need
      1.2-1.3.diff.gz.

2. If you need to use libsdbm.a, extract sdbm.tar.gz somewhere and build
   it.  Install libsdbm.a in a directory your ld searches.  (You could use
   /usr/local/lib, and with SVR4 add it to your LD_LIBRARY_PATH.)  Install
   sdbm.h in /usr/include.

3. If you are starting from the stock MIT PL25 distribution, go to the
   directory above your 'mit' directory, and run:

      sh XFree86-1.3.sh

   This script makes some changes to the directory tree, and MUST be run
   before applying the patches.  The patches can then be applied with:

      patch -p < XFree86-1.3.diff

   If you are installing in an unmodified tree there shouldn't be any
   problems.  Check for any patch rejections and resolve them. If you've
   modified some files (e.g. x386.cf, site.def) you should rename them,
   and restore the standard versions before patching. If you don't have
   backups of the originals, individual files can be easily obtained from
   the /pub/R5untarred directory on export.lcs.mit.edu.

   If you are patching a tree that you've previously used, make sure you
   run 'make clean' from the 'mit' directory before applying the diffs.

4. If you are upgrading your source tree from XFree86 version 1.2, go to
   the directory above your 'mit' directory, and run:

      patch -p < 1.2-1.3.diff

   Note that that if the 1.2 source tree you have was built by upgrading
   from version 1.1, you will need to get PEXlib.tar.Z from the MIT fixes
   directory, and apply the patches in the files fix-20.PEX.gz and
   fix-22.PEX.gz before updating to 1.3 (assuming you want PEX support).
   The reason for this is that the PEX parts of MIT fixes 20 and 22 were
   not included in the 1.1-1.2 upgrade patch.
   
   If you are installing in an unmodified tree there shouldn't be any
   problems.  Check for any patch rejections and resolve them. If you've
   modified some files (e.g. x386.cf, site.def) you should rename them,
   and restore the 1.2 versions before patching.

   If you are patching a tree that you've previously used, make sure you
   run 'make clean' from the 'mit' directory before applying the diffs.

5. If you want to include the Type1 font code, extract Type1.tar.gz in
   mit/fonts/lib/font, and then apply the Type1 patches.  Some
   contributed fonts can be found on export.lcs.mit.edu in:

       /pub/R5untarred/contrib/fonts/scaled/Type1
       /pub/R5untarred/contrib/fonts/Utopia

6. Have a look at config/site.def.  Set the various parameters to suit
   your configuration.  If it is your first build, you should set
   BuildFonts, InstallXdmConfig, InstallXinitConfig to YES (as well as
   InstallFSConfig if you are building the Font Server).  If you have
   installed Type1.tar.gz, set BuildType1 to YES.  If you want to build
   the large fonts in mit/fonts/bdf/misc set BuildLargeMiscFonts to YES.
   If you want to build the 100dpi fonts as well as the 75dpi fonts set
   Build100Dpi to YES.  Make sure both HasNdbm and HasSdbm are set
   correctly for the [n]dbm library you are using.

   To build the colour server (XF86_SVGA) set X386Server to YES.  To build
   the monochrome server (XF86_Mono) set X386MonoServer to YES.  If both
   are set, then both servers will be built.  The drivers and font
   renderers you wish to include in the server are also selected in
   site.def.  The choice of font renderers is made by setting the value of
   FontRenderers.  Setting this in site.def overrides the BuildType1 and
   BuildSpeedo parameters.  The drivers used for the 256 colour server are
   set by the X386Vga256Drivers parameter.  This should be a list of the
   driver directory names (in lower case).  The ordering determines the
   order in which the drivers are probed at startup.  The default is to
   include all supplied drivers.  The drivers for the monochrome vga
   server are set with the X386Vga2Drivers parameter.  The `generic'
   driver should always be last on the list because its probe will succeed
   for any VGA card.  The Hercules driver is set with the X386Hga2Drivers
   parameter.

   Note:
     a) it is not possible to have both the monochrome and colour drivers
        in the same server executable.
     b) When building both servers, the colour version is linked to
        /usr/X386/bin/X, and is thus the default server.  To change this,
        remove and redirect the link after installing.

7. The mechanisms for handling local server connections have been
   radically redone in XFree86 1.3.  Decisions that in prior releases
   required compile-time decisions are now done at runtime.  The following
   defaults are set up by x386.cf, and there should be little reason to
   change them.  For an explanation of how these connection modes are
   used, refer to the XFree86(1) manual page.

   For SVR4, both server and client-side local connections are enabled, as
   well as the MIT standard TCP/IP and Unix-domain socket connections.  By
   default, support for SVR3-style (SCO and ISC) local connections are
   compiled in, but the devices to use them only exist in SVR4.0.4 and
   SVR4.2 (and later releases).

   For SVR3.2, the default for both the server and clients is to use the
   STREAMS based LOCALCONN.  If HasSockets is set, TCPCONN is also used.
   For Esix 3.2D (and perhaps others if you don't have TCP/IP installed),
   HasSockets should not be set.  (The Esix 3.2D implementation of TCP/IP
   is not compatible with most networking code.) Note that selecting
   LOCALCONN and not TCPCONN does not allow the server to run without
   TCP/IP installed.  You still need to have TCP/IP installed to run even
   if you are only using local connections.

   For 386BSD, Mach386 and Linux, the default for both server and clients
   is to use UNIXCONN and TCPCONN.  LOCALCONN is not applicable to these
   systems.

   If you want to change the setting of ConnectionFlags directly, add
   something like the following to the AfterVendorCF section of
   config/site.def:

     #undef ConnectionFlags
     #define ConnectionFlags   YOUR_CHOICE_OF_FLAGS

8. Before building the distribution, read through the OS-specific README
   file in mit/server/ddx/x386 that is relevant to you.  Once those
   OS-specific details have been taken care of, go the 'mit' directory
   and:

   For SVR4, run:

     make World BOOTSTRAPCFLAGS='-DSVR4 -DSYSV386' > World.Log 2>&1 &

   For NCR, run:

     make World BOOTSTRAPCFLAGS='-DSVR4 -DSYSV386 -DNCR' > World.Log 2>&1 &

   For 386BSD, Mach386, Linux, Minix-386 and Amoeba, run:

     make World BOOTSTRAPCFLAGS= > World.Log 2>&1 &
     
   For SVR3, run:

     make World BOOTSTRAPCFLAGS='-DSYSV -DSYSV386 -DVENDOR' > World.Log 2>&1 &

   where VENDOR is one of: ISC, ESIX, ATT, SCO (note that ESIX is not yet 
   supported).

   For ISC 2.0.2, run:

     make World BOOTSTRAPCFLAGS='-DSYSV -DSYSV386 -DISC -DISC202' > \
        World.Log 2>&1 &

   For ISC 3.0, run:

     make World BOOTSTRAPCFLAGS='-DSYSV -DSYSV386 -DISC -DISC30' > \
        World.Log 2>&1 &

   For SCO 3.2.4, run:

     make World BOOTSTRAPCFLAGS='-DSYSV -DSYSV386 -DSCO -DSCO324' > \
        World.Log 2>&1 &

9. If all goes well, that will finish successfully in anything from two to
   eight hours depending on your CPU/RAM/OS/compiler/disks.  You should
   check World.Log to see if there were any problems.  If there weren't
   any then you can do a 'make install' and a 'make install.man'.  Make
   sure you have enough space in /usr/X386 for the install to succeed.  If
   you want to install on a filesystem other than /usr, make a symbolic
   link to /usr/X386 before installing.

   To install the binary Link Kit (in /usr/X386/lib/Server), run:

     make install.linkkit

   NOTE: If you were using a previous version of XFree86, remove the X386
	 and/or X386mono binaries from /usr/X386/bin.

10 - Using and configuring XFree86
----------------------------------
1. Add /usr/X386/bin to your PATH and /usr/X386/man to your MANPATH.  

2. Check through the /usr/X386/lib/X11/etc/x386install script (only
   required for SVR3 (except SCO), SVR4 and 386BSD).  If it looks OK for
   your system, run it.

3. Set up an Xconfig file.  The default location for this file is in
   /usr/X386/lib/X11.  There is a sample file installed in that directory
   called Xconfig.sample, and this should be used as a starting point.
   The paths in this file are set to match the parameters chosen when the
   package was built.

4. Decide which mouse driver to use (xqueue (for SYSV386 systems) or the
   server's native driver). The default Xconfig file is set up for using
   the native driver directly.  All that needs to be done is to replace
   the line:

     Logitech        "/dev/tty00"

   with one that suits your mouse (see the XFree86(1) man entry for the
   available options).
     
5. Check that the FontPath in your Xconfig is set correctly.  Great pains
   have been taken to ensure that the font path specified in the
   Xconfig.sample file is correct.  If you have problems with fonts not
   being found, do the following:

     a) Make sure that every directory listed in the Xconfig file exists.
        Delete any non-existent directories from the path.
     b) For any directory containing scalable fonts (Type-1 and Speedo),
        make sure that a 'fonts.scale' file is present.
     c) Run 'mkfontdir' in each directory, and ensure that a 'fonts.dir'
        file is created.
     d) Any time you make changes to any of the font directories, rerun
        'mkfontdir'.  If you do this while the server is running, remember
        to run 'xset fp rehash', or your fonts will not be located by the
        server.

6. The server now supports compressed pcf fonts.  If you compress any of
   these fonts, you must rerun 'mkfontdir' in the directories containing
   them.

7. Make sure there are appropriate ModeDB entries in your Xconfig file.
   For details about this, read through the VideoModes.doc and modeDB.txt
   files in /usr/X386/lib/X11/etc.

8. The default Xconfig is set up to make use of SpeedUp.  If your SVGA
   card is not based on the ET4000, or if your virtual width is not 1024,
   then some of the SpeedUps will be automatically disabled (with a
   warning message written on the console).  Most of the major SpeedUps
   require the ET4000 but are no longer restricted to a virtual width of
   1024.

9. If you use a ${HOME}/.xserverrc file with xinit, make sure that the
   script exec's the server (e.g 'exec /usr/X386/bin/XF86_SVGA' rather
   than just '/usr/X386/bin/XF86_SVGA').  If you don't do this, the server
   may not exit when your last client finishes.

11 - Configuring XFree86 for a new video card and monitor
---------------------------------------------------------
  Configuring XFree86 for a new video card and monitor can be just about
the most trying experience you can have with the X Window System.  Future
versions (in the X11R6 time frame) will make use of the VESA standard
SVPMI (Super VGA Protected Mode Interface) configuration file mechanism to
help alleviate this problem.

Because this is a problem that many people have encountered before, a
database of tested card and monitor configurations is included with the
XFree86 release.  This file can be found in /usr/X386/mit/X11/etc/modeDB.txt
after XFree86 is installed.  Read the instructions at the top of the file.
If your card and monitor are both in the database, you should be fine.
If only your card is in the database, then you should try the VESA-standard
monitor timings given in the file.

If your card is not in the database, the server itself will be able to
determine most of the information you need.  Edit the Xconfig file (refer
to the X386(1) manual page for more information on the file) and remove or
comment out any ChipSet, Clocks, Vendor, and VideoRam lines.  Then start
the server with the following command:

	startx > /usr/tmp/output 2>&1

Your display may well be garbage (if your monitor timings are not right),
or the server may simply exit.  If the server does not exit and your
display is not usable, you can kill the server with the Ctrl+Alt+BackSpace
key sequence.  Now examine the "/usr/tmp/output" file, and look at the
messages printed by the server.  You can put these values into your
Xconfig file, if you like (this is recommended, to speed server startup);
if you don't the server will attempt to determine them every time you
start it.

That's the easy part.  Monitor timing is much tougher.  Eric Raymond has
provided a nice tutorial on how to develop your own monitor timings from
scratch or how to modify existing ones so they work better for your
configuration.  The document is in /usr/X386/lib/X11/etc/VideoModes.doc
after XFree86 is installed.

If you develop a configuration for a card and/or monitor that's not in the
database, please send the configuration information to David Wexelblat
<dwex@mtgzfs3.att.com>, so that it can be added.

12 - The monochrome server
--------------------------
  The monochrome server (XF86_Mono) includes a driver for generic VGA
cards.  This driver does not make any assumptions about the VGA card being
used.  This means that the physical screen size is usually limited to
640x480 (on some cards the server will detect a clock high enough for
800x600).  In any case, it is possible to choose a virtual screen size
within the limits of the 64kB bank.  A common choice would be 800x600
(Width * Height <= 64k * 8).

There are also SVGA drivers included with the mono server, and these make
it possible to use higher virtual and physical resolutions providing you
have a suitable card (see the list in section 5, "Supported video-card
chipsets").  In earlier versions of XFree86, the monochrome server was
limited to 64k of video memory.  This restriction was removed in XFree86
1.2, via the addition of support for SVGA banking.  Because of the bank
switching, the monochrome server's performance is a bit slower than in
XFree86 1.1.  If you choose a virtual screen resolution of less than 64k*8
pixels, the unbanked code will be used.  So you can trade off usable space
for performance.

The monochrome mode is actually implemented using a 4-bit mode, in which
only one bit is used.  So only 1/4 of your total video memory will be
used.  If you have a 1M video card, your virtual screen can be up to
256k*8 pixels.  This may seem like a severe limitation, but this allows
for a virtual resolution greater than 1600x1200.  On a 486/33 EISA system
with an Orchid ProDesigner IIs, the banked monochrome server is a bit
faster than a monochrome SparcStation ELC at a displayed resolution of
1152x900.  The unbanked server is significantly faster than the
SparcStation.

The monochrome server can also be configured with a Hercules driver
(referred to as "hga2").  This driver can co-exist with the vga2 driver
allowing the server to work in a "dual-headed" mode on systems with both
types of cards installed.  The hga2 driver works only at one resolution --
720x348 (the only one supported by those cards).  To enable this driver, a
"hga2" section must be added to the Xconfig file.  Since this driver only
supports one graphics mode, this section will usually consist simply of
the line "hga2".  When running with two screens, the default screen
numbering is determined by the ordering of the hga2 and vga2 sections in
Xconfig.  This may be changed by using the ScreenNo option (see XFree86(1)
for details).

startx has been modified so that the monochrome server can be easily
started by running:

   startx -- XF86_Mono [server options] ...

13 - Reconfiguring the server (source distribution)
---------------------------------------------------
  To build the monochrome server after building the colour server (or vice
versa) do the following:

1. Change the settings of X386Server and X386MonoServer in site.def to
   what you want, and update the driver selection if required.

2. From mit/config, run:

     make Makefiles

3. From mit/server, run:

     make Makefile
     make Makefiles
     make depend
     make

To relink the server with a different set of drivers and/or font renderers
do the following:

1. Make sure the source for the drivers/renderers is in the correct place.
   Driver source should be in subdir of mit/server/ddx/x386/vga256/drivers
   for colour drivers and mit/server/ddx/x386/vga2/drivers for mono
   drivers.  Font renderer source should be in a subdir of
   mit/fonts/lib/font.

2. Modify site.def to specify which drivers you wish to include.

3. From mit/server, run:

     make reloadXF86_SVGA

   or

     make reloadXF86_Mono

   This will automatically rebuild everything required and relink the
   server.

14 - Reconfiguring the server (binary distribution)
---------------------------------------------------
  If you have installed the server Binary Link Kit, it is possible to
reconfigure the drivers and font renderers in the server.  To do this, go
to the configuration directory (/usr/X386/lib/Server) and do the
following:

0. If you are using a Binary Link Kit distributed as part of a binary
   distribution (for SYSV), you may need to install libsdbm.a.  For
   systems which don't use gcc as their native C compiler, you may also
   need to install libgcc.a.  Refer to the README supplied with the binary
   distribution you are using for more details.

1. Edit the site.def file to define which servers you want to build, and
   the drivers and font renderers you want included.

    - To build the 256 colour server, set X386Server to YES.
    - To build the monochrome server, set X386MonoServer to YES.
    - Set X386Vga256Drivers to the list of drivers you want to include in
      the 256 colour server.
    - Set X386Vga2Drivers to the list of drivers you want to include in
      the monochrome vga server.  The vga2 driver can be disabled by
      defining this list to be empty.
    - Set X386Hga2Drivers to hga6845 to enable the hga2 driver in the
      monochrome server. The hga2 driver can be disabled by defining this
      to be empty.
    - Set FontRenderers to the list of font renderers you want to include
      in the server.

   Note: the ordering of drivers determines the order in which the probing
   is done.  The 'generic' driver should be the last one included in the
   monochrome server because its probe always succeeds.

2. If you are including a driver that it not part of the standard
   distribution, make a directory in drivers/vga256 (or drivers/vga2 if it
   is for the monochrome server) and copy either the source or .o file and
   a suitable Imakefile into that directory.  The name of the directory
   should be the same as the name of the driver (refer to the
   documentation in the VGADriverDoc directory for more details).  If you
   are adding an additional font renderer, put the library in renderers/.

3. To build the Makefile, run

     ./mkmf

4. Run 'make' to link the server(s) as configured.

5. Run 'make install' to install the new server(s).

6. Run 'make clean' to remove the files that were created by this
   procedure.

7. It is possible to see which drivers are included in the server by
   running it with the '-showconfig' flag.


15 - Credits
------------

XFree86 was originally put together by:
       David Dawes <dawes@physics.su.oz.au>
       Glenn Lai <glenn@cs.utexas.edu>
       Jim Tsillas <jtsilla@damon.ccs.northeastern.edu>
       David Wexelblat <dwex@mtgzfs3.att.com>

386BSD support by:
       Amancio Hasty Jr <hasty@netcom.com>
       Rich Murphey <Rich@Rice.edu>

Original 386BSD port by:
       Pace Willison

Mach 386 support by:
       Robert Baron <Robert.Baron@ernst.mach.cs.cmu.edu>

Linux support by:
       Orest Zborowski <obz@Kodak.com>

SCO Unix support by:
       David McCullough <davidm@stallion.oz.au>

Amoeba support by:
       Kees Verstoep <versto@cs.vu.nl>

Minix-386 support by:
       Philip Homburg <philip@cs.vu.nl>

SVR3 shared libraries by:
       Thomas Wolfram <wolf@prz.tu-berlin.de>

Linux shared libraries by:
       Dirk Hohndel <hohndel@informatik.uni-wuerzburg.de>

ATI driver by:
       Per Lindqvist <pgd@compuram.bbt.se> and Doug Evans <dje@cygnus.com>
       Ported to X11R5 by Rik Faith <faith@cs.unc.edu>

Trident driver by:
       Alan Hourihane <alanh%metruk@uknet.ac.uk>

NCR driver by:
       Stuart Anderson <Stuart.Anderson@ColumbiaSC.NCR.COM>
		with the permission of NCR Corporation

Cirrus driver by:
       Bill Reynolds <bill@goshawk.lanl.gov>

Compaq driver by:
       Hans Oey <hans@mo.hobby.nl>

Configurable MFB and Hercules driver by:
       Davor Matic <dmatic@Athena.MIT.EDU>

X386 1.2, and moral support from:
       Thomas Roell <roell@sgcs.com>
       Mark Snitily <mark@sgcs.com>

Other contributors:
       Gertjan Akkerman <akkerman@dutiba.twi.tudelft.nl> (Trident 9000)
       Joerg Wunsch <joerg_wunsch@tcd-dresden.de> (ET3000 banked mono)
       Bob Crosson <crosson@cam.nist.gov> (video mode documentation)
       Thomas Eberhardt <thomas@mathematik.uni-Bremen.de> (compressed fonts)
       Eric Raymond <esr@snark.thyrsus.com> (new video mode documentation)

       and an entire horde of beta-testers around the world!

16 - Contact information
------------------------
  Ongoing development planning and support is coordinated by the XFree86
Core Team.  At this time the Core Team consists of (in alphabetical order):

       Robert Baron <Robert.Baron@ernst.mach.cs.cmu.edu>
       David Dawes <dawes@physics.su.oz.au>
       Glenn Lai <glenn@cs.utexas.edu>
       Rich Murphey <Rich@Rice.edu>
       Jon Tombs <jon@robots.ox.ac.uk>
       David Wexelblat <dwex@mtgzfs3.att.com>
       Thomas Wolfram <wolf@prz.tu-berlin.de>
       Orest Zborowski <obz@Kodak.com>

E-mail sent to <xfree86@physics.su.oz.au> will reach the Core Team.

17 - Source and binary archive sites
------------------------------------
  Source patches based on X11R5 PL25, from MIT, are available via
anonymous FTP from:

       export.lcs.mit.edu (under /contrib/XFree86)
       ftp.physics.su.oz.au (under /XFree86)
       ftp.win.tue.nl (under /pub/XFree86)

Refer to the README file under the specified directory for information on
which files you need to get to build your distribution (which will depend
on whether this is a new installation or an upgrade from an earlier
version of XFree86).

Binaries are available via anonymous FTP from:

       ftp.physics.su.oz.au            - SVR4 binaries
                under /XFree86/SVR4
       ftp.win.tue.nl                  - SVR4 binaries
                under /pub/XFree86/SVR4
       ftp.tcp.com                     - SVR4 binaries
                under /pub/SVR4/XFree86
       stasi.bradley.edu               - SVR4 binaries
                under /pub/XFree86/SVR4
       stasi.bradley.edu               - SVR3 (SCO) binaries
                under /pub/XFree86/sco
       blancmange.ma.utexas.edu        - SVR3 (ISC) binaries
                under /pub/ISC
       ftp.prz.tu-berlin.de            - SVR3 (ISC) binaries
                under /pub/pc/isc/XFree86
       tsx-11.mit.edu                  - Linux binaries
                under /pub/linux/packages/X11
       agate.berkeley.edu              - 386BSD binaries
                under /pub/386BSD/0.1-ports/XFree86
       nova.cc.purdue.edu              - 386BSD binaries
                under /pub/386bsd/submissions/XFree86
       ftp.cs.uwm.edu                  - Mach386 binaries
                under /i386

Ensure that you are getting XFree86 1.3 - some of these sites may archive
older releases as well.  Each binary distribution will contain a README
file that describes what files you need to take from the archive, and
which compile-time option selections were made when building the
distribution.

2 June, 1993

$XFree86: mit/server/ddx/x386/README,v 1.70 1993/06/05 02:17:15 dawes Exp $
