Fact-checked by Grok 2 weeks ago

Extended memory

Extended memory, also known as XMS memory, refers to the random access memory (RAM) located above the first 1 megabyte (1 MB, or 2^20 bytes) of address space in IBM PC-compatible computers equipped with an Intel 80286 or later processor. This memory region became accessible starting with the 80286 microprocessor, which introduced protected mode operation allowing direct addressing beyond the 1 MB limit imposed by earlier real-mode architectures like the 8086/8088 used in the original IBM PC. In the context of MS-DOS and early Windows environments, extended memory was crucial for overcoming the 640 KB conventional memory limit that restricted most applications and the operating system itself. The eXtended Memory Specification (XMS), version 3.0 of which was released in January 1991, provided a standardized API for real-mode DOS programs to allocate, manage, and transfer data to and from extended memory blocks without requiring full protected-mode switching. Jointly developed by Lotus Development Corporation, Intel Corporation, Microsoft Corporation, and AST Research, Inc., XMS enabled efficient use of extended memory on 80286 and 80386 systems, supporting up to 64 MB in version 2.0 and expanding to 4 GB in version 3.0 with MS-DOS 6.0 and later. A key component of XMS implementation was the Extended Memory Manager (XMM), such as Microsoft's , which loaded into memory during to handle XMS requests via 2Fh and provided access to the High Memory Area (HMA)—a 64 KB region (minus 16 bytes) immediately above 1 MB at addresses FFFF:0010h to FFFF:FFFFh—by enabling the A20 address line. 5.0, released in 1991, integrated XMS support to load core components like the , command interpreter (), and disk buffers into the HMA, freeing for applications; subsequent versions like 6.0 further enhanced this with Upper Memory Block (UMB) management via EMM386.EXE, which emulated expanded memory () using extended memory. Unlike expanded memory (EMS), which relied on bank-switching hardware to map additional RAM into the upper 384 KB of the first 1 MB for real-mode access, extended memory offered direct, linear addressing in or through XMS, making it more efficient for larger programs and multitasking environments like or Windows 3.x. This distinction was vital during the late and early , as extended memory facilitated the running of memory-intensive games, spreadsheets, and utilities that would otherwise exceed conventional limits, paving the way for the transition to 32-bit operating systems. By the mid-, as OSes like became prevalent, the need for XMS diminished, though it remained a legacy feature in emulators and retro computing.

Background and Context

PC Memory Architecture

The PC-compatible memory architecture, introduced in 1981, was fundamentally shaped by the , which featured a 20-bit external address bus capable of addressing up to 1,048,576 bytes (1 MB) of physical memory. This design utilized addressing, where memory is accessed through a segmented model combining a 16-bit register and a 16-bit to form a 20-bit via the (segment value × 16) + offset. The segmented approach allowed the 8088 to exceed the 64 KB limit of simpler 16-bit addressing schemes while maintaining compatibility with existing software tools and development environments from the era. The 8088's architecture, with its 16-bit internal data path but 8-bit external bus, was selected by to reduce system costs by enabling the use of less expensive support chips and memory interfaces compared to the full 16-bit bus of the related Intel 8086. The PC's divides this 1 into distinct segments to balance user-programmable with hardware requirements. occupies addresses 00000h to 9FFFFh (0-640 ), serving as the primary area for the operating system, applications, and data; this region starts with 16-64 on the system board and can expand to 256 via add-on cards. Above this lies the upper memory area (UMA) from A0000h to FFFFFh (640 -1 ), reserved for system peripherals and firmware: for instance, video buffers at B0000h-B7FFFh (, 32 ) and B8000h-BFFFFh (, 32 ), followed by optional adapter ROMs and the system at F0000h-FFFFFh (64 , including routines and basic I/O services). This allocation imposed a hardware-enforced 1 barrier, as the bus (A0-A19) could not directly beyond this range without additional mechanisms. To ensure backward compatibility when evolving to later processors like the Intel 80286 in the 1984 IBM PC/AT, the architecture incorporated the A20 address line (bit 20 of the bus), which is disabled by default in real mode to mimic the 8088's wraparound behavior—where addresses exceeding FFFFFh loop back to 00000h—thus enforcing the 1 MB limit and preventing conflicts with legacy software assuming this constraint. Enabling the A20 line, typically via the keyboard controller at I/O ports 60h or 64h, extends addressing by allowing the 21st bit to function, though real-mode software remains confined unless explicitly managed. This design choice stemmed from the 8086/8088 family's origins in the late 1970s, when 1 MB was deemed sufficient for business applications amid high memory costs (around $25 per 64 KB in 1981), prioritizing affordability and interoperability over future scalability.

