QEMM

Last updated
Quarterdeck Expanded Memory Manager (QEMM)
Developer(s) Quarterdeck Office Systems
Stable release
QEMM 97 (aka v9.0) / May 15, 1997;27 years ago (1997-05-15)
Operating system DOS
Type DOS memory manager

Quarterdeck Expanded Memory Manager (QEMM) is a memory manager produced by Quarterdeck Office Systems in the late 1980s through the late 1990s. It was the most popular third-party memory manager for the MS-DOS and other DOS operating systems.

Contents

QEMM product ranges

QRAM
A memory manager for Intel 80286 or higher CPUs. It supports Chips and Technologies chipsets. 2.02 added SHADOWRAM switch. QEXT correctly reallocates eXtended Memory Specification (XMS). It includes VIDRAM, Optimize, LOADHI from QEMM 6.02, Manifest 1.13. Earlier versions of QRAM also supported the older 8086 and 8088 CPUs. [1]
QEMM Game Edition
It is a version of QEMM that includes Quarterdeck GameRunner. Patches for regular QEMM do not work on QEMM Game Edition.
QEMM MegaBundle
In the version shipped with Borland SideKick for Windows, it is a version with SideBar 1.00 (1994-08-22) and QEMM 7.5.
DESQview 386
It includes DESQview and QEMM-386.

Features/tools

QEMM driver

QEMM for 80386 and IBM PS/2 personal computers Quarterdeck Expanded Memory Manager.jpg
QEMM for 80386 and IBM PS/2 personal computers

QEMM provides access to the Upper Memory Area (UMA) and memory through the Expanded Memory Specification (EMS), Extended Memory Specification (XMS), Virtual Control Program Interface (VCPI) and DOS Protected Mode Interface (DPMI).

DOS-Up

It relocates DOS kernel, COMMAND.COM interpreter, DOS resources (e.g.: buffers, file handles, stacks, lastdrive). It supports DOS 3.2 or higher.

HOOKRAM

It allows drivers to be loaded before loading QEMM and still allow the use of QEMM's Stealth feature.

MagnaRAM

It was a virtual memory compression utility for Windows 3.1, Windows For Workgroups and Windows 95. MagnaRAM is included with QEMM 97.

MagnaRAM was also released as a separate utility. [2]

MagnaRAM worked by replacing a portion of Windows' virtual memory system. MagnaRAM would insert itself in the string of Windows Programs that determined what pieces of RAM will be moved to the hard disk. Instead of writing directly to the hard disk, the information to be written would go to MagnaRAM's own buffer as this was a faster process. During CPU idle, MagnaRAM would compress the information in its own RAM buffer. When the RAM buffer becomes full, it is then swapped to the hard disk taking both less time and less space. [3]

Manifest

Manifest (MFT) is a hardware information utility that displays information about user's system.

Optimize

Similar to MEMMAKER, it is a utility that calculates, and allows user to choose optimal orders of loading drivers and TSRs. However, OPTIMIZE allows preview of adjustments be made without rebooting. Shipped with QEMM and DESQview.

QDPMI

QDPMI is a DPMI 0.9 server driver, authored by Dan Spear. It requires 386 CPU and QEMM386.

QEMM 50/60

It is a version of QEMM driver for the IBM PS/2 Models 50 and 60.

Version 4.03 supports IBM Memory Expansion Option boards with 2-8MB memory.

Stealth

It can relocate memory assigned for CGA character set away from UMA.

Beginning with QEMM version 8, it allows ROM contents in UMA to be relocated to provide more memory for TSRs. Additional Stealth Windows compatibility is provided with VxDs.

Stealth DoubleSpace/D*Space

Stealth D*Space allows DoubleSpace or DriveSpace to be loaded high.

T386

It allows Toshiba laptops to work with QEMM's EMS manager.

VIDRAM

Limitations

Device driver limit

LOADHI.SYS loads up to 1 device driver at a time in QEMM 4.23, 2 in QEMM 5, 32 in QEMM 6.

MagnaRAM limit

Maximum compression threshold setting is 100% for all versions of MagnaRAM 2.00-2.02, except for MagnaRAM 2.00 included with QEMM 8.00, which has the maximum setting of 80%.

Memory limit

  • QEMM 5.0 can manage up to 16 MB EMS, 16 MB XMS.
  • QEMM 6.0 can manage up to 64 MB EMS, 64 MB XMS.
  • QEMM 6.02 can manage up to 128 MB EMS, 128 MB XMS. EMBMEM (16-bit) parameter limit was removed.
  • QEMM 7.0-7.03 can manage up to 128 MB EMS, 128 MB XMS.
  • QEMM 7.04, 7.5, 8.0-8.3 and 97 (aka QEMM 9.0) can manage up to 256 MB EMS/XMS.

