Provided by: libsvga1_1.4.3-33_amd64 bug

NAME

       svgalib.mach32 - Information on the Mach32 chipset driver

TABLE OF CONTENTS

        0. Introduction
        1. Specifying pixel clocks
        2. Copyrights
        3. The mach32info utility
        4. Third party cards
        5. Logical line width
        6. Noisy video signals
        7. The configuration EEPROM
        8. EEPROM woes
        9. The Mach32Eeprom command
       10. Setup of the memory aperture (linear framebuffer)
       11. Accelerator support and other weird features
       12. Ramdacs
       13. Meaning of the detection message from svgalib
       14. Conclusions

0. INTRODUCTION

       The  driver should allow you to use any of the graph-modes your Mach32 card supports. Note
       that there is no support for <8bpp modes and that I won't ever implement  that  because  I
       don't  see  any  reason  for doing so. All standard VGA-modes are supported, of course (by
       using the standard VGA driver routines).

       If you configured your Mach32 for a memory aperture and it is  at  least  as  big  as  the
       memory of your card (that is, not a 1MB memory aperture for a 2MB card) support for linear
       frame buffer access of svgalib is given.

       Auto detection of the Mach32 seems not to work on all cards. That's really strange since I
       got  the code from the X people. It should be OK regardless of my docs. Well, I fixed that
       (hopefully). Actually the bug was found by Daniel Lee Jackson (djackson@ichips.intel.com).
       (Thanks again.. It was so silly... I would have never found it) If you still have problems
       just put a chipset Mach32 in your config file.

1. SPECIFYING PIXEL CLOCKS

       WARNING!  The Mach32 driver needs to know  correct  clock  frequencies  for  graceful  DAC
       configuration.  Wrong clocks may damage your card! However, this version contains code for
       automatic clock detection. Since clock detection is time  critical,  please  do  it  on  a
       completely  idle  system.  Then  put  the printed out clocks line in your libvga.config(5)
       file.

       The driver tries to do this for you.  After that, you can restart whatever svgalib program
       you used and you are set. If you already put a clocks line in your config by hand, comment
       it out to have the driver check your clocks.

       Since clock probing is time critical, values differ from time to  time,  you  may  try  it
       multiple  times and see which values seem to be most exact. You can also compare them with
       the standard clock chips for Mach32 cards in libvga.config(5)).

       The clock probing relies on the 7th clock being 44.9MHz as this is what  Xfree  does.   If
       this is not true (and it is not always), probing is hosed. See libvga.config(5) for a list
       of the clocks used by common svgalib cards.