Distinction from Other Memory Types

Extended memory refers to the physical RAM installed in an IBM PC or compatible system above the first 1 megabyte (1 MB) of address space, which is inaccessible to standard real-mode applications without specialized software or hardware mechanisms to enable access. In the context of early PC architecture, this limitation stems from the 20-bit addressing of the Intel 8086 processor, capping the real-mode address space at 1 MB. In contrast to expanded memory, which follows the Lotus/Intel/Microsoft (LIM) Expanded Memory Specification (EMS) and simulates additional address space by mapping pages from a dedicated memory board into a 64 KB page frame within the upper memory area (between 640 KB and 1 MB) via bank switching, extended memory consists of direct physical RAM beyond the 1 MB boundary without such mapping techniques. This makes extended memory more straightforward for direct allocation in protected mode but requires mode switches from real mode for DOS compatibility, whereas EMS operates entirely within the 1 MB limit using software-driven paging. In protected-mode operating systems like Windows or , memory above the 1 MB threshold is directly addressable by the OS using and paging mechanisms, enabling larger address spaces and multitasking without the real-mode constraints or XMS/ specifications needed for applications. Extended memory, however, specifically pertains to the DOS-era concept of above 1 MB accessed primarily through real-mode extensions or temporary protected-mode excursions, emphasizing compatibility with legacy 16-bit applications. Although extended memory can be installed and partially utilized on 80286-based systems, which support up to 16 MB total via protected-mode segments limited to 64 KB each, full utilization—such as larger contiguous blocks up to 4 GB with 4 GB segment sizes—requires an 80386 or later processor due to enhanced descriptor table capabilities and addressing modes.

History

Development in the 1980s

The development of extended memory emerged in the early amid the growing constraints of PC memory addressing, particularly with the PC XT released in 1983, which used the processor and allowed installation of up to 640 KB in , while the upper memory area beyond that point remained largely inaccessible to due to hardware reservations for adapters and ROMs. This inherent 1 MB barrier in the 8086 architecture highlighted the need for innovative approaches to utilize additional , setting the stage for later advancements. A pivotal shift occurred in 1984 with the introduction of the IBM PC AT, featuring the processor capable of addressing up to 16 of via its 24-bit address bus. Despite this capability, the 80286 operated in for compatibility, confining applications to the 1 limit and making the above that threshold—termed extended memory—inaccessible without mode switches or other workarounds. This limitation persisted, prompting experimental modifications, such as manually enabling the A20 address line through the keyboard controller to bypass the 1 wraparound and experimentally access high regions on 80286 systems. In 1985, the /Intel/ (LIM) consortium released the initial Expanded Memory Specification () 3.0, emphasizing bank-switching methods to provide additional beyond the KB limit on 8086-based machines. Although EMS targeted expanded memory via add-on cards rather than direct addressing, it indirectly stimulated interest in straightforward to extended memory on 80286 platforms, as users and developers explored ways to the processor's full potential without complex paging. By 1988, introduced , the first specifically designed to manage extended memory on 286 and higher systems, enabling basic allocation and transfer functions in .

Adoption and Standardization

The eXtended Memory Specification (XMS) version 2.0 was released on July 19, 1988, by a consortium including , , , and , Inc., establishing a standardized for accessing extended in environments on 80286 and 80386 processors. This specification enabled consistent, machine-independent management of memory above the 1 MB boundary, addressing fragmentation issues in prior ad-hoc implementations and facilitating broader compatibility across PC hardware. Adoption accelerated with Microsoft's inclusion of the HIMEM.SYS device driver in 5.0, released in June 1991, which provided native XMS support and allowed loading of the operating system into the High Memory Area (HMA) via , freeing conventional memory for applications. By 1990, major software like incorporated XMS compatibility in its Standard and 386 Enhanced modes, enabling programs to utilize extended memory for tasks exceeding the 640 KB conventional limit and supporting the loading of larger applications on systems with increasing . XMS version 3.0, released in January 1991, further enhanced the standard by introducing 32-bit functions for addressing up to 4 GB of extended memory on 80386 and later processors, aligning with the era's advancements where consumer PCs commonly supported capacities up to 64 MB. However, XMS relevance declined in the mid-1990s as operating systems like , released in 1995, shifted to 32-bit , allowing direct access to much larger address spaces without reliance on DOS-era memory managers.

