Fact-checked by Grok 2 weeks ago

Real mode

Real mode, also known as real-address mode, is an operating mode of x86-compatible central processing units (CPUs) in which the processor emulates the original microprocessor, providing direct access to physical without mechanisms. In this mode, the CPU employs a 16-bit with segmented addressing, where physical addresses are calculated as the value of a 16-bit shifted left by four bits (multiplied by 16) plus a 16-bit , resulting in a 20-bit that limits accessible to 1 MB (from 00000h to FFFFFh). Key characteristics of real mode include the use of four segment registers—code segment (), data segment (), stack segment (), and extra segment (ES)—each defining 64 KB boundaries aligned on 16-byte multiples, enabling programs to reference relative to these bases. Unlike more advanced modes, real mode uses 16-bit segment registers and defaults to 16-bit operands and addresses, supporting instructions and registers from the 8086 era as well as 32-bit registers and instructions (with operand-size prefixes) on processors from the 80386 onward, with no paging, , or privilege rings, allowing unrestricted hardware access but exposing the system to potential instability from errant code. The (IVT) in real mode resides at the base of (address 00000h) and handles hardware interrupts using 16-byte vectors. x86 processors, including modern ones like and series, always initialize in real mode upon power-on or reset to ensure compatibility with legacy firmware, which loads the boot sector into at physical address 0x7C00 for initial execution. From there, bootloaders or operating system kernels typically transition to or using instructions like LGDT (load ) to enable features such as and larger address spaces up to 4 GB or more. Historically, real mode defined the foundation of personal computing in the , powering and early applications that operated within its 1 MB constraint, often using techniques like memory mapping for expanded access via . Today, while rarely used for primary OS execution due to its limitations, real mode remains essential for / bootstrapping, embedded systems, and compatibility layers in virtual machines or DOS emulators.

Overview

Definition

Real mode is the original execution mode of the and subsequent x86 processors, in which the CPU emulates the 8086's 16-bit architecture while providing no built-in or multitasking support. This mode ensures with early software designed for the 8086, allowing direct hardware access but restricting the processor to a basic, single-tasking environment. At its core, real mode enables direct access to physical through 20-bit addresses, forming a segmented memory model that limits addressable to 1 MB (from 0x00000 to 0xFFFFF). It eschews concepts entirely, with all programs operating at the same level and capable of unrestricted interaction with system resources, which simplifies low-level programming but poses risks to system stability. In contrast to , real mode offers no segmentation enforcement or rings for . Real mode was introduced with the microprocessor in 1978, serving as its sole operating mode and establishing the foundational execution environment for the x86 architecture family. Upon power-on or , x86 processors default to this mode to maintain compatibility with legacy 8086 code.

Key Characteristics

Real mode utilizes a 16-bit register architecture inherited from the original processor, featuring eight general-purpose registers—AX, BX, CX, DX, SI, DI, BP, and SP—that store operands, addresses, and intermediate results during instruction execution. These registers can be accessed as 8-bit or 16-bit units, with instructions like ADD and operating on them directly to support and data transfer operations. Complementing these are four 16-bit segment registers— (code segment), (data segment), (stack segment), and (extra segment)—that define the base addresses for different memory segments used in addressing; later processors starting with the 80386 added FS and GS registers, which are also usable in real mode. The 16-bit (FLAGS), part of the EFLAGS on later processors, maintains status information through individual bits such as (carry flag), (zero flag), PF (parity flag), AF (auxiliary carry), SF (sign flag), and OF (overflow flag), which are updated by and logical instructions to reflect computational outcomes. In terms of execution model, real mode operates as a non-preemptive, single-tasking environment where the executes one at a time without automatic interruption or context switching unless explicitly handled via . This model grants software direct, unmediated to resources, including and I/O devices, through instructions like IN (input from port) and OUT (output to port), which transfer data between the and external peripherals without privilege checks. Such direct simplifies programming for low-level operations but requires careful management to avoid conflicts, as the HALT instruction can suspend execution indefinitely until an occurs. Real mode provides full backward compatibility with the 8086 and 8088 microprocessors, emulating their behavior to ensure that 16-bit code written for these early systems runs unchanged on later x86 processors including the 80286, 80386, and subsequent models. This compatibility extends to instruction sets and register operations, allowing legacy applications and bootloaders to initialize the system before transitioning to other modes if needed. On processors beyond the 8086 family, real mode leverages the full 16-bit width for code execution while masking extended features, thereby preserving the original 1 MB addressable memory limit without requiring code modifications. The absence of features in real mode means there is no isolation between programs or between and spaces, permitting any code to access the entire physical space and potentially overwrite critical system areas. Direct I/O port access is unrestricted, enabling software to interact with devices at will, which facilitates efficient but heightens to erroneous or malicious operations. Invalid pointers or offsets can lead to system crashes or , as the architecture performs no bounds checking or against addressing errors, such as referencing locations beyond the 1 MB limit.

