home *** CD-ROM | disk | FTP | other *** search
- Changes in TSR Utilities Version 3
- Kim Kokkonen
- TurboPower Software
- 11/22/91
- ------------------------------------
-
- This file describes changes in version 3.3 of the TSR Utilities,
- relative to an earlier version, 2.9. It assumes familiarity with
- previous versions of the utilities. See TSR.DOC for more information.
-
- Version 3.0 of the utilities was the first new version for a couple of
- years, and included a number of major changes. Version 3.1 of the
- utilities was a cleanup version, fixing compatibility problems and
- downright bugs discovered in version 3.0. Version 3.2 of the utilities
- generalizes the high memory support, so that it no longer requires DOS
- 5.0 or a particular version of any memory manager. Version 3.3 cleans
- up a few problems in 3.2 and generalizes the way command lines are
- parsed for options. In 3.3, command line options need not be separated
- by spaces, and they can be taken from an environment variable having
- the same name as the program.
-
- If you're updating from a previous version of the utilities, be sure
- to replace every file with the new version, since many of the programs
- work cooperatively.
-
- Generally, the utilities have been updated for compatibility with
- MS-DOS 5.0, and to support high memory (upper memory blocks) as
- implemented by DOS 5.0 and other third party memory managers. Any
- memory manager that supports the UMB (upper memory block) features of
- XMS (extended memory specification) memory managers should work with
- the high memory features of the TSR Utilities. This includes 386MAX
- (Qualitas), QEMM386 (Quarterdeck), HIMEM/EMM386 (Microsoft), and
- HIDOS/EMM386 (Digital Research).
-
- If you're using just the high memory features of MS-DOS 5.0 itself,
- without additional memory managers, note that you must have at least
- the following in your CONFIG.SYS in order for the TSR Utilities to
- access high memory:
-
- DEVICE=HIMEM.SYS
- DEVICE=EMM386.SYS RAM
- DOS=UMB
-
- See the discussion of the EMM386.SYS driver in your MS-DOS 5.0
- documentation for more information about options compatible with
- creating upper memory blocks.
-
- With other memory managers such as QEMM and 386MAX you should *not*
- put the DOS=UMB statement in CONFIG.SYS. (This is a change from
- versions 3.0 and 3.1 of the TSR Utilities.)
-
- To test whether your memory manager is compatible with the TSR
- Utilities high memory features, try entering MAPMEM /U at the DOS
- command line. If you get a high memory report from MAPMEM, then you
- can assume that the memory manager is compatible with TSR Utilities
- 3.0. Because of the lack of complete standards for managing high
- memory, the names and attributes of programs in high memory may
- sometimes appear garbled: unfortunately there is little we can do
- about this without building features specific to particular memory
- managers into the TSR Utilities.
-
- Note that even if you don't get a high memory report from MAPMEM, you
- can still use the TSR Utilities 3.0 without upper memory support.
-
- The /U option of DISABLE, MAPMEM, RELEASE, and RELNET activates the
- high memory features of these utilities. DISABLE won't deactivate or
- reactivate a TSR loaded in high memory unless /U is specified. MAPMEM
- doesn't report programs loaded above 640K unless /U is specified.
- WATCH, MARK, FMARK, and MARKNET transparently access high memory when
- it is available.
-
- The /U option causes a fundamental change in the behavior of RELEASE
- and RELNET. It is important that you understand what it does in order
- to use these utilities properly.
-
- When the /U option is *not* specified, RELEASE and RELNET remove
- programs in address order. That is, with a few exceptions, they
- deallocate any memory blocks that have a memory address greater than
- or equal to that of the mark.
-
- This behavior is almost never appropriate when TSR's are loaded high.
- When high memory is involved, the *chronological* order in which TSR's
- were loaded rarely matches the *address* order in which they were
- loaded. Before TSR's could be loaded high, these two orderings were
- usually the same, so no distinction was necessary. Now, however, it's
- common to load one program high, then one low, then another high; or
- to load one program into "region 2" of high memory, then another into
- "region 1", and so on.
-
- Therefore, when the /U option is activated, RELEASE and RELNET release
- memory in *chronological* order. That is, they free up all memory
- blocks allocated since the time the mark was placed, regardless of the
- address position of the memory. Additional information is now stored
- in the mark file or memory mark to allow this to occur. Only when /U
- is specified do RELEASE and RELNET access high memory.
-
- If you have *any* TSR's loaded into high memory, you should use the /U
- option, even if the particular TSR you're unloading is located in low
- memory. Depending on the chronological order in which you loaded the
- TSR's, an unload from low memory may also trigger unloads from high
- memory, or vice versa.
-
- When you intend to use the /U option, you must provide a unique mark
- name for each mark (because there is no unambiguous way to find the
- correct unnamed mark). A mark name is inherent in the filename
- specified to FMARK and MARKNET.
-
- Because of the chronological nature of RELEASE /U, you can load the
- MARK high and the associated TSR low (or vice versa) if desired.
-
- When you use the /U option with RELEASE, RELNET, or DISABLE, the
- programs must be able to find high memory blocks. If no high memory
- blocks are found, the programs will halt with an error. Another
- option, /H, will use high memory if it is found, or revert to the
- default low memory behavior if none is found.
-
- --------------------------------------------------------------------
-
- The following list details the changes made for version 3.3 to each
- program in the TSR Utilities:
-
- DEVICE.EXE
- - takes program options from an environment variable named DEVICE if
- found
-
- DISABLE.EXE
- - deactivates programs loaded high if the new /U option is specified
- - uses a feature new to DOS 5 to find TSR's by name even if they
- have released their environment
- - new /Q option prevents writing any screen output
- - new /H option works like /U if high memory is found
- - takes program options from an environment variable named DISABLE
- if found
-
- EATMEM.COM
- - no substantive changes
-
- FMARK.COM
- - new /Q option prevents writing any screen output
- - stores new "mcb chain" section of mark file for use in releasing
- programs loaded high
- - the mark itself may be loaded high
-
- MAPMEM.EXE
- - rewritten from scratch to allow reporting of upper memory blocks
- - fixes problems that occurred when TSR's were loaded in CONFIG.SYS
- - low memory report includes pre-DOS memory blocks so that the
- blocks total to 640K
- - reports on device driver memory allocation under DOS 5 when the /V
- option is active
- - reports EMS handle names when available
- - uses a feature new to DOS 5 to report TSR's by name even if they
- have released their environment
- - modifies some command line options (type MAPMEM /? to see current
- options)
- - new /C option checks for presence of a named TSR
- (syntax: /C TsrName). Halts with ErrorLevel 2 if the TSR isn't
- loaded, ErrorLevel 1 if there is a command line syntax error, or
- ErrorLevel 0 if the TSR is loaded. Note that this feature does not
- require WATCH to be in memory.
- - new /F option reports on just the free memory blocks available in
- normal, high, expanded, and extended memory
- - new /Q option prevents writing any screen output when the /C
- option is used
- - new /S option reports a summary of all memory areas
- - new /U option activates upper memory reporting
- - new /X option activates reporting of extended (XMS) memory
- - supports some segment naming conventions of DRDOS 6
- - fixes problem with TSRs that shrink their environment to zero size
- (Flushot+)
- - takes program options from an environment variable named MAPMEM if
- found
-
- MARK.COM
- - new /Q option prevents writing any screen output
- - stores new "mcb chain" section of memory mark for use in releasing
- programs loaded high. This increases the amount of memory used for
- a mark by about 50 to 500 bytes depending on the number of memory
- blocks allocated.
- - the mark itself may be loaded high
-
- MARKNET.EXE
- - new /Q option prevents writing any screen output
- - stores new "mcb chain" section in mark file for use in releasing
- programs loaded high
- - saves BIOS data area associated with LPT ports
- - saves XMS (extended memory) allocation state
- - the mark itself may be loaded high. Note, however, that MARKNET
- needs up to 18K of free memory when it is initially loaded, even
- though it keeps less than 300 bytes when it goes resident.
- - takes program options from an environment variable named MARKNET
- if found
-
- RAMFREE.COM
- - now supports >640K free RAM
- - adds current environment block size to reported free RAM
-
- RELEASE.EXE
- - fixes problems that occurred when TSR's were loaded in CONFIG.SYS
- - closes open file handles of released memory blocks
- - updated for new behavior of WATCH
- - new /Q option prevents writing any screen output
- - new /U option allows it to remove programs loaded high
- - new /H option works like /U if high memory is found
- - increases maximum number of memory blocks to 256
- - won't do an unnamed release on a memory mark loaded prior to a
- file mark
- - reverses order in which memory blocks are released to work
- correctly with 386MAX high memory
- - merges free blocks in high memory when possible (QEMM doesn't do
- this automatically)
- - takes program options from an environment variable named RELEASE
- if found
-
- RELNET.EXE
- - fixes problems that occurred when TSR's were loaded in CONFIG.SYS
- - updated for new behavior of WATCH
- - new /Q option prevents writing any screen output
- - new /U option allows it to remove programs loaded high
- - new /H option works like /U if high memory is found
- - increases maximum number of memory blocks to 256
- - adds automatic cancellation of NetWare IPX event control blocks,
- now allowing independent release of Novell's NETBIOS.EXE TSR
- - new (in 3.1) /I option prevents cancellation of IPX control blocks
- - restores BIOS data area associated with LPT ports
- - restores XMS (extended memory) allocation state
- - reverses order in which memory blocks are released to work
- correctly with 386MAX high memory
- - merges free blocks in high memory when possible (QEMM doesn't do
- this automatically)
- - takes program options from an environment variable named RELNET
- if found
-
- WATCH.COM
- - corrects problem that occurred when TSR's unloaded themselves
- - WATCH itself may be loaded high
- - adds support for TSR's loaded high
- - reduce resident size of WATCH by about 1000 bytes