Command: himemsx

  HIMEMSX is a fork of HIMEMX. Its main feature is that it's able to
  manage more than 4 GB of memory. The memory beyond the 4 GB limit is
  called "super-extended" in this document.
  To access extended memory below the 4 GB barrier HIMEMSX uses the
  so-called "unreal" mode, like most other XMMs.
  Memory beyond the 4 GB barrier can only be accessed thru special paging
  mechanisms. HIMEMSX uses the PSE-36 variant. PSE stands for Page Size
  Extension, the 36 refers to the original 36 bit address extension
  (64 GB), which was later extended to 40 bit (1 TB).
  The XMS API has to be extended. See XMS35.txt for details.
  In v86 mode, the XMM needs support from the v86-monitor program to
  access extended memory, since it cannot run the privileged code
  required for the memory access. Currently only JEMM386 provides this


  HIMEMXS is a device driver to be loaded in CONFIG.SYS / FDCONFIG.SYS
  Place DEVICE=HIMEMSX.EXE [options] before any driver using XMS!
  Options: /MAX=### /METHOD:xxx /HMAMIN=n /NUMHANDLES=m /V /X2MAX32


  /MAX=###       Limit memory controlled by XMM to ###K.
                 The HMA is not affected by this value, it is always
  /METHOD:xxx    Specifies the method to be used for A20 handling.
    Possible valuses for xxx:
    ALWAYSON     Assume that A20 line is permanently ON
    BIOS         Use BIOS to toggle the A20 line
    FAST         Use port 92h, bypass INT 15h test
    PS2          Use port 92h, bypasse PS/2 test
    KBC          Use the keyboard controller
    PORT92       Use port 92h always
  /HMAMIN=n      Specifies minimum number of Kbs of HMA that a program
                 must request to gain access to the HMA (default: 0Kb)
  /NUMHANDLES=m  Set number of XMS handles (default: 48, min: 8,
                 max: 128).
  /SUPERMAX=###  limit super-extended memory controlled by XMM to ###K.
  /V             Gives extra information.
  /X2MAX32       Limit XMS 2.0 free/avail. memory report to 32M-1K.


  - The maximum amount of memory that the XMS API can handle is 4 TB (42
    physical address lines). However, since HimemSX currently uses 32-bit
    paging with PSE-36 inside its block-move function, the effective
    limit is 1 TB (40 address lines).
  - The 'move extended memory' function 0Bh understands 32-bit offsets
    only. So if a memory block is larger than 4 GB, you can't use this
    function to copy memory beyond a 4 GB offset.
  - if no super-extended memory is found, or the CPU doesn't support
    PSE-36 paging, HimemSX will still load and behave like a v3 XMM.
    However, it searches for extended memory via Int 15h, ax=e820h only,
    without trying to fall back to older detection strategies if this
    call fails.
  For more informations see:


  See links in section Comments above.

See also:


  FD Himem is copyright Till Gerken and Tom Ehlert, with GPL and/or
  Artistic license.

  This file is derived from the FreeDOS Spec Command HOWTO.
  See the file H2Cpying for copying conditions.