Enhanced Graphics Adapter
The Enhanced Graphics Adapter (EGA) is an IBM PC computer display standard introduced in 1984 as a successor to the Color Graphics Adapter (CGA), offering higher resolutions, greater color depth, and enhanced graphics features for both alphanumeric and bit-mapped displays on compatible monitors.[1][2] Developed alongside the IBM PC/AT, the EGA utilized a 64 KB base video RAM configuration organized into four 16 KB bit planes, expandable to 128 KB or 256 KB for additional display pages and functionality, enabling modes such as 640×350 pixels in 16 colors (selected from a programmable 64-color palette using RGBI signaling) and text displays at 720×350 pixels with an 80×25 character grid using a 9×14 pixel font.[1][3] It supported backward compatibility with CGA's modes 0 through 6, as well as Monochrome Display Adapter (MDA) text modes, through emulation via BIOS interrupts, while introducing advanced hardware components including a CRT controller for sync signals, a sequencer for memory access, dual graphics controllers for data translation, and an attribute controller for color output.[1][3] Notable features included a RAM-loadable character generator supporting up to 512 user-defined characters with expanded memory, light pen support, vertical retrace interrupts for synchronization, split-screen capabilities, and programmable palette registers for dynamic color adjustments.[1] The EGA connected via a 9-pin D-subminiature port and required specialized displays like the IBM 5154 Enhanced Color Display for optimal performance, delivering horizontal sync at 21.85 kHz and vertical refresh at 60 Hz in its native modes, a step up from CGA's 15.7 kHz.[3] It played a pivotal role in the evolution of PC graphics by bridging the gap between basic CGA limitations and later standards, fostering widespread cloning by third-party manufacturers—over two dozen by 1986—and enabling richer visual applications in business, gaming, and productivity software during the mid-1980s.[2] However, it was rendered obsolete by the introduction of the Video Graphics Array (VGA) in 1987 with the IBM PS/2 line, which offered even higher resolutions and full backward compatibility without requiring proprietary monitors.[3]History
Development
The development of the Enhanced Graphics Adapter (EGA) stemmed from IBM's recognition of the limitations in existing PC graphics standards during the early 1980s. The Color Graphics Adapter (CGA), introduced in 1981, was constrained to resolutions like 320×200 with only four colors, which proved inadequate for emerging business applications requiring sharper visuals and more vibrant displays, as well as the growing interest in graphical user interfaces (GUIs) that demanded better color depth and resolution. Similarly, the Monochrome Display Adapter (MDA) was limited to text-only output, failing to meet the needs of a market increasingly influenced by color-capable home computers such as the Commodore 64, which supported 16 colors. IBM aimed to address these shortcomings by creating a successor that enhanced graphical capabilities while preserving compatibility to protect the installed base of PC users.[4] The project was led by IBM's Entry Systems Division, based in Boca Raton, Florida, the same team responsible for the original IBM PC and its expansions. This division focused on modular add-on hardware to extend the PC's versatility without overhauling the core architecture. Conceptual work on EGA began in the early 1980s, with design efforts emphasizing integration with the existing 8086 and 8088 processor ecosystem, including the 8-bit ISA bus. Key goals included achieving a higher resolution of 640×350 pixels and support for 16 simultaneous colors from a 64-color palette, using a bit-mapped planar graphics approach with four memory planes for RGBI color encoding to enable more sophisticated rendering.[2] Engineering challenges centered on balancing performance gains with cost and backward compatibility. To maintain affordability for business users, IBM opted for a design using multiple large-scale integration (LSI) chips, memory controllers, and supporting logic rather than a single very-large-scale integration (VLSI) chip, which would have increased development expenses and complexity at the time. The resulting adapter required 64 KB of RAM (expandable to 256 KB), making the card physically large—over 13 inches long—and expensive, with the card alone retailing above $500 upon release. Compatibility with CGA and MDA displays was prioritized through emulated modes, allowing EGA systems to fall back to lower resolutions and color sets when connected to older monitors.[2][4] Initial prototypes demonstrated the adapter's potential through early tests showcasing 640×350 resolution in color modes, integrated with 8088-based systems to validate performance in real-world PC configurations. These demos highlighted improved pixel aspect ratios (1:1.37) for more proportional text and graphics, paving the way for software like early GUI prototypes. Testing focused on stability across monochrome and color direct-drive displays, ensuring seamless transitions between alphanumeric and all-points-addressable modes. This iterative process culminated in EGA's launch in 1984 alongside the IBM PC/AT, setting the stage for future evolutions like VGA.[2][4]Release
The Enhanced Graphics Adapter (EGA) was introduced by IBM in October 1984 as part of the company's expansion of its personal computer lineup, coinciding with the launch of the IBM PC/AT and offered as an optional graphics card for the system.[5] The adapter was designed to provide superior visual capabilities for business and professional applications on the new 16-bit platform, building on the foundational goals of improving display quality for IBM PCs.[2] Priced at $524 for the base model with 64 KB of video RAM, the EGA was positioned as a premium upgrade, with initial shipping to customers occurring in late 1984.[6] An optional memory expansion card, adding 192 KB for a total of 256 KB to support advanced modes, was available for an additional $199.[4] This configuration allowed compatibility with existing IBM PC and XT systems via a ROM upgrade, broadening its appeal beyond the PC/AT.[1] IBM supported the launch with comprehensive technical reference manuals that included detailed specifications on the adapter's hardware, programming interfaces, registers, and BIOS extensions for software integration.[7] Early driver software was also provided to enable BIOS-level support for the EGA's display modes on compatible operating systems like PC DOS 3.0.[8] Upon release, the EGA was lauded by industry observers for its substantial enhancements in resolution and color depth, marking a clear advancement over the Color Graphics Adapter (CGA) and enabling crisper text and more detailed graphics for productivity tasks.[2] However, it faced immediate criticism for its steep pricing, which made it inaccessible to many budget-conscious users, as well as its reliance on TTL (transistor-transistor logic) signaling that restricted it to digital monitors without native analog support.[4] These factors contributed to modest early adoption, though the standard quickly influenced third-party implementations, including EGA-compatible cards from manufacturers like Compaq.[9]Hardware Design
Core Components
The standard IBM Enhanced Graphics Adapter (EGA) utilizes a chipset composed of custom large-scale integration (LSI) modules implemented with TTL logic, including dedicated controllers for the cathode ray tube (CRT), sequencer, graphics operations, and attributes, along with a Motorola 6845-compatible CRT controller (CRTC) for timing and synchronization.[1] These components form the core of the adapter's video generation without relying on a single custom application-specific integrated circuit (ASIC), enabling flexible bit-mapped graphics processing across multiple planes.[3] The design emphasizes modular TTL-based circuitry to handle display control, memory access, and signal generation, distinguishing it from earlier adapters like the CGA. Video RAM on the EGA consists of 64 KB of dynamic RAM (DRAM), configured as four separate 16 KB bit planes to support four-bit color depth in standard operation, with the sequencer managing refresh cycles to prevent display flicker.[1] This configuration can be expanded to 256 KB via an optional daughterboard, providing additional memory pages for enhanced resolutions.[3] The supporting circuitry includes an attribute controller that interfaces memory data with output signals and a sequencer that coordinates read/write operations between the CPU and video memory, ensuring efficient data flow during rendering.[1] The EGA connects to RGB monitors via a 9-pin D-subminiature connector delivering TTL-level signals, with a built-in switch allowing compatibility with legacy CGA or MDA monitors by adjusting output characteristics.[1] It interfaces with the host system through an 8-bit ISA bus slot, drawing power from 5 V and 12 V rails supplied by the PC's power supply unit, with provisions for -12 V in certain signal lines.[3] Jumper settings on the card configure I/O port addressing, typically in the range of 3C0h to 3DFh, to avoid conflicts with other adapters.[1]Variants and Clones
IBM offered upgrades to its standard Enhanced Graphics Adapter (EGA) to expand its capabilities for more demanding applications. The base EGA card shipped with 64 KB of memory, supporting up to 16 simultaneous colors in 640×350 resolution, but an optional 256 KB memory expansion daughterboard allowed access to additional modes, including a 16-color 640×350 graphics mode (mode 0Fh or 10h) by enabling extended addressing via the Memory Mode Register.[10] This upgrade provided two full high-resolution color graphics pages, enhancing performance for graphics-intensive tasks without requiring a full card replacement.[10] IBM also offered the Professional Graphics Adapter (PGA), also known as the Professional Graphics Controller (PGC), as a separate high-end graphics product for computer-aided design (CAD) workflows, supporting 640×480 resolution with 256 colors from a 4096-color palette, 320 KB of dedicated video RAM, and an onboard Intel 8088 processor for vector graphics operations like 2D/3D transformations and palette management, while emulating basic CGA modes using an EGA-compatible 14-pixel font.[11] Third-party manufacturers quickly produced EGA-compatible clones to reduce costs and introduce enhancements, with the first appearing in late 1985 as the Video Seven VegaOne. Paradise Systems released the PEGA1A (AutoSwitch EGA 350), an early clone using the Chips & Technologies chipset.[12] STB introduced the EGA Plus, an 8-bit ISA card supporting multiple resolutions and including a parallel port for printer integration.[13] Tecmar's EGA Master and cards from PCs Limited offered similar feature sets at lower prices than IBM's originals.[13] Clones often differentiated themselves through added features beyond the standard EGA baseline. For instance, the STB EGA Plus incorporated faster RAM for improved refresh rates and VGA preview modes, allowing early testing of higher-resolution graphics without full VGA hardware.[10] Paradise clones, such as the AutoSwitch EGA, emphasized modular designs for easier integration with existing monochrome or color monitors.[13] These enhancements addressed limitations in the original EGA, such as memory constraints and display flexibility, though they varied by manufacturer. Despite broad compatibility goals, EGA clones faced challenges due to inconsistent BIOS implementations, leading to software glitches like mode-switching crashes or incorrect register states during CGA emulation.[10] Subtle differences in CRTC timing—such as repurposing index 2 for horizontal blanking start instead of sync position—could disrupt legacy CGA programs, requiring developers to use BIOS interrupts cautiously or implement presence tests.[10] IBM addressed reliability by publishing detailed BIOS ROM listings (part number 6280131) as a certification benchmark, enabling manufacturers to align their implementations more closely with the standard.[10] EGA technology saw adoption in PC clones from major vendors, integrating the standard into their systems for enhanced graphics support. Later Olivetti systems like the M290 supported EGA modes natively, while earlier M-series such as the M24 (rebranded as AT&T 6300) used proprietary graphics between CGA and EGA but allowed EGA add-on cards with modifications. Amstrad's PC1640 model bundled EGA cards, while the PC1512 used enhanced CGA emulation, making high-resolution graphics accessible in affordable European-market clones.Technical Specifications
Memory Architecture
The Enhanced Graphics Adapter (EGA) features a base configuration of 64 KB of video memory, organized as four bit planes, each consisting of 16 KB, to support bit-planar color representation.[1] This planar structure allows each plane to store one bit of color information per pixel, enabling up to 16 colors (2^4 combinations) by combining bits across the four planes at corresponding addresses.[10] Memory expansion options increase the total capacity to 256 KB by adding banks to each plane, resulting in four 64 KB planes, which is necessary for higher-resolution modes.[1] In the planar memory model, pixels are defined by their bits distributed across the planes rather than packed into bytes within a single plane, with the Graphics Controller (GDC) responsible for serializing this data for display output.[10] To optimize access, the memory employs interleaving for even and odd scanlines, where even scanlines are stored in one set of addresses and odd scanlines in another, facilitating sequential CRT retrieval without excessive jumping.[1] CPU access to the video memory occurs through memory-mapped I/O starting at segment A0000h, controlled by read and write modes in the Graphics Controller registers, such as Mode 0 for plane-specific writes using the Map Mask Register.[10] The Sequencer coordinates these accesses, allocating cycles between the CPU and GDC to avoid conflicts, typically granting the CPU one cycle out of every five during high-resolution scans.[10] Bank switching enables navigation through expanded memory beyond the base 64 KB, segmenting the address space into 16 KB blocks per plane via the Memory Mode Register and Sequencer controls, allowing software to select active banks for writing or reading.[10] With the base 64 KB configuration, the EGA supports resolutions such as 640×200 in 16 colors, which requires approximately 64 KB total (16 KB per plane), or 640×350 in 2 colors using just one plane (about 28 KB).[1] The full 256 KB expansion is required for 640×350 in 16 colors, demanding around 112 KB (28 KB per plane), as the base memory alone cannot accommodate the additional scanlines without overflow.[10] The EGA lacks built-in parity checking or advanced error correction in its video memory, relying instead on basic diagnostic tests during initialization, such as read/write verification that triggers audible signals for detected faults.[1] Font storage for text modes is handled separately, often drawing from system RAM or onboard ROM rather than the primary video planes, to conserve the limited video memory for display data.[10]Addressing and Mapping
The Enhanced Graphics Adapter (EGA) communicates with the CPU via dedicated I/O ports and memory address spaces to manage display operations. In color configurations, the primary I/O ports span 3D0h to 3DBh, encompassing the Cathode Ray Tube Controller (CRTC) address and data ports at 3D4h and 3D5h, the feature control register at 3DAh, and other control registers.[1] For monochrome emulation, these shift to 3B0h to 3BBh, with the CRTC ports at 3B4h and 3B5h and the feature control at 3BAh.[10] The sequencer, responsible for mode setting and memory plane selection, uses fixed ports at 3C4h (address) and 3C5h (data) regardless of display type.[10] Video memory mapping in color modes allocates the range A0000h to AFFFFh for the 64 KB of RAM, divided into four 16 KB bit planes for graphics operations.[1] CPU access to these planes occurs through indexed registers in the graphics controller, where the write mode register (index 5 at port 3CFh) and map mask register (index 2 at port 3C5h) determine which planes receive data during read or write cycles.[10] This indexed approach enables selective plane manipulation without direct addressing of each plane individually. Key register sets facilitate precise control over addressing and display functions. The CRTC registers, programmed via 3D4h/3D5h (color) or 3B4h/3B5h (monochrome), define timing parameters including horizontal total (index 0), vertical total (index 6), and start address (indices 12-13) for screen positioning.[1] The attribute controller, accessed at 3C0h, configures palette selection, overscan (border) color (index 11), and pixel panning (index 33).[10] The graphics controller registers at 3CEh/3CFh support bit operations, such as enabling set/reset for plane filling (index 1) and applying bit masks for partial writes (index 8).[10] Switching between monochrome and color base addresses occurs via bit 0 of the miscellaneous output register at 3C2h, which toggles the CRTC ports between 3Bx h and 3Dx h without hardware jumpers on the standard IBM implementation.[10] Mode initialization typically relies on BIOS interrupt 10h function 00h, which programs the sequencer, CRTC, and other registers to establish the desired addressing scheme and enable video output.[10] To ensure backward compatibility, EGA mappings overlap with prior adapters: color text modes use B8000h (32 KB), aligning with the Color Graphics Adapter (CGA), while monochrome text employs B0000h, matching the Monochrome Display Adapter (MDA).[1] This shared addressing allows seamless transition in BIOS-supported environments.[10]Display Capabilities
Operating Modes
The Enhanced Graphics Adapter (EGA) supports a range of text and graphics operating modes, providing compatibility with prior standards while introducing higher resolutions and color options. Text modes are designed for character-based displays, utilizing a programmable character generator, while graphics modes enable bit-mapped pixel rendering across multiple memory planes. These modes are selected via BIOS interrupt 10h calls, with specific parameters controlled by the CRT Controller (CRTC) registers for timings and display characteristics.[1]Text Modes
EGA text modes include standard low-resolution formats for compatibility and higher-resolution options for enhanced clarity. The 40-column by 25-row mode supports 16 colors with an 8x8 or 8x14 character matrix, rendering at an underlying resolution of 320x200 or 320x350 pixels depending on the matrix selected. The 80-column by 25-row mode similarly offers 16 colors from a 64-color palette in enhanced configurations, using an 8x8 or 8x14 matrix for 640x200 or 640x350 pixel resolutions, while a monochrome variant provides 80x25 with 4 intensity levels and a 9x14 matrix at 720x350 pixels. Additionally, a high-resolution 80x43 text mode is available, employing an 8x8 or 8x14 character matrix on the 350-line scan for denser text display. These modes support up to 8 display pages, depending on installed memory.[1][10]| Mode Number (BIOS INT 10h) | Columns x Rows | Colors | Character Matrix | Pixel Resolution | Notes |
|---|---|---|---|---|---|
| 00h | 40 x 25 | 16 | 8 x 8 | 320 x 200 | Compatible with CGA |
| 01h | 40 x 25 | 16/64 | 8 x 14 | 320 x 350 | Enhanced color display |
| 02h | 80 x 25 | 16 | 8 x 8 | 640 x 200 | Compatible with CGA |
| 03h | 80 x 25 | 16/64 | 8 x 14 | 640 x 350 | Enhanced color display |
| 07h | 80 x 25 | 4 (mono) | 9 x 14 | 720 x 350 | Monochrome display |
| (CRTC-configured) | 80 x 43 | 16/64 | 8 x 8 or 8 x 14 | 640 x 350 | High-res text via register adjustments |
Graphics Modes
Graphics modes in EGA utilize a four-plane memory architecture for color rendering, with resolutions tailored for both compatibility and advanced applications. The 320x200 mode supports 16 colors at 4 bits per pixel, requiring at least 64 KB of memory for dual pages (expandable to 8 pages with 256 KB). The 640x200 mode provides 16 colors at 4 bits per pixel or 2 colors in monochrome, with page counts varying by memory size. Higher-resolution 640x350 modes offer 16 colors (from 64 via palette) at 4 bits per pixel, necessitating 128 KB for full 16-color support with one page (or 256 KB for two pages), alongside monochrome variants at 2 or 4 colors. These modes are accessed through specific BIOS calls and rely on TTL signaling for color monitors. In low-memory configurations (64 KB), color depth may be limited to 4 colors in some 350-line modes.[1][10]| Mode Number (BIOS INT 10h) | Resolution | Colors | Bits per Pixel | Pages (Memory-Dependent) | Notes |
|---|---|---|---|---|---|
| 04h/05h | 320 x 200 | 4 | 2 | 1 (64 KB) | CGA-compatible |
| 0Dh | 320 x 200 | 16 | 4 | 2/4/8 (64/128/256 KB) | Standard color |
| 06h | 640 x 200 | 2 (mono) | 1 | 1 (64 KB) | Monochrome |
| 0Eh | 640 x 200 | 16 | 4 | 1/2/4 (64/128/256 KB) | Standard color |
| 0Fh | 640 x 350 | 2 (mono) | 1 | 1/2 (64/128 KB) | Monochrome variant |
| 10h | 640 x 350 | 16 | 4 | 1/2 (128/256 KB) | 4 colors with 64 KB; 16 colors requires 128 KB |