[comp.sys.ibm.pc] Problem of breaking DOS 640K RAM limit?

HJW2@PSUVM.BITNET (03/03/89)

I have an IBM AT compatible with 512K on board.  Recently I installed another
512K to bring it up to 1 Meg. and found out it a waste for anything over 640K.
I am using DOS 3.3 which only recognizes 640K RAM.  The only thing I can do is
to create a ram drive which is useless to me.  I know PS/2 50s can address 1
Meg. without any problem.  Is there a way to 'tell' the system to use the extra
384K memory as normal?  I am using the Microsoft Windows/286 and know it can't
be so powerful if I have only 640K RAM.

Any comments on this problem would be appreciated.  I will post the solutions
if there are enough responses.  Please e-mail me or post in the net.  Thanks!

Hawjan  HJW2@PSUVM

Snake@cup.portal.com (Dan g Sobel) (03/05/89)

For the most part, dos will not recognise more the 640K, you can however, use
the extra memory for a ramdisk (Device = Ramdrive.sys /e or /a), or load some
of your favorite utilities in Extended, I have most of the PC-Tools living
off in the extra memory leaving most of the 640K open to my applicaitons, also
Windows, DeskView, and SoftWare Carasel will allow the use of this extra space
for program usage..  

			Best of Luck
			Snake

brown@nicmad.UUCP (Vidiot) (03/07/89)

In article <74032HJW2@PSUVM> HJW2@PSUVM.BITNET writes:
<I have an IBM AT compatible with 512K on board.  Recently I installed another
<512K to bring it up to 1 Meg. and found out it a waste for anything over 640K.
<I am using DOS 3.3 which only recognizes 640K RAM.  The only thing I can do is
<to create a ram drive which is useless to me.  I know PS/2 50s can address 1
<Meg. without any problem.  Is there a way to 'tell' the system to use the extra
<384K memory as normal?  I am using the Microsoft Windows/286 and know it can't
<be so powerful if I have only 640K RAM.

It isn't the amount of memory that is a problem, it is DOS that is a problem.
It is written so that only the first 640K is available for applications.  We
have a PS/2-50 and applications only know about 640K.  The other memory is
only available to things like VDISK.  Sorry.
-- 
	       harvard-\	 att--\
Vidiot            ucbvax!uwvax!astroatc!nicmad!brown
	       rutgers-/      decvax--/
	ARPA/INTERNET: nicmad!brown%astroatc.UUCP@spool.cs.wisc.edu

rf378434@longs.LANCE.ColoState.Edu (Raymond Frush) (03/07/89)

----------------

I am running 640K + 512K on my Sperry IT (AT) compatable and use the extended
memory for a hard drive Cache.  This significantly speeds up repetitive disk
seeks (useful for program development).  I am currently using SmartDrive from 
MicroSoft which comes with the MicroSoft Windows 286 package.  Using the Cache 
is like the RAMdrive except it keeps track of approximately 500K of the most 
recently called programs.

Now where did that .signature file go?   Ray Frush. (see header for address)

/------- You have been reached by..---------+----------------\
|  Raymond Frush  Colorado State University | Don't take my  |
|  ARPA	rf378434@longs.lance.colostate.edu  | word for it... |
|  	tele. (303)491-4453 (for now)       |                |

ward@cfa.harvard.EDU (Steve Ward) (03/09/89)

MSDOS does NOT impose the 640K limit commonly encountered on IBM and
clone PC's.

The MSDOS upper memory limit is affected by three things:
1. BIOS
2. MEMORY HARDWARE
3. BIOS EXTENSION ROM's (usually on plug-in I/O cards)