Extended Memory Specification (XMS)

Core Features

The Extended Memory Specification (XMS) serves as a standardized software interface that enables real-mode programs, such as those running under , to allocate, move, and lock blocks of extended memory located above the 1 MB boundary. This interface is implemented through an Extended Memory Manager (XMM) driver, which abstracts the complexities of direct hardware access, allowing applications to utilize extended memory for without entering . Developed jointly by , , , and , XMS version 2.0 was standardized in 1988 to provide a consistent method for in PC-compatible systems, supporting up to 64 MB; version 3.0, released in January 1991, extended capabilities to 4 GB via super extended memory. A central concept in XMS is the allocation of memory blocks in fixed 1 KB units, managed through a where each allocation returns a unique for subsequent operations. ensure secure and isolated , preventing direct pointer manipulation that could lead to addressing errors in the real-mode . The XMS handles the of the A20 address line as needed, which is essential for extended memory by allowing the 21st address bit to be used for linear addressing beyond 1 without wrapping. This handling simplifies usage for applications, as manual A20 manipulation—prone to issues on various —is delegated to the manager, ensuring reliable to the entire extended memory space without user intervention. Error handling in XMS is managed through standardized return codes issued by the XMM in response to requests, indicating failures such as insufficient available or conflicts that prevent allocation. These codes, typically returned in a like when the primary operation indicator (AX) is zero, allow applications to gracefully handle exceptions, such as retrying allocations or falling back to , thereby enhancing system stability.

API and Functions

The Extended Memory Specification (XMS) defines an application programming interface (API) accessed through a control function entry point obtained via interrupt 2Fh. To detect the presence of an XMS driver, software sets AH=43h and AL=00h before issuing INT 2Fh; if AL returns 80h, the driver is installed. To retrieve the entry point address, AH=43h and AL=10h are used with INT 2Fh, returning the far address in ES:BX for subsequent far calls to the XMS manager. Each function call to this entry point uses AH to specify the function number, with returns in AX (0001h for success, 0000h for failure) and BL providing an error code on failure, such as 80h for unimplemented or A0h for insufficient memory. Core allocation functions enable management of extended memory blocks in kilobyte-sized units, returning opaque for reference. The Allocate function (AH=09h) requests a block of DX kilobytes, returning a handle in DX on success; it fails if no free memory or handles are available. The Free function (AH=0Ah) releases a block specified by DX handle, succeeding only if the block is unlocked and valid. The Reallocate function (AH=0Fh), available in XMS and later, resizes an existing unlocked block to BX kilobytes using DX handle, preserving data if possible but failing on locked blocks or insufficient resources. These functions ensure machine-independent without direct addressing. Data transfer between (below 1MB), extended memory, or other blocks is handled by the Move function (AH=0Bh), which requires DS:SI pointing to a move structure containing a 32-bit , source handle and offset, and destination handle and offset. This structure supports copies involving handles FFFFh for (with offsets relative to segment 0000h) or valid extended memory handles, enabling efficient bulk data movement without temporary buffers. Query functions provide status: Get Version (AH=00h) returns the XMS version in AX (e.g., 0200h for or 0300h for 3.0), internal revision in BX, and HMA availability in DX bit 0; Query Free (AH=08h) reports the largest available block in AX and total free extended memory in DX, both in kilobytes. For direct access on 80386 or later processors, blocks can be locked into linear address space. The Lock function (AH=0Ch) takes a DX handle and returns a 32-bit linear address in DX:BX on success, incrementing a lock count; it fails if the lock count exceeds 255 or on hardware limitations. The Unlock function (AH=0Dh) decrements the lock count for the DX handle, requiring prior locks and failing on invalid or zero-count handles. Locked blocks remain fixed in physical memory, avoiding relocation issues during moves or reallocations. XMS version 3.0 introduces the Request HMA function (AH=01h) to allocate the 64KB High Memory Area above 1MB, using DX=FFFFh for applications or a specific byte count for TSRs; success grants exclusive access via conventional addressing with A20 line enabled. The following table summarizes the core XMS functions with their parameters and returns for versions 2.0 and 3.0, where applicable:
FunctionAH ValueInput ParametersReturn ValuesKey Notes
Get Version00hNoneAX: version (e.g., 0300h); BX: revision; DX: HMA flagSupports HMA query in all versions.
Request HMA01hDX: bytes or FFFFhAX: 0001h successVersion 3.0 only; enables A20 for HMA.
Query Free08hNoneAX: largest block (KB); DX: total free (KB)Reports simulated free space.
Allocate09hDX: size (KB)AX: 0001h/0000h; DX: handleMinimum 1KB; handles are 16-bit.
Free0AhDX: handleAX: 0001h/0000hMust be unlocked; coalesces free space.
Move0BhDS:SI: move structure (source/dest handles, offsets, length)AX: 0001h/0000hHandles FFFFh for conventional memory.
Lock0ChDX: handleAX: 0001h/0000h; DX:BX: linear addressFor 386+; max 255 locks per block.
Unlock0DhDX: handleAX: 0001h/0000hDecrements lock count.
Reallocate0FhBX: new size (KB); DX: handleAX: 0001h/0000hFails if locked; data preserved if shrinking.
Error codes are consistent across versions, including A2h for invalid handles and 81h for conflicts with VDISK.

