home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware 1 2 the Maxx
/
sw_1.zip
/
sw_1
/
MEM_MAN
/
TLB_V202.ZIP
/
LASTBYTE.DOC
< prev
next >
Wrap
Text File
|
1992-07-02
|
161KB
|
3,902 lines
THE LAST BYTE MEMORY MANAGER (tm)
An Upper Memory Manager for MS-DOS
Version 2.02
Copyright (C) 1990-92
All Rights Reserved
by
KEY SOFTWARE PRODUCTS
440 Ninth Avenue
Menlo Park, California 94025
(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.
THE LAST BYTE MEMORY MANAGER (tm)
Table of Contents
CHAPTER 1 - INTRODUCTION ........................... 4
1.1 Important Advantages ........................ 4
CHAPTER 2 - SYSTEM REQUIREMENTS ..................... 6
2.1 Supported Hardware .......................... 6
2.2 Checking Compatibility Using CHIPSET .......... 8
CHAPTER 3 - DISTRIBUTION FILES ...................... 11
CHAPTER 4 - GETTING STARTED ......................... 13
4.1 Testing LASTBYTE.SYS HIGHDRVR.SYS and HIGHTSR.EXE 13
4.2 Mapping Upper Memory with HIGHMEM .............. 15
4.3 Running the LICENSE Program ................... 16
CHAPTER 5 - DETAILED DESCRIPTIONS ................... 17
5.1 LASTBYTE.SYS ............................... 17
5.2 HIGHAPND.EXE and HIGHAPND.SYS ................ 23
5.3 HIGHBFRS.EXE (MS-DOS 3 only) .................. 26
5.4 HIGHDISK.SYS ............................... 27
5.5 HIGHDRVR.SYS ............................... 28
5.6 HIGHEMS3.SYS and HIGHEMS4.SYS ................ 29
5.7 HIGHENV.EXE ................................ 30
5.8 HIGHFILE.EXE ............................... 32
5.9 HIGHHOLE.EXE ............................... 32
5.10 HIGHKEY.EXE ............................... 33
5.10.1 Options .............................. 33
5.10.2 Editing Commands ...................... 34
5.11 HIGHMARK.EXE .............................. 35
5.12 HIGHMEM.EXE ............................... 36
5.13 HIGHRSVD.EXE and HIGHRSVD.SYS ............... 36
5.14 HIGHSPLR.EXE .............................. 37
5.15 HIGHTSR.EXE ............................... 38
5.15.1 The /NOENV Option ...................... 39
5.16 HIGHUMM.SYS ............................... 40
5.17 HIGHUNDO.EXE .............................. 41
CHAPTER 6 - HINTS / SUGGESTIONS / EXPLANATIONS ......... 42
6.1 The /SIZE Option ............................. 42
6.1.1 Measuring Load Requirements Using /SIZE ... 42
6.1.2 Achieving Best Fit Using /SIZE:n1 ......... 43
6.1.3 Borrowing Initialization Memory Using /SIZE:n1 43
6.2 The /LOW Option .............................. 43
6.3 The /RESTRICT Option ......................... 44
6.4 The /!NOPAUSE Option ......................... 44
6.5 Specifying Command Line Options with Indirect Files 44
6.6 Using the DOS=F000:32 Option .................. 45
6.7 Video Display RAM above 640k ................... 46
6.8 Video Adapter Bios ROMs ....................... 47
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
THE LAST BYTE MEMORY MANAGER (tm)
6.9 LASTBYTE.SYS and Expanded Memory .............. 47
6.10 Fine-Tuning your Adapter Hardware Configuration 48
CHAPTER 7 - USE WITH OTHER SOFTWARE ................... 50
7.1 Microsoft's FASTOPEN and MODE programs ......... 50
7.2 Microsoft's SHARE program .................... 50
7.3 Microsoft's MS-DOS 5.0 ....................... 51
7.3.1 Using DEVICEHIGH and LOADHIGH ............ 52
7.3.2 Using HIGHDRVR and HIGHTSR ............... 52
7.4 Microsoft's Windows 3.0 ...................... 53
7.4.1 Modifying the Windows SYSTEM.INI File ..... 53
7.4.2 Positioning an EMS Page Frame ............. 54
7.4.3 "Unsupported Data Configuration" ........ 54
7.4.4 HIGHMEM and Windows 386 Enhanced Mode ...... 55
7.4.5 HIGHDISK and Windows 386 Enhanced Mode ..... 55
7.5 HyperWare's HyperDisk ....................... 55
7.6 J.P. Software's 4DOS ......................... 56
7.7 David Hamilton's BUFFIT ...................... 56
7.8 Charles Lazo's WAS ........................... 57
APPENDIX 1 - HOW TO REACH US .......................... 58
APPENDIX 2 - ACKNOWLEDGEMENTS ...................... 60
APPENDIX 3 - CHIPSET LIMITATIONS .................... 61
APPENDIX 4 - LICENSED DISTRIBUTORS .................. 63
APPENDIX 5 - LIMITED WARRANTY ....................... 65
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 4
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 left-over 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, MS-DOS disk buffers, and the
master environment 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 comes with utility programs that
use upper memory to create ram disks, print spoolers, command
line recall (history) buffers, emulated expanded memory, and TSR
"markers" (to facilitate TSR removal). But best of all, these
utilities can even use disabled shadow ram memory normally
hidden behind the display buffer, read-only memories (ROMs), and
other adapter cards.
1.1 Important Advantages
The Last Byte Memory Manager offers six significant advantages
over other MS-DOS Upper Memory Managers:
o The Last Byte Memory Manager uses no conventional
memory.
o 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.
o The Last Byte Memory Manager does not use protected
mode software. This means that unlike those that
do, The Last Byte Memory Manager is totally
compatible with any protected mode software, not
just Microsoft Windows.
o The Last Byte Memory Manager doesn't require any
extended memory. Other memory managers depend on
the processor's ability to remap physical memory
from above 1MB into the upper memory area.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 5
o On motherboards that use one of the supported
memory controller chips, The Last Byte Memory
Manager, unlike all other MS-DOS memory managers,
can use the unused shadow ram normally disabled by
the display buffer, ROMs or adapter cards. This
gives it the unique ability to use all 384k of
upper memory!
o The Last Byte Memory Manager does not slow down the
performance of your computer, both because it does
not incur the 5-10% execution overhead inherent in
protected mode, and because it uses regular
(full-speed) memory. (Some memory managers use the
actual EGA/VGA graphics buffer as MS-DOS memory,
but the display buffer memory of some EGA/VGA
adapter cards can be as much as six times slower
than regular memory.)
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 6
CHAPTER 2 - SYSTEM REQUIREMENTS
Fundamentally, The Last Byte Memory Manager requires version 3.1
or later of MS-DOS 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 Supported Hardware
To install The Last Byte Memory Manager, your computer must have
any one of the following:
o Fixed the 32-bit "Built In Memory" installed in some
Compaq 386 machines), or
o An expanded memory board (EEMS, LIM 3.2 EMS, or LIM
4.0 EMS), or
┌─────────────────────────────────────────────────┐
│ NOTE: Using a LIM 3.2 EMS board is not advised │
│ as a method of providing upper memory. It pro- │
│ vides only 64k of upper memory and prevents ap- │
│ plication software from using expanded memory. │
└─────────────────────────────────────────────────┘
o A 386sx, 386, 486, or 486sx processor and the
Microsoft Windows 3.0 or DOS 5 versions of EMM386,
or
o One of the following shadow ram controller chips:
Chips and Technologies:
82C212 - From the CS8221 NEAT (tm) chipset
82C222 - From the CHIPS/250 PS/2 50/60 chipset
82C230 - The PS/2 30 Single Chip Controller
82C235 - The SCAT (tm) Single Chip AT VLSI chip
82C241 - From the CS8223 LeAPset (tm) chipset
82C302 - From the CS8230 386/AT CHIPSet (tm)
82C307 - From the CS8231 386/AT CHIPSet (tm)
82C311 - From the CS8233 PEAK 386/AT CHIPSet (tm)
82C322 - From the CHIPS/280 PS/2 70/80 chipset
82C351 - From the CS82310 PEAK DM/386 AT CHIPSet (tm)
82C812 - From the CS8281 NEATsx (tm) chipset
82C836 - The SCATsx (tm) Single Chip AT VLSI chip
82C841 - From the CS8283 LeAPset-sx (tm) chipset
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 7
ETEQ Microelectronics:
ET82C491 - From the Cougar 386DX/486DX chipset
Forex Computer Corporation:
FRX36C300 - From the FRX36C300/200 Cache chipset
Headland Technology (G2):
HT12 - Single 286 AT Chip
HT18 - 286/386SX Advanced Memory Manager Chip
HT21 - 286/386SX Advanced Memory Manager Chip
HT22 - 286/386SX Advanced Memory Manager Chip
HT103 - 286/386SX Advanced Memory Manager Chip
HT113 - 286/386SX Advanced Memory Manager Chip
Intel Corporation:
82343 - From the 82340SX Chip Set
82346 - From the 82340DX Chip Set
82359 - From the 82350DT EISA Chip Set
OPTi Electronics:
82C281 - From the Cache SX/AT chipset (w/posted write)
82C282 - From the Cache SX/AT chipset (w/o posted write)
82C283 - From the Block Interleave SX/AT chipset
82C382 - From the HiD/386 AT chipset
82C391 - From the 386WB PC/AT chipset
82C461 - From the Notebook PC/AT chipset
82C482 - From the HiB/486 AT chipset
82C491 - From the 486SXWB PC/AT chipset
82C493 - From the 486SXWB PC/AT chipset
82C495 - From the 486SXWB PC/AT chipset
82C496 - From the DXBB PC/AT chipset
82C682 - From the 386/486WB EISA chipset
Sun Electronics (SUNTAC):
ST62C202 - From the chipset 20 for 286
ST62C241 - From the chipset 24 for 386
ST62C251 - From the chipset 25 for 286 and 386sx
Symphony Laboratories:
SL82C361 - From the SL82C360 80386DX/SX chipset
SL82C461 - From the SL82C460 80486 chipset
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 8
Texas Instruments:
TACT82411 - The Snake Single-Chip AT Controller
TACT82S411 - The Snake+ Single-Chip AT Controller
United Microelectronics Corporation (UMC):
UM82C212 - From the UM82C210 386SX/286 AT Chip Set
UM82C481 - From the UM82C480 50Mhz 80486 Chip Set
┌─────────────────────────────────────────────────┐
│ NOTE: The UM82C212 is indistinguishable from │
│ the Chip & Technologies 82C212. CHIPSET and │
│ LASTBYTE.SYS will identify it as the latter. │
└─────────────────────────────────────────────────┘
VLSI Technology:
VL82C202 - PC/AT-Compatible High Speed Memory Controller
VL82C310 - From the SCAMP 286/386sx Chip Set
VL82C311 - From the SCAMP 286/386sx Chip Set
VL82C320 - From the TOPCAT 286/386sx Chip Set
VL82C330 - From the TOPCAT 386 DX Chip Set
VL82C486 - Single Chip, High Performance 486 PC/AT Controller
┌─────────────────────────────────────────────────┐
│ NOTE: There is a pin on the VLSI VL82C202 that │
│ controls whether or not the shadow ram memory │
│ has been relocated above 1 meg as extended │
│ memory. This pin is usually connected to a │
│ jumper or DIP switch on the motherboard. It │
│ may be necessary to change the jumper or DIP │
│ switch setting to work properly with this chip. │
└─────────────────────────────────────────────────┘
Not all memory controller chips allow use of the entire 384k of
upper memory. Consult the appendix on "CHIPSET LIMITATIONS" for
further information.
2.2 Checking Compatibility Using CHIPSET
CHIPSET is a program that simply checks to see if your computer
has one of the memory controllers required to use The Last Byte
Memory Manager.
A>CHIPSET
CHIPSET will identify the particular memory controller you have,
if any. If it can't find a memory controller, it will look for
fixed memory in the upper area or expanded memory as a means of
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 9
installing The Last Byte Memory Manager. If it is successful,
it will give you the option of automatically linking to the
INSTALL program to setup for use of The Last Byte Memory
Manager.
CHIPSET and INSTALL automatically sense whether you have a color
or monochrome display to determine how to present data on the
screen. However, you may force the mode by using one of the
/MONO, /COLOR, or /LCD command line options.
If your computer has one of the listed devices, then The Last
Byte Memory Manager should work on your computer. If your
computer uses another kind of chipset, it may not be supported
for one of the following reasons:
o Some chipsets do not provide shadow ram support.
Examples: VLSI Technologies 82C100 series
Western Digital chipsets
Texas Instruments TACT82300 series
Early Suntac chipsets (ST62BC001-6)
United Microelectronics Corp. UM82C231
o Some chipsets have shadow ram, but it can only be
put into either write-only mode (for copying rom
contents to ram), or read-only mode (to prevent
accidental writes into what's supposed to be a copy
of rom).
Examples: ACC Microelectronics chipsets
o The Last Byte Memory Manager software is
table-driven, making it relatively easy to adapt to
different memory controller architectures, but
there are limits!
Examples: Zymos chipsets
United Micro. Corp. UM82C384, '388, '389
Forex Computer Corp. FRX36C100
Silicon Integrated System Corp. (SIS)
chipsets
o Some memory controllers are designed so that they
can be "locked" at the end of software
initialization, requiring a hardware reset to
unlock, and thus preventing The Last Byte Memory
Manager from accessing the controller.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 10
Examples: Intel 82335, 82335SX
Some of these chips, however, have hardware EMS support and thus
many of their motherboards come with an EMS device driver
designed specifically to take advantage of this capability. So
in many cases, you can install this driver first, and then The
Last Byte Memory Manager can use it to manage the upper memory
area.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 11
CHAPTER 3 - DISTRIBUTION FILES
Version 2.02 of The Last Byte Memory Manager consists of the
following distribution files. Feel free to upload this package
to any bulletin board, but please be sure all original
(unmodified) distribution files are included in the upload.
CHIPSET.EXE A program to test your computer for compati-
bility with The Last Byte Memory Manager.
CLOCK.EXE A TSR program to display the current time in the
upper left-hand corner of the screen. (Requires
ANSI.SYS.)
HIGHAPND.EXE A program to enable/disable an extension of conven-
HIGHAPND.SYS tional memory beyond 640k up to 704k or even 736k,
depending on your hardware configuration.
HIGHBFRS.EXE A program to put the MS-DOS 3.xx disk buffers
(i.e., as specified in the "BUFFERS=" command
of CONFIG.SYS) in upper memory.
HIGHDISK.SYS A device driver that creates a ram disk in
upper memory.
HIGHDRVR.SYS A device driver used to load other device
drivers into upper memory.
HIGHEMS3.SYS A pair of device drivers that emulate expanded
HIGHEMS4.SYS memory in upper memory.
HIGHENV.EXE A program to move the master environment from
conventional memory to upper memory.
HIGHFILE.EXE A program to implement the DOS "FILES=" option
using upper memory rather than conventional
memory.
HIGHHOLE.EXE A program to locate empty space in shadowed ROMs
that can be converted to free High-DOS memory.
HIGHKEY.EXE A command line recall editor similar to the DOS 5
DOSKEY program, but which can store the command
line history in bank-switch memory.
HIGHMARK.EXE A program to mark TSR's so that they may be
removed from upper memory at a later time.
HIGHMEM.EXE A program to display a map of upper memory usage.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 12
HIGHRSVD.EXE A pair of utilities to help control the allocation
HIGHRSVD.SYS of upper memory.
HIGHSPLR.EXE A program to create a printer spooler in upper
memory.
HIGHTSR.EXE A program to load TSR's into upper memory.
HIGHUMM.DOC A device driver that application programmers may
HIGHUMM.SYS use to access upper memory from their own pro-
grams. (For a detailed specification of the soft-
ware interface, see the information in the file
HIGHUMM.DOC.)
HIGHUNDO.EXE A program to remove TSR's (and their associated
mark) that have been previously marked with
HIGHMARK.
INSTALL.EXE A program to automatically create or modify your
CONFIG.SYS and AUTOEXEC.BAT files for use with
The Last Byte Memory Manager.
LASTBYTE.DOC This text file.
LASTBYTE.SYS A device driver that must be loaded before any
other software of The Last Byte Memory Manager.
LICENSE.EXE A program to install your name and personal
access key for full operation of LASTBYTE.SYS.
ORDERFRM.DOC A text file containing individual and site
license order forms.
TLBMM.EXE A program that returns a non-zero errorlevel
if The Last Byte Memory Manager is not
installed. (Useful in .BAT files.)
WHATSNEW.120 A text file describing changes since the
previous version.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 13
CHAPTER 4 - GETTING STARTED
The first thing to do is to be sure that The Last Byte Memory
Manager will work on your computer. You can do this by simply
running the program called CHIPSET. If successful, it will then
ask you if you would like to run the INSTALL program to create
or modify your CONFIG.SYS and AUTOEXEC.BAT files for use with
The Last Byte Memory Manager. If you prefer, you can run
INSTALL and it will automatically run CHIPSET for you.
4.1 Testing LASTBYTE.SYS HIGHDRVR.SYS and HIGHTSR.EXE
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.
If everything goes ok, during the boot you'll briefly see a
sign-on box that looks something like the following:
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 14
╔═══════════════════════════════════════════════════════════════════╗
║ THE LAST BYTE MEMORY MANAGER (tm) Version 2.02a ║
║ Copyright (C) 1990-92, Key Software Products, All Rights Reserved ║
║ Licensed for EVALUATION ONLY ║
╟───────────────────────────────────────────────────────────────────╢
║ 25.0 Mhz 80386 with Chips & Technologies 82C302C ║
╟───────────────────────────────────────────────────────────────────╢
║ Address Range Size Width Bandwidth Description ║
║ 00000-9FFFF 640 KB 32 bits 38.0 MB/Sec Conventional Memory ║
║ A0000-FFFFF 384 KB 32 bits 38.0 MB/Sec Shadow Ram Memory ║
║ A0000-AFFFF 64 KB 16 bits 3.1 MB/Sec VGA Graphics Buffer ║
║ B8000-BFFFF 32 KB 16 bits 3.1 MB/Sec VGA Color Text Bfr ║
║ C0000-C7FFF 32 KB 16 bits 3.1 MB/Sec VGA Adapter Bios ║
║ C8000-CB7FF 14 KB 8 bits 1.3 MB/Sec Fixed Disk Bios ║
║ CB800-CBFFF 2 KB 8 bits 1.3 MB/Sec Fixed Disk Ram ║
║ F0000-FFFFF 64 KB 16 bits 3.1 MB/Sec AMI Bios (03/01/90) ║
╟───────────────────────────────────────────────────────────────────╢
║ Conv:640k High-DOS:32k Bank-Switch:32k Shadowed:96k Excluded:224k ║
╟───────────────────────────────────────────────────────────────────╢
║ The Last Byte Memory Manager is a trademark of Key Software Prod. ║
╚═══════════════════════════════════════════════════════════════════╝
If your computer stops before displaying the entire box shown
above, or if it fails to operate properly after booting, this
may be because The Last Byte Memory Manager failed to identify
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 this problem, you can reboot
and manually bypass all The Last Byte Memory Manager device
drivers and TSR's by simultaneously holding down the <alt> key,
the <ctrl> key, and either the <leftshift> or <rightshift> key
during the boot sequence.
After AUTOEXEC.BAT is finished, the screen 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. The
latter verifies that HIGHTSR has successfully loaded CLOCK into
upper memory and that ANSI.SYS is installed and operating.
To exit from HIGHMEM, simply press the Esc key. If you like,
you can run HIGHUNDO to remove the CLOCK program from memory,
and then HIGHMEM again to see that it has been removed.
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:
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 15
and rerunning CHIPSET or INSTALL.
4.2 Mapping Upper Memory with HIGHMEM
Depending on what adapter cards you have installed, HIGHMEM's
output should look something like that shown below.
HIGHMEM v2.02a (C) Key Software Products 1990-92. All Rights Reserved.
MCB Hex Address Description [Type] <Mark> High-DOS Bnk-Swtch Total
──── ─────────── ───────────────────────── ──────── ───────── ───────
B000 A0000-AFFFF Reserved Memory Group:
B79D A0000-A042F ╠═TSR Marker <1> 1,072
B002 A0000-A042F ║ └─8-bit EGA Graphics Buffer 1,072
B79B A0430-A7FFF ╠═8-bit EGA Graphics Buffer [ 31,696] [31,696]
B004 A8000-AFFFF ╚═8-bit EGA Graphics Buffer 32,768
B006 B0070-B10CF ANSI [DEV] 4,192 4,192
B10D B10E0-B112F CLOCK [ENV] <1> 80 80
B113 B1140-B12EF CLOCK [TSR] <1> 432 432
B12F B1300-B79AF [∙∙∙Free∙∙∙] [ 26,288] [26,288]
B79F B7A00-B7EFF LASTBYTE [DEV] 1,280 1,280
B7FE B8000-FFFFF Reserved Memory Group:
B7F0 B8000-BFFFF ╠═8-bit EGA Color Text Buffer 32,768
B7F2 C0000-C3FFF ╠═Shadowed 8-bit EGA Bios Rom 16,384
B7F4 C4000-C7FFF ╠═Excluded Block 16,384
B7F6 C8000-CB7FF ╠═8-bit Fixed Disk Adapter Bios 14,336
B7F8 CB800-CBFFF ╠═8-bit Fixed Disk Adapter Ram 2,048
B7FA CC000-EFFFF ╠═Excluded Block 147,456
B7FC F0000-FFFFF ╚═Shadowed 16-bit AMI Main Bios 65,536
─────── ─────── ───────
Upper Memory In Use: 5,984 1,072 334,736
[Free Upper Memory]: 26,288 31,696 57,984
MCB Overhead: 496 n/a 496
─────── ─────── ───────
Total Upper Memory: 32,768 32,768 393,216
The column labelled "Bank-Switch" shows which entries can be
used as bank-switch memory for a ram disk, a print spooler,
emulated EMS memory, or TSR markers.
Numbers enclosed in brackets (e.g., "[ 26,128]") refer to memory
that is available for use. Once you have licensed your copy of
The Last Byte Memory Manager, the "Excluded Block" shown above
would be added to the free High-DOS memory pool, and the other
entries labelled "EGA ... Buffer" would be added to the free
bank-switch memory pool.
The column labelled "Mark" is used in conjunction with HIGHMARK
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 16
and HIGHUNDO.
4.3 Running the LICENSE Program
The Last Byte Memory Manager is distributed as a fully
functional set of software. In its original form, you will be
able to use all the features, but with three restrictions:
o The amount of upper memory available to you will be
limited to 32k of High-DOS memory and another 32k
of Bank-Switch memory, and
o The maximum number of device drivers and/or TSRs
will be limited to 2.
o The HOLE option of LASTBYTE.SYS is not available.
Access to the rest of upper memory requires that you purchase a
personal eight-character access key and install it using the
LICENSE program. The access key may be obtained directly from
Key Software Products or one of the authorized distributors
listed at the end of this document. The LICENSE program must be
run on the same computer on which you intend to install The Last
Byte Memory Manager.
LICENSE 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,
/COLOR, or /LCD command line options.
Once you have licensed your copy of LASTBYTE.SYS you will
immediately have access to the rest of upper memory. No other
files, diskettes, or manuals need to be ordered. We do not send
out a new diskette or printed manual when you order an access
key; otherwise the price would have to be greater. You may
obtain your access key by mail by filling out the order form
(included in the file ORDERFRM.DOC) and mailing it with the
calculated amount to Key Software Products, or by contacting one
of our distributors. If you order by mail, be sure to print
your name clearly - it will be displayed in the sign-on screen
of LASTBYTE.SYS and is used to determine your access key.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 17
CHAPTER 5 - DETAILED DESCRIPTIONS
A complete detailed description of the command line syntax and
options of each device driver and utility program in The Last
Byte Memory Manager is provided below. With the exception of
LASTBYTE.SYS which comes first, they are organized in
alphabetical order for ease of reference.
5.1 LASTBYTE.SYS
During initialization, LASTBYTE.SYS scans upper memory looking
for Bios ROMs, display ram, and adapter cards that occupy the
upper memory area. The unoccupied portion of upper memory
defaults to High-DOS memory (for device drivers and TSR's). If
your computer uses one of the supported memory controller chips,
the occupied portion of the upper memory area will default to
Bank-Switch memory that can be made accessible for Ram disks, a
Print Buffer, emulated EMS memory, etc.
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:
<keyword>=<base>:<size>
where <keyword> is one of the option keywords and may be
abbreviated by its first letter, <base> is a four-digit
hexadecimal segment address in the range A000 to FC00, and
<size> is a decimal number in kilobytes.
There are two restrictions on these options:
o The base must be exactly 4 hexadecimal digits, must
lie at or above A000, and must be a multiple of
0020 (512 bytes). (For APPEND, the base must
always be A000, or may be omitted.)
o 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 way that The Last Byte Memory Manager
organizes high memory during initialization. However, this
requirement is often affected by the coarser resolution of the
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
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 18
an adapter card, the entire block of memory is disabled and
cannot be made available as High-DOS Memory.
APPEND=<base>:<size> -or- APPEND=<size>
Allocates a region of upper memory for appending
to the end of conventional memory, thus
increasing it beyond 640k. The memory is NOT
added until it is enabled with HIGHAPND. If
<base> is used, it must be A000. (Note: <size>
is limited to 16k in the unlicensed version so
that some High-DOS memory will still be
available.)
For example, to force the 64k address range
starting at segment A000 to be appended to the
end of the 640k of Conventional memory, the
proper option syntax would be:
APPEND=64
BANKSWITCH=<base>:<size>
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. │
└─────────────────────────────────────────────────┘
CACHE -or- CACHE=<kbytes>
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 automatically detects the presence
of a cache and its size. If you use the CACHE
option without specifying the size, it will
default to 512k.
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,
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 19
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. On
a 486 it does this by executing a special
instruction that resets the cache. On other
processors, the cache is flushed by filling it
from low memory. In the latter case, the size
value discussed above is used to determine how
much to fill.
DOS=<base>:<size>
Forces a region of upper memory that would
normally be used as Bank-Switch memory to be made
available as High-DOS memory.
EXCLUDE=<base>:<size>
Forces a region of upper memory unavailable as
either High-DOS or Bank-Switch memory.
HOLE=<base>:<size>
Creates a "hole" of free High-DOS memory within
the address space of a ROM that is shadowed. Use
the HIGHHOLE program to determine where these
holes are located, and the corresponding values
of <base> and <size>.
┌─────────────────────────────────────────────────┐
│ NOTES: (1) The HOLE option is not available in │
│ the unlicensed version of LASTBYTE.SYS. (2) The │
│ <base> and <size> parameters of the HOLE option │
│ are different from other options: <size> is in │
│ bytes and must be a multiple of 16; <base> may │
│ be any hexadecimal value from A000 to FFFF. │
└─────────────────────────────────────────────────┘
KEY=<filespec>
When you register The Last Byte Memory Manager,
you are given an access key that must be
installed by running the LICENSE program. This
program records your name and corresponding key
in a file called LASTBYTE.KEY in the root
directory of your boot drive. LASTBYTE.SYS looks
for that file in the same place, but you may move
the file to some other location on your disk as
long as you use the KEY option to tell
LASTBYTE.SYS where to find it. For example, if
you move LASTBYTE.KEY to a directory called
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 20
D:\TLBMM, then the corresponding KEY option would
be KEY=D:\TLBMM\LASTBYTE.KEY.
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.
MOVE=MAINBIOS[,ADDHOLES]
Tries to move the main bios to a better location
within the available upper memory in order to
reduce fragmentation of free memory.
MOVE=MAINBIOS,ADDHOLES will create seven holes in
the residual 8k left at FE00 for a total of more
than 3k.
MOVE=OVERLAY
This option is for chipsets in which the main
bios shadow ram cannot be made read/write (OPTi
and ETEQ). This option 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.
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 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.)
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 21
PHYSICAL=<memorycontroller>[,OVERRIDE][,NOEMS]
where <memorycontroller> is determined by the
CHIPSET program.
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 is
relocated/remapped", try adding the OVERRIDE
suboption to the PHYSICAL option. 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.
The NOEMS suboption:
May be used in conjunction with PHYSICAL=LIM4EMS
or EEMS to use the 64k page frame as High-DOS
Memory; must be used in conjunction with
PHYSICAL=LIM3EMS. Doing so disables other
(normal) use of all expanded memory.
RESTRICT=<ab>,<cd>,<ef>
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.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 22
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).
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 /RESTRICT
option of HIGHDRVR, HIGHTSR, HIGHUMM, HIGHEMS3,
and HIGHEMS4 is used, only High-DOS memory in the
region E000-FFFF will be allocated. This is the
default for HIGHBFRS, but may be disabled by use
of its /NORESTRICT option.
SHADOW=<base>:<size>
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.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 23
┌─────────────────────────────────────────────────┐
│ This option requires a memory controller chip. │
└─────────────────────────────────────────────────┘
TEXT=n
The information screen invoked by the "?" option
defaults to bright white on blue if a color
display is active, and to inverse video if a
monochrome monitor is active. This option
changes the default to 'n', where n is the
hexadecimal value of the attribute byte used to
paint the screen.
? (A question mark)
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
<Ctrl>-S; then to continue with CONFIG.SYS
processing, press any key.
5.2 HIGHAPND.EXE and HIGHAPND.SYS
HIGHAPND.EXE is a program that can only be used in conjunction
with the APPEND option of LASTBYTE.SYS. HIGHAPND.SYS is a
device driver version of HIGHAPND.EXE. Either can be used to
append some of the upper memory that begins at 640k onto the end
of conventional memory (and also to return later to 640k).
Monochrome (MDA), Hercules, and CGA display adapters don't use
the 64k region starting at A000, and so this memory can be used
to extend conventional memory from 640k to 704k, provided there
is available read/write memory in this area. CGA display
adapters also 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 itseld may
be used to extend conventional memory. Since most EGA and VGA
adapters usually don't use the 32k region at B000, you may even
be able to extend conventional memory up to 736k.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 24
You may either use HIGHAPND.SYS during CONFIG.SYS processing, as
in:
DEVICE=HIGHAPND.SYS ON {Extends conv. memory beyond 640k}
. . .
DEVICE=HIGHAPND.SYS OFF {Resets conv. memory to 640k}
╔═════════════════════════════════════════════════╗
║ WARNING: HIGHAPND.SYS may not work properly ║
║ with some versions of MS-DOS; in such cases, ║
║ use HIGHAPND.EXE instead. There is no benefit ║
║ to using HIGHDRVR.SYS to load HIGHAPND.SYS ║
║ because it never stays resident. ║
╚═════════════════════════════════════════════════╝
or use HIGHAPND.EXE during AUTOEXEC.BAT processing (or at any
time after the computer is booted), as in:
A>HIGHAPND ON {Extends conv. memory beyond 640k}
. . .
A>HIGHAPND OFF {Resets conv. memory to 640k}
╔═════════════════════════════════════════════════╗
║ WARNING: HIGHAPND.EXE may not work properly ║
║ with DR DOS. In such cases, use HIGHAPND.SYS. ║
╚═════════════════════════════════════════════════╝
Don't forget - both HIGHAPND.SYS and HIGHAPND.EXE require the
use of an APPEND option on the LASTBYTE command line.
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:
A>HIGHAPND
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
HIGHAPND OFF
WIN %1 %2
HIGHAPND ON
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
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 25
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
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.
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.)
/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.)
/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.
/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.
Technical Note
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.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 26
5.3 HIGHBFRS.EXE (MS-DOS 3 only)
╔═════════════════════════════════════════════════╗
║ WARNING: Placing MS-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. ║
╚═════════════════════════════════════════════════╝
HIGHBFRS can be used to place MS-DOS 3.x buffers in upper
memory, but you must be careful that this does not cause DMA
transfers into a 128k region of memory containing a 16-bit
adapter, or else you may damage the data on your disk. (See the
discussion of the RESTRICT option of LASTBYTE.SYS.) HIGHBFRS
offers two solutions to this problem: The first (and default)
solution is to restrict buffer placement to particular 128k
regions where there is no conflict.
If all three 128k regions contain 16-bit adapters, then a second
(different) solution may be both necessary and sufficient. It
intercepts transfers between floppy disk drives and upper
memory, and redirects the transfer through an intermediate
sector buffer in conventional (low) memory. The corresponding
command line option would be:
HIGHBFRS /FLOPPY
Almost all hard disk controllers use 16-bit CPU instructions
(rather than DMA) to transfer data and thus do not incur this
problem.
HIGHBFRS defaults to the maximum number of buffers and
automatically determines the safest location for loading them
into upper memory by checking with LASTBYTE.SYS for the location
of 16-bit adapter cards, if any. If none of the three 128k
segments is considered "safe", it will enable interception of
floppy transfers. Any of these defaults can be overridden by
one or more of the following command line options:
BUFFERS=<number>
Changes the number of MS-DOS buffers to the value
specified; <number> is a number from 1-99, or may
be replaced by the word MAXIMUM.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 27
/NORESTRICT (Abbreviated /N)
Disables the default restriction on buffer
placement caused by the presence of 16-bit
adapter cards or by use of the RESTRICT option on
the LASTBYTE.SYS command line.
/FLOPPY (Abbreviated /F)
Enables redirection of Bios INT 13h calls that
attempt to transfer data between a floppy disk
drive and upper memory. If redirected, such
transfers go through an intermediate buffer
located in conventional memory. (Disables
restrictions on buffer placement.)
When HIGHBFRS is invoked with no command line arguments, it
simply reports the number of MS-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.
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.
5.4 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. The device driver automatically loads itself
into upper memory, putting most of itself in bank-switch memory
if available. (You can prevent HIGHDISK from putting part of
itself in bankswitch memory by using the /NOSPLIT option.) Do
not install HIGHDISK using either HIGHDRVR or the DEVICEHIGH
command; simply use a DEVICE command, as in:
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 28
DEVICE=HIGHDISK.SYS
This creates a ram disk that uses all available upper memory,
with 32 directory entries and sectors of 128 bytes each.
A command line option may be used to specify the size of the RAM
disk as in:
DEVICE=HIGHDISK.SYS 100
This creates a 100k byte ram disk.
Other command line options may be used to change the number of
bytes per sector and directory entries, as in:
DEVICE=HIGHDISK.SYS 100 256 64
This creates a 100k RAM disk with 256 bytes per sector and 64
root directory entries.
╔═════════════════════════════════════════════════╗
║ 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. ║
╚═════════════════════════════════════════════════╝
5.5 HIGHDRVR.SYS
HIGHDRVR is a device driver that is used to load other device
drivers into upper memory. For a brief introduction to its use,
see the section titled "Testing LASTBYTE.SYS HIGHDRVR.SYS and
HIGHTSR.EXE" in the "GETTING STARTED" chapter at the beginning
of this manual. Also see the sections in the "HINTS /
SUGGESTIONS / EXPLANATIONS" chapter near the end of this
document on the /SIZE, /LOW, and /RESTRICT options.
The command line syntax of the CONFIG.SYS line for HIGHDRVR is:
DEVICE=[path]HIGHDRVR.SYS <filespec>
where '<filespec>' 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 of
the /SIZE, /LOW, and /RESTRICT options, and followed by options
at the end of the command line as required by the particular
driver to be loaded.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 29
When HIGHDRVR searches the disk for the device driver to load,
it follows the following search strategy:
(1) If '<filespec>' 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.
5.6 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. 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.
Both HIGHEMS3.SYS and HIGHEMS4.SYS have an optional command line
parameter which is the number of 16k EMS pages to allocate. If
omitted, the maximum allocation will be used. Bank-Switch
memory is allocated first, and if that isn't enough, then
High-DOS Memory is allocated to satisfy the total page request.
Use only one of these device drivers, and load it after
LASTBYTE.SYS. The driver automatically loads itself into upper
memory, putting much of itself into bank-switch memory if
available. (You can prevent it from putting part of itself in
bankswitch memory by using the /NOSPLIT option.) Do not install
HIGHEMS3 or HIGHEMS4 using either HIGHDRVR or the DEVICEHIGH
command; simply use a DEVICE command, as in:
DEVICE=HIGHEMS3.SYS
Also see the section on the /RESTRICT option in the "HINTS /
SUGGESTIONS / EXPLANATIONS" chapter near the end of this
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 30
document.
╔═════════════════════════════════════════════════╗
║ 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. ║
╚═════════════════════════════════════════════════╝
5.7 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. ║
╚═════════════════════════════════════════════════╝
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.
To move the master environment into upper memory, you must use
one or more /PATCH options and may use a /SIZE option. The
patch options 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.
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.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 31
╔═════════════════════════════════════════════════╗
║ 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. ║
╚═════════════════════════════════════════════════╝
A maximum of four command processor locations to be patched may
be specified in either of two ways:
A>HIGHENV 256 /PATCH=1057 /PATCH=1536
-or-
A>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.)
╔═════════════════════════════════════════════════╗
║ 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. ║
╚═════════════════════════════════════════════════╝
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:
A>HIGHENV 0
Or to change the growth capacity to allow for the current
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 32
environment strings plus 100 bytes more, use:
A>HIGHENV 100
5.8 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:
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. │
└─────────────────────────────────────────────────┘
5.9 HIGHHOLE.EXE
HIGHHOLE is a utility program that finds unused space ("holes")
in ROMs. A "hole" is defined as a sequence of at least 256
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
using the HOLE option of LASTBYTE.SYS.
┌─────────────────────────────────────────────────┐
│ NOTE: The HOLE option is not available in the │
│ unlicensed version of LASTBYTE.SYS. │
└─────────────────────────────────────────────────┘
These holes are often less than 1k in size, but sometimes as
large as 6k. 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.
HIGHHOLE merely locates probable holes, and suggests the
corresponding option to be used with LASTBYTE.SYS. To activate
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 33
these holes, you must then modify your configuration to include
these options. No option will be suggested for a hole if (1)
the corresponding ROM area is not shadowed, (2) the hole is in
the Bios Data Area (FE05-FFFF), or (3) the corresponding shadow
ram is not controlled by The Last Byte Memory Manager.
NOTE: Use of LASTBYTE.SYS's HOLE option will cause warm boots to
be converted into cold boots.
5.10 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 itself in
bank-switch memory. (You can prevent HIGHKEY from putting part
of itself in bankswitch memory by using the /NOSPLIT option.)
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:
A>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.
5.10.1 Options
All of the keywords that follow may be abbreviated.
/BUFSIZE=n 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.
/INSERT Sets the default typing mode to insert.
/OVERSTRIKE Sets the default typing mode to overstike.
/HISTORY Displays the contents of the command line
recall buffer on the screen.
filespec A filename, optionally preceeded by a drive and
directory specification. If used with the /HISTORY
option, causes the recall buffer to be written to
the specified file. If used without the /HISTORY
option, it loads the recall buffer from the file.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 34
5.10.2 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.
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
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 35
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.
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.
5.11 HIGHMARK.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 another
set of TSR's.
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. Every
TSR loaded by HIGHTSR is automatically associated with the most
recent execution of HIGHMARK. You can use HIGHMEM to see the
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 36
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.
IMPORTANT: When a mark is removed using HIGHUNDO, two basic
things happen: (1) the interrupt vector table is restored to its
state prior to the corresponding HIGHMARK, and (2) any memory
control blocks marked with the same mark number are released.
If you have installed one or more TSR's since the mark was
established, but did so without the use of HIGHTSR, these TSR's
will be disabled but they will not be removed from memory. The
following three examples indicate this consequence:
Disabled and Diabled but Disabled but
removed remains remains
-------- ------------ ------------
A>HIGHMARK A>HIGHMARK A>HIGHMARK
A>HIGHTSR CLOCK A>CLOCK A>LOADHIGH CLOCK
A>HIGHUNDO A>HIGHUNDO A>HIGHUNDO
5.12 HIGHMEM.EXE
HIGHMEM is a program that provides a display of what is loaded
into the upper memory area. For a detailed description on using
the HIGHMEM program, see the section titled "Mapping Upper
Memory with HIGHMEM" in the "GETTING STARTED" chapter at the
beginning of this manual.
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,
/COLOR, or /LCD command line options.
5.13 HIGHRSVD.EXE and HIGHRSVD.SYS
HIGHRSVD is software used to help 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.
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.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 37
Options (separated by commas) are given as the number of bytes
to reserve. 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.
By default, the reserved block will be positioned at the start
of the selected free block; you may position the reserved block
at the top of the free block by adding ",HIGH" to the size
specification, as in 4000,HIGH.
5.14 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 MS-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 size of the buffer will default to
all available Bank-Switch and High-DOS memory, but may be
restricted (or resized later) by a command line option.
HIGHSPLR supports both parallel and serial printers, but
defaults to LPT1. Multiple copies of HIGHSPLR can be installed
to support more than one printer. HIGHSPLR determines the
physical i/o port address and interrupt vector automatically
from the device name (e.g., LPT2), but these defaults can be
altered with command line options.
HIGHSPLR also has a unique "monitor" option. While output is
being sent to the printer, you can monitor the actual transfer
rate by entering the command,
A>HIGHSPLR MONITOR
The monitor operation may be terminated at any time by pressing
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 38
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.
The command line syntax for HIGHSPLR is given below. 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;
HIGHSPLR [opt] [opt] ... [opt]
where opt may be selected from:
LPT1 LPT2 LPT3 POLL COM1 COM2 COM3 COM4
IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7
RESET NOTEST MONITOR KBYTES=# PORT=#
or FLOW=<type>, where <type> is selected from:
XON DTR RTS NONE (default)
Normally, neither the PORT or IRQ options are necessary since
they are automatically derived from the COM or LPT option. Use
POLL if you don't want to use interrupt-driven output; this may
be necessary if another parallel port is in use for some other
purpose (e.g., with Lantastic/Z). The RESET option provides a
way to cancel printing from the buffer (and do a form-feed) at
any time. One of the FLOW control options (XON, DTR, RTS) may
be required with some serial (COM) printers to provide flow
control. The NOTEST option disables the default test for
functionality of the physical port that occurs when the software
is first installed.
5.15 HIGHTSR.EXE
HIGHTSR is a program that is used to load TSR programs into
upper memory. For a brief introduction to its use, see the
section titled "Testing LASTBYTE.SYS HIGHDRVR.SYS and
HIGHTSR.EXE" in the "GETTING STARTED" chapter at the beginning
of this manual. In addition to the /NOENV option described
below, also see the sections on the /SIZE, /LOW, and /RESTRICT
options in the "HINTS / SUGGESTIONS / EXPLANATIONS" chapter near
the end of this document.
The command line syntax for HIGHTSR is:
[path]HIGHTSR <filespec>
where '<filespec>' is the filename of the TSR program to be
loaded high, optionally prefixed by a drive and directory
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 39
specifcation. The filespec may be preceded by one or more of
the /SIZE, /LOW, /NOENV, and /RESTRICT 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 '<filespec>' 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. A small part of HIGHTSR (96 bytes) will
remain resident in conventional memory when used in this
manner.
5.15.1 The /NOENV Option
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.
TSRs that eliminate their PSP
The authors of some TSR's attempt to save a little
extra memory by having the TSR eliminate its own
Program Segment Prefix (PSP) during initialization.
Doing so makes it impossible to identify the TSR's
environment block. However, this byte-saving
mentality will usually mean that the TSR's
initialization code also eliminates its environment
block, so this is rarely a problem.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 40
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:
HIGHTSR /NOENV 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.
5.16 HIGHUMM.SYS
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.
HIGHUMM may be installed in one of two ways:
o If an XMS driver (such as HIMEM.SYS) has already
been loaded, HIGHUMM will link into it, providing
an implementation of the two XMS functions for
accessing what the XMS specification refers to as
"Upper Memory Blocks" (UMB's). For example,
DEVICE=LASTBYTE.SYS {and any options}
DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS {and any options}
DEVICE=HIGHUMM.SYS
Although described in the XMS specification, so far
the UMB functions have not been implemented in any
version of HIMEM.SYS. 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.
o If an XMS driver has not been loaded, then HIGHUMM
will become a UMB-Only XMS device driver, providing
support for XMS functions 00h (Get Version Number),
10h (Allocate UMB Block), 11h (Deallocate UMB
Block). All other XMS functions will return
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 41
failure, indicating that the function is not
implemented. For example,
DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
DEVICE=HIGHUMM.SYS
Important!
If another XMS device driver is used (e.g., to
provide management of extended memory or the
upper memory area), it must be loaded before
HIGHUMM.SYS.
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=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.
HIGHUMM requires that LASTBYTE.SYS be installed first. It
automatically loads itself into upper memory, putting much of
itself into bank-switch memory if available. (You can prevent
it from putting part of itself in bankswitch memory by using the
/NOSPLIT option.) Do not install HIGHUMM using either HIGHDRVR
or the DEVICEHIGH command; simply use a DEVICE command, as shown
above. Also see the section on the /RESTRICT option in the
"HINTS / SUGGESTIONS / EXPLANATIONS" chapter near the end of
this document.
5.17 HIGHUNDO.EXE
For a complete discussion of HIGHUNDO see the description of its
companion program, HIGHMARK in an earlier section.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 42
CHAPTER 6 - HINTS / SUGGESTIONS / EXPLANATIONS
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.
6.1 The /SIZE Option
This option may be used with HIGHDRVR and HIGHTSR.
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.
6.1.1 Measuring Load Requirements Using /SIZE
If inserted on the command line of HIGHTSR or HIGHDRVR as shown
below:
HIGHTSR /SIZE PRINT /D:PRN
then both the initialization and resident requirements will be
displayed on the console after the software has been loaded and
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 43
initialized.
6.1.2 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:
HIGHTSR /SIZE:17120 PRINT.EXE /D:PRN
6.1.3 Borrowing Initialization 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:
HIGHTSR /SIZE:16208,5776 PRINT /D:PRN
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.
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
HIGHDISK, HIGHEMS3, HIGHEMS4, HIGHSPLR, HIGHKEY, and for TSR
markers.
6.2 The /LOW Option
This option can be used with HIGHDRVR and HIGHTSR.
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).
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 44
HIGHTSR and HIGHDRVR provide an option /LOW that can be used
with some TSR's and device drivers to get around this problem:
HIGHTSR /LOW APPEND
-or-
DEVICE=HIGHDRVR.SYS /LOW 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.) ║
╚═════════════════════════════════════════════════╝
6.3 The /RESTRICT Option
This option can be used with HIGHDRVR, HIGHTSR, HIGHUMM,
HIGHEMS3, and HIGHEMS4. When used, it restricts which 128k
regions of upper memory may be allocated for use with these
utilities. 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.
6.4 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.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 45
6.5 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 probably run out of room if all of the following options
were required on the LASTBYTE.SYS command line:
APPEND=64 DOS=B000:32 DOS=F000:32 ? 82C302
As an alternative, create a corresponding text file called
LASTBYTE.CFG (for example), and put the options into it:
A000:64
DOS=B000:32 DOS=F000:32
? 82C302
(Carriage returns in the indirect file are treated as blanks)
Then the CONFIG.SYS command line becomes simply:
DEVICE=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=LASTBYTE.SYS ? @TLB.1 A=A000: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.
6.6 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 that portion that must
remain available at all times. (This seems to be true of the
Award Bios as well, but has not been verified.)
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
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 46
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. ║
╚═════════════════════════════════════════════════╝
6.7 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).
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.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 47
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)
Note: Windows 3.0 may write in the region B000-BFFF.
The ability to use the DOS and APPEND options depends on the
availability of other memory in the indicated area. For further
information, consult the appendix on "CHIPSET LIMITATIONS".
6.8 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
32k ROM at C0000-C7FFF.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 48
6.9 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:
o The page frame used by the expanded memory
controller built into some memory controller chips
will be recognized and reported as "EMS Page
Frame".
o 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,
D400, D800, DC00, or E000.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 49
6.10 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-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 50
CHAPTER 7 - USE WITH OTHER SOFTWARE
7.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 HIGHMARK and HIGHUNDO. Evidently they modify
memory other than that tracked by HIGHMARK (the interrupt vector
table and that memory allocated to them).
7.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-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 51
╔═════════════════════════════════════════════════╗
║ 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=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! ║
╚═════════════════════════════════════════════════╝
7.3 Microsoft's MS-DOS 5.0
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.
This capability requires the use of an Upper Memory Block (UMB)
server such as Key Software Products' HIGHUMM.SYS. Although the
MS-DOS 5.0 version of EMM386 has been modified to provide such
support, there are several disadvantages to using it instead of
The Last Byte Memory Manager to load software high:
o EMM386 requires a 386 or better processor.
(HIGHUMM does not.)
o 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-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 52
o Using HIMEM and EMM386 as the basis of UMB support
requires that both be loaded into conventional
memory, where they use approximately 10k bytes.
o 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.
7.3.1 Using DEVICEHIGH and LOADHIGH
To use this approach, your CONFIG.SYS file should contain the
following lines:
DOS=HIGH,UMB
DEVICE=LASTBYTE.SYS {and any options}
DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS
DEVICE=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
7.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-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 53
DOS=HIGH
DEVICE=LASTBYTE.SYS {and any options}
DEVICE=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=HIGHDRVR.SYS {device driver to be loaded high}
DEVICE=HIGHDRVR.SYS {device driver to be loaded high}
. . .
DEVICE=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:
HIGHTSR C:\DOS\PRINT
7.4 Microsoft's Windows 3.0
In general, The Last Byte Memory Manager has a high degree of
compatibility with Windows 3.0. 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:
7.4.1 Modifying the Windows SYSTEM.INI File
With Windows 3.0 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=LASTBYTE.SYS EXCLUDE=D000:64
then you may use the following configuration option (in addition
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 54
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.
7.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.
7.4.3 "Unsupported Data Configuration"
The 386 Enhanced mode of Windows 3.0 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-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 55
7.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.
7.4.5 HIGHDISK and Windows 386 Enhanced Mode
HIGHDISK.SYS also uses memory in the 640k to 1 meg range and so
is susceptible to the same problems that HIGHMEM experiences as
discussed above. Outside of Windows, and in any mode other than
386 Enhanced Mode, HIGHDISK will behave normally.
7.5 HyperWare's HyperDisk
HyperDisk is a shareware disk caching utility. It's too large
to load high with HIGHDRVR or HIGHTSR under the 32K limit
imposed by the unlicensed evaluation version of The Last Byte
Memory Manager. However, if your computer uses a Chips and
Technologies NEAT or 386/AT chipset, you can work around this
limitation by using HyperDisk's "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=LASTBYTE.SYS EXC=E400:48
If you have a licensed version of The Last Byte Memory Manager,
or if you don't have one of the Chips and Technologies chipsets
mentioned above, then 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.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 56
HyperDisk can be downloaded from HyperWare's BBS at (615)
864-6871, or obtained directly from:
HyperWare
RR#1, Box 91
Pall Mall, TN 38577
Voice: (615) 864-6868
FAX: (615) 864-6870
7.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
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
7.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=LASTBYTE.SYS {and any LASTBYTE options}
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 57
DEVICE=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.
7.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-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 58
APPENDIX 1 - HOW TO REACH US
The KSP 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 out 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 BITNET, send mail to: DLEWIS@SCU.BITNET
On COMPUSERVE, send mail to: >Internet:DLEWIS@SCUACC.SCU.EDU
On CONNECT, send mail to: CONNECT id "DASNET"
1st line of message: \"DLEWIS@SCUACC.SCU.EDU\"@DASNET
On FIDONET, send mail to: UUCP
1st line of message: To: DLEWIS@SCUACC.SCU.EDU
On INTERNET, send mail to: DLEWIS@SCUACC.SCU.EDU
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 59
On MCI,
At the "To:" prompt enter: DLEWIS (EMS)
At the "EMS:" prompt enter: Internet
At the "Mbx:" prompt enter: DLEWIS@SCUACC.SCU.EDU
On PRODIGY, send mail to: VGDC59A
On TELENET's Telemail Service:
Send to: [INTERMAIL/USCISI]TELEMAIL/USA
1st line of message: Forward: ARPA
2nd line of message: To: DLEWIS@SCUACC.SCU.EDU
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 60
APPENDIX 2 - 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, 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, 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 and Roger Cross for
their suggestions, technical advice, patience, and friendship.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 61
APPENDIX 3 - CHIPSET LIMITATIONS
Some of the features offered by The Last Byte Memory Manager are
dependent on the presence of a shadow ram memory controller
chip, what memory it controls, and the organization of that
memory into regions. Shown below is a summary of RAM and ROM
regions controlled by each of the memory controller chips that
we support. Each entry indicates the starting segment address
of memory, followed by an indication of the organization of that
memory into regions.
Part No. Ram Range RAM Regions ROM Regions
-------- --------- ---------- -----------
82C212 A000-FFFF A000:24x16k C000:4x64k
82C222 A000-FFFF A000:24x16k C000:4x64k
82C230 A000-FFFF A000:24x16k C000:4x64k
82C235 A000-FFFF A000:24x16k C000:8x32k
82C241 A000-FFFF A000:24x16k C000:4x64k
82C281 C000-EFFF C000:12x16k E000:64k
82C282 C000-EFFF C000:12x16k E000:64k
82C283 C000-EFFF C000:12x16k E000:64k
82C302 A000-FFFF A000:24x16k C000:4x64k
82C302C A000-FFFF A000:24x16k C000:4x64k
82C307 A000-FFFF A000:24x16k C000:4x64k
82C311 A000-FFFF A000:24x16k C000:4x64k
82C322 A000-FFFF A000:16x16k,1x128k C000:2x64k,1x128k
82C351 A000-FFFF A000:24x16k C000:4x64k
82343 C000-EFFF C000:12x16k n/a
82346 C000-EFFF C000:12x16k n/a
82359 A000-FFFF A000:24x16k n/a
82C382 C000-EFFF C000:12x16k E000:64k
82C391 C000-EFFF C000:12x16k E000:64k
82C461 C000-EFFF C000:12x16k C000:3x64k
82C482 C000-EFFF C000:12x16k E000:64k
82C491 C000-EFFF C000:12x16k E000:64k
82C493 C000-EFFF C000:12x16k E000:64k
82C495 C000-EFFF C000:12x16k E000:64k
82C496 C000-EFFF C000:12x16k C000:3x64k
82C682 C000-FFFF C000:8x16k,2x64k n/a
82C812 A000-FFFF A000:24x16k C000:4x64k
82C836 A000-FFFF A000:24x16k C000:8x32k
82C841 A000-FFFF A000:24x16k C000:4x64k
ET82C491 C000-EFFF C000:12x16k C000:3x64k
FRX36C300 C000-FFFF C000:6x32k,1x64k n/a
HT12 Page Frame 4x16k n/a
HT21 C000-DFFF C000:8x16k n/a
HT22 C000-DFFF C000:8x16k n/a
HT103 C000-DFFF C000:8x16k n/a
HT113 C000-DFFF C000:8x16k n/a
SL82C361 C000-FFFF C000:8x16k,2x64k C000:8x16k,2x64k
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 62
SL82C461 C000-FFFF C000:8x16k,2x64k C000:8x16k,2x64k
ST62C202 E000-FFFF E000:4x32k n/a
ST62C241 E000-FFFF E000:4x32k n/a
ST62C251 E000-FFFF E000:4x32k n/a
TACT82411 A000-FFFF A000:24x16k C000:4x64k
TACT82S411 A000-FFFF A000:24x16k C000:4x64k
UM82C212 A000-FFFF A000:24x16k C000:4x64k
UM82C481 C000-FFFF C000:8x16k,2x64k C000:8x16k,2x64k
VL82C202 A000-FFFF A000:6x64k n/a
VL82C310 A000-FFFF A:4x32k,C:8*16k,E:4x32k n/a
VL82C311 A000-FFFF A:4x32k,C:8*16k,E:4x32k n/a
VL82C320 C000-EFFF C000:12x16k n/a
VL82C330 C000-EFFF C000:12x16k n/a
VL82C486 A000-FFFF A000:24x16k n/a
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 63
APPENDIX 4 - LICENSED DISTRIBUTORS
You can order directly from Key Software Products or any of the
licensed distributors listed below. Those which can accept
credit card orders are noted. If you order by credit card, you
must indicate the type of card, the card number, your name
exactly as printed on the card, and the card expiration date.
Information in this list is subject to change without notice.
Foreign exchange rates vary and thus affect overseas pricing, so
it is a good idea to check with the distributor before
ordering.
Distributors are for ordering only. For additional information
about dealer pricing, volume discounts, site licensing, shipping
of product, returns, latest version number or other technical
information, call or write Key Software Products directly.
Most distributors can provide the access key directly. The
Public (software) Library, however, accepts your telephone
order, and then forwards an E-Mail message to Key Software
Products. Delivery of this message may take one or two days. We
will contact you and provide the access key upon receipt of this
purchase confirmation.
Companies interested in obtaining 10 or more copies of The Last
Byte Memory Manager with discounted pricing should have an
officer of the company (such as the president, a vice president,
director, etc.) complete the Site License Order Form and send it
directly to Key Software Products, British Software Licensing in
the United Kingdom, or to Eurocom Shareware in Holland. No
other distributor will process a Site License request.
KEY SOFTWARE PRODUCTS Phone: (415) 364-9847
440 Ninth Avenue Price: US $29.95 + Tax (CA)
Menlo Park, CA 94025 Method: Check
The Public (software) Library Phone: (800) 242-4775, or
P.O. Box 35705 (713) 524-6394
Houston, Texas 77235-5705 FAX: (713) 524-6398
CompuServe: 71355,470
Price: US $29.95 + Tax (TX)
Method: MC, Visa, AmEx,
Discover Card
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 64
HYPERWARE (makes HyperDisk) Phone: (615) 864-6868
RR#1, Box 91 FAX: (615) 864-6870
Pall Mall, TN 38577 CompuServe: 72230,2321
Price: US $29.95 + Tax (TN)
Method: Master Card, Visa
EUROCOM SHAREWARE Contact: Mr. Gary van Beeck
Zwedenburg 119 Phone: (+31.70) 347-3777
NL-2591 BD The Hague FAX: (+31.70) 347-7356
HOLLAND Price: Hfl 74.-- (guilders only)
Method: By Eurocheque, or
Postbank (Giro): 188423
payable to: G. van Beeck
BRITISH SOFTWARE LICENSING Contact: Mr. Graham Robertson
280 (T/L) West Princes Street Phone: (44.41) 339-8855 x5021
Glasgow G4 9EU (44.41) 339-7264 (msg)
UNITED KINGDOM Price: 21 pounds
Method: Access, Visa, MC, Eurocard
Internet E-Mail: Graham_Robertson@vme.glasgow.ac.uk
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Jul 02, 1992 THE LAST BYTE MEMORY MANAGER (tm) 65
APPENDIX 5 - 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
possesion, 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-92, Key Software Products. All Rights Reserved