DOS memory


SonGokou81's Guide to -
Taming the Bitch Goddess of DOS memory
First release   
Started  9/25/00  
Released 10/5/00  

DISCLAIMER:
~~~~~~~~~~~
Ummm... nope. Not one of these yet.

COPYRIGHT:
~~~~~~~~~~
Errr... not one of these either.

HOW TO USE THIS GUIDE:
~~~~~~~~~~~~~~~~~~~~~~

This guide is invisibly split into 2 sections. If you are a total beginner
or you want to learn (or refresh) your memory on the inner workings of the
whole PC memory schematics, then you should read the whole guide. HOWEVER, if
you already know something about PCs and how they work and you just want to
know how to solve memory problems without having to know EVERYTHING about
memory, then the best bet would be to skip to Section 4.

INTRODUCTION:
~~~~~~~~~~~~~
This guide was intended to give all you gamers the info needed to properly
solve all (or most) of the memory problems that you might encounter when
playing some old games. Now before we start, you might be wondering why newer
machines are having problems with such old games. It's becasue the first PC's
only came with 1MB of memory (640k Conventional, 384k Upper). As the PC's
graduated to 286 and 386, however, the 640k limit stuck with it. Then there
came XMS amd EMS and all that, but the conventional memory amount stayed at
640k, and the XMS and EMS were just added on. The 286 could have easily had
1MB of conventional memory. But for reasons unkonwn it didn't. Now, I know
you have, yet another question... How come these newer games don't have the
same problems? That's simple. If it is a windows program, it will never have
a problem with memory, becasue it has Virtual Memory. If it is a DOS game, it
is becasue either, it uses a commercial DOS extender (like DOS4GW), or it has
a built-in extender. An extender basically eliminates the restrictions put on
conventional memory limits. Now that I have confused you with all this weird
computer talk, let's begin with the guide.

PLEASE NOTE: This document was made using the MS-DOS Editor, so it *might*
look weird in another editor. Also, It was intended for users of DOS 6.2 and
higher. Some references were made to DOS 5.0, but alomst everyone has DOS 6.2
or better (if you have Windows 95, you have version 7.0).

ANOTHER NOTE: You will see me refer to the files, AUTOEXEC.BAT and CONFIG.SYS.
The AUTOEXEC.BAT file is just a batch file. It executes all dircetives (which
are special commands used in the autoexec file and other batch files), and
will go down the line, and run all the programs that are stored in it.
The CONFIG.SYS file is where all your device drivers are told to load. You
don't really tell you PC to RUN programs in here. It is used to LOAD
drivers and such. These 2 files are located in your root directory (that is,
if you type DIR C:\ at the DOS prompt, which looks like "C:/>"). Sometimes,
however, you will not see a CONFIG.SYS file (this is especially true for
Windows 95 users, and even more true for Windows 98 users). This is becasue
Windows attempts to take control of all your hardware (which is what an OS, or
Operating System, should do), but it never takes into account if you restart
in DOS mode, or boot to DOS prompt. For example, in Windows 98, you don't need
a CD-ROM driver or MSCDEX (the CD-ROM interface program), in your system
files. Windows controls the CD-ROM and stuff with its vast (yeah, right)
library of drivers, BUT, what if you need to play a DOS game, that needs a
CD-ROM, but it needs you to boot into pure DOS mode?? You are stuck with no
CD-ROM and even worse, if you don't know how to load CD-ROM device drivers
and stuff like that and had to rely on Windows to configure your CD-ROM,
well... it looks like you won't be playing that game after all. When editing
these 2 files, try to back them up. Just type:
COPY AUTOEXEC.BAT AUTOEXEC.BAK
COPY CONFIG.SYS CONFIG.BAK
You can view the files under any text editor, or you can use the windows,
System Configuration Editor. Just click on START, RUN, then type SYSEDIT,
then click OK. I think, but I am not sure, that SYSEDIT automaically backs up
your startup files after any editing.

OKAY, ONE MORE NOTE: I am assuming you are familiar with DOS, and that you
know what the hell I am talking about when i say, "DOS prompt".
 

CONTENTS:
~~~~~~~~~
[1] Understanding the types of the PC's memory
[2] Understanding device drivers and identifying the useful ones
[3] Using MEM and MEMMAKER
[4] Creating the Boot Disk and optimizing it for maximum memory
[5] Some other things that you MIGHT want to know/FAQ
[6] Final note
 

[1] Understanding the types of the PC's memory
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
There are 4 types of memory that your PC uses:
Conventional memory
Upper memory
Extended memory (XMS)
Expanded memory (EMS)

CONVENTIONAL MEMORY-
This is the section where almost all DOS programs load itself and run. It is
defined as the first 640k bytes of the PC's entire memory. Of course, the
entire 640k isnt all available to programs. 1,024 bytes are assigned to the
Interrupt Vector Table, the next 256 bytes are assigned for the ROM
Communication Area, and the next 512 bytes are reserved for DOS. Then there is
the amount of memory that your device drivers use and whatever DOS uses for
itself. The memory left over is made availiable to run programs (i.e., your
games).

WHAT YOU NEED TO KNOW: Conventional memory is the area that we are gonna try
to empty, by putting programs elsewhere. The more memory we free, the more
games you will be able to play, and the more effectively they will run.

UPPER MEMORY-
Upper memory is the region starting at the end of conventional memory, and
ending just where the EMS starts. So it ranges from 640k to 1MB (a total of
384k). A lot of places you might hear it be referred to as Reserved Memory,
because it was reserved for system-related purposes. In this area of memory,
lies address space for system board and adapter ROMs, as well as the system's
BIOS and other BIOS's like video. Also in Upper Memory, is something called
Page Frame space. Expanded Memory drivers like EMM386 use this memory, to
hold the page space to save space in conventional (more on this later).
After all the BIOS's and whatever have been loaded in the upper memory area,
there are little "holes" left over. You can load EMM386 to backfill these
holes with RAM, and "recycle" this memory to create something called Upper
Memory Blocks or UMB's, to store more programs therefore freeing more memory
in the conventional area. The whole process of "backfilling" is more detailed
that what I have explained.

