Command: xmgr.sys

  XMGR.SYS is a DOS driver that works as an XMS memory manager.
  XMGR.SYS has to be loaded in CONFIG.SYS / FDCONFIG.SYS.

Syntax:

  DEVICE [HIGH] = [path] XMGR.SYS [/B] [/Mn] [/Nnn] [/PA] [/Tn] [/W] [/Z]

Options:

  XMGR.SYS usually needs only its /B switch if "booting" with
  JEMM386. XMGR.SYS switch options are as follows:
  /B    Specifies "boot" mode. XMGR.SYS loads in temporary memory
        until upper-memory is enabled by EMM386. Without /B,
        XMGR.SYS will load stand-alone in low memory or directly
        in upper-memory with UMBPCI.
  /Mn   Specifies the temporary area used to load XMGR.SYS in
        "boot" mode and used for UMBPCI upper memory I/O before
        DOS can post a "workspace" buffer. Values are:
          /M1 = 64K.    /M3 = 192K.   /M5 = 320K.   /M7 = 448K.
          /M2 = 128K.   /M4 = 256K.   /M6 = 384K.   /M8 = 512K.
        Without /M, /M5 is assumed and the 320K area will be used.
        NOTE: A DOS system often may NOT load at address 0 up and
        may leave temporary data anywhere in memory! /Mn changes
        the temporary area to find a "safe" place for XMGR.SYS
        to use. /M is ignored if XMGR.SYS loads stand-alone.
  /Nnn  Specifies how many XMS "Handles" can be used by DOS programs.
        The value nn may be 48, 80, or 128. If /N is omitted, 48
        "Handles" are used and work fine for most systems. A big
        system doing much XMS work may need 80 or 128 "Handles".
  /PA    Specifies use or non-use of PS/2 Port 92h logic to handle the
  /PN    system's "A20" line. /PA indicates "Always" use Port 92h
         logic. /PN indicates "Never" use it and handle "A20" via
         normal keyboard-port logic. If /P is omitted, XMGR "asks
         the BIOS" if the system has Port 92h logic. If not, XMGR
         will use normal "A20" logic. NOTE: If "A20" was enabled
         by DOS before XMGR loads, XMGR does not handle it at all!
  /Tn   Specifies the BIOS requests to use in getting extended memory
        as follows:
          /T0  Neither "E820h" nor "E801h" requests.
          /T1  Memory-list requests only (Int 15h, AX=E820h).
          /T2  A dual-area request only (Int 15h, AX=E801h).
          /T3  "E820h" requests first, then an "E801h" request.
          /T   can usually be omitted, which causes /T3 to be assumed.
        In addition, XMGR.SYS always uses an old 64-MB request, to get
        extended memory for /T0, or if the requests specified with
        /T1 through /T3 are unsuccessful. Users may need to test
        /T1 and /T2 separately, to see if their BIOS accepts them.
        A pre-1994 BIOS may not "ignore" /T1 through /T3 properly and
        may require /T0 to be used. For compatibility with older
        QHIMEM drivers, /T4 through /T7 may be used and work the same
        as /T0 through /T3.
  /W    Specifies use of the DOS "workspace" buffer, for upper-memory
        I/O if loading with UMBPCI. If /W is omitted, or if the
        DOS system does not have proper workspace logic, XMGR.SYS
        will set its own buffer in low memory. An EDR-DOS system must
        OMIT this switch! Without UMBPCI, /W will be ignored.
  /Z    For XMGR or UIDE only, limits their XMS moves to a maximum 2K
        bytes in protected-mode, not 64K. /Z is ignored by real-mode
        systems (UMBPCI etc.) and is not needed if JEMM386 or EMM386
        handle protected-mode. Systems using other VCPI/DPMI/EMM
        drivers must be TESTED, to see if /Z is needed by XMGR or UIDE
        -- BAD schemes allowing NOT enough interrupts in an XMS move
        may still exist! UIDE's old /N4 switch is the same as /Z and
        can still be given. UIDEJR ignores /Z or /N4 and always
        issues standard XMS calls.
  For each switch, a dash may replace the slash, and lower-case letters
  may be used.

Comments:

  XMGR.SYS is a DOS driver that works as an XMS memory manager. It
  supports V3.70+ UMBPCI by Uwe Sieber. After UMBPCI enables upper-
  memory, XMGR.SYS can load there directly and provide both upper and
  XMS memory for a DOS system. XMGR.SYS uses an "I/O catcher" with
  UMBPCI, to intercept diskette or hard disk I/O above 640K. Such I/O
  is done through a low memory area, to avoid DMA trouble in UMBPCI
  "Shadow RAM". XMGR.SYS also supports V4.49 and V4.95 EMM386 (MS-DOS
  V6.22 or V7.10). With JEMM386, XMGR.SYS using its /B switch can first
  "boot" into temporary space. After JEMM386 enables upper-memory,
  XMGR.SYS loads there with no /B switch, copies all its "boot" data,
  and takes-over XMS work. Only its XMS "Handles" table stays in low
  memory, so EMM386 can always find them at fixed addresses. For a
  small XMS-only system, XMGR.SYS can also load entirely in low memory.
  For more information read "README.txt" in drivers.zip.

Examples:

  In CONFIG.SYS / FDCONFIG.SYS:
    SHELL=C:\DOS\COMMAND.COM C:\DOS /E:512 /P
    DEVICE=C:\BIN\UMBPCI.SYS
    DEVICE=C:\BIN\XMGR.SYS /W
    DOS=HIGH,UMB
    DEVICE=C:\BIN\JEMM386.EXE I=B000-B7FF X=C800-EFFF NOEMS  ;Optional
    DEVICEHIGH=C:\BIN\UIDE.SYS /S500 /D:CDROM1               ;Or UIDEJR
    DEVICEHIGH=C:\BIN\RDISK.COM /S250                        ;Optional
        ..
        ..  Etc.
        ..

See also:

 (atapicdd.sys)
  autoexec.bat
  config.sys
  devload
 (emm386)
  fdconfig.sys
 (fdxms)
 (fdxms286)
 (gcdrom.sys)
 (himem)
  himemx
  jemm386
  jemmex
 (mscdex)
  shsucdx
 (udvd.sys)
  uide.sys
 (xcdrom.sys)

  Copyright © 2007 Jack Ellis, updated 2011 by W. Spiegl.

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