Historical Development

Origins in x86 Architecture

The , introduced by in 1978, marked the inception of real mode within the x86 architecture family. This mode was specifically engineered for 16-bit microcomputers, providing a 1 MB addressable memory space to accommodate the growing demands of personal computing applications during that era. As the sole execution mode available on the 8086, real mode established the baseline operational framework for subsequent x86 processors until the introduction of with the 80286. The architectural foundations of real mode in the 8086 were designed for source-level with Intel's earlier 8080 and processors, enabling easy porting of 8080 code while introducing innovations to expand capabilities. A feature was the segmented model, which addressed the inherent limitations of the 16-bit internal registers and address bus that would otherwise cap access at 64 KB (2^16 bytes). By employing four segment registers (for code, data, stack, and extra segments) combined with offsets, the 8086 effectively leveraged a 20-bit external address bus to reach the full 1 MB limit, calculated as segment address (shifted left by 4 bits) plus offset. This design not only facilitated with existing 8-bit software but also supported more complex, multi-segment programs essential for early development. Early adoption of the 8086's real mode solidified its role in the personal computing revolution, particularly with the PC's release on August 12, 1981, which incorporated the 8088—a variant of the 8086 with an 8-bit external data bus for cost efficiency. This integration established real mode as the standard execution environment for PC compatibles, enabling a vast ecosystem of software and peripherals built around its 16-bit segmented addressing.

Role in Early Operating Systems

Real mode served as the foundational execution environment for early personal computer operating systems, particularly those designed for the Intel 8086 and 8088 processors, enabling direct interaction with hardware in the absence of advanced memory protection mechanisms. Precursor systems such as CP/M-86, developed by Digital Research and released in 1982, operated exclusively in real mode to provide a portable interface for 16-bit applications across various hardware platforms. This design influenced subsequent systems through its structured file system, which organized data into fixed 128-byte records and user areas, and its interrupt-driven I/O model, where the Basic Disk Operating System (BDOS) handled device interactions via standardized function calls that abstracted hardware details. The dominance of MS-DOS exemplified real mode's pivotal role in the 1980s software ecosystem, beginning with Microsoft's licensing of 86-DOS from Seattle Computer Products in December 1980 and its adaptation as PC-DOS 1.0 for the IBM PC in August 1981. Running entirely in real mode, MS-DOS facilitated simple bootloaders that loaded the system from floppy disks into the first 640 KB of conventional memory, command interpreters like COMMAND.COM for user input processing, and applications that made direct calls to BIOS and DOS interrupts for hardware access, such as disk reads or keyboard input. This architecture persisted through MS-DOS versions up to the 1990s, supporting early Windows environments like Windows 3.0's real-mode variant, which relied on DOS for core operations and allowed legacy applications to execute without mode switches. Despite its simplicity, real mode's constraints became evident in efforts to introduce multitasking, as seen with DESQview, released by Office Systems in July 1985 as a text-mode environment atop . DESQview implemented in real mode, where programs ran in resizable windows and yielded control voluntarily via timer interrupts, enabling concurrent execution of multiple tasks on limited hardware like the 8088 processor. However, this approach highlighted scalability issues, as the lack of preemptive scheduling and led to instability when ill-behaved applications monopolized or accessed invalid memory addresses, restricting reliable operation to fewer than a dozen tasks even on upgraded systems.