WHAT YOU NEED TO KNOW: We can put a directive in our AUTOEXEC.BAT file, and
load an EMM device driver in our CONFIG.SYS to allow the loading of programs
in high and upper memory (LOADHIGH, DEVICEHIGH). We can also use the UMB's
to make more conventional memory availiable.

EXTENDED MEMORY- Extended Memory begins at the 1MB mark. Only 286's and above
can use it. Keep in mind that, because of the limitations of the 286, only a
total of 16MB of installed RAM is all it could handle. The 386 and up, on the
other hand, can handle as much as 4GB of memory (1GB= 1 million MB). As
stated above, the PC has 1MB of memory. Anything above that is called
extended memory. Newer games thrive on this extra memory, to store all the
graphics and whatever but older games require it less. In order for the PC to
use extended memory, it must switch into Protected Mode. (which I will
discuss later). Extended Memory is also known as XMS.

WHAT YOU NEED TO KNOW- Extended Memory is known as XMS (Extended Memory
Specification). Some of your device drivers (like the sound drivers or mouse
drivers), have an option of loading themselves into XMS, as oppose to loading
in conventional memory (the wise choice would NOT to load in conventional).
This can be essential in squeezing those few extra KBs out of conventional.

EXPANDED MEMORY- Expanded Memory, also known as EMS, is a special type of
memory that meets the standards of the LIM (Lotus/Intel/Microsoft) Expanded
Memory Specification. The difference between Expanded Memory and Extended
Memory, is that Expanded Memory DOES NOT have to switch to Protected Mode in
order to access it. Instead it uses Page Frames to access all the Expanded
Memory. I won't go into full detail about page frames here... that is another
guide. As I said earlier, all RAM in addition to the base 1MB is extended. I
know you are asking how to get EMS. You use something called an EMM, or
Expanded Memory Manager. EMM386 is the most common and popular, mostly becasue
it's free (it comes with DOS). Back in the days, companies made EMM programs
like QEMM (Quarterdeck), and 386Max (Qualitas). You usually load this device
driver in your CONFIG.SYS file. I will tell you later about how EMM386 (and
only EMM386) works.

WHAT YOU NEED TO KNOW- Some programs could not or did not want to switch to
protected mode (for whatever reasons) in order to use XMS. But becasue EMS
does not need to switch to protected mode in order to use the mass amounts of
memory availiable, the programs request the help if an EMM, like EMM386. So if
a program complains that there is no EMS, you know what to do. Oh yeah, and
EMS stands for Expanded Memory Specification.

HIGH MEMORY AREA- I know I didn't include this in the contents section, but
it is revelant. Basically the HMA (as it is so called), is the first 64k of
extended memory (if you have extended memory). So it starts at 1MB (1,024k)
and reaches out to the 1,088k mark. We can tell DOS to load most of itself
here, and also we can load BUFFERS up here too.

WHAT YOU NEED TO KNOW- The HMA is a place where we can tell DOS to load
itself, to free conventional memory and a place to put system buffers.
 

[2] Understanding device drivers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Question: What the hell, is a Device Driver???
Answer: A device driver, to put it simply, is a set of instructions for the PC
to use, in order for a certain piece of hardware to operate *properly*. It is
also program that can't help your system operate more efficiently.

For Example:

Let's say you have a CD-ROM installed on your PC. You attatched the IDE cables
and the power, Now, how will it operate with your PC? The BIOS doesn't know
how to fully operate the CD-ROM. The CPU sure as hell doesn't. What happens,
is that the CD-ROM is given a unique (well, sometimes) IRQ (Interrupt Request)
number. So when a program asks for access to the CD-ROM, it will invoke the
information in the Interrupt Vecrtor Table, and execute the lines in memory
where the driver program is located, and give the CPU the info it needs to
properly use the CD-ROM. It's all simple really, but if you dont't get it,
it's alright. You don't REALLY have to know what a device driver exatly is. I
just put it in here, because you will see me make a lot of references to
device drivers. As stated earlier, a device driver can also be a program that
helps run you PC more efficiently.

For Example:

HIMEM.SYS doesn't run a piece of hardware, but it DOES help run your PC
better. HIMEM.SYS gives your PC the access to that little 64k region of
extended memory (remember earlier?).

What we really need to know about device drivers, is that we want to move as
many of these we can to other parts of memory (besides conventional), and
remove the unecessary ones (like CD-ROM).

SOME DEVICE DRIVERS YOU MIGHT ENCOUNTER- In your startup files.
A quick note: Alot of these device drivers will require a option switch, which
is identified as a "/". These are used more in the AUTOEXEC programs, but are
used in the CONFIG too. If you ever need help, check the documentation, or
try typing, "programname /?" or "programname /h". That usually brings up a
list of all the switches and options that can be used, as well as how to use
them. I will try to explain the basics of each one (but be smart and replace
the word "programname" to the actual name of the program).

Mouse Drivers: Commonly look like MOUSE.SYS in the CONFIG.SYS and just MOUSE
in the AUTOEXEC.BAT. In the old days, this was common, but today, usually
just the MOUSE program in the AUTOEXEC.BAT will do.

STATUS: A good amount of games can "take advantadge" of a mouse, rather than
absolutley require one. But it is always nice to have one. So I would say,
that it is good to have rather than a must.

CD-ROM Drivers: In the CONFIG.SYS, you might see an ATAPI.SYS (known as a
"generic" driver), or something that says CDROM in it. In the AUTOEXEC.BAT
file it is always MSCDEX (well, it's probably not always, but it's the only
one I have ever seen).

