
  1. About
  
  VESA32.DLL is a thin wrapper for some VESA interrupts (int 10h, AH=4Fh).
  Because most DPMI servers don't supply translation services for VESA,
  this may be useful. The functions supplied are:

  Export                 Wrapper for       Comment
  -----------------------------------------------------  
  GetVesaInfo            int 10h, AX=4F00h
  SearchVesaMode         int 10h, AX=4F00h find a certain VESA mode
  EnumVesaModes          int 10h, AX=4F00h enum all available VESA modes
  GetVesaModeInfo        int 10h, AX=4F01h
  SetVesaMode            int 10h, AX=4F02h
  GetVesaMode            int 10h, AX=4F03h
  GetVesaStateBufferSize int 10h, AX=4F04h
  SaveVesaVideoState     int 10h, AX=4F04h
  RestoreVesaVideoState  int 10h, AX=4F04h
  SetVesaDisplayStart    int 10h, AX=4F07h
  GetVesaDisplayStart    int 10h, AX=4F07h
  SetVesaPaletteEntries  int 10h, AX=4F09h, BL=0
  GetVesaPaletteEntries  int 10h, AX=4F09h, BL=1
  
  Int 10h, AX=4F02h, AX=4F03h and AX=4F07h don't use any pointers, so these
  functions may be called directly instead of using the VESA32 
  wrapper functions.
  For more details you will have to view the source.

 
  2. Drawing Mouse Cursor in VESA LFB Modes
 
  VESA32 may take over the task to draw the mouse cursor in VESA LFB
  modes. Since most mouse drivers don't support VESA modes, taking over
  this job may be appreciated. The functions supplied are:

  VesaMouseInit             enable graphics cursor display
  VesaMouseExit             disable graphics cursor display
  SetCursorPaletteEntries   set cursor colors in palette video modes.
                            default for screen color entry is 0 and
                            cursor color entry is 255.

  When VesaMouseInit is called, it will implement support for INT 33h,
  AX=0012h, which allows to set a "large" graphics cursor. The cursor
  size is limited to a maximum of 32x32 and it must be monochrom.
  Only video modes using LFB and at least 256 colors (8 bpp) are supported.
  
  
  3. Using VESA32
  
  To make usage of VESA32.DLL link with VESA32.LIB. Another approach is
  to link the functions statically with VESA32S.LIB. Then VESA32.DLL isn't
  required.


  4. History
 
  2020/12/02: version 1.14

  þ bugfix: set physical LFB address in SVGAINFO to NULL in case it's not
    translated to a linear address.

  2011/05/27: version 1.13

  þ wheel mouse supported
  þ bugfix: when saving the VESA video state, there was no check whether
    the call did succeed. However, it may fail for VGA text modes.

  2009/01/20: version 1.12

  þ source assembled with JWasm.
  þ init code moved to a separate source file to make static linking
    possible.
  
  2008/03/01: version 1.11

  þ bugfix: cursor movement might have polluted screen.
  þ bugfix: XORing the screen (AND-mask bit 1, XOR-mask bit 1) didn't work.
  
  2008/01/11: version 1.10
  
  þ VESA info call (int 10h, ax=4F00h) is now done with a real-mode
    stack of 1024 bytes. The standard size of 512 didn't work inside
    VirtualBox.
  
  2007/07/15: version 1.9.5
  
  þ use int 10h, ah=00 for mode set if bits 8-15 are zero and VESA mode
    set function has failed.
  þ if a mode < 100h is set, don't set DAC width to 8 bits.
  þ flags register in real-mode call structure now cleared when calling
    real-mode int 10h by DPMI int 31h, ax=0300h. Some VESA BIOSes (UNIVBE?)
    expect the direction flag to be 0.
  
  2007/03/15: version 1.9.4
  
  þ optionally access DAC directly (DirectDACAccess=1)
  
  2006/12/14: version 1.9.3
  
  þ bugfix: reading DACs directly didn't work (not that big a problem since
    this is done only if VESA function isn't implemented).
  
  2006/03/03: version 1.9.2
  
  þ some small speed improvements rendering the mouse cursor.
  þ added some code which may make Matrox cards work more reliable with HX
    in 15/16 bpp modes (thanks to Rob Bugel).
  þ optionally use int 10, 4f07h, bx=0004 (get flip status) on VESA 3.0.
  
  2006/02/06: version 1.9.1
  
  þ now a mutex is used for drawing the mouse cursor, so interrupts
    may remain enabled during cursor draw operation.
  þ bugfix: mouse cursor wasn't shown if display start was
    beyond 2*screen size
  þ bugfix: SetDisplayStart may have trashed ESI register
  þ bugfix: calling protected-mode interface for display start
    checked if ax returned 004Fh. This test is valid for the
    software interrupt interface only!
  þ SetDisplayStart for VESA 3.0 (set scheduled display start)
    now uses direct call if protected-mode interface is used.
    Previously the direct call was only used for VESA 2.0 set
    display start function.
              
  2006/01/22: version 1.9
  
  þ parameters for SetDisplayStart() function modified
  
  2006/01/02: version 1.8
  
  þ bugfix: register EDI wasn't preserved in SaveVesaV/RestoreVesaVideoState
  
  2005/11/24: version 1.7
  
  þ int 10h, ax=4f07h now watched to continue showing the mouse
    cursor if display start changes.
              
  2005/11/18: version 1.6
  
  þ bugfix: mouse cursor "restored" when there was nothing to restore.
              
  2005/11/01: version 1.5
  
  þ SetMaxVideoResolution added
  þ Int 33h, ax=0003/0004 (get/set position) no longer handled.
  
  2005/10/21: version 1.4
  
  þ GetVesaPaletteEntries implemented
  þ int 33h, ax=0007/0008 (clip cursor) implemented
  þ int 33h, ax=0004 (set cursor pos) implemented
  þ bugfix: the mouse support only worked when the video mode
    was changed *after* VesaMouseInit has been called
              
  2005/09/25: version 1.3
  
  þ SetVesaDisplayStart/GetVesaDisplayStart added
  
  2005/06/14: version 1.2
  
  þ mouse cursor drawing support added
  þ SaveVesaVideoMemory/RestoreVesaVideoMemory/GetVesaMemoryBufferSize added
  þ SaveVesaVideoState/RestoreVesaVideoState/GetVesaStateBufferSize added
  þ GetVesaInfo added
  
  2005/06/07: version 1.1
  
  þ SetVesaPaletteEntries added
  
  2005/06/05: version 1.0
  
  
  5. Copyright
  
  VESA32 is part of HX DOS extender. This extender is freeware.
  View HXRT.TXT for licence details.
  
  Japheth
  