Addressing and Memory Management

Segment-Based Addressing

In real mode, the x86 architecture employs segment-based addressing to access memory, where a 20-bit physical address is generated by combining a 16-bit segment value from a segment register with a 16-bit offset. The physical address is calculated using the formula: \text{Physical address} = (\text{segment register value} \times 16) + \text{offset} This computation shifts the value left by 4 bits (equivalent to by ) to form a base , which is then added to the , resulting in a range from 0x00000 to 0xFFFFF and limiting the addressable memory to . Each effectively defines a 64 KB window into physical memory, as the maximum is 0xFFFF (65,535 bytes). The x86 provides four primary segment registers in real mode—CS (code segment), DS (data segment), SS (stack segment), and ES (extra segment)—each holding a 16-bit value that serves as the segment selector. The CS register points to the segment containing executable code and is used for instruction fetches. The DS register defaults for accessing data operands, such as those referenced by general-purpose registers like SI or DI. The SS register defines the segment for stack operations, including pushes and pops. The ES register provides an additional data segment, often used for destination operands in string instructions or extra data access. These registers allow flexible memory access by enabling the selection of different 64 KB segments for various purposes, without hardware-enforced protection between them. Due to the granularity of the base (multiples of 16 bytes), segments inherently overlap, permitting the same physical memory location to be addressed through multiple : pairs, a form of that enables programs to access memory beyond a single 64 KB boundary by adjusting values. For example, the 0x0000:0x1000 calculates to 0x1000 (0x0000 × 16 + 0x1000), which is identical to 0x0100:0x0000 (0x0100 × 16 + 0x0000). This overlap complicates programming, as it requires careful management to avoid unintended access or fragmentation, but it provides a for larger effective spaces within the 1 MB limit.

1 MB Memory Limit

In real mode, the x86 architecture provides a total addressable space of 1,048,576 bytes, equivalent to 1 MB (2^20 bytes), constrained by the 20-bit physical addressing capability of processors like the Intel 8086. This space is divided into , ranging from 0x00000 to 0x9FFFF (640 KB), which is primarily available for operating components, device drivers, and application programs, and upper memory from 0xA0000 to 0xFFFFF (384 KB), reserved for hardware-specific uses such as video and (ROM). Within this map, the 640 KB of under represents the core area for executable code and data, while the upper memory breakdown includes 128 KB allocated to video RAM (0xA0000 to 0xBFFFF for graphics adapters) and 256 KB for and adapter firmware areas (0xC0000 to 0xFFFFF), including system BIOS at 0xF0000–0xFFFFF (64 KB) and space for adapter ROMs. This fixed partitioning often resulted in memory fragmentation, as hardware reservations in upper memory reduced the effective available for software, compelling developers to optimize within the 640 KB limit and leading to inefficiencies in larger applications. To mitigate these constraints, employed workarounds like overlay loading, a technique where only essential portions of a reside in at any time, with additional modules loaded from disk as needed to exceed the available without dynamic allocation. The segment-based addressing mechanism, which combines a 16-bit shifted left by four bits with a 16-bit offset to form the , inherently enforces this 1 MB boundary.

Hardware Features

A20 Address Line