Implementation

Drivers and Software Tools

HIMEM.SYS, provided by Microsoft, serves as the primary extended memory manager for implementing the Extended Memory Specification (XMS) on systems with 80286 or higher processors. Loaded via a DEVICE= command in the CONFIG.SYS file, it enables access to memory above 1 MB, including the 64 KB high memory area (HMA), while managing the A20 address line to facilitate this access and providing basic XMS services for DOS programs. The driver requires MS-DOS 3.00 or later and detects compatibility with AT-compatible systems, 386-based machines, IBM PS/2s, AT&T 6300 Plus, and HP Vectras, failing installation if the A20 line cannot be controlled or no extended memory is available. Configuration options for HIMEM.SYS include the /HMAMIN= switch, which specifies the minimum amount of HMA space (in , ranging from 0 to 63) that an application must request to gain exclusive access, allowing system administrators to reserve the HMA for critical tasks and prevent fragmentation. Other switches, such as /NUMHANDLES=, set the maximum number of extended memory block handles (defaulting to 32), optimizing for multitasking environments. After loading drivers like , memory configuration can be verified in by invoking the /C command, which classifies and displays allocated memory blocks, free space, and program usage in both conventional and upper areas to ensure proper setup. EMM386.EXE, introduced in 5.0 and later versions, functions as a versatile memory manager that extends capabilities by providing XMS support alongside emulation of expanded memory () and management of upper memory blocks (UMBs) on 80386 or higher processors. Loaded similarly via DEVICE= in , a typical syntax is DEVICE=EMM386.EXE 1024 to allocate 1 of for these services, enabling to utilize extended memory more efficiently through the processor's for improved performance and compatibility. This mode allows EMM386.EXE to simulate without dedicated hardware while mapping UMBs between 640 and 1 , though it requires at least 105 of available extended memory under XMS. Third-party tools like 's QEMM (Quarterdeck Expanded Memory Manager) offered advanced optimization for extended memory on 386+ systems, surpassing built-in drivers by reclaiming additional through techniques such as loading device drivers and TSRs into UMBs. A key feature, , concealed extended memory usage to maximize available upper memory—potentially up to 225 when combined with tools like RAM Boost—while maintaining compatibility with XMS applications. These drivers collectively implement the XMS , providing a standardized for memory allocation and deallocation in environments.

Usage in DOS Applications

DOS applications leveraged extended memory through the XMS to overcome the 640 KB conventional memory constraint, enabling more efficient multitasking and larger data handling. A key practical application was loading terminate-and-stay-resident (TSR) programs into upper memory blocks (UMBs) backed by extended memory, using the LOADHIGH (LH) command available in 5.0 and later; this placed TSRs above KB while freeing conventional memory for primary tasks. Notable examples include the 1993 game Doom, which employed extended memory to allocate buffers for sound and graphics processing, improving performance by offloading data from conventional . Programmers integrated XMS into applications via C libraries, calling XMS functions to allocate, move, and deallocate data blocks between conventional and extended memory regions. These integrations incorporated error checking for low-memory conditions, such as returning code 0A0h when no free extended memory blocks were available. Utilities facilitated monitoring and interaction with extended memory; for instance, reported XMS usage details via commands like MEM /M | FIND "XMS" to display allocated and free . DEBUG.COM supported block manipulation for purposes in memory-intensive scenarios. Access to extended memory via XMS allowed DOS programs on 80386 systems to utilize up to 4 GB total, a capability essential for early applications like CAD and database tools that required substantial resources.

