home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 December
/
simtel1292_SIMTEL_1292_Walnut_Creek.iso
/
msdos
/
mswindws
/
memtip.arc
/
MEMORY.TXT
Wrap
Text File
|
1989-07-29
|
74KB
|
1,853 lines
Advanced Memory Topics
Windows/286 and Windows/386
Up to Version 2.11
Rick Masters
MS Electronic Support Services
CIS ID# 76701,270
version 1.00
10/24/89
Note: Although carefully compiled, the information in this
document is subject to error. If you believe you have found
a mistake, please leave a message with one of the current
Section Leaders in the Windows Applications section of the
Microsoft Applications forum (GO MSAPP) on Compuserve.
Topics
Conventional Memory
Extended Memory
LIM 3.2 Expanded Memory
LIM 4.0 Expanded Memory
Large Page Frame LIM 4.0 Expanded Memory
Backfilling
Windows Command Line Switches
WIN.INI Switches
Hardware Rom Conflicts
Himem.sys
"Memory Configuration Altered..." error message
Differences Between Windows/286 and Windows/386
Dos Applications
Multitasking
Swapping
Smartdrive and Expanded
Smartdrive
Ramdrive
Balancing Memory Use
Conventional Memory
In 1981, IBM introduced its Personal Computer, based on the
Intel 8086 processor. The IBM PC was capable of addressing 1
Megabyte of memory. Subtracting the 384K reseverved for
hardware mapping, a full 640K was available for use by an
application. This 640K is now referred to as Conventional
Memory.
Extended Memory
Extended memory, the simplest type of add-on memory to
understand, is simply a seamless continuation of the
origrinal 1 megabyte conventional address space on 80286 and
80386 computers.
It's important to remember that a standard 640K computer
actually has 1 megabyte of address space. That's 640K plus
384K. The additional 384K address space is reserved for the
system; it includes the video memory and the system BIOS
(Basic Input Output System). This 384K "system-use" space
always sits in the same exact place in the address space -
from 640K to 1 megabyte - even if you only have 256K actual
memory installed in your machine.
Extended memory starts exactly where the 384K system space
leaves off, therefore Extended memory always starts at the 1
megabyte address space boundary.
Extended memory is not used by many application programs for
a couple of reasons. First, computers based on the 8086
(such as the IBM PC and XT) CANNOT access Extended memory.
This is a limitation of the 8086 processor. There is no way
for the processor to directly access memory addressed above
one megabyte. The 80286 and 80386 processors contain the
ability to access memory over 1 megabyte, but most copies of
software have been for 8086 based computers. Therefore, most
application developers have ignored the special abilities of
these advanced processors in order to remain compatible with
the existing base of computers. The second reason Extended
memory has not been used by developers is the lack of an
accepted standard for accessing Extended memory. A standard
allows more than one program or device driver to allocate
Extended memory at the same time.
There have been two psuedo standards for accesing
Extended memory as well as a third, fully specified standard
finalized by Lotus, Intel, AST and Microsoft (with input
from many other vendors) in July of 1988.
The first "standard" used a bottom-up approach to
accessing memory. This was introduced by the the IBM driver
VDISK.SYS, a RAM disk program released with DOS Version 3.0.
Other programs could utilize the memory above that used by
VDISK by reading a header located in Extended memory which
indicated the amount of memory utilized and included a
pointer to the next header.
The second standard is the INT 15h method. When a DOS
program executes interrupt 15H, function 88H, DOS returns
the amount of Extended memory available. A program can then
use part of that memory, from the top-down. It then takes
control of the interrupt. When another program asks how much
Extended memory is availably, it indicates that the amount
of Extended memory available is equal to the true amount
available minus what it has used. Therefore, the new program
will not try to use more than the first program says is
alright. Microsoft's Ramdrive and Smartdrive use this
method. An example can be given for a 2 meg machine. Let's
say you configure Smartdrive to have 512K and a Ramdrive of
512K. When the computer starts, Smartdrive ask DOS how much
extended memory is available. DOS returns 1 Megabyte
(1024K). Then, Smartdrive installs itself in the top 512K of
the Extended memory and takes control of interrupt 15h.
Then, Ramdrive executes interrupt 15h to see how much
Extended memory is available. Smartdrive, acting as DOS,
lies and says 512K. So, Ramdrive uses the bottom 512K of
Extended memory, which is out of Smartdrives way. This
method of using Extended memory is inheriantly incompatible
with the bottom-up method of using Extended memory.
A third standard, which was jointly agreed upon, as
mentioned above, is the Extended Memory Specification 2.x
(XMS). This specification provides function calls for
Allocating, Moving, and Releasing Extended memory (and other
additional functions). The device driver HIMEM.SYS provides
this capability, as well as other functions which will be
described further on. This driver must use the first part of
Extended memory, and therfore is incompatible with VDISK.
Note, the latest version of VDISK.SYS shipped with version
4.00 of PC-DOS is compatible with HIMEM.SYS. One can assume
it is either using the INT15h, or XMS method of allocating
Extended memory.
Expanded Memory
Although there exists methods for accessing Extended memory
using the "Protected Mode" of the 80286 and 80386
processors, the 8086 processor does not have this
capability. How does the 8086 utilize more than 640K, one
might ask? To meet the need for more memory, the Expanded
Memory Specification was introduced in 1984. This
specification works through a combination of software
drivers and special memory hardware.
We'll start this discussion with an explanation of the LIM
3.2 specification. LIM stands for Lotus/Intel/Microsoft, who
jointly established the specification. In order to
understand how EMS works, it is helpful to understand what
the designers of EMS had to work with. First, the 8086
processor cannot access more than 1 megabyte. Second,
hardware can be addressed in the area between 640K and 1024K
which can be written and read from. An example of this is
the EGA memory. When you write to the EGA screen, you are
actually writing to memory stored on a hardware expansion
card that you have inserted into one of the slots of your
computer. What needed to be defined was a way to have the
hardware make more memory available than there was address
space to access that memory. The idea is to have the
hardware place a chunk of RAM (random access memory) in the
address space (say, between 768K and 832K), allow you to
access it, then switch in a different chunk of memory into
THE SAME address space, and allow you to access the new
memory chunk. The first memory chunk is not gone, it is
switched away on the memory card, and is just temporarily
unavailable. The end result is that your program can access
more than one 64K block of memory, using the same 64K block
of address space!
An application communicates with an EMS device driver in
order to control which block of memory it wants to access at
a given moment. The EMS driver in turn, controls the
hardware in order to make the requests of the program
happen. The EMS driver also can reserve blocks for more than
one program at the same time.
EMS blocks are sized in multiples of 16K. LIM 3.2 requires
that there be 4 contiguous 16K blocks of address space
available (not used by other hardware), totaling 64K. If
this is not available, the LIM 3.2 driver will not provide
Expanded Memory. The 16K segments are referred to as an "EMS
page". The total group of 16K segments is called the "EMS
Page Frame", which as just mentioned, must be at least 64K
in size for LIM 3.2.
The block of address space that memory is swtched in and out
of is also referred to as the "EMS bank". When the EMS
driver switches in a block of memory, the old block of
memory is said to be "banked" out to the Expanded memory
pool available on the EMS card. A new memory block is then
"banked in".
Remember, information is NOT being physically copied from
the EMS card to the RAM of the computer. That would be
"swapping", while this process is bank switching. The device
driver simply changes the card's page registers, and a new
block of memory from the Expanded memory card is available
to access.
LIM 4.0 Expanded Memory
In August of 1987, the LIM 4.0 specification was completed.
This specification is based on the same "bank-switching"
technology, but contains some differences, that while very
useful, added a complexity to the Windows memory managment
scheme that users are still trying to decipher.
In LIM 4.0, it is no longer necessary to have four
continuous 16K segments available. If only one is available,
Expanded Memory is provided. The size of the Page Frame can
range from 16K to 1024K and can be discontinuous. Also, part
of the Page Frame can reside below 640K. This last
significant fact is taken advantage of by Windows to provide
multitasking of Windows applications.
Large Page Frame EMS
Large Page Frame EMS is acheived when there is a Page Frame
in the memory area below 640K. If there is no Page Frame
below the 640K memory line, the EMS driver is in Small Page
Frame. Windows will utilize Large Page Frame if there is
approximately 288K available conventional memory to create
an EMS page frame. This is necessary to be able to start
large applications. In this case, multitasking of large
applications is possible. Here is a typical scenario: A user
loads a program such as Excel. Windows places Excel in the
EMS bank located below 640K. Let's say that the bank is 384K
in size. The user continues to work as normal, and no bank
switching occurs. But, then, the user decides to take a
chart from Excel and paste it into PageMaker. So, the user
double-clicks on PM.EXE, in order to start PM. At this time,
Windows "banks" Excel out to the pool of Expanded Memory,
and "banks in" a fresh block of memory to load PM into. Once
PM is loaed, Windows multitasks the applications.
Let me explain how Windows multitasks Windows applications
under Large Page Frame EMS. Windows is a message based
operating system. That is, a program executes whenever it is
processing a message (such as mouse movements or keyboard
activity). Whenever a program is done processing a message,
Windows distrbutes a message to another application, and
then that app executes. Under Large Page Frame, when Windows
needs to pass a message to an application, it "banks out"
the current application, and "banks in" the application that
needs to process the message. Once it is done processing,
the Windows scheduler chooses the next application to
receive a message, and performs the same operation. Since
bank-switching is performed through changing the values of a
few hardware registers on the LIM 4.0 memory card, the bank-
switches are almost instantaneous. Applications are
constantly being banked in and out, EVEN if they are in icon
form. In fact, there are only a few advantages to putting a
Windows app in icon form other than saving screen space and
reducing the frequency that it receives a message (since it
wouldn't receive a message to paint its screen area).
How can you achieve Large Page Frame EMS?
Under Windows/386 2.1x, if you have enough expanded memory
(and Conventional; see above), you will automatically be
placed in Large Page Frame. Under Window/286, some hardware
modifications are necessary. Since the conventional memory
is being replaced by memory from your expanded memory card,
it is necessary to disable the conventional memory that is
being replaced. Then, your expanded memory card must be
configured to replace this conventional memory. Most
Expanded memory cards provide a configuration utility for
doing this. This technique is known as backfilling. This
requires a LIM 4.0 EMS hardware compatible memory card with
the hardware registers capable of supporting Large Page
Frame. If you are unsure about this, ask the manufacturer
before purchasing the card. Plain Extended memory cards will
not provide LIM 4.0 Expanded Memory. They simply do not have
the registers to perform bank-switching.
Problems with Large Page Frame
Large Page Frame is not perfect, though. While it does
improve your ability to multitask Windows applications, it
has its limitations.
In order to understand the problems with Large Page Frame,
it is necessary to understand a little more about Windows
memory management.
When Windows is in LPF, the memory in the EMS Bank is being
switched in and out of conventional constantly. Some things,
though, must ALWAYS be in conevntional memory. Therefore,
they must reside in the block below the EMS Bank (or below
the Bank Line). These include library fixed code, library
data segments, library resources, task databases, EXE
headers, and so forth. Therefore, there must always be
enough conventional memory below the bank line to hold these
resources. If the EMS bank is too large, the amount of
memory below the bank-line will be too scarce, and you'll
get an "Out of memory" error trying do something like load a
printer driver (which would be loaded below the bank line),
or print. This can occur even though you may have 5 megs of
Expanded memory because Windows ran out of Conventional
memory.
When a program allocates memory, it is allocated from its
own EMS bank (unless they specifically ask for NON_BANKED
memory). When a second instance of a program is run, a
second data segment is created for it above the bank line.
If the EMS bank is too small, the program may run out of its
available memory above the bank line.
So we see, if the EMS bank is too small or large, an "Out of
Memor" error can occur, even though Expanded memory may be
plentiful. You won't have to worry about this if you are not
in Large Page Frame. If you run out of memory, you've simply
filled up ALL of conventional with programs and libraries.
You may still have plenty of Expanded memory left, but at
least you know you used conventional to its fullest (as
opposed to running out of it ONLY above or below the bank
line). So, you see, Large page frame isn't always the best,
especially if you are running only one application!
Windows Command Line Switches
From the last section on Large Page Frame, it follows that
there are Windows command line paramters to help you manage
the size of the Large Page Frame EMS bank.
/L-16 (Available since version 2.10D, file dated 9/7/88 or
later)
This switch moves the Bank line down 16K. The net effect is
to increase the size of the EMS page frame by 16K. This is
the only allowable negative amount.
/L+NNN (Available since version 2.10D, file dated 9/7/88
or later)
----------------
This switch moves the bank line up the specified number of
kilobytes. The net effect is to decrease the size of the EMS
bank. By moving the line up there will be an increase in
conventional memory below the bank line.
An example can be shown for Excel. Excel registers the
amount of conventional memory available to it in its help
box. In large page frame, that is the available memory to
Excel, above the bank line. You will notice that the
conventional memory reported by Excel will decrease if you
move the bank line up.
The MS-DOS Executive, however, may report a different story.
It reports in its About... box reflect the amount of memory
above and below the line when it is banked in the Page
Frame.
Some applications require a lot of memory below the Bank
Line. You will find that they produce an Out of Memory
Error, even though there is plenty of Expanded Memory. This
is where the /L parameter may improve things.
/L+200 (Available since version 2.10D, file dated 9/7/88
or later)
----------------------
This parameter will put Windows in Small Page frame EMS.
This is useful if you are running only one large Windows
application, and maybe a few small ones also. Windows still
has access to Expanded memory, but it can only store the
applications that fit through the smaller Page Frame. Things
like notepad, cardfile, etc. will easily go into EMS in
Small Page Frame, while applications like Excel and
PageMaker will have to stay in Conventional memory.
Since large applications must stay in conventional, this
switch is not recommended for multiple large applications.
If you try to run more than one large application in
conventional memory, Windows can try to service the request,
though. Windows applications can be composed partially of
"Discardable" code or resources (like dialog boxes). When
Windows is running low on Conventional memory, Windows can
discard these memory blocks in order to make way for a new
application, or a memory allocation request. When an
application needs to use a segment that was discarded, the
segment will be reloaded from the .EXE file.
This is a good time to mention that the discarding and
reloading mentioned above is the extent to which Windows
uses the disk for multitasking. Windows/286 and 386 never
swap Windows applications to disk and only Windows/286 swaps
DOS applications to disk (for convenience, not
multitasking).
/Ennn (Available since version 2.11)
-------------------
Specifies that nnn bytes of conventional memory must be
available before Windows will go into Large Page Frame EMS.
The default is approximately 288K. That is, if when you
start Windows and check the File, About dialog box, if the
amount of conventional indicated is 288K or larger, you will
be in Large Page Frame EMS. This parameter allows you to
change this value.
This could be useful to software manufacturers, who know
that their program requires a certain amount of conventional
memory. Instead of having to evaluate each users memory
situation, and decide if Large Page Frame or Small is the
best for them, they can just instruct the user to run
Windows with the /E parameter set to a specific value. Then,
Windows will put itself in LPF or SPF using the threshhold
as defined by the software developer.
The /E is only valid for Windows 2.11, and therefore has not
seen widespread usage.
WIN.INI Memory Switches
For Windows/286 only:
swapdisk=
Specifies which location Windows will store itself when a
DOS application is running. Also, if multiple DOS
applications are loaded, Windows and all DOS applications
except the currently running DOS application will be stored
in this location. The following are acceptable values for
the Swapdisk= parameter in the Windows/286 Version 2.10 or
later WIN.INI file:
1. swapdisk=? (question mark, the default)
The swapdisk=? parameter tells Windows/286 to
automatically choose the drive and directory to perform
swapping operations to.
2. swapdisk=/E (forward slash, E)
The swapdisk=/E parameter tells Windows/286 Version 2.10
to perform swapping operations to expanded memory. NOTE:
this option did not work in Windows Version 2.03.
3. swapdisk=x:\dir (any valid drive and directory)
The swapdisk=x:\dir parameter tells Windows/286 to
perform swapping operations to the drive and directory
specified. The drive and directory must conform to the
following:
a. They must exist.
b. The location cannot be a removable medium (floppy
disk, Bernoulli box, tandon data pac).
c. It must be at least three times the size of the
largest standard application being run.
The following examples are NOT acceptable values:
swapdisk=384 (Any numeric value - NOT acceptable)
swapdisk=? /E (Question mark /E - NOT acceptable)
swapdisk=d: /E (Drive letter /E - NOT acceptable)
swapdisk=d: e: (Multiple drives - NOT acceptable)
Note: Microsoft has confirmed swapdisk=/e to be a problem in
Windows Version 2.03. This problem was corrected in
Windows/286 Version 2.10. You must update to Windows/286
Version 2.10 or later to correct the problem.
Setting the TEMP variable in your AUTOEXEC.BAT file (SET
TEMP=C:\TEMP), also sets the location of the swap disk. The
swapdisk entry in the WIN.INI overrides the TEMP variable.
swapsize=
This parameter sets the amount of space to reserve in the
conventional memory space as a swap area for DOS
applications. The default is swapsize=0, which allows
Windows to set the swapsize based on the memory requirements
field in the PIF file of the first DOS application run. This
has one disadvantage in that this space may not be
sufficient for subsequent applications. Therefore, it is
recommended that you run the largest DOS applications first,
or specifically set swapsize to a higher value. You may edit
the entry to read "swapsize=470". This value is in kilobytes
and may be adjusted upward to 640K.
For Windows/386 only:
windowmemsize=640
Sets the size of the first virtual machine. This is the area
where Windows applications run. This entry does NOT apply to
the size of DOS applications' vitual machines.
It is not recommended that this value be changed from the
default 640K. It may be perceived that by changing this
value, more memory could be gained for running DOS
applications. This is generally not the case. Since
Windows/386 holds a certain amount of overhead for a DOS
application in the first Virtual Machine, you will run out
of space for this "overhead" before you will run out of
memory that would be used for Virtual Machines.
If this value is changed, the emmsize paramter (described
below) should be set to 0. This disables Expanded Memory. If
this is not done, Windows will try to make up for its lost
Virtual Machine size by allocating available Expanded
memory.
emmsize=
Sets the Maximum amount of Extended memory to be converted
to Expanded. The default is blank. When blank, Windows/386
automatically converts all Extended to Expanded. The
Expanded can be released for creating Virtual Machines if
necessary.
emmsize=0
Disables Windows/386 expanded memory and creation. This
differs from running Windows/386 with the /N parameter.
Using /N just tells Windows that it cannot use the Expanded
memory that may be available. It would still be available to
applications that directly access the Expanded memory
driver. By setting emmsize=0, Windows/386 does not create an
Expanded memory page frame, for itself or for applications
(such as Excel) that directly access Expanded memory. Note:
The corresponding Windows/286 action would be to remove the
EMS driver from your config.sys.
emmpageframe=
Explicitly sets the starting location of a 64K EMS page
frame in upper memory. An example of this is
emmpageframe=D000
This sets the LIM 4.0 page frame at the ROM location D000
(hex). This is at 832K. This is useful if you have a
conflict with hardware set at other locations in ROM. Note,
this is recommended if emmexclude and emminclude do not seem
to set the location of your page frame in the location you
desire. This setting can be dangerous, because if you do
something like "emmpageframe=C000", you will set your EGA
ROM to be mapped as Expanded memory. Windows/386 doesn't
check if the address range is already in use. See the
Hardware Rom Conflicts section of this documentation for
further information about the use of this setting in
specific situations.
emminclude=D000-D7FF (Windows/386 Version 2.10 or higher)
When Windows/386 starts, it tries to find 4 16K blocks of
address space in which to place its EMS page frame. In order
for applications to access LIM 3.2 Expanded Memory directly
through the EMS driver that Windows/386 has built-in, these
4 pages must be continuous. Windows/386 usually scans the
locations: C000-DFFF (768K through 895K), looking for
address space not allocated by other hardware. If you want
to give Windows/386 a range of valid addresses to search
through, you can use this setting.
emmexclude=C000-C7FF
This setting tells Windows/386 to skip certain areas when
selecting a Page Frame. This could be useful if you have a
video or network card at a specific address, and you want to
make sure Windows/386 doesn't try to use this segment for
hardware mapping.
lastemmseg=D800
This setting tells Windows/386 to stop looking for EMS pages
after this address. Windows/386 will test the segment at the
location specified for availability, but will not go
further.
Hardware Rom Conflicts
If you have adapters in your computer system which utilize
address memory between 640K and 1 Meg, and are having
problems with recognizing Expanded memory, there is a
possibility that your additional hardware may have an
address space conflict with the memory Windows wants to
utilize as an EMS page frame.
Hardware that utilizes this memory include network cards,
high resolution displays (such as the 8514/a), IRMA + 3270
adapters, RLL + ESDI hard drive controllers, and tape backup
devices.
If you believe you are having a conflict with an adapter,
contact the manufacturer and find out what ROM locations the
device uses. For Windows/386, use the WIN.INI switches
mentioned above (emmpageframe, emmexclude, etc) to locate
the Windows/386 page frame in a position which does not
conflict with the other devices. If possible, configure your
adapters to use a continuous memory range (by configuring
them next to each other instead of skipping segments), which
will maximize the largest block of address space available
for Windows/386's page frame.
HIMEM.SYS: High Memory and Extended Memory Manager
In Windows/286 version 2.10 or later, Windows has the
capability of putting part of itself in extended memory with
the help of a driver called HIMEM.SYS. In Windows/386, the
HIMEM capability is built-in and HIMEM.SYS should NOT be
placed in the config.sys.
HIMEM.SYS is a device driver that is installed when you
install Windows/286 Version 2.10D or 2.11 for a system which
has extended memory available. When HIMEM.SYS is installed,
a modified version of Windows is installed that is designed
to make use of this driver. This modification permits faster
execution of Windows and an increase in conventional memory
from 45K to 64K depending on the system.
HIMEM.SYS, when installed, loads itself (program code) into
low memory (conventional). Whenever any program that can use
HIMEM requests anything from it, as does Windows, it
reserves up to the first 64K of extended memory. Memory
managers, RAM disks, or disk caches that have to use this
same memory should not be used with HIMEM.SYS (e.g.
CEMM.SYS).
HIMEM.SYS is installed in the CONFIG.SYS file during Setup
(not Memset). If HIMEM.SYS is removed from the CONFIG.SYS
file or disturbed in memory so that it cannot execute
correctly, then a message of "Memory configuration has
been altered..." is displayed when you type 'win'. If, after
checking to make sure HIMEM.SYS is installed in the
CONFIG.SYS file correctly, you are still having problems,
check for incompatible drivers or TSRs that could be
interrupting HIMEM's execution.
If you have an EMS (Expanded Memory Specification) board,
you can allocate part of its memory (64K is the recommended
optimum amount) to extended memory by reconfiguring the
board and leaving the rest as expanded. Refer to your EMS
board manual for more information about reconfiguring your
board.
If you are loading other extended memory programs that do
not use the XMS interface to manage the extended memory,
they should be configured to leave the FIRST 64K of extended
memory free.
System Requirements
To use HIMEM.SYS with your computer, you need the following:
1. An IBM PC/AT, PS/2 (except models 25 and 30), or
compatible computer
2. Extended memory
3. DOS 3.00 or higher.
Installing HIMEM.SYS
To install HIMEM.SYS, include the following command line in
your CONFIG.SYS file:
DEVICE=[d:][path]HIMEM.SYS [/HMAMIN=h] [/NUMHANDLES=n]
When you start your computer, the driver is loaded and the
following message is displayed:
HIMEM: DOS XMS Driver, Version 2.04 - 8/17/88
Copyright 1988, Microsoft Corp.
If you also want to install other device drivers that use
XMS calls, place the commands that install them in the
CONFIG.SYS file after the above command.
HIMEM.SYS Options
Following is a description of the two options you can use
with the HIMEM.SYS device driver. These need not be used in
a normal Windows installation.
1. The /HMAMIN=h option is as follows:
The function of this option is to specify the minimum
amount of memory a Terminate and Stay Resident (TSR) program
can use in the High Memory Area (HMA) allowing controlled
access to the HMA.
Specify the amount of memory in kilobytes. Programs
requiring less space are not placed in the HMA.
To ensure the most effective use of this memory area, set
the number to the request size of the largest TSR program
that uses the HMA. The minimum value is 0, the maximum is
63, and the default is 0. The 0 default allows "first come,
first served" access to the HMA. When you use this option,
the following message is displayed:
Minimum HMA size set to <number>
Please note that you will only use the /HMAMIN option
when you run two or more TSR programs and/or device drivers
that require use of the HMA.
2. The NUMHANDLES=n option is as follows:
The function of this option is to set the maximum number
of Extended Memory Block (EMB) handles that can be used at
any given time. Specify the amount of memory in kilobytes.
The minimum value is 1, the maximum is 128, and the default
is 32. Each additional handle requires an additional 6 bytes
of resident memory. Because it is possible to exceed the
default when running several programs, increase the number
of allocated EMB handles using the /NUMHANDLES option. When
you use this option, the following message is displayed:
n extended memory handles available
The following command line shows the most common
configuration of HIMEM.SYS:
DEVICE=HIMEM.SYS
The following command line shows a configuration of
HIMEM.SYS that ensures that any program using the High
Memory Area must use at least 40K of this memory:
DEVICE=HIMEM.SYS /HMAMIN=40
The following command line shows a configuration of
HIMEM.SYS that uses the maximum number of Extended Memory
Block handles:
DEVICE=HIMEM.SYS /NUMHANDLES=128
Messages
The messages below may appear when you install the HIMEM.SYS
device driver. Most messages indicate a problem that needs
correction before HIMEM.SYS can be installed properly.
The messages and their meanings are as follows:
1. "64K High Memory Area is available" means you have
installed HIMEM.SYS properly.
2. "ERROR: HIMEM.SYS requires DOS Version 3.00 or higher.
XMS Driver not installed" means you have tried to install
HIMEM.SYS on a machine using a version of MS-DOS earlier
than Version 3.00. You can only install HIMEM.SYS on systems
using MS-DOS Version 3.00 or later.
3. "ERROR: HIMEM.SYS requires an 80x86-based machine. XMS
Driver not installed" means you have tried to install
HIMEM.SYS on a machine other than an 80286 or 80386.
HIMEM.SYS can only be installed on a computer system that
has an 80286 or 80386 microprocessor.
4. "ERROR: An Extended Memory Manager is already installed.
XMS Driver not installed" means you have tried to install
HIMEM.SYS after it has already been installed on your
system. HIMEM.SYS can only be installed once.
5. "ERROR: No available extended memory was found" means you
have tried to install HIMEM.SYS on a computer without any
extended memory. HIMEM.SYS can only be installed on a
computer with extended memory.
6. "ERROR: Unrecognized A20 hardware" means HIMEM.SYS cannot
recognize the A20 hardware of your system. If this occurs,
it is probably because the system is not one supported by
this release of HIMEM.SYS. Contact your computer
manufacturer or dealer to see if an XMS driver exists for
your machine.
7. "WARNING: The High Memory Area is unavailable" means
HIMEM.SYS cannot find enough memory to use the High Memory
Area. HIMEM.SYS cannot process any requests for the High
Memory Area. However, HIMEM.SYS remains installed to process
any requests for the Extended Memory Data Blocks.
8. "WARNING: The A20 Line was already enabled" means that
during the installation process, HIMEM.SYS detected the A20
hardware was already enabled. HIMEM.SYS remains installed
and attempts to work properly, however it does not disable
the A20 line.
VERSIONS COMPATIBLITY WITH WINDOWS/286
HIMEM.SYS, the Microsoft implementation of an XMS (extended
memory specification) device driver, is shipped with MS-DOS
Version 4.00 and with Windows Version 2.10. Different
versions of HIMEM.SYS are available with different releases
of the product, so some version matching must be observed.
This article will describe version compatibility for the
released versions of HIMEM and Windows.
The following table shows the file sizes (in bytes) of the
released versions of HIMEM.SYS. Other than noting the
version message when HIMEM is loaded from the CONFIG.SYS,
the easiest way to determine which XMS driver version you
have is to look at the size of the file. (Incidentally,
noting the version of HIMEM.SYS will help determine the
release of Windows Version 2.10 that you have, which is
useful in the discussion below.)
Filename Version Size (in Bytes)
HIMEM.SYS 1.00 1613
HIMEM.SYS 1.10 1610
HIMEM.SYS 2.00 4571
HIMEM.SYS 2.01 4777
HIMEM.SYS 2.02 4775
HIMEM.SYS 2.03 5792
HIMEM.SYS 2.04 6223
HIMEM.SYS 2.06 6266
HIMEM.SYS Version 1.00 was shipped with the first release of
Microsoft Windows Version 2.10 having files dated 5-27-88.
This release of Windows and this version of HIMEM.SYS are
version locked. This release of HIMEM.SYS is the only
release that will work with this version of Windows;
conversely, this version of Windows will work only with this
version of HIMEM.SYS, not with any other version of
HIMEM.SYS (or with any other XMS driver). This version of
HIMEM.SYS is not a full XMS device driver; it is only a
high-memory manager and can be used only by this version of
Windows.
HIMEM.SYS Version 1.10 was shipped with later releases of
Microsoft Windows Version 2.10 having files dated 7-1-88.
This release of Windows can use this version of HIMEM.SYS or
later versions. In addition, this release of Windows can use
other XMS drivers in place of HIMEM.SYS Version 1.10.
However, HIMEM.SYS Version 1.00 (the earlier HIMEM.SYS
release) CANNOT be used with this release of Windows.
Version 1.10 of HIMEM.SYS is not a full XMS device driver;
it is only a high-memory manager. However, Version 2.10 of
Windows uses the XMS interface for accessing the high-memory
area, allowing later versions of HIMEM.SYS to be used in
place of Version 1.10.
HIMEM.SYS Versions 2.00, 2.01, 2.02, 2.03 and 2.05 have not
been released to the public; therefore, they will not be
discussed in this article.
HIMEM.SYS Version 2.04 is a fuller implementation of the XMS
definition than HIMEM.SYS Versions 1.x. The releases of
Versions 2.00 through 2.04 allow access to extended memory,
whereas the releases of Versions 1.x only allow access to
the high-memory area. HIMEM.SYS Version 2.04 is shipped with
later releases of Windows Version 2.10 having files dated 9-
7-88.
HIMEM.SYS Version 2.06 has the same functionality of version
2.06. There were minor fixes from version 2.04. This version
is available on Compuserve, in the Microsoft Systems forum,
(GO MSSYS). The driver is in the DOS utilities library. The
file is HIMEM.ARC.
In summary, if you have the first release of Windows Version
2.10 having files dated 5-27-88 which include HIMEM.SYS
Version 1.00, you can use only this version of HIMEM.SYS
unless you upgrade to a later version of Windows. If you
have a later version of Windows, you can choose to upgrade
to the latest version of HIMEM.SYS.
"Memory Configuration Altered..."
The following is a Microsoft Knowledgebase article:
Title: Windows/286 Err Msg: Memory Configuration Altered
Document Number: Q46950 Publ Date: 20-JUL-1989
Product Name: Microsoft Windows/286 Retail Product
Product Version: 2.10 2.11
Operating System: MS-DOS
Summary:
The following article discusses the causes for the error
message "Memory configuration altered" when starting
Windows/286.
More Information:
In all cases under Windows/286, this error cannot occur
unless you have installed Windows/286 to "use extended
memory," which causes Windows/286 to expect the HIMEM.SYS
driver to be present. The following are causes for this
message:
1. HIMEM.SYS is not in the CONFIG.SYS file, or is in the
CONFIG.SYS file but not present in the specified location.
Examine your CONFIG.SYS file to verify that the line
DEVICE=HIMEM.SYS is present, and a copy of HIMEM.SYS is in
the root directory of your boot drive (or place a path
specification in the DEVICE= line).
2. HIMEM.SYS is in the CONFIG.SYS, but is not installing
(gives an error during the boot process) because of one of
the following reasons:
a. You do not have at least 64K of extended memory.
You can correct this problem by creating 64K of
extended memory to reconfigure your system (e.g. configure
part of your expanded memory board as extended).
If you cannot create 64K of extended memory, you
need to reinstall Windows/286 and specify that you do not
have extended memory available. Also, remove the line
DEVICE=HIMEM.SYS from your CONFIG.SYS.
b. You receive the error "Unrecognized A20 hardware."
This error message means that your computer
implements extended memory in a nonstandard way, and
HIMEM.SYS cannot work on your machine. Reinstall
Windows/286 and specify that you do not have extended
memory available. Also, remove the line DEVICE=HIMEM.SYS
from your CONFIG.SYS. To correct this problem in the long
term, contact your hardware manufacturer; a BIOS upgrade
may provide a solution.
c. You receive the error "A20 line already enabled."
This error message means that some other driver is
using extended memory before HIMEM.SYS is loaded. Verify
that the line DEVICE=HIMEM.SYS is the first line in the
CONFIG.SYS file, and that you are not loading any other
protected-mode software (such as 386 memory managers) that
are incompatible with HIMEM.SYS (for more information,
search on the following words HIMEM.SYS and memory and
managers.) For testing purposes, remove everything from
the CONFIG.SYS except HIMEM.SYS (and the disk-partitioning
driver, if present).
3. HIMEM.SYS is in the CONFIG.SYS file and is installing
without an error, but you still receive the "Memory
configuration altered" message.
This means that some other program or driver is
interfering with HIMEM.SYS after it is loaded.
Verify that no other programs or drivers that use
extended memory are in the CONFIG.SYS or AUTOEXEC.BAT
files. Typical offenders are 386 memory managers (for more
information, search on the following words: memory and
managers), disk-caching programs other than SMARTDrive,
and RAMdisk programs other than RAMDrive. Remove all
drivers from the CONFIG.SYS file (except the disk-
partitioning driver, if present) and all programs from the
AUTOEXEC.BAT for testing purposes.
COPYRIGHT Microsoft Corporation, 1989.
DOS Applications Under Windows/286 and Windows/386
How Windows/386 handles DOS applications
Windows/386 can multitask as many DOS applications as it can
fit into memory (including Extended memory). DOS
applications must be resident in memory. Windows/386 does
not swap applications to disk. Windows/386 will load DOS
programs into memory, and once you run out of memory, you
will not be able to load any more DOS apps.
It takes a lot of memory to run DOS applications under
Windows/386. First of all, Windows/386 reserves the first
megabyte for running Windows applications. This is referred
to as the first Virtual Machine, or VM1.
What is a Virtual Machine?
A Virtual Machine is just a 640K (or smaller) memory space
that you can run a program in.
Well, you might ask how this is different from your current
system. You currently have 640K memory, and you can run MS
Word, or an application such as that in your computer, and
go from there.
What is it about Windows/386 that makes a 640K program area
into a "Virtual Machine"?
Well, using the special abilities of the 80386 processor,
Windows/386 can create more than one Virtual Machine, and
run a program in each of them at the same time. It divides
the total of your conventional memory and extended memory
into independant Virtual Machines. This is how it works:
First, You must have at least two megabytes of
memory.
When Windows/386 starts, it creates a Virtual Machine
for running Windows applications. The size of this VM
is defined by the windowmemsize setting, located in the
[win386] section of the WIN.INI (see WIN.INI section).
It is recommended that this setting be 640.
Now, you decide to run a DOS application. Windows/386
creates another Virtual Machine. This memory area is
located in your extended memory area above 1 megabyte.
Say from 1 meg to 2 megs. Unless you use a PIF file
(explained later), Windows/386 allocates 640K for the
Virtual Machine. Plus, a certain amount of overhead is
allocated for the display and for memory management
information. That means approximately 384K of overhead
in a typical configuration using an EGA card. This
overhead is necessary to multitask DOS applications
because each application needs to write to it's own
display memory. Once the Virtual Machine is created,
the DOS application is loaded.
At this point Windows/386 has two DOS memory areas
created at the same time. Using special capabilities of
the 80386 processor, Windows/386 fools the DOS
application running in the 1 meg to 2 meg address space
into believing it is running in it's own zero to 640K
memory space.
How is the multitasking achieved?
Again, using the Virtual Machine technology, the
processor can be running one Virtual Machine in 8086
mode, completely stop, save its complete state of being
(registers and location), and resume another Virtual
Machine. It's like Windows/386 has split your 2 meg 386
computer into two completely separate 1 meg 8086
computers running at the same time!
Memory that is not being used for Virtual Machines is
dynamically converted to Expanded memory. This Expanded
memory is available to all the Virtual Machines.
How Windows/286 handles DOS applications
Windows/286 has a limited ability to run DOS applications
when compared with Windows/386. Since Windows originally ran
on non-80286 machines, the DOS support was based on 640K
machines. Windows/286 does not use Extended memory for DOS
applications to create Virtual machines. Instead, it runs
all DOS applications in the normal 640K address space where
Windows normally runs.
Windows/286 will handle a DOS application one of three ways
depending on the settings in its PIF file. The three
different scenarios are:
Level 1: The Directly Modifies Screen checkbox is not
checked. These are applications that write to the
screen using BIOS or ANSI commands. They do not access
system resources such as the COM port or video memory
directly. Examples: CHKDSK, COMMAND.COM, COPY
Level 2: The Directly Modifies Screen checkbox is
checked. The application writes to the video memory
directly. Examples, MS WORD, LOTUS 1-2-3, Ashton-Tates
DBASE.
Level 3: The Directly Modifies Memory checkbox is
checked. The application needs all of DOS memory in the
system and/or graphics card such as AutoCad. These
applications must run alone. There is little advantage
to running these applications from Windows, as you will
have to close all Windows applications in order to run
the DOS application.
Windows provides a program, WINOLDAP.MOD which acts as an
interface between Windows and all DOS applications running
on the system. Winoldap is technically known as a "shell",
and as such, provides cut and paste clipboard support
between Windows and the DOS applications. It also has built
into it sophisticated macro capabilties which can be used by
system software developers to manipulate DOS applications.
It also provides necessary environmental support for DOS
applications and interfaces with the Windows DOS application
screen grabber.
There are already some announced Windows-based programs
which will provide access to this full functionality of
Winoldap, most notably Hewlett-Packard's New Wave and
Softbridge Microsystems Bridge 286/386. If the reader is
interested in these programs, they should contact their
local Hewlett Packard sales office or Softbridge
Microsystems at (617) 576-2257.
Windoldap will function differently depending on which level
of DOS application you are using:
Level 1: If there is enough memory available in the
system for mapping the screen buffer into a window and
supply the applications memory requirements, Windows
can run the application within a window. As is always
the case, the PIF settings are used to determine
whether this is possible. This mode of operation will
leave little memory available for running any other
applications.
Level 2: In this case Winoldap swaps Windows and
Windows applications running in conventional memory out
to the swapdisk set in the [pif] section of the
WIN.INI. If swapdisk=/e then Windows will attempt to
swap to expanded memory if it is available and there is
enough of it. This allows the user to context swith
between Windows and DOS applications using ALT-TAB or
ALT-ESC depending on how the DOS application writes to
the video display.
Level 3: In this case, Winoldap checks to see if any
applications are running. If there are, it responds
"Cannot run with other applications". If there are no
applications running, Windows saves its state in a
small chunk of memory and then closes down. The DOS
application is launched and must be quit in order to
get back to Windows. When the DOS application closes,
Windows is restarted.
Considerations for Running DOS Applications under
Windows/286:
1. The amount of swap space needed to run Level 2 and 3 DOS
applications is much larger than first appears. Windows
requires that there be at least twice the amount of memory
(as specified in the PIF Memory Required entry) plus enough
memory to store the screen buffer of the application and
Windows. This space must be available on the hard disk or in
the EMS memory pool before Winoldap can run the DOS
application.
2. If a Windows program is using the COM port, Windows will
not be able to swap itself to disk in order to run a Level 2
or 3 application. This is because the COM port requires
servicing that is impossible when the Windows application is
swapped to disk.
3. Winoldap has no provision for restricting the amount of
EMS used by a single DOS application. This can cause
difficulties when running an application such as Lotus 1-2-3
that may allocate all available EMS. This will manifest
itself as a lack of EMS when context switching back and into
Windows or being unable to run any other Windows
applications in large frame EMS mode. It can also cause
problems when use with "swapdisk=/e" since there may not be
enough EMS in which to bank the DOS application. In this
case the performance will be considerably slowed because
Winoldap will have to swap to the hard disk instead of
faster memory.
4. If graphics cut and paste support is not required for a
DOS application, the Screen Exchange option may be changed
to those using less memory (from "Graphics/Text" to "Text"
using the PIF editor since this may conserve an extensive
amount of memory which would otherwise be unused. This
option may be disabled if no clipboard support is required
at all.
5. If you are not running the DOS application in a window,
it may be desirable to set the Memory Desired setting in the
PIF file to -1. This will cause Windows to swap out, thus
freeing up additional memory for other uses.
6. While swapdisk=/e supports large and small frame EMS, it
will function faster in large frame mode because it is able
to bank switch the entire DOS application into EMS instead
of having to squeeze the DOS application through the 64K LIM
3.2 page frame.
7. EGA.SYS will help preserve the mode of the EGA video card
when running DOS applications such as Microsoft Word under
Windows. It allows custom EGA palettes to be saved and saves
the state of the the text mode (43 line vs 25 line mode) of
a DOS application while switching between the DOS
application and Windows.
8. If you experience ANY problems running DOS applications
with any third party graphics card, verify that the latest
version of BIOS and manufacturer supplied driver is used.
Also, be certian that the auto-emulation(switching) feature
of the graphics card is disabled. Typical symptoms of this
problem are blank screens on boot, or "holes" in the display
and sometimes machine lockups when switching between Windows
and DOS applications. These lockups may also be caused when
there is an interrupt conflict in the system, typically
involving a bus mouse card.
Smartdrive
SMARTDrive is a disk caching utility included with Windows
and MS-DOS. It stores disk blocks that have been involved in
read or writes in a memory buffer. If the block is called on
again, SMARTDrive provides it from memory as opposed to
accessing the relatively slower hard drive.
The cache size for SMARTDRV.SYS is in kilobytes. The minimum
value is 128 (128K), and the maximum value is 8192 (8
megabytes). If this size is not explicitly specified on the
SMARTDrive command line, the default value is 256 (256K).
The upper limit of the SMARTDrive cache is not specified in
the "Microsoft MS-DOS 4.00 User's Reference" manual.
SMARTDrive supports the use of extended memory and expanded
memory, but not conventional memory. SMARTDRV.SYS was
designed as a disk caching program for environments with
memory that MS-DOS does not use heavily: extended and
expanded memory. The maximum 640K of conventional memory is
so valuable these days that most people don't waste it with
disk caching.
Most people would rather use this precious conventional
memory for running programs, and not for SMARTDrive to speed
up their systems. For people who do not feel this way, there
are two upgrade paths available. They are as follows:
1. Obtain an Expanded memory board
This works with Windows/286 and Windows/386, also.
If used for Windows/386 and Smartdrive, it must be
configured as Extended (so a cheaper Extended memory board
will suffice).
2. Obtain an Extended memory board.
Usually cost less than an Expanded memory board and
provides the same support for Windows applications if you
are using Windows/386. Windows/286 cannot use Extended
memory, however.
SMARTDrive caches only nonremovable hard drives that operate
on the IBM ROM INT 13H interface using drive numbers
starting at 80H. SMARTDrive will not cache network drives,
RAM drives, or removable drives of any kind, including
floppy drives and removable hard drives such as the Iomega
Bernoulli Box. These drive types do not utilize INT 13H.
Since SMARTDrive is operating at the INT 13H level of the
system, all logical partitioning schemes that operate above
the INT 13H interface will not be cached. SMARTDrive caches
all hard-disk activity (up to 16 physical drives) that is
processed by the INT 13H interface.
Note: The number of physical hard drives is the number
returned in the DL register on an AH=08 INT 13H call.
SMARTDrive caches logical drives if the physical drive uses
INT 13H.
SMARTDrive frequently does not work correctly on hard disks
with third-party partitioning software such as Disk Manager
and Priam hard disk partitioning utilities.
General guidelines on how much memory to allocate to
SmartDrive are very hard to give; it is very subjective.
There is no "Optimum Setting" that is guaranteed to work
better than any other. If you are using expanded memory with
a LIM Version 4.0 driver, we generally recommend you use
about one third of your EMS memory for SmartDrive. If a lot
of disk swapping is expected to occur, then use more.
However, having a very large SmartDrive will decrease the
amount of expanded memory available for Windows to load Code
segments into, so more swapping will occur and fewer
programs can be loaded.
If the extra memory in your computer is extended memory
and you are not using Windows/386, it is usually best to
assign it all to SmartDrive, since Windows/286 does not use
extended memory.
If you are using Windows/386, try assigning to SmartDrive
one third of the memory you have available beyond the 1
megabyte of system memory.
Note that SmartDrive (for expanded memory) has an IOCTL
that allows Windows/286 to take expanded memory away from
SmartDrive. The upshot is that you can give SmartDrive
memory and not totally starve Windows/286 since it will take
the memory back when it needs it.
We recommend experimentation if you are not satisfied
with the performance.
The system performance improvement from SMARTDrive is not
linear (linear in this context means that as you increase
the memory allocated to SMARTDrive, each memory increase
returns a relative performance improvement).
This section discusses factors involved in the performance
increase you will realize from using SMARTDrive in various
configurations.
Windows/286 with LIM Version 4.0 Expanded Memory
In Windows/286 with SMARTDrive in LIM Version 4.0 expanded
memory, Windows can borrow expanded memory from SMARTDrive
when it requires more memory to run Windows applications.
This is implemented by placing the /A switch on the
Smartdrive Config.sys entry.
In this configuration there is no penalty for loading
SMARTDrive with a very large amount of memory allocated
(512K to 2 megabytes).
Note that Windows may not borrow memory from SMARTDrive to
swap DOS applications with swapdisk=/E, but only to run
Windows applications.
In the 5/27/88 release of Windows/286 Version 2.10,
SmartDrive did not properly regain expanded memory that it
gave up to Windows applications after those applications
were closed. Microsoft has confirmed this to be a problem in
the 5/27/88 release of Windows/286 Version 2.10. The problem
was corrected in releases of Windows/286 dated 7/1/88 or
later.
Windows/286 with Extended Memory
Since Windows/286 cannot use more than 64K of extended
memory (with the HIMEM.SYS driver), in this type of
configuration SMARTDrive should be installed for all
available extended memory minus 64K.
Windows/386 (Extended Memory)
Since Windows may not borrow memory from SMARTDrive when
SMARTDrive is running in extended memory, all memory
allocated to SMARTDrive reduces the amount of memory
available to run DOS applications.
When running in extended memory, allocating beyond 512K to
SMARTDrive causes the incremental benefit to fall off
quickly and at some point actually diminishes (due to cache
management overhead).
This means that a 1-megabyte SMARTDrive has better
performance than a 512K SMARTDrive, but not twice the
performance. Clearly all of this is environment specific,
but 512 is a reasonable rule of thumb for a maximum size to
allocate.
Environment specifics that affect SMARTDrive performance are
as follows:
1. The average seek time of disk (the faster the disk, the
smaller the benefit from SMARTDrive)
2. The interleave factor of the disk
3. Fragmentation of files on the disk (it is HIGHLY
recommended for optimum SMARTDrive performance to optimize
the hard disk frequently with an appropriate utility)
4. System processor speed (the faster the clock speed, the
lower the SMARTDrive overhead)
5. Memory speed (same as processor speed)
6. The applications that are being run, and the way they
access the hard disk (i.e., whether they use sequential or
random access to disk files)
7. The number and size of applications being run
The following is a list of features and corrections of the
September 7, 1988 release of SMARTDrive and RAMDrive
(Windows/286 Version 2.10D):
1. They now support the IBM PS/2 30-286.
2. The Compaq 386S is now supported.
3. DOS Version 4.00 is fully supported.
4. Both RAMDrive and SMARTDrive can now use expanded and
extended memory (expanded memory requires the /a option).
5. Both are now able to run on machines that operate at
faster speeds.
Memset
Memset is the program in Version 2.10 and 2.11 of
Windows/286, Windows/386, and Excel that installs both
SMARTDrive (SMARTDRV.SYS) and RAMDrive (RAMDRIVE.SYS). It
calculates the amount of your total memory for each
device by reading the amount of extended memory on your
system. It also installs any expanded-memory drivers that
are needed for the hardware it detects.
Everything Memset installs can be done manually. It adds the
needed "device=" lines to the CONFIG.SYS file and copies the
necessary files from the original disks. Memset can be run
at any time after installing Windows or Excel. The following
information outlines how SETUP and MEMSET choose the optimal
SMARTDRV.SYS Settings:
1. For Win/286, list in order of test:
Case1: ((free extended-64K) >= 128))
smartdrv.sys= ALL remaining free extended
Case2: (free expanded > 512 and <= 1024)
smartdrv.sys = 256K
Case3: (free expanded > 1024K
smartdrv.sys = 512K
2. For Win/386:
Case1: (free extended > 1024K)
smartdrv.sys = (free extended - 1024K / 4)
OR
128 (whichever is greater)
Ramdrive
RAMDRIVE.SYS is a device driver you can install that allows
you to use a portion of your computer's memory as if it were
a hard disk. Ramdrive emulates a virtual disk drive in
either expanded or extended memory.
The following is a copy from RAMDRIVE.TXT which is located
on the Utilities 2 and Fonts disk (5 1/4").
=========================================================
USING RAMDRIVE WITH WINDOWS
=========================================================
First, follow the installation instructions provided by your
extended memory board manufacturer. Next, copy the file,
RAMDRIVE.SYS, from the Utilities 2 Disk to your fixed disk.
Then add the following command line to your CONFIG.SYS file:
device=[drive:][path]RAMDRIVE.SYS [bbbb] [ssss] [dddd] [/E
or /U]
Note that either /E or /U may be specified, but not both. If
you do not specify one of these two, then RAMDrive will use
system memory for RAMDrives. It is almost always a bad idea
to use conventional memory for a RAMdrive as it will
significantly reduce the performance of Windows. Running
RAMdrive in extended (/E) memory, or on an AT&T 6300 Plus
(/U) is much preferred. Following is an explanation of the
parameters:
*NOTE: Information in a RAMDrive is lost
when you re-boot or restart your computer.
[bbbb] The first numeric argument, if present, is
the amount of memory in kilobytes to be used as your
RAMDrive. If no numeric arguments are specified, then the
default value is 64K. The minimum amount of memory needed
is 16K; the maximum amount of memory possible is 4096K.
[ssss] The second numeric argument, if present, is
the sector size in bytes. If a second numeric argument is
not specified, the default is 512 bytes. The four possible
values are 128, 256, 512, and 1024 bytes.
NOTE: With IBM PC-DOS or Olivetti DOS the
maximum value allowed is 512 bytes. With MS-DOS 1024 bytes
is the maximum value.
Values are rounded up to the nearest sector size boundary.
[dddd] The third numeric argument, if present, is
the number of root directory entries. If no third numeric
argument is specified, then the default is 64. The minimum
number of entries needed is 2; the maximum number allowed is
1024.
*NOTE: If there is too little memory to
create the number of root directory entries specified, then
RAMDrive attempts to create a RAMDrive with fewer root
directory entries.
/E Specifies that extended memory is to be used
for the RAMDrive.
/U Specifies that some or all of the 384K of
upper extended memory on the AT&T 6300 PLUS motherboard is
to be used as an extra RAMDrive. You may only specify this
parameter with an AT&T 6300 PLUS.
*NOTE: There is 1K of RAMDrive overhead.
Only 383K is available for RAMDrives. This overhead is
constant; it does not depend on the number of RAMDrives
installed.
==========================================================
ERROR MESSAGES
==========================================================
Message: RAMDrive: Computer must be PC-AT, or PC-AT
compatible
Explanation: There is no extended memory available on your
PC-AT or compatible for RAMDrives.
Result: RAMDRIVE.SYS was not installed.
Solution: Remove the /E parameter. Try installing
RAMDrive in system memory.
---------------------------------------------------------
Message: RAMDrive: No extended memory available
Explanation: Your computer has no memory available for
RAMDrives.
Result: RAMDRIVE.SYS was not installed.
Solution: Free some extended memory or obtain more
memory.
---------------------------------------------------------
Message: RAMDrive: Insufficient memory
Explanation: Your computer has some memory available, but
not enough to set up a RAMDrive.
Result: RAMDRIVE.SYS was not installed.
Solution: Free some extended memory or obtain more
memory.
--------------------------------------------------------
Message: RAMDrive: Invalid parameter
Explanation: The parameters you specified in your
CONFIG.SYS entry for RAMDRIVE.SYS are not correct.
Result: RAMDRIVE.SYS was not installed.
Solution: Check to see if you specified too many
parameters, if one of your numeric parameters is not valid,
if you specified conflicting switches ( i.e. only one of /E
or /U may be specified ), or if you specified too many
switches. Change the RAMDRIVE.SYS command line in your
CONFIG.SYS file to conform to the usage described above.
----------------------------------------------------------
Message: RAMDrive: Incorrect DOS version
Explanation: RAMDrive requires DOS 2.X or DOS 3.X. Windows
2.1 requires DOS 3.0 or higher.
Result: RAMDRIVE.SYS was not installed.
Solution: Upgrade to DOS 3.0 or higher.
---------------------------------------------------------
Message: RAMDrive: I/O error accessing drive memory
Explanation: During the set up of the RAMDrive, an error
was detected in the memory being accessed for RAMDrive.
Result: RAMDRIVE.SYS was not installed.
Solution: Run the memory test for the memory on which
you were attempting to install a RAMDrive.
======================================================
OTHER MESSAGES
======================================================
Message: Microsoft RAMDrive version Y.YY virtual disk
[drive:]
Explanation: RAMDrive Header message. Y.YY is the version
of RAMDrive; [drive:] is the DOS drive letter assigned to
this RAMDrive.
NOTE: On DOS 2.X the "virtual disk d:" part
of this message will not be printed.
--------------------------------------------------------
Message: Disk size: x k
Sector size: x bytes
Allocation unit: x sectors
Directory entries: x
Explanation: This message tells how many kilobytes of
memory were assigned to the RAMDrive, how many bytes there
are in a sector, how many sectors there are in an allocation
unit, and how many root directory entries there are
(including the volume label).
======================================================
END OF RAMDRIVE.TXT
======================================================
Other observations:
Here are articles from the Microsoft Knowledgebase:
Title: RAMDRIVE.SYS Problems Loading in Conventional
Memory
Document Number: Q35758
Product Name: Microsoft Disk Operating System
Product Version: 4.00
Operating System: MS-DOS
Summary:
If either the /A or /E switch is not specified when
running RAMDRIVE.SYS (i.e., there is no extended or
expanded memory available) RAMDrive will use conventional
memory to emulate a virtual disk drive. There is a problem
on some 80286 and 80386 systems that will prevent RAMDrive
from loading in
conventional memory. Most people don't use RAMDrive in
conventional memory, since this area of memory is so
scarce. This article describes this problem, and how
RAMDrive has been changed to eliminate this problem.
More Information:
When RAMDrive is specified to load in conventional memory,
it tries to use additional (normally unused) memory
outside the 640K area, if available, to reduce the amount
of conventional memory used. RAMDrive makes a call to ROM
BIOS interrupt 12h, Memory Size Determination. This
interrupt returns the amount of conventional memory in
kilobytes that the system has. RAMDrive looks for
additional memory by starting at the location pointed to
by ROM BIOS interrupt 12h, moving up to the address A000h,
where the video adapter memory begins. It tests this by
writing to the first two words, then reading the contents
of these words. If the write worked successfully, RAMDrive
assumes that the entire 1K of memory is usable. Since the
minimum size of a RAMDrive is 16K, RAMDrive looks for 16
of these 1K areas. If it cannot find them, it exits,
giving an insufficient memory error. If RAMDrive finds 16K
of usable memory between the top of memory (the area
pointed to by ROM BIOS interrupt 12h) and address A000h,
the RAMDrive is loaded at this point, thus saving
conventional memory.
However, this causes problems on some systems. Unlike the
conventional IBM PC/XT/AT ROM BIOS releases, which most PC
systems are based on, some ROM BIOS manufacturers have
random-access memory in this area, but use it as an
internal ROM BIOS data area. When RAMDrive is loaded in
conventional memory on these systems, the memory test of
RAMDrive destroys the contents of RAM in this area, in
which case a cold reset of the system is recommended.
Another area in which this causes problems is with the IBM
(and compatible)
PS/2 series of computers. These systems trap ROM BIOS
interrupt 12h, returning a value of 1K less. This 1K of
memory is used as the Extended BIOS Data Area, which is
accessible on these systems by calling ROM BIOS interrupt
15H AH=C1h, Return Extended BIOS Data Area Segment
Address.
Normally, these PS/2 systems don't have any extra memory
between the "top of conventional memory" and address
A000h. So, when RAMDrive is asked to be installed in
conventional memory, it looks for 16K of memory in this
area, and when it can't find it, RAMDrive exits with an
insufficient memory error.
Microsoft has confirmed this to be a problem in Version
2.10 of RAMDRIVE.SYS. This problem was corrected in
Version 2.12 of RAMDRIVE.SYS, which is included with MS-
DOS Version 4.00.
Since the PS/2 systems, in addition to some other systems
(with a nonconventional ROM BIOS), use memory above the
"top of conventional memory," Version 2.12 of RAMDrive no
longer attempts to use memory in this area. This problem
is not commonly encountered because most people don't
attempt to use precious conventional memory to store a
RAMDrive. Therefore, the workaround for this problem is
not to use RAMDRIVE.SYS in conventional memory on systems
that have a ROM BIOS of this type.
For more information on PS/2 ROM BIOS information, refer
to the reference "IBM PS/2 and PC BIOS Interface Technical
Reference," part number 68X2260, available from IBM by
calling (800) IBM-PCTB. Another reference that contains
similar material is the Microsoft Press book,
"Programmer's Quick Reference Series: IBM ROM BIOS," by
Ray Duncan, ISBN 1-55615-135-7.
COPYRIGHT Microsoft Corporation, 1989.
--------------------------------------------------------
Title: SMARTDrive and RAMDrive Version Conflicts with MS-
DOS 4.01
Document Number: Q38636 Publ Date: 21-APR-1989
Product Name: Microsoft Windows/286 Retail Product
Product Version: 2.10 2.11
Operating System: MS-DOS
Summary:
The following information applies to Windows/286 and
Windows/386 Version 2.10 with files dated 9/7/88.
The SMARTDRV.SYS and RAMDRIVE.SYS supplied with this
release of Windows Version 2.10 will not function with MS-
DOS Version 4.01. This malfunction occurs because
SMARTDrive's and RAMDrive's version checking will not
accept the 4.01 DOS version number.
To correct this problem, use the SMARTDRV.SYS and
RAMDRIVE.SYS supplied with MS-DOS Version 4.01. These
programs provide identical functionality without the
version-checking conflict.
COPYRIGHT Microsoft Corporation, 1989.
----------------------------------------------
Title: Using Windows/286 on the IBM PS/2 Model 30286
Document Number: Q37183 Publ Date: 11-APR-1989
Product Name: Microsoft Windows/286 Retail Product
Product Version: 2.10 2.11
Operating System: MS-DOS
Summary:
To run Windows/286 on the IBM PS/2 Model 30286, you must
have Windows/286 Version 2.10 or later, dated 9/7/88 or
later.
In particular, the Windows utilities RAMDrive, SMARTDrive,
and HIMEM.SYS do not function correctly on the Model 30286
unless you have the latest revision of Windows/286 Version
2.10 or later. Early releases of Windows/286 Version 2.10
were not tested on the Model 30286 because the machine was
introduced at a later date.
If you have an IBM PS/2 Model 30286 and a release of
Windows dated prior to 9/7/88, please contact Microsoft
Customer Service at (206) 882-8088 for assistance in
obtaining an update to Windows/286 Version 2.11.
COPYRIGHT Microsoft Corporation, 1989.
------------------------------------------------
Balancing Everything
HIMEM.SYS: Use if you have extended memory and Windows/286.
The only disadvantage would be if you end up losing a great
deal of Expanded memory in the process. Some memory boards,
(such as the Intel Above Board Plus) allow you to configure
the board as part Extended and part Expanded. Some have a
limited selection of configurations. You may have to
configure your board with a minimum 512K Extended if you
want any Extended memory at all. This leaves 448K of
Extended going unused and not directly usable by
Windows/286. If you want to use Smartdrive, you can allow it
to allocate this memory. If you desire more than 448K for
Smartdrive in this case, configure your Extended memory
board for more Extended memory.
Since Smartdrive can install itself in Expanded memory (with
Windows/286), you will have to decide whether you want the
benefits of Himem.sys (requiring part of your board to be
Extended) or to not use Himem.sys (allowing all of your
memory to be configured as Expanded).
SMARTDRIVE vs RAMDRIVE:
However, if you typically access a small number of files
(such as one major program and maybe one or two data files)
Ramdrive is probably for you. What you can do is place
statements in your AUTOEXEC.BAT file to copy these files to
the Ramdrive. This allows these files to be read from an
written to very quickly. Note: you will eventually have to
copy the files to your hard drive before you turn off the
computer or you will completely lose all changes to those
files (a reason to avoid copying data files to Ramdrive,
unless you are carefull!).
Smartdrive, on the other hand, caches all disk files, and
will speed up your disk access in general. Therefore, it
will provide better overall performance than Ramdrive and is
recommended in most cases over Ramdrive.
End of Document