The A20 address line, also known as the A20 gate, refers to the hardware mechanism that controls the 21st bit (bit 20, counting from 0) of the bus on x86 processors, implemented externally on motherboards for the 80286 and via the A20M# input pin on later CPUs. When disabled, this line is forced to a logic low state, causing addresses generated in real mode to wrap around at the 1 boundary (from 0xFFFFF to 0x00000), thereby limiting accessible memory to 1 for with earlier 8086/8088 processors. Enabling the A20 line allows the 21st bit to reflect the processor's internal address calculation, preventing wraparound and permitting access to up to 16 on the 80286's 24-bit address bus, including the high memory area (HMA) from 1 to 1 + 64 KB. This feature directly addresses the inherent 1 memory limit of real mode by providing a backward-compatible way to exceed it without entering . Introduced with the processor in 1982, the A20 gate was a deliberate design choice by and to maintain software compatibility during the transition from 16-bit to more advanced architectures. Unlike the 8086/8088, which used a 20-bit address bus and naturally wrapped addresses beyond 1 MB, the 80286's 24-bit bus could generate addresses up to 16 MB even in real mode, potentially breaking legacy applications that relied on wraparound behavior for tricks like or memory overlays. implemented the A20 gate in the PC/AT motherboard design (1984) using the keyboard controller chip (e.g., Intel 8042) to mask the line by default in real mode, ensuring the 80286 emulated the 8086's addressing precisely. This allowed early operating systems and applications to run unchanged while enabling optional access to additional memory for performance-critical tasks, such as loading parts of into the HMA to free up below 1 MB. Enabling the A20 gate in real mode on 80286 and later processors requires specific or software intervention, as it is disabled by default. The most common method involves the controller via I/O ports 0x64 (command/status) and 0x60 (data), where software writes commands to disable interrupts, issue a controller command (e.g., 0xDF to enable A20), and wait for completion to toggle the line without affecting input. Alternative approaches include direct chipset-specific I/O port accesses (e.g., port 0x92 on some systems) or interrupt calls, such as INT 15h with AX=2401h to enable or AX=2402h to disable, which abstract the hardware details for portability across motherboards. These methods were essential for tools like DOS extenders and memory managers (e.g., ) to utilize in real mode environments.

Interrupt Handling

In real mode, interrupt handling relies on the (IVT), a fixed located at physical memory addresses 0x0000 to 0x03FF, occupying the first 1024 bytes of . This table consists of 256 entries, each 4 bytes long, storing far pointers in the form of a 16-bit offset followed by a 16-bit segment value, which point to the entry points of interrupt service routines (ISRs). The IVT serves as the central mechanism for dispatching interrupts, allowing the processor to locate and execute handlers efficiently within the 1 MB address space of real mode. Real mode supports three primary types of interrupts: hardware interrupts, software interrupts, and exceptions. Hardware interrupts are generated by external devices and managed through the 8259 (PIC), which handles 15 interrupt requests (IRQ0 through IRQ15) by asserting the processor's INTR pin and providing a number to index the IVT. Software interrupts are explicitly invoked by the n , where n is a number from 0 to 255 specifying the IVT entry; a common example is INT 21h, which provides system services such as file I/O and console operations. Exceptions, including faults like divide-by-zero ( 0), are processor-generated events that also through the IVT to dedicated handlers for error recovery or termination. The processing flow for an interrupt in real mode begins when the processor receives a signal or executes an interrupt instruction, determining the vector number (0-255). The processor then computes the IVT offset by multiplying the vector by 4, fetches the corresponding 4-byte far pointer, and loads the segment into the CS register and the offset into the IP register. Prior to the jump, the current state is preserved by pushing the FLAGS register, CS, and IP onto the stack in that order. Execution transfers to the ISR at the specified address, where the handler performs the necessary operations, such as acknowledging the interrupt via the PIC for hardware events. Upon completion, the IRET instruction pops the stack to restore FLAGS, CS, and IP, resuming the interrupted program. This straightforward mechanism ensures reliable interrupt service without the segmentation or protection features of other modes.

Mode Switching

Entering Real Mode

