Moved from bugzilla item 1775 to here:
*Bernd Blaauw* 2004-04-20
I'd like to see FreeCOM always attempt to load into UMBs (just after attempting to load into XMS, for the XMS-aware version).
*SHELLHIGH is an unknown command on Win98 (don't know if msdos.sys has a setting that will also work for 3rd-party shells like FreeCOM).
*spawned shell (by EDIT, or DOSSHELL for example) never loaded into UMBs.
following situation creates a setting where FreeCOM can load into UMB but not enough XMS is present:
DEVICE=A:\DRIVER\EMM386.EXE NOEMS I=B000-B7FF I=C800-EBFF
SHELL=A:\COMMAND.COM A:\ /E:1024 /D /P
especially FreeDOS EDIT v0.8 uses huge amounts of memory, and if not enough XMS is free for FreeCOM, then
KERNEL + FREECOM + EDIT + FREECOM means 77 + 127 + 198 + 127 KB used memory, leaving only 121KB free.
Changed to "enhancement" / P3.
I think using SHELLHIGH is the better / more transparent way to select loading the shell into UMB. Downside of this is that you need a big UMB for SHELLHIGH because all of FreeCOM has to fit in there during init. A self-loadhigh feature could only move the small resident part (< 10k) of into UMB, at least in the FreeCOM version with XMS swapping. Note that it is a rare situation to have big UMB but no XMS free!
Problem with this is probably that FreeCOM is more than 64k in size ACTUALLY / during init. Only after that it can swap out all except 3 kilobytes of itself to XMS while other programs are running. I suggest to put only those 3 kilobytes into UMB space while leaving the biggest part of FreeCOM in low memory while in use and in XMS while not.