[comp.sys.ibm.pc] USING MEMORY BETWEEN 640K &1000K FOR RAM DRIVE

farris@marlin.NOSC.MIL (Russell H. Farris) (11/26/88)

I have a PC clone (Columbia 1600) with a no-name memory card. I have
128k on the motherboard and 512 on the memory card, with room on the
card for an additional 256k. Is there any way to use memory above 640k
for a ram drive? Do I need a special memory card, or some sort of
a driver program? Thanks in advance,


Russ Farris (farris@marlin.nosc.mil)

leefi@microsoft.UUCP (Lee Fisher) (11/26/88)

In article <1095@marlin.NOSC.MIL>, farris@marlin.NOSC.MIL (Russell H. Farris) writes:
> I have a PC clone (Columbia 1600) with a no-name memory card. I have
> 128k on the motherboard and 512 on the memory card, with room on the
> card for an additional 256k. Is there any way to use memory above 640k
> for a ram drive? Do I need a special memory card, or some sort of
> a driver program? Thanks in advance, 

I've answered similar questions on this newsgroup before, but this
time I'll answer it over the net since the information may help
someone else (and my direct mail to this person keeps getting bounced
by a mailer daemon...)

Extra memory on the motherboard of systems is strange. There is no
standard method to deal with it. Most ROM BIOS implementations I've
seen map it to the FIRST chunk of extended memory. Other OEMs, like
Compaq, on their 80386 systems, map it to the END of extended memory
and require some interesting steps to make it usable (they call it 
Built-In Memory or BIM). Other OEMs will make it addressable in areas 
between 640KB and 1MB, where most programs don't play with. The end 
result is that it's hard to count on where this memory is.

Some versions of Microsoft's RAMDRIVE.SYS, included with MS-DOS and
Windows, will take advantage of memory mapped between 640KB and 1MB,
and later versions of RAMDrive will not.

RAMDrive versions before 2.12 (such as the one included with MS-DOS
version 3.3) WILL use memory between the "top conventional memory and
the start of the video buffers, if it is available, and if you try to
create a RAMDrive in conventional memory (meaning, don't use the
EXTENDED or EXPANDED command line options). In situations like this,
RAMDrive will look from the top of conventional memory (pointed to by
ROM BIOS interrupt 12h) to the start of the video buffer area,
A0000h. If RAMDrive finds memory in this area that is not used, it'll
try to use it for the virtual drive, saving your conventional memory.

However, RAMDrive version 2.12, included with MS-DOS version 4.00,
doesn't do this anymore, since some clone ROM BIOS manufacturers use
this area as a "scratchpad" for their ROM BIOS, and RAMDrive would
overwrite this area, causing problems. And now, instead of causing a
problem on a few strange ROM BIOS implementations, it happens on IBM
PS/2s as well. 

The IBM PS/2 ROM BIOS can have an Extended BIOS Data Area, the top
1KB at the top of memory (RAM allocated by the POST for the PS/2 ROM
BIOS to play with). So a 640KB PS/2 will have 639KB free, if you go
by the rules and ask ROM BIOS interrupt 12h. (See the "IBM PC and
PS/2 BIOS Interface Technical Reference", page 3-15 for more details
on this new data area.) I believe that other OEM systems also have
support this PS/2 ROM BIOS ability in their non-PS/2 systems, making
life even more confusing. The write/read test that RAMDrive does to
check for the presense of RAM in this area stomps on this Extended
BIOS Data Area... So, RAMDrive no longer tries to use this memory,
with the compatibility problems with the various ROM BIOS versions
available.

Normally, this isn't a problem since most people don't waste precious
conventional memory on a RAMDrive.

To clarify, versions of RAMDrive after 2.12 will NOT use memory
between the top of conventional memory and the top of the video
adaptors due to compatibility problems with various ROM-BIOS
implementations and the Extended BIOS Data Area new to the IBM PS/2
ROM BIOS.

If I had this situation, I'd try very hard to get the memory so it's
mapped as the first bit of extended memory and not mess with memory
mapped between 640KB and 1MB.

-Lee

01001100 Lee Fisher, Microsoft Corporation, Redmond, WA.
01000101 leefi@microsof.UUCP leefi%microsof@uw-beaver.ARPA
01000101 leefi@microsof.beaver.washington.EDU
01000110 {uw-beaver,decvax,decwrl,intelca,sco,sun,trsvax,uunet}!microsof!leefi
01001001 Everything mentioned here is MY fault, not my employer's.

evwong@athena.mit.edu (Eric V Wong) (11/27/88)

I too have a Columbia, though the 1600-4, rather than the -1.  I've
found that a number of PD RAMDISK programs will do the job just fine
though I don't remember anyoffhand.  I suggest you try your local
bbs, and just check out a few.

Any further help is always available, just buzz.

Eric


+------------------------------------------------------+
| Eric V Wong, Massachusetts Institute of Technology   |
| ARPA: evwong@athena.mit.edu  BITNET: WONG@MITWIBR    |
| CIS: 72117,431               GEnie: E.WONG2          |