2. COPYRIGHTS

       Some tiny routines are copied from Xfree86.  The  clock  detection  code  is  almost  just
       copied. So I repeat the copyright statements for these parts here:

       Copyright 1992 by Orest Zborowski <obz@Kodak.com>
       Copyright 1993 by David Wexelblat <dwex@goblin.org>

       Permission  to use, copy, modify, distribute, and sell this software and its documentation
       for any purpose is hereby granted without fee, provided that the  above  copyright  notice
       appear in all copies and that both that copyright notice and this permission notice appear
       in supporting documentation, and that the names of Orest Zborowski and David Wexelblat not
       be  used  in  advertising  or publicity pertaining to distribution of the software without
       specific,  written  prior  permission.  Orest  Zborowski  and  David  Wexelblat  make   no
       representations about the suitability of this software for any purpose. It is provided "as
       is" without express or implied warranty.

       Orest Zborowski and David Wexelblat disclaim all warranties with regard to this  software,
       including  all  implied warranties of merchantability and fitness, in no event shall Orest
       Zborowski or David Wexelblat be liable for any special, indirect or consequential  damages
       or  any  damages  whatsoever  resulting  from  loss of use, data or profits, whether in an
       action of contract, negligence or other tortious action, arising out of or  in  connection
       with the use or performance of this software.

       Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
       Copyright 1993 by Kevin E. Martin, Chapel Hill, North Carolina.

       Permission  to use, copy, modify, distribute, and sell this software and its documentation
       for any purpose is hereby granted without fee, provided that the  above  copyright  notice
       appear in all copies and that both that copyright notice and this permission notice appear
       in supporting documentation, and that the name of Thomas Roell not be used in  advertising
       or  publicity  pertaining  to distribution of the software without specific, written prior
       permission. Thomas Roell makes no representations about the suitability of  this  software
       for any purpose. It is provided "as is" without express or implied warranty.

       Thomas Roell, Kevin E. Martin, and Rickard E. Faith disclaim all warranties with regard to
       this software, including all implied warranties of  merchantability  and  fitness,  in  no
       event  shall  the  authors be liable for any special, indirect or consequential damages or
       any damages whatsoever resulting from loss of use, data or profits, whether in  an  action
       of contract, negligence or other tortious action, arising out of or in connection with the
       use or performance of this software.

       Author:  Thomas Roell, roell@informatik.tu-muenchen.de

       Rewritten for the 8514/A by Kevin E. Martin (martin@cs.unc.edu)
       Modified for the Mach-8 by Rickard E. Faith (faith@cs.unc.edu)
       Rewritten for the Mach32 by Kevin E. Martin (martin@cs.unc.edu)

       And here is my own copyright:

       This driver is free software; you  can  redistribute  it  and/or  modify  it  without  any
       restrictions.  This library is distributed in the hope that it will be useful, but without
       any warranty.

       Copyright 1994 by Michael Weller

       Email addresses as of this writing:

       eowmob@exp-math.uni-essen.de mat42b@spi.power.uni-essen.de

       Michael Weller disclaims all warranties  with  regard  to  this  software,  including  all
       implied  warranties  of  merchantability  and fitness, in no event shall Michael Weller be
       liable for any special, indirect  or  consequential  damages  or  any  damages  whatsoever
       resulting  from loss of use, data or profits, whether in an action of contract, negligence
       or other tortious action, arising out of or in connection with the use or  performance  of
       this software.

3. THE MACH32INFO UTILITY

       The  mach32info(6)  utility  or  demo  reads  out  all  configuration  registers  and  the
       configuration EEPROM of your Mach32 card. If there is a problem with the  particular  card
       you have, compile and run the utility in the mach32/ directory of the svgalib distribution
       and send it's stdout to me This might also be useful if you need a lot  of  options  (e.g.
       clocks  on new models?) to get it to work so that this can be done automatically in future
       versions.

