# CEMM

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/CEMM
> Markdown URL: https://mediated.wiki/source/CEMM.md
> Source: https://en.wikipedia.org/wiki/CEMM
> Source revision: 1317701883
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "CEMM" – news · newspapers · books · scholar · JSTOR (October 2025) (Learn how and when to remove this message)

Compaq Expanded Memory Manager (CEMM) Developer Compaq Release September 1986; 39 years ago (1986-09) Operating system Compaq DOS Platform Intel 80386 Type Expanded memory manager

**CEMM**, for **[Compaq](/source/Compaq) Expanded Memory Manager** was the first so-called PC "[memory manager](/source/Memory_management)" for [Intel 80386](/source/Intel_80386) [CPUs](/source/Central_processing_unit), able to provide [expanded memory](/source/Expanded_memory) (EMS) emulation by using the [virtual memory](/source/Virtual_memory) features and the [virtual 8086 mode](/source/Virtual_8086_mode) of the CPU.

It was present in [Compaq DOS](/source/Compaq_DOS) 3.10, shipping with the [Compaq Deskpro 386](/source/Compaq_Deskpro_386) in September 1986.[1][2]

## Overview

In 1986, Compaq was the first vendor to ship a [IBM PC compatible](/source/IBM_PC_compatible) computer with a 386 CPU, the Deskpro 386, and it was natural for them to develop solutions leveraging the specific features of their new hardware and in this case allowing existing EMS-compatible DOS programs to access all the memory.

The implementation was not without its drawbacks. Although CEMM was called an "expanded memory manager", it was really a tiny, [protected mode](/source/Protected_mode), single tasking operating system kernel, also called a [virtual machine monitor](/source/Virtual_machine_monitor) (VMM). It had to catch all the interrupts and all the exceptions, and to *reflect* them to the [virtual machine](/source/Virtual_machine) where DOS ran. This slowed the machine down a little, increased the latency of interrupts and changed the behavior of DOS programs trying to execute invalid machine instructions. Implementing a VMM was not CEMM's raison d'etre, but EMS emulation required paging, and paging required protected mode. The only way to run existing real-mode DOS and [BIOS](/source/BIOS) code was therefore through a VMM.

Because CEMM put the CPU into protected mode, other programs (*[DOS extenders](/source/DOS_extender)*) could not do this anymore by themselves. A special API, the [VCPI](/source/VCPI), had to be developed to allow running DOS extender programs. The first CEMM compatible with VCPI was 4.0, provided with Compaq DOS 4.01.

Compaq filed for a patent on the technology in 1987. The patent was granted in 1990 and probably expired in 2007. Compaq was the creator of this technology and the first company to use it. However, over time, [QEMM](/source/QEMM) and [386MAX](/source/386MAX) became the standard packages. [Windows/386](/source/Windows%2F386) and later releases contained a built-in expanded memory manager ([EMM386](/source/EMM386)) available during Windows sessions and otherwise used for running *multiple* DOS virtual machines. [MS-DOS](/source/MS-DOS) 4.01 (in 1989) and [DR-DOS](/source/DR-DOS) 5.0 (in 1990) popularized the technology outside of the Windows context. Microsoft's EMM386 implementation was based on CEMM.

## See also

- [QEMM](/source/QEMM)

- [EMM386](/source/EMM386)

- [Real mode](/source/Real_mode)

- [Unreal mode](/source/Unreal_mode)

- [Protected mode](/source/Protected_mode)

- [Virtual 8086 mode](/source/Virtual_8086_mode)

- [Conventional memory](/source/Conventional_memory)

- [Extended memory](/source/Extended_memory) (XMS)

- [Expanded memory](/source/Expanded_memory) (EMS)

- [High Memory Area](/source/High_Memory_Area) (HMA)

- [Upper Memory Area](/source/Upper_Memory_Area) (UMA)

## References

1. **[^](#cite_ref-1)** ["Redirecting…"](https://www.pcjs.org/disks/pcx86/diags/compaq/utilities/1986/).

1. **[^](#cite_ref-2)** ["Original CEMM Unearthed | OS/2 Museum"](http://www.os2museum.com/wp/original-cemm-unearthed/).

## External links

- [U.S. patent 4,926,322](https://patents.google.com/patent/US4926322) - *Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management*

---
Adapted from the Wikipedia article [CEMM](https://en.wikipedia.org/wiki/CEMM) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/CEMM?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