By default, QEMM 7.04 and above provide up to a total of 64 MB RAM shared among XMS, EMS and VCPI memory, unless the USERAM= parameter is used. For example, to allow access to up to 256 MB EMS (or 256 MB XMS), specify: QEMM386.SYS USERAM=1M-256M [4]

For QEMM 7.04 and above, the maximum addressable RAM is 256 MB of memory, shared among XMS, EMS and VCPI memory. Initially, XMS allocates the entire 256 MB and shares it with EMS and VCPI as needed, that is, as EMS and VCPI request memory blocks, XMS free memory is reduced by that same amount. [5]

Optimize limit

Versions up to QEMM 6.01 can process batch files up to 9KB, and 20KB in QEMM 6.02.

Batch file line limit is 512 for QEMM versions up to 6.02.

Stealth DoubleSpace/D*Space

Stealth D*Space does not support Windows 95 or later versions of DriveSpace.

Version history

Originally, the product was called QEMM-386 (requiring an Intel 80386 and DOS 3.30.), and was released with a complementary product called QRAM (for use on intel 80286 and 8088). The 386 suffix was dropped starting with QEMM version 7.0 in 1993, when Intel released the Intel Pentium on March 22, 1993. The final release was re-branded as QEMM 97 to follow Microsoft's new branding trend of using year released instead of version numbers, specifically, Windows 95 and Windows 95 OSR2.

QEMM-386 v4.2 (November 11, 1988)

QEMM-386 v5.0 (January 1990)

QEMM-386 v5.11 (mid 1990)

QEMM-386 v6.0 (early 1991)

QEMM-386 v6.01 (mid 1991)

QEMM-386 v6.02 (November 13, 1991)

QEMM v7.0 (mid 1993)

Dropped the 386 suffix from the name since Intel introduced the Pentium processor.

QEMM v7.03 (November 17, 1993)

  • VIDRAM no longer suppress interrupt 10, function 1B calls (Video BIOS Functionality and State Information for MCGA/VGA).
  • New Optimize switches include /NOFLUSH (/NOFL).
  • Stealth DoubleSpace virtualizes DOS Function 9.
  • DOSDATA improves compatibility with Stacker 3.1, supports PC DOS 6.1 and XTRADRIVE or OS/2 2.x Boot Manager.
  • Stealth Windows driver was updated to 7.02.
  • QEMM driver now supports Compaq 20/e and 25/e.

QEMM v7.04 (February 28, 1994)

  • Added support for DOS 6.20.
  • Maximum RAM is 256MB XMS/256MB EMS.
  • DOS-Up now supports Novell DOS 7. In DR DOS 6.0 and Novell DOS 7, only DOS resource is loaded high.
  • Improved VCPI compatibility on systems with large amounts of memory.
  • QEMM supports DESQview/X 2.0 server.*Manifest now recognizes STB processors.

QEMM v7.5 (September 17, 1994)

QEMM v7.53 (May 12, 1995)

QEMM v8.0 (1995-11-04)

QEMM v8.01 (February 14, 1996)

QEMM v8.03 (April 7, 1997)

QEMM 97 (aka v9.0) (May 15, 1997)

One Install.exe but two roles

  • Run the installer from within Windows, and it will fully integrate QEMM 97 with Windows configuration files and registry updating system.ini, adding QEMM group, auto starting QEMM monitoring, etc.
  • However, run the installer, install.exe, from a pure DOS (DOS 7.10 or DOS 6.22) without Windows present, and it will configure and install only the DOS utilities; updating only DOS' config.sys and autoexec.bat files.

QEMM Configurations

QEMM provides up to 635K free conventional memory (RAM under 640K), far better than pure MS-DOS EMM386, FreeDOS JEMM386, UMBPCI and many other memory manager programs. QEMM maximum RAM is 635K free conventional memory with up to 256MB XMS/256MB EMS shared.

MS-DOS 6.22, Windows 3.11/WFW 3.11

MS-DOS 6.22 provides 619K free conventional memory and up to 64MB XMS/32MB EMS shared RAM. Assuming unaltered MS-DOS 6.22, without 3rd party utilities, i.e. JEMM, UMBPCI, etc. QEMM increases the available free conventional RAM to 635K with shared 256MB XMS/256MB EMS.

