home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 September
/
Simtel20_Sept92.cdr
/
msdos
/
sysutl
/
addram10.arc
/
ADDRAM.DOC
< prev
next >
Wrap
Text File
|
1989-02-14
|
21KB
|
544 lines
ADDRAM 1.0
Copyright (c) 1989 by Marty Del Vecchio
Adds memory to DOS using EMS 4.0 memory.
Based on the program EEMRAM
written by Chris Dunford
Table of Contents
I. What You Should Have 1
II. What the Program Does 1
III. What You Need 2
IV. How to Do It 3
V. Message Reported by Programs 4
A) ADDRAM 4
B) SUBRAM 5
C) EMSDATA 6
VI. Notices/Disclaimer 7
VII. Questions 7
I. What You Should Have
ADDRAM consists of six files:
1) ADDRAM.COM Program that uses EMS 4.0 memory to
extend DOS beyond 640K.
2) ADDRAM.ASM Assembly source for above.
3) SUBRAM.COM Program that undoes ADDRAM--it returns
DOS to 640K
4) SUBRAM.ASM Assembly source for above.
5) EMSDATA.EXE Program that gives information about the
EMS installed in your system.
6) ADDRAM.DOC This file--documentation.
II. What the Program Does
ADDRAM can increase the size of your DOS memory. DOS is
restricted to an arbitrary limit of 640K of memory. This is split up
into 10 segments (0 to 9) of 64K each, from address 0000 to 9FFF hex.
DOS can only handle one large contiguous memory block, and ordinarily
this block is 640K large.
This limit is arbitrary because of the placement of video buffers
immediately after the reserved DOS space. The EGA/VGA graphics buffer
is located at A000. The monochrome text buffer is at B000, and the
CGA/EGA/VGA text buffer is at B800. Thus, if you are using a mono
card, then there is 64K of address space available right at the end of
DOS that should be added to DOS.
However, the DOS limit is widely known as 640K, and there are very
few memory cards designed to put memory at these locations for use by
DOS. However, expanded memory cards that conform to the EEMS (Enhanced
Expanded Memory Specification) standard from AST have the ability to
map memory at virtually any location in the PC's address space. Chris
Dunford wrote a program called EEMRAM (EEMRAM11.ARC) that mapped EEMS
memory at the unused video buffers and added it to DOS.
When EMS 4.0 was introduced, it was a combination of "normal" EMS
3.2 (the type of memory provided by the Intel Above Board, for example)
and "enhanced" EMS (AST's memory cards). Part of the EMS 4.0 spec says
that cards may be able to map memory at different locations in the PC
address space, just like EEMS cards. This program is designed for EMS
4.0 cards that can do this.
However, it must be noted that this capability is an OPTION in the
EMS 4.0 spec. Thus, there are expanded memory cards that are
advertised as "EMS 4.0" cards. However, because they cannot map memory
wherever it is needed, they are insufficient for the purposes of this
program. For this program, you need a "true" EMS 4.0 card. For more
Page 1
particulars, see below.
Page 2
III. What You Need
ADDRAM is designed to extend DOS beyond 640K whenever possible,
using EMS 4.0 memory. It does this by addressing EMS memory into
unused video buffer memory. ADDRAM can only increase DOS' memory size
under certain conditions:
1) You must already have exactly 640K of DOS memory installed.
No more, no less.
2) The machine MUST have an EMS 4.0 memory card that can map
expanded memory into the A000 and B000 segments, where video
memory is located. The vast majority of EMS cards available
cannot do this, because they were designed prior to the
release of the EMS 4.0 specification. This program requires
functions found in EEMS cards, and NEWLY-DESIGNED EMS 4.0
cards. Many EMS cards are sold today as "EMS 4.0" capable
that cannot perform all of the EMS 4.0 functions needed for
this particular purpose.
The following paragraphs represent my personal experience in
working with memory cards, and their fitness for a particular
purpose. This should not be interpreted as a general view of
the cards discussed--this is only a discussion of their
suitability for use by ADDRAM.
All of the AST Rampage products (Rampage 286, Rampage 286
Plus, etc.) have the required capability, since they are true
EEMS/EMS 4.0 cards. However, you need to get the EMS 4.0
driver from AST for these products--ADDRAM does not work with
a plain EEMS driver. If you only have the old EEMS driver,
use EEMRAM11.ARC by Chris Dunford.
The Intel Above Board products (Above Board, Above Board
Plus) do not have the capability needed by ADDRAM. The Above
Board is an old-style EMS card, and the new Above Board Plus
is prohibited from addressing memory in the A000 and B000
segments to prevent conflicts with video memory. Thus, they
cannot be used by ADDRAM to add memory to DOS.
The Charge Card from All Computers, Inc. can be used. Use
the device driver "ALLEMM4.SYS" included on the ALL disks.
QEMM from Quarterdeck and 386 to the Max from Qualitas can
also be used, but they can automatically add memory to DOS if
requested. This program should be unnecessary if you have
either of these products or a similar product.
The program EMSDATA.EXE, included here, can help you
determine if your EMS card can be used.
3) There must be unused memory starting at segment A000. If you
Page 3
have an EGA or VGA system, you cannot add memory to DOS
unless you use the All Charge Card. This is because EGA/VGA
cards use the A000 segment for high resolution graphics video
buffers, and thus the EMS card cannot address memory there.
If you have the Charge Card, and you do not use your EGA/VGA
in graphics mode, but only in text mode, you can overcome
this restriction by adding "i=A000-AFFF" to the command line.
This takes away the graphics buffer and gives it to DOS, and
thus any program that tries to use EGA/VGA graphics will
crash your system. It is up to you to decide if you want to
make this tradeoff. However, beware that some EGA cards use
the A000 segment even when not in graphics mode. You will
have to experiment with your particular card to see if this
space can be used. Such results cannot be guaranteed.
If you have a standard monochrome or Hercules monochrome
video card, then you can add 64K to DOS, for a total of 704K.
If you have a CGA system, you can add 96K to DOS, for a total
of 736K.
IV. How to Do It
First, you have to ensure that your card can map memory into the
A000 and B000 segments. Run the program EMSDATA.EXE to see if your EMS
card can currently do this. Some EMS software drivers (the driver you
load in CONFIG.SYS) must be explicitly told on their command lines that
they can use this memory for mapping.
For example, if you have a monochrome system and an AST Rampage
286, you have to add the following to your 'DEVICE = REMM.SYS' command
line: "/i=A000-AFFF". This tells the EMS driver that it is OK to
address memory into this region. If you have a CGA, you must specify
"/i=A000-B7FF". Run the program EMSDATA.EXE to determine if your EMS
driver can map memory into these locations--the last paragraph it
prints out deals with this matter.
Once you have ensured that the EMS card can map memory into the
video buffer space, you must run the program ADDRAM.COM. ADDRAM.COM is
the program that actually maps memory into the video buffer space and
tells DOS that it is there.
To run this program, just type 'ADDRAM' at the DOS prompt. It
will automatically add as much memory as possible, up to 96K, to DOS.
It will report on its success or failure. If you want to limit the
amount of memory added to DOS for some reason, you can do so by
specifying the maximum number of EMS pages (16K each) on the command
line. For example, to add only 32K of memory to DOS, you would type
'ADDRAM /2' on the command line.
Page 4
V. Messages Reported by Programs
A) ADDRAM
Here is a list of the messages reported by ADDRAM:
"Expanded Memory Manager not found--no EMS installed."
This message indicates that no expanded memory was found in your
system. If you have an EMS card in your machine, be sure to add
the device driver statement in your CONFIG.SYS file. See the
instructions that come with your EMS card to do this.
"Expanded Memory Manager reports an error."
This message indicates that the EMS software is in a state of
error. This may be a software or hardware error--run EMSDATA.EXE
to determine the cause. Because of this error, ADDRAM cannot add
memory to DOS.
"This program requires version 4.0 expanded memory."
As discussed above, the EMS driver must be version 4.0 or above.
"This program requires exactly 640K of installed DOS memory."
As discussed above, this program cannot be used if your machine
has more than 640K or less than 640K of DOS memory installed. If
you have more, then you don't need this program. If you have
less, then you should use your EMS card to backfill DOS to 640K.
To do this, see your EMS card's instruction manual.
"This program's memory allocation block is not the last
in DOS' chain. Cannot change memory of not at end."
This message indicates that the memory block allocated to ADDRAM
is not at the END of DOS. You might get this message if you try
to run ADDRAM from inside of another program, such as the DOS
shell of Lotus 1-2-3. If you get this message, exit the program
you are currently in and try again.
"Expanded Memory Manager cannot map memory at segment A000."
As discussed above, your EMS card must be able to map memory at
segment A000 in order for it to be added to DOS. This is because
DOS can only work with one large contiguous block of memory.
"Not enough expanded memory available."
If there is not enough expanded memory free, you will get this
error. If you are adding 64K to DOS, then you naturally need to
Page 5
have 64K of expanded memory available. Run the program
EMSDATA.EXE to determine the amount of free expanded memory.
"Error while mapping expanded memory at A000."
This message indicates that the EMS driver reported an error while
memory was being mapped at A000. This may be a hardware or a
software error--in any case, no memory can be added to DOS.
"Error assigning name to expanded memory handle."
Under EMS version prior to 4.0, a chunk of EMS memory was only
known by a number (known as a handle). With EMS 4.0, a program
can identify its chunk of memory with an 8-character name. ADDRAM
assigns the name "ADDRAM00" to its memory. This is so that SUBRAM
can later find it and deallocate it. This message indicates that
an error occurred wile assigning this name to the EMS memory. In
this case, no memory can be added to DOS.
"ADDRAM's name already in use by another handle."
This message indicates that another program has used the name
"ADDRAM00" for its EMS memory. In this unlikely case, no memory
can be added to DOS.
"XX KB memory successfully added to DOS."
This message indicates success. "XX" will be a number, either 16,
32, 48, 64, 80, or 96. This specifies the amount of memory added
to DOS. To verify that this is the case, run DOS' 'CHKDSK'
program. At the end it will report the amount of DOS memory.
B) SUBRAM
SUBRAM can be used to un-do the effects of ADDRAM. It will
restore DOS to 640K and release the expanded memory used. Here are the
messages returned by SUBRAM:
"Only 640KB DOS memory--no memory has been added by ADDRAM."
This message indicates that DOS is currently at 640K, and thus
ADDRAM has not been run successfully.
"Expanded Memory Manager not found--no EMS installed."
This message indicates that no EMS memory is installed in the
system, and thus ADDRAM was not run successfully.
"No memory has been added by ADDRAM."
This message indicates that, although EMS memory is present,
Page 6
ADDRAM has not been run successfully to add memory to DOS.
"This program's memory allocation block is not the last
in DOS's chain. Cannot change memory if not at end."
This message indicates that the memory block allocated to SUBRAM
is not at the END of DOS. You might get this message if you try
to run SUBRAM from inside of another program, such as the DOS
shell of Lotus 1-2-3. If you get this message, exit the program
you are currently in and try again.
"Error deallocating EMS memory."
This message indicates that an error occurred while SUBRAM was
freeing the EMS memory added by ADDRAM. This indicates a
malfunction in the EMS driver.
"DOS memory reset to 640KB, EMS memory freed."
This message indicates success--DOS was restored to 640KB, and the
EMS memory added by ADDRAM was freed for use by other programs.
C) EMSDATA
EMSDATA.EXE is designed to tell you about your current EMS
configuration. Just type 'EMSDATA' at the DOS command prompt. The
program's output is generally longer than one screen--you can pause it
by hitting Ctrl-S (the Ctrl key and the S key at the same time). You
can resume the program by hitting any other key.
This program will tell you numerous things about your EMS,
including the software version number, its current state, the EMS page
frame segment address (where application programs address EMS memory),
the total amount of EMS memory and amount of free EMS memory.
EMSDATA will also give a list of the allocated handles (blocks of
EMS memory in use by programs), the pages and bytes allocated to each,
and if the EMS is version 4.0 or higher, the name assigned to each
handle. It is rare for a program to assign a name to a handle, but
ADDRAM assigns the name 'ADDRAM00' to its handle.
EMSDATA will also give technical information about your EMS
hardware, include the raw page size (16KB is the standard EMS page
size, but some implementations have smaller sizes), total number of raw
pages, and number of free raw pages.
EMSDATA will report the number of "additional register sets."
This refers to the number of mappings the EMS hardware can keep track
of in addition to the current mappings. Multitasking programs such as
Desqview use alternate register sets for quick switching of tasks.
This is one way to tell if you have a true EMS 4.0/EEMS system. If
Page 7
this number is 0, then you most likely do not. If this number is
greater than 1, then you most likely do.
The context save area size refers to the amount of memory a
program must use to save the current page mapping context. Resident
programs that use EMS memory (such as Sidekick Plus, and RAM disks and
disk caches that uses EMS) must save the current context before using
their EMS memory. The smaller this area is, the faster they can
operate.
The number of DMA channels available on an EMS board can affect
its performance in copying memory from expanded to conventional memory.
The next paragraph printed by EMSDATA discusses whether or not
your EMS card has been used to backfill DOS to 640K. If it has, then
programs like Desqview can use this page size to multitask programs in.
If not, then Desqview cannot easily run multiple programs in expanded
memory in this manner.
The next paragraph (and chart) discuss the exact memory locations
at which your EMS card can and cannot address memory. The final
paragraph discusses whether or not your EMS card is currently capable
of mapping memory at segment A000, and thus whether it can potentially
be used by ADDRAM. Again, these values may be changed, depending on
your EMS card, by adding parameters to the device driver statement in
your CONFIG.SYS file. See your card's manual for more details.
VI. Notices/Disclaimer
This program is released to the public domain for free use by
anybody. However, it cannot be sold at any price.
The author, Marty Del Vecchio, hereby disclaims any warranties,
express or implied. This program is not guaranteed to work at all.
Its author cannot be responsible for any loss or any damage of any kind
resulting in its use. Use at your own risk.
All of the brand names used are trademarks and/or copyrights of
the appropriate companies.
VII. Questions
If you have any questions or bug reports, you can contact me at
home at (508) 820-1544. Or you can find me at the Channel 1 BBS system
in Boston. The number there is (617) 354-8873. Leave a message in the
main conference for 'MARTY DEL VECCHIO'--note the space!
Page 8