Limitations and Evolution

Technical Constraints

Extended memory, managed through the Extended Memory Specification (XMS), operates within the constraints of real-mode environments on x86 processors, where direct access beyond the first megabyte is impossible without temporary switches to protected mode. In real mode, the 80286 and later processors limit addressing to a 20-bit scheme, capping usable memory at 1 MB for DOS applications; even with XMS allocation of extended memory blocks (EMBs), programs cannot execute code directly from extended memory above 1 MB, as the CPU's segment:offset model restricts offsets to 16 bits per segment. Instead, data must be explicitly moved between conventional memory (below 1 MB) and extended memory using XMS function calls, such as the move block operation (function 0Bh), which relies on BIOS interrupt 15h (AH=87h) to perform the transfer in protected mode before returning to real mode. This approach, while enabling data storage in extended memory up to 16 MB on 80286 systems or 4 GB on 80386 systems, underscores XMS as a workaround rather than a native solution, as real-mode programs remain confined to processing data only in the lower 640 KB conventional area or the 64 KB high memory area (HMA) when the A20 gate is enabled. Fragmentation poses another challenge in XMS-managed extended memory, arising from repeated allocation and deallocation of EMBs via handles, which can leave small, unusable blocks scattered across the above 1 MB. As applications request variable-sized blocks through XMS function 09h (allocate), the manager divides the contiguous extended memory pool, leading to external fragmentation where total free exists but cannot satisfy large contiguous requests due to gaps. This does not fully eliminate the issue, particularly in long-running sessions with frequent operations; XMS fragmentation tends to be more pronounced than in expanded systems due to the linear allocation model without inherent paging. Hardware dependencies further limit XMS reliability and compatibility. Access to extended memory beyond 16 MB requires an 80386 or later processor, as the 80286's 24-bit address bus physically caps at 16 MB, and interrupt 15h extensions (e.g., AH=88h for size query) must support detection and block moves (AH=87h) for larger amounts, which not all early implementations provided consistently. Additionally, the above 1 MB may overlap with certain peripherals such as cards or expansions that claim linear address ranges there, potentially causing system hangs or without careful configuration; XMS drivers must INT 15h to preserve the A20 gate state and avoid remapping issues, but incompatibility arises with devices like certain controllers. Performance overhead in XMS stems primarily from the need for block move operations, executed via CPU string instructions like REP MOVSB during brief protected-mode excursions, which are inherently slower than direct memory access in real mode due to mode-switching latency and instruction execution costs. On an 80286, REP MOVSB incurs approximately 8 + 8n clock cycles (where n is the number of bytes transferred), exacerbated by the 16-bit data bus requiring multiple cycles for word transfers and slow A20 gate toggling (up to several microseconds per switch, depending on hardware); in contrast, the 80386 improves this to 5 + 4n cycles with its 32-bit bus and pipelining, potentially doubling throughput for large blocks, though overall XMS transfers remain 2-5 times slower than native access owing to interrupt overhead and descriptor table lookups in protected mode. Brief references to XMS locking (functions 0Ch/0Dh) allow fixed physical mapping for repeated access, reducing some move frequency but not eliminating the fundamental indirection. Security risks in XMS arise from the lack of memory protection mechanisms in real-mode DOS environments, where multiple applications sharing extended memory via the same manager have no isolation, enabling one program to overwrite another's allocated blocks through erroneous pointers or malicious intent. Without hardware-enforced segmentation or paging boundaries in real mode, multi-tasking setups like DESQview risk data corruption or system instability if an application accesses unallocated or foreign EMBs, as XMS relies solely on software handle validation rather than CPU-level safeguards; this vulnerability is inherent to the real-mode paradigm, making XMS unsuitable for secure, concurrent operations without additional TSR monitoring.

Transition to Modern Systems