While using Windows 3.11 or Windows For Workgroups 3.11, QEMM provides additional free conventional memory for DOS Prompt running under Windows. QEMM is well suited for Windows 3.x as has supported for it since QEMM v5.x as early as 1990. As a result, QEMM 8.03 or QEMM 97 integrate very well with Windows 3.11/WFW 3.11.

MS-DOS 7.10, Windows 95 OSR2/Windows 98 SE

QEMM increases the available free conventional RAM for MS-DOS 7.10 and also for DOS Prompt under Windows 95 OSR2/Windows 98 SE. However, QEMM maximum RAM is a shared 256MB XMS/256MB EMS, which is less than what DOS 7.10 and Windows 95/98 support without QEMM. MS-DOS 7.10 provides 624K free conventional memory and up to 1GB XMS/32MB EMS; assuming unaltered MS-DOS, using HIMEM.SYS and EMM386.EXE without any 3rd party utilities. Thus, QEMM is compatible with MS-DOS 7.10 and Windows 9x and provides slightly more free conventional RAM but it does lower the maximum RAM to 256MB XMS/256MB EMS.

Consequences of using or disabling EMS

EMS memory normally uses a 64KB of UMB as the Page Frame, this reduces the total UMB available to DOS. So some recommend turning off EMS, using the NOEMS switch, to increase the total UMB free by 64KB. QEMM supports NOEMS switch, however, it is far better to provide EMS than saving the 64K Page Frame.

QEMM takes advantage of EMS memory and usually will create more free RAM in the lower 1M address space than the 64KB required for EMS. QEMM StealthROM, SqueezeFrame, and Stealth D*Space all require EMS to work by mapping ROM and data buffers into EMS, thus freeing more UMB's.

QEMM's TechNote FRAME.TEC states: "Thus any advice to remove the page frame is penny-wise and pound-foolish. Remember that the page frame is 64K of address space that can be used any program, at any time, to access effectively as much memory as it likes. Some view the page frame as 64K of address space that could be used to hold up 64K of programs, but it is much more useful to consider the page frame as a place to access up to 32 megabytes of code and/or data for the programs that use it." [6]

Example: 635K Free, shared 256MB XMS/256MB EMS

DOS=HIGH,UMBdevice=C:\QEMM\dosdata.sysdevice=C:\QEMM\qemm386.sys R:1 RAM UR=1M-256M ST:M I=b000-b7ff X=f000-ffffdevice=C:\QEMM\dos-up.sys @C:\QEMM\dos-up.datshell=C:\QEMM\loadhi.com /R:2 C:\command.com C:\/P /E:1024

Note: If using VMware, then replace the qemm386.sys line with

device=C:\QEMM\qemm386.sys R:1 RAM UR=1M-256M X=e800-e900

Skipping QEMM386 while booting

Hold ALT key during boot and qemm386.sys will not load but prompt to hit Esc to skip loading.

Alternatively, hold F5 so DOS skips loading all of config.sys + autoexec.bat or hold F8 so DOS prompt Y/N to confirm each line in config.sys and autoexec.bat; allowing you to skip loading qemm386.sys, dos-up, dosdata, etc.

May help while testing new configuration that lead to system lockups. Holding ALT or pressing F5/F8 during boot might be the saving touch!

DOS equivalents

Microsoft released comparable but simpler memory managers of its own - HIMEM.SYS for XMS and EMM386.EXE for EMS with MS-DOS 4.01 in 1989; earlier Windows/386 2.1 included a built-in EMM which offered EMS to DOS windows during Windows sessions only. These versions could not yet create Upper Memory Blocks. Digital Research's DR DOS 5.0 (1990) was the first non-vendor-specific DOS to offer the UMB technology, incorporating a 386-mode XMS/EMS manager also called EMM386. It could also allocate some of the video memory or EMS memory as UMB memory. MS-DOS finally offered UMBs in 1991 with version 5.0. MS-DOS' EMM386 required HIMEM to be loaded first, while DR-DOS' EMM386 fulfilled both roles and did not need a separate XMS driver, which was still provided but only needed on 80286-based machines (originally named HIDOS.SYS, later HIMEM.SYS). If an XMS driver was loaded before DR-DOS EMM386, it would use this instead of the built-in XMS manager. Using an external and possibly customized XMS driver could help overcome issues with BIOS memory reporting functions causing the memory manager not to see all available memory, and on machines using non-standard gate-A20 switching methods, whereas using the internal XMS driver EMM386 could take advantage of speed-optimized 32-bit code for the XMS driver and relocate all but a tiny stub of the XMS driver into Extended Memory. DR-DOS EMM386 could fill "free" areas with UMBs or map RAM over unused ROM areas in virtual mode, provide support for DPMI (and - in some special issues - DPMS), and load the support for pre-emptive multitasking and multithreading components of the operating system.

