Dec 082017
 
Extend DOS RAM using memory between 640 & 1 Meg. Uses EGA Graphics Space.
File EEMRAM21.ZIP from The Programmer’s Corner in
Category Utilities for DOS and Windows Machines
Extend DOS RAM using memory between 640 & 1 Meg. Uses EGA Graphics Space.
File Name File Size Zip Size Zip Type
DERAM.COM 989 574 deflated
EEMEGA.SYS 674 551 deflated
EEMRAM.COM 2398 1517 deflated
EEMRAM.DOC 23161 7541 deflated
EMSINFO.EXE 11441 7158 deflated
MS.COM 418 375 deflated

Download File EEMRAM21.ZIP Here

Contents of the EEMRAM.DOC file


EEMRAM 2.10


Purpose
-------
EEMRAM is a small utility that can expand your DOS memory from
640K to a maximum of 736K using Enhanced or LIM 4.0 expanded
memory. To use EEMRAM, you must have a memory board that
provides EEM or LIM4 memory. A companion program (DERAM) can be
used to restore the "normal" 640K if necessary. EEMRAM will
probably NOT work with Intel EMS products.


Before you run EEMRAM
---------------------
In order for EEMRAM to work, several conditions must be met.
There's more about this elsewhere in this document, but for now
run these two checks.

| 1. Run MS (just type "MS") and verify that the total free
| memory is 655,360 bytes (640K) or 654,336 bytes (639K; PS/2
| systems only). If any other amount is displayed, EEMRAM
| cannot be used.

2. Run EMSINFO (just type "EMSINFO") and note the results.
If they scroll beyond one screenful, you can print the
results by typing:

EMSINFO > PRN

EMSINFO must indicate that the EMM type is either "EEMS" or
"LIM 4.x". Also, the list of memory segments to which EMS
memory can be mapped must include the segment "A000".

If EMSINFO does not indicate that segment A000 is available, you
probably have an EGA or VGA in your system and/or are using an
Intel EMS board. If the former, see the section titled "If you
have an EGA or VGA"; if the latter, you cannot use EEMRAM.

If EMSINFO indicates that EEMRAM cannot be used, and you aren't
clear on exactly why, just run EEMRAM. No harm will be done,
and EEMRAM will display an error message indicating why it won't
work. Then look in "EEMRAM error messages" below for possible
causes and solutions.


Running EEMRAM
--------------
Here is EEMRAM's syntax:

eemram [/#] [/S]

When run, EEMRAM will increase DOS-usable memory DOS from 640K
to a maximum of 736K. The exact amount depends on your hardware
configuration, particularly on what type of display adapter you
have installed. You may want to run EEMRAM via your AUTOEXEC
startup batch, ideally as the first external program run by the
batch:

echo off
cd c:\util
eemram
...

The optional /S parameter is required if you have EEMS memory
and want to be able to use DERAM (about which, more later). It
is not necessary if you have LIM 4.0-compatible memory or don't
need DERAM.

The optional /# parameter limits EEMRAM's use of EEMS memory to
some amount less than the maximum possible. See the next
section.

| If you have a PS/2 system, a small portion of EEMRAM (1120
| bytes) may remain resident. This is because EEMRAM may have to
| relocate the extended BIOS data area (1K) from high memory to
| low memory. DO NOT USE "TSR MANAGERS" SUCH AS MARK AND RELEASE
| TO RELEASE EEMRAM!

To see the effects of EEMRAM, just run MS (Memory Size) or
CHKDSK before and after running EEMRAM.


Limiting Memory Size: /# parameter
----------------------------------
The optional EEMRAM /# parameter can be used to explicitly
reduce the number of 16K pages of EMS memory assigned to DOS
(see "Memory Allocation Information" for more information about
memory use). "#" is a decimal digit from 1 to 6 that specifies
how many pages you want assigned.

EEMRAM will normally assign all contiguous pages available from
A000 to B400 (6 pages maximum, or 96K). However, there may be
cases in which you don't want all of this used, and that's what
/# does. An example of /# use:

C> eemram /2

The /2 means "use only two 16K pages of EEMS memory."

If you specify more pages than are available, EEMRAM will only
use the number available, in effect ignoring your parameter.

Here is a map showing the effects of all possible /#:

Page /1 /2 /3 /4 /5 /6
---- -- -- -- -- -- --
A000 XX XX XX XX XX XX
A400 XX XX XX XX XX
A800 XX XX XX XX
AC00 XX XX XX
B000 XX XX <---MDA memory begins
B400 XX
B800 <---CGA memory begins
-- -- -- -- -- --
KB added 16 32 48 64 80 96
Total KB 656 672 688 704 720 736



DERAM
-----
EEMRAM works by mapping EEMS memory to DOS addresses beginning
at memory segment A000; EGA/VGA systems also use this area of
memory, so you will have a conflict using EGA/VGA hi-res
graphics modes in an EEMRAM environment. You may also find that
you have only a few programs that can really use the extra
EEMRAM memory and that you prefer to leave the EMS memory free
most of the time.

The DERAM program reverses the effects of EEMRAM: it restores
the original 640K of DOS memory and releases the EMS memory
EEMRAM was using back to the free memory pool. This may allow
you to use EGA/VGA hi-res modes.

To restore the original 640K system, just run DERAM:

C> deram

[NOTE: to use DERAM with EEMS memory, you must
have run EEMRAM with the /S option:

C> eemram /s

This saves certain information the DERAM needs.
The /S switch is not necessary if you have LIM
4.0-compatible memory. When you use /S, EEMRAM
places in memory a small amount (four bytes) of
information that DERAM needs. The information
is stored in the little used Interapplications
Communication Area (IACA). If EEMRAM cannot
find four consecutive unused bytes in this area,
it cannot store the information and DERAM won't
work.]

As an example of using EEMRAM and DERAM, suppose that you only
want to have the extra memory available for one program, your
word processor BESTWP. The following command sequence will do
the trick:

C> eemram /s [/S needed only for EEMS]
C> bestwp
C> deram

You can enter these commands manually or make a small batch file
or PCED synonym.

The opposite situation holds where you want to run with extra
memory most of the time, but release it before running the EGA
graphics program GREATGFX. The following commands may help:

C> deram
C> greatgfx
C> eemram /s [/S needed only for EEMS]

IMPORTANT NOTE: it is not possible to guarantee that the system
will operate correctly after DERAM. Some programs, especially
system software, TSRs, and device drivers, assume that the
amount of memory in your system is fixed--that it will not
change during a session. However, that is exactly the effect of
DERAM. If you find that something doesn't run after DERAM,
you'll just have to reboot without EEMRAM.


Memory Allocation Information
-----------------------------
When a typical EEMS or LIM 4.0 memory board is installed, it
"backfills" DOS memory to 640K; that is, some of the memory on
the EEMS board is permanently assigned to DOS in such a way that
the system will appear to DOS to have 640K of main memory. This
640K occupies RAM addresses 00000 to 9FFFFF, or, in the more
traditional segment notation, memory segments 0000 to 9FFF.

Segments beginning at A000 (the next segment above 9FFF) are not
assigned to DOS by the EMS manager.

However, 64K to 96K of addresses beginning at A000 are often
unused on PC's. On a machine equipped with a monochrome display
adapter (MDA), display memory begins at segment B000, leaving
64K open from A000-AFFF; on a machine equipped with a color
graphics adapter (CGA), display memory begins at segment B800,
leaving 96K open from A000-B7FF.

It is possible to force the EMS manager to assign memory for
these addresses and to convince DOS that the EMS memory so
assigned is usable by the system, resulting in as much as 736K
of DOS-usable memory. That is what EEMRAM does.

[Contrary to popular opinion, DOS is not limited to 640K; it can
use whatever memory is available, up to a limit of 1 megabyte.
The limiting factor is your hardware. In particular, some
hardware such as video display adapters and fixed disk
controllers may use some areas of memory above the 640K mark.
Also, the DIP switches on many machines are limited to a maximum
of 640K switch-settable; to go beyond this, it's necessary for
software such as EEMRAM to override the switch settings.]


If you have an EGA or VGA
-------------------------
As described above, EEMRAM works by assigning pages of EMS
memory to DOS addresses beginning at A000h (just above 640K).
EGA and VGA systems use the same area of memory, so there is a
potential for conflicts. However, most EGA/VGA systems use the
64K of memory between A000 and B000 only in high resolution
graphics modes, and briefly during mode changes; if you do not
use high resolution graphics modes frequently, you may still be
able to use EEMRAM.

You will have to do some work with your system configuration
file, CONFIG.SYS. We STRONGLY recommend that you check the
following steps on a bootable diskette, not with your hard disk
CONFIG.SYS. If you are successful, you can then make the
apprpriate changes in your hard disk CONFIG.SYS.

First, check the statement in CONFIG.SYS file that loads your
EMS driver software. If you have a parameter that excludes the
range of memory beginning at A000, you must remove the
exclusion. For example, AST's REMM.SYS might be loaded like
this:

DEVICE=C:\SYS\REMM.SYS /X=A000-AFFF

The /X parameter tells REMM.SYS not to permit mapping of EMS
memory to segment A000, and it must be removed.

Next, add the statement:

DEVICE=[d:path]EEMEGA.SYS

to the file IMMEDIATELY BEFORE the DEVICE statement that loads
your EMS software. For example:

DEVICE=C:\SYS\EEMEGA.SYS
DEVICE=C:\SYS\REMM.SYS

Now reboot your system. It should appear to run normally. Run
EMSINFO again and check to be sure that the A000 segment now
appears in the list of mappable segments. If it does not, you
will have to check with your dealer or hardware manufacture to
see if it's possible to correct the situation.

If you have EEMS memory, EEMEGA uses 16K of EMS. It does not
use any EMS memory if you have a LIM 4.0 EMS driver.

When EEMRAM is active, EEMEGA.SYS will not allow any EGA/VGA
BIOS calls to be used. Thus, your system will not be permitted
to go into high-resolution graphics modes. If you have software
that must be "installed" for a specific video system, you might
want to install it for CGA or MDA rather than EGA or VGA.


EEMRAM messages and solutions
-----------------------------
EEMRAM will not be able to do its job under a number of possible
conditions. If EEMRAM reports that it has failed, it will
display one of the following messages:

EMS MANAGER IS NEITHER LIM 4.0 NOR EEMS

In order to use EEMRAM, your Expanded Memory Manager (EMM)
must conform to either the EEMS 3.2 or LIM 4.0
specifications. Check with your dealer to see if a newer
EMM is available for your EMS board.

EXPECTED 640K OF DOS MEMORY

Run MS; in order to use EEMRAM, MS must report exactly
655,360 bytes of total memory (640K). If MS reports less
and you know that you do have a 640K system, it's likely
that some other TSR or device has taken some memory from
just below 640K. Try to locate which TSR or device is doing
this and check with your dealer to see if there's any way to
eliminate it. If MS reports more that 640K, perhaps you've
already run EEMRAM.

UNABLE TO RESIZE MEMORY

EEMRAM must be the owner of the last block of DOS memory
when it's run. Always run EEMRAM directly from the DOS
prompt or from AUTOEXEC.BAT.

UNABLE TO LOCATE EMS MANAGER

EEMRAM wasn't able to find the Expanded Memory Manager
(EMM). Either you don't have expanded memory, you haven't
loaded the EMM, or another program is interfering.

NO PAGES AVAILABLE AT A000

In order for EEMRAM to work, it must be able to assigne
chunks of EMS memory to DOS addresses beginning at
segment A000. If EEMRAM reports that it can't do this, it's
usually for one of these reasons:

1. Your EMS hardware is not capabable of mapping EMS memory
to arbitrary memory addresses. This is true of many older
EMS boards such as the Intel AboveBoard. There's no
solution for this other than to purchase new hardware.

2. Your Expanded Memory Manager (EMM) doesn't support this
function. Your EMM must conform to either the EEMS 3.2
or the LIM 4.0 specification. Run EMSINFO; it will tell you
which type of EMM you have. Check with your dealer to see
if you can obtain an EEMS or LIM 4.0 EMM for your hardware.

3. Your EMM has detected that you have an EGA or VGA and has
in effect "prohibited" mapping memory to A000, even though
both your EMS board and the EMM are capable of such mapping.
See the EGA/VGA section for a possible solution.

NO EMS MEMORY AVAILABLE

Your EMM has reported that there is no free EMS memory.
You'll have to reduce the amount of memory used by other
software. EEMRAM must have at least 16K free EMS memory and
can use up to 96K on some systems.

PROGRAM HAS ALREADY BEEN RUN

This message will appear only under LIM 4.0 and indicates
that EEMRAM has already been run since the last reboot.

ERROR xx ACCESSING EMS MANAGER (AX=yyyy)

Generic message indicating that there's a problem with the
EMM or the hardware: the EMM is corrupted, there's a
hardware failure, your EMM doesn't support a needed
function, etc. The number (xx) indicates the specific error
code returned that the EMM returned to EEMRAM. The message
also indicates the EMS function that failed (register AX
contents were yyyy at time of EMM function call).

WARNING: UNABLE TO SAVE /S INFORMATION FOR DERAM

There is insufficient memory unused in the area that
EEMRAM/DERAM use to pass needed information back and forth.
This is a warning message: EEMRAM itself has run successfully,
but DERAM won't work.

| EXTENDED BIOS DATA REMAPPED TO LOW MEMORY; EEMRAM REMAINING RESIDENT
|
| This is not an error message; it indicates that your
| extended BIOS data area (PS/2 systems) has been relocated
| from high memory to low memory. A small portion of EEMRAM
| (1120 bytes) will remain resident, but you've only lost the
| use of 96 real bytes.


DERAM error messages
--------------------

SYSTEM ALREADY SET TO 640K

DERAM has found that the system already shows 640K of DOS
memory, so it hasn't done anything.


EEMRAM NOT RUN WITH /S OPTION, UNABLE TO RESIZE MEMORY

In order to use DERAM with EEMS memory, you must run EEMRAM
with the /S switch. If you did run EEMRAM with /S and you
see this message, some other program is using the same area
of memory that EEMRAM/DERAM use to pass information back and
forth. You will not be able to use DERAM in this case
(fortunately, it's unlikely).

ERROR xx ACCESSING EMS MANAGER (AX=yyyy)

Generic message indicating that there's a problem with the
EMM or the hardware: the EMM is corrupted, there's a
hardware failure, your EMM doesn't support a needed
function, etc. The number (xx) indicates the specific error
code returned that the EMM returned to EEMRAM. The message
also indicates the EMS function that failed (register AX
contents were yyyy at time of EMM function call).

UNABLE TO RESIZE MEMORY

DERAM can't modify DOS's memory allocation blocks, so
nothing has been done. Always run DERAM directly at the
DOS prompt or via AUTOEXEC; don't run it as a "child" of
some other program.


Notes
-----
1. We can't promise that EEMRAM will work with any specific
hardware configuration. If your hardware conflicts with what
EEMRAM does (EEMRAM won't run properly, system locks up, etc.),
there's nothing we can do about it. However, if you know the
exact nature of the problem and can suggest a solution, let us
know, preferably by mail or via CompuServe. We may be able to
make necessary additions to future versions.

2. In general, EEMRAM is not a TSR (i.e., it is not resident).
It runs and terminates, restoring the full amount of memory to
the system. Because EEMRAM is not a TSR, don't try to use
MARK/RELEASE, REFEREE, POPDROP, or similar TSR managers to
"remove" EEMRAM. EEMRAM cannot be removed by these managers.
EEMEGA.SYS is a device driver and also cannot be removed;
however, it uses very little memory.

| As mentioned above, part of EEMRAM may remain resident if you
| use it on a PS/2 or similar system. This is because EEMRAM may
| have to move the 1K extended BIOS data area from high memory to
| low memory in order to provide a large, contiguous block of
| memory for DOS to use. Again, do NOT use a TSR manager to
| release EEMRAM! If you do, the critical BIOS data area will be
| lost to the system; the results are unpredictable, but nothing
| good will happen. Note that even though 1120 bytes of EEMRAM
| will remain resident, you have really lost only 96 bytes--the
| remaining 1024 bytes is the BIOS data area, which was simply
| moved lower in memory by EEMRAM.

3. EEMRAM and DERAM both return an errorlevel of 255 if they
encounter any errors.

4. If EEMRAM needs more EMS memory than is available, it will
use all that is available. If no EMS memory at all is
available, it is an error.


Versions
--------
2.10 04/11/89
Added support for relocating extended BIOS data area (PS/2).

2.00 03/30/89
Added support for LIM 4.0 memory.
Added EEMEGA.SYS

1.01 08/20/87
Changed test for enhanced memory, may be a little more
tolerant of older versions of REMM.SYS et al.


Copyright/License/Warranty
--------------------------

This document and the program files EEMRAM.COM, DERAM.COM
EEMEGA.SYS, MS.COM, and EMSINFO.EXE ("the software") are
copyrighted by the author. The copyright owner hereby licenses
you to: use the software; make as many copies of the program
and documentation as you wish; give such copies to anyone; and
distribute the software and documentation via electronic means.
There is no charge for any of the above.

You are specifically prohibited from charging, or requesting
donations, for any such copies, however made; and from
distributing the software and/or documentation with commercial
products without prior permission. An exception is granted to
recognized user's groups, which are authorized to charge a
small fee (not to exceed $7) for materials, handling, postage,
and general overhead. NO FOR-PROFIT ORGANIZATION IS AUTHORIZED
TO CHARGE ANY AMOUNT FOR DISTRIBUTION OF COPIES OF THE SOFTWARE
OR DOCUMENTATION, OR TO INCLUDE COPIES OF THE SOFTWARE OR
DOCUMENTATION WITH SALES OF THEIR OWN PRODUCTS.

THIS INCLUDES A SPECIFIC PROHIBITION AGAINST FOR-PROFIT
ORGANIZATIONS DISTRIBUTING THE SOFTWARE, EITHER ALONE OR WITH
OTHER SOFTWARE, AND CHARGING A "HANDLING" OR "MATERIALS" FEE OR
ANY OTHER SUCH FEE FOR THE DISTRIBUTION. NO FOR-PROFIT
ORGANIZATION IS AUTHORIZED TO INCLUDE THE SOFTWARE ON ANY MEDIA
FOR WHICH MONEY IS CHARGED WITHOUT PRIOR PERMISSION FROM THE
COPTRIGHT OWNER.

No copy of the software may be distributed or given away without
this document; and this notice must not be removed.

There is no warranty of any kind, and the copyright owner is not
liable for damages of any kind. By using this free software,
you agree to this.

The software and documentation are:

Copyright (C) 1987,1989 by
Christopher J. Dunford
The Cove Software Group
Post Office Box 1072
Columbia, Maryland 21044

(301) 992-9371
CompuServe 76703,2002 [IBMNET]


 December 8, 2017  Add comments

Leave a Reply