The transition from extended memory management began with the introduction of protected-mode capabilities in early Windows versions, marking a shift away from real-mode limitations. Windows 3.1, released in 1992, retained support for the Extended Memory Specification (XMS) to accommodate 16-bit applications running under MS-DOS, but it introduced Virtual DOS Machines (VDMs) in its 386 Enhanced mode. These VDMs leveraged the Intel 80386's virtual 8086 mode to provide isolated environments for DOS sessions, allowing better access to extended memory beyond the 1 MB boundary without direct real-mode dependencies. This hybrid approach enabled Windows to manage larger memory pools more efficiently while maintaining compatibility with legacy XMS-based software. By the mid-1990s, full protected-mode architectures in and (both released in 1995) rendered XMS largely obsolete for new development. These systems employed a flat 32-bit supporting up to 4 GB of , eliminating the need for segmented memory allocation schemes like XMS and enabling direct access to extended memory regions for all applications. Legacy DOS applications continued to receive support through NTVDM in , which emulated a DOS environment including XMS services to run 16-bit and 32-bit programs without hardware-specific constraints. In , DOS sessions operated similarly via VDMs, but the underlying protected-mode kernel prioritized native 32-bit applications, phasing out reliance on XMS drivers. The concepts underlying XMS influenced subsequent standards, notably the (DPMI), introduced in 1989, which extended protected-mode access for DOS applications and inspired 32-bit extenders such as Phar Lap's tools. DPMI built on XMS by providing a standardized interface for memory allocation in protected mode, facilitating smoother transitions to larger address spaces. In modern contexts, XMS persists through emulation in software like , first released in 2002, which simulates XMS handlers to run legacy DOS software on contemporary hardware, and in virtual machines such as , where extended memory is virtualized for compatibility. By 2000, consumer PCs typically featured 128 MB or more of , making extended memory management irrelevant for mainstream , though it remains relevant in embedded systems and retro computing environments.

