When IBM designed the original PC in 1980, then current personal computers usually had a maximum of 64 Kbytes of memory. In this context, it is hard to fault the decision to allocate the PC's memory so that 384 Kbytes is allocated to plug-in cards and only 640 Kbytes is available to users - this was, after all, ten times the then maximum.
However, with the advent of larger, more complex programs, larger user-generated spreadsheets (particularly those used as simple databases) and co-resident software such as Sidekick and Metro, many users' vast, untapped, 640 K machines have somehow changed into tiny, cramped 640 Kbyte machines.
How can you beat the 640 Kbyte squeeze?
There are several ways of getting around this limitation, some only open to 80286-based machines like the AT and the PS/2 Model 50 and above, others available to PC's and XT's.
Figure 1 shows the possible memory map of a fully-optioned machine.
The bottom 1 Mbyte of memory represents the maximum amount of memory addressable by the 8088/8086 processor in a PC or XT, of which 640 Kbytes only are available for user programs and data (including DOS). This area is often referred to as user memory. Notice that Extended Memory is not accessible to the 8088/8086 processors used in PC's and XT's.
Expanded Memory
For this reason a special technique has to be used to enable the processor to access more memory. The first such technique is known as Expanded Memory System, Version 3.2, and was jointly developed by Lotus, Intel and Microsoft, with the primary goal of allowing 1-2-3 access to bigger spreadsheets. LIM 3.2 EMS (as it is known) allows up to 8 Mbytes of memory (the typical Intel Above Board carries 2 Mbytes, and with two such boards and two piggy-back boards 8 Mbytes is possible), which is broken up into 16 Kbyte pages. Four pages can be simultaneously enabled and appear to the processor in the system memory area, just below the ROM BIOS. Because the memory is paged, special code has to be provided (in the form of a device driver) to select and enable the appropriate pages.
Furthermore, because this memory is outside the User Memory area, the DOS operating system is unaware of it, and it cannot be used to contain program code such as co-resident utilities (e.g Sidekick, Lotus Metro). AST Research, in conjunction with QuadRam and Ashton-Tate, proposed a superset of LIM 3.2 EMS, called Enhanced Expanded Memory System (EEMS). This allows up to 64 pages to be enabled simultaneously, and these can be mapped into the User Memory space (although this usually means that memory must be removed from the machine's system board). Since the EEMS memory is mapped into User Memory, programs can be located in it, provided that an appropriate control program is provided to swap the programs in and out. Such programs include the DesqView 1.3 and 2 operating environments, and the Digital Research Concurrent DOS 5.2 XM multi-tasking (optionally multi-user) operating system.
Notice that Microsoft Windows 1.04 uses only LIM 3.2 EMS, and is therefore unable to run programs from expanded memory. Microsoft realised the competitive advantage this was giving the opposition, and so, in conjunction with Intel, Lotus and AST Research, produced the LIM 4.0 EMS standard, which does allow expanded memory to be paged into the base 640 Kbytes of memory. LIM 4.0 is an superset of AQA EEMS. The full set of expanded memory standards is often referred to as E/EMS.
Extended Memory
All of these types of memory will work in PC's and XT's. The 80286 processor in AT's and compatibles and in the IBM PS/2 Models 50 and 60 can address up to 16 Mbytes of memory when operating in protected mode. It normally operates in real mode when running DOS, in which case it is restricted to 1 Mbyte of memory. Any memory in such machines which is located above 1 Mbyte and therefore normally inaccessible to DOS software is called Extended Memory.
Extended memory is directly accessible to programs which run in protected mode, such as the OS/2 operating system and programs written for it, the Oracle database, Alsys Ada compiler and others.
If OS/2 is likely to be of interest to you, you will need plenty of extended memory.
Programs such as Lotus 1-2-3, Framework and others cannot directly use extended memory, as they run in real mode. However, it is possible to temporarily switch the processor into protected mode in order to access this memory, and in fact the AT ROM BIOS contains routines to do this and to perform block transfers to/from extended memory. Since programs written for E/EMS use a device driver to access expanded memory, all that is required is a device driver of identical functionality, but which accesses extended, rather than expanded, memory. The application software will not be aware of the difference. Several such drivers are available, the best known being Above Disc, a device driver which can make either extended memory or spare hard disk space appear as expanded memory to an E/EMS-using program. IBM supplies this program with their 2 Mbyte memory board for the AT.
Compaq supplies its own program, CEMM.EXE, for use with its 80386-based PC's, and this similarly makes extended memory look like expanded memory. A point to bear in mind with these programs, however, is that they will slow down interrupt- intensive programs as they must switch from protected mode back to real mode in order to service interrupts, and this imposes a speed penalty of the order of 5% on the 80386 and somewhat more on the 80286. In addition, CEMM.EXE and similar drivers may clash with Windows 386 (but this environment provides its own expanded memory emulation anyway).
We'd therefore recommend that when purchasing memory boards to get beyond 640 Kbytes, you follow the following guidelines:
Action Hints
For PC's and XT's, or PS/2 Model 30 and other 8086/88-based machines, go for EEMS or LIM 4.0 compatible boards. These provide the most flexibility, with conventional paged EMS for Lotus 1-2-3 et al, as well as the EEMS capability for multitasking operating systems such as Concurrent PC DOS XM, Desqview and Microsoft Windows II. There is no requirement for exended memory, as the processors in these machines cannot address it anyway.
For AT's, compatibles and other 80286-based machines, either obtain boards which can be switched to expanded or extended memory, or go for straight extended memory used in conjunction with driver software like Above Disc. Dual-mode memory is preferred, since it does not impose a performance penalty in EMS mode while servicing interrupts.
For 80386-based machines, extended memory is the way to go, with appropriate driver software for EMS emulation. In any case, since the 80386 is a 32-bit processor, and for best performance you will want the proprietary memory card which matches your machine, you won't have much choice.
[Originally published in PC Support Advisor, Volume 1 Number 1] Page last updated: 28/Apr/2004 Back to Home Copyright © 1987-2010 Les Bell and Associates Pty Ltd. All rights reserved. webmaster@lesbell.com.au