ADVANCED UTILITIES for 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. Other company trademarks are used with the company name. TABLE OF CONTENTS CHAPTER 1 - HIGHAPND.EXE and HIGHAPND.SYS ............ 1 1.1 The APPEND= Option of LASTBYTE.SYS ..... 1 1.2 Using HIGHAPND.SYS .......................... 1 1.3 Using HIGHAPND.EXE .......................... 2 1.3.1 The HIGHAPND Report ..................... 2 1.3.2 Using HIGHAPND in .BAT Files .............. 2 1.4 Effect on EGA/VGA graphics .................... 2 1.5 The /HIRESGFX Option ......................... 3 1.5.1 /HIRESGFX=TRAPPED ..................... 3 1.5.2 /HIRESGFX=SENSED ...................... 3 1.5.3 /HIRESGFX=ALLOWED ..................... 3 CHAPTER 2 - HIGHBFRS.EXE (DOS 3 only) ................. 4 2.1 The BUFFERS= Option .................. 4 2.2 The /NORESTRICT Option ....................... 5 2.3 The /FLOPPY Option ........................... 5 2.4 The HIGHBFRS Report .......................... 5 CHAPTER 3 - HIGHDISK.SYS ........................... 7 3.1 Size and Directory Options .................... 7 3.2 The /NOSPLIT Option .......................... 7 3.3 The /STUB=0 and /STUB=1 Options ................ 8 3.4 Preloading Files into the Ram Disk .............. 8 CHAPTER 4 - HIGHEMS3.SYS and HIGHEMS4.SYS ............ 9 4.1 Controlling Memory Usage ..................... 9 4.2 The /NOSPLIT Option .......................... 9 4.3 The /RESTRICT Option ......................... 10 CHAPTER 5 - HIGHENV.EXE ............................ 11 5.1 The HIGHENV Report ........................... 11 5.2 The /PATCH Option ............................ 11 5.3 Setting the Environment Size .................. 12 CHAPTER 6 - HIGHFILE.EXE ........................... 14 CHAPTER 7 - HIGHHOLE.EXE ........................... 15 7.1 The TRACE= Option of LASTBYTE.SYS ........ 15 7.2 The TRACE= Option ....... 16 7.3 The HOLE=: Option of LASTBYTE.SYS 17 7.4 Specifying Holes in Read-Only Shadow Ram ........ 17 CHAPTER 8 - HIGHKEY.EXE ............................ 19 8.1 The /BUFSIZE=n Option ........................ 19 8.1.1 The HMA subparameter .................... 19 8.2 The /INSERT and /OVERSTRIKE Options ............ 19 8.3 The /HISTORY Option .......................... 19 8.4 Preloading the History Buffer ................. 19 8.5 The /NOSPLIT Option .......................... 20 8.6 Editing Commands ............................ 20 TABLE OF CONTENTS CHAPTER 9 - HIGHMARK.EXE and HIGHUNDO.EXE ............ 23 CHAPTER 10 - HIGHRSVD.EXE and HIGHRSVD.SYS ........... 24 10.1 Reserving High-DOS Memory ................... 24 10.2 The HIGH Suboption .......................... 24 CHAPTER 11 - HIGHSPLR.EXE .......................... 25 11.1 The /NOSPLIT Option ......................... 25 11.2 Specifying the Buffer Size ................... 25 11.2.1 The HMA subparameter ................... 25 11.3 Specifying the Logical Device ................ 26 11.4 Specifying the Hardware Interrupt ............ 26 11.5 Specifying Flow Control ..................... 26 11.6 The MONITOR Option .......................... 27 11.7 The RESET Option ............................ 27 11.8 The NOTEST Option ........................... 27 Oct 09, 1994 ADVANCED UTILITIES 1 CHAPTER 1 - HIGHAPND.EXE and HIGHAPND.SYS HIGHAPND enables or disables an appendage of up to 96k onto the end of conventional memory. When enabled, this can increase conventional memory from 640k to as much as 736k. HIGHAPND requires either a memory controller chip or an EGA or VGA display adapter. If the memory controller chip can enable shadow ram memory at A000, then shadow ram memory will be used to extend conventional memory; otherwise, HIGHAPND will convert the graphics display buffer of the EGA or VGA display adapter into an extension of conventional memory. 1.1 The APPEND= Option of LASTBYTE.SYS To use HIGHAPND, you must first allocate the memory to be appended using the APPEND option of LASTBYTE.SYS. For example, to allow HIGHAPND to append 64k to the end of the 640k of Conventional memory, you must add the following option to LASTBYTE.SYS: DEVICE=C:\TLBMM\LASTBYTE.SYS ... APPEND=64 ... Monochrome (MDA), Hercules, and CGA display adapters don't use the 64k region starting at A000, and so this address space can be used to extend conventional memory from 640k to 704k, provided there is shadow ram available in this area. CGA display adapters don't use the next 32k either, and so CGA users may be able to extend conventional memory all the way to 736k. EGA and VGA display adapters have a 64k hi-resolution graphics display buffer that is located at A000. This buffer is only needed when you are using only hi-resolution graphics. When the display is in either text or low-resolution CGA graphics modes, this memory is not used, and may be replaced (switched) with shadow ram memory if available, or the display buffer itself may be used as additional conventional memory. Since most EGA and VGA adapters usually don't use the 32k region at B000, you should even be able to extend conventional memory up to 736k. 1.2 Using HIGHAPND.SYS To enable the appendage during CONFIG.SYS processing, place the following command in your CONFIG.SYS file: DEVICE=C:\TLBMM\HIGHAPND.SYS ON To subsequently disable the appendage during CONFIG.SYS Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 2 processing, use: DEVICE=C:\TLBMM\HIGHAPND.SYS OFF 1.3 Using HIGHAPND.EXE To enable the appendage during AUTOEXEC.BAT processing (or at any time after the computer is booted), use the command: C:\TLBMM\HIGHAPND ON and to subsequently disable the appendage, use: C:\TLBMM\HIGHAPND OFF 1.3.1 The HIGHAPND Report HIGHAPND can be used without any command line options to determine the current size of conventional memory and the state of EGA/VGA hi-resolution graphics: C:\TLBMM\HIGHAPND 1.3.2 Using HIGHAPND in .BAT Files You can put these commands into a batch file to simplify switching back and forth. For example, if you want the extra memory all the time except when you need hi-res graphics for Microsoft Windows, create a batch file like the following: @ECHO OFF C:\TLBMM\HIGHAPND OFF >NUL WIN %1 %2 C:\TLBMM\HIGHAPND ON >NUL 1.4 Effect on EGA/VGA graphics HIGHAPND will automatically disable any EGA or VGA hi-resolution graphics capability whenever conventional memory has been extended beyond 640k. This makes software that attempts to sense what type of display adapter is installed think that you have only a CGA adapter. Later, when you need the graphics capability, you can disable the memory extension and hi-resolution graphics will be automatically re-enabled. If you have hi-res graphics disabled and run a program that tries to use hi-res graphics without first sensing for an EGA or Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 3 VGA adapter, LASTBYTE.SYS will notice the conflict, issue an error message, and terminate the program. Some programs redirect a few interrupts during their initialization and then restore them before termination. LASTBYTE.SYS's termination of graphics programs doesn't know how to restore these interrupts, so in some cases you may have to reboot the computer. In other words, if you experience this kind of program termination with an application program, it's best to reboot and prepare a batch file (as shown above) to run the program. 1.5 The /HIRESGFX Option HIGHAPND provides more detailed control over this protection through the /HIRESGFX option as described below. This may be helpful, for example, with software that uses the 43 (50) line text mode of the EGA (VGA) adapter. (The setting of this option is only meaningful when HIGHAPND ON is in effect.) 1.5.1 /HIRESGFX=TRAPPED Disables all EGA/VGA high-resolution graphics functions provided by video BIOS interrupt 10h and makes programs think a CGA adapter is installed. (This is the default.) 1.5.2 /HIRESGFX=SENSED Disables all EGA/VGA high-resolution graphics functions provided by video BIOS interrupt 10h, but does let programs sense the presence of an EGA or VGA adapter. 1.5.3 /HIRESGFX=ALLOWED Allows all video BIOS interrupt 10h function calls, even if they might use the 64k EGA/VGA graphics display buffer at A000-AFFF. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 4 CHAPTER 2 - HIGHBFRS.EXE (DOS 3 only) HIGHBFRS can be used to place DOS 3.x buffers in upper memory. Do NOT attempt to use HIGHBFRS with any other version of DOS - it will NOT work. Microsoft recommends setting the BUFFERS option in CONFIG.SYS according to the type of application most frequently used. Implicit within this recommendation is the assumption that you won't change the value very often since it requires editing CONFIG.SYS and rebooting. In general, more buffers help when running programs that perform random access on a relatively small number of disk records (such as the index for a database program), or if your disk has many subdirectories organized on several levels. Since HIGHBFRS allows you to increase or decrease the number of buffers dynamically, you could create some batch files to tune the number of buffers to fit the application you're running at the moment. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º WARNING: Placing DOS buffers in high memory º º can result in the loss of data. I.e., it can º º damage the directory and file allocation tables º º of your disk. Read everything in this section º º before considering the use of this utility. º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ You MUST be careful that moving the DOS buffers into upper memory does not cause DMA transfers into a 128k region of upper memory that contains a 16-bit adapter, or else you may damage the data on your disk. See the discussion of the RESTRICT option of LASTBYTE.SYS, and the /NORESTRICT and /FLOPPY options discussed below. 2.1 The BUFFERS= Option HIGHBFRS defaults to the maximum number of buffers that will fit in the free High-DOS memory up to the DOS limit of 99 buffers. However, you will probably want to reserve some of this memory for other uses. This option changes the number of DOS buffers to the value specified; is a number from 1-99. For example, the command: C:\TLBMM\HIGHBFRS BUFFERS=20 will establish twenty buffers (about 10k) in High-DOS memory. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 5 You may run the HIGHBFRS command more than once to dynamically change the number of buffers whenever you like. You may use BUFFERS=MAXIMUM to establish as many buffers (up to 99) as will fit in upper memory. 2.2 The /NORESTRICT Option Each time you boot, LASTBYTE.SYS checks each of the three 128k regions of upper memory for the presence of 16-bit adapters and records this information for later use by HIGHBFRS. By default, HIGHBFRS will only place buffers in those 128k regions where there are no 16-bit adapters. You may override this default by using the /NORESTRICT option on the HIGHBFRS command line, as in: C:\TLBMM\HIGHBFRS /NORESTRICT ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Use of the /NORESTRICT option is not recommendedº ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ If none of the three 128k segments is considered "safe", HIGHBFRS will default to the interception of floppy transfers as described in the next section. 2.3 The /FLOPPY Option If all three 128k upper memory regions contain 16-bit adapters, then a second (different) solution may be both necessary and sufficient. This option causes transfers between floppy disk drives and upper memory to be redirected through an intermediate sector buffer in conventional (low) memory. The corresponding command line option would be: C:\TLBMM\HIGHBFRS /FLOPPY Almost all hard disk controllers use CPU instructions (rather than DMA) to transfer data and thus do not incur this problem. 2.4 The HIGHBFRS Report When HIGHBFRS is invoked with no command line arguments, it simply reports the number of DOS buffers presently located in upper memory and whether or not transfers between floppy disk drives and upper memory are redirected. You may use the HIGHMEM program to determine where the buffers have been placed in upper memory. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 6 Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 7 CHAPTER 3 - HIGHDISK.SYS HIGHDISK.SYS is a device driver that implements a ram disk in upper memory. Bank-Switch Memory is allocated first, and if that isn't enough, then High-DOS Memory is allocated to satisfy the total request. HIGHDISK automatically loads itself into upper memory; do not use either HIGHDRVR or the DEVICEHIGH command; simply use a DEVICE command, as in: DEVICE=C:\TLBMM\HIGHDISK.SYS This example creates a ram disk that uses all available upper memory, with 32 directory entries and sectors of 128 bytes each. 3.1 Size and Directory Options One to three numeric command line options may be used to control the total size, sector size, and the number of root directory entries using the following syntax: DEVICE=C:\TLBMM\HIGHDISK.SYS [KBytes] [BytesPerSector] [RootDirEntries] For example, the command: DEVICE=C:\TLBMM\HIGHDISK.SYS 100 256 64 creates a 100k RAM disk with 256 bytes per sector and 64 root directory entries. Other options (described below) can be placed before, after, or in between these numeric parameters on the command line. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º NOTE: If you have used the command DOS=UMB or º º DOS=HIGH,UMB with HIGHUMM.SYS to let DOS 5.0 º º manage the Upper Memory Blocks, you must limit º º how much upper memory HIGHUMM can use so that º º some will be available for HIGHDISK. º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 3.2 The /NOSPLIT Option HIGHDISK 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 memory, or bank-switch memory if available. As shown below, however, the /NOSPLIT option can be used to keep it in a single memory Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 8 block. DEVICE=C:\TLBMM\HIGHDISK /NOSPLIT 3.3 The /STUB=0 and /STUB=1 Options By default, HIGHDISK 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). 3.4 Preloading Files into the Ram Disk HIGHDISK can preload a set of files into the ram disk during CONFIG.SYS processing, provided HIGHDISK does not leave a stub in conventional memory (see previous section). Simply add one or more filespecs on the command line, each preceeded by a dollar sign, as in: DEVICE=C:\TLBMM\HIGHDISK.SYS $PRELOAD.DAT $C:\TLBMM\HIGHTSR.EXE An "indirect" file (e.g., DEVICE=C:\TLBMM\HIGHDISK.SYS @HIGHDISK.OPT) containing one or more options per line can be used instead if the list is too long. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 9 CHAPTER 4 - HIGHEMS3.SYS and HIGHEMS4.SYS Two expanded memory emulators are provided with The Last Byte Memory Manager. Both use upper memory as expanded memory. HIGHEMS3.SYS is compliant with the older LIM 3.2 spec, and HIGHEMS4.SYS with the newer LIM 4.0 spec. Use only one of these device drivers, and load it after LASTBYTE.SYS. Both are included since the HIGHEMS3.SYS requires much less memory for the device driver itself than HIGHEMS4.SYS. In many applications, you may find that 3.2 is all you need. These device drivers EMULATE expanded memory! That means that they use software to copy data back and forth between the logical EMS memory (pages) and the page frame. Obviously, this is much slower than the performance you would realize with hardware support, or even with EMM386. Therefore, these device drivers are provided as a last resort for those who have no other way of providing EMS memory to their applications, such as users with only 1 meg of memory. Do not install HIGHEMS3 or HIGHEMS4 using either HIGHDRVR or the DEVICEHIGH command - simply use a DEVICE command as in: DEVICE=C:\TLBMM\HIGHEMS3.SYS 4.1 Controlling Memory Usage By default, both HIGHEMS3.SYS and HIGHEMS4.SYS will allocate as many 16k logical pages as possible, first from Bank-Switch memory and then from High-DOS memory. You can specify the number of logical pages to allocate as a numeric parameter on the command line, as in: DEVICE=C:\TLBMM\HIGHEMS3.SYS 4 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º NOTE: If you have used the command DOS=UMB or º º DOS=HIGH,UMB with HIGHUMM.SYS to let DOS 5.0 º º manage the Upper Memory Blocks, you must limit º º how much upper memory HIGHUMM can use so that º º some will be available for HIGHEMS3/HIGHEMS4. º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 4.2 The /NOSPLIT Option HIGHEMS3.SYS and HIGHEMS4.SYS automatically load themselves into upper memory, putting as much of their executable code as possible into the HMA or bank-switch memory if available. You Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 10 can prevent it from putting part of their code in bankswitch memory by using the /NOSPLIT option, as in: DEVICE=C:\TLBMM\HIGHEMS3.SYS /NOSPLIT 4.3 The /RESTRICT Option This option restricts the placement of the EMS page frame to a 128k region of upper memory that does not contain a 16-bit adapter. For a detailed discussion of why these regions may need to be restricted and how to control the restrictions, see the discussion on the RESTRICT option of LASTBYTE.SYS in the file LASTBYTE.DOC. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 11 CHAPTER 5 - HIGHENV.EXE HIGHENV is a utility that moves the master environment of the command processor (typically COMMAND.COM) out of conventional memory and into High-DOS memory. It can also be used to change the size of the environment at any time. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º WARNING: HIGHENV is incompatible with Novell. º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º NOTE: The /U option of 4DOS is an alternative º º method for placing the master environment in º º upper memory. You don't need to use HIGHENV if º º you are already using the /U option of 4DOS. º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 5.1 The HIGHENV Report If used without a command line option, HIGHENV simply reports the location, capacity, and length of the master environment. If the environment has not been moved from low memory, it also examines and reports potential references to the environment that exist within the command processor. If one or more are located, the first line(s) of output from HIGHENV will be: "Potential command processor patch at location XXXX." where "XXXX" will vary from one command processor to another. HIGHENV should be used this way at least once to determine what /PATCH options (described below) may be required. 5.2 The /PATCH Option To move the master environment into upper memory, you must use one or more /PATCH options to specify locations in the command processor that must be modified. (If there are no locations in the command processor that need to be modified, use /PATCH=NONE.) The /PATCH option may only be specified once, when the environment is moved from low to upper memory. The patch locations are recorded in upper memory and are automatically adjusted if the environment is repositioned within upper memory as the result of a subsequent use of HIGHENV to resize the environment. A maximum of four command processor locations to be patched may be specified in either of two ways: Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 12 C:\TLBMM\HIGHENV 256 /PATCH=1057 /PATCH=1536 -or- C:\TLBMM\HIGHENV 256 /PATCH=1057,1536 Each of the patch numbers specify a location in the memory image of the command processor; these locations contain the segment address of the master environment, and must be modified to point to the new master environment in upper memory. Possible values to be used are restricted to those locations reported when HIGHENV is run with no command line options and before the environment has been moved into upper memory. COMMAND.COM usually contains only one such location that needs to be patched; 4DOS contains none (use /PATCH=NONE). (Note: HIGHENV always patches the environment address stored in the program segment prefix of the command processor - this patch does not need to be specified.) 5.3 Setting the Environment Size The size option is simply a number that specifies the extra space in bytes to be allocated to accomodate additional environment strings besides those already established. If the size option is omitted, the size of the environment block (and thus its capacity for growth) will not be changed. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º WARNING: The SET command of COMMAND.COM norm- º º ally warns you if you run out of space in the º º master environment. However, if you have used º º HIGHENV to move it into upper memory, this º º safeguard no longer exists - you'll just write º º over the next thing in upper memory! Be sure º º to check the HIGHENV report to be sure that you º º have enough extra space in the environment so º º that this won't occur. º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Once moved into upper memory, the size of the environment may be changed by using HIGHENV with simply a size option. For example, to shrink the environment to only enough room for the current environment strings, use: C:\TLBMM\HIGHENV 0 Or to change the growth capacity to allow for the current environment strings plus 100 bytes more, use: Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 13 C:\TLBMM\HIGHENV 100 Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 14 CHAPTER 6 - HIGHFILE.EXE This program is used to implement most of the CONFIG.SYS "FILES=n" directive in High-DOS memory rather than in Conventional memory. The amount of memory required by the "FILES=n" directive is approximately 'n' times 59 bytes. Set the minimum of FILES=8 in the CONFIG.SYS file, and then place the rest in High-DOS memory. For example, the command: C:\TLBMM\HIGHFILE 42 will add an additional FILES=42 (2500 bytes) in High-DOS memory, for a total of FILES=50. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ NOTE: Windows 3.0 may not run in 386 Enhanced ³ ³ mode with FILES in upper memory. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 15 CHAPTER 7 - HIGHHOLE.EXE HIGHHOLE is a utility program that finds unused space ("holes") in ROMs. A "hole" is defined as a sequence of at least 128 bytes, all having the same value, and usually corresponds to unused, left-over space in the ROM. If the ROM is shadowed, this space can usually be converted into free High-DOS memory by using the HOLE option of LASTBYTE.SYS. Another part of the contents of a ROM that may be used are the character generator font tables for unused display modes. For example, the EGA and VGA adapter ROM bios contains a font table for smaller than usual characters consisting of an 8x8 matrix of dots. Holes are often less than 1k in size, but occassionally much larger. Since The Last Byte Memory Manager uses a "best fit" strategy when allocating Hi-DOS memory, even the smaller holes can become useful to hold the master environment created by HIGHENV, the markers of HIGHMARK, or with utilities like HIGHDISK and HIGHSPLR that can distribute their memory among several small pieces. In addition, The Last Byte Memory Manager will use the smallest holes for memory control blocks (MCB's) that must be allocated for Bank-Switch memory needs. 7.1 The TRACE= Option of LASTBYTE.SYS The field "" should be replaced by either the word "MAINBIOS" or "VIDEOBIOS", as in TRACE=MAINBIOS or TRACE=VIDEOBIOS. These options 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. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Tracing may not be possible on all machines ³ ³ because it inherently interferes with the ³ ³ timing of software that is controlling physical ³ ³ devices. At best, your computer will slow down ³ ³ considerably; at worst, it may not function. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ The TRACE options should NOT be combined with any other command line options other than the NAME, KEY, and PHYSICAL options. Once used for its intended purpose, the TRACE option(s) should be removed from your configuration. Either option installs a 1 kb stub in upper memory that traces the execution of code in the corresponding bios. The first Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 16 execution of HIGHHOLE terminates tracing, then removes and examines the stub to identify unused portions of the bios. The objective is to boot with tracing enabled, run as much application software as you can, then run HIGHHOLE to see what portion of the bios can be converted to "holes". Holes identified in this manner will be described in the HIGHHOLE output as "Untraced video bios" or "Untraced main bios". One or more of these HOLE options may then added to the LASTBYTE.SYS command line options. Don't forget to remove the TRACE options from the command line of LASTBYTE.SYS. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ If you don't use some device or feature during ³ ³ tracing, HIGHHOLE may report more usable hole ³ ³ space than actually exists! For example, ³ ³ if you never do a print screen while tracing, ³ ³ the corresponding portion of the bios won't be ³ ³ traced, and thus it will be reported as a hole. ³ ³ Don't forget that this can happen with video ³ ³ graphics modes, serial communications, etc. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ It's always best when tracing to boot from a floppy; that way, if it hangs you can always go back to booting from your hard disk without tracing. However, sometimes everything except the floppy disk drives will function normally during tracing. If you have DOS 6 or later, you can safely add the TRACE option directly to the CONFIG.SYS file on your hard disk; if tracing hangs, just press function key F5 at the beginning of the boot process to bypass your CONFIG.SYS and AUTOEXEC.BAT files, thus avoiding installation of LASTBYTE.SYS (and thus tracing). Then you can remove the TRACE option using an editor and go back to normal operation. 7.2 The TRACE= Option The TRACE=MAINBIOS option enables tracing of the following main bios interrupt vectors: 02h NMI (Power Fail) 05h Print Screen 08h Timer Tick Request 09h Keyboard Request 0Eh Diskette Request 11h Equipment List 12h Memory Size 13h Fixed Disk 14h Serial Port 15h System Services 16h Keyboard Service 17h Printer Service 1Ah Time of Day 40h Diskette Revector If the TRACE=MAINBIOS option causes your computer to hang during the boot process, it may be that tracing one or two specific Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 17 interrupt vectors may be the problem. You may trace a specific subset of these interrupt vectors by using a different form of the TRACE option, as in: TRACE=08,09,0E,11,1A 7.3 The HOLE=: Option of LASTBYTE.SYS HIGHHOLE merely locates probable holes, and suggests the corresponding HOLE options to be used with LASTBYTE.SYS, as in: DEVICE=C:\TLBMM\LASTBYTE.SYS HOLE=C7F3:176 ..... ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ NOTES: The and parameters are ³ ³ different from other options: is in bytes³ ³ and must be a multiple of 16; may be ³ ³ any hexadecimal value from A000 to FFFF. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ You must modify your LASTBYTE.SYS configuration to include the HOLE options that you want to use from the HIGHHOLE report. There's no gaurantee that all of the HOLE options suggested by HIGHHOLE will work on you computer, so it's a good idea to try them one at a time. HIGHHOLE will not suggest a HOLE option if the corresponding ROM area is not shadowed, or if the corresponding shadow ram is not controlled by The Last Byte Memory Manager. HIGHHOLE also reports all the character generator font tables as possible hole options. If you use any software that causes the video mode to be reset (such as the "MODE CO80" or "MODE MONO" commands, or such as exiting from Windows), then the video bios will attempt to access one of the font tables. Those marked as "(ACTIVE)" in the HIGHHOLE report are needed to reset standard display modes and therefore are not good choices for HOLE options; others font tables may usually be used as holes if you never use their corresponding display modes. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ NOTE: Use of LASTBYTE.SYS's HOLE option will ³ ³ cause warm boots to be converted to cold boots. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 18 7.4 Specifying Holes in Read-Only Shadow Ram Many memory controller chips require that the main bios shadow ram (F000-FFFF) be read-only. In general, such memory cannot be used to load device drivers or TSR's. However, some of the utility programs of The Last Byte Memory Manager, and some of the data these programs use can be placed into read-only memory. If the main bios shadow ram is read-only, the corresponding HOLE options will be indicated as read-only in the HIGHHOLE report. These regions are specified with HOLE options in the same manner as other holes; LASTBYTE.SYS will automatically determine from the type of memory controller (PHYSICAL option) and the hole's memory address whether it is read-only or read-write. HIGHMEM marks free Hi-DOS memory created by read-only HOLE options with "[R/O]" in the Type column. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 19 CHAPTER 8 - HIGHKEY.EXE HIGHKEY is a advanced command line editor that can recall and edit previous commands. HIGHKEY is similar to the DOSKEY program in DOS 5, but with filename completion and the unique ability to store the command line history and much of its own executable code in Bank-Switch memory. It does not support DOSKEY macros, or the editing keys F7, F9, Alt+F7, or Alt+F10. To install HIGHKEY, simply enter it as a command at the prompt: C:\TLBMM\HIGHKEY This will allocate a recall buffer with a default size of 512 bytes, but which can be changed at any time with the use of a command line option. 8.1 The /BUFSIZE=n Option This option empties the recall buffer, and resizes it to 'n' bytes. If 'n' is replaced by the word MAXIMUM, the recall buffer size will use all available memory up to 65535 bytes. 8.1.1 The HMA subparameter Appending ",HMA" to the end of the /BUFSIZE=n option as in: /BUFSIZE=1000,HMA tells HIGHKEY to try to put its command line recall buffer into the HMA. Doing so, however, prevents future resizing of the buffer. 8.2 The /INSERT and /OVERSTRIKE Options These options set the default typing mode to insert or overstike, respectively. 8.3 The /HISTORY Option This option displays the contents of the command line recall buffer on the screen. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 20 8.4 Preloading the History Buffer This option consists of simply a filename given on the command line, optionally preceeded by a drive and directory specification. It may be used together with the /HISTORY option to write the recall buffer to a file, as in: C:\TLBMM\HIGHKEY /HISTORY Or used without the /HISTORY option to load the recall buffer from a file, as in: C:\TLBMM\HIGHKEY 8.5 The /NOSPLIT Option HIGHKEY 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. C:\TLBMM\HIGHKEY /NOSPLIT 8.6 Editing Commands Some of the HIGHKEY editing commands use what is known as the "template". The template is initialized to a copy of the previous command line, but may be modified by one or more of the editing commands. Left Arrow Moves the cursor back one character. Right Arrow Moves the cursor forward one character. Up Arrow Recalls the previous command and stores it in the template. Down Arrow Recalls the next command and stores it in the template. PgUp Recalls the oldest command and stores it in the template. PgDn Recalls the most recent command and stores it in the template. Ctrl+Left Arrow Moves the cursor back one word. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 21 Ctrl+Right Arrow Moves the cursor forward one word. Home Moves the cursor to the beginning of the command line. End Moves the cursor to the end of the command line. Esc Erases the command line; does not affect the template. Ins Toggles insert versus overwrite mode. Backspace Deletes the character to the left of the cursor; does not affect the template. Del Deletes the character at the cursor; does not affect the template. Ctrl+End Deletes from the cursor to the end of the line; does not affect the template. Ctrl+Home Deletes from the beginning of the line up to but not including the cursor; does not affect the template. F1 Copies one character from the template. F2 Waits for a keypress, then inserts charac- ters from the template up to but not in- cluding the first occurrence of that key. F3 Copies the remainder of the template to the command line. F4 Waits for a keypress, then deletes charac- ters from the template up to but not in- cluding that key. The template is then displayed on the command line. F5 Copies the command line to the template and then erases the command line. F6 Inserts an end-of-file character (Ctrl+Z). F8 Searches for the next command that matches the characters in the command line up to the position of the cursor, then copies that command to the template. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 22 Tab Searches for a file on the disk whose name matches the partial filespec given by the text indicated by the cursor. If found, the filespec is completed on the command line. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 23 CHAPTER 9 - HIGHMARK.EXE and HIGHUNDO.EXE Sometimes it can be useful to remove one or more TSR's from memory, either because you no longer want to use the features that they provide or perhaps in order to make room for other software. In order to be able to remove a group of TSR's from upper memory, they must be be marked. To mark them, run HIGHMARK once before you use HIGHTSR to load the TSR's. Then later, simply run HIGHUNDO - the mark and all of its associated TSR's will be removed. HIGHMARK may be executed more than once to establish multiple levels of TSR's to be removed. Each execution of HIGHMARK places another mark in memory with a unique mark number. HIGHMARK attempts to store the mark in read-only shadow ram, then bank-switch memory, then Hi-DOS memory. Every TSR loaded by HIGHTSR is automatically associated with the most recent execution of HIGHMARK. You can use HIGHMEM to see the marks, their mark number, and the set of TSR's associated with the mark. Every execution of HIGHUNDO will then remove the set of TSR's associated with the most recent HIGHMARK. You may specify a mark level on the command line of HIGHUNDO. This will cause it to remove all the TSR's and marks whose mark number is greater than or equal to the number on the command line. Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 24 CHAPTER 10 - HIGHRSVD.EXE and HIGHRSVD.SYS HIGHRSVD helps control the allocation of upper memory in The Last Byte Memory Manager. Basically, it is used to reserve and later release selected blocks of memory. There are two versions of HIGHRSVD, a device driver (HIGHRSVD.SYS) for use in CONFIG.SYS, and an application program (HIGHRSVD.EXE) for use outside of CONFIG.SYS. Each time HIGHRSVD is invoked, it begins by releasing any memory that had been reserved by a previous invocation of HIGHRSVD. Then if any command line options are specified, each is used to reserve a block of memory. 10.1 Reserving High-DOS Memory Blocks of High-DOS memory can be reserved by specifying their size as parameters on the command line as in: DEVICE=C:\TLBMM\HIGHRSVD.SYS 10000 5000 2000 -or- C:\TLBMM\HIGHRSVD 10000 5000 2000 Both of the above examples will reserve three blocks of memory: one of 10,000 bytes, a second block of 5,000 bytes, and a third block of 2,000 bytes. HIGHRSVD will attempt to satisfy each request by using a "best fit" strategy; that is, it will reserve a block a memory using the smallest free block that is large enough to satisfy the request. For example, if you have three free blocks of 1000, 5000, and 10000 bytes respectively, an option of 4000 will reserve 4000 bytes from the free block of 5000. 10.2 The HIGH Suboption By default, the reserved block will be positioned at the low end of the selected free block's address space; you may position the reserved block at the top of the address space by adding ",HIGH" to the size specification, as in: C:\TLBMM\HIGHRSVD 4000,HIGH Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 25 CHAPTER 11 - HIGHSPLR.EXE HIGHSPLR is a interrupt-driven print spooler that creates a print buffer in upper memory. Once installed, programs that send output to the printer are no longer held up waiting for the printer, but rather simply send their output to the buffer. Characters in the buffer are then sent to the printer by the resident portion of HIGHSPLR while your computer is free to do other work. Unlike the DOS printer spooler (PRINT), HIGHSPLR is driven by the printer hardware interrupt line that signals printer "ready", rather than the timer tick (that only interrupts 18 times per second). Unlike PRINT, this allows full-speed transfers (e.g., up to about 8,000 cps) to the printer even while executing other programs. HIGHSPLR tries to place its buffer in Bank-Switch memory, but will use High-DOS memory if a sufficient amount of Bank-Switch memory is not available. The command line syntax for HIGHSPLR is given below. C:\TLBMM\HIGHSPLR [opt] [opt] ... [opt] All parameters are optional and may be specified in any order. All of the options except LPT, COM, and IRQ may be abbreviated by their first letter. 11.1 The /NOSPLIT Option Depending on the characteristics of your chipset, you may also have read-only memory available; if so, HIGHSPLR will try to put most of its code there. However, you may use the /NOSPLIT command line option to prevent this. 11.2 Specifying the Buffer Size The size of the print buffer will default to all available Bank-Switch and High-DOS memory. This option may be used to use a smaller buffer, or to resize the buffer later, as in: KBYTES=20 Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 26 11.2.1 The HMA subparameter Appending ",HMA" to the end of the KBYTES=n option as in KBYTES=20,HMA tells HIGHSPLR to use the HMA first when allocating its command line recall buffer. Doing so, however, limits future resizing of the buffer to a size no smaller than the amount first allocated within the HMA . 11.3 Specifying the Logical Device HIGHSPLR supports both parallel and serial printers, but defaults to LPT1. Multiple copies of HIGHSPLR can be installed to support more than one printer. You can specify the logical device by placing one of the following options on the command line: LPT1 LPT2 LPT3 COM1 COM2 COM3 COM4 HIGHSPLR automatically determines the physical i/o port address from the device name (e.g., LPT2), but you can override this with the PORT option, as in: PORT=# 11.4 Specifying the Hardware Interrupt HIGHSPLR determines a default physical interrupt vector from the device name (e.g., LPT2), but you can override this by using one of the following options on the command line: IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 If you would rather use polling instead of interrupt-driven I/O, place the word "POLL" on the command line and do not use one of the IRQ# options. This may be necessary if another parallel port is in use for some other purpose (e.g., with Lantastic/Z). 11.5 Specifying Flow Control Serial ports usually require some form of flow control. HIGHSPLR does not implement flow control by default. To have it use flow control, place one of the following options on the command line: Copyright (C) 1990-94, Key Software Products. All Rights Reserved Oct 09, 1994 ADVANCED UTILITIES 27 FLOW=, where is selected from: XON DTR RTS NONE (default) 11.6 The MONITOR Option HIGHSPLR has a unique "monitor" option. While output is being sent to the printer, you can monitor the actual transfer rate by entering the command, C:\TLBMM\HIGHSPLR MONITOR The monitor operation may be terminated at any time by pressing a key, or will automatically terminate when the print buffer has been emptied. Once terminated, HIGHSPLR will display the maximum and average transfer rates measured during the monitor operation. 11.7 The RESET Option The RESET option provides a way to cancel printing from the buffer (and do a form-feed) at any time. 11.8 The NOTEST Option The NOTEST option disables the default test for functionality of the physical port that occurs when HIGHSPLR is first installed. Copyright (C) 1990-94, Key Software Products. All Rights Reserved