First, the BIOS sizes memory and stores this information.  All the PC/XT
BIOS's I have seen are hard-coded to stop testing at 640K.  In order to
utilize memory that may exist beyond 640K the BIOS will have to be
modified to test/size the extra memory.  MSDOS makes a BIOS call (BIOS
int, can't remember the int vector number) to obtain the contiguous
memory size, so MSDOS is not hard-wired for any limitation at least
up to 1MB.  MSDOS may even accept a memory size beyond 1MB but I have
not bothered to look into this because my hardware won't allow it.

On the PC/XT (8088/8086) there is a 1MB memory address space.  However,
BIOS extension ROM's/EPROM's are commonly found starting at address
C0000h and above.  This means if you can modify your BIOS to size or
report more memory, you could at least go up to 768K bytes of memory
before running into the BIOS extension ROM's.  If you could relocate
your BIOS extension ROM's (or didn't have any, though that is unlikely)
then you might make even more room.  Of course, there are plug-in
memory boards that would allow you install more memory contiguous
with the motherboard 640K, so at least it is possible to add the memory.

The second item, memory hardware, is usually only a severe limitation
for cases where the motherboard has limited PC I/O bus slots and
adding a memory card is not possible.  Item three was just explained.

So, if you can modify your BIOS you can add at least 128K (must be
contiguous with the 640K on the motherboard) and bring your memory
up to 768K.  If you can relocate BIOS extension ROM's above C0000h
then you can free up even more memory.  Some I/O boards allow selecting
alternate address locations for their ROM's so this is a possibility.

A careful check of memory space use by all your I/O boards should be
made to make sure that any memory you install will not clash in the
memory address space.

I believe there are a few PC bus memory boards on the market which
are half-size and allow adding up to 384K of memory.  Such a board
could possibly be used to add memory above, but contiguous with the
640K.  Now all you to do is disassemble your BIOS chip and modify it!

Steve W.   ward@cfa.harvard.edu

ralf@b.gp.cs.cmu.edu (Ralf Brown) (03/09/89)

In article <1429@cfa.cfa.harvard.EDU> ward@cfa.harvard.EDU (Steve Ward) writes:
}
}So, if you can modify your BIOS you can add at least 128K (must be
}contiguous with the 640K on the motherboard) and bring your memory
}up to 768K.
No you can't, at least if you want to have a video board installed....
CGA starts at 736K, MDA/Herc at 704K, EGA/VGA graphics at 640K.  If you use
only programs that exclusively use BIOS screen writes, and an appropriately
addressed video board (assuming you can find/build one), then and only then
can you get more than 736K contiguous DOS memory.

On an AT, the ALL ChargeCard can play appropriate tricks with the memory 
addressing so that the existing video board looks like it starts at 960K,
but that then requires programs that do BIOS writes or have been patched.
BTW, I have one for sale, it won't work with my Smartek motherboard.... (but
ALL says both cards I sent back work fine on their machines--they couldn't
give me a refund because I didn't buy it directly from them).  Contact me for 
details.
-- 
{harvard,uunet,ucbvax}!b.gp.cs.cmu.edu!ralf -=-=- AT&T: (412)268-3053 (school) 
ARPA: RALF@B.GP.CS.CMU.EDU |"Tolerance means excusing the mistakes others make.
FIDO: Ralf Brown at 129/31 | Tact means not noticing them." --Arthur Schnitzler
BITnet: RALF%B.GP.CS.CMU.EDU@CMUCCVMA -=-=- DISCLAIMER? I claimed something?
-- 

ward@cfa.harvard.EDU (Steve Ward) (03/10/89)

In article <1429@cfa.cfa.harvard.EDU>, ward@cfa.harvard.EDU (Steve Ward) writes:
> 
> MSDOS does NOT impose the 640K limit commonly encountered on IBM and
> clone PC's.
> 

[stuff deleted on how BIOS/MSDOS work together to size and set MSDOS memory
limits and suggestions on squeezing out/in more MSDOS memory]

> A careful check of memory space use by all your I/O boards should be
> made to make sure that any memory you install will not clash in the
> memory address space.
> 
 
Note that I DID issue the above warning about checking for memory
conflicts!  This is to avoid 2000 followup postings pointing out that
in typical PC's video display buffer memory exists between addresses
A0000h - C0000h where the exact video buffer size and location will
vary with the video display type.  Yes, it is there, no, it doesn't
change the facts as I described them except that it is difficult to
relocate the video buffer memory, mostly because a lot of software
does not use the [inadequate] video BIOS and directly reads/writes
the display video buffer.