STATUS: Okay let's get real. If a game needs free convnetional memory to run,
than most likely it wasn't distributed on CD-ROM. There is good amount of
games that do, but keep in mind that almost every one of these old games are
most likely off the shelves, so you would probably have to go to an
abandonware site to get them. So I wouldn't load it any of the startup files.
But there are some games that need it, and need coventional memory at the same
time. Add it accordingly.

Sound Drivers: They come in all shapes and sizes. It's hard for me to tell you
all the different types youi might encounter, becasue there are alot of "sound
blaster compatible" cards, each with their own drivers. Then there are unique
cards. So to make it simple, just look for something with SB or SOUND on the
startup files. Also, look for something that has a lot of weird numbers, like:
/A:220 /I:5 /D:1 or something.

STATUS: Well I don't know about you, but I like to hear sound when I play. So
keep it in the startup files if you wish (but keep in mind, there might be
some games that complain about no sound present, and it won't run, It is very,
very rare, but it has happened before).

High Memory Area Driver: HIMEM.SYS is what is called. And it is necessary for
maximum optimization purposes.

STATUS: Just keep it in there.

Expanded Memory Manager Driver: Or, EMM386. Once again, this is needed for
maximum optimization purposes, like the ability to load the BIOS into the
high memory area. It also lets us use UMBs so it is vital. But remember, the
EMM386 driver is LOADED in the CONFIG.SYS. It is CONTROLLED by the EMM386
program.

STATUS: Keep it in there. If it is not in there, then get it in there.

CD Enabler Driver: You might see this, if your CD is hooked up on your sound
card, rather than on to the IDE controller. If you have 2 drivers in the
CONFIG.SYS that have the word CD in it, then most likely it is. Some CD-ROM
drives will require you to have both drivers loaded.

STATUS: Just like the CD-ROM driver and MSCDEX. If you don't need it, don'y
load it.

There are a lot of device drivers out there, but these are the basics. These
are, most likely, the only drivers you will need when making your game boot
disk.

[3] Using MEM and MEMMAKER
~~~~~~~~~~~~~~~~~~~~~~~~~~
First off 2 explanations:

MEM is a memory debugger, but don't let it's name fool you into thinking it's
a really complicated program. It simply profiles memory and tells you which
programs are using what memory and how much. More importantly, it gives you a
detailed report on your total free memory, whether it be extended, upper or
conventional. Now don't worry about understanding MEM. We will only be using
some of the basic MEM commands.

NOTES ON MEM - When we run MEM, we will only use MEM and 1 command, so we will
only learn how to read two screens. For DOS 6.2 users, it is in the DOS
directory, and in the WINDOWS/COMMAND directory for Windows users. Either way,
it should be in the path, so you will only have to type MEM to run.

MEMMAKER is a really cool program that will GREATLY assist you in the job of
making free conventional memory for games. Not only is it useful, it is very
easy to use (which is good for me, because I won't have to explain a lot to
you). MEMMAKER basically examines your startup files, and starts coming up
with multiple configurations. When it finds one it likes, it will update them
and tell you the net gain/loss of memory. It moves prgorams to other parts of
memory, therefore clearing up the conventional memory area.

NOTES ON MEMMAKER - MEMMAKER has 2 methods of optimizing: Express and Custom.
It is recommended, for beginners, that you use the Express method. However, I
will explain both methods in this guide, if needed. Just like MEM, it should
be in the path (which is an "Enviroment String" in the AUTOEXEC.BAT file).

Now, let's get busy and fire up MEM. At the DOS prompt, type "MEM" and hit
ENTER. You should see something like this:

Memory Type        Total       Used       Free
----------------  --------   --------   --------
Conventional          640k        56k       584k
Upper                   0k         0k         0k
Reserved              384k       384k         0k
Extended (XMS)     31,744k       180k    31,564k
----------------  --------   --------   --------
Total Memory       32,768k       620k    32,148k

Total Under 1MB       640k        56k       584k

Total Expanded (EMS)                   32M (33,030,144 bytes)
Free Expanded (EMS)                    16M (16,777,216 bytes)

Largest executable program size       584k (598,288 bytes)
Largest free UMB                        0k (0 bytes)
MS-DOS is resident in the High Memory Area
 

Now, it's time to decipher all this info. We will start by seperating the
the columns. They will be called "memory type", "total", "used", and "free".

CONVENTIONAL COLUMN - Remember in section 1? I explained the types of memory
that the PC uses. This is where you find out what type of memory MEM is
talking about, when it gives info.

TOTAL COLUMN - This simply tells us how what the total amount of memory is
installed on the PC for that type. We already know that the amount of
conventional and reserved will never change, so we only need to concentrate on
upper and extended (for they will change from PC to PC).

USED COLUMN - This tells us how much, of the total memory installed, is used
by the system (DUH!). It is not the most important function, but it helps us
determine how much is used, rather than calculating the values ourselves (we
would have to take the amount of free memory, and subtract that from the total
memory without this column).

FREE COLUMN - This is the most useful column of all. This is the column that
we will be looking at the most. Of course, this tells us, how much of a
certain type of memory, we have leftover.

The last line tells us the totals. The total amount of installed, used and
free memory. The "Free memory under 1MB" doesn't really need to be explained,
but you might want know. Remember how I said, that the PC has 1MB of "buit-
in" memory? This is what MEM is referring to. The total amount of memory that
was availiable under 1MB, the total amount (of the total amount of memory to
start with), that is used, and the total memory under 1MB that is free. The
largest executable program size refers to the maximum size, that a program
can be, in order for it to load itself. For example: if you had 200k free
conventional memory, and you tried to run a 450k program, it's just not gonna
happen. Although there are programs that break this restriction (which are
known as DOS extenders), the early games had to deal with this. Please note
that this is not the only reason that a game or program might tell you there
is not enough conventional memory. It might also load some if it's data in
this section, or whatever. The largest free UMB tells us how big of a program
we can load into upper memory. And last, but not least, the final line tells
us if DOS is loaded in the HMA (the first 64k of extended) or if it is not.

