home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / MEMORIA / 3COMEMM.ZIP / 3COMEMM.TXT
Encoding:
Text File  |  1990-03-15  |  40.9 KB  |  736 lines

  1.                          Using 3ComEMM Effectively
  2.                          =========================
  3.  
  4. Beginning with the release of 3+Share version 1.3.1, 3Com has provided an
  5. 80386 memory management program called 3ComEMM with 3+Share.  Current
  6. versions of 3+Share and 3+Open are provided with 3ComEMM.  Current
  7. licensing provides for the use of 3ComEMM on 80386-based 3+Share PC servers
  8. and 3+Open 80386-based DOS netstations.  3ComEMM requires an 80386 CPU and
  9. therefore will not function on a machine based on an 80286 or 8086/8088
  10. processor.
  11.  
  12. This article provides information on the following five areas:
  13.  
  14.        * An overview of the Intel 80x86 processor family and its evolution
  15.        * A description of 80386 memory management
  16.        * An overview of 3ComEMM
  17.        * The use of 3ComEMM on a 3+Share server
  18.        * The use of 3ComEMM on a 3+Open DOS netstation
  19.  
  20. The Intel 80x86 Processor Family
  21. ================================
  22.  
  23. There are three modes of operation in Intel's 80x86 family of processors: 
  24. real mode, protected mode, and virtual mode.  Each addition to the family
  25. included the addition of a new mode.  The 8086/8088 started with only one
  26. mode, or as it later came to be called with the release of the 80286, real
  27. mode.  In this mode, the processor can address one megabyte of physical 
  28. memory.  When Microsoft wrote MS-DOS, they dedicated the first 640 KB of 
  29. this to user memory, known as conventional memory, and the top 384 KB from 
  30. 640 KB - 1 MB as system memory for ROMs, address space for adapter cards, 
  31. etc.  Hence the '640 KB barrier' of DOS.
  32.  
  33. With the protected mode introduced with the 80286, the processor can
  34. address up to 16 MB of physical memory.  Memory above one MB is called
  35. extended memory, not to be confused with expanded memory covered later. 
  36. Unfortunately, programs written in real mode cannot run in protected mode
  37. or access extended memory.  Therefore, most programs just use the 80286 as
  38. a fast 8086 and run in real mode with the same 1 MB limitation of the 8086
  39. processor.  Although OS/2 is designed for the protected mode of the 80286,
  40. it is a very new operating system and DOS is still the dominant operating
  41. system used on IBM and compatible PCs today.  Something is needed,
  42. therefore, to work around the 640 KB barrier with the additions of networks
  43. and larger application programs to today's office environment.  Programs
  44. such as VDISK and disk caches can use extended memory, but the use of
  45. extended memory is very limited and can reduce system performance.
  46.  
  47. The original solution to the 640 KB barrier was the Lotus/Intel/Microsoft
  48. (LIM) Expanded Memory Specification (EMS) version 3.2.  This is a hardware
  49. implementation of memory bank switching where a 64 KB page frame is placed
  50. in 'high memory' between 640 KB and 1 MB, and EMS memory is swapped in and
  51. out of that area from the EMS board.  The driver that manages this is
  52. called an Expanded Memory Manager (EMM), and one of 3ComEMM's primary
  53. functions is to act as an EMM to provide EMS.  The original EMS 3.2
  54. specification was used strictly for data storage with programs such as
  55. Lotus 1-2-3.  The specification was then enhanced into the
  56. AST/Quadram/Quarterdeck Enhanced Expanded Memory Specification (EEMS) to
  57. allow storage of program code for multitasking.  The EEMS specification was
  58. then enhanced and expanded into the current LIM EMS 4.0 specification. 
  59. Both new specifications require additional hardware support above and
  60. beyond that required with EMS 3.2.  The 4.0 specification no longer uses
  61. bank switching but uses hardware registers to point the 64 KB page frame to
  62. a location on the EMS board, much the same way 3ComEMM accomplishes this
  63. through emulation.
  64.  
  65. With the release of the 80386, Intel added a new mode called virtual mode
  66. while still supporting the previous real and protected modes.  The result
  67. is a new level of functionality for memory management although the 80386
  68. remains completely binary-compatible with the earlier members of the 80x86
  69. family in real and protected modes.
  70.  
  71. Intel recently released a new member of the 80x86 family, the 80486,
  72. officially called the i486.  This chip combines the functions of the 80386,
  73. 80387, and 82385 processors and 8 KB of cache memory, but remains
  74. completely compatible with the 80386 and earlier processors.  The 80486, in
  75. fact, provides no new operating modes as with earlier processors, but adds
  76. the functionality of the math coprocessor and cache controller and
  77. streamlines many instructions for faster operation.  Because operation of
  78. the 80486 is no different from the 80386, the term 80386 is used throughout
  79. this article.  All discussion, however, applies equally well to either
  80. processor.
  81.  
  82. 80386 Memory Management
  83. =======================
  84.  
  85. The virtual mode adds memory management capabilities to the system that
  86. allow 3ComEMM to provide two major capabilities to the operation of 3Com
  87. software.  For 3+Share, 3ComEMM converts extended memory to expanded
  88. memory.  This is used by TurboShare on PC Servers for CIOSYS buffers. 
  89. 3ComEMM also allows certain services to be loaded into the unused area
  90. between 640 KB and 1 MB.  For 3+Open, 3ComEMM can use the unused area
  91. between 640 KB and 1 MB to allow network software to be moved from user
  92. memory to high memory and therefore reduce the RAM required for the network
  93. software on 3+Open DOS netstations.
  94.  
  95. The method the 386 uses to manage memory, called paging, makes these two
  96. functions, among others, possible.  The 80386 keeps two internal tables,
  97. called descriptor tables, to keep track of memory.  In real mode, these
  98. tables are not used, and therefore, the capabilities of the 80386 are not
  99. being fully utilized.  In virtual mode, however, paging is enabled, and the
  100. use of descriptor tables becomes vital.
  101.  
  102. The descriptor tables provide mapping between logical addresses and actual
  103. physical addresses.  In virtual mode the logical table points to the actual
  104. physical address at which the memory resides.  DOS always goes to the
  105. logical table to find memory.  If the 386 has been told by a 386 control
  106. program such as 3ComEMM, however, that a logical address actually points to
  107. a different physical address, the 386 automatically provides the memory at
  108. that location, and DOS is totally oblivious to the fact.
  109.  
  110. This capability allows an 80386 memory manager such as 3ComEMM make use of
  111. the unused memory between 640 KB and 1 MB.  Those unused areas, however,
  112. contain no physical memory whatsoever.  The memory manager makes the
  113. logical table for locations C600-DFFF, for example, point to actual
  114. physical addresses above the 1 MB mark in extended memory.  Then when DOS
  115. goes to access a program that is loaded into that area, it thinks it is
  116. actually accessing address C600.  The 80386 transparently translates the
  117. addresses to those in extended memory by table lookup to find where the
  118. code actually resides.
  119.  
  120. The same capability allows an 80386 memory manager to convert the extended
  121. (or 80286) memory to expanded (or paged) memory.  This provides the same 64
  122. KB page frame as hardware implementations do, typically at address E000. 
  123. Instead of that 64 KB actually being physical memory at that location, the
  124. memory manager uses the descriptor tables and points that 64 KB to a
  125. location in extended memory.  When a call is made to the EMM driver, which
  126. in this case is a software and not a hardware driver, instead of using
  127. hardware registers to point to memory on an EMS board, the manager changes
  128. the pointers in the logical descriptor table to point to a new address in
  129. extended memory.  Therefore no physical memory is moved; only pointers are
  130. changed.
  131.  
  132. An Overview of 3ComEMM
  133. ======================
  134.  
  135. 3ComEMM is an 80386 memory manager that can perform the above two
  136. functions, among others.  It is licensed only for use and will only operate
  137. on 3+Share servers with 3+Share versions 1.3.1 and 1.5 and on 3+Open DOS
  138. netstations.  If you want similar capabilities on other platforms,
  139. Qualitas, Inc. of Bethesda, Maryland offers software with similar
  140. functionality for use on almost any 80386 based personal computer.
  141.  
  142. There are many files provided with 3ComEMM.  There are two pairs of
  143. programs that make up the major part of 3ComEMM, and there are some
  144. miscellaneous drivers provided to fix certain problems with different
  145. hardware configurations.  In most cases, these drivers will not be used,
  146. but they are documented here for the sake of clarity.
  147.  
  148. The base programs, 3COMEMM.SYS and 3COMEMM.COM, are used both for 3+Share
  149. servers and 3+Open DOS netstations.  3COMEMM.SYS is the 386 control program
  150. containing all of the functionality of 3ComEMM.  3COMEMM.COM is an
  151. executable program used to load services into high memory for 3+Share and
  152. get status from the control program for both environments.
  153.  
  154. The other major pair of programs is 3COMLOAD.SYS and 3COMLOAD.COM.  These
  155. programs allow you to load 3+Open DOS netstation drivers into the memory
  156. between 640 KB and 1 MB.  They are provided for and will only function with
  157. 3+Open DOS netstations.
  158.  
  159. Distributed with 3+Open are README files and specific hardware drivers that
  160. are required in some situations.  If you need them for a 3+Share server,
  161. contact 3Com Technical Support.
  162.  
  163. On IBM PS/2s and newer Compaq 386 systems, there resides a 1 KB block of
  164. ROM at 639 KB.  This prevents proper EMS mapping and low memory
  165. backfilling.  The XBIOS.SYS driver is used to move this 1 KB of ROM to low
  166. memory to allow proper mapping and backfilling.
  167.  
  168. The Ultimate EGA Adapter also puts a 1 KB ROM at the top of conventional
  169. memory.  The ULTIMATE.SYS driver moves this ROM to a more acceptable
  170. location.
  171.  
  172. The OMTI 8620 hard drive controller needs a ROM moved as well.  The driver
  173. OMTIFIX.SYS does this.
  174.  
  175. 3ComEMM manages all the memory in your system.  No other memory managers
  176. may be present in your system when 3ComEMM is used.  This includes other
  177. 80386 control programs and EMM drivers for actual EMS boards.  If you have
  178. an EMS board in your system, reconfigure it for extended instead of
  179. expanded memory.  3ComEMM needs to manage extended memory and true expanded
  180. memory goes unused.
  181.  
  182. When the device driver loads, you can have 3ComEMM do many things such as
  183. convert all, some, or no extended memory to expanded, have it cache the
  184. ROMs into RAM, automatically backfill DOS memory on monochrome or CGA
  185. systems, manually backfill DOS memory on EGA/VGA systems, recover unused
  186. memory on many systems, and leave specific areas of memory alone.
  187.  
  188. You must consider several factors when 3ComEMM is used on either a 3+Share
  189. PC server or a 3+Open DOS netstation.  For example, all ESDI and many RLL
  190. hard drive controllers have an extra ROM that is placed in high memory
  191. between 640 KB and 1 MB that 3ComEMM often cannot recognize.  If you do not
  192. tell 3ComEMM that the ROM there it will interfere with the operation of
  193. 3ComEMM.
  194.  
  195. Not all controllers, however, use the same address space.  So it is up to
  196. the person installing the system to determine the address that the ROM will
  197. use.  Many controller manufacturers document this in the controller's
  198. manual, and if the information is not there, you must contact the
  199. manufacturer.  Once the address range is determined, 3ComEMM must be set up
  200. to recognize it.
  201.  
  202. The way to do this is to use the RAM= parameter of 3COMEMM.SYS.  If, for
  203. example, the address of the ROM is C800-CBFF, the statement in CONFIG.SYS
  204. would look like:
  205.  
  206.                    DEVICE=3COMEMM.SYS RAM=C800-CBFF
  207.  
  208. The RAM= parameter means that there is something at that address, whether a
  209. ROM as in this case or actual RAM as described below, that 3ComEMM should
  210. leave entirely alone.
  211.  
  212. SCSI is an alternative to ESDI and is becoming quite popular.  3ComEMM is
  213. incompatible with many SCSI drives because either the SCSI controller's
  214. ROMs or device drivers cannot operate in virtual mode.  The SCSI controller
  215. manufacturer must provide a ROM or device driver update if this is the
  216. case.  If you have a SCSI adapter that works with 3ComEMM in virtual mode,
  217. the information on ESDI ROMs will apply because SCSI drives will have a
  218. similar additional ROM as well.
  219.  
  220. The same principle applies to other boards that use areas of high memory,
  221. for example, the 3Com EtherLink II Ethernet adapter.  If set for shared
  222. memory mode, this board uses a 16 KB block of memory at one of four areas
  223. of high memory.  If the EtherLink II is set to use address DC00 by jumper,
  224. CONFIG.SYS looks like this:
  225.  
  226.                    DEVICE=3COMEMM.SYS RAM=DC00-DFFF
  227.  
  228. If you are having problems getting 3ComEMM to operate, a good way to
  229. determine if there is something in high memory that conflicts with 3ComEMM
  230. is to use the NOHIGH parameter in CONFIG.SYS.  This tells 3ComEMM not to
  231. use high memory at all, and other 3Com software will not be loaded high. 
  232. If this works, it is a good indication that there is a conflict in high
  233. memory.
  234.  
  235. 3ComEMM can also recover some or all of the missing 384 KB of the first
  236. megabyte of memory on many systems.  On most 1 MB systems, the manufacturer
  237. will only give you access to 640 KB and reserve the other 384 KB whether it
  238. is used or not.  Many systems use some of this memory, but 3ComEMM can
  239. almost always do this more efficiently and give you more memory for other
  240. uses.  To make use of this functionality, you must allow 3ComEMM to remap
  241. ROMs into RAM.  ROM caching is enabled by default and disabled by NOROM. 
  242. Therefore, if the installation program puts the parameter NOROM on the
  243. 3COMEMM.SYS command line you must remove it.
  244.  
  245. 3ComEMM automatically recognizes many of the systems it can recover memory
  246. from.  These include AST, AT&T, Compaq, Hewlett Packard, and IBM.  On other
  247. systems a parameter is needed in CONFIG.SYS.
  248.  
  249. There are generally two methods manufacturers use to place the memory.  The
  250. first type of system uses the TOP384 parameter in CONFIG.SYS.  In this
  251. method, the 384 KB is put at the top of physical memory, at the top of 16
  252. MB.  In these systems, including those based on the Micronics system board,
  253. 3ComEMM can recover all 384 KB.
  254.  
  255. The other method maps the 384 into the physical address at 640 KB to 1 MB. 
  256. In this case use the SHADOWRAM parameter in CONFIG.SYS.  Since physical RAM
  257. addresses cannot overlap, only some of the 384 KB on these systems is
  258. recoverable;  the actual amount depends on the individual system.  Systems
  259. that use this method are those based on the Chips and Technology chip set
  260. including NEC, Samsung, and Tandy.
  261.  
  262. The best way to determine if your system is one that 3ComEMM can recover
  263. memory on is to try each of the two parameters individually.  To then see
  264. if shadow RAM was recovered, execute the 3COMEMM.COM program.  After the
  265. amount of 'Total extended memory', will be a statement of shadow RAM
  266. recovered.
  267.  
  268. The following is sample output from the 3COMEMM.COM when either no
  269. parameter or the LIST parameter is used.  Notice that when shadow RAM is
  270. recovered, it is shown toward the bottom of the output.  Other helpful
  271. information displayed includes what areas of ROM are being remapped, the
  272. total amount of extended and expanded memory, the amount of added low DOS
  273. memory, and the total and available amounts of high DOS memory.  To find
  274. out specifically what regions of high DOS memory are being used and are
  275. free, use the 3COMEMM MAPMEM command described in the section on 3+Open DOS
  276. netstations.
  277.  
  278. 3COMEMM  -- Version 4.05 -- A Memory Manager for 386 Systems
  279.    (C) Copyright 1987-9 Qualitas, Inc.  All rights reserved.
  280. ╒═ 3Com DOS Maximizer/386 ═══ Version 4.05 ═════════ Memory Usage ═╕
  281. │┌───────────── The First Megabyte of Address Space ──────────────┐│
  282. ││████████████████████████████████████████≈≈≈≈▒▒≈≈■■▒▒▒▒▒▒░░░░■■■■││
  283. │└┼─Conventional memory───────────────────┼EGA┼H┼E┼┼High──┼EMS┼ROM┘│
  284. │                                                                  │
  285. │ New top of DOS memory     =   640 KB        █ DOS        ≈ Video │
  286. │ Added low  DOS memory     =     0 KB        ▓ Low        ■ ROM   │
  287. │ Added high DOS memory     =   136 KB        ▒ High               │
  288. │ Available extended memory =    68 KB        Φ Other      # Unused│
  289. │ Available expanded memory =  5072 KB in segment E000     ░ EMS   │
  290. ╘══════════════════════════════════════════════════════════════════╛
  291. Extended memory usage...
  292.   ROM mapping region    =    88 KB, C000-C600, F000-10000
  293.   Program storage       =   140 KB
  294.   EMS memory            =  5072 KB
  295.   Remaining ext memory  =    68 KB
  296.   High DOS memory       =   136 KB, B000-B800, C600-E000
  297.   Low  DOS memory       =     0 KB
  298. Total extended memory   =  5504 KB, shadow RAM recovered =  384 KB
  299. Total expanded memory   =  5648 KB, in use =  592 KB, available = 5056 KB
  300. ══> Loading programs in LOW memory...
  301. ══>  56 KB available in HIGH memory, largest block is  42 KB.
  302. The current state is ON.
  303.  
  304. 3ComEMM with 3+Share PC Servers
  305. ===============================
  306.  
  307. 3ComEMM allows 80386 based PC servers to use TurboShare to put CIOSYS
  308. buffers into expanded memory without a dedicated expanded memory board.  It
  309. also lets you take certain services, depending on available high memory,
  310. out of low DOS memory and move them into high DOS memory, therefore
  311. conserving valuable low DOS RAM.
  312.  
  313. The area from the top of DOS memory at A000 (640 KB) to C000 is reserved
  314. for video memory.  Not all of this address space is used at all times,
  315. however, and can, in many instances, be recovered by 3ComEMM and added to
  316. low DOS memory, thereby increasing the amount of low DOS memory above 640
  317. KB.
  318.  
  319. CGA systems only use the video area at B800-C000, and 3ComEMM can,
  320. therefore, recover the most amount of memory.  On CGA systems, 96 KB is
  321. recovered from A000-B7FF giving you 736 KB of DOS memory.  Running CHKDSK
  322. will show 736 KB of total memory.  Monochrome systems use memory at B000-
  323. B800, and the memory at A000-B000 can be recovered giving DOS 704 KB.  This
  324. happens automatically if you have either of these types of video.
  325.  
  326. EGA and VGA systems are slightly different, however.  They use the same
  327. text area as CGA at B800-C000.  They also reserve the area at A000-B000 for
  328. high resolution graphics, leaving B000-B800 unused.  Unfortunately, this
  329. does not allow 3ComEMM to backfill DOS memory because DOS memory must be
  330. contiguous.  Since graphics will obviously not be used on a server, the
  331. area at A000-B800 can be recovered as with a CGA system.
  332.  
  333. The VIDMEM= parameter in CONFIG.SYS controls backfilling low DOS memory
  334. below video memory.  With this parameter, you tell 3ComEMM what range of
  335. memory to reserve as video memory and allow 3ComEMM to backfill below it.
  336.  
  337. On an EGA/VGA system, use the parameter VIDMEM=B800-C000.  This tells
  338. 3ComEMM to reserve only the CGA area as video memory.  3ComEMM then
  339. recovers the 96 KB from A000-B800 for a total of 736 KB of DOS memory.
  340.  
  341. 3ComEMM's USE= parameter (which would normally be used with 3+Open DOS
  342. netstations) is very similar to VIDMEM=, but does not allow backfilling of
  343. low DOS memory.  If you were to use the parameter USE=A000-B7FF instead of
  344. VIDMEM=B800-C000 in the previous example, 3ComEMM would designate the area
  345. at A000-B7FF as high memory instead of adding it to low DOS memory.
  346.  
  347. The next RAM recovery method is to allow certain services to load into the
  348. high DOS memory that 3ComEMM provides.  The key is to configure your system
  349. to give you the largest contiguous block of memory available between the
  350. end of video memory and the beginning of the system ROM.  There are no
  351. specific system configurations here because of the wide variety of
  352. available configurations; instead, general guidelines and standard
  353. locations are described.  The one exception will be the IBM PS/2 Model 80
  354. because it requires a very specific configuration.
  355.  
  356. The layout of most systems is as follows:
  357.  
  358.                    0000-9FFFH      Conventional memory (0-640K)
  359.                    A000-AFFFH      EGA/VGA graphics area
  360.                    B000-B7FFH      Monochrome video
  361.                    B800-BFFFH      CGA Text/low res. graphics
  362.                    C000-EFFFH      Dependent on system
  363.                    F000-FFFFH      System ROM
  364.  
  365. The unused area between C000-EFFF is used as high DOS memory.   There is
  366. 192 KB between C000 and F000, but, unfortunately, there are things that
  367. reside in this area that decrease the amount of high DOS memory that
  368. 3ComEMM can provide.
  369.  
  370. The first is the EMS page frame.  As stated earlier, to use EMS memory you
  371. must have a 64 KB page frame located between 640 KB and 1 MB.  3ComEMM,
  372. therefore, allocates 64 KB of memory for this purpose.  If there is not
  373. enough contiguous memory to provide 64 KB for a page frame, 3ComEMM will
  374. allocate the page frame in conventional memory, therefore decreasing the
  375. 640 KB (or more, depending on video) available.  It is generally put at
  376. E000-EFFF, decreasing available high memory to 128 KB.
  377.  
  378. If the system has a monochrome video adapter, there will be no additional
  379. video ROM.  If, however, you are using any other type of video board, there
  380. will be an additional video ROM residing at C000.  This usually extends to
  381. C600 or C800, and high resolution boards can require even more.  A high
  382. resolution video board should not be wasted in a file server anyway, so,
  383. for the purpose of this article the assumption is that the video ROM
  384. extends from C000-C600.  Note that this is dependent on the brand of video
  385. board used.  This takes 24 KB more away from high memory, leaving 104 KB in
  386. this example.
  387.  
  388. Many high performance file servers use a large, fast hard drive.  This
  389. means, most likely, an ESDI drive.  As stated above ESDI drives have an
  390. additional ROM that is put into high memory.  Many controllers let you
  391. choose from two or more locations for this ROM while some offer no choices. 
  392. Since, to be useful, high DOS memory must be contiguous, it is extremely
  393. important where this ROM will be placed if there is a choice of locations.
  394.  
  395. If the ROM is put in the middle of this memory, it splits the memory into
  396. two small regions that are unusable to load services into.  It is therefore
  397. important to put the ROM as close to the top or bottom of this area of C600
  398. to DFFF (in this example) as possible.
  399.  
  400. If, for example, the controller gives you a choice of putting the ROM at
  401. C800 or CC00, it would be a much better choice to select C800.  If you
  402. select CC00, there will be a small block of memory between C600 and CC00,
  403. and another above the ROM.  Selecting the C800 address, however, leaves a
  404. larger block of memory above the ROM.
  405.  
  406. If the ROM is 16 KB, then, the ROM resides at C800-CC00, leaving the area
  407. between CC00 and DFFF free for use as high DOS memory.  This leaves 80 KB
  408. of high memory.  The programs that can be loaded high are CIOSYS and
  409. Locator, so the 80 KB might be enough for CIOSYS, but certainly not both,
  410. and possibly not even for CIOSYS, depending on how it is configured. 
  411. Without an ESDI drive, you might have as much as 104-128 KB available.  The
  412. shared memory mode of the EtherLink II will also use memory in this area
  413. and therefore decrease available high DOS memory.
  414.  
  415. The indicator that tells 3PLUS_ON.BAT to attempt to load these services
  416. high are files located in the directory C:\3PLUS\3CONFIG\SWITCHES.  In this
  417. directory there will be CIOSYS.HI for CIOSYS and LOCATOR.HI for the
  418. Locator.  If both services cannot fit into high memory, you can rename one
  419. or both of these files and 3PLUS_ON.BAT will not attempt to load the
  420. appropriate service(s) into high memory.
  421.  
  422. A typical error message that occurs as CIOSYS is loading is 'No room for
  423. buffers'.  This generally occurs if you either overuse high DOS memory or
  424. have an unidentified ROM or RAM area.  If this message appears, determine
  425. if high DOS memory is being overused.  If you are not overusing high
  426. memory, there is probably something in high memory that is not being
  427. identified.
  428.  
  429. The addresses and numbers discussed above are only examples, and will not
  430. necessarily be accurate for your system.  Since very specific information
  431. is required the specific configuration for the IBM PS/2 Model 80 is
  432. included below.
  433.  
  434. The IBM PS/2 Model 80 as a PC Server
  435. ------------------------------------
  436.  
  437. The IBM PS/2s do not have 64 KB of ROM as previous systems have had;
  438. instead they have 128 KB of ROM.  The video ROM is also contained in this
  439. area instead of at C000 like other systems.  In addition, every board you
  440. have in the machine including the hard drive controller will use an area of
  441. high memory.
  442.  
  443. This takes away enough memory that there is not enough address area
  444. available for 3ComEMM to provide high DOS memory.  You must, therefore,
  445. choose another configuration.  The Model 80 will be configured to give 736
  446. KB low DOS memory and no high memory.
  447.  
  448. CONFIG.SYS should be configured as follows:
  449.  
  450.         DEVICE=XBIOS.SYS
  451.         DEVICE=PRO.SYS
  452.         DEVICE=BUF.SYS
  453.         DEVICE=3COMEMM.SYS VIDMEM=B800-C000 NOHIGH FRAME=C000
  454.         DEVICE=ETH523.SYS or TOKIBM.SYS
  455.         etc.
  456.  
  457. This uses XBIOS.SYS to move the 1 KB of ROM the device driver area of
  458. memory and therefore allows the VIDMEM= parameter to provide 96 KB of
  459. contiguous low DOS memory yielding 736 KB.  The FRAME=C000 parameter puts
  460. the EMS page frame at location C000.
  461.  
  462. When configuring boards using the Reference disk, the best configuration is
  463. as follows:
  464.  
  465.              3Com EtherLink/MC              IBM TokenRing
  466.              -----------------              -------------
  467.              RAM address=D800               ROM=D400 or above
  468.              ESDI ROM=D000 or above         RAM=D800 or above
  469.                                             ESDI ROM=D000 or above
  470.  
  471. This leaves the area at C000-D000 for use as the EMS page frame.
  472.  
  473. 3ComEMM with 3+Open DOS Netstations
  474. ===================================
  475.  
  476. 3ComEMM supports many industry standard specifications that can be
  477. important on 3+Open DOS netstations.  Of course 3ComEMM supports both the
  478. EMS 3.2 and 4.0 specifications, but it also supports two specifications
  479. that are important for application memory usage:  the Microsoft Extended
  480. Memory Specification (XMS) and the Quarterdeck-PharLap Virtual Control
  481. Program Interface (VCPI).
  482.  
  483. The XMS specification allows 80286 and 80386 computers with at least 64 KB
  484. of extended memory to provide 64 KB of that memory to real mode
  485. applications.  This functionality is provided by Microsoft in their
  486. HIMEM.SYS driver.  3ComEMM fully supports the specification, so the
  487. HIMEM.SYS driver is not required.  You will find that, by default, 3ComEMM
  488. leaves at least 64 KB extended memory available to support this
  489. specification.  Applications must be specifically written to take advantage
  490. of this and move up to 64 KB of their code into this XMS area.
  491.  
  492. The Enhanced DOS Redirector that ships with 3+Open 1.1 and later takes
  493. advantage of this specification.  Run HIMEM.SYS on 286 computers,
  494. 3COMEMM.SYS on 386 computers, and leave at least 64 KB extended memory
  495. free.  Change the  HIMEM=NO parameter in LANMAN.INI to HIMEM=YES to allow
  496. the Enhanced Redirector to load part of its code into extended memory.  To
  497. receive XMS support from 3ComEMM you need version 2.67 or later.  Version
  498. 2.67 ships with 3+Open 1.0, and version 4.05 ships with 3+Open version 1.1.
  499.  
  500. Only one protected or virtual mode program can run at a time.  This would
  501. prevent you from using certain applications with 3ComEMM installed.  The
  502. VCPI specification was designed to overcome this limitation and allow
  503. certain protected and virtual mode programs to co-exist.  VCPI allows you
  504. to use programs that use DOS extenders to run in protected mode such as
  505. Paradox/386, IBM's Interleaf Publisher, and Lotus 1-2-3 Release 3 without
  506. interfering with 3ComEMM.  To provide VCPI support, you need version 4.05
  507. or later of 3ComEMM.
  508.  
  509. Using the general installation instructions above for installing
  510. 3COMEMM.SYS, place 3COMEMM.SYS in your CONFIG.SYS.  By default, 3ComEMM
  511. will convert all extended memory except 64 KB to expanded memory.  You can
  512. control this amount in two ways.  You can specify the EMS=nnnn parameter to
  513. tell 3ComEMM to convert nnnnK of extended memory to expanded.  Conversely,
  514. you can specify EXT=nnnn to tell 3ComEMM to leave nnnnK as extended memory. 
  515. These two parameters have basically the same effect, but accomplish it in
  516. opposite fashion.  You can also specify EMS=0 or EXT=0 to tell 3ComEMM to
  517. make no EMS available or leave no extended memory, respectively.
  518.  
  519. You may notice that if you specify EXT=0 you may have a small amount of
  520. extended memory left or if you specify neither of these options you may
  521. have slightly more than 64 KB extended memory available.  This is because
  522. expanded memory can only be allocated in 16 KB blocks.  If there is any
  523. memory left after converting extended to expanded in 16 KB blocks, the
  524. remainder must be left as extended.
  525.  
  526. 3ComEMM will, of course, automatically recognize a CGA or monochrome system
  527. and backfill conventional memory automatically.  You may prevent this by
  528. specifying NOLOW on the 3COMEMM.SYS line.  This prevents 3ComEMM from
  529. adding the memory between 640 KB and the bottom of video memory to low DOS
  530. memory; instead, it is converted to high DOS memory.  To prevent the
  531. backfilling from occurring at all, you can use the parameter VIDMEM=A000-
  532. C000 to tell 3ComEMM to leave the video area alone.
  533.  
  534. You may also use the method described in the 3+Share server section of this
  535. article to backfill low memory on EGA or VGA systems.  This prevents the
  536. use of EGA or VGA graphics, however, and 3Com does not recommend this if
  537. you plan to use graphics applications.
  538.  
  539. If you are using 3ComEMM on an EGA or VGA system with no secondary
  540. monochrome monitor, the 32 KB area at address B000-B7FF is typically
  541. unused.  You may use the parameter USE=B000-B7FF to reclaim this area as
  542. high memory for use by 3ComLoad.
  543.  
  544. 3ComLoad has five parameters that you will need to make good use of high
  545. memory.  They are GETSIZE, SIZE=, PROG=, SUMMARY, and PRGREG=.  These
  546. parameters apply to both 3COMLOAD.SYS in CONFIG.SYS for loading device
  547. drivers and 3COMLOAD.COM in AUTOEXEC.BAT for loading TSRs.
  548.  
  549. The usage of the 3ComLoad program in both device driver and executable
  550. forms is identical.  The only difference is in how you invoke each one.  To
  551. load device drivers high, use DEVICE=3COMLOAD.SYS [parameters] in your
  552. CONFIG.SYS, and to load TSRs high, specify 3COMLOAD [parameters] in your
  553. AUTOEXEC.BAT.  For simplicity, the form 3COMLOAD [parameters] is used in
  554. the following examples.  Keep in mind, however, that this applies equally
  555. well to the device driver.
  556.  
  557. The first time you want to load a piece of network software high, you must
  558. let 3ComLoad determine its size so that it may fit it into high memory.  To
  559. do this, use the following:
  560.  
  561.              3COMLOAD GETSIZE PROG=program [program parameters]
  562.  
  563. It is VERY important to specify the same parameters after the program or
  564. device driver name just as you would if you were not using 3ComLoad.  If
  565. you do not do so, 3ComLoad cannot make an accurate determination of memory
  566. usage.
  567.  
  568. When you use the GETSIZE= parameter, 3ComLoad loads the program specified
  569. into low memory and watches it run to determine its size.  It then stops
  570. and tells you if you have to use the SIZE= parameter when you load it and,
  571. if so, what SIZE= must be.
  572.  
  573. 3ComLoad obtains three values when you use GETSIZE, and from these it
  574. determines if you will need to use SIZE=.  These are the load, initialize,
  575. and resident sizes.  The load size is how much memory the program takes to
  576. actually load from the disk into memory, the initialize size is how much
  577. memory the program uses as it is initializing, and, of course, the resident
  578. size is how much memory the program uses when it finishes initializing,
  579. issues its remain resident request, and terminates.
  580.  
  581. The larger of these three numbers is the amount of memory 3ComLoad must
  582. reserve to be able to handle whatever program you are trying to load high. 
  583. The following ratio determines if you will need to specify SIZE=, and if it
  584. is followed by the program you are attempting to load, no SIZE= parameter
  585. is needed:
  586.  
  587.                Load size >= Initialize size >= Resident size
  588.  
  589. There must be enough memory available in high memory to perform all three
  590. of the above operations (load, initialize, and make resident), and 3ComLoad
  591. can only determine if there is enough room in two ways.  First, by the
  592. SIZE= parameter and, if there is no SIZE= parameter, secondly, by the load
  593. size.  If you do not specify SIZE=, the load size is less than available
  594. high memory, and either the initialize or resident sizes are greater than
  595. available high memory, the computer will most likely crash.
  596.  
  597. Give the preceding load command for all network drivers and programs you
  598. wish to load high.  The computer pauses after each and tells you if SIZE=
  599. is required.  It is not necessary to write the required SIZE= parameters
  600. down at this time, however, because you can use the SUMMARY command by
  601. typing 3COMLOAD SUMMARY and the program will give you the following
  602. summary:
  603.  
  604. 3COMLOAD -- Version 3.00 -- A Program Loader for 3COMEMM
  605.    (C) Copyright 1988-9 Qualitas, Inc.  All rights reserved.
  606. ╒═════════════════════════════════════════════════════════════════════════════╕
  607. │                        RESIDENT PROGRAM MEMORY USAGE                        │
  608. ├──────────────┬─────────────────────────────┬────────────────────────────────┤
  609. │              │        Size Parameters      │                                │
  610. │ Device or    ├─────────┬─────────┬─────────┤                                │
  611. │ Program Name │    Load │ Initial │ Resident│ Suggested Action               │
  612. ├──────────────┼─────────┼─────────┼─────────┼────────────────────────────────┤
  613. │ ANSI.SYS     │   3,008 │   3,516 │   2,544 │ You *MUST* use SIZE=3516       │
  614. │ Dev=ELNKII$  │  10,016 │  10,016 │   8,464 │ No SIZE= parameter needed      │
  615. │ Dev=MINDSIDP │   7,744 │   7,740 │   3,296 │ No SIZE= parameter needed      │
  616. │ XNSTP.EXE    │  49,664 │  49,920 │  63,456 │ You *MUST* use SIZE=63456      │
  617. │ PRTSC.EXE    │     672 │     920 │     752 │ You *MUST* use SIZE=920        │
  618. ╘══════════════╧═════════╧═════════╧═════════╧════════════════════════════════╛
  619.  
  620. In the illustration above, the programs ANSI.SYS, XNSTP.EXE, and PRTSC.EXE
  621. require SIZE= because either their initialize or resident sizes are greater
  622. than their load size.  ELNKII.DOS and XNSTP.DOS's initialize and resident
  623. sizes are equal to or less than the load size, so no SIZE= is needed.
  624.  
  625. To complete the example, here are the lines as they would appear exactly in
  626. CONFIG.SYS:
  627.  
  628.         DEVICE=3COMLOAD.SYS SIZE=3516 PROG=C:\DOS\ANSI.SYS
  629.         DEVICE=3COMLOAD.SYS PROG=3OPEN\DOSWKSTA\LANMAN\DRIVERS\ELNKII.DOS   
  630.         DEVICE=3COMLOAD.SYS PROG=3OPEN\DOSWKSTA\LANMAN\DRIVERS\XNSTP.DOS
  631.  
  632. and AUTOEXEC.BAT:
  633.  
  634.         3COMLOAD SIZE=63456 PROG=XNSTP
  635.         3COMLOAD SIZE=920 PROG=PRTSC
  636.  
  637. These are, of course, only examples, and you should not use these numbers
  638. on your system.  Rather, use the ones generated by GETSIZE.
  639.  
  640. Use the last 3ComLoad parameter, PRGREG=, to gain the maximum efficiency
  641. when loading programs high.  It is quite possible to get two or more non-
  642. contiguous areas of free high memory.  Programs, when loaded, of course
  643. need to be contiguous.  So what you can attempt to do to gain the most
  644. efficient loading, although it will take some time, is use the PRGREG=
  645. parameter of 3ComLoad and the MAPMEM parameter of 3COMEMM.COM to squeeze
  646. programs into memory.
  647.  
  648. If, for example, you have a 32 KB block of high memory, which would be
  649. quite possible on EGA/VGA systems using the monochrome area at B000-B7FF as
  650. high memory, and a large 96 KB block at C800-DFFF, the top of many video
  651. ROMs to the bottom of the typical EMS page frame, you could use PRGREG= to
  652. tell a program exactly where to load.
  653.  
  654. PRGREG stands for program region.  If you have two blocks of high memory as
  655. in the above example, you have two program regions.  B000-B7FF is PRGREG=1,
  656. and C800-DFFF is PRGREG=2.  If, for some reason, you have three or more
  657. areas, the lowest address would be one, the next highest would be two, and
  658. so forth.  3ComLoad, without the PRGREG= parameter, always puts the program
  659. it's loading into the first available region it fits into.
  660.  
  661. If, for example, you have the ESDI or other ROM as described in the third
  662. section of this article that existed at C800-CBFF and your video ROM ended
  663. at C600, you would have an 8 KB hole between the video ROM and the ESDI
  664. ROM.  Instead of wasting space putting the small ANSI.SYS and PRTSC.EXE
  665. from above into one of the large areas, you could specify PRGREG=2 to put
  666. them in that small area, ie.:
  667.  
  668.            DRIVER=3COMLOAD.SYS PRGREG=2 SIZE=3516 PROG=C:\DOS\ANSI.SYS
  669.            .
  670.            .
  671.  
  672. and leave the large areas open for larger programs.  The way to find out
  673. what areas of memory you have free is to execute the 3COMEMM.COM program
  674. with the MAPMEM parameter.  This gives you a detailed memory map and allows
  675. you to view what regions are available.  For example:
  676.  
  677. 3COMEMM  -- Version 4.05 -- A Memory Manager for 386 Systems
  678.    (C) Copyright 1987-9 Qualitas, Inc.  All rights reserved.
  679. ╒═════════════════════════════════════════════════════════════════════════════╕
  680. │                      MEMORY MAP for RESIDENT PROGRAMS                       │
  681. ├──────────────┬──────┬──────┬──────┬─────────┬───────────────────────────────┤
  682. │              │ Hex  │ Hex  │ Hex  │ Decimal │                               │
  683. │ Name         │ Start│ End  │ Owner│  Length │ Text or Interrupt Numbers     │
  684. ├──────────────┼──────┼──────┼──────┼─────────┼───────────────────────────────┤
  685. │ DOS & drvrs  │ 09F9 │ 0C57 │      │   9,680 │ 02 0A 0C 0D 0E 20 70 72 73 74 │
  686. │              │      │      │      │         │ 76 77                         │
  687. │ COMMAND.COM  │ 0C57 │ 0D2B │ 0C58 │   3,376 │ 22 23 24 2E                   │
  688. │              │ 0D2B │ 0D2F │ -Avl-│      48 │                               │
  689. │ COMMAND.COM  │ 0D2F │ 0D50 │ 0C58 │     512 │COMSPEC=C:\DOS\COMMAND.COM│PATH│
  690. │              │ 0D50 │ 0D5F │ -Cur-│     224 │                               │
  691. │              │ 0D5F │ 0D60 │ -Avl-│       0 │                               │
  692. │              │ 0D60 │ 178A │ 0D61 │  41,616 │ 5C F4                         │
  693. │              │ 178A │ 1893 │ -Avl-│   4,224 │                               │
  694. │              │ 1893 │ 1E0C │ 1894 │  22,400 │ 05 08 17 2F                   │
  695. │              │ 1E0C │ A000 │ -Cur-│ 532,272 │                               │
  696. ╞═High DOS Mem═╪══════╪══════╪══════╪═════════╪═══════════════════════════════╡
  697. │ Dev=EMMXXXX0 │ B000 │ B0D7 │ B001 │   3,424 │ 15 19 27 40 67                │
  698. │ Dev=3COMEMM$ │      │      │      │         │                               │
  699. │ Dev=ELNKII$  │ B0D7 │ B2E9 │ B0D8 │   8,464 │ 1C                            │
  700. │ Dev=MINDSIDP │ B2E9 │ B3B8 │ B2EA │   3,296 │ 0B 2A                         │
  701. │ Dev=MINDSPRO │      │      │      │         │                               │
  702. │ Dev=MINDSBUF │      │      │      │         │                               │
  703. │ Dev=MINDSLGL │      │      │      │         │                               │
  704. │ Dev=MINDSSPP │      │      │      │         │                               │
  705. │ Dev=MINDSCOU │      │      │      │         │                               │
  706. │ Dev=MINDSETH │      │      │      │         │                               │
  707. │ PRTSC.EXE    │ B3B8 │ B3E8 │ B3B9 │     752 │ 09 28                         │
  708. │              │ B3E8 │ B488 │ B3E9 │   2,544 │ 16 21 29                      │
  709. │              │ B488 │ B7E7 │ -Avl-│  13,792 │                               │
  710. │              │ B7E7 │ B7EB │ B3E9 │      48 │                               │
  711. │ PRTSC.EXE    │ B7EB │ B7FF │ B3B9 │     304 │COMSPEC=C:\DOS\COMMAND.COM│PROM│
  712. ╞═ RAM or ROM ═╡ B7FF │ C600 │ 0A3E │  57,344 │ 10 1F 43                      │
  713. │              │ C600 │ D57F │ C601 │  63,456 │                               │
  714. │              │ D57F │ DFFC │ -Avl-│  42,944 │                               │
  715. │              │ DFFC │ E000 │ C601 │      48 │                               │
  716. ╘══════════════╧══════╧══════╧══════╧═════════╧═══════════════════════════════╛
  717.  
  718. The above memory map shows that in low DOS memory, there are 532,272 bytes
  719. free.  This is the same number that appears if CHKDSK is executed.  It also
  720. shows that there are two regions in high memory, one from B000-B7FF, and
  721. one from C600-E000.  It also shows that there are 13,792 bytes free in the
  722. first region and 42,944 bytes free in the second region.  Each program
  723. loaded has its start and end addresses listed, along with any environment
  724. space it uses.  Unfortunately, 3ComEMM cannot ascertain the name of every
  725. program that is loaded high.  You can tell by the size, however.  The
  726. program that is 63,456 bytes in the second region of the above example is
  727. the XNSTP.EXE from the previous example.  The size next to each program
  728. corresponds to the resident size when you execute 3COMLOAD SUMMARY.
  729.  
  730. It is VERY important to note the following:  If you choose the protocol XNS
  731. with LPO in Netsetup, you must NOT use 3ComLoad to load the two drivers
  732. placed into CONFIG.SYS, PSH.SYS and PTH.SYS, into high memory.  They will
  733. not execute properly from high DOS memory.  You must also NOT use 3ComLoad
  734. to load PROTMAN.DOS into high memory, because it also will not function
  735. from high memory.
  736.