home *** CD-ROM | disk | FTP | other *** search
/ ftp.pasteur.org/FAQ/ / ftp-pasteur-org-FAQ.zip / FAQ / pc-hardware-faq / supervga-programming < prev   
Encoding:
Internet Message Format  |  1995-05-19  |  24.2 KB

  1. Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!gatech!howland.reston.ans.net!vixen.cso.uiuc.edu!uwm.edu!msunews!harbinger.cc.monash.edu.au!giaec!myles
  2. From: myles@giaec.cc.monash.edu.au
  3. Newsgroups: comp.graphics,comp.lang.pascal,comp.os.msdos.programmer,rec.games.programmer,comp.answers,news.answers
  4. Subject: SuperVGA/VESA programmer's notes.
  5. Followup-To: poster
  6. Date: 19 May 95 01:54:15 GMT
  7. Organization: Monash University
  8. Lines: 529
  9. Approved: news-answers-request@MIT.EDU
  10. Expires: Tue, 14 March 1995 00:00:00 GMT
  11. Message-ID: <myles.800848455@giaec>
  12. Reply-To: myles@giaec.cc.monash.edu.au
  13. NNTP-Posting-Host: giaec.cc.monash.edu.au
  14. Summary: This posting contains programming notes and references for
  15.          those interested in programming in SuperVGA modes.
  16. X-Newsreader: NN version 6.5.0 #4 (NOV)
  17. Originator: myles@giaec.cc.monash.edu.au
  18. Xref: senator-bedfellow.mit.edu comp.graphics:76542 comp.lang.pascal:67441 comp.os.msdos.programmer:55373 rec.games.programmer:56546 comp.answers:11978 news.answers:44389
  19.  
  20. Archive-name: pc-hardware-faq/supervga-programming
  21. Posting-Frequency: every 2 months
  22. Last-modified: 1995/05/19
  23. Version: 1.0
  24.  
  25.  
  26.          DOS Super VGA / VESA programming notes - by Myles.
  27.          --------------------------------------------------
  28.          Version 1.0
  29.  
  30.  
  31.          Send updates and errors to myles@giaec.cc.monash.edu.au
  32.          Comments on my grammar and style are not welcome. 8-)
  33.  
  34.          With regards to questions :
  35.          My time is extremely limited at the moment, don't expect
  36.          comprehensive replies. Also, my entire knowledge on the
  37.          subject is mostly enclosed here, so you won't get any more
  38.          out of contacting me directly.
  39.  
  40.          This document is meant to be a pointer, not a comprehensive
  41.          treatise.
  42.  
  43.          My information base is biased by my Turbo Pascal hobbyist's
  44.          background. Please feel free to send me corrections or
  45.          updates.
  46.  
  47.  
  48.          This version mostly only covers up to VESA VBE 1.2 spec.
  49.  
  50.          To do :
  51.          -------
  52.  
  53.          The next version should include more information, and will
  54.          hopefully cover some of the VESA VBE 2.0 spec.
  55.          I am also hoping to include some detail on using the mouse in
  56.          VESA SuperVGA modes.
  57.  
  58.          Introduction:
  59.          -------------
  60.  
  61.  
  62.          SuperVGA programming uses screen data that can easily exceed
  63.          1 MB in size. However, the normal VGA card only offers a 64k
  64.          memory access at A000h (some cards provide 128k).
  65.  
  66.          How do you get to all that video memory ?
  67.          You know it's there - after all, your card documentation states
  68.          that you have e.g. 512k of memory on your video card, enough to
  69.          handle e.g. 800 x 600 x 256.
  70.  
  71.          You may even have experimented and found that you can change to
  72.          this mode, but can only write pixels to a narrow band at the
  73.          top of the screen.(Surprise! That narrow band is 64k in size.)
  74.          (Except, of course, if it is 128k - read on.)
  75.  
  76.          The answer is in a technique called bank switching, where you
  77.          use the 64k at A000h as a window onto your video card's memory.
  78.  
  79.          The techniques and functions to do this vary from card to
  80.          card, because of historical reasons. Read on.
  81.  
  82.  
  83.          History:
  84.          --------
  85.  
  86.          IBM defined MDA (monochrome), CGA, EGA, the MCGA (found  in
  87.          some early  PS/2  models,  it  never  became  a  wide-spread
  88.          standard), and in 1987, the VGA (and the 8514/A).
  89.  
  90.          VGA was backwards compatible with all the previous standards,
  91.          including the   320x200,256-colour   MCGA   mode.  It  also
  92.          introduced a new mode, 640x480 with 16 colours,  which  was
  93.          basically an extension of EGA's 640x350,16-colour mode, with
  94.          one major advantage - square pixels (so that if you plotted
  95.          the points  for  a  circle,  it looked like a circle, not an
  96.          ellipse). There was also a 640*480 2-colour mode on the MCGA.
  97.  
  98.          If you wanted higher resolutions you had to pay quite a bit
  99.          for IBM's   professional   level   card,   the   8514/A,  a
  100.          high-resolution card capable  of  256-colour  modes  up  to
  101.          1024x768 (interlaced).
  102.          However, this card was proprietary - IBM didn't
  103.          release the register-level details.
  104.  
  105.  
  106.          Each of the other video card manufacturers then came up with
  107.          their own  high  resolution  cards.  However,  they were all
  108.          implemented differently.   640x480  in  256  colours,  for
  109.          example, may  have been mode 34h on one manufacturer's card,
  110.          mode 56h on another's, and mode 62h on yet another.   (N.B.
  111.          These are just false numbers to give you the idea.) Similarly
  112.          for 800x600, 1024x768, and other modes.
  113.  
  114.          Also, at least one manufacturer implemented 128k banks.
  115.          Manufacturers also differed on whether banks (as a subsection
  116.          of the video card's memory) could start only 64k apart,
  117.          or 4k apart (i.e. possibly overlapping), or ....
  118.          You get the picture. Non-standard.
  119.  
  120.  
  121.          Programmers have to write routines to detect  (or  ask  the
  122.          user:-p) which card is present, and then write card-specific
  123.          routines to handle the graphics routines for that card. If a
  124.          new card  comes out, from a different manufacturer or even a
  125.          different model  of  card  from  the  same   manufacturer,
  126.          programmers have to write new routines to support that card,
  127.          which means that first they have to get  details  from  the
  128.          manufacturer, and if they do it properly, they needed to find
  129.          a card to test their routines, (or a beta tester to do it for
  130.          them).  You  could provide these routines either in the body
  131.          of your code, or write external  drivers  or  configuration
  132.          files.  It is possible to write moderately generic code that
  133.          loads the specific card details from external files.
  134.  
  135.          The manufacturers usually provide drivers for a few programs
  136.          (Autocad, Windows, etc.). Also, the information supplied
  137.          in the user manual that comes with the card is usually only the
  138.          mode numbers for that card, not the bank-switching code. Sigh.
  139.          You have to chase them up to get programming details.
  140.  
  141.          Not surprisingly, most programs didn't support ALL the cards
  142.          available, and  many  programmers  chose not to support any
  143.          SuperVGA cards.   It  wasn't  worth  the  effort,  and  your
  144.          customers always  ask  when  you  are going to support THEIR
  145.          particular card.
  146.  
  147.          The manufacturers were miffed  enough  by  this  that  they
  148.          actually got  together  and  formed  the  Video  Electronics
  149.          Standards Association (VESA).  They defined a new  standard
  150.          programmer's interface so that programmers would only have to
  151.          write one set of graphics routines for SuperVGA.  This  was
  152.          the VESA  standard. It has nothing to do with VESA Local Bus
  153.          (VLB), which is another standard from the same group about a
  154.          completely different  hardware  problem.   (You think that's
  155.          confusing - VESA are coming/have come out with another VESA
  156.          standards for sound device interfacing, and more. And then
  157.          there's the Advanced Graphics Interface standard, which is
  158.          also different, I hear) The VESA SuperVGA standard is also
  159.          known as the VESA VBE standard (Video BIOS Extensions, or VGA
  160.          BIOS Extensions - depending on who you talk to - I think
  161.          the latter is correct, but I'm not sure).
  162.  
  163.          The VESA VBE standard
  164.          ---------------------
  165.  
  166.          The VESA VBE standard implements video card routines through
  167.          an  extension of  the  Interrupt  10h BIOS routines
  168.          (subfunction 4Fh).
  169.  
  170.          Many video cards in existence implement VESA through the use
  171.          of a  VESA VBE TSR  (TSR = Terminate and Stay Resident
  172.          program, also known as a memory-resident program.), often
  173.          known as a  VESA driver  (not  entirely  accurate), although
  174.          newer video cards may implement the VESA VBE standard in
  175.          hardware.  Let  me  re-iterate that  this  is  an entirely
  176.          different matter from whether they are a VESA Local Bus (VLB)
  177.          card.
  178.  
  179.          A VESA VBE driver should have been  included  on  the  disk
  180.          of  drivers and utilities you got with your video card.
  181.          However, this, along with a number  of  VESA  VBE drivers
  182.          available  on  Internet, may be out of date.  Most VESA TSRs
  183.          are specific to a particular card.
  184.  
  185.          If you don't have a VESA VBE driver that provides  support
  186.          for  version 1.2  of the VESA VBE standard, look for a
  187.          shareware VESA utility, last seen as UNIVBE51.ZIP, by Kendall
  188.          Bennett  of  SciTech Software. This is a shareware TSR that
  189.          provides VESA extensions for practically every SuperVGA card
  190.          in existence. Inexpensive personal  registration.  Licences
  191.          available for including it with your own programs.
  192.          Version 5.1 supports version 2.0 of the VESA standard.
  193.  
  194.          The current version of the VESA VBE standard is 2.0 - you
  195.          should really try  and  get a driver which supports at least
  196.          version 1.2 , as there are a number of useful extra extras
  197.          beyond earlier versions (such as 32k/64k/16.7M colour modes)
  198.  
  199.          VESA subfunctions (as of VESA VBE version 1.2) are:
  200.  
  201.         subfunction 00 - get SuperVGA information
  202.         subfunction 01 - get SVGA mode information
  203.         subfunction 02 - set SuperVGA video mode
  204.         subfunction 03 - get current video mode
  205.         subfunction 04 - save/restore SuperVGA video state
  206.         subfunction 05 - bank switch
  207.         subfunction 06 - get/set logical scan line length
  208.         subfunction 07 - get/set display start
  209.         subfunction 08 - get/set DAC palette control
  210.  
  211.         VESA VBE video modes (as of version 1.2)
  212.  
  213.         100h : 640x400 256-colour
  214.         101h : 640x480 256-colour
  215.         102h : 800x600 16-colour
  216.         103h : 800x600 256-colour
  217.         104h : 1024x768 16-colour
  218.         105h : 1024x7686 256-colour
  219.         106h : 1280x1024 16-colour
  220.         107h : 1280x1024 256-colour
  221.         108h : 80x60 text
  222.         109h : 132x25 text
  223.         10Ah : 132x43 text
  224.         10Bh : 132x50 text
  225.         10Ch : 132x60 text
  226.         10Dh : 320x200 32k-colour (1:5:5:5)
  227.         10Eh : 320x200 64k-colour (5:6:5)
  228.         10Fh : 320x200 16.8M-colour (8:8:8)
  229.         110h : 640x480 32k-colour (1:5:5:5)
  230.         111h : 640x480 64k-colour (5:6:5)
  231.         112h : 640x480 16.8M-colour (8:8:8)
  232.         113h : 800x600 32k-colour (1:5:5:5)
  233.         114h : 800x600 64k-colour (5:6:5)
  234.         115h : 800x600 16.8M-colour (8:8:8)
  235.         116h : 1024x768 32k-colour (1:5:5:5)
  236.         117h : 1024x768 64k-colour (5:6:5)
  237.         118h : 1024x768 16.8M-colour (8:8:8)
  238.         119h : 1280x1024 32k-colour (1:5:5:5)
  239.         11Ah : 1280x1024 64k-colour (5:6:5)
  240.         11Bh : 1280x1024 16.8M-colour (8:8:8)
  241.  
  242.  
  243.          Version 2.0 of the VESA video standard has recently
  244.          become available, but I'm still gathering information
  245.          about it.
  246.          It covers extra features like protected mode, flat
  247.          memory video space (no banks), etc.
  248.          Stay tuned.  In the meantime ...
  249.  
  250.          -----------------------------------------------------------
  251.  
  252.          That 64k of memory - what to put into it:
  253.          -----------------------------------------
  254.  
  255.          For 256-colour modes, each byte in  the  64k  is  simply  a
  256.          palette value,  or  the  colour  number  of  a  pixel  (Yes,
  257.          256-colour graphics is just pixel painting by the numbers).
  258.          This means the color number is just an array index into a 256
  259.          member array of 6-bit red, green and blue values, giving you
  260.          256 colours out of 256k (2^(6*6*6)) possible values.
  261.  
  262.          -------------------------------------------------------------
  263.          HiColor and  TrueColor  cards use a different RAMDAC chip (a
  264.          digital to analogue chip converting the digital  values  in
  265.          video memory to analogue output for the monitor).
  266.  
  267.          HiColor and TrueColor modes represent their colours directly
  268.          - you  specify  the  red-green-blue  values  for each pixel,
  269.          rather than choosing from a limited array of colours.
  270.  
  271.          15-bit modes provide 32k colours - each colour is represented
  272.          as a  two-byte  value  xrrrrrgggggbbbbb,  where the x bit is
  273.          unused.  16-bit modes provide 64k colours, and  provide  an
  274.          extra bit  for  green  (I think) - rrrrrggggggbbbbb.  24-bit
  275.          modes use three-byte values, one byte (8-bits) each for red,
  276.          green, and blue.
  277.  
  278.          SuperVGA does not support the 32-bit and 64-bit modes found
  279.          on some specialist hardware, although you may sometimes find
  280.          32-bit (and rarely even 64-bit ?) files.
  281.          Some SuperVGA cards e.g. the S3-864, have pseudo-32-bit
  282.          modes, enabling the use of 32-bit instructions to move
  283.          data into video memory. The 4th byte is not used, giving you
  284.          a 24-bit mode with unused "gaps" in video memory, but increasing
  285.          the speed of transfer.
  286.  
  287.          32-bit files provide another byte for an alpha value - which is
  288.          a transparency value used for overlaying one image on another -
  289.          also good for such things as  anti-aliasing  edges.  64-bit
  290.          files are  like  32-bit,  but provide 2 bytes each for red,
  291.          green, blue, and alpha.
  292.  
  293.  
  294.          -----------------------------------------------------------
  295.          A note on VESA and speed :
  296.  
  297.          Some people have stated that programming using the VESA VBE
  298.          is s-l-o-w, apparently because they hear the word "BIOS"
  299.          and tune out, because in the past it has been emphasised that
  300.          using the BIOS to e.g. draw a pixel, is incredibly slow, compared
  301.          to writing your own routines to just move graphics data into
  302.          video memory.
  303.  
  304.          However, apart from setting values and graphics mode, usually
  305.          at the beginning of your program, and getting information
  306.          pertaining to the mode you are using (a few BIOS calls at
  307.          most, done once only), you don't have to use the BIOS much at
  308.          all. Once you've set a bank, the VESA standard allows you to
  309.          write directly to video memory (well, a 64k subset of it),
  310.          indeed almost encourages it.
  311.  
  312.          Also, you can use function 05 to change banks, but you'll find
  313.          the VESA VBE standard also includes a function returning the
  314.          direct address of the video card's bank changing routine, so
  315.          you can use it directly in a far call.
  316.  
  317.          Alas, a number of video card manufacturers have not pointed this
  318.          address to a fast, optimized bank-changing routine, and a
  319.          considerable gain in speed can still be achieved by writing
  320.          card-specific drivers. *Sigh*
  321.  
  322.          So VESA *can* be slower than a card-specific driver.
  323.          But not because it's using BIOS functions.
  324.  
  325.          -----------------------------------------------------------
  326.  
  327.          Warning: VESA is not a completely simple solution. You have
  328.          to find  out  whether  the  card  it  is being used on has 2
  329.          "windows", whether one or both windows are readable  and/or
  330.          writeable, how  big are the jumps by which you can move the
  331.          window around (granularity), how big the windows are,  etc.
  332.          While these routines will only have to be written once, there
  333.          is a bit of work to be done at the start to make your  VESA
  334.          routines generic to all VESA cards.
  335.  
  336.          -----------------------------------------------------------
  337.  
  338.          Information and code.
  339.          ---------------------
  340.  
  341.         ******  N.B. I am not willing to
  342.         supply FTP sites for these files -
  343.         I suggest you either use ARCHIE, or find out HOW
  344.         to use archie - news.answers and comp.answers may
  345.         be good places to start.
  346.         You may also find information there on FTP mail
  347.         servers, allowing you FTP services via email.
  348.         Requests for FTP sites will be deleted from my mail
  349.         without consideration - my time is, unfortunately, limited.
  350.  
  351.         That said, I recommend the following FTP sites to get you
  352.         started (you may also have local mirrors of these sites) -
  353.  
  354.         garbo.uwasa.fi:  e.g. /pc/turbopas,/pc/graphics
  355.         oak.oakland.edu: e.g. /SimTel/msdos/graphics,/SimTel/msdos/turbopas
  356.         x2ftp.oulu.fi:   /pub/msdos/programming
  357.  
  358.  
  359.  
  360.  
  361.          SVGABG55.ZIP - Jordan Hargrave's set of Super VGA BGI  drivers.
  362.          If your card is not one of those catered for, it will also use
  363.          a VESA driver. Shareware, register for source.  Uses the Graph
  364.          unit.  This is just like using the Borland BGI. Good.
  365.  
  366.          VESATP11.ZIP - shareware TPU , register for source.
  367.          On initialising a SuperVGA mode, you get a SuperVGA advert.
  368.          Otherwise much like the BGI interface, except you don't use the
  369.          Graph unit. Good.
  370.          I am reliably informed a new, improved version of this unit
  371.          will be out some time soon.
  372.          There is a graphics file viewer (VIEWER.ZIP ?) which uses
  373.          this unit (or it's predecessor, VESATP10.ZIP ?) for it's
  374.          graphics handling.
  375.  
  376.          EGOF11-6.ZIP
  377.          EGOF11-7.ZIP - shareware, Turbo Pascal units. Mode X and VESA.
  378.          Haven't seen them myself yet.
  379.  
  380.          VGADOC3.ZIP - includes card-specific information  and  code
  381.          (Turbo Pascal), also includes VESA information and code. Will
  382.          identify your card (including the DAC  -  256  colour,  32k
  383.          colour, 16.7M colour), and will do a quick screen demo in any
  384.          available mode. Very extensive, freeware. Top quality.
  385.          Compiler/author, Finn Thoegersen.
  386.  
  387.          VESASP12.ZIP - an unofficial version of the  official  VESA
  388.          standard, typed  in by a friendly demo coder going under the
  389.          pseudonym of  Patch.   Includes  ASM  information  on  VESA
  390.          routines. I believe a version of this may also be found in
  391.          the PC Game Programmer's Encyclopedia, PCGPE*.ZIP, at
  392.          x2ftp.oulu.fi, somewhere under pub/msdos/programming.
  393.  
  394.          VESADRV2.ZIP - a collection of VESA drivers, not necessarily
  395.          implementing version  1.2  of  the  VESA  standard. Some, at
  396.          least, are earlier.
  397.  
  398.          VDRIV.ZIP - an even older collection of VESA drivers.
  399.  
  400.          VESA24_2.ZIP - C/ASM source for  VESA  usage.
  401.          Originally by Randy Buckland, with modifications by Don
  402.          Lewis.
  403.  
  404.          VGAKIT52.ZIP - C ?  More info ?
  405.  
  406.          ALLSWAGS.ZIP
  407.          SWAG*.ZIP - this collection of Turbo Pascal code snippets
  408.          and it's updates have some VESA routines included.
  409.          (I believe there is a C equivalent called something like
  410.          SNIPPETS, which may have VESA routines - I haven't seen it.)
  411.  
  412.          UNIVBE51.ZIP -  the  universal  VESA VBE driver. Better than
  413.          some hardware-specific drivers. Might well provide functions
  414.          not provided by VESA functionality in hardware. Shareware.
  415.          Regularly updated and improved.  By Kendall Bennett,
  416.          from SciTech Software. Good.
  417.  
  418.  
  419.          MGL - MegaGraphics Library - for C/C++, also  from  SciTech
  420.          Software. Shareware.
  421.  
  422.          SVGAKT51.ZIP - for C/C++, also from SciTech Software. Freeware ?
  423.  
  424.          SciTech also released a freeware product called WinDirect
  425.          (maybe included in SVGAKIT51.ZIP ?) which enables you to
  426.          turn off the GDI in MS-Windows and run full-screen VESA
  427.          graphics, rather than using WinG in a window, while still
  428.          leaving other Windows functionality available.
  429.          Have a look in ftp.scitech.com, under devel/svgakt51.zip
  430.  
  431.          INTER45?.ZIP - Ralf Brown's extensive interrupt list in
  432.          electronic form, includes VESA int 10h extensions
  433.          - latest version includes version 2.0 functions.
  434.          (Also available as RBNG45.ZIP - Norton Guides format
  435.           - a good DOS TSR reader for this format, apart from the
  436.          official commercial one, is NGHELP(10?).ZIP)
  437.  
  438.          SVGACC23.ZIP - library for MS-compat. C/C++
  439.          SVGAPV23.ZIP - library for MS PDS and MS VBDOS
  440.          SVGAQB23.ZIP - library for MS QuickBASIC 4.x
  441.  
  442.  
  443.          More details on these and others as and when I have the time,
  444.          or somebody passes me the information.
  445.  
  446.          -------------------------------------------------------------
  447.  
  448.          Other sources I have seen/used:
  449.          ------------------------------
  450.  
  451.          N.B. Only the most recent of these cover up to version 1.2 of
  452.          the standard. I've not yet seen a printed version that
  453.          covers version 2.0.
  454.  
  455.  
  456.          "PC Interrupts", 2nd ed. by Ralf Brown and Jim Kyle.
  457.          Addison-Wesley, 1994. ISBN 0201624850
  458.  
  459.          "Super VGA graphics programming secrets" by  Steve  Rimmer.
  460.          Windcrest/McGraw-Hill, 1993. ISBN 0-8306-4427-X (hbk) (C/ASM)
  461.          ISBN 0-8306-4428-8 (pbk)
  462.  
  463.          "PC INTERN System Programming :  the  encyclopedia  of  DOS
  464.          programming know how" by Michael Tischer. Abacus, 1992. ISBN
  465.          1-55755-145-6 (C/TP/ASM)
  466.  
  467.  
  468.          "PC Magazine Turbo Pascal 6.0 : techniques and utilities", by
  469.          Neil J. Rubenking. Ziff-Davis Press, 1991. ISBN 1-56276-010-6
  470.  
  471.          "Programmer's guide to the EGA and VGA cards", 2nd  ed.  by
  472.          Richard F.  Ferraro. Addison-Wesley, 1990. ISBN
  473.  
  474.          Program Now (UK  programmer's  magazine),  September  1993,
  475.          p.60-64, Dave  Bolton's  Turbo  Pascal  programming  column,
  476.          "Raising the VESA standard."
  477.  
  478.          Dr Dobbs Journal, April 1990, p.  65H-70.  "VESA  VGA  BIOS
  479.          extensions :  a  software  standard  for  Super  VGA"  by Bo
  480.          Ericsson.
  481.  
  482.          This one doesn't have VESA, but it's goes  into  plenty  of
  483.          detail, with  lots  of  code, on programming VGA and earlier
  484.          (ASM/C): "Programmer's  guide  to  the  PC  &  PS/2  video
  485.          subsytems" by  Richard  Wilton.  Microsoft Press, 1987. ISBN
  486.          1-55615-103-9
  487.          The second edition, now out, has a brief section on VESA
  488.          "Programmer's guide to PC video subsystems", 2nd ed.,
  489.          by Richard Wilton. Microsoft Press, 1994. ISBN 1-55615-641-3.
  490.  
  491.  
  492.          ------------------------------------------------------
  493.  
  494.          The VESA standard itself is available from:
  495.  
  496.          Video Electronics Standards Association
  497.          2150 North First Street, Suite 440
  498.          San Jose, California. 95131-2029
  499.  
  500.          Phone (408) 435-0333
  501.          FAX   (408) 435-8225
  502.  
  503.          You may see an address of South Bascombe Avenue or some such
  504.          quoted in  some sources. This is an old address, and mail is
  505.          no longer forwarded from this address, so don't use it.
  506.  
  507.          When I last enquired, version 1.2 was still the standard.
  508.          Prices were as follows :
  509.  
  510.          Cost: $20 to non-members, for VBE 1.2
  511.  
  512.          $50 for the complete VESA Programmers Toolkit, which includes
  513.          VBE 1.2, programmers guidelines for direct color modes, SVPMI
  514.          1.0 SuperVGA protected mode interface, the VESA XGA extensions
  515.          standard, the standard for 800x600 mode (an older one ?), video
  516.          cursor interface and the VGA pass-through connector standard.
  517.  
  518.          If you are not  USA, add $20 international shipping charge.
  519.  
  520.          Make sure you  specify  the  VESA  VBE 1.2 standard
  521.          (for VGA BIOS extensions), or the VESA Programmers Toolkit, as
  522.          VESA also has standards for the VESA Local  Bus,  an  audio
  523.          interface, power  management  signalling, and others, all of
  524.          which are "VESA standards". They will FAX you an order form if
  525.          you give them your FAX number.
  526.  
  527.          I guess by now you should probably specify version 2.0 8-).
  528.  
  529.          -----------------------------------------------------------
  530.  
  531.          Credits :
  532.  
  533.          My thanks to those who have posted informative messages
  534.          on comp.lang.pascal and comp.graphics, and to the authors
  535.          and editors of the above packages and references.
  536.  
  537.          Special thanks goes to Barry Naujok for his help,
  538.          corrections, information; to Kendall Bennett for his
  539.          occasional informative postings; and to Patch for typing
  540.          in the file in VESASP12.ZIP.
  541.  
  542.          Any mistakes or errors are my own.
  543.  
  544.  
  545.  
  546.          ----------------------------------------------------
  547.          Myles Strous.
  548.          
  549.