[comp.sys.ibm.pc] Intel/Lotus EMS hardware/software

toms@oakhill.UUCP (02/10/87)

I am interested in any information that the net can provide me with about
the underlying hardware for the Intel/Lotus EMS standard.  I have been able
to ascertain that this bank switched protocol uses a 64K window in the
PCs memory map that is broken down into 4-16K sections.  This is where the
questions start:  

       Why are there 4 sections (or what ever they are called)?

       If one wanted to build their own hardware would 2 sections of 32K
           each be a serious draw back to work with?

       Does anyone know were one can get sources to an EMS driver either
           PD or commercial without buying the hardware?  (if no PD
           sources are available I will consider purchasing the software
           only).

       How big are the bank select registers?

       Where do they reside in the PC memory map?

Any answers to these questions would be greatly appreciated.
-- 
=============================================================================

Motorola Semiconductors                     Tom Spohrer
Austin, Texas                {seismo,gatech,ihnp4}!ut-sally!oakhill!toms

johnl@ima.UUCP (02/11/87)

In article <838@oakhill.UUCP> toms@oakhill.UUCP (Thomas Spohrer) writes:
>I am interested in any information that the net can provide me with about
>the underlying hardware for the Intel/Lotus EMS standard.  I have been able
>to ascertain that this bank switched protocol uses a 64K window in the
>PCs memory map that is broken down into 4-16K sections.  This is where the
>questions start:  
>
>       Why are there 4 sections (or what ever they are called)?
Entirely arbitrary, but that's what the spec says.
>       If one wanted to build their own hardware would 2 sections of 32K
>           each be a serious draw back to work with?
No program that uses LIM memory would work, since they expect four 16KB
sections.
>       Does anyone know were one can get sources to an EMS driver either
>           PD or commercial without buying the hardware?  (if no PD
>           sources are available I will consider purchasing the software
>           only).
I've never seen software that wasn't bundled in along with the hardware.
Then again, supporting as much of the software interface as you need to
make most programs work isn't very hard.
>       How big are the bank select registers?
Fourteen bits or so.
>       Where do they reside in the PC memory map?
In the I/O address space.
>Any answers to these questions would be greatly appreciated.

Lotus and Intel published a spec defining the LIM interface, which you
can probably still get from Lotus here in Cambridge or from Intel in
Hillsboro.  The spec defines the memory scheme (four 16K chunks in a
64K window) and a bunch of driver calls you can make to allocate pages,
give them back, map them in and out, find out useful parameters like where
the window is, and some save/restore state calls that look like they're
intended to support multitasking systems.

Early versions of the spec tried to define the exact locations
and formats of the I/O registers that control the mapping.  More recent
versions don't, and make you do all of your mapping by calls into the
driver.  That sounds horribly slow, but it turns out not to be that bad
since a well-written driver should be able to handle the map call in a few
dozen instructions, and in real programs the code needed to figure out
what page you want is much larger than that anyway.

There are also some software-only products that purport to simulate EMS
memory by allocating a 64K bank of real memory and swapping the 16K chunks
to and from extended memory (regular memory above 1MB) or the disk.  These
programs sort of work for some programs, but it turns out that you cannot
properly support EMS without hardware that lets you map the same page to
more than one of the 16K windows, so that many programs do not work.  Even
those that do work are incredibly slow since moving 16K chunks means that
remap calls take milliseconds rather than microseconds (or if they're swapping
to the disk, seconds rather than microseconds.)  Accept no substitutes.
-- 
John R. Levine, Javelin Software Corp., Cambridge MA +1 617 494 1400
{ ihnp4 | decvax | cbosgd | harvard | yale }!ima!johnl, Levine@YALE.something
Where is Richard Nixon now that we need him?