WHAT WE WILL BE USING THIS FOR: To put it simply (but what is simple in the
world of computers?), all we will use this for is to see how much memory we
have free, and, if we need to, see how much we need to free up. There are alot
of other uses for it, but this is all that we are gonna use it for.

FINAL NOTES ON MEM- If you run MEM from within windows (in a DOS session) you
will sometimes get inaccurate results. Also, you might see an asterik (*) next
to the "Free expanded (EMS)" line. If this is the case, you should see
something like:

EMM386 is using XMS to simulate EMS memory as needed, free EMS memory might
change as free XMS memory changes.

This just tells you that EMM386 is loaded and is doing it's job.

The other option, is the "MEM /C" option. The "C" option means CLASSIFY. When
you run MEM with this option, it will list all the devices and programs you
have running or installed on the left. In the middle column, you will see how
much conventional memory it uses, and the last column it shows how much upper
memory it uses (if any). This can be very useful in determining who uses what
and how much. If, by any chance, it scrolls up too fast to read, you can type
"MEM /C /P", which will ask you to press a key before it scrolls down to
the next page.

Now that we have a firm grasp of using MEM, (or at least I hope) we can get
our hands dirty with MEMMAKER. Start MEMMAKER up by- yep you guessed it-
typing MEMMAKER at the DOS prompt and hitting ENTER. If you get a "Bad command
or filename" error, chances are that it's not installed on your computer. This
possibility increases if you have Windows 98 or higher. If you have this
problem then the only solution, I'm afraid, is to find somebody that does and
copy these files, as they are needed (Unless you have them):
MEMMAKER.EXE
HIMEM.SYS
SIZER.EXE
EMM386.EXE
CHKSTATE.SYS
MEMMAKER.HLP (optional help file)
They also must be in the same directory as MEMMAKER. You will also be using
this list again, so remember this list. Now let's walk through the process:

The first thing that you will see is the old, "Welcome to blah blah blah..."
message. You will also see the choice of either, Express or Custom. For now,
choose "Express" and hit ENTER to continue. Next, it will begin the question-
asking process by asking if any of your programs require EMS memory. Note what
it says. If you choose yes, you will make EMS available, but have less
conventional memory available. If you are not sure, then choose yes. If you
don't remember (or don't know) about EMS, refer to section 1.

After hitting ENTER, it will go to a screen, and tell you that it is searching
your system to see if you have Microsoft Windows installed on it. It might
also ask you to confirm that Windows (if you have it) is installed in the
directory that it presents you with.

Press ENTER again to press on. The next step, is restarting your computer.
MEMMAKER does this, to clear your system's memory and monitor the amount of
free memory you have after a clean boot. If you are optimizing the files on a
floppy disk, then ignore the message it gives you about removing any floppy
disks from your drive, and hit ENTER to continue.

After you have re-booted, it should automaticaly come back to MEMMAKER. If it
doesn't, then try to run it again. Once you are back in MEMMAKER, it will
notify you that it is considering many different memory configurations for
your PC. After that, it will take those considerations and determine the
optimum configuration for you computer. After all this is done, it will tell
you to re-boot so it can test out the new settings.

When you recover, it will come back to MEMMAKER and show you a screen with
some numbers on it. This entire screen is pretty much self-explanatory. It
shows you how much memory you had BEFORE starting the process, and how much
you got AFTER running. It also shows the net change of memory, whether it be
positive or negative. Does it appear that you now have enough memory to run
the game or program you wanted? When you are done looking at the screen,
press ENTER and it will tell you that it has just started your PC with the new
settings, and asks you if your PC seems to be working correctly. Press ENTER
again, and it will exit. Congratulations! You have just succesfully ran
MEMMAKER. Once you are teleported back to the DOS prompt, go ahead and run
MEM to see your new found wealth. You might even notice some things that are
different from the last time you ran MEM.

FINAL NOTES ON MEMMAKER- If you didn't run a practice disk when I discussed
how to use MEMMAKER, that's okay. As long you get used to what you will see
when you run it. You might also see 4 things on the bottom of the screen while
running MEMMAKER. "F3 Quit", "SPACE Change Selection", "ENTER Continue" and
"F1 HELP". Those are some hotkeys that will help you along the way. If you
want online help, copy the MEMMAKER.HLP file to wherever you are running
MEMMAKER.

Don't worry about backing up your files, becasue MEMMAKER does that already.
It actually says that it renamed the ORIGINAL files to AUTOEXEC.UMB and
CONFIG.UMB.

[4] Creating the Boot Disk and optimizing it for maximum memory
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In this section I will explain how to make the "Boot Disk". If you ever hear
a game complain that there is not enough memory and tells you something like:
"Creating a Boot Disk might help"
Then this is what they are talking about. Why use a boot disk you ask? Because
it gives us the opportunity to create a whole new configuration for your
computer. For example, your present config might mave a CD-ROM, some windows
programs like IFSHELP.SYS, and maybe a Doublespace driver. Also in that
config is the fact that EMM386 is NOT loaded. So instead of changing the your
main startup files, we can make a boot disk to serve the needs of certain
programs that requrie it, without changing back and forth from your current
configuration to the "special" one. Some games also come with programs that
will attempt to make a boot disk for you. Sometimes that work, but try to
keep in mind, that if the game requires a CD-ROM, then it will most likely
try to load the CD-ROM drivers in the startup files. If this is the case, then
you might have memory problems when using that boot disk with other games that
don't require a CD-ROM to play, becasue the memory that the game could use,
is being occupied by uneeded CD-ROM drivers. Now let's get started.