References

  1. [1]
    eXtended Memory Specification (XMS) 3.0 - Phatcode.net
    This specification was jointly developed by Microsoft Corporation, Lotus Development Corporation, Intel Corporation,and AST Research, Inc. Although it has been ...
  2. [2]
    Q95555: Overview of Memory-Management Functionality in MS-DOS
    ### Summary of Extended Memory, XMS, and Its Role in MS-DOS
  3. [3]
    [PDF] Intel 8088 Data Sheet
    The processor provides a 20-bit address to memory which locates the byte being referenced. The memo- ry is organized as a linear array of up to 1 million bytes, ...Missing: 1MB | Show results with:1MB
  4. [4]
    [PDF] IBM PC Technical Reference - Bitsavers.org
    ... Map ................................. 2-23. System Memory Map ............................. 2-25. System Board And Memory Expansion Switch Settings ... 2-28. 5 ...
  5. [5]
    DOS Memory, Managers & Extenders, Part I | OS/2 Museum
    Jun 17, 2011 · In 1985, the LIM EMS (Lotus/Intel/Microsoft Expanded Memory Specification) was created. The initial release was called EMS 3.0, for reasons that ...
  6. [6]
    [PDF] 1502494_PC_AT_Technical_Ref...
    This manual consists of nine sections, four of which describe the hardware aspects of the IBM Personal Computer AT including signal charts and register ...
  7. [7]
    Vintage DOS Memory Conventions Explained - Oldskooler Ramblings
    Aug 20, 2018 · Memory that extends past the first 1MB is called Extended Memory. Because 8088 CPUs can't access Extended Memory, special memory boards were ...
  8. [8]
    DOS Memory Management
    All memory above 1 MB was referred to generically as Extended Memory. Within this, a small 64 KB area just above the 1 MB mark is called the High Memory Area ( ...
  9. [9]
    Expanded Memory - an overview | ScienceDirect Topics
    Expanded memory is defined as a memory management technique that allows access to additional memory beyond the conventional 640 Kbyte limit of DOS, ...Introduction · Historical Context and Motivation · Expanded Memory in...
  10. [10]
    Memory Limits for Windows and Windows Server Releases
    Jun 11, 2025 · This topic describes the memory limits for supported Windows and Windows Server releases. Limits on memory and address space vary by platform, operating system.
  11. [11]
    APR89: ADVANCED 80386 MEMORY MANAGEMENT - Jacob Filipp
    The 80286 allows segments of up to 64K, and the 386 microprocessors allow segments up to 4 gigabytes long. As any experienced programmer knows, segments are ...
  12. [12]
    The A20-Gate Fallout - The OS/2 Museum
    Apr 13, 2018 · The A20 gate was easy to implement in the PC/AT because there were no caches to contend with. Simply forcing the output of CPU's address pin A20 ...
  13. [13]
    [PDF] Product Support Bulletin - Epson
    Mar 2, 1990 · version, LIM EMS 3.2? A. EMS 4.0 supports up to 32Mb of expanded memory where EMS 3.2 supported only 8Mb. EMS 4.0 has been changed to make it ...
  14. [14]
    HIMEM.SYS, unreal mode, and LOADALL - The OS/2 Museum
    Mar 18, 2011 · HIMEM.SYS version 2.00 from July 1988 was quite straightforward and used BIOS INT 15h, function 87h to move data to and from extended memory ...
  15. [15]
    eXtended Memory Specification (XMS), ver 2.0 - Phat Code
    This specification was jointly developed by Microsoft Corporation, Lotus Development Corporation, Intel Corporation,and AST Research, Inc. Although it has been ...Missing: LIM consortium Qualitas
  16. [16]
    Microsoft DOS History - Computer Hope
    Dec 9, 2023 · Listed below are the important events in history relating to MS-DOS, including release dates for each of its versions and related events.
  17. [17]
    Will It Run Windows? - Low End Mac
    Oct 23, 2001 · Windows 3.0 will run on a 286 in Standard Mode. Standard Mode is much better than Real Mode because it supports XMS (eXpanded Memory System*) ...
  18. [18]
    Remembering More Memory: XMS And A Real Hack | Hackaday
    May 15, 2025 · If you had an 80286 or above, you might be better off using extended memory (XMS). ... Windows '95 was indeed arguably the first mainstream OS to ...
  19. [19]
    EXtended Memory Specification v3.0 - EDM2
    Dec 26, 2022 · The A20 Line does not need to be enabled before accessing an allocated UMB. UMBs are paragraph aligned. To determine the size of the largest ...
  20. [20]
    Extended Memory (XMS) Specification - Phat Code
    XMS is an alternative method for accessing memory about the 1 MB boundary in real-mode DOS. Unlike EMS, it does not require a 64K pageframe in low memory, ...
  21. [21]
    EXtended Memory Specification v2.0 - EDM2
    Oct 6, 2017 · XMS allows DOS programs to utilize additional memory found in Intel's 80286 and 80386 based machines in a consistent, machine independent manner.
  22. [22]
    MS DOS Command: HIMEM.SYS - output.To
    The /HMAMIN option is not required; the default value is zero. Omitting this option (or setting it to zero) specifies that HIMEM allocate the HMA to the first ...
  23. [23]
    MS DOS Command: MEM.EXE - output.To
    You can use the MEM command to display information about allocated memory areas, free memory areas, and programs that are currently loaded into memory.
  24. [24]
    EMM386 Command-Line Switches - Techs Helps
    EMM386 uses extended memory to simulate expanded memory for programs that can use expanded memory. EMM386 also makes it possible to load programs and device ...
  25. [25]
    EMM386.EXE
    EMM386 uses extended memory to simulate expanded memory for programs that can use expanded memory. EMM386 also makes it possible to load programs and device ...Missing: MS- | Show results with:MS-
  26. [26]
    Emulating Expanded Memory Using EMM386.EXE (74210) - XS4ALL
    To use EMM386.EXE you must have an 80386 or 80486 microprocessor and at least 105K of extended memory available under the Extended Memory Specification (XMS).
  27. [27]
    [PDF] User's Guide for the DOS Operating System (OEM VERSION) PC ...
    •• Quarterdeck QEMM is a trademark of Quarterdeck Office Systems. ... use QEMM with Stealth the upper limit is approximately 225K. If you use DOS's. EMM386 ...<|separator|>
  28. [28]
    LOADHIGH - DOS Command
    To load the DOS Shell into high memory, enter loadhigh dosshell. For more information about this command, refer to the downloadable book DOS the Easy Way.
  29. [29]
    eXtended Memory Specification (XMS) 3.0 - Phatcode.net
    The purpose of this document is to define the Extended Memory Specification (XMS) version 3.00 for MS-DOS. XMS allows DOS programs to utilize additional memory ...Missing: "microsoft. | Show results with:"microsoft.
  30. [30]
    [PDF] Untitled
    some DOS applications which cannot use EXTended memory, but only EXPanded memory: WordPerfect 5.1 with the /R switch can use up to 300K of it, if you can ...
  31. [31]
    Setting Up DOOM II for Windows 95 - Doomworld
    Click on the Memory tab and change the following settings to the numbers show in bold red: Extended (XMS) memory: 4096; MS-DOS protected-mode (DPMI) memory: ...<|separator|>
  32. [32]
    DOS/4GW and Protected Mode - Pikuma
    Dec 12, 2021 · DOS/4GW is a program responsible for adding some useful stuff on top of the vanilla DOS kernel you have installed on your system.
  33. [33]
    DOS/4GW - The Doom Wiki at DoomWiki.org
    DOS/4GW is a 32-bit DOS extender that allows DOS programs to eliminate the 640 KB conventional memory limit by addressing up to 64 MB of extended memory.
  34. [34]
    MS DOS Command: MEM.EXE - output.To
    Displays the amount of used and free memory on your computer. You can use the MEM command to display information about allocated memory areas, free memory ...
  35. [35]
  36. [36]
    Windows 3.1 Memory Limits (84388)
    ... XMS memory block larger than 64 MB. This does NOT place a 64 MB limit on operating systems or applications that use XMS 2.x calls to allocate memory from an ...Missing: 64MB | Show results with:64MB
  37. [37]
    [PDF] PATHWORKS for DOS Memory Solutions for Client ... - Bitsavers.org
    Extended memory cannot be accessed while the processor is in real address mode. A processor must be switched to protected mode to access extended memory ...<|separator|>
  38. [38]
    [PDF] The Intel Microprocessors 8086/8088, 80186/80188, 80286, 80386 ...
    This practical reference text is written for students who require a thorough knowledge of pro- gramming and interfacing of the Intel family of ...<|separator|>
  39. [39]
    The DOS memory management:
    You need 286, with common drivers even 386 or newer CPU to use XMS. EMS - expanded memory area: EMS expanded memory is what EMM386 usually gives you, but there ...
  40. [40]
    INT 15H 87H: Move Memory Block - Tech Help!
    You can use this to move chunks of memory around, even when you are running in real mode (access to RAM above 1MB is normally accessible only when in 80286 ...
  41. [41]
    A framework for the assessment of operating systems for small ...
    No swapping or paging is supported in DOS. There is no protection between processes under DOS: therefore, runaway processes can alter each other or DOS itself.
  42. [42]
    For the Nitpickers: Enhanced-mode Windows 3.0 didn't exactly run a ...
    Feb 8, 2013 · Generally speaking, Enhanced-mode Windows 3.0 ran a copy of standard-mode Windows inside the virtual machine. This statement isn't exactly true ...
  43. [43]
    Inside Windows 3 - XtoF's Lair
    Jan 12, 2023 · This mode requires a 386 plus 2MiB of RAM and is far more advanced. It is built on the 32-bit “Virtual Machine Manager” (VMM) that leverages the ...
  44. [44]
    Getting MS-DOS games to run on Windows 95: Virtual memory
    Mar 28, 2016 · A lot of games of the pre-Windows 95 era use so-called MS-DOS Extenders, which are libraries that provide a protected-mode environment to MS- ...
  45. [45]
    NTVDM and 16-bit app support - Compatibility Cookbook
    Nov 17, 2021 · This component allows the execution of 16-bit Windows applications on 32-bit Windows operating systems, as well as the execution of both 16-bit and 32-bit DOS ...
  46. [46]
    [PDF] DOS PROTECTED MODE INTERFACE (DPMI) SPECIFICATION
    Mar 12, 1991 · The DPMI Specification Version 1.0 is copyrighted 1989, 1990, 1991 by the DPMI Committee. Although this Specification is publicly available and ...Missing: influence | Show results with:influence
  47. [47]
    VMware Documentation for MS-DOS 6.22 and Windows 3.1x
    MS-DOS 6.22 and Windows 3.1x documentation covers information on how to install the operating system in a virtual machine.
  48. [48]
    Specifications of Personal Computers Over Time | HP® Tech Takes
    Sep 28, 2021 · In 1998, one of the most common personal computers had just 32 megabytes of RAM and 233 megahertz of processing speed. By 2004, that increased ...