Windows transition / Decline of QEMM

While popular when DOS programs were the mainstream, QEMM eventually became largely irrelevant as Windows programs and more intensive DOS programs, particularly games, using DOS extenders replaced traditional DOS programs for most users. Also, some of the DOS users switched to protected mode operating systems unsupported by QEMM, such as the Windows NT series and Linux.

The final version was QEMM 97, which was compatible with Windows 95 and later Windows 98/ME, but by this point, not only was DOS memory management no longer in high demand, but the remaining competitive DOS applications (including various GNU utilities and text editors) supported EMS, XMS, or DPMI - which reduced demand for conventional memory - or had been ported to Windows 95 or higher. The availability of increasing RAM sizes at low cost served to reduce the need of MagnaRAM. Finally, modern PCI chipsets provide documented functionality to remove write protection from unused UMA; in many or most cases, this last fact eliminates the need for QEMM for even those relatively few users who use DOS applications and who might otherwise find QEMM essential.

See also

Related Research Articles

A terminate-and-stay-resident program is a computer program running under DOS that uses a system call to return control to DOS as though it has finished, but remains in computer memory so it can be reactivated later. This technique partially overcame DOS's limitation of executing only one program, or task, at a time. TSRs are used only in DOS, not in Windows.

<span class="mw-page-title-main">DESQview</span> Text mode multitasking operating environment

DESQview (DV) is a text mode multitasking operating environment developed by Quarterdeck Office Systems which enjoyed modest popularity in the late 1980s and early 1990s. Running on top of DOS, it allows users to run multiple programs concurrently in multiple windows.

<span class="mw-page-title-main">DOS memory management</span> Techniques employed to give applications access to more than 640 kibibytes

In IBM PC compatible computing, DOS memory management refers to software and techniques employed to give applications access to more than 640 kibibytes (KiB) of "conventional memory". The 640 KiB limit was specific to the IBM PC and close compatibles; other machines running MS-DOS had different limits, for example the Apricot PC could have up to 768 KiB and the Sirius Victor 9000, 896 KiB. Memory management on the IBM family was made complex by the need to maintain backward compatibility to the original PC design and real-mode DOS, while allowing computer users to take advantage of large amounts of low-cost memory and new generations of processors. Since DOS has given way to Microsoft Windows and other 32-bit operating systems not restricted by the original arbitrary 640 KiB limit of the IBM PC, managing the memory of a personal computer no longer requires the user to manually manipulate internal settings and parameters of the system.

In computing, the DOS Protected Mode Interface (DPMI) is a specification introduced in 1989 which allows a DOS program to run in protected mode, giving access to many features of the new PC processors of the time not available in real mode. It was initially developed by Microsoft for Windows 3.0, although Microsoft later turned control of the specification over to an industry committee with open membership. Almost all modern DOS extenders are based on DPMI and allow DOS programs to address all memory available in the PC and to run in protected mode.

<span class="mw-page-title-main">Extended memory</span>

In DOS memory management, extended memory refers to memory above the first megabyte (220 bytes) of address space in an IBM PC or compatible with an 80286 or later processor. The term is mainly used under the DOS and Windows operating systems. DOS programs, running in real mode or virtual x86 mode, cannot directly access this memory, but are able to do so through an application programming interface (API) called the Extended Memory Specification (XMS). This API is implemented by a driver (such as HIMEM.SYS) or the operating system kernel, which takes care of memory management and copying memory between conventional and extended memory, by temporarily switching the processor into protected mode. In this context, the term "extended memory" may refer to either the whole of the extended memory or only the portion available through this API.

<span class="mw-page-title-main">Expanded memory</span> System of bank switching in DOS memory management

In DOS memory management, expanded memory is a system of bank switching that provided additional memory to DOS programs beyond the limit of conventional memory (640 KiB).

<span class="mw-page-title-main">Conventional memory</span> First 640 KB of RAM under DOS

In DOS memory management, conventional memory, also called base memory, is the first 640 kilobytes of the memory on IBM PC or compatible systems. It is the read-write memory directly addressable by the processor for use by the operating system and application programs. As memory prices rapidly declined, this design decision became a limitation in the use of large memory capacities until the introduction of operating systems and processors that made it irrelevant.

