[comp.sys.ibm.pc] System Board RAM above 640K

mattp@oakhill.UUCP (Matt Pressly) (03/08/89)

I recently got a CompuAdd 286/20 with 1MB RAM on the system board, and
I am a little confused as to how this memory can be used.  The users'
manual states that memory above 1024K can be used as extended -- I 
assume this refers to the memory you can put in the 4 SIMM slots.  It
also states that the memory between 640K and 1024K (the unusable memory)
is for ROM shadowing and system useage.

[I'm beginning to think there are 3 categories for the memory in excess
of 640K:  extended, expanded, and inaccessible.]

I've got 64K of the 384K used for ROM shadowing, but that leaves 320K which
seems to be inaccessible.  Here are some questions that I have about
that inaccessible memory.  I would greatly appreciate any answers anyone
can provide.

   (1) What does the manual mean by saying this memory is for system 
       use.  It doesn't appear to be used AT ALL.

   (2) Is there any way to use this memory as extended memory?
       The setup program doesn't allow me to do that, but is there
       some other way? What about as expanded?

   (3) Are there any disk caching programs that make use of this 
       memory?   From what I've seen, all of the disk caching
       software uses extended and/or expanded and/or base memory
       only.

   (4) Is there a way I can access this memory from programs that I
       write in Pascal/C/Assembly?  Can I access it in protected mode?
       
   (5) If I can access it, how do I go about that?  Do I need to toggle
       some soft-switch to bank switch it in, since it seems to reside
       in the same address space as Video RAM and BIOS ROM and probably
       IO space?  How are the chip selects generated for those chips?
       Note: some of the address decode logic seems to be configureable
       through software, since a setup program, XSET, allows you to 
       specify what memory you have in the computer, and the computer 
       quits working if you tell XSET something which is not so.

   (6) I called CompuAdd tech-support, and they claimed it can't be
       accessed, and that the hardware designers have gone out of
       their was to make it inaccessible (OS/2 and UNIX can't use it,
       according to the technician).  But he did mention that a software
       package called SOFTBYTES might be able to make it useable by
       fooling the computer into thinking that it's expanded/extended.  
       Does anyone know anything about this package?  Will it work?
       If it works, how did they do it?

   (6.5) The technician said that on the high-end '286s, the memory
       was organized the same was as for the 386s.  If you know how
       the 386 memory is structured, that info would be just about
       as helpful to me.  

   (7) Does anyone have a schematic of the motherboard that they'd
       be willing to loan me :-) ?

If anyone can answer any of these questions or just provide any 
information at all about this system-board memory, it would be 
a really great help, and you will be handsomely rewarded with a
copy of any software I write that will use this memory for 
something useful.  Note:  I've seen other computers which use
this memory as extended rather than inaccessible, so I feel like
there's some hope.  I really find it hard to believe that computer
manufacturers would put in memory that cannot be accessed.

                                              Thanks,

                                              Matthew Pressly

      

-- 
address: mattp@oakhill

earl@trsvax.UUCP (03/09/89)

/* ---------- "System Board RAM above 640K (long)" ---------- */
I recently got a CompuAdd 286/20 with 1MB RAM on the system board, and
I am a little confused as to how this memory can be used.  The users'
manual states that memory above 1024K can be used as extended -- I 
assume this refers to the memory you can put in the 4 SIMM slots.  It
also states that the memory between 640K and 1024K (the unusable memory)
is for ROM shadowing and system useage.
I've got 64K of the 384K used for ROM shadowing, but that leaves 320K which
seems to be inaccessible.  Here are some questions that I have about
that inaccessible memory.  I would greatly appreciate any answers anyone
can provide.
                                              Thanks,
                                              Matthew Pressly
-- 
address: mattp@oakhill
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    Most all the companies have more or less given up on using this RAM
    above 640k for anything. It gets complicated real fast. For example:

    Segment A000 to A7FF used for video (CGA), unless you have EGA, then you
       need to set aside A000 to AFFF, but if it's VGA you can use A000 to
       AFFF unless your using the enhanced Hi-res modes, of which you need to
       set aside from A000 up to as much as BFFF in some cases. Other video
       boards can add or subtract accordingly from the video RAM areas.
       At first, if you using monochrome video, it looks promising here, as
       you only need 2k to 4k set aside for video; but usually the hardware
       address decoding only decodes down to a 32 or 64k level, thus you
       can't get more precise with video memory. It depends on the video
       board of course.

    The hard disk usually gets C000 to CFFF set aside for it. But some boards
       may let you get to C000 to C7FF if your lucky. It depends on how
       sophisticated the boards are.

    The BIOS normally uses from FE00 on up, but some machines go ahead and
	lock out F000 on up. It depends a lot on the hardware. You might be
	able to get to some of this memory area and use it for RAM.

    If I remember correctly, a 8086 doesn't use E000 to EFFF but the 80286
	uses this memory, thus you can't use it with a 80286. But I forget
	right now. 

    If you have a network board, you generally get D000 to DFFF reserved for
       it too. Of course if you aren't using a hard disk (diskless workstation)
       you could set the network board to C000-CFFF.

    Then you have the LIM 4.0 spec EMS boards. They need chunks or RAM above
       640k for paging in EMS memory as requested. Hmmm.. I guess the network
       board has to go, no more places to put it.

    There are lots of other boards, but the above makes it complicated enough.
       We still haven't got into things like CMOS RAM's, Multi-port serial
       boards, smart parallel and serial boards, ESDI and SCSI interfaces,
       IEEE-488 interfaces, Super-VGA boards, special numeric calculator
       co-processing boards, RISC co-processors (aka IBM's RT), etc.

    Anyway, that nice pretty chunk of 384k above 640k is a real problem. Thus
    virtually all the companies have given up on using it for anything. If you
    want to use it, you have to set or unset or mask the interrupts accordingly,
    and then page or switch in or out the proper chunk, do something and then
    set eveything back to normal, before the machine crashes. If you do get a
    neat program for using this 384k or memory, it may only work on your
    machine only, nobody else will likely have that same hardware configuration.

    I hope this helps explain why it's reserved for system useage.


***********************************************************************


<This information is provided by an individual and is not nor should be
 construed  as  being  provided  by  Radio  Shack or Tandy Corp.  Radio
 Shack/Tandy Corp has no obligation to support the information provided
 in  any way.> 
						
						Earl W. Bollinger
						@ <trsvax!earl>


"You were in the Clone Wars!", said Luke excitedly.
"Yes", replied Obi Wan, "I was a DOS programmer. But that was before the dark
 times, before OS2."