Upon power-on reset or a hardware reset, the x86 processor initializes in real-address mode (commonly called real mode), with the code segment register (CS) selector loaded to 0xF000 (with initial base address 0xFFFF0000) and the instruction pointer (IP) to 0xFFF0, directing the first instruction fetch to physical address 0xFFFFFFF0 in the ROM BIOS. All other segment registers (DS, ES, SS, FS, GS) are cleared to zero, control register CR0 has the protection enable (PE) bit set to 0 to enforce real mode, and the EFLAGS register is initialized with most bits cleared except for the interrupt flag (IF) set to 1. This configuration ensures compatibility with the original 8086 architecture and allows immediate execution of 16-bit code without mode switching. The ROM , beginning execution at this , performs the (POST) entirely in real mode to validate core such as the CPU, , and basic I/O devices. As part of POST, the initializes the (IVT) at 0x0000 to 0x03FF, populating it with vectors for hardware interrupts and services; it also detects attached like keyboards, disks, and video adapters, configuring them as needed. Once POST completes successfully, the reads the first sector (boot sector) from the boot device—typically the (MBR) on a hard disk—loading its 512 bytes into at 0x7C00, sets the DL to indicate the boot drive, and jumps to 0x7C00:0x0000 to transfer control to the . For programmers developing or boot code in real mode, such as custom routines or minimal bootloaders, the assembly code must be compiled for 16-bit operation, with explicit loading of registers (e.g., via instructions) to establish correct base addresses shifted left by 4 bits, and EFLAGS cleared of bits like NT or VM using CLI, STI, or PUSHF/POPF sequences to maintain the default real mode environment. During this boot process, the briefly references setup in the IVT for hardware detection, as detailed in handling mechanisms.

Transition from Protected Mode

Transitioning from protected mode to real mode on x86 starting from the 80286 requires careful manipulation of and processor state to avoid system instability. The process begins with disabling interrupts using the CLI instruction to prevent interruptions during the mode switch, ensuring no maskable interrupts occur. If paging is enabled, it must first be disabled by clearing the bit (bit 31) in CR0 via a instruction to CR0, followed by flushing the lookaside buffers (TLBs) to maintain address consistency. Next, protected mode is disabled by clearing the bit (bit 0) in CR0, which reverts the processor to interpreting addresses in real mode format. A far jump or return instruction is then executed to flush the processor's prefetch queue, branch target buffer, and any remaining protected mode state, ensuring the pipeline aligns with real mode operation. For the 80286 processor, the transition is more constrained due to hardware limitations. Although the Machine Status Word (MSW, equivalent to CR0) can be loaded using the LMSW instruction to clear the PE bit, direct MOV instructions to CR0 are not supported, and the processor does not fully revert to real mode semantics without a hardware reset. Instead, the Interrupt Descriptor Table (IDT) is reloaded as the Interrupt Vector Table (IVT) at physical address 0x0000 with a limit of 0x03FF using LIDT, followed by a far return to initiate the partial switch. However, segment registers retain protected mode descriptor interpretations, necessitating a reset—often induced by a triple fault—to achieve true real mode behavior, as the 80286 design prioritizes one-way entry into protected mode for compatibility. On 80386 and later processors, the procedure allows for a software-controlled reversion without reset. After clearing the PE bit in CR0 as described, segment registers (CS, DS, SS, ES, FS, GS) are reloaded with real mode values, typically setting selectors to 0xF000 for and 0x0000 for data segments, with implicit 64 KB limits. The is reinitialized as the IVT, and interrupts are re-enabled with STI once the environment is stable. Proper handling of the A20 address line is essential during this transition to prevent memory access conflicts, as real mode expects the A20 gate disabled by default. Mishandling any step, such as invalid setup or segment reloading, can trigger a double-fault exception, escalating to a that invokes a hardware reset via the signal, halting execution until .

Decline and Modern Usage

Factors Leading to Decline