<span class="mw-page-title-main">High memory area</span> RAM area of an IBM AT or compatible computer

In DOS memory management, the high memory area (HMA) is the RAM area consisting of the first 65520 bytes above the one megabyte in an IBM AT or compatible computer.

CONFIG.SYS is the primary configuration file for the DOS and OS/2 operating systems. It is a special ASCII text file that contains user-accessible setup or configuration directives evaluated by the operating system's DOS BIOS during boot. CONFIG.SYS was introduced with DOS 2.0.

<span class="mw-page-title-main">Quarterdeck Office Systems</span>

Quarterdeck Office Systems, later Quarterdeck Corporation, was an American computer software company. It was founded by Therese Myers and Gary Pope in 1981 and incorporated in 1982. Their offices were initially located at 150 Pico Boulevard in Santa Monica, California and later at 13160 Mindanao Way in Marina del Rey, California, as well as a sales and technical support unit located in Clearwater, Florida. In the 1990s, they had a European office in Dublin, Ireland. Their most famous products were the Quarterdeck Expanded Memory Manager, DESQview, CleanSweep, DESQview/X, Quarterdeck Mosaic, Manifest and Partition-It.

CEMM, for Compaq Expanded Memory Manager was the first so-called PC "memory manager" for Intel 80386 CPUs, able to provide expanded memory (EMS) emulation by using the virtual memory features and the virtual 8086 mode of the CPU.

A DOS extender is a computer software program running under DOS that enables software to run in a protected mode environment even though the host operating system is only capable of operating in real mode.

<span class="mw-page-title-main">Phar Lap Software</span> Software company

Phar Lap Software, Inc., was a software company specializing in software development tools for DOS operating systems. The company was named after the champion New Zealand racehorse Phar Lap. They were most noted for their software allowing developers to access memory beyond the 640 KiB limit of DOS and were an author of the VCPI standard.

EMM386 is the expanded memory manager of Microsoft's MS-DOS, IBM's PC DOS, Digital Research's DR-DOS, and Datalight's ROM-DOS which is used to create expanded memory using extended memory on Intel 80386 CPUs. There also is an EMM386.EXE available in FreeDOS.

<span class="mw-page-title-main">Upper memory area</span> Physical memory region on IBM PC compatibles

In DOS memory management, the upper memory area (UMA) is the memory between the addresses of 640 KB and 1024 KB (0xA0000–0xFFFFF) in an IBM PC or compatible. IBM reserved the uppermost 384 KB of the 8088 CPU's 1024 KB address space for BIOS ROM, Video BIOS, Option ROMs, video RAM, RAM on peripherals, memory-mapped I/O, and obsoleted ROM BASIC.

HIMEM.SYS is a DOS device driver which allows DOS programs to store data in extended memory according to the Extended Memory Specification (XMS). The memory beyond the first 1 MB of address space is required by Windows 9x/Me in order to load; therefore, these versions of Microsoft Windows require HIMEM.SYS to be loaded to be able to run.

In computing, the Virtual Control Program Interface (VCPI) is a specification published in 1989 by Phar Lap Software that allows a DOS program to run in protected mode, granting access to many features of the processor not available in real mode. It was supplanted by DOS Protected Mode Interface (DPMI) shortly after being introduced, due in large part to VCPI's inability to work in Windows 3.0's protected mode.

<span class="mw-page-title-main">DOS</span> Family of IBM PC-compatible operating systems

DOS is a family of disk-based operating systems for IBM PC compatible computers. The DOS family primarily consists of IBM PC DOS and a rebranded version, Microsoft's MS-DOS, both of which were introduced in 1981. Later compatible systems from other manufacturers include DR-DOS (1988), ROM-DOS (1989), PTS-DOS (1993), and FreeDOS (1998). MS-DOS dominated the IBM PC compatible market between 1981 and 1995.

The maximum random access memory (RAM) installed in any computer system is limited by hardware, software and economic factors. The hardware may have a limited number of address bus bits, limited by the processor package or design of the system. Some of the address space may be shared between RAM, peripherals, and read-only memory. In the case of a microcontroller with no external RAM, the size of the RAM array is limited by the size of the integrated circuit die. In a packaged system, only enough RAM may be provided for the system's required functions, with no provision for addition of memory after manufacture.

DOS Protected Mode Services (DPMS) is a set of extended DOS memory management services to allow DPMS-enabled DOS drivers to load and execute in extended memory and protected mode.

References

Further reading