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
support.
Syntax:
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
/SUPERMAX=###
Options:
/MAX=### Limit memory controlled by XMM to ###K.
The HMA is not affected by this value, it is always
included.
/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.
Comments:
Restrictions:
- 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:
https://github.com/Baron-von-Riedesel/HimemSX/blob/master/Readme.txt
OR:
https://gitlab.com/FreeDOS/drivers/himemsx/-/tree/main/DOC/HIMEMSX
Examples:
See links in section Comments above.
See also:
config.sys/fdconfig.sys
devload
(fdxms)
(fdxms286)
himemx
jemm386
jemmex
xmgr
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.