The introduction of with the Intel in 1982 marked an early step toward surpassing real mode's limitations, enabling up to 16 MB of addressable memory and basic mechanisms. However, the 's implementation was hindered by its complex mode-switching requirements; transitioning to was straightforward, but returning to real mode necessitated a full , which complicated and discouraged widespread adoption for multitasking environments. This reluctance persisted until the Intel 80386 in 1985, which simplified by extending it to full 32-bit addressing (up to 4 ) and introducing , allowing real mode applications to run seamlessly within a protected environment without resets or extensive rewrites. These enhancements made far more practical for operating systems requiring robust and security, accelerating the shift away from real mode's segment-based 1 MB constraint. Operating system evolution further eroded real mode's dominance, as (released in 1993) and early kernels prioritized to support true multitasking, hardware-enforced security, and access to memory beyond 1 MB—capabilities impossible in real mode. For instance, Windows NT's 32-bit architecture leveraged for its file system and user isolation, while , designed from its 1991 inception for the 80386, utilized features like paging for efficient handling. Hardware advancements amplified this decline, with the Intel Pentium processor's 1993 debut introducing superscalar 32-bit execution that rendered real mode's 16-bit limitations and 1 MB address space obsolete for modern applications demanding high performance and large memory footprints.

Legacy Support in Contemporary Systems

In contemporary x86 systems, processors power on and initialize in real mode to maintain backward compatibility with legacy boot processes and software. This initial state allows the Basic Input/Output System (BIOS) or Unified Extensible Firmware Interface (UEFI) to execute 16-bit code during the early boot stages, handling essential hardware initialization before transitioning to protected or long mode. UEFI firmware, which dominates modern systems, may incorporate a Compatibility Support Module (CSM) to emulate real mode BIOS calls, although CSM is a deprecated feature as of the late 2020s, with Intel and AMD phasing it out on new platforms starting around 2020 for improved security such as Secure Boot compatibility. When present, CSM enables the execution of traditional 16-bit interrupts and option ROMs through mechanisms like EFI_LEGACY_BIOS_PROTOCOL.Int86() for interrupt handling and EFI_LEGACY_BIOS_PROTOCOL.FarCall86() for far calls to legacy code. This emulation supports booting older operating systems or peripherals that rely on real mode services, such as shadowing legacy option ROMs in the 0xC0000–0xFFFFF memory region. Virtualization platforms continue to rely on real mode emulation to support legacy guest operating systems. Hypervisors like and Oracle VM VirtualBox provide legacy BIOS options that simulate a real mode environment, allowing unmodified or early Windows guests to boot and run as they would on original hardware, including access to emulated 16-bit interrupts and direct memory addressing. Similarly, employs as its default PC BIOS implementation, which operates in real mode to emulate the 8086/8088 behavior for full-system , facilitating the execution of 16-bit bootloaders and applications in virtual machines. These emulations ensure compatibility for development, testing, and running historical software without hardware modifications. Certain drivers and utilities persist in real mode contexts for managing legacy hardware or in -based environments. For instance, , a introduced with 5.0, enables access to beyond the 1 MB limit via the Extended Memory Specification (XMS), and remains relevant in modern emulators or virtualized legacy setups to optimize memory usage for 16-bit applications. Some older peripherals, such as certain network interface cards or storage controllers, still require real mode drivers during boot or in sessions for initialization, as they depend on interrupts that are unavailable in without emulation. In the 64-bit era, (long mode) architectures mandate an initial entry point for , where the processor starts in 16-bit real mode before the switches to and then enables long mode paging. However, prolonged operation in real mode is discouraged due to penalties, including the absence of , limited addressing (up to 1 MB without extensions), and inefficient 16-bit instruction execution on modern superscalar pipelines designed for 64-bit workloads. This legacy requirement ensures compatibility but highlights the shift toward native 64-bit environments in contemporary systems.

