THE LAST BYTE MEMORY MANAGER (tm) An Upper Memory Manager for MS-DOS Version 2.52 Copyright (C) 1990-94 All Rights Reserved by KEY SOFTWARE PRODUCTS 440 Ninth Avenue Menlo Park, California 94025-1802 415-364-9847 The Last Byte Memory Manager is a trademark of Key Software Products. MS-DOS and Windows 3.0 are trademarks of Microsoft Corporation. DR-DOS is a trademark of Digital Research Incorporated. 4DOS is a trademark of J.P. Software. Hyperdisk is a trademark of HyperWare. TABLE OF CONTENTS CHAPTER 1 - INTRODUCTION ........................... 1 1.1 Important Advantages ........................ 1 CHAPTER 2 - GETTING A QUICK START ..................... 3 2.1 Checking Compatibility Using CHIPSET .......... 3 2.2 Making a Demo Diskette for Testing .............. 3 2.3 Viewing Upper Memory with HIGHMEM .............. 5 2.3.1 Category "Bank Switch" .................. 6 2.3.2 Category "Read Only" .................... 6 2.3.3 Category "No DMA" ....................... 7 2.3.4 Category "DMA Danger" ................... 7 2.3.5 Category "Unavailable" ................. 7 2.3.6 LCD Displays ........................... 7 2.3.7 Obtaining Hard-Copy .................... 7 2.4 "The Demo Worked But Now It Hangs" ............... 8 2.5 Using HIGHDMA.SYS to Monitor DMA ............... 8 2.6 Further Reading ............................. 9 CHAPTER 3 - LASTBYTE.SYS COMMAND LINE OPTIONS ......... 10 3.1 APPEND= ............................ 10 3.2 BANKSWITCH=: .............. 10 3.3 CACHE= ............................. 11 3.4 DOS=: ..................... 11 3.5 EXCLUDE=: ................. 12 3.6 KEY= ............................ 12 3.7 MOVE=TABLES ................................ 12 3.8 MOVE=MAINBIOS .............................. 12 3.8.1 The ADDHOLES suboption .................. 12 3.9 MOVE=OVERLAY ............................... 13 3.10 MOVE=VIDEOBIOS ............................ 13 3.11 MOVE=XBDA ................................. 13 3.12 NAME= ................. 13 3.13 PHYSICAL= ............... 14 3.13.1 The OVERRIDE suboption ................. 14 3.13.2 The NOEMS suboption .................... 14 3.13.3 The FRAME suboption .................... 14 3.14 RESTRICT= ..................... 15 3.15 SHADOW=: ................. 16 3.16 TRACE=MAINBIOS and TRACE=VIDEOBIOS .......... 16 3.17 The ? (question mark) Option .................. 16 3.18 The /NOSPLIT Option ......................... 16 CHAPTER 4 - HIGHDRVR AND HIGHTSR COMMAND LINE OPTIONS ... 18 4.1 HIGHDRVR Command Line Syntax .................. 18 4.1.1 HIGHDRVR's /STUB=0 and /STUB=1 Options .... 18 4.2 HIGHTSR Command Line Syntax ................... 18 4.3 The /SIZE Option ............................. 19 4.4 Measuring Load Requirements Using /SIZE ........ 19 4.5 Achieving Best Fit Using /SIZE:n1 .............. 20 4.6 Borrowing Memory Using /SIZE:n1 n2 ............. 20 TABLE OF CONTENTS 4.7 The /LOW Option .............................. 21 4.8 The /RESTRICT Option ......................... 21 4.9 The /!NOPAUSE Option ......................... 22 4.10 The /NOENV Option (HIGHTSR only) .............. 22 CHAPTER 5 - HIGHUMM.SYS: A UMB PROVIDER ............... 24 5.1 The /REPLACE Option .......................... 24 5.2 The /SHRINK Option ........................... 24 5.3 The /NOSPLIT Option .......................... 25 5.4 The /RESTRICT Option ......................... 25 5.5 Limiting UMB Memory .......................... 25 CHAPTER 6 - HIGHDUBL.SYS: A REPLACEMENT FOR DBLSPACE.SYS 27 6.1 The /MOVE Option ............................. 27 6.2 The /FORCE Option ............................ 27 6.3 The /RESTRICT Option ......................... 27 CHAPTER 7 - SPECIAL CONSIDERATIONS .................. 29 7.1 Specifying Command Line Options with Indirect Files 29 7.2 Using the DOS=F000:32 Option .................. 29 7.3 Video Display RAM above 640k ................... 30 7.4 Video Adapter Bios ROMs ....................... 31 7.5 LASTBYTE.SYS and Expanded Memory .............. 32 7.6 Fine-Tuning your Adapter Hardware Configuration 33 CHAPTER 8 - USE WITH OTHER SOFTWARE ................... 34 8.1 Microsoft's FASTOPEN and MODE programs ......... 34 8.2 Microsoft's SHARE program .................... 34 8.3 Microsoft's MS-DOS .......................... 35 8.3.1 Using DEVICEHIGH and LOADHIGH ............ 36 8.3.2 Using HIGHDRVR and HIGHTSR ............... 36 8.4 Microsoft Windows ........................... 37 8.4.1 Modifying the Windows SYSTEM.INI File ..... 37 8.4.2 Positioning an EMS Page Frame ............. 38 8.4.3 "Unsupported Data Configuration" ........ 38 8.4.4 HIGHMEM and Windows 386 Enhanced Mode ...... 39 8.5 HyperWare's HyperDisk ....................... 39 8.6 J.P. Software's 4DOS ......................... 39 8.7 David Hamilton's BUFFIT ...................... 40 8.8 Charles Lazo's WAS ........................... 40 8.9 Philip Gardner's DOSMAX ...................... 40 8.9.1 Trashed Floppy Diskettes ................ 41 APPENDIX 1 - HOW TO REACH US .......................... 42 APPENDIX 2 - GETTING UPDATES VIA THE INTERNET .......... 44 APPENDIX 3 - ACKNOWLEDGEMENTS ...................... 45 APPENDIX 4 - LIMITED WARRANTY ....................... 46 Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 1 CHAPTER 1 - INTRODUCTION The Last Byte Memory Manager is a collection of software that can provide up to 384k of additional memory to your computer in the upper memory area between 640k and 1 meg. It does this by using shadow ram memory, existing fixed read/write (RAM) memory, or by mapping expanded memory (EMS) pages into the upper area. With The Last Byte Memory Manager, device drivers, terminate and stay resident (TSR) programs, and more can be moved up into upper memory, leaving more conventional memory available for your application programs. Depending on your hardware, you may also be able to extend the total conventional memory from 640k to as much as 736k. The Last Byte Memory Manager package also includes several advanced utility programs that can move the master environment, DOS FILES, DOS BUFFERS into upper memory. Other advanced utilities create ram disks, print spoolers, command line recall (history) buffers, emulated expanded memory, and TSR "markers" (to facilitate TSR removal). Best of all, these utilities can even use shadow ram memory which has been disabled (refered to as "Bank-Switch" memory) by the presence of the display buffer, unshadowed read-only memories (ROMs), and other adapter cards. 1.1 Important Advantages The Last Byte Memory Manager offers several significant advantages over other MS-DOS Upper Memory Managers: 1. The Last Byte Memory Manager will work with any processor chip, even the 8088 used in the original IBM PC. Many memory managers require a 386 cpu or better. 2. The Last Byte Memory Manager doesn't use protected mode. Unlike those memory managers that do, The Last Byte Memory Manager is totally compatible with any protected mode software, not just Microsoft Windows. 3. The Last Byte Memory Manager doesn't require any extended memory. Some memory managers depend on the processor's ability to remap physical memory from above 1MB into the upper memory area. 4. On motherboards that use one of the supported memory controller chips, The Last Byte Memory Manager, unlike all other memory managers, can use Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 2 the unused shadow ram normally disabled by the display buffer, unshadowed ROMs or adapter cards. This gives it the unique ability to use all 384k of upper memory! 5. The Last Byte Memory Manager does not slow down the performance of your computer, because it does not incur the 5-10% execution overhead inherent in protected mode. 6. On motherboards that use one of the supported memory controller chips, The Last Byte Memory Manager can extend conventional memory using regular full-speed motherboard memory rather than using the EGA/VGA display buffer. (The display buffer memory of some EGA/VGA adapter cards can be as much as six times slower than regular memory.) Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 3 CHAPTER 2 - GETTING A QUICK START The first thing to do is to be sure that The Last Byte Memory Manager will work on your computer. Fundamentally, the requirements are DOS version 3.1 or later and some method of implementing memory in the upper memory area between 640k and 1 meg. Any Intel (or Intel-compatible) processor will do, including the original Intel 8088 cpu. No extended memory is required. 2.1 Checking Compatibility Using CHIPSET The CHIPSET program is designed to determine if The Last Byte Memory Manager is compatible with your computer. To run CHIPSET, simply enter its name on the command line: A>CHIPSET If successful, CHIPSET will give you the option of automatically linking to the INSTALL program to either create a demo diskette (as described below) or to install the software on your hard disk. For more detailed information on the CHIPSET program and system requirements, consult the file CHIPSET.DOC. 2.2 Making a Demo Diskette for Testing To install The Last Byte Memory Manager on a floppy diskette for testing, perform the following three steps: Step 1: Use the MS-DOS FORMAT command with the /S option to prepare a bootable floppy disk. You will need this in Step 2. Step 2: Run the CHIPSET program. If it succeeds, it will ask you "Do you want to run the INSTALL program now?". Answer yes. When it displays the first screen of the INSTALL program, select the first option, "Creating a demonstration diskette" and follow the prompts. Step 3: Once you have created your demonstration diskette, press Ctrl-Alt-Del to reboot your computer from the diskette. When your computer reboots, LASTBYTE.SYS will pause thirty seconds and then require a keypress to proceed. The pause and the keypress are removed when you purchase and install an access Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 4 key (see ORDERFRM.DOC). There are, however, no other restrictions on the unlicensed version - it is a fully functional version of the software. If everything goes ok during the boot, you'll see a sign-on box that looks something like the following: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º THE LAST BYTE MEMORY MANAGER (tm) Version 2.52a º º Copyright (C) 1990-94, Key Software Products, All Rights Reserved º º ® You can LICENSE a copy of this software for only $29.95! ¯ º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º 50.0 Mhz 80486 with 256KB Cache and OPTi Electronics 82C495 º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º Address Range Size Width Bandwidth Description º º 256 KB 128 bits 200.0 MB/Sec Secondary CPU Cache º º 00000-9FFFF 640 KB 32 bits 97.6 MB/Sec Conventional Memory º º C0000-EFFFF 192 KB 32 bits 97.6 MB/Sec Shadow Ram Memory º º A0000-AFFFF 64 KB 16 bits 1.7 MB/Sec VGA Graphics Buffer º º B8000-BFFFF 32 KB 16 bits 1.7 MB/Sec VGA Color Text Bfr º º C0000-C7FFF 32 KB 8 bits 1.2 MB/Sec VGA Adapter Bios º º C8000-C97FF 6 KB 8 bits 1.2 MB/Sec Fixed Disk Bios º º C9800-C9BFF 1 KB 8 bits 1.2 MB/Sec Fixed Disk Ram º º F0000-FFFFF 64 KB 8 bits 2.0 MB/Sec AMI Bios (06/06/91) º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º Conv:640k High-DOS:144k Bank-Switch:16k Shadowed:96k Excluded:128kº ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º The Last Byte Memory Manager is a trademark of Key Software Prod. º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ If your computer stops before displaying the box shown above, or if it fails to operate properly after booting, there are two possible reasons: 1. CHIPSET identified the wrong memory controller. Try running CHIPSET again, and this time manually test each of the menu options, noting if more than one chipset is identified. If so, then run the INSTALL program again for one of the other chipsets that it finds. 2. The Last Byte Memory Manager failed to recognize one of your installed adapters that uses some portion of the upper memory address space. If this happens, you'll probably need to use an EXCLUDE option on the LASTBYTE.SYS command line to manually disable the corresponding region(s) where conflict occurs. To temporarily get around either of these problems, you can reboot and manually bypass execution of all The Last Byte Memory Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 5 Manager software by simultaneously holding down the key, the key, and either the or key during the boot sequence. If The Last Byte Memory Manager installs and AUTOEXEC.BAT finishes properly, then your display will be filled with the output of the HIGHMEM program and the current time will be displayed in inverse video in the upper left-hand corner. This verifies that HIGHTSR has successfully loaded both the device driver ANSI.SYS and the TSR program CLOCK.EXE into upper memory and that they are operating properly. To exit from HIGHMEM, simply press the Esc key. Once you are convinced that The Last Byte Memory Manager is working satisfactorily, you may install it on your hard disk by making drive C: the current drive by entering C: and rerunning CHIPSET or INSTALL. 2.3 Viewing Upper Memory with HIGHMEM Depending on what adapter cards you have installed, HIGHMEM's output should look something like that shown below. Bracketed numbers in the High-DOS column (e.g., "[141,136]") indicate free memory that is available for additional device drivers and TSRs. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 6 HIGHMEM v2.52a (C) Key Software Products 1990-94. All Rights Reserved. MCB Hex Address Description [Type] Size Category ÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄ CC00 A0000-CBFFF Reserved Memory Group CC02 A0000-AFFFF ÌÍ16-bit VGA Graphics Buffer 65,536 Unavailable CC04 B0000-B7FFF ÌÍUnavailable 32,768 Unavailable CC06 B8000-BFFFF ÌÍ16-bit VGA Color Text Buffer 32,768 Unavailable CC08 C0000-C7FFF ÌÍShadowed 8-bit VGA Bios Rom 32,768 CC0A C8000-C97FF ÌÍ8-bit Fixed Disk Adapter Bios [ 6,144] Bank Switch CC0C C9800-C9BFF ÌÍ8-bit Fixed Disk Adapter Ram [ 1,024] Bank Switch CC0E C9C00-CBFFF ÈÍDOS Unusable [ 9,216] Bank Switch CC10 CC110-CC54F LASTBYTE [DEV] 1,088 CC55 CC560-CD5BF ANSI [DEV] 4,192 CD5C CD5D0-CD6CF CLOCK [ENV] 256 CD6D CD6E0-CD88F CLOCK [TSR] 432 CD89 CD8A0-EFFEF [ùùùFreeùùù] [141,136] EFFF F0000-FFFFF Shadowed 8-bit AMI Main Bios 65,536 Read Only ÚÄ[Avail]Ä¿ÚÄ[InUse]Ä¿ÚÄ[Total]Ä¿ Upper Memory: ³ 141,136 ³³ 39,088 ³³ 180,224 ³ Read Only: ³ 0 ³³ 65,536 ³³ 65,536 ³ Bank Switch: ³ 16,384 ³³ 0 ³³ 16,384 ³ HMA: ³ 15,872 ³³ 49,648 ³³ 65,520 ³ ÀÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÙ Entries under the column "Category" indicate special memory characteristics as follows: 2.3.1 Category "Bank Switch" Bank Switch memory is shadow ram memory that normally remains disabled in order to access an adapter that uses a portion of the same address space. However, bank switch memory can be used by some of the advanced utilities contained in the file TLB-A252.ZIP to store data for a ram disk, a print spooler, emulated EMS memory, or TSR markers. 2.3.2 Category "Read Only" Read only shadow ram memory is due to a physical limitation in certain shadow ram controllers, and is usually associated with the main bios region between F000-FFFF. Read only memory cannot be used to load device drivers or TSRs. However, it can be used by most of The Last Byte Memory Manager utilities, thus making more of the read-write shadow ram available. For more information on how to use read only memory, refer to LASTBYTE.SYS options DOS=:, MOVE=OVERLAY and Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 7 MOVE=TABLES in this document, the HIGHHOLE option described in ADVANCED.DOC, and all references to the /NOSPLIT option in both documents. 2.3.3 Category "No DMA" Some shadow ram memory may not support direct memory access due to a physical limitation in certain shadow ram controllers. Software (such as a disk cache and some CD-Rom software) that attempts DMA access to this region simply will not work. (See the section below on HIGHDMA.SYS) 2.3.4 Category "DMA Danger" This phrase indicates that there is a 16-bit adapter which occupies a portion of the same 128k address space (A000-BFFF, C000-DFFF, E000-FFFF). Software (such as a disk cache and some CD-Rom software) that attempts DMA access in this region may corrupt data anywhere within the region due to a hardware design weakness in the ISA (AT) bus; this is not a problem with either the EISA or MicroChannel bus. (See the section below on HIGHDMA.SYS) 2.3.5 Category "Unavailable" There is no usable upper memory in this region. 2.3.6 LCD Displays HIGHMEM automatically senses whether you have a color or monochrome display to determine how to present data on the screen. However, you may force the mode using one of the /MONO or /COLOR command line options. This may be useful, for example, with LCD displays that simulate color using shades of grey. 2.3.7 Obtaining Hard-Copy You can get a hardcopy of the HIGHMEM display by simply redirecting its output on the command line in the usual manner. To go directly to your printer, use: A>HIGHMEM >PRN Or, to capture the output in a file called "HIGHMEM.DAT" use: Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 8 A>HIGHMEM >HIGHMEM.DAT 2.4 "The Demo Worked But Now It Hangs" The demo worked so you modified your CONFIG.SYS and AUTOEXEC.BAT and now your computer hangs during the boot process. What's wrong? Some software just simply can't be loaded into shadow ram. Most often this is because the software wants to use Direct Memory Access (DMA) to transfer data using a buffer within the software's resident location in memory. Common examples of such software are disk caching software (such as SmartDrive and HyperDisk), proprietary device drivers for hard disks (such as ASPI4DOS.SYS), and proprietary device drivers for CD-ROMs (such as MTMCDE.SYS). If the software that uses DMA is in shadow ram memory, then there are two potential problems: (1) There's a 16-bit adapter card occupying part of the same 128K upper memory region where the software was loaded. (Indicated by the phrase "DMA Danger" in the category column of the HIGHMEM display.) For a complete description of this problem and a possible solution, see the section below called "RESTRICT=,,". (2) The design of your particular chipset does not allow DMA transfers to/from shadow ram memory. (Indicated by the phrase "No DMA" in the category column of the HIGHMEM display.) In some cases, you can fix the problem by simply disabling caching in that particular shadow ram region where the software loads using your CMOS setup. In other cases, the software that uses DMA may provide command line options to avoid DMA or to position the DMA buffer somewhere other than in upper memory. In a few cases, there may be alternative software that doesn't use DMA at all. In either case, if none of these "work arounds" fix the problem, you may have to simply load that software low (in conventional memory). Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 9 2.5 Using HIGHDMA.SYS to Monitor DMA DMA access to the upper memory area (UMA) is only something to worry about if the phrase "No DMA" or "DMA Danger" appears in the category column of the HIGHMEM display. If neither appears, there is no reason to use this utility. HIGHDMA.SYS is a small utility that helps identify device drivers, TSR's, or other software that attempt DMA access to the UMA. It is installed in CONFIG.SYS (without command line options) immediately after LASTBYTE.SYS: E.g., DEVICE=C:\TLBMM\LASTBYTE.SYS . . . DEVICE=C:\TLBMM\HIGHDMA.SYS Once installed, any subsequent DMA access to the UMA will cause a warning such as: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º *** DMA Access to UMA Segment EXXX! *** º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Press any key to continue... The actual segment number may vary, but in most cases what's more important is the software that was loaded or used just before this message appeared. 2.6 Further Reading The following article provides an excellent definition of the various kinds of memory, such as conventional, extended, expanded, high, and upper. More important, however, is its discussion of how various adapter cards make use of the upper address space, and may provide some insight if you're having problems getting The Last Byte Memory Manager to install properly: Barry Simon, "How to Get the Most from Your System's High DOS Memory", PC Magazine, Vol. 9, No. 10 (May 29, 1990), pp. 347-358. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 10 CHAPTER 3 - LASTBYTE.SYS COMMAND LINE OPTIONS During initialization, LASTBYTE.SYS scans upper memory looking for Bios ROMs, the video display buffer, and adapter cards that use some portion of the upper memory address space. Of the upper memory available on your computer, the unoccupied portion defaults to High-DOS memory, and the occupied portion defaults to Bank-Switch memory. These defaults can be modified by the use of command line options. There are several command line options for LASTBYTE.SYS. Many of these use a format like: =: where is one of the option keywords and may be abbreviated by its first letter, is a four-digit hexadecimal segment address in the range A000 to FC00, and is a decimal number in kilobytes. There are two restrictions on these options: 1. The base must be exactly 4 hexadecimal digits, must lie at or above A000, and must be a multiple of 0020 (512 bytes), and 2. The size must be in the range 1-384 kb. The "multiple of 0020" requirement for the base is necessary to be consistent with the resolution that The Last Byte Memory Manager uses to organize high memory during initialization. However, this requirement is often affected by the much coarser resolution used by most memory controllers. The upper area is partitioned into blocks. Some controllers use 16k blocks, some use 32k blocks, and some use 64k blocks. Each block must be either totally enabled or disabled. I.e., if any part of a block's address space is disabled by the presence of an adapter card, the entire block of memory is disabled and cannot be made available as High-DOS Memory. 3.1 APPEND= This option is used in conjunction with the HIGHAPND utility to "stretch" the top of conventional memory beyond 640k. For more information, refer to the description of the HIGHAPND utility in ADVANCED.DOC. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 11 3.2 BANKSWITCH=: Forces a region of upper memory that would normally be used as High-DOS memory to be made available as Bank-Switch memory. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ This option requires a memory controller chip. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 3.3 CACHE= Forces LASTBYTE.SYS to think that there is a cache between the CPU and main memory and to set its size. (This has nothing to do with disk caching!) This option is not normally necessary; LASTBYTE.SYS normally will automatically detect the presence of a cache and its size. Activating bank-switch memory causes the contents of a cache (if present) to be invalid; this is known as a "cache coherency" problem. If a cache is detected during installation, LASTBYTE.SYS checks to see if any portion of the upper address space is cached. If not, then no cache coherency problem exists. If the upper address space is cached, however, LASTBYTE.SYS will flush the cache on every access to Bank-Switch memory in order to prevent the cache from providing invalid data to the CPU. The cache is flushed by filling it from low memory. The value is used to determine how much to fill. 3.4 DOS=: Forces a region of upper memory to be made available as High-DOS memory. Some parts of the main or video bios are often used only during initialization; in such cases, this option provides a way to re-use that portion of the shadowed bios. If your chipset forces shadow ram in the main bios region (F000-FFFF) to be read-only, you can use this option to convert a portion of that region into available read-only memory for several of the utilities in The Last Byte Memory Manager package. This is most useful when the main bios is "split", with the initialization section in the first 32k and the run-time section in the second 32k, as is the case with some (not all) of the AMI bios rom's. In this case, the corresponding option would be DOS=F000:32. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 12 As an alternative, you may want to use the HIGHHOLE utility in conjunction with the HOLE=: option as discussed in ADVANCED.DOC. 3.5 EXCLUDE=: Forces a region of upper memory unavailable as either High-DOS or Bank-Switch memory. 3.6 KEY= When you register The Last Byte Memory Manager, you are given an access key that is derived from the spelling of your name. This eight character key should be specified using this option, as in: KEY=12345678 This option must be used in conjunction with the NAME option discussed below. 3.7 MOVE=TABLES This option is for chipsets in which the main bios shadow ram (F000-FFFF) is forced read-only, such as ETEQ, OPTi, Intel, VLSI, and a few others. It converts a small area within the EGA/VGA bios shadow ram into usable Hi-DOS memory by moving a few parameter tables from there into free R/O shadow ram if possible. One or more available read-only shadow ram regions must be specified using the HOLE option; the TRACE option and HIGHHOLE program may be used to suggest suitable holes. This option cannot be used in conjunction with the MOVE=OVERLAY option. 3.8 MOVE=MAINBIOS Tries to move the main bios to a better location within the available upper memory in order to reduce fragmentation of free memory. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 13 3.8.1 The ADDHOLES suboption MOVE=MAINBIOS,ADDHOLES will create seven holes in the residual 8k left at FE00 for a total of more than 3k. 3.9 MOVE=OVERLAY This option is for chipsets in which the main bios shadow ram (F000-FFFF) is forced read-only, such as ETEQ, OPTi, Intel, VLSI, and a few others. It puts that ram in write-only mode, copies the video bios on top of the main bios initialization code at the beginning of the bios, then returns the ram to read-only mode. Then the old video bios region is converted to usable Hi-DOS memory. This option cannot be used in conjunction with the MOVE=TABLES option. 3.10 MOVE=VIDEOBIOS Tries to move an EGA or VGA bios to a better location within the available upper memory in order to reduce fragmentation of free memory. 3.11 MOVE=XBDA This option relocates the Extended Bios Data Area (XBDA), if it exists, into Upper Memory. The XBDA is usually 1k reserved at the top of conventional memory by the main Bios. Not all machines use an XBDA, but if it exists, LASTBYTE.SYS will report 639k of Conventional Memory instead of 640k, and the advanced utility HIGHAPND will refuse to append any memory. Some machines may not operate properly with a relocated XBDA, so use this option with caution. (Note that some computer viruses also "steal" the top 1k of memory.) 3.12 NAME= When you register The Last Byte Memory Manager, you are given an access key that is derived from the spelling of your name. This option is used to specify your name as used to generate that key, as in: NAME=Daniel_W._Lewis Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 14 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Note: Spaces MUST be replaced by underscores! ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ This option should be used in conjunction with the KEY option discussed earlier. 3.13 PHYSICAL= Used to specify the memory controller determined by the CHIPSET program. 3.13.1 The OVERRIDE suboption Many memory controller chips can relocate all or part of shadow ram to the top of (extended) memory. If LASTBYTE.SYS fails to install with the error message: "Shadow Ram memory relocated - Use OVERRIDE option" try adding the OVERRIDE suboption to the PHYSICAL option, as in: PHYSICAL=82C212,OVERRIDE This disables any shadow ram relocation that may be in effect, regardless of your CMOS configuration menu setup. The CMOS setup menu of your BIOS may also provide an option to disable relocation directly, but there are some that determine whether to relocate or not based on other configuration options. 3.13.2 The NOEMS suboption May be used in conjunction with PHYSICAL=LIM4EMS or EEMS to use the 64k page frame as High-DOS Memory, as in: PHYSICAL=LIM4EMS,NOEMS The NOEMS suboption must be used in conjunction with PHYSICAL=LIM3EMS (i.e., PHYSICAL=LIM3EMS,NOEMS). Doing so disables other (normal) use of all expanded memory. 3.13.3 The FRAME suboption May be used with those low-level physical drivers that implement 64k of Hi-Dos memory by using the four 16k pages of their EMS page frame, as in: Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 15 PHYSICAL=HT12,FRAME=CC00 The possible values (e.g., "CC00") for the position of the page frame is restricted by the hardware capability of the chipset, but is always limited to no more than C000, C400, C800, CC00, D000, D400, D800, DC00, or E000. 3.14 RESTRICT= Address lines A15 and A16 are not latched in hardware design of the AT bus. As a consequence, some 16-bit adapter cards do not properly decode these address lines within the narrow time constraints imposed by the Address Latch Enable (ALE) signal, and will occassionally respond to a memory access that is directed at some other portion of the address space. Thinking that it is for them, they force the transfer into 16-bit mode even though the intended recipient requires 8-bit mode, and thus cause erroneous data to be transferred to the bytes in the odd-numbered addresses. The most common (and damaging) occurence occurs during the 8-bit DMA transfers between a floppy disk drive and upper memory near the address space occupied by an offending 16-bit adapter card. Due to organization of the address signals on the AT bus, this phenomena only occurs when the two address areas are within the same 128k region. There are three such regions in the upper area: A0000-BFFFF, C0000-DFFFF, and E0000-FFFFF. LASTBYTE.SYS automatically senses the presence of 16-bit adapter cards in each of these three regions and records this information within its resident image for use by its utilities. LASTBYTE.SYS skips this test if it detects a PC with a Micro Channel bus (like the PS/2) since problem was corrected in its design. The RESTRICT option is provided to override this automatic detection of 16-bit adapters. Each of the three arguments (one per 128k region) should be replaced by either "0" (indicating no 16-bit adapters), or "1" (indicating the presense of a 16-bit adapter) and separated by commas. For example, the option RESTRICT=1,1,0 would imply that one or more 16-bit adapters are located in the first two 128k regions of upper memory (A000-DFFF), so that when the companion /RESTRICT option of HIGHDRVR, HIGHTSR, HIGHDUBL or HIGHUMM is used, only High-DOS memory in the region E000-FFFF will be allocated. (Note: The /RESTRICT option is also supported by the advanced utilities HIGHEMS3, and HIGHEMS4. The default operation of the advanced utility HIGHBFRS is /RESTRICT, but this may be disabled Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 16 by use of its /NORESTRICT option.) 3.15 SHADOW=: The Last Byte Memory Manager will automatically copy the video bios and main bios to shadow ram if they aren't already shadowed. However, it will not do so for other adapter ROMs. This is because some controllers "hide" a small RAM by overlaying it in a portion of the same address space they declare as being filled with ROM. Such a RAM is no longer accessible when the ROM is shadowed, usually causing the adapter to stop functioning. This option is for those who want to forces a region of memory (presumably ROM) to be copied into shadow ram. If other hardware is detected outside the specified region, but within the same memory controller block which conflicts with this request, a corresponding error message will be displayed and LASTBYTE.SYS will not be installed. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ This option requires a memory controller chip. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 3.16 TRACE=MAINBIOS and TRACE=VIDEOBIOS Either or both of these options, used in conjunction with the HIGHHOLE program, are intended to help identify unused space in a bios ROM or space that is used only during cold-boot initialization. Most such regions may be converted into usuable upper memory with use of the HOLE option. For a full description of these options, see the description of the HIGHHOLE program in ADVANCED.DOC. 3.17 The ? (question mark) Option Causes LASTBYTE.SYS to erase the screen, display a summary of what it finds in the upper memory area, and pause for two seconds to give the user an opportunity to read the information. To freeze this display for a longer period, press -S; then to continue with CONFIG.SYS processing, press any key. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 17 3.18 The /NOSPLIT Option This option is for chipsets in which the main bios shadow ram (F000-FFFF) is forced read-only, such as ETEQ, OPTi, Intel, VLSI, and a few others. By default, LASTBYTE.SYS will try to put most of its resident image into this read-only memory if a HOLE option (see ADVANCED.DOC) has been used to make a region of read-only memory available. The /NOSPLIT option prevents this. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 18 CHAPTER 4 - HIGHDRVR AND HIGHTSR COMMAND LINE OPTIONS HIGHDRVR is a device driver that is used to load other device drivers into upper memory. HIGHTSR is a program that is used to load TSR programs into upper memory. Both utilities use most of the same command line options as discussed in the sections that follow. 4.1 HIGHDRVR Command Line Syntax The command line syntax of the CONFIG.SYS line for HIGHDRVR is: DEVICE=[path]HIGHDRVR.SYS [options] [options] where '' is the filename of the device driver to be loaded high, optionally prefixed by a drive and directory specifcation. The filespec may be preceded by one or more options, and followed by options at the end of the command line as required by the particular driver to be loaded. When HIGHDRVR searches the disk for the device driver to load, it follows the following search strategy: 1. If '' includes a drive or directory specification, this will be the only place that HIGHDRVR will look. Otherwise, HIGHDRVR will search for the driver in: 2. The current (root) directory, and then 3. The same directory where HIGHDRVR was found. 4.1.1 HIGHDRVR's /STUB=0 and /STUB=1 Options By default, HIGHDRVR will make its own determination of whether or not it is necessary to leave a small "stub" in conventional memory. However, you may override its choice by using either /STUB=0 (leave no stub) or /STUB=1 (force a stub). 4.2 HIGHTSR Command Line Syntax The command line syntax for HIGHTSR is: [path]HIGHTSR [options] [options] where '' is the filename of the TSR program to be Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 19 loaded high, optionally prefixed by a drive and directory specifcation. The filespec may be preceded by one or more options, and followed by options at the end of the command line as required by the particular TSR to be loaded. When HIGHTSR searches the disk for the device driver to load, it follows the same strategy that MS-DOS uses when loading programs: 1. If '' includes a drive or directory specification, this will be the only place that HIGHTSR will look. Otherwise, HIGHTSR will search for the TSR program in: 2. The current directory, and then 3. Those directories given by the PATH environment variable. HIGHTSR may also be used with the MS-DOS "INSTALL=" directive of a CONFIG.SYS file. 4.3 The /SIZE Option The amount of High-DOS memory required to load a device driver or TSR is the larger of two amounts: (1) the amount required during initialization and (2) the final resident requirement once installed. Either or both of these may be greater than or equal to the size of the file. Most device drivers and TSR's require more memory for initialization than when resident, although there are a few (such as SMARTDRV.SYS and NANSI.SYS) which require extra resident memory for buffers, etc. The normal operation of HIGHDRVR and HIGHTSR is to use the largest free High-DOS memory block to load the software since the resident memory requirement cannot be determined until after the software has been loaded and initialized. Unfortunately, this can lead to a less than optimum use of memory. If the memory requirements were known, then a memory block could be selected using a "best fit" strategy; i.e., the smallest free High-DOS memory block which is larger than or equal to the load requirement. This usually results in much better utilization of memory. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 20 4.4 Measuring Load Requirements Using /SIZE If inserted on the command line of HIGHTSR or HIGHDRVR as shown below: C:\TLBMM\HIGHTSR /SIZE C:\DOS\PRINT /D:PRN -or- DEVICE=C:\TLBMM\HIGHDRVR.SYS /SIZE C:\DOS\ANSI.SYS then both the initialization and resident requirements will be displayed on the console after the software has been loaded and initialized. 4.5 Achieving Best Fit Using /SIZE:n1 The larger of the initialization and resident requirements may be specified with the /SIZE option to force a "best fit" allocation. For example: C:\TLBMM\HIGHTSR /SIZE:17120 C:\DOS\PRINT.EXE /D:PRN -or- DEVICE=C:\TLBMM\HIGHDRVR.SYS /SIZE:12032 C:\DOS\ANSI.SYS 4.6 Borrowing Memory Using /SIZE:n1 n2 Usually the resident requirement is less than the initialization requirement. If there isn't enough free High-DOS memory to satisfy the initialization requirement, but there is enough for the resident requirement, then you may still be able to load your software by adding a second parameter to the /SIZE option, as in: C:\TLBMM\HIGHTSR /SIZE:16208,5776 C:\DOS\PRINT /D:PRN -or- DEVICE=C:\TLBMM\HIGHDRVR.SYS /SIZE:12032,4820 C:\DOS\ANSI.SYS In this example, the initialization requirement is specified by the first parameter and is 16208 bytes; the resident requirement is specified by the second parameter and is 5776 bytes. Note that specifying the second parameter is not helpful unless the resident requirement is less than the initialization requirement. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 21 When the second parameter is used, HIGHTSR first looks for a free area larger than or equal to the initialization requirement (the first parameter); if found, it simply loads the software in this area and the second paramter is ignored. Otherwise, HIGHTSR searches for a free area larger than or equal to the resident requirement (the second parameter), and which has "data" allocated immediately above it that can be temporarily moved to create enough free memory to satisfy the initialization requirement. Such "data" includes High-DOS memory used by the advanced utilities HIGHDISK, HIGHEMS3, HIGHEMS4, HIGHSPLR, HIGHKEY, and HIGMARK. 4.7 The /LOW Option As noted earlier, TSR's and device drivers often require much more memory during installation as compared to that required once they are resident. This can prevent loading them into High-DOS memory even if there's enough for the resident image (but not enough for initialization). The /LOW option can be used with some TSR's and device drivers to get around this problem: C:\TLBMM\HIGHTSR /LOW C:\DOS\APPEND -or- DEVICE=C:\TLBMM\HIGHDRVR.SYS /LOW C:\DRIVERS\MYDRIVER.SYS For example, the first example above loads a TSR (APPEND.EXE) and initializes it in low (conventional) memory where there's lots of room, then copies the (smaller) resident image up into upper memory. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º WARNING: The design of some software may pre- º º vent the /LOW option from working properly. º º Don't use it unless necessary, and then only º º after you have tested it to be sure everything º º works as expected. (For example, it will NOT º º work with PRINT, SHARE, FASTOPEN, MODE, or º º HyperDisk.) º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 22 4.8 The /RESTRICT Option When used, this option restricts which 128k regions of upper memory may be allocated for use with HIGHDRVR, HIGHDUBL and HIGHTSR. For a detailed discussion of why these regions may need to be restricted and how to control the restrictions, see the discussion of the RESTRICT option in the detailed description of LASTBYTE.SYS. 4.9 The /!NOPAUSE Option All of the utility programs (*.EXE files) that come with The Last Byte Memory Manager support the command line option /!NOPAUSE. This option eliminates the wait-for-keyboard pause after an error message is displayed. When one of these programs terminates with an error message, it also returns a non-zero errorlevel which can be tested in batch files to make automatic decisions about how to proceed. The /!NOPAUSE option simply makes use of the errorlevel more practical. 4.10 The /NOENV Option (HIGHTSR only) All programs, including TSR's, are allocated two regions of memory when they are loaded: One is the area for the program itself, and the other is for a copy of the environment. Most TSR's don't make use of their environment, and some actually release it to the operating system rather than hanging onto it. If HIGHMEM finds an environment block, the corresponding entry in the "Description" column will have the name of the TSR that it belongs to (such as "CLOCK.EXE") followed by the indication "[Env]". Occassionally, you may see a similar indication "[Dat]"; this is a data block explicitly allocated by the TSR for some unknown purpose. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ The authors of some TSR's attempt to save a bit ³ ³ of memory by having the TSR eliminate its own ³ ³ Program Segment Prefix (PSP) during initializa- ³ ³ tion. Doing so makes it impossible to identify ³ ³ the TSR'senvironment block. However, this byte ³ ³ saving mentality will usually mean that the TSR ³ ³ initialization code also eliminates its environ-³ ³ ment block, so this is rarely a problem. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ If you see a block labelled "[Env]" in the output of HIGHMEM, then you can use the /NOENV command line option of HIGHTSR to release this block, even if the TSR didn't: Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 23 C:\TLBMM\HIGHTSR /NOENV C:\TLBMM\CLOCK As noted earlier, some TSRs will release their environment anyway and so you may be tempted to load them without using the /NOENV option. This usually will create a "hole" in upper memory since the TSR's environment is almost always allocated just below the TSR itself. Use of the /NOENV option forces the environment to be allocated down in conventional memory (where it will be reclaimed later) so that the "hole" is eliminated. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 24 CHAPTER 5 - HIGHUMM.SYS: A UMB PROVIDER HIGHUMM is a device driver that creates, and lets application software use, Upper Memory Blocks (UMB's) in the upper memory area via a standard protocol that is part of what is known as the Extended Memory Specification (XMS). The number, size, and location of UMB blocks vary widely depending upon the types of hardware adapter cards resident within the upper address space. If HIGHUMM is installed, you may use the DOS 5 DEVICEHIGH and LOADHIGH commands as alternatives to HIGHDRVR and HIGHTSR. HIGHUMM can also be used to advantage with other software such as 4DOS, BUFFIT, WAS, and DOSMAX. These options are discussed in the next chapter. HIGHUMM may be installed in one of two ways: 1. If an XMS driver has not been loaded, HIGHUMM will become a UMB-Only XMS device driver. All other XMS functions will return failure, indicating that the function is not implemented. For example, DEVICE=C:\TLBMM\LASTBYTE.SYS {and any LASTBYTE options} DEVICE=C:\TLBMM\HIGHUMM.SYS 2. If an XMS driver (such as HIMEM.SYS) has already been loaded, HIGHUMM will link into it, adding the UMB functions. For example: DEVICE=C:\TLBMM\LASTBYTE.SYS {and any options} DEVICE=C:\TLBMM\HIGHDRVR.SYS C:\DOS\HIMEM.SYS DEVICE=C:\TLBMM\HIGHUMM.SYS Do not install HIGHUMM using either HIGHDRVR or the DEVICEHIGH command; simply use a DEVICE command, as shown above. 5.1 The /REPLACE Option Although described in the XMS specification, most XMS device drivers so not implement the UMB functions. If your XMS driver happens to also be a UMB provider, HIGHUMM will abort with a corresponding error message. You may then use the /REPLACE option on the HIGHUMM.SYS command line to force it to take over responsibility for providing UMBs. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 25 5.2 The /SHRINK Option This option should be used only with MS-DOS version 5.0 or later when DOS=UMB is specified in the CONFIG.SYS file. When you specify DOS=UMB in the CONFIG.SYS file, the operating system checks each device driver you install to see if it is a UMB provider. If one is discovered, the operating system then repeatedly calls the driver until all of its UMB blocks have been allocated. From this point on, the operating system takes control over this allocated memory, dispensing it as needed. As you can see, at this point the device driver is no longer needed. The /SHRINK option lets the operating system allocate almost all of the memory space normally occupied by HIGHUMM itself. When HIGHUMM detects that the last UMB block has been allocated, it then disables itself. This strategy reduces the final resident memory requirement of HIGHUMM to about 100 bytes, and makes a few more kilobytes available for use. 5.3 The /NOSPLIT Option HIGHUMM requires that LASTBYTE.SYS be installed first. It automatically loads itself into upper memory, putting much of itself into read-only shadow ram, unused HMA space, or bank-switch memory if available. The /NOSPLIT option can be used to prevent it from doing this. 5.4 The /RESTRICT Option When used, this option restricts which 128k regions of upper memory may be allocated for use with HIGHUMM. For a detailed discussion of why these regions may need to be restricted and how to control the restrictions, see the discussion of the RESTRICT option in the chapter on LASTBYTE.SYS. 5.5 Limiting UMB Memory If you want to limit how much upper memory can be allocated by HIGHUMM as UMB's, you can specify this in kbytes as an option on the HIGHUMM.SYS command line, as in: DEVICE=C:\TLBMM\HIGHUMM.SYS 60 This provides a guarantee that some amount of upper memory will never be allocated by HIGHUMM.SYS, and will thus still be available for other uses. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 26 Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 27 CHAPTER 6 - HIGHDUBL.SYS: A REPLACEMENT FOR DBLSPACE.SYS If you have installed the DOS 6 disk compression software called DBLSPACE, then each time you boot the operating system loads the device driver DBLSPACE.BIN from a hidden file in the root directory to the top of conventional memory. Later during CONFIG.SYS processing, a DEVICE=DBLSPACE.SYS command is used to relocate DBLSPACE.BIN to the bottom of conventional memory, or a DEVICEHIGH=DBLSPACE.SYS command is used with DOS=UMB and a UMB provider (like HIGHUMM.SYS) to move it to upper (UMB) memory. HIGHDUBL.SYS is a replacement for DBLSPACE.SYS. It does everything that DBLSPACE.SYS can do and more. Specifically, it has the additional ability to relocate DBLSPACE.BIN into Hi-DOS memory even if HIGHUMM.SYS and DOS=UMB are not installed. In other words, if you are using HIGHDRVR.SYS instead of DEVICEHIGH commands in CONFIG.SYS, then you should also use HIGHDUBL.SYS instead of DBLSPACE.SYS to relocate DBLSPACE.BIN, as in: DEVICE=C:\TLBMM\HIGHDUBL.SYS 6.1 The /MOVE Option The /MOVE option of HIGHDUBL is only provided for full cosmetic compatibility with DBLSPACE.SYS. It is not required in order to relocate DBLSPACE.BIN into Hi-DOS memory. If used, the proper syntax would be the same as used by DBLSPACE.SYS: DEVICE=C:\TLBMM\HIGHDUBL.SYS /MOVE 6.2 The /FORCE Option HIGHDUBL.SYS checks to see that you are running version 6.00 or 6.20 of DOS since those are the only versions that came with DoubleSpace disk compression; Microsoft changed to DriveSpace compression in DOS version 6.22, and HIGHDUBL.SYS will not work with it. If you are using the older DoubleSpace compression with a version of DOS after 6.20, you must use the /FORCE option of HIGHDUBL.SYS to force it to move DBLSPACE.BIN into High-DOS memory. If you are using DriveSpace compression, the only way to move DRVSPACE.BIN into High-DOS memory is to install HIGHUMM.SYS, DOS=UMB, and DEVICE=DRVSPACE.SYS /MOVE. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 28 6.3 The /RESTRICT Option When used as in: DEVICE=C:\TLBMM\HIGHDUBL.SYS /MOVE /RESTRICT this option restricts which 128k regions of upper memory may be used to load DBLSPACE.BIN into Hi-DOS memory. For a detailed discussion of why these regions may need to be restricted and how to control the restrictions, see the discussion of the RESTRICT option in the chapter on LASTBYTE.SYS. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 29 CHAPTER 7 - SPECIAL CONSIDERATIONS 7.1 Specifying Command Line Options with Indirect Files Some of the device drivers and utility programs in The Last Byte Memory Manager package may require lots of options to be specified. To avoid lengthly command lines, these options can be placed in a text file if the name of that file is specified on the command line preceded by the '@' character. For example, you'd begin to run out of room if all of the following options were required on the LASTBYTE.SYS command line: PHYSICAL=82C302 NAME=Joe_Blow KEY=12345678 APPEND=64 DOS=F000:32 ? As an alternative, create a corresponding text file called LASTBYTE.CFG (for example), and put the options into it: PHYSICAL=82C302 NAME=Joe_Blow KEY=12345678 APPEND=64 DOS=F000:32 ? (Carriage returns in the indirect file are treated as blanks) Then the CONFIG.SYS command line becomes simply: DEVICE=C:\TLBMM\LASTBYTE.SYS @LASTBYTE.CFG In effect, options taken from the indirect file are inserted into the command line, so that one or more indirect file references may be placed among other options on the command line: DEVICE=C:\TLBMM\LASTBYTE.SYS ? @TLB.1 A=32 @C:\TLB\TLB.2 Indirect files may be used on the command line of any device driver (.SYS files) or utility program (.EXE files) in The Last Byte Memory Manager package. 7.2 Using the DOS=F000:32 Option The 64k region starting at paragraph address F000 is the Bios ROM. Many computers use a Bios ROM developed by AMI or Phoenix. The more recent versions of these ROMs devote the first 32k to initialization code that is only used during the boot sequence, and use the second 32k for the run-time portion that must remain available at all times. (This seems to be true of the Award Bios as well, but has not been verified.) Recent versions of MR BIOS have compressed the run-time portion even more, and indicate the extent of the initialization code as Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 30 "AVAIL:F000-????" in the shadow ram setup screen. The size of the initialization code is one greater than the diference of these two hexadecimal numbers. By the time your computer gets to the point in its boot sequence where it is installing the device drivers (e.g., when it is installing LASTBYTE.SYS), the Bios initialization code is no longer needed. If you have one of these AMI or Phoenix Bios chips, you can capture another 32k of upper memory by using a DOS=F000:32 option on the LASTBYTE.SYS command line. Of course, whenever you press Ctrl-Alt-Del to do a warm boot, the ROM Bios initialization code needs to be executed again! And that could be a problem since you've effectively disabled it with the DOS=F000:32 option! Fortunately, LASTBYTE.SYS intercepts all keyboard input and keeps an eye out for Ctrl-Alt-Del. When it sees the warm boot request, it will force a cold boot if you've used the DOS=F000:32 option. This re-enables the entire 64k Bios ROM so that the initialization code is reactivated before the processor tries to execute it. Otherwise a normal warm boot is used. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º WARNING: Some TSRs intercept keyboard interrupt º º 9, and jump directly into a fixed location in º º the Bios ROM where the Warm Boot code begins. º º Unfortunately, this will bypass LASTBYTE.SYS's º º attempt to turn the ROM back on. º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 7.3 Video Display RAM above 640k In general, the region A0000-BFFFF is the video display buffer area. Various display adapters (MDA, Hercules, CGA, EGA, and VGA) typically use only a small subset of this space. The Last Byte Memory Manager automatically senses what kind of video display adapter is installed and reserves the space it uses. The MDA (monochrome) adapter implements a 4k text buffer at B0000-B0FFF, and the CGA (color) adapter implements a 16k text and graphics buffer at B8000-BBFFF. The Hercules adapter uses the entire 64k region at B0000-BFFFF in graphics modes, although only the first 4k of this space (B0000-B0FFF) is used for text modes. The EGA and VGA adapters have a 64k graphics display buffer at A0000-AFFFF, and a 32k text display buffer at either B0000-B7FFF (when used with a monochrome display), or at B8000-BFFFF (when used with a color display). Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 31 The following chart summarizes these regions as well as some of the DOS and APPEND optons you may be able to use on the LASTBYTE.SYS command line with these adapters. Unfortunately, the ROM bios on a (very) few PC's may write into locations outside the area reserved for a particular type of display. If you decide this is happening, you may need to add one or more EXCLUDE options to the LASTBYTE.SYS command line to disable that region. LASTBYTE.SYS Command Line Options for Display Adapters Adapter Reserved DOS APPEND ------- -------- ------- ------- CGA B800:16 96 MDA B000:4 64 Hercules B000:64 B400:48 64 EGA/VGA A000:64 BC00:16 96 w/Color B800:32 Display EGA/VGA A000:64 B400:16 64 w/Mono B000:32 Display VGA Bios C000:32 C600:8 (see next section) Notes: (1) Windows 3.0 may write in the region B000-BFFF. (2) The ability to use the DOS and APPEND options depends on the availability of memory in the indicated region. 7.4 Video Adapter Bios ROMs MDA and CGA use the standard ROM Bios; they have no ROM of their own. EGA and VGA adapters, however, incorporate their own ROM Bios chip right on the adapter card. LASTBYTE.SYS successfully recognizes these ROMs, but has to treat VGA in a special manner: The VGA adapter made by IBM has a 24k ROM installed at C0000-C5FFF, which means that the 8k at C6000-C7FFF should be usable. Although almost all VGA clones have a ROM signature that indicates 24k, many of them use the C6000-C7FFF space for ROM Bios or RAM extensions that provide their "Super VGA" features. In particular, the Video7 and Paradise VGA's incorporate their own RAM from C6000-C7FFF. (This may also be true of other VGA boards that uses a VLSI chip manufactured by Chips and Technologies, Tseng Labs, Paradise, or Headland Technologies.) For this reason, when LASTBYTE.SYS finds anybody's VGA adapter, it automatically assumes that there is a Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 32 32k ROM at C0000-C7FFF. 7.5 LASTBYTE.SYS and Expanded Memory Expanded memory always has an associated device driver. If that driver is loaded before LASTBYTE.SYS in the CONFIG.SYS file (and if the hardware is enabled) LASTBYTE.SYS will recognize the 64k EMM page frame of the expanded memory and do the right thing: It will treat the page frame like any other adapter ram and disable the motherboard RAM that falls in the same address space so that it doesn't interfere with the page frame. For example, if the EMM driver is loaded first, LASTBYTE.SYS will report the 64k EMM page frame as "EMS Page Frame". This works fine, of course, but loading the EMM driver first precludes the possibility of loading it into upper memory. To get the EMM driver into upper memory means that it must be loaded after LASTBYTE.SYS, but you must be careful! If LASTBYTE.SYS is loaded first, the page frame will be recognized only in two cases: 1. The page frame used by the expanded memory controller built into some memory controller chips will be recognized and reported as "EMS Page Frame". 2. The page frame of a REAL expanded memory board is (if enabled) recognized and reported as "Adapter RAM". In either case, LASTBYTE.SYS will not use that memory space. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º WARNING: Some EMS boards must be enabled by º º their device driver before they respond as º º read/write memory. This prevents LASTBYTE.SYS º º from recognizing them, and you may need a º º BANKSWITCH option to keep LASTBYTE.SYS from º º using the page frame memory space. º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ If you don't have an expanded memory board, but have used a device driver (like EMM386) that EMULATES expanded memory using extended memory, then LASTBYTE.SYS will not know about the page frame unless the emulator is loaded first. If LASTBYTE.SYS is loaded first, then you must use a EXCLUDE (not BANKSWITCH!) command line option of LASTBYTE.SYS to reserve a 64k region where the emulated page frame can be placed. For EMM386, the page frame must be positioned at C000, C400, C800, CC00, D000, Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 33 D400, D800, DC00, or E000. 7.6 Fine-Tuning your Adapter Hardware Configuration Many adapter cards occupy some portion of the upper address space. Some of these cards, such as SCSI Disk Controllers, often have DIP switches or jumpers that can be used to set the address space they occupy to one of a few alternatives. If the memory map displayed by HIGHMEM is fragmented because one of these adapters sits between two "....DOS Free" areas, you may want to try to reposition the address space occupied by that adapter by modifying the DIP switch or jumper settings on the card. Having one large free memory block is better than two smaller ones because TSR's and device drivers almost always require more memory during initialization than once installed. In other words, neither of the two smaller blocks may be large enough for the installation, but might if they were combined. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 34 CHAPTER 8 - USE WITH OTHER SOFTWARE 8.1 Microsoft's FASTOPEN and MODE programs The FASTOPEN and MODE programs that come with MS-DOS are TSR's and as such may be loaded into upper memory with HIGHTSR. Once installed, each requires very little memory, something on the order of 10k or less. However, neither will install unless a lot of memory is available - approximately 50-90k. (The actual requirement depends partly on command line options; you can determine the requirement using the /SIZE option of HIGHTSR.) ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º WARNING: Do NOT use the /LOW option of HIGHTSR º º with FASTOPEN or MODE - it won't work and could º º damage data on your disk! º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ The worst part is that if FASTOPEN fails to install itself successfully, it doesn't issue any error message - it simply doesn't display the normal "FASTOPEN installed" sign-on message. Moral: Let FASTOPEN and MODE be the first TSR's that are installed into High Memory in your AUTOEXEC.BAT file so that they get access to the maximum amount of memory. The second hassle with these two TSR's is that they cannot be removed by using the advanced utilities HIGHMARK and HIGHUNDO. Evidently they modify memory other than that tracked by HIGHMARK (the interrupt vector table and that memory allocated to them). 8.2 Microsoft's SHARE program MS-DOS 4 installs the SHARE program automatically if you have a hard disk which is greater than 32 MB in a single partition. It does this without asking because it is otherwise possible to corrupt the data on the disk when running programs that use the old File Control Block (FCB) approach to access files. Unfortunately, some internal parts of MS-DOS 4.0 also still use FCB's! So don't try to prevent SHARE from being loaded by removing it from your system! If MS-DOS can't find it, you'll get a warning message during the boot saying that "SHARE should be loaded for large media". You could load it during AUTOEXEC.BAT processing, but you'll still get the warning because the check occurs during CONFIG.SYS processing. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 35 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ NOTE: Version 5 of MS-DOS has corrected this ³ ³ problem and no longer loads SHARE automatically ³ ³ regardless of the size of your hard disk. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ So how can you load this TSR into upper memory without getting the warning? MS-DOS recently introduced the "INSTALL=" directive that allows TSR's to be installed during CONFIG.SYS processing. Programs that Microsoft suggests be loaded in this manner include FASTOPEN, KEYB, NLSFUNC, and SHARE. For example: INSTALL=C:\DOS\SHARE.EXE The above command, however, causes SHARE to be loaded down in conventional memory. to get it into upper memory, use: INSTALL=C:\TLBMM\HIGHTSR.EXE C:\DOS\SHARE.EXE ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º WARNING: Do NOT use the /LOW option of HIGHTSR º º with SHARE - it won't work and could damage º º data on your disk! º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 8.3 Microsoft's MS-DOS With the introduction of MS-DOS 5.0, Microsoft has added extensive support for loading software into high memory. This includes not only device drivers and TSRs, but also the MS-DOS disk buffers, the master environment, and most of the operating system itself. Most of this capability requires the use of an Upper Memory Block (UMB) provider such as Key Software Products' HIGHUMM.SYS. Although the MS-DOS 5.0 version of EMM386 now provides such support, there are several disadvantages to using it instead of The Last Byte Memory Manager to load software high: 1. EMM386 requires a 386 or better processor. (HIGHUMM does not.) 2. EMM386 requires that HIMEM.SYS be loaded first. (HIGHUMM does not. However, HIMEM is also needed to load the operating system itself into extended memory; The Last Byte Memory Manager allows you to load HIMEM into upper memory using HIGHDRVR.) Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 36 3. Using HIMEM and EMM386 as the basis of UMB support requires that both be loaded into conventional memory. 4. EMM386 puts the processor into protected mode, adding an instruction execution time penalty of about 5%. There are two basic approaches that you can take to load software into upper memory using MS-DOS 5.0 and The Last Byte Memory Manager. The first of these is to install HIGHUMM and use the 'DEVICEHIGH' and 'LOADHIGH' commands introduced in MS-DOS 5.0; the other is to use HIGHDRVR and HIGHTSR. We recommend the latter approach because HIGHDRVR and HIGHTSR provide a richer set of options for controlling the load high process. 8.3.1 Using DEVICEHIGH and LOADHIGH To use this approach, your CONFIG.SYS file should contain the following lines: DOS=HIGH,UMB DEVICE=C:\TLBMM\LASTBYTE.SYS {and any options} DEVICE=C:\TLBMM\HIGHDRVR.SYS C:\DOS\HIMEM.SYS DEVICE=C:\TLBMM\HIGHUMM.SYS {and any options} Then you can use the MS-DOS 5.0 DEVICEHIGH command in additional lines of your CONFIG.SYS file to load your other device drivers into upper memory, as in: DEVICEHIGH={device driver to be loaded high} DEVICEHIGH={device driver to be loaded high} . . . DEVICEHIGH={device driver to be loaded high} With this CONFIG.SYS file, your AUTOEXEC.BAT file may load TSRs high using the MS-DOS 5.0 LOADHIGH command as in: LOADHIGH C:\DOS\PRINT 8.3.2 Using HIGHDRVR and HIGHTSR The second approach is to use the HIGHDRVR and HIGHTSR utilities of The Last Byte Memory Manager in the normal manner. To use this approach, your CONFIG.SYS file should contain the following lines: Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 37 DOS=HIGH DEVICE=C:\TLBMM\LASTBYTE.SYS {and any options} DEVICE=C:\TLBMM\HIGHDRVR.SYS C:\DOS\HIMEM.SYS Then you can use HIGHDRVR in additional lines of your CONFIG.SYS file to load your other device drivers into upper memory, as in: DEVICE=C:\TLBMM\HIGHDRVR.SYS {device driver to be loaded high} DEVICE=C:\TLBMM\HIGHDRVR.SYS {device driver to be loaded high} . . . DEVICE=C:\TLBMM\HIGHDRVR.SYS {device driver to be loaded high} With this CONFIG.SYS file, your AUTOEXEC.BAT file should load TSRs high using HIGHTSR as in: C:\TLBMM\HIGHTSR C:\DOS\PRINT 8.4 Microsoft Windows In general, The Last Byte Memory Manager has a high degree of compatibility with Windows 3.0 and 3.1. If you are having trouble running Windows, first be sure that your system is properly configured so that it runs without The Last Byte Memory Manager installed. If you have isolated the problem to their combination, then perhaps the following information will help to correct the problem: 8.4.1 Modifying the Windows SYSTEM.INI File With Windows running in 386 enhanced mode, LASTBYTE.SYS and Windows will both try to use the upper memory area, thus creating a conflict. To avoid the conflict, you must ask Windows to not use this region. This can be done with a few configuration options in the [386Enh] section of the Windows SYSTEM.INI file: EMMExclude=A000-FFFF HighFloppyReads=no DualDisplay=yes SystemROMBreakPoint=no If you have used the EXCLUDE option of LASTBYTE.SYS to disable any region of the upper memory, then Windows may be told it is ok to use that area. For example, if LASTBYTE.SYS is loaded using the line: DEVICE=C:\TLBMM\LASTBYTE.SYS EXCLUDE=D000:64 then you may use the following configuration option (in addition Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 38 to the EMMExclude option above) in your SYSTEM.INI file: EMMInclude=D000-DFFF The EMMInclude option will take precedence over the EMMExclude option when the two overlap, as above. 8.4.2 Positioning an EMS Page Frame If you are using the Real or Standard modes of Windows, you may have installed an EMS device driver for those applications that need expanded memory. In an attempt to reduce fragmentation of upper memory, it is useful to position the EMS Page Frame either at the bottom or top of an otherwise empty region of upper memory. However, if you have used the DOS=F000:32 option to gain another 32k of DOS memory, don't position your EMS Page Frame at E800 - Windows will not run with it any higher than E000. The Enhanced 386 mode of Windows will automatically emulate expanded memory for those applications that require it. Unfortunately, Windows ignores the EMMExclude option and positions the EMS page frame in upper memory. If the same 64k area is used by The Last Byte Memory Manager for something else, your system may hang. To correct the problem, add an "EMSPageFrame=nnnn" option in your SYSTEM.INI file to tell Windows where to put the page frame, combined with an "EXCLUDE=nnnn:64" option on the LASTBYTE.SYS command line to keep it from using this area. 8.4.3 "Unsupported Data Configuration" The 386 Enhanced mode of Windows 3.0 (not 3.1) has a restriction that it cannot run when certain types of software have been loaded high. When this happens, Windows will terminate and display the error message, "Unsupported Data Configuration". This only happens in 386 Enhanced mode, and is not related in particular to use of The Last Byte Memory Manager. Device drivers that are known to load high without this problem include HIMEM.SYS, MOUSE.SYS, SETVER.SYS, ANSI.SYS, and all the Key Software Products device drivers. A device driver and a TSR known to cause this problem are EGA.SYS and DOSKEY.COM. If you are experiencing this error message, you can either run Windows in another mode, or try modifying your CONFIG.SYS and AUTOEXEC.BAT files to locate and remove the offending software. Microsoft has removed this restriction in version 3.1 of Windows. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 39 8.4.4 HIGHMEM and Windows 386 Enhanced Mode MS-DOS applications run from inside Windows 3.0 are given their own "virtual" address space of 640k. Windows tells the processor to map memory references in this space to the particular 640k of physical memory which has been allocated to the application. References outside this range are considered invalid and thus return garbage. Since HIGHMEM is a program that inspects upper memory between 640k and 1 meg, there's no way it can execute properly in this context. HIGHMEM will behave normally outside of Windows. 8.5 HyperWare's HyperDisk HyperDisk is a shareware disk caching utility. If you use its "XS" option to load itself into the 48k block starting at E400, be sure to exclude this area by using the following option on the LASTBYTE.SYS command line: DEVICE=C:\TLBMM\LASTBYTE.SYS EXC=E400:48 A better approach is to use either HIGHDRVR or HIGHTSR (as appropriate) to load HyperDisk high (without HyperDisk's "XS" option). This method guarantees that the minimum amount of upper memory will be used. HyperDisk can be downloaded from HyperWare's BBS at (415) 882-1735 or obtained directly from: FOLEY HI-TECH SYSTEMS CompuServe: 70262,1763 172 Amber Drive Phone: (415) 826-6084 San Francisco, CA 94131 FAX: (415) 882-1733 8.6 J.P. Software's 4DOS 4DOS is a shareware replacement for COMMAND.COM. HIGHUMM.SYS may be used to move the 4DOS command processor and its master environment into "Upper Memory Blocks" (UMB's) in the upper memory area, thus reducing the amount of conventional memory below 640k used by 4DOS from 3.4k bytes to 256 bytes. First you must install HIGHUMM.SYS as described earlier in this manual. Then add a "SHELL=" line to CONFIG.SYS for 4DOS, including the options /U (to place the command processor in an UMB) and /E:512U (to place the master environment in an UMB). The value 512 is of course only an example - other environment sizes may be specified. You may also want to specify these Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 40 options for secondary shells in the 4DSHELL environment variable. Consult the 4DOS documentation for further details. 4DOS may be downloaded from Channel 1 BBS at (617) 354-8873, or obtained directly from: J.P. Software CompuServe: 75300,210 P.O. Box 1470 BIX: "trawson" E. Arlington, MA 02174 Internet, Bitnet, etc: Voice: (617) 646-3975 75300.210@compuserve.com Fax: (617) 646-0904 8.7 David Hamilton's BUFFIT There's a very nice shareware scroll-back TSR called BUFFIT that saves lines of text that have been scrolled off the top of the screen and allows you to pull them back down for review. One of the advantages of version 3.0 and later of BUFFIT is that it will load itself entirely into a UMB provided by HIGHUMM.SYS, thus using no conventional memory at all. To install BUFFIT into upper memory, first you must install the HIGHUMM.SYS device driver by inserting the following lines in your CONFIG.SYS file: DEVICE=C:\TLBMM\LASTBYTE.SYS {and any LASTBYTE options} DEVICE=C:\TLBMM\HIGHUMM.SYS Then all you have to do is reboot your computer and run BUFFIT from the command line, or else add it to your AUTOEXEC.BAT file. BUFFIT is available from a number of BBS's, usually under the filename BUFFIT30.ZIP. 8.8 Charles Lazo's WAS On a computer with no expanded memory, you might want to use HIGHEMS3 to provide some Expanded Memory for Charles Lazo's scroll-back TSR, WAS.COM. This utility saves lines of text that have been scrolled off the top of the screen and allows you to pull them back down for review. WAS is available from a number of BBS's, usually under the filename WAS062.ZIP. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 41 8.9 Philip Gardner's DOSMAX DOSMAX is a set of utilities that compliment The Last Byte Memory Manager by moving all of the DOS "subsegments" (BUFFERS, FILES, FCBS, LASTDRIVE, STACKS, etc.), COMMAND.COM, and the DOS kernel into Upper Memory Blocks provided by HIGHUMM. Set up your CONFIG.SYS file as follows: DOS=HIGH DEVICE=C:\DOSMAX\STOPMAX.SYS DEVICE=C:\TLBMM\LASTBYTE.SYS DEVICE=C:\TLBMM\HIGHDRVR.SYS C:\DOS\HIMEM.SYS DEVICE=C:\TLBMM\HIGHUMM.SYS /REPLACE DEVICE=C:\TLBMM\HIGHDRVR.SYS C:\DOSMAX\DOSMAX.EXE /C:+ /P:- SHELL=C:\DOSMAX\SHELLMAX.COM C:\DOS\COMMAND.COM C:\DOS\ /E:512 /P If you wish, you can eliminate the use of STOPMAX.SYS by appending the /I+ or /B+ option to the DOSMAX.EXE command line. Using the full pathname of DOSMAX.EXE (i.e., C:\DOSMAX\DOSMAX.EXE) is very important. The resident stub must be able to exec DOSMAX.EXE at the proper time, and this requires the full path to DOSMAX.EXE. The latest version of DOSMAX may be downloaded from the Key Software Products bulletin board. 8.9.1 Trashed Floppy Diskettes Under certain circumstances, the combination of TLBMM and DOSMAX can cause data on floppy diskettes to be trashed. If you experience this problem, it is probably because DOSMAX has moved the DOS "Work Buffer" into a 128k region of the Upper Memory Area (640k-1meg) in which a 16-bit adapter is installed. (See the discussion about DMA in the section on the RESTRICT option of LASTBYTE.SYS that appears earlier in this document.) The solution is to simply add the "/WKBUFFER=0" option to DOSMAX: DEVICE=DOSMAX.EXE /P:- /WKBUFFER=0 This prevents DOSMAX from moving the work buffer into the UMA. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 42 APPENDIX 1 - HOW TO REACH US The Key Software Products telephone (415-364-9847) is shared by our BBS, FAX, and voice mail answering system. Approximate hours of operation are: Voice mail and FAX: 8am - 5pm PST (weekdays) BBS system: 5pm - 8am PST (24 hrs on weekends) BBS Parameters: 1200/2400/9600/14400 baud (v.32bis/v.42bis) 8 data bits, No Parity If your call is answered by the voice mail system, it can take a message that will be automatically forwarded to someone who can return your call as soon as possible. In addition, it offers a touch-tone driven menu of useful information about our product. To send us a FAX, follow the following steps: Step 1: You'll be greeted by our Voice Mail system which will prompt you to press 1 if you have a touch-tone phone. Step 2: Press 1. You'll then hear a menu that prompts you to press 5 to send a FAX. Step 3: Press 5. In a few seconds, you'll hear a FAX tone; press start on your FAX machine. That's all there is to it. Be sure to include your FAX number for the reply which will be sent back to you in one or two days. If you have access to electronic mail, you can send us a message via any of the following: On COMPUSERVE, send mail to: >Internet:tech.support@ksp.com On PRODIGY, send mail to: VGDC59A On INTERNET, UUCP, or BITNET, send mail to: tech.support@ksp.com On FIDONET, address mail to "UUCP" at nearest fidonet site which provides a gateway to Internet, such as 1:105/42. 1st line of message: To: tech.support@ksp.com Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 43 On MCI, At the "To:" prompt enter: TECH SUPPORT (EMS) At the "EMS:" prompt enter: Internet At the "Mbx:" prompt enter: tech.support@ksp.com On APPLELINK, send mail to: tech.support@ksp.com@dasnet# On TELENET's Telemail Service: Send to: [INTERMAIL/USCISI]TELEMAIL/USA 1st line of message: Forward: ARPA 2nd line of message: To: tech.support@ksp.com Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 44 APPENDIX 2 - GETTING UPDATES VIA THE INTERNET The main distribution files are as follows: TLB-T231.ZIP Contains only CHIPSET.EXE and CHIPSET.DOC. TLB-W231.ZIP Contains only WHATSNEW.DOC. TLB-V231.ZIP The minimal set of files needed. TLB-A231.ZIP Miscellaneous advanced utilities. These files are available from the KSP BBS, either by calling in and downloading, or via e-mail using the "FTPMAIL" capabilities of the BBS; I do NOT have "real" FTP capability in case you were wondering. To use FTPMAIL, you must send a message addressed to the Internet address ftpmail@ksp.com. The message must contain an FTPMAIL command entered as a single line of text, and it must be the first line in the message. The FTPMAIL commands that are supported include: Command: HELP tlbmm-l Purpose: Returns an text file with help information about FTPMAIL. Command: DIR tlbmm-l Purpose: Returns an e-mail message listing all of the file directories on the BBS by number and description. Command: LIST tlbmm-l 1 Purpose: Returns an e-mail message listing all of the files in directory #1 of the BBS. Command: GET tlbmm-l TLB-W231.ZIP Purpose: Returns an e-mail message containing a uuencoded version of the file TLB-W231.ZIP. To extract the file, you must save the message as a file on your system, edit out the e-mail header at the beginning of the file, and then use a program called UUDECODE (commonly available on Unix) to convert the uuencoded version back to the original ZIP format, and then (finally) use PKUNZIP to extract the contents of the file. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 45 APPENDIX 3 - ACKNOWLEDGEMENTS The Last Byte Memory Manager wouldn't exist without all the companies that manufacture the shadow ram memory controller chips, and who have provided techinical information on how to program their configuration registers. If you know of a memory controller chip we haven't included, please let us know and we will try to add it. The Last Byte Memory Manager consists of almost a megabyte of source code, written mostly in C with a sprinkling of assembly language, and compiled using version 3.1 of the DeSmet/C-Ware C compiler. We are grateful for the simplicity, flexibility, and speed of this compiler, as well as the generous support provided by Joel and Susan Farley of C-Ware Corporation. The Last Byte Memory Manager could not have been created without the gracious support of many people. We wish to thank the following individuals who helped to test beta versions or offered useful suggestions for new features: Ron Cohen, J.B. Compton, David Durgee, Philip Gardner, Mike Hagerty, Scott Jordahl, Alan Lambert, Rob Nee, Kevin Parris, Dan Proctor, Graham Robertson, Ken Sanquist, Tony Sheehan, Peter Summers, Steve Hodsdon, Anthony Cox, My Phung, Martin Beckmann, and Prof. Timo Salmi (of the University of Vaasa, Finland). Thank's also go to Tom Rawson of J. P. Software for providing a copy of 4DOS, to Sue Nageotte of Digital Research for providing a copy of DR DOS, to Philip Gardner for providing a copy of DOSMAX, and to Pat Gelsinger of Intel Corporation for lending his intimate knowledge of the 80x86 instruction sets. And finally, a special thanks to Serge Caron, Roger Cross, and Philip Gardner for their suggestions, technical advice, patience, and friendship. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 THE LAST BYTE MEMORY MANAGER (tm) 46 APPENDIX 4 - LIMITED WARRANTY This software is provided 'as is' without warranty of any kind, either expressed or implied, including, but not limited to the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the program is with you. Some states do not allow the exclusion of implied warranties, so the above exclusions may not apply to you. This warranty gives you specific legal rights and you may also have other rights which vary from state to state. Key Software Products has taken due care in preparing the documentation and software included in The Last Byte Memory Manager to ascertain their correctness and effectiveness. However, Key Software Products does not warrant that operation of this software will be uninterrupted or error free. In no event shall Key Software Products be liable for incidental or consequential damages in connection with or arising out of the furnishing, performance, or use of this software. LICENSE You MAY use this software on any computer or computers in your possession, but on no more than one computer at any given time. You MAY copy this software into any machine readable or printed form for backup or modification purposes in support of your use of the software. You MAY distribute the original unmodified, unlicensed version of this software, but you may not charge a fee exceeding $5.00 to cover the cost of duplicating, shipping, and handling. You may NOT distribute a licensed version of this software. You may NOT use, copy, modify, sublicense, assign or transfer this software and its license, or any copy or modification, in whole or in part, except as expressly provided for in this license. Copyright (C) 1990-94, Key Software Products. All Rights Reserved