Here is a PC memory map I found, which shows there is available memory
address space, but not useful without rearranging the memory map
locations of either the video board or BIOS extension ROM's (shadow
ROM's) or both.

I never said it would be easy!

00000h - 9FFFFh    msdos memory
A0000h - AFFFFh    EGA display buffer
B0000h - B7FFFh     MONO display buffer
B8000h - B8FFFh    CGA display buffer 
C0000h - C7FFFh    EGA BIOS ROM
C8000h - CFFFFh    hard disk BIOS ROM
D0000h - DFFFFh    user space
E0000h - EFFFFh    user space on XT, on AT may be used for BIOS ROM
F0000h - FFFFFh    BIOS ROM, though usually only top 2k-8k

Most XT and AT clones have BIOS in upper 8K.  TRUE BLUE IBM machines
may fill up the top 64K with BIOS + Basic in ROM.  There are probably
even more variations out there.  Usually, only one of the displays
is installed so there is room to expand msdos memory, but sadly
it is hard to do because the display and ROM's are scattered about
in the memory map rather than being packed at the very top of memory.

So, in more gory detail, to squeeze in more MSDOS memory your software
will have to be well behaved and use BIOS calls and/or device drivers
(especially the video) and of course, your BIOS and device drivers
will have to accomodate relocation of the video display hardware to
higher memory locations, as will the video board itself.  Too bad this
wasn't done in the beginning since this makes it too big a pain to
attempt doing for most people.  

steve w.  ward@cfa.harvard.edu



 

HDK@PSUVM.BITNET (H. D. Knoble) (03/10/89)

There is two ways for you to utilize the 1M-640K as RAM:

1) Install a LIM (Lotus-Intel-MicroSoft) board. This allows DOS to access
   memory above 640K by a remapping of addresses by an algorithm called
   the LIM standard. PC Magazine has several ads discounting such boards.
   This algorithm is sometimes called the EMS (Expanded Memory Simulator).
   In order for it to be useful, a software product (like Kedit) must
   support EMS memory. Most products by Lotus and MicroSoft do. But
   the board does not allow general programs to address more than 640K.

2) There is a software product that will effect 1) above, called
   EMSimulator. This is available for $50. from:

          Orders Only:               Information/Orders
     (800)821-5226 Ext. 435            (808)737-3809

                     Kam & Associates, Inc.
                  3615 Harding Ave.  Suite 401
                     Honolulu, Hawaii  96816

   There is an evaluation copy of EMSIM here that you could come and
   copy. It's good for 1M; the production version is good for 8M if
   you have that much real storage. The disadvantages of the software
   product are that it takes 70K below the 640K line to run; it is
   software so it will use CPU (not that noticable on a PS/2 50 using
   Kedit); and there are conflicts using a RAM disk (VDISK.SYS) and
   EMSIM together - i.e. directories and files get randomly changed.

allbery@ncoast.ORG (Brandon S. Allbery) (03/15/89)

As quoted from <1429@cfa.cfa.harvard.EDU> by ward@cfa.harvard.EDU (Steve Ward):
+---------------
| I believe there are a few PC bus memory boards on the market which
| are half-size and allow adding up to 384K of memory.  Such a board
| could possibly be used to add memory above, but contiguous with the
| 640K.  Now all you to do is disassemble your BIOS chip and modify it!
+---------------

Don't try this at home, kids.

Steve has apparently forgotten about video memory, which starts at the
following addresses:

		MDA and Hercules...	B0000H
		CGA...			B8000H
		EGA and VGA...		A0000H

Thus, if you use EGA or VGA, 640K is the absolute limit to main memory:
anything above it is EGA/VGA RAM.  If you use a Herc clone, you can go to
720K.  If you're so backwards as to still be using a CGA, you can go to 752K.

++Brandon
-- 
Brandon S. Allbery, moderator of comp.sources.misc	     allbery@ncoast.org
uunet!hal.cwru.edu!ncoast!allbery		    ncoast!allbery@hal.cwru.edu
      Send comp.sources.misc submissions to comp-sources-misc@<backbone>
NCoast Public Access UN*X - (216) 781-6201, 300/1200/2400 baud, login: makeuser