References

  1. [1]
    Modes of Addressing Used by Intel® Processors
    When the processor starts booting the computer, it starts in real mode and operates like a 8086 processor. The processor can see up to 1 MB of RAM. The native ...
  2. [2]
    [PDF] The Intel x86 Family
    • "Real mode" derives its name from the fact the segment registers in this mode contain "real" addresses. • You can do address arithmetic with segment ...
  3. [3]
    x86 and PC architecture - PDOS-MIT
    x86 and PC architecture. Outline. PC architecture; x86 instruction set; gcc calling ... In real mode, seg:off means physical address = seg*16+off (20 bits).
  4. [4]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    Jan 2, 2012 · NOTE: The Intel® 64 and IA-32 Architectures Software Developer's Manual consists of nine volumes: Basic Architecture, Order Number 253665; ...
  5. [5]
    The Intel ® 8086 and the IBM PC
    Intel introduced the 8086 microprocessor in 1978. Completed in just 18 months, the 8086 was a game changer for several reasons: its design allowed for much more ...
  6. [6]
    [PDF] INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986
    Real-address mode (often called just "real mode") is the mode of the processor immediately after RESET. In real mode the 80386 appears to programmers as a ...
  7. [7]
    Why didn't the 8086 use linear addressing?
    Jul 8, 2018 · The 8086 used a segmented memory architecture where the linear address was computed from a 16-bit segment number and a 16-bit offset.The start of x86: Intel 8080 vs Intel 8086?Why doesn't the Intel 8086 CPU use real memory addresses?More results from retrocomputing.stackexchange.comMissing: rationale heritage
  8. [8]
    A Short History of CP/M-86 - by Bradford Morgan White
    May 13, 2024 · Concurrent DOS XM allowed for bank switched memory of up to 8 MB in real mode. Concurrent DOS 386 was released in 1987 and obviously required a ...
  9. [9]
    Gary Kildall and the 40th Anniversary of the Birth of the PC ...
    Feb 26, 2014 · According to Paterson “if there had been a CP/M for the 8086 microprocessor, 86-DOS would never have been developed.” “I used the 1976 CP/M ...
  10. [10]
    Microsoft MS-DOS early source code - Computer History Museum
    Mar 25, 2014 · Microsoft originally licensed 86-DOS in December 1980 for a flat fee of $25,000. ... From PC-DOS 1.0 to MS-DOS 2.0 and beyond. Version 1.0 ...
  11. [11]
    DESQview - IT History Society
    DESQview was a text mode multitasking program developed by Quarterdeck Office Systems which enjoyed modest popularity in the late 1980s and early 1990s.
  12. [12]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    NOTE: The Intel® 64 and IA-32 Architectures Software Developer's Manual consists of nine volumes: Basic Architecture, Order Number 253665; Instruction Set ...
  13. [13]
    [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 ...
  14. [14]
    A look back at memory models in 16-bit MS-DOS - The Old New Thing
    Jul 28, 2020 · MS-DOS had an additional memory model known as Tiny, in which the code and data were all combined into a single 64KB segment. This was the ...
  15. [15]
    MS-DOS Version 4.0 Programmer's Reference - PCjs Machines
    ... load an overlay, it must pass MS-DOS the segment address at which the overlay is to be loaded. The program must call the overlay, which then returns ...
  16. [16]
    [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 ...
  17. [17]
    The High Memory Area and the A20 Line - Yale FLINT Group
    When Intel created the 80286 processor, it supported both protected mode and real mode. When in real mode the 80286 was supposed to behave exactly the same as ...Missing: x86 mechanism methods<|control11|><|separator|>
  18. [18]
    The A20-Gate Fallout - The OS/2 Museum
    Apr 13, 2018 · To recap, the problem IBM solved was the fact that 1MB address wrap-around was an inherent feature of the Intel 8086/8088 CPU, but not the 80286 ...
  19. [19]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    ... Real-Address Mode IDT ... Real-Address Mode ...
  20. [20]
    [PDF] 8259A PROGRAMMABLE INTERRUPT CONTROLLER ... - PDOS-MIT
    The 8259A is designed to minimize the software and real time overhead in handling multi-level priority inter- rupts. It has several modes, permitting ...Missing: x86 | Show results with:x86<|control11|><|separator|>
  21. [21]
    Ralf Brown's Interrupt List - HTML Version - Computer Tyme
    This list contains every documented and undocumented interrupt call known. Ralf Brown is a Postdoctoral Fellow at Carnegie Mellon University 's Center for ...<|control11|><|separator|>
  22. [22]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    NOTE: The Intel® 64 and IA-32 Architectures Software Developer's Manual consists of ten volumes: Basic Architecture, Order Number 253665; Instruction Set ...
  23. [23]
    How to switch an 80286 from protected to real mode?
    Aug 6, 2019 · Switching from protected to real mode on an 80286 involves resetting the CPU using the keyboard controller, a chipset reset, or a triple fault.80286 can switch from real mode to protected mode - but why not ...How do you put a 286 in Protected Mode?More results from retrocomputing.stackexchange.com
  24. [24]
    80286 can switch from real mode to protected mode - but why not ...
    Apr 22, 2016 · I've read in a system programming book that you could switch your Intel 80286 CPU from the normal real mode to a more powerful protected mode.How does the 'real mode flat model' work?How to switch an 80286 from protected to real mode?More results from retrocomputing.stackexchange.com
  25. [25]
    A Brief History of CPUs: 31 Awesome Years of x86 - PC Gamer
    Apr 14, 2009 · Invented by Intel in 1978, the x86 architecture has evolved through the ages, not only getting faster, but increasingly flexible as more and more extensions ...
  26. [26]
    The Intel i386 turns 40 years old - Tom's Hardware
    Oct 19, 2025 · The 386's protected mode and paging features made it possible to build a real Unix-like system without writing elaborate workarounds.Missing: improvements | Show results with:improvements
  27. [27]
    Intel's 386 processor was a game changer - here's why ... - TechRadar
    Oct 16, 2025 · Intel changed the game in 1985 with the launch of its 386 CPU, ushering in the age of the 32-bit processor and paving the way for the lofty ...
  28. [28]
    Happy 20th birthday, Windows NT 3.1: Microsoft's server outrider
    Aug 1, 2013 · It was the first 32-bit version of Windows, and the first to have a secure file system (NTFS) or indeed any kind of security. The registry, ...
  29. [29]
    What 386-specific features did Linux use?
    Feb 24, 2023 · The Linux kernel emerged from Linus' exploration of 386 protected mode and task switching, so it's not all that surprising that it ended up ...Operating systems running programs in 286 16-bit protected modeWhat are the "virtual machines" that were running on 80386 and ...More results from retrocomputing.stackexchange.com
  30. [30]
    The Pentium: An Architectural History of the World's Most Famous ...
    Jul 11, 2004 · The architecture also proved extremely scalable, furnishing Intel with a good half-decade of desktop dominance and paving the way for x86 ...
  31. [31]
    Intel® 64 and IA-32 Architectures Software Developer Manuals
    Oct 29, 2025 · This document contains the following: Volume 1: Describes the architecture and programming environment of processors supporting IA-32 and Intel® ...
  32. [32]
    [PDF] Intel® Platform Innovation for UEFI - CSM Specification
    Sep 26, 2013 · This functionality along with the associated IBV Compatibility16 and. CompatibilitySmm code is called the Compatibility Support Module (CSM).
  33. [33]
    3 Configuring Virtual Machines - Oracle Help Center
    Analogous to a real PC's BIOS setting, Oracle VM VirtualBox can tell a guest OS to start from the virtual floppy, the virtual CD/DVD drive, the virtual hard ...
  34. [34]
    QEMU User Documentation
    Jun 17, 2006 · QEMU uses the PC BIOS from the Seabios project and the Plex86/Bochs LGPL VGA BIOS. QEMU uses YM3812 emulation by Tatsuyuki Satoh. QEMU uses GUS ...
  35. [35]
    HIMEM.SYS - BetaWiki
    Sep 4, 2025 · HIMEM.SYS (often simply referred to as HIMEM ) is a device driver file for MS-DOS and other DOS systems that enables them to use extended memory.