
  1. About
  
  The HX DOS extender runtime allows to run HX DOS extended or Win32
  console applications in DOS. Furthermore there is limited support
  for running Win32 graphics applications (DirectDraw or GDI).
  
  HX has been tested to run with MS-DOS, FreeDOS, OpenDOS (DR-DOS) and
  DOSEMU 1.3. Furthermore it may run under VMWare, Bochs, Qemu or DosBox.
  

  2. Installation
  
  To install the HX DOS extender runtime do:

   unzip HXRT in a directory of your choice, for example C:\HX.
  
   include the BIN subdirectory (C:\HX\BIN) into the PATH environment
    variable, which usually is set in CONFIG.SYS or AUTOEXEC.BAT.
    Or copy the files from C:\HX\BIN to a directory included in PATH.

   to run standard Win32 console apps in plain DOS I would suggest
    to use HXLdr32. This is a DOS-TSR and it doesn't require any parameters.
    Just type HXLdr32 and then try to start the Win32 apps you want to run.
    View Doc\HXLdr32.txt for more details. 
    There exists another way to run Win32 apps, but it requires to modify the
    binaries. The modification is done by a small tool called PEStub.exe.
    View Doc\PEStub.txt for more details.
    

  3. Hints / Known Problems

   if HX doesn't run at all, please read TEST\README1.TXT. It contains
    a strategy how to - hopefully - find the reason for the failure.
  
   some programs may require that environment variable TZ has been set.
    This is especially true for packer/unpacker apps, which store the
    file's creation or last update time in UTC format. As an example: 
    To set TZ to time zone GMT - 2 hours enter 'set TZ=CET-2'
    
   for some programs environment variable DPMILDR has to be set. If you
    get error message 'relocations stripped, cannot load', enter 
    'set DPMILDR=8' on the command line. For more details about this
    potential problem view Doc\Compat.txt and/or Doc\DPMILD32.txt.
    
   if a program imports a dll located in the windows system directory
    avoid to include this directoy to the PATH environment variable.
    That is because some HX win32 emulation dlls have the same
    name as their windows counterparts. It is better to copy those dlls
    to a directory included in PATH. Or, if the windows system directory must
    be included in PATH, include it *after* the HX\Bin directory.

   the graphics routines for GDI and DirectDraw emulation require a
    VESA 2.0 Bios, since they only work with linear frame buffer (LFB)
    enabled. They most likely don't work in a WinXP DOS box.
  
   if HX is running on FreeDOS and a program crashes, run TEST\DOSTEST.EXE.
    This may show if the current configuration is compatible with HX.
    If any function fails try to disable FreeDOS' EMM386.EXE, where some
    older versions are known to cause troubles. If this doesn't help, you
    should try another DOS, since FreeDOS is not quite MS-DOS compatible.
  
   Sometimes DPMILD32 is unable to load a program because the currently
    loaded DPMI host doesn't provide the functions needed. HX has a modular
    design and can run on various DPMI hosts, but often HDPMI will be
    required. That's due to restrictions in other hosts, not because HDPMI
    supplies any hidden functionality. A comparison gives these results:

              DOS API        alloc linear 
    host     translation   memory at 0x400000   comment
    -------------------------------------------------------------------
    CWSDPMI    No             No                v5
    DPMIONE    Yes            No                also 386MAX host
    32RTM      Yes            No                Borland's PowerPak
    Win9x      Yes            No 
    WinXP      Yes            No 
    QDPMI      Yes(?)         No(?)             didn't run
    OS2        Yes            Yes(?)              
    DosEmu     Yes            Yes               v1.3.3 
    HDPMI      Yes            Yes

    DPMILD32 will only load HDPMI if no DPMI host has been found. So 
    other hosts should be disabled or uninstalled if DPMILD32 cannot
    load a program. Use TEST\DPMI.EXE to find out if a host offers
    the functions required by HX (being able to alloc linear memory at
    0x400000 is needed to load "fixed" Win32 binaries).
    

  4. Files Overview
  
  a. Binaries for 32-Bit applications:
  
   HDPMI32.EXE: DPMI server for 32 bit clients. Used in plain DOS only.
    Will be executed automatically if necessary. View HDPMI.TXT for more
    details. LFN API translation is included, but  requires a driver for
    LFN (DOSLFN) to be installed. HDPMI is a fully functional DPMI host
    and doesn't require any other module from the HX runtime.

   DPMILD32.EXE: PE file loader. Usually this file is launched
    automatically either by HXLdr32.EXE or DPMIST32.BIN. View DPMILD32.TXT
    for more details.

   HXLdr32.EXE: TSR program to automatically run PE apps in plain DOS. View
    HXLdr32.TXT for more details.

   PESTUB.EXE: Tool to check if a PE file will be compatible with 
    DPMILD32 and to modify the MZ-Header of a PE file. Usually used
    to add DPMIST32.BIN to an existing PE app. View PEStub.TXT for more
    details.

   DKRNL32.DLL, DADVAPI.DLL, DUSER32.DLL, DGDI32.DLL, DDDRAW.DLL: Win32
    emulation dlls which will be loaded by DPMILD32 instead of the windows
    dlls KERNEL32.DLL, ADVAPI32.DLL, USER32.DLL, GDI32.DLL and DDRAW.DLL.
    View Doc\*.TXT for more details.

   OLE32.DLL, OLEAUT32.DLL: Some more Win32 Emulation dlls which have 
    identical names as the dlls they are emulating. Rarely used. View
    DPMILD32.TXT for more details.
    
   DPMIST32.BIN: this is a MZ stub to be added to PE binaries to make them
    run in DOS without help of HXLdr32. It is used either by PEStub.EXE or
    the linker. View DPMIST32.TXT for more details.

   VESA32.DLL: helper dll for VESA support in protected mode. View Vesa32.txt
    for more details.
   
  b. Binaries for 16-Bit applications:

   HDPMI16.EXE: DPMI server for 16 bit clients.
   DPMILD16.EXE: NE file loader.

  c. Documentation in Doc subdirectory.

  d. Binaries in Unsupp directory
  
   DPMILD32.EXE: PE file loader with LFN support disabled.
   DOSX.EXE: replacement for Windows 3.1 DOSX.EXE. Will use HDPMI16 as DPMI
    host in windows standard mode.

  e. Others
  
   BIN\CLASSES: Helper file in BIN subdirectory to support creating COM
    objects with CoCreateInstance. 
   TEST\*.*: some tools to test various aspects of HX's win32 emulation.


  5. History
  
  05/15/2006, V2.4:  HDPMI V3.0.5, DPMILD32 V3.1.3, DKRNL32 V2.9.6,
                     DADVAPI V2.2, DUSER32 V2.9.5  
  05/02/2006, V2.3:  HDPMI V3.0.4, DPMILD32 V3.1.2, DKRNL32 V2.9.5
                     some HDPMI changes.
  04/21/2006, V2.2:  HDPMI V3.0.3, DKRNL32 V2.9.4, DUSER32 V2.9.4,
                     DGDI32 V1.9.1, DDDRAW V2.3
                     some additions and bugfixes for HDPMI mainly.
  04/12/2006, V2.1.2:HDPMI V3.0.2
                     fixed a bug in XMS memory allocation of HDPMI V3.0.1
  04/07/2006, V2.1.1:HDPMI V3.0.1
                     fixed a bug in DOS API translator of HDPMI V3.0.
  04/04/2006, V2.1:  HDPMI V3.0, DPMILD32 V3.1.1, DUSER32 V2.9.3
                     HDPMI protected-mode code moved to extended memory,
                     which frees about 18 kB of DOS memory.
  03/22/2006, V2.0.2:HDPMI V2.0.7, DKRNL32 V2.9.3
                     fixed a problem with LFN when running on MS-DOS < 7.
  03/19/2006, V2.0.1:HDPMI V2.0.6, PESTUB V2.5.
                     PEStub didn't work.
  03/18/2006, V2.0:  HDPMI V2.0.5, DPMILD32 V3.1.0, DKRNL32 V2.9.2, 
                     DADVAPI V2.1, DUSER32 V2.9.2, DGDI32 V1.9, DDDRAW V2.2,
                     VESA32 V1.9.2, PESTUB V2.4.
                     A WinSocket emulation added to HXGUI. DosBox compatible
                     with HX. Some test apps moved from HXGUI to HXRT. Tool
                     HXDOSLD added. Some MSys tools work now. LFN support
                     is activated in Bin\HDPMI32.EXE and Bin\DPMILD32.EXE,
                     making Unsupp\HDPMI32.EXE and Unsupp\HDPMI16.EXE 
                     redundant and therefore were deleted.
  02/06/2006, V1.43: HDPMI V2.0.4, DPMILD32 V3.0.9, DKRNL32 V2.9.1,
                     DUSER32 V2.9.1, DGDI32 V1.8, DDDRAW V2.1, VESA32 V1.9.1 
  01/22/2006, V1.42: HDPMI V2.0.3, DKRNL32 V2.9, DADVAPI V2.0, DUSER32.V2.9,
                     DGDI32 V1.7, DDDRAW V2.0, OLE32 V1.3, VESA32 V1.9 
  01/02/2006, V1.41: HDPMI V2.0.2, DKRNL32 V2.8.36, DUSER32.V2.8,
                     DGDI32 V1.6, DDDRAW V1.9, VESA32 V1.8, PESTUB V2.3.
  12/20/2005, V1.40: DPMILD32 V3.0.8, DKRNL32 V2.8.35, DUSER32.V2.7,
                     DGDI32 V1.5, DDDRAW V1.8.
  12/07/2005, V1.39: DPMILD32 V3.0.7, DKRNL32 V2.8.34, DUSER32.V2.6,
                     DGDI32 V1.4, DDDRAW V1.7.
  11/24/2005, V1.38: DPMILD32 V3.0.6, DKRNL32 V2.8.33, DUSER32.V2.5,
                     DGDI32 V1.3, DDDRAW V1.6, VESA32 V1.7, PESTUB V2.2.
                     Unsupp\DPMILD32.EXE added.
  11/18/2005, V1.37: HDPMI V2.0.1, DPMILD32 V3.0.5, DKRNL32 V2.8.32,
                     DUSER32.V2.4, DGDI32 V1.2, DDDRAW V1.5, VESA32 V1.6,
                     HXLdr32 V1.7 
  11/07/2005, V1.36: HDPMI V2.0, DPMILD32 V3.0.4, DKRNL32 V2.8.31,
                     DUSER32.V2.3, DDDRAW V1.4, VESA32 V1.5.
  10/24/2005, V1.35: HDPMI V1.9.9, DPMILD32 V3.0.3, DKRNL32 V2.8.30,
                     DUSER32 V2.2, DGDI32 V1.1, DDDRAW V1.3, VESA32 V1.4.
                     Vesa32.DLL added (previously included in HXDEV)
  09/29/2005, V1.34: HDPMI V1.9.8, DPMILD32 V3.0.2, DKRNL32 V2.8.29,
                     DUSER32 V2.1.
                     DGDI32.DLL (V1.0) and DDDRAW.DLL added.
  09/19/2005, V1.33: HDPMI V1.9.7, DPMILD32 V3.0.1, DKRNL32 V2.8.28,
                     DUSER32 V2.0, HXLdr32 V1.6
  09/05/2005, V1.32: HDPMI V1.9.6, DPMILD32 V3.0.0, DKRNL32 V2.8.27
                     Unsupp\DOSX.EXE + Unsupp\DOSX.TXT added.
  08/28/2005, V1.31: HDPMI V1.9.5, DPMILD32 V2.9.9, DKRNL32 V2.8.26
  08/14/2005, V1.30: HDPMI V1.9.4, DPMILD32 V2.9.8, DKRNL32 V2.8.25
                     HXLdr32 V1.5
  08/06/2005, V1.29: HDPMI V1.9.3, DPMILD32 V2.9.7, DKRNL32 V2.8.24
  08/01/2005, V1.28.1: HDPMI V1.9.3, DPMILD32 V2.9.6, DKRNL32 V2.8.23
  08/01/2005, V1.28: HDPMI V1.9.3, DPMILD32 V2.9.6, DKRNL32 V2.8.22,
                     HXLdr32 V1.4
  07/20/2005, V1.27: HDPMI V1.9.2, DPMILD32 V2.9.5, DKRNL32 V2.8.21,
                     DUSER32 V1.9
  07/15/2005, V1.26: HDPMI V1.9.1, DPMILD32 V2.9.4, DKRNL32 V2.8.20,
                     fixed the bug which caused HDPMI to crash FreeDOS
                     EMM386 (and 386MAX).
  07/14/2005, V1.25: HDPMI V1.9.0, DPMILD32 V2.9.3, DKRNL32 V2.8.20,
                     previous DKRNL32 had a silly bug (wrong exception
                     codes supplied) 
  07/13/2005, V1.24: HDPMI V1.9.0, DPMILD32 V2.9.3, DKRNL32 V2.8.19,
                     PESTUB V2.1
                     HDPMI32 with LFN support now works under DR-DOS.
  07/06/2005, V1.23: HDPMI V1.8.9, DPMILD32 V2.9.2, DKRNL32 V2.8.18,
                     DUSER32 V1.8, PESTUB V2.0
  06/26/2005, V1.22: HDPMI V1.8.8, DPMILD32 V2.9.1, DKRNL32 V2.8.17
                     DPMILD32 had a severe bug causing low memory corruption.
  06/23/2005, V1.21: HDPMI V1.8.8, DPMILD32 V2.9, DKRNL32 V2.8.16
                     LFN support for NT platforms added.
  06/14/2005, V1.20: HDPMI V1.8.7, DPMILD32 V2.8.9, DKRNL32 V2.8.15,
                     DUSER32 V1.7
  06/07/2005, V1.19: HDPMI V1.8.6, DPMILD32 V2.8.8, DKRNL32 V2.8.14,
                     DUSER32 V1.6, OLEAUT32 V1.3
  06/05/2005, V1.18: HDPMI V1.8.6, DPMILD32 V2.8.8, DKRNL32 V2.8.13
  06/02/2005, V1.17: HDPMI V1.8.6, DPMILD32 V2.8.8, DKRNL32 V2.8.12
  05/22/2005, V1.16: HDPMI V1.8.6, DPMILD32 V2.8.8, DKRNL32 V2.8.11
  05/20/2005, V1.15: HDPMI V1.8.6, DPMILD32 V2.8.7, DKRNL32 V2.8.10,
                     HXLdr32 V1.3, OLEAUT32 V1.2, DUSER32 V1.5
                     HX's PE Loader (DPMILD32) should now run on OpenDOS
                     without errors.
  05/14/2005, V1.14: HDPMI V1.8.5, DPMILD32 V2.8.6, DKRNL32 V2.8.9,
                     HXLdr32 V1.3
  01/08/2005, V1.13: HDPMI V1.8.4, DPMILD32 V2.8.6, DKRNL32 V2.8.8,
                     HXLdr32 V1.3
  12/03/2004, V1.12: HDPMI V1.8.3, DPMILD32 V2.8.6, DKRNL32 V2.8.7,
                     HXLdr32 V1.3, DUSER32 V1.4
  11/25/2004, V1.11: PEStub V1.9, HDPMI V1.8.2, DPMILD32 V2.8.5,
                     DKRNL32 V2.8.6
  10/24/2004, V1.10: PEStub V1.8, HXLdr32 V1.2
                     DPMIST32.BIN added to support ALINK.
  10/10/2004, V1.9:  HDPMI V1.8.0, DPMILD32 V2.8.4, DKRNL32 V2.8.5
                     MinGW GCC, AS and LD run under HX.
                     Free Pascal (Win32 version) runs under HX.
  10/06/2004, V1.8:  DPMILD32 V2.8.3, DKRNL32 V2.8.4 
                     DKRNL32.TXT added.
                     DPMILD32 History added to DPMILD32.TXT.
                     MF Object Cobol apps may run under HX now.
  10/02/2004, V1.7:  HDPMI V1.7.9
  09/30/2004, V1.6:  HDPMI V1.7.8, DKRNL32 V2.8.3
                     Open Watcom BINNT\VI.EXE runs now with HX.
  09/18/2004, V1.5:  HDPMI V1.7.7, DKRNL32 V2.8.2, OLEAUT32 V1.1
                     HX now supports running BCC32.EXE + ILINK32.EXE of
                     free C++ Builder Command Line Tools. MS LINK.EXE now
                     works when creating large libraries. NASMW runs
                     with HX.
  09/13/2004, V1.4:  HDPMI V1.7.6
  09/11/2004, V1.3:  HDPMI V1.7.5, DPMILD32 V2.8.2, DKRNL32 V2.8.1 
                     Tools DPMIRS32.EXE and DPMIRS16.EXE deleted.
  08/31/2004, V1.2:  DKRNL32 V2.8.0
                     DPMILD16.EXE added.
  08/29/2004, V1.1:  DKRNL32 V2.7.9, HXLdr32 V1.1
                     Unsupp\HDPMI32.EXE added (LFN version)
  08/27/2004, V1.0:  HX runtime first version. Consists of the former
                     packages HDPMI and DPMILDXX (partially).

  For details about version changes see the documentation files
  in subdirectory DOC.


  6. Copyright

  The HX DOS extender runtime is freeware and may be used for any purpose.
  Copyright Japheth 1996-2006. The HX runtime can be freely distributed
  with any application.

  Japheth   (Web: http://www.japheth.de, Email: mail@japheth.de)