MAKING A BOOT DISK-
If you have used Windows alot, you will notice that it has the ability to
create a "Startup Disk". This is different from the "Game Boot Disk", in the
fact that the startup disk is used mainly to recover from any severe PC
problems, like a HD crash. It is also used mainly as a diagnostic tool.
Booting up with this disk to play a game is not recommended, but you might be
able to get away with playing a few games.

STEP ONE- Format and make bootable.
At the DOS prompt, type "FORMAT A: /Q /S" and hit ENTER
This tells DOS to format (erase and organize the disk so it is usable), the
floppy disk in drive A. It also tells DOS to use a Quick Format. a quick
format just erases the disk, rather than erase and organize. If a disk is
already organized, or formatted, then it doesn't need to be organized again
unless something happens. If you get a message that says something like,
"Unrecognized format, cannot Quick Format. Proceed with Unconditional Format?"
Just type Y and hit ENTER. The "/S" option tells DOS to copy the system
files (MSDOS.SYS and IO.SYS) to the floppy so you can boot your PC with this
disk.

STEP TWO- Copy the needed files.
The next step is to copy your startup files (AUTOEXEC.BAT and CONFIG.SYS) to
the newly made boot disk. This saves us the job of re-writing everything that
is needed on the startup files, and makes finishing the job as easy as
delting lines. Also, we need to copy the MEMMAKER files to the disk so we can
run MEMMAKER from the floppy. As re already know, MEMMAKER alters your startup
files. If you run MEMMAKER from C:, it will alter the files on C:. If you run
it from a floppy disk, it alters the startup files on the floppy. This is
essential, becasue we want to optimize the files on the boot disk. Look in the
last section for the list of files to copy.

STEP THREE- Copy the MEMMAKER files.
If you recall in thje last section, there was a list of files needed in order
for MEMMAKER to run. Copy all these files into drive A: so we can tell the
program MEMMAKER to optimize the startup files on drive the boot disk. If you
run the program, and it complains that there is a file missing and it gives
you the list of files it needs, check that you have all of them, in the SAME
directory as MEMMAKER (i.e. the floppy disk).

STEP FOUR- Copy the optional files.
Optionaly, you can copy any of the files that are used by the disk when
booting up. For example, if your boot disk startup files load HIMEM.SYS, you
can copy HIMEM.SYS to the floppy and tell it to load from there. Why would
you want to do thif you say? Well, it won't help your performance. As a matter
of fact it will DECREASE your performance. However, you might recall that
anti-virus programs might want you to make a boot disk.  Booting your PC from
one of these disks is called a "clean boot". When you make an anti-viral boot
disk, you are copying all necessary files to run your PC onto a floppy, and
loading them from there, so no viruses can will be loaded when booting up. So
by copying the files onto the game boot disk, you can sorta turn your game
disk into a 2-in-one Anti Virus/Game Boot Disk. It is completly optional
though.

The next step is to remove all unecessary device drivers, and programs from
your startup files. If you recall in Section 2, there is a list of device
drivers you might encounter, and which ones are worth putting in. The main
thing to look here (in your startup files), is the words DEVICE and DEVICEHIGH
(in the CONFIG.SYS) and LOADHIGH and ordinary references to programs (in your
AUTOEXEC.BAT). Once yo uhave located such a line, you can decide if you want
to keep it or not. I can't decide for you, because I don't know all the
drivers that are out there. If you DO decide to exclude the line from the
file, move the cursor to the very beginning of the line and type "REM" and
leave one space between REM and the beginning of the line. When you do this
you tell DOS to ignore this line and go to the next one. This is known as,
"Remming a line out". This is useful if you want to tell DOS to ignore a line.
but you don't want to delete it. Example:

HIMEM.SYS   If you want to REM this line, it becomes   REM HIMEM.SYS

This works in both the AUTOEXEC.BAT and the CONFIG.SYS, and you can also use
a semicolon (;) to REM a line out.

Now that we have made the disk, it is time to run MEMMAKER on it. If you need
a refresher unit on how to use this program, just scroll up the the previous
section. After all that is done and you have rebooted and everything, it is
now time to tweak the startup files to maximize the amount of memory we can
get. Take note, however, that MEMMAKER almost always finds the BEST system
configuration for your PC, memory-wise. So sometimes you won't be able to
squeeze any more memory than you really can. Before you get your hands dirty,
run MEM and see how much memory you gained (or lost) by making a boot disk.
If your game or program needed x amount of bytes to run, then check how much
free memory you have. Of course, you don't really have to check. You can
always use the trial and error method and try to run the game right after you
finishing the boot. If it works, then your in business. If not, read below
and lets try to squeeze some memory out.

THINGS TO TRY IF THE GAME STILL DOESN'T RUN-

RUN DEFRAG:
In Windows, click on START-PROGRAMS-ACCESSORIES-SYSTEM TOOLS. In DOS, if you
have Symantec's Defrag, run it from there. Sometimes this helps, becasue older
programs have trouble reading and loading from heavily-fragmented disks. Just
choose the drive (usually C:) that has the game you want to play.

RE-INSTALL:
So this is a drastic measure, but sometimes it does solve the problem. Some
of the program files might become corrupt, causing the program to think it
has problems, when it really doesn't.

If you are reading this section, then you are gonna learn the advanced tricks
in optmizing for free memory.

LET'S LEARN HOW TO MASTER EMM386-
Before we start, we can do a lot more if we can master using the EMM386
Expanded Memory Manager. I know this shoud have probably beem under a seperate
section, but I am too lazy to make a new one and change all references to
sections. EMM386 has quite a few options. I will first tell you how to use the
options, then a list of all the *revelant* options you can use with info and
explanations for all of them, with examples.

To use EMM386, you must load it in you CONFIG.SYS with a device directive:

DEVICE=C:\path_to_emm386\EMM386  [ON|OFF|AUTO] memamount Option1...[Option2]

You can run EMM386 by itself with no options, or you can replace the word,
"Option" with one or more of these:

NOEMS - This tells EMM386 to load itself and make UMBs available, but NOT to
simulate EMS with XMS (frees conventional memory, but makes no EMS).
EXAMPLE - DEVICE=NOEMS

RAM - This tells EMM386 to provide Upper memory services AND make EMS
open for usage (gives your programs EMS to use, but uses more conventional
memory).
EXAMPLE - DEVICE=EMM386 RAM

HIGHSCAN - This tells EMM386 to scan the Upper memory with another method, to
check for available UMBs. This can casue crashes, however, in Windows, or when
booting up your PC. It can also casue misreporting of free UMBs.
EXAMPLE - DEVICE=EMM386 HIGHSCAN

ALTBOOT - If you are playing around with some of the other options not listed
here, you might want to put this option in. This uses an alternate handler for
CTRL+ALT+DEL. Sometimes, EMM386 can crash or freeze your PC, and the usual
reboot hotkeys (CRTL+ALT+DEL) won't work. By using this, it increases your
chances that the computer will restart all of the time using CTRL+ALT+DEL.
EXAMPLE - EMM386 ALTBOOT

In the syntax above, you replace the "path_to_emm386" line, with the path to
wherever EMM386 is located. Usually you won't have change the "path_to..."
line and just put "DEVICE=EMM386". The [OFF|ON|AUTO] part, you just choose one
and put it by itself. OFF tells EMM386 to suspend itself and to not do any of
the jobs that it was supposed to. ON tells it to execute or resume all the
duties that you told it to do. AUTO is the default, and tells it to
automatically give programs access to upper or EMS memory whenever they call
for it. After the EMM386 device is loaded in the CONFIG.SYS you can change
this setting by running EMM386 at the DOS prompt. ALSO KEEP IN MIND (this is
very important if you haven't noticed) that the HIMEM.SYS device driver MUST
be loaded BEFORE EMM386 is. Like this (in the CONFIG.SYS):

DEVICE=HIMEM.SYS
DEVICE=EMM386.SYS

If you...

DEVICE=EMM386.SYS
DEVICE-HIMEM.SYS

The EMM386 device driver WILL NOT work.

Also, the section "memamount" can be replaced (it is optional) with a number.
That number tells EMM386 how much XMS (in KB) you want it to use to simulate
EMS/VCPI (Virtual Control Program Interface) memory. It uses that amount of
XMS memory plus the amount of UMBs and for the EMM386 driver itself. The
number can be any integer between 64 and 32768 (32MB), and will be rounded
DOWN to a multiple of 16. The max number is also limited to the total amount
of XMS memory you have.
EXAMPLE - DEVICE=EMM386 1024

This tells EMM386 to use appox. 1MB of XMS to simulate appox. 1MB of EMS/VCPI
memory. You will have approx. 1MB less XMS as a result. So the total amount
of memory EMM386 will use in this case, is 1MB, plus the amount of memory it
uses for the EMM386 driver, plus the memory it used to backfill the upper
memory region (for UMBs). The default is ALL free XMS, and with the NOEMS
option, it is 0.

MORE EXAMPLES-

DEVICE=EMM386 7168 RAM
Tells EMM386 to use 7,168KB (about 7 megs) of XMS memory to simulate 7MB of
EMS/VCPI memory. It also tells it to provide upper memory and EMS memory
services.

DEVICE=EMM386 NOEMS HIGHSCAN ALTBOOT
Tells EMM386 to NOT provide EMS services, but provide upper memory services,
to scan the upper memory area with the basic and alternate methods, and to
use the alternate CTRL+ALT+DEL handler.

If you want to know more about EMM386 and how to use it, type "HELP EMM386" at
the DOS prompt (I don't think that Windows95 came with the HELP program), or
type "EMM386 /?".

RUN THE CUSTOM METHOD IN MEMMAKER-
As I said before, I would explain both methods that MEMMAKER uses. Using the
CUSTOM method, you can adjust a few more things that determines what MEMMAKER
does to free more memory. You should familiarize yourself with the EXPRESS
method before continuing, becasue I will only walk you through the parts of
the custom method, that are different from the express method. As you keep
pressing enter and going through the screen, you will see a "Advanced Options"
screen with those words on the top. Here are the options:

SPECIFY WHICH DRIVERS AND TSRs TO INCLUDE IN OPTIMIZATION?
This will just go, line by line in both startup files, and ask you which ones
you want to keep and which ones you want to disable. This is good if you
forgot to eliminate the drivers and stuff before running MEMMAKER, or you are
just lazy like me.

YES - It prompt you and ask to include/exclude each driver or TSR in your
startup files.

NO - It will include all the drivers and TSRs in your startup files.

SCAN THE UPPER MEMORY AREA AGGRESIVELY?
This is the EMM386 equivalent to HIGHSCAN. It will load EMM386 and tell it to
do the alternate method for the checking of free UMBs.

YES - It will do the same thing as the HIGHSCAN option with EMM386. Refer to
the notes on this in the above section.

NO - Refer to the notes above.

OPTIMIZE THE UPPER MEMORY FOR USE WITH WINDOWS?
Personally, when I play a DOS game which required me to use a game boot disk,
then chances are that I will never go back to windows until my DOS session had
ended. Unless you have Win 3.1, then going back to windows after booting up
from a boot disk will almost always reboot your PC. So why share some of the
upper memory with Windows, if you are not gonna use Windows in this session?

YES - It will share and allow Windows to use some (or maybe all) of your PC's
upper memory. Unless you are optimizing your main startup files, I would say
no to this option (but even if I were optimizing my main startup files, I
would still say no.

NO -  Wont't setup the upper memory for use with Windows, and might even
increase system performance and/or free upper memory.

USE MONOCHROME REGION (B000-B7FF) FOR RUNNING PROGRAMS?
There is a small monochrome memory address (for video memory) which your PC
won't EVER use (or a pretty good chance it won't). If this option is checked,
it will tell EMM386 to use this space for EMS page frames (You might have
heard me talk about this when I discussed the differnet types of memory).

YES - I usually check this option as yes. Doing so will let EMM386 use that
monochrome area for page frame space, and freeing up a little upper memory.

NO - It won't use the monochrome area. Can't think of any consequences when
choosing this option except for the fact that less upper memory will be
available (unless you play a game that uses monochrome graphics).

KEEP CURRENT EMM386 MEMORY EXCLUSIONS AND INCLUSIONS?
If you have configured EMM386 prior to running MEMMAKER, then this option
will let you choose if you want those options messed with.

YES - Will include all the options you told it to, plus the options that you
have checked or told MEMMAKER to do. I am not sure what will happen if any
of those options conflict. This is good if you don't want your previous
configuration changed to an unacceptable point.

NO - Won't include any of the EMM386 options that you have already chosen, and
completley erase all those options, then add the ones that MEMMAKER needs.
This is good if you messed with EMM386 options, and you want to start over (or
if you are too lazy to erase them your self.

MOVE EXTENDED BIOS DATA AREA FROM CONVENTIONAL TO UPPER?
If you recall in Section 1, I talked about upper memory, and how the system's
main BIOS and other BIOS's were loaded there. I am not totally sure, but I
think that some BIOS's have advanced features, or newer BIOS's need more
memory to load itself. This (I am guessing) moves any BIOS info into the
upper memory area, thereby freeing conventional memory.

YES - Like stated above, it might free conventional memory by moving the BIOS
data into upper memory.

NO - Since I have never actually said no to this option, I can't say.It might
free up more conventional memory, or it might stay in conventional becasue
there is not enough room in upper memory.

And then you go back to the same procedure as in the Express method.

TWEAK THE CONFIG.SYS-
In this mini-section, we will discuss how to use some of the commands and
directives that you can use in the CONFIG.SYS to make the most of it. The rule
for putting these things in the file (just like the AUTOEXEC.BAT file) is
simple: There is no rule. You just add them in the file on a NEW line. Note
that these commands only work in the CONFIG.SYS file. Remember that the
CONFIG.SYS doesn't load or execute files, it loads device drivers.

"BUFFERS=n,[m]" - Allocates memory for disk buffers when you boot up your
system. A buffer, basically, is memory set aside by DOS to hold data during
read/write opertations, therefore speeding up disk operations and overall PC
performace. "n" is the amount of buffers you want to use (0-99). The default,
on almost every computer, is 15 (7984 bytes). The "m" is optional, and tells
DOS how many secondary buffers to use (0-8, default 8). The buffers are stored
in the High Memory Area (HMA).

HOW TO USE TO YOUR ADVANTAGE- Using the buffers command, you can increase
your PC's disk read and write operations, for programs like word perfect and
stuff. But if you are tweaking for game playing, then remember that the more
buffers you use, the more HMA memory it uses. The less HMA memory, the less
you have available to load devices in the HMA. Keep 2 things in mind: If you
request too many buffers that can fit in HMA, it will make up the difference
by using conventional memory. If you want to keep track of how much HMA the
buffers are using, you can use "MEM /C".

"DEVICEHIGH filename params" - Just as DEVICE loads devices into memory
for use, DEVICEIHIGH loads device drivers into upper memory. Note that, unlike
DEVICE, you don't need to put an "=" sign after it. Replace "filename" with
the name of the driver you wish to load into upper memory, with the full path-
name. The "params" part should be replaced with any command-line paramaters
that should be passed through. When DEVICEHIGH loads the device into upper
memory, it will look for the largest free UMB. Even if the UMB is larger than
the device needed, it will still load the driver and waste space. There are
other options in the DEVICEHIGH command that can maximize its effectivness,
like telling DOS where exactly in upper memory you want to load the specific
device. Unfortunatley, this is a detailed process, and I have never needed to
do it before (MEMMAKER usually does a good job in doing it for me), so I won't
explain how to do it here. It is important to note that, in order to use
DEVICEHIGH, your EMM386 nd HIMEM.SYS drivers MUST be loaded prior to issuing a
DEVICEHIGH command and that the line, "DOS=UMB" must be put in the CONFIG.SYS
file BEFORE issuing DEVICEHIGH commands:

First                   DEVICE=HIMEM.SYS
Then                    DOS=UMB
And then                DEVICE=EMM386
And optionally          DEVICEHIGH "prorgam"
 
HOW TO USE TO YOUR ADVANTAGE- Check your free upper memory status and see if
you can put a device in upper memory, if it is in conventional memory. Just
remember that, if there is no available UMB, the diver will load in the
conventional memory area just as if you would have issued a DEVICE command.

"DOS=HIGH|LOW [, UMB|NOUMB]" or
"DOS=UMB|NOUMB [, HIGH|LOW]" - This command will let you do 3 tings: One, is
the ability to load DOS in the HMA or to load it in conventional. Two, is the
ability to allow DOS to manage UMBs or not. Three, is the ability to do both
at once. For example:

DOS=HIGH - Loads DOS into the HMA, making more conventional memory.
DOS=LOW - Loads DOS into conventional memory, making more HMA.
DOS=UMB - Tells DOS to give programs and devices access to UMBs.
DOS=NOUMBS - Tells DOS to not manage UMBs.

And you can add both options in one line:

DOS=HIGH
DOS=NOUMBS      DOS=HIGH,NOUMBS

DOS=LOW
DOS=UMB         DOS=LOW,UMB

Keep in mind that you have to add DOS=UMB to your CONFIG.SYS in order to
load devices and programs into upper memory.

HOW TO USE TO YOUR ADVANTAGE- You should always try to load DOS into the HMA
as a general rule when it comes to freeing conventional memory (DOS=HIGH). In
alomost all situations, when it comes to freeing up conventional memory, it is
necessary to put "DOS=HIGH,UMB" in the CONFIG.SYS. Take note that, if DOS
cannot load itself into high memory, it will give you an error message like:

        High Memory Area not available,
        Loading DOS low

If this is the case, you should make sure that HIMEM.SYS is loaded BEFORE the
DOS=HIGH command is issued.

TWEAKING THE AUTOEXEC.BAT-
This mini-section is just like the above one except we are modifying a
different file. Same rules apply for the CONFIG.SYS. What is different and
unique in teh AUTOEXEC.BAT to the other file, is that is acts like a normal
batch file, but it can use special directives that only it can understand.
This is the file that allows you to run files, rather than load drivers. I
won't go into detail about the complete list of batch commands, just the ones
that concern memory optimizing. These programs that you load when starting up
your PC are known as, TSRs (Terminate-and-Stay-Resident).

LH or LOADHIGH- LOADHIGH is exactly the same as DEVICEHIGH. The line syntax is
the same, and it does the same thing EXCEPT for the fact that LH (which is
the exact same thing as LOADHIGH, just abbreviated) loads PROGRAMS into upper
memory, rather than device drivers with DEVICEHIGH. For example: The device
driver HIMEM.SYS is a binary file. That is, you can't just type HIMEM at
the DOS prompt, and actually expect it to load itself (even after hitting
ENTER!!). You will get a "Bad command or filename" message. So, you must load
it with a DEVICE command in the CONFIG.SYS file. Now let's take the program
MOUSE.COM. You run and load the program by typing MOUSE at the DOS prompt, and
hitting ENTER. It loads, and you now have the ability to use the mouse (YAY!).
BUT, you can't load MOUSE.COM in the CONFIG.SYS file with a DEVICE commmand.
So basically, you load device drivers into upper memory with a DEVICE command.
You load programs into upper memory by putting a LOADHIGH command. The same
rules aplly when it comes to loading programs into upper memory, just like
DEVICEHIGH.

HOW TO USE THIS TO YOUR ADVANTAGE- Just like DEVICEHIGH, you can load some of
your necessary programs into upper memory, like MOUSE, SOUND, or CD-ROM, and
free up more conventional memory.

Now that we have learned how to use some of the commands that can be used in
the startup files, you can go down this checklist to see what you can do to
free up more conventional memory:

MOVE SOME UNEEDED DEVICES TO UPPER MEMORY
MOVE DOS TO THE HMA
MOVE SOME UNEEDED PROGRAMS TO UPPER MEMORY
REM OUT LINES IN YOU STARTUP FILES THAT YOU THINK YOU MIGHT NOT NEED.
CHECK COMPUTER HARDWARE DOCUMENTATION IF YOU CAN LOAD THE DRIVER IN XMS MEMORY
(and how to do it)

[5] Some other things that you MIGHT want to know/FAQ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If you heard me say earlier, "I will explain this later", then you will hear
me explain it here.

REAL MODE/PROTECTED MODE:
The computer has 2 modes of operation when it comes to executing programs:
REAL MODE, is the default mode. All computers can operate in this mode.

In REAL MODE:
The CPU is limited to addressing only 1MB of memory.
The CPU can handle only one program at a time.

In PROTECTED MODE:
The CPU can address up to 32MB of memory at a time.
The CPU can handle hundreds of programs at a time (task swapping).
Only 386 and above processors can switch to this mode.

In the days of the 286 and Windows 3.0, the most programs that DOS could
handle at one time, was one. DOS was a single-task operating system. So how
was the 286 able to run DOS in the background, while Windows was running?
becasue the 286 chip had a little 8088 chip built-in to handle the DOS/Win
dual boot. Then came along the 386 chip, which was the first chip that was
able to enter PROTECTED MODE. The 386 was also able to support Virtual Memory,
which Microsoft integrated into Windows 3.1. So Microsoft was able to take
advantage of multitasking, which is the ability to run more than 1 program at
once. Note that the programs arent running at the same time, but switching
back and forth to each other very fast. So Microsoft was the first (as far as
I know) to take full advantage of the 386's protected mode capabilities.

FAQ SECTION- Here I will put up a FAQ section, if there is any feedback from
this guide. I will basically put up any questions anybody might have, that
are common to solving memory problems. Since this is the first release, I have
no FAQ section to do. Unitl then...
 

[6] Final note
~~~~~~~~~~~~~~
Yes, I know sometimes I might ramble on, and you probably won't be using all
the information I gave in this guide. And yes, I probably could have made this
guide shorter, but I like to try and give readers as much info as possible so
the next decision they make, they will be more informed. And also, some of
the information might be inaccurate. Let me assure you that I cross-reference
any material before I type it or tell someone. If any of this material is
incorrect notify me and I will correct it (and give you proper credit). If you
still need some help, talk to some people in chat rooms, on mesage boards (the
forums on websites are your best bet), or you can contact me:

E-MAIL - [email protected]
ICQ    - 92075243

Some things to note before sending me a message via ICQ:

E-MAIL first. I check my mail regularly (once or twice a day) so I won't miss
your message. When you send your mail, I will try to help you there. If I feel
that your mail needs a detailed reply, then I will tell you to ICQ me. If you
ICQ me directly, without mailing me first, there is a good chance I will
ignore you all together. Also, you probably won't get a quick e-mail response.
most likely in 1-3 days (and that's IF i decide to reply. If it is something
that I have already explained in this guide, I will not respond).

Thats all folks (no Porky Pig pun intended).

Completed in appox. 24 hours 43 minutes in an 11 day span.
 
 

CLICK HERE FOR A PRINTABLE VERSION OF THE ABOVE (WORD FORMAT)


Most things on this site are public domain, however, the design, logos and all custom graphics belong to me. Also anything on this site marked - "© Marrsy" belongs to me and may not be reused without my permission.
Game guides is a part of Marrsy's Old Sci-Fi Games Site - marrsy.cjb.net

© Marrsy 2000