Dec 282017
Memory Management tips from Artisoft for Lantastic v6.0.
File 60-MEM.ZIP from The Programmer’s Corner in
Category Network Files
Memory Management tips from Artisoft for Lantastic v6.0.
File Name File Size Zip Size Zip Type
60-MEM.TXT 5942 2377 deflated

Download File 60-MEM.ZIP Here

Contents of the 60-MEM.TXT file

Artisoft Technical Bulletin
Dated: 04.11.94
LANtastic NOS v6.0 and Memory Management
Engineer: MWF

New features in NOS 6.0 include the modular design of the REDIR.EXE
and SERVER.EXE programs. Previous NOS versions would load all
REDIR.EXE and SERVER.EXE code whether that function was enabled or
not. Now it is possible to disable printing, auditing, notification,
etc. in SERVER.EXE and the code needed to support these functions will
not be loaded into memory thus making it possible to have a small
installed SERVER.EXE program. Of course, increasing Network Tasks,
Network Buffers, Cached resources, etc. will increase memory usage.

To accommodate the modular design of loading REDIR and SERVER, a
loading function, called DOSLOAD, was incorporated into these
programs. DOSLOAD can use Upper Memory Blocks (UMBs) to load into,
thus allowing more room for REDIR and SERVER to load.

DOSLOAD Examples:

Example 1: When SERVER is executed, DOSLOAD determines if there are
UMBs available. If a UMB of sufficient size is available (greater than
50K) and SERVER is being loaded low (into a conventional memory
address), DOSLOAD code will load into the UMB and parse the SERVER
command line switches (or NET_MGR settings). If enough memory exists
(in this case, conventional memory) to load this configuration of
SERVER, a check will then be made to see if enough memory exists to
load COMMAND.COM after SERVER is installed. If any memory test fails,
an error message is displayed ("Not enough memory - Reduce files,
tasks, buffer size, ....") and SERVER is not loaded. If all memory
tests pass, then SERVER is loaded into conventional memory
(immediately above the last installed program), DOSLOAD terminates and
unloads, freeing the UMB it was occupying. If a memory check for
loading of COMMAND.COM were not made, and there was not enough memory
available for COMMAND.COM to load, the server would lock and display
"Cannot load COMMAND.COM, System halted" immediately after SERVER
installed (not a good thing in most cases).

Example 2: EMM386.EXE loading SERVER.EXE high: DOSLOAD loads into
conventional memory, reads the command line switches and loads SERVER
into a UMB. Since SERVER is loading outside the conventional memory
address range (greater than 80000h), a check for COMMAND.COM space is
not made. Only the needed portions of SERVER are loaded so the
initialization size is very close to the installed size. Using LH
(LOADHIGH) it is possible to load a 59K (installed) SERVER.EXE into a
59K UMB! After SERVER is installed, DOSLOAD terminates and unloads,
freeing the conventional memory it was using.

Example 3: QEMM386's LOADHI.COM loading SERVER high: QEMM386 defines
regions (available portions of upper memory) where programs can load
and attempts to load programs into a specific region. To do this,
LOADHI.COM "masks" all other memory regions including all conventional
memory (making them appear as used) and "forces" SERVER to load into
the desired region. Since there is no other memory available, DOSLOAD
cannot load into conventional memory or another UMB, so the memory
region must be large enough to hold the DOSLOAD code and the installed
size of SERVER. Plan on 105K minimum. As with EMM386's LOADHIGH, no
check is made for COMMAND.COM space since the address is above 80000h.

SERVER will fail to load if the upper memory region is not large
enough for DOSLOAD and SERVER code. There is no option for SERVER to
load low because there is no conventional memory available (all used

Example 4: SERVER's "/NO_UMB" command line switch: This forces DOSLOAD
code into conventional memory (from the top down). SERVER will then be
installed either low or high, depending on the SERVER command line.

Tips on QEMM386:

1. If the region that SERVER will load into is less than 105K, try
removing the region specifier from the QEMM command line:


LOADHI.COM will not "mask" all other available regions and there
may one region for DOSLOAD to use while it loads SERVER into

2. If a page frame exists (EMS memory is active), try adding the
"/SQUEEZEF" switch to the LOADHI command:


3. This switch "squeezes" the EMS page frame out to increase the
size of an adjacent memory region, making it appear as though the
region is now 60K+ larger. After the program installs and goes
resident, the page frame is restored.

4. Use MS-DOS's (MS-DOS, PC-DOS, IBM-DOS) LH (LOADHIGH) command to
load SERVER into an upper memory region. The UMBs were created by
QEMM386.SYS and LOADHIGH will load SERVER into one of the
available UMBs. Unfortunately, there is no control over which
region the program will be loaded into.

Tips on 386MAX:

386MAX may have a problem with DOSLOAD's usage of UMB's which may
result in "Memory allocation error, Cannot load COMMAND, system
halted" messages accompanied by computer lockups (however, SERVER
continues to function in the background). This has been observed when
loading SERVER low (allowing DOSLOAD to use a UMB) and when removing
REDIR and/or SERVER (this calls DOSLOAD also). Adding the "/NO_UMB"
switch to REDIR and SERVER command lines has been successful:


ARTISOFT, Inc. makes no warranties as to the completeness or accuracy
of this document. LANtastic is a registered trademark of ARTISOFT,
Inc. Company names, brand names, and product names are trademarks or
registered trademarks of their respective companies.

 December 28, 2017  Add comments

Leave a Reply