4. THIRD PARTY CARDS

       I got a  few  reports  about  AST  systems  with  onboard  Mach32.   They  do  feature  an
       incompatible  EEPROM setup, but I think I got around that. Nevertheless the Mach32 chipset
       driver doesn't work out of the box on any AST system I heard of.

       Since original ATI Mach32 demos and tools don't work as  well,  I've  to  claim  that  the
       Mach32 on these AST systems does not conform to ATI's Mach32 docs.  Fortunately, Vernon C.
       Hoxie  <vern@zebra.alphacdc.com>  found  a  work   around   after   years   (really!)   of
       investigating.  AST  Mach32 seems to work now. The work around was also submitted to Xfree
       and will be incorporated to allow running it on the AST hardware too in  recent  versions.
       Please read on the misc_ctl command below.

       Dell  users  should  have  a look at the vendor, ramdac, and svgaclocks commands below (if
       they have problems with the default settings).

   Commands to support third party cards
       I had to learn that those cards seem to use not only non standard clocks for  the  Mach32,
       but  also  for the included SVGA. However, since people often like to use proprietary, non
       standard VGA (read 80x25) text modes, the Mach32 driver has to set the included SVGA to  a
       VGA compatible clock frequency. Otherwise svgalib has problems using plain VGA modes. This
       screws VGA modes up if these clocks have different values on third party Mach32 cards.

       svgaclocks n
              with n a number between 0 and 31 to select the svga clocks to be used in vga modes.
              The  bits  of n refer to specific ATI register bits to complicated to explain here.
              Even if I would, I can't tell which clocks they would select on  your  third  party
              card (which is the actual problem)

              svgaclocks 9 is the default setting and correct for original ATI cards.

              Often svgaclocks 0 (Dell cards) works.

       svgaclocks keep
              is  special  in  that the driver will not touch any SVGA timings. This requires the
              Mach32 SVGA part to be in a VGA compatible mode when  the  svgalib  application  is
              started, that is, you must use 80x25 (maybe 80x50) console text modes.

       As  I  mentioned  already,  Vernon C. Hoxie <vern@zebra.alphacdc.com> really seems to have
       located the reason for the Mach32 AST problems. Any access to MISC_CTL locks up the card &
       system.  Fortunately  MISC_CTL is only used for some DAC fine tuning (actually the setting
       you can fine tune with the blank command) which is only of barely noticeable effect to the
       screen.

       The following configuration commands exist to support AST cards:

       misc_ctl keep-off
              Do not dare to touch MISC_CTL.

       misc_ctl use
              Use it for fine tuning of the Ramdac setup (default).

       Finally, for your convenience there exist:

       vendor ati
       vendor dell
       vendor ast
              These  are  macros  that  expand  to settings for svgaclocks, ramdac, misc_ctl, and
              mach32eeprom that are usually correct for ATI, Dell, AST cards. Be aware that  they
              really  work like macros. That is, they override any setting of svgaclocks, ramdac,
              misc_ctl, and mach32eeprom made before them and individual aspects will be  changed
              by a following svgaclocks, ramdac, misc_ctl, and mach32eeprom command.

              Note  that  the  mach32eeprom  ignore  required for some Dell cards requires you to
              include  explicit  timings  for  Mach32  modes   other   than   640x480x256.    The
              mach32/mach32.std-modes  file  in the svgalib distribution contains recommendations
              for modes from ATI.

              I heard about a bug in some ATI chipsets returning wrong  memory  amounts  configs.
              (But cannot confirm that)

              You can enforce correct chipset identification from the configuration file:

       chipset Mach32 chiptype memory
              where  chiptype  is  the sum of at exactly one value from each of the following two
              groups

              128    use no memory aperture.
              160    use a 1MB memory aperture.
              192    use a 4MB memory aperture.
              0      choose size for the memory aperture automatically.

              and

              16     Ramdac is of type 0 (ATI68830)
              17     Ramdac is of type 1 (IMS-G173, SC11486)
              18     Ramdac is of type 2 (ATI68875, TLC34075)
              19     Ramdac is of type 3 (INMOS176, INMOS178)
              20     Ramdac is of type 4 (Bt481, Bt482)
              21     Ramdac is of type 5 (ATI68860)
              0      Ramdac type is queried from Mach32 chip.

              memory is the amount of video memory in KB.

       Note that the type of the ramdac can be set more conveniently with the ramdac command.

5. LOGICAL LINEWIDTH

       At least my VRAM card seems to be  very  peculiar  about  logical  line  widths.  From  my
       experience  a  multiple  of 64 pels is needed.  Your mileage may vary. Use the config file
       options to adjust it and tell me if your card needs a different value.  Include  the  name
       and model number of the card and what the correct numbers should be. This is so that I can
       correct the auto configuration of the driver.

       If some svgalib application has problems, note that you can force the logical  line  width
       to  the  default  value  from the config file. Probably this will lead to glitches in some
       800x600 resolutions. You can inhibit these resolutions  from  the  config  file  as  well.
       Apropos  glitches,  I  found  no  guidelines  as  to what clock rates to use due to memory
       restrictions. I adjusted the driver, such that I get a  stable  pic  in  all  resolutions.
       However  sometimes  the  screen  is disturbed by heavy video memory accesses. If you don't
       like that, reduce the clocks used with the maxclock16 or maxclock24 command,  resp.   This
       may of course lead to none of the predefined modes being used.  Then you can try to define
       your own mode via the define command.

6. NOISY VIDEO SIGNALS

       If you get some flicker or heavy noise on your screen, some fine tuning may be needed.  My
       docs  didn't give me hints as to what each card can stand.  Especially DRAM cards may give
       problems (I've VRAM). In that case, use the fine tuning config commands and send  me  your
       results  along  with  the  output  of  mach32info(6).   Then I can include them in my next
       release.

   Fine-tuning configuration commands
       First you should think about the maxclock* configuration commands to reduce  pixel  clocks
       used for each color depth.

       Especially  important  for  DRAM cards is the video FIFO depth used to queue memory values
       for writing to the screen. Here is a command to set this value for the 8bpp modes:

       vfifo8 number
              where number is in range 0 - 15.  The default is now 6.

              Since vfifo is of some impact to the speed of the card, tell me the lowest  setting
              that satisfies your card.

              For  16/24/32  modes, there are non-zero values preset from internal tables and the
              EEPROM, however you can enforce minimal vfifo values with:

       vfifo16 number
       vfifo24 number
       vfifo32 number

       blank number
              where number is 4 * pixel_delay + blank_adjust where pixel_delay  and  blank_adjust
              are in range 0 .. 3.  pixel_delay delays pixels before they are sent to the DAC and
              blank_adjust adjusts the blank pulse  for  type  2  DAC's.   blank  should  be  set
              correctly for each DAC type automatically.  So use it only as a last resort.

       latch number
              where number is the sum of zero or more of the following numbers:

              128    VRAM serial delay latch enable, DRAM latch bits 63 - 0 enable.

              4096   Latch video memory data.

              8192   Memory data delay latch enable for data bits 63 - 0.

              16384  Memory full clock pulse enable.

              Default is to switch all settings on (they are on on my card by default anyway).

       Note  that  these  commands  may vanish again once they are no longer needed for debugging
       purposes.

       There is no 320x200 mode in the EEPROM of the Mach32 at all, however I defined one in  the
       default  configuration  file  for  you.  This  is  the  best  thing  I  could get up on my
       card/screen. Note that it will probably have big borders on your screen, and  black  lines
       in  between  the  pixel  lines.   This is because of the lack of low clocks < 16MHz on the
       Mach32 and the lack of a line doubling mode as VGA has. The Mach32  is  not  intended  for
       such  low  resolutions. If you find a better mode or have an idea, please let me know. You
       can also just remove my timings from the default configuration file.

7. THE CONFIGURATION EEPROM

       Ah yes, about the EEPROM, I figured out how to read out the Mach32 EEPROM.  I  did  it  by
       disassembling  the  BIOS  routine  mentioned in the docs. I then redid it in C. The driver
       will use everything it finds there.

       Use the Mach32 install tools (they should have reached you together with your  Mach32  VGA
       card)  to  setup  your card/monitor combo correctly.  The monitors setting from the config
       file (or default of 35kHz or something) will be obeyed by  the  driver  nevertheless  (for
       safety!).

       As  you probably know already, accessing the EEPROM causes some screen flickering. If this
       annoys you (or even worse your monitor) have a look at the mach32eeprom command  described
       below.  This  allows you to put the data from the EEPROM into a file and which can be read
       whenever it is required.

       Don't even think about changing the contents of  the  file.  (There  is  an  easily  faked
       checksum in it.). Anyway the driver ensures (hopefully) that no damage can be caused.

       Also,  if  some  mode  is  not  well  aligned  on  your screen or you don't like it's sync
       frequency, consider using the Mach32 install utility (setup for custom  monitor)  and  set
       one  up  interactively.  If there is no valid faster (higher VSYNC) standard mode given in
       the EEPROM the driver will use that mode. You will find that this  is  fun  compared  with
       calculating video timings for /etc/XF86Config or /etc/vga/libvga.config.

       However  the  install  utility  does  restrict  the  maximum  pixel depth for custom modes
       sometimes unneeded hard and the driver obeys that.  (Hmm.. actually  it  should  be  smart
       enough  to  decide  itself which pixel depth it can use in that mode.)  Since the standard
       modes are usually only slightly shifted to one side a file with the configuration commands
       representing  the  standard  modes  is  given  in  mach32/mach32.std-modes  in the svgalib
       distribution. You can use these as a starting point.

       But here are some real problems:

8. EEPROM WOES

       I got 2 reports of people having problems  with  incorrect  EEPROM  checksums.   Both  had
       motherboards with onboard Mach32 VGA's from AST. I guessed a checksum algorithm from those
       reports and put this in the code in addition to the standard ATI  style.  Still  I  got  a
       report  of  someone whose EEPROM was completely empty. If you have problems with checksums
       send me the output of mach32info(6) and I'll see what I can do.

       By default svgalib writes a complaining message and ignores the contents.   You  can  have
       svgalib ignore the checksum and contents with the configuration command

       mach32eeprom ignore

       Then you can decide to use the partial info that is still in it. Use

       mach32eeprom ignore usetimings

       to use the video modes that are defined in the EEPROM (if no better modes are known by the
       driver). This is usually safe, because the driver knows which  modes  are  safe  for  your
       hardware  (if clocks, monitor and ramdac are configured correctly). You can also allow the
       driver to use the configuration for the linear frame buffer in the EEPROM:

       mach32eeprom ignore useaperture

       or

       mach32eeprom ignore usetimings useaperture

       However I discourage this because the driver will just enable what the EEPROM  says  about
       the  aperture.  Use mach32info(6) to check the address it will choose is safe. It might be
       better to use setuplinear to set up a 4MB aperture at a free address range.

9. THE MACH32EEPROM COMMAND

       The mach32eeprom allows to work around these problems. Here is  the  complete  description
       for this configuration command.

       mach32eeprom filename
              The filename has to begin with a "/".

              Unfortunately reading the EEPROM causes annoying screen flickering and is slow.  To
              avoid this, specify a filename from which to read the contents of the EEPROM.

              If the file cannot be read, the EEPROM is read out and the file is  created.  There
              is  a  very  simple  checksum put into this file. Although it can easily be fooled,
              don't change the file except you know very, very well what you are doing.

              Also, as long as the file exists, changes  in  the  Mach32's  EEPROM  are  ignored.
              Delete  the  file to recreate an updated version on next use of svgalib. You should
              ensure that the permissions of the file don't allow  normal  users  to  change  it.
              (This may happen if umask has a bad value when svgalib creates the file).

              Example:

              mach32eeprom /etc/vga/mach32.eeprom

       Due to problems with some boards this command got heavily expanded:

       mach32eeprom subcommand1 [subcommand2...]
              At least one subcommand is needed. Valid subcommands are:

              ignore Don't complain about checksum and don't use any EEPROM contents.

              useaperture
                     Use the configuration for the memory aperture given in the EEPROM.

              usetimings
                     Use video modes found in the EEPROM of the board.

              nofile Forget  about  any filename that maybe was already configured.  Don't read a
                     file, don't create one.

              file filename
                     New style form to specify the filename;  On  contrary  to  the  mach32eeprom
                     filename form it can be mixed with any other mach32eeprom subcommand.

              updatefile
                     Don't  read  the  file, always read the EEPROM (except when ignore is given)
                     and create an uptodate image of the EEPROM.

              keepfile
                     Disable all previous updatefile commands.

              compatible
                     Fall back to default behavior: If checksum on the EEPROM data is not ok, use
                     nothing  of  the  configuration  data.  If it is ok, configure everything as
                     specified in the EEPROM.

              The subcommands are intended to be used together and are  performed  in  the  order
              specified. For example:

              mach32eeprom ignore useaperture usetimings

              will ignore the checksum of your EEPROM, but use its contents.  Order is vital! So:

              mach32eeprom useaperture usetimings ignore

              won't  use  any  configuration  from  your  EEPROM. Be careful with the useaperture
              subcommand. Please see the EEPROM  WOES  section.  Note  that  any  non  understood
              subcommand   will  terminate  the  mach32eeprom  command  silently!  Use  only  one
              subcommand per mach32eeprom command to avoid this.

              The mach32eeprom command  is  usually  not  allowed  in  the  environment  variable
              SVGALIB_CONFIG.

10. SETUP OF THE MEMORY APERTURE (LINEAR FRAMEBUFFER)

       Due  to  poor  design, Xfree86 insists on setting up the aperture itself. It doesn't reset
       the original settings at a VC switch once it runs. You should not start X  for  the  first
       time  after a boot as long as an svgalib application is running. This will result in pre X
       values being restored at a VC switch by  svgalib.  If  you  use  svgalib  and  XF86_Mach32
       together,  run  X  first  or  at  least  do  not start it while any svgalib appl. is still
       running. After X was started once you can use svgalib and X in all  combinations  w/o  any
       problems.  Xfree  uses  whatever address is given in the MEM_CFG Mach32 register for a 4MB
       aperture, even if the aperture is not already enabled and the value in  this  register  is
       pointless  garbage.  This is IMHO a dangerous bug as some systems may work only with a 1MB
       aperture.

       However, usage of a correct EEPROM circumvents any such problems. If you cannot use  that,
       use  mach32info (6) to find the address in MEM_CFG.  Then, if it is a sensible setting for
       your system, enable a 4MB aperture at that address with setuplinear.  Ensure that no other
       card or memory uses the address range you choose.

11. ACCELERATOR SUPPORT AND OTHER WEIRD FEATURES

       This  version now has support for all accelerator functions of svgalib.  However they were
       intended for use with the cirrus chips. It may happen  that  at  runtime  they  find  they
       cannot  emulate the function actually requested. Then you should disable the corresponding
       blit function (at least for that application) with the blit config command.

       Data transfer between the host and the Mach32 is normally  via  I/O.  This  proved  to  be
       pretty  slow. If a big enough aperture is available, a simple memory copy is used instead.
       This is usually much faster. You can change which method is used with  the  blit  command.
       This I/O option affects only vga_imageblt(3).  The other functions are incredible fast.

       For type 2 DACS, there is support for 8 bit per color (instead of the normal 6) in the RGB
       triple in the color lookup table of the 256  color  modes.  This  can  be  enabled  by  an
       application,  if  it  supports  it.  The  testaccel(6)  demo  uses it if supported by your
       hardware.  You can use vga_ext_set(3) to use it from your programs.

12. RAMDACS

       Mach32 Ramdacs are specified by a type in range 1 .. 5. This type can be queried from  the
       Mach32  and  then specifies how to set up the ramdac. A list of actual hardware chips used
       for each type exists, but is not of much use. The Mach32 will return a type and the ramdac
       will be completely hardware compatible to one of the given type.

       Type  1  and  4  Dacs  need  different clock frequencies for high colormodes.  For 32K/64K
       colormodes the frequencies have to be doubled and for 16M colors (type 4 only)  they  have
       to  be tripled. I followed the ATI scheme and did this internally. However this means that
       for 32K/64K you can use only clocks for which the doubled frequencies can be generated  as
       well.

       This  is  no hard restriction as the 16 clocks of the Mach32 can be divided by 2.  Thus if
       you setup some mode yourself try to use one of the divided clocks in your  timings  and  I
       can use the undivided clocks internally.

       It  is a real restriction for 16M colors. ATI itself only supports 25MHz (640x480) here by
       use of a 75MHz clock. Depending on your clock chip other values may  be  usable  as  well.
       Even  the doubled/tripled clocks have to be less than the magic 80 MHz. However the driver
       does all this itself. It may just happen that some  of  the  predefined  or  one  of  your
       handmade   mode-timings   can't  be  used  because  the  clock  that  is  used  cannot  be
       doubled/tripled.  Even though there is already some tolerance in the driver  you  may  fix
       that  by slightly changing the clock values that you set with the clocks command. But note
       that this will as well affect the ability of the driver to  calculate  video  timings  and
       thus it ability to check the monitor and DAC safety restrictions.

       In  addition  (in complete contrast to my original ATI docs) RAMDAC 4 does not support RGB
       with blue byte first but only with red first. This required special handling and me adding
       a bunch of functions to all modules of svgalib and vgagl. The added functions are of lower
       performance than the usual functions. However most data has to be completely mangled, so I
       doubt that it can be done much faster. Sorry.

       Of  course,  I might have forgotten to port some parts or even confused things. About bugs
       in the gl and drawing libs, please ask Harm.  But then, I'm able to emulate a  BGR  ramdac
       on my card, so I should even be able to reproduce your problems.

       Recently  I  hear often about type 6 ramdacs in non ATI Mach32 cards. There exists no info
       about these dacs, thus I cannot support them. The driver assumes unknown DACs can stand up
       to  80MHz in 256 color clut modes and does not touch the ramdac (that is, assumes it is in
       the 256 color mode already)

       To get rid of the warning message you can use the

       ramdac n
              configuration command. It allows to explicitly set the type of the  dac  to  n  (in
              range  0  to 5).  Ramdac 3 is the most dumbest ramdac possible, s.t. you can use it
              without any fear for your hardware.

       ramdac dumb
              is equivalent to ramdac 3.

       ramdac auto
              switches back to the default autodetection.

13. MEANING OF THE DETECTION MESSAGE FROM SVGALIB

       Some programs (which do not switch it off) will show a

       Using Mach32 version (sizeM at adrM (how), memK mem, DAC dactype)

       line. This will show up in testlinear(6) etc but will probably scroll away  when  you  use
       vgatest(6).  In this line:

       version
              is the version of the driver (as of my counting, not the svgalib version).

       size   is  the size of the memory aperture. It can be 1 or 4 (1 will lead to not using the
              linear aperture if your card has more than 1MB  memory,  however  applications  can
              still  use  the  1MB  aperture  and page the video memory through it in 1MB steps).
              size can also be no if no aperture is setup at all.

       adr    is the base address of the aperture in MB.

       how    is autodetect if the aperture was setup this way already when the program  started.
              It  is  setup  when  the  the setting was enforced with a setuplinear configuration
              command. It is EEPROM when no aperture was detected, but parameters to  set  it  up
              were found in the EEPROM.

       mem    is the amount of memory the card reported to have.

       dactype
              is the type of the DAC that was detected.

              If  a special ramdac type was set with the ramdac command a (set) will be displayed
              after dactype.

       If mem, dactype and/or the chipset were enforced with chipset from the configuration  file
       or vga_setchipsetandfeatures(3) a forced will be appended to the line.

14. CONCLUSIONS

       A  final  word: I have an ATI ULTRA PRO/2MB/EISA with a Type 2 DAC.  My monitor is an EIZO
       F550i-M. Everything I tried works on it like a charm. However,  I  couldn't  try  it  with
       other  machines  myself  and esp.  other DAC's. Fortunately the Type 2 DAC is the worst to
       code. So I will probably have gotten the other DAC's right. But please be warned!

       I did my very best to code the driver to support the other DAC's by just reading the docs.
       But  i  can't  give  any  definitive  guarantee  for  it to work or even not damaging your
       hardware. So please be careful!

       Note that you will have to set the environment variable SVGALIB_MACH32 to ILLTRYIT if your
       DAC  is  not type 0, 2, 3 or 4. This will of course change if no one with a DAC equal to 1
       or 5 has serious problems. If you have a different DAC, making  patches  to  support  your
       card  will  be much more helpful instead of just complaining.  If you have a different DAC
       that works well tell me as well such that I can remove the need for SVGALIB_MACH32 in  the
       next  release. Still, even now, after years, I got no reports of a Mach32 card with a type
       1 or 5 ramdac. Go figure.

       Thank you for your audience and wishes you will enjoy this driver,
       Michael.

FILES

       /etc/vga/libvga.config
       /etc/vga/mach32.eeprom

SEE ALSO

       svgalib(7), libvga.config(5), mach32info(6).

AUTHOR

       The Mach32 driver and this  documentation  was  written  by  Michael  Weller  <eowmob@exp-
       math.uni-essen.de>.