ID:LM LAN Manager and QEMM-386
Quarterdeck Technical Note #258 Filename: LANMAN.TEC
by Quarterdeck Testing and Compatibility CompuServe: LANMAN.TEC
Last revised: 8/18/92 Category: NW
Subject: Information on the use of Microsoft's LAN Manager networks with
MICROSOFT'S LAN MANAGER AND QEMM-386
LAN Manager is network software from Microsoft. It presents issues with
which the QEMM-386 user must deal. We may deal simply with each of these
LAN MANAGER PROGRAMS AND HOW THEY LOAD
LANMAN typically loads two drivers in the CONFIG.SYS: PROTMAN.DOS and a
hardware-specific network card driver. LANMAN typically loads two programs in
the AUTOEXEC.BAT: NET START WORKSTATION and LOAD NETBEUI.
NET START WORKSTATION
NET START WORKSTATION loads other LANMAN programs ("daughters")
including (but not necessarily): NETWKSTA, MINSES, ENCRYPT, MSRV, and
NETPOPUP. On DOS 5 systems NET START WORKSTATION loads itself and the other
programs it loads high only by using DOS 5's private interface to High RAM
(which Microsoft calls UMBs.) For NET START WORKSTATION to load its daughters
high DOS 5 users must have DOS=UMB (or DOS=HIGH,UMB) in their CONFIG.SYS.
If you use the Stealth feature of QEMM-386 AND DOS 5, when NET START
WORKSTATION loads NETWKSTA you will get an exception #13. NETWKSTA's misuse
of expanded memory causes this problem. To stop NETWKSTA from using EMS add
the parameter "LIM=NO" to the "[Workstation]" section of your LANMAN.INI file.
wrkservices = encrypt,messenger,netpopup
computername = fred
domain = domain
numdgrambuf = 3
lanroot = C:\LANMAN.DOS
You may wish to notify Microsoft about this misuse of EMS so that you can let
NETWKSTA use EMS with Stealth in the future. They can do it: other LANMAN
programs use EMS with Stealth successfully. The Stealth feature of QEMM-386
in no way compromises QEMM-386's support of the EMS specification.
LOAD loads LANMAN's network protocol driver. Most will use NETBEUI; some
may use TCPIP or another network protocol driver. LOAD uses all conventional
memory when it loads. Quarterdeck's LOADHI cannot load it high. It will load
itself high on DOS 5 systems with DOS=UMB (or DOS=HIGH,UMB) in the CONFIG.SYS.
NETBIND and NET LOGON
NETBIND and NET LOGON are not resident programs so you need not load them
high; OPTIMIZE will not try to load them high.
PROTMAN.DOS does a curious thing: It writes some code and data into
memory at about 90K beneath the top of the region into which it loads. Later
LANMAN drivers that use the services of PROTMAN.DOS while they load
are redirected to use the code and data in this area. Apparently its authors
expected it to load into conventional memory. When you load it high you may
well load it into a region not large enough to accommodate this stuff at 90K
beneath the top of memory. For example, if you load it into B000-B7FF 90K
beneath the top of memory is in the video card's graphics space. This causes
the loading of subsequent LANMAN programs that use the services of PROTMAN.DOS
With the advent of version 5 Microsoft's DOS began to load programs high
and LANMAN users would have suffered from the same problem when they loaded
PROTMAN.DOS with DEVICEHIGH. To "cure" this problem Microsoft did not
re-write PROTMAN.DOS to correct this programming mistake but made DOS itself
detect when it loaded a driver with an internal name of PROTMAN$ (a device
driver has an "internal" name stored beginning at its tenth byte) and make Int
12 (the BIOS function that reports the top of memory) report that the top of
memory is at 575K (23F in hexadecimal) instead of the real top-of-memory. You
can find "PROTMAN$" embedded in IO.SYS (or IBMBIO.COM) of DOS 5 (These are
one of the two hidden files that load invisibly when you boot). When you load
a device driver with LOADHI.SYS DOS sees \LOADHI as the device name and does
not change the number Int 12 reports so PROTMAN.DOS may write the code/data it
loads into 90K beneath the top-of-memory into an inappropriate place.
In order to figure out how much memory a program takes to load (often
more than the amount of memory a program takes to remain resident) OPTIMIZE,
in its second step, loads all programs in the CONFIG and AUTOEXEC with LOADHI
/GS. With the /GS parameter LOADHI writes "LOADHISIGNATURE!" all over
conventional memory (beginning on top of the currently available address)
BEFORE it loads its program. Then after LOADHI has loaded its program it can
search beyond the resident portion of the just-loaded program to find where
LOADHISIGNATURE! begins again so it can discover how much memory the program
used to load. Since DOS has no means of allocating memory from the top down
PROTMAN.DOS has no means of reserving the address space into which it has
loaded its code/data at 90K beneath the top-of-memory. The first LOADHI/GS
after PROTMAN.DOS loads wipes out this code/data. When a subsequent LANMAN
program (like NETBIND) that uses the services of PROTMAN.DOS loads,
PROTMAN.DOS does not find this code/data in place and the loading of the
network programs fails.
USING OPTIMIZE WITH LANMAN
As discussed in the PROTMAN.DOS section above you must resort to a
"trick" to use OPTIMIZE with LANMAN. The trick is to make PROTMAN.DOS load
high into a sufficiently large region during the second step of OPTIMIZE and
load low in the third step.
1) Place the RAM parameter on QEMM-386 or QEMM-50/60 or install QRAM in
the CONFIG.SYS file. Reboot and make sure that the biggest High RAM
region (as reported on Manifest's First Meg/Overview screen) is at least
96K in size.
If you do not have a High RAM region at least 96K big you cannot run
OPTIMIZE with PROTMAN and you should not proceed to step 2. Instead you
must manually place LOADHI.SYS and LOADHI.COM on every line in the
CONFIG.SYS and AUTOEXEC.BAT file that contains a program that you want to
load high. (See the LOADHI chapter in your QEMM-386, QEMM-50/60, or QRAM
manual for more details.) Do not, however, place LOADHI on the PROTMAN
line. Then reboot without running OPTIMIZE. This configuration should
let you successfully load most of your programs high.
2) If you have any programs that allocate Upper Memory Blocks (UMBs)
through the Extended Memory Specification you must stop them from doing
so (by using the programs' own parameters) before proceeding further.
Such programs can interfere with OPTIMIZE's calculations under any
circumstances; with the procedure that we are about to use a program that
allocates a UMB may overwrite the code/data that PROTMAN.DOS writes into
90K below top-of-memory. Although this is a temporary precaution for
running OPTIMIZE with PROTMAN it is a good practice generally because
LOADHI can load a program into a specific region, allowing OPTIMIZE to
configure the programs loaded into High RAM in the most efficient manner.
If you desire you can revert to letting programs load themselves high
after the completion of OPTIMIZE.
3) If your biggest High RAM region is 96K or larger start OPTIMIZE. Let
OPTIMIZE modify your CONFIG.SYS and AUTOEXEC.BAT files in preparation for
the Detection Phase. When you see the OPTIMIZE screen titled "DETECTION
PHASE," (before the first re-boot) hit Esc, then F1, to break out of
4) Use an editor to edit the PROTMAN line in the CONFIG.SYS file. Remove
all the parameters to LOADHI.SYS on that line. (There should be two: a
/GS 3parameter that directs the /GETSIZE data to LOADHI.OPT, and a LABEL
parameter.) Leave LOADHI.SYS and all PROTMAN's parameters on the line;
leave all the other lines alone.
For example if the PROTMAN line in the CONFIG.SYS says:
DEVICE=C:\QEMM\LOADHI.SYS /GS:C:\QEMM\LOADHI.OPT /LABEL:AB
(the above is all one line in the CONFIG.SYS) then change the line to:
DEVICE=C:\QEMM\LOADHI.SYS C:\LANMAN\PROTMAN.DOS /I:C:\LANMAN\PROTOCOL.INI
5) Reboot and let OPTIMIZE complete normally.
When you're all done, PROTMAN will be loaded low, but it only uses
100 bytes or so (the newer PROTMAN may use about 6K). All other programs
will be OPTIMIZEd.
Because LANMAN 2.1's NET START WORKSTATION and LOAD NETBEUI load their
daughters high only by means of a private interface to the UMBs created by DOS
5, DOS 5 users must have "DOS=UMB" in their CONFIG.SYS (or, if you already
have "DOS=HIGH", change it to "DOS=HIGH,UMB".)
Because NETWKSTA uses EMS incorrectly you must add the line "LIM=NO" IF
you use DOS 5 AND the Stealth feature of QEMM-386.
Because of PROTMAN.DOS's unusual behavior you must observe the
precautions described in the above section "USING OPTIMIZE WITH LANMAN".
* Trademarks are property of their respective owners. *
*This technical note may be copied and distributed freely as long as it*
*is distributed in its entirety and it is not distributed for profit. *
* Copyright (C) 1992 by Quarterdeck Office Systems *
************************ E N D O F F I L E *************************