Contents of the EATRAM.DOC file
EATRAM Version 1.0
(c) Copyright 1988
Dr. William C. Parke
1820 S Street NW
Washington, D.C. 20009
EATRAM Version 1.0 may be freely copied and distributed as
long as the only charge is for media and reproduction costs.
Under no circumstances should the program be distributed
with a commercial product, sold for profit, or distributed
in modified form without express permission of the author.
EATRAM is an MS-DOS utility for IBM compatible computers
designed to take memory in 1024 byte increments up to the
available RAM. The purpose is to test the memory
requirements of other programs. The memory taken is held by
EATRAM until a specific request to release that memory is
given, or the system is rebooted.
EATRAM nnn or EATRAM /
where nnn is a number from 1 to the number of available
Kbytes in RAM. If no number is given, EATRAM will show the
range of values currently allowed. EATRAM followed by a
valid number can be issued any number of times.
If the / option is used, EATRAM will restore all memory
reserved by previous invocations of EATRAM. All RAM
allocated to EATRAM through any number of previous EATRAM
commands will be freed. The new available RAM will be
This command will generate a help screen and show available
2. Suppose you wished to discover whether a program called
GAME required over 128 Kbyte to run. This requirement does
not have to match the program size on disk for several
reasons. One, the program may dynamically allocate more
memory to itself after loading. Second, the program may
load overlays requiring more memory. Third, the program
might run another program as a 'child', again requiring
space for the 'child' program and possibly COMMAND.COM as
If your current free RAM were 558 Kbytes, then the command:
would remove 430 Kbytes from the free pool of memory in the
PC, leaving 128 Kbytes. You could subsequently attempt to
load your program:
If the program requires more than 128 Kbytes to run, you
should see an error message of the form:
"Program not run because of insufficient memory."
Of course, if GAME.EXE itself is larger than 128 Kbytes, you
would get a message like:
"Program too big to fit into memory."
EATRAM lets you determine if the suspect program attempts to
allocate more memory than initially given to it by the
operating system, and how much more the program needs.
The transient portion of COMMAND.COM is reloaded into memory
after a program returns control to the operating system.
DOS versions 2.x require under 16 Kbytes of memory to
perform this reload. EATRAM reserves 24 Kbytes for the
reload to allow for DOS 3.x requirements. The paragraph
size of RAM needed to reload the transient part of COMMAND
is set in EATRAM at word location 0114H, and is currently
600H (24K/16 paragraphs). This value can be patched to more
closely match your own operating system. Care must be
exercised, as too small a value will cause a system halt due
to memory allocation error after EATRAM is run.
EATRAM allocates RAM to itself by staying in memory after
resetting its own size and releasing its copy of the
environment. EATRAM removes memory allocated to copies of
itself by first searching through memory to find those
copies. It then de-allocates the memory reserved to each
copy. If any other terminate-and-stay- resident program has
been loaded after EATRAM and not removed before EATRAM / is
issued, then EATRAM will not be able to make all free memory
available to a new program. However, it will still de-
allocate RAM it has used. RAM below the foreign TSR will be
available for data, but not program loads.