Fact-checked by Grok 2 weeks ago

Color Graphics Adapter

The Color Graphics Adapter (CGA), introduced by in August 1981 as an optional for the original (model 5150), was the first color display standard for the platform, enabling both alphanumeric text and basic pixel-based graphics in color or . It represented a significant advancement over the contemporaneous Monochrome Display and Printer Adapter (MDA) by supporting vivid color output on compatible monitors or televisions, thus broadening the PC's appeal for business, gaming, and educational applications during the early personal computing era. The CGA card utilized a (CRT) controller chip, 16 KB of dual-ported video memory mapped to address B8000h, and an 8 KB ROM character generator supporting 256 characters in 8x8 pixel matrices, allowing for flexible display configurations. It offered four primary text modes—40×25 or 80×25 characters in either black-and-white or color (with 16 foreground and 8 background colors and blinking attributes; underline and reverse video effects were typically implemented in software)—and graphics modes including 320×200 pixels with 4 colors selected from a palette of 16 (with palette variants that could appear monochrome on certain outputs) and 640×200 pixels with 2 colors. These modes operated at a non-interlaced 60 Hz with a video of up to 14 MHz, and the adapter's 16 KB memory could store up to eight 40×25 text screens or four 80×25 screens, facilitating smooth switching between displays. Physically, the CGA installed in one of the IBM PC's five expansion slots and featured multiple output options, including a 9-pin (DE-9) connector for direct RGBI (, , , Intensity) drive to color monitors, a phono jack for output, and an auxiliary for an optional to connect to standard televisions, along with a interface. Programming access was provided via I/O ports 3D0h–3DFh (or 3B0h–3BFh in emulation), interrupt level IRQ2, and BIOS routines starting at offset F000:FE6Eh, with user-definable character sets extendable through interrupt 1Fh. Despite its limitations—such as the restricted color palette and low resolution, which later prompted successors like the (EGA) in 1984—the CGA established foundational video standards for IBM-compatible PCs, influencing software development and hardware compatibility for over a decade.

History and Development

Release and Context

The Color Graphics Adapter (CGA) was introduced by in 1981 as an optional for the newly launched IBM Personal Computer (model 5150), marking the company's first foray into color graphics for personal computing. Priced at $300, the CGA was designed to plug into one of the PC's expansion slots, providing users with an affordable upgrade path from displays to support color output for both text and basic graphics applications. This release coincided directly with the IBM PC's debut on August 12, 1981, positioning the system as a versatile platform for business and emerging home computing needs. In the early personal computer market of the late 1970s and early 1980s, the IBM PC and its CGA option entered a landscape dominated by systems like the Apple II, which had offered color graphics since its 1977 launch and appealed strongly to hobbyists, educators, and gamers through vibrant visuals in software such as games and educational tools. IBM aimed to bridge the gap between professional business computing—previously limited to text-only monochrome displays like the Monochrome Display Adapter (MDA)—and the colorful, interactive experiences that drove consumer adoption in the home market. The CGA's inclusion addressed this by enabling color for text modes and simple graphics, facilitating applications in data visualization for business users while opening doors for entertainment software that could leverage limited color palettes. Key to the CGA's functionality was its reliance on the cathode-ray tube controller for timing and display synchronization, allowing the IBM PC to output to compatible color monitors and thus expand its appeal beyond corporate environments. This strategic release helped the IBM PC gain traction in a competitive , eventually standardizing color as an essential feature in the evolving PC ecosystem.

Design Objectives

The IBM Color/Graphics Monitor Adapter (CGA) was engineered primarily to introduce affordable color display capabilities to the family, extending beyond the limitations of prior systems while targeting business environments that benefited from enhanced visual differentiation in text-based applications. This design emphasized cost-effectiveness for professional users, enabling features like color attributes to improve readability and data organization in , alongside basic support for emerging applications to broaden the PC's appeal. A key compromise in the CGA's development was restricting the maximum resolution to 640×200 pixels, which allowed the adapter to repurpose existing television broadcasting standards such as and PAL, thereby minimizing hardware complexity and production costs compared to more advanced, higher-resolution systems of the era. This approach not only reduced expenses but also facilitated compatibility with readily available consumer display equipment, making color graphics accessible without requiring specialized, expensive monitors. The CGA's objectives were heavily influenced by IBM's established monochrome heritage, particularly the , with the goal of ensuring seamless for text modes to support legacy and ease the transition for users accustomed to high-contrast monochrome displays. By building directly on the foundation, the design maintained essential text functionality while layering in color support via interfaces like RGBI, striking a balance between innovation and reliability in early personal computing ecosystems.

Hardware Design

Technical Architecture

The Color Graphics Adapter (CGA) relies on a Motorola 6845 CRT controller as its primary video address generator, which handles raster scan operations, video timing signals, memory addressing, display refresh, cursor positioning, and synchronization with the display device. This chip interfaces with 16 KB of dual-ported dynamic random-access memory (DRAM) for video storage, accessible by the CPU starting at address B8000h, enabling simultaneous access by the processor and the display circuitry to store and retrieve pixel, character, font, and attribute data. Complementary TTL logic circuits form the composite color generator, which processes memory contents to produce baseband video color signals, ensuring efficient generation of analog output from digital data. The CGA's 16 KB is organized into segmented pages to support distinct data types: dedicated regions for character attributes, a fixed ROM-based font providing 256 patterns, and allocatable areas for pixel bitmaps or additional attribute storage. This mapping allows for a 16 KB regeneration on the color card, with the 6845 controller dynamically addressing memory during scan lines to fetch and assemble display elements without interrupting CPU operations. The dual-port design resolves contention between CPU writes and video readout through prioritized arbitration logic, maintaining stable refresh rates. Clocking is derived from a 14.31818 MHz master oscillator, which is divided to generate key timing signals: division by 3 yields the 4.77 MHz processor clock, while division by 4 produces the 3.58 MHz color burst subcarrier for compatibility. For pixel-level timing, the clock is further divided to support bandwidths such as 7 MHz, 14 MHz in operations, with the 6845 using these to control horizontal and vertical scan rates via programmable registers. This hierarchical clock distribution ensures precise synchronization across the TTL-based timing generator, , and color encoder, forming the operational backbone of the adapter's display pipeline.

Connector Specifications

The Color Graphics Adapter (CGA) utilized a DE-9 (also known as DB-9) connector for its primary RGBI video output, providing a digital interface compatible with dedicated color monitors such as the 5153. This 9-pin female connector on the card carried TTL-level signals for red, green, blue, intensity, horizontal sync, vertical sync, and grounds, enabling direct-drive display of the CGA's 16-color palette without external . The pin assignments for the DE-9 connector are as follows:
PinSignalDescription
1GNDGround
2GNDGround
3RRed ()
4GGreen ()
5BBlue ()
6IIntensity ()
7RESReserved
8HSYNCHorizontal Sync ()
9VSYNCVertical Sync ()
These assignments allowed for precise transmission of color and synchronization data at TTL logic levels, typically ranging from 0 V (low) to 5 V (high), with low states defined as 0–0.8 V and high states as 2–5 V. In addition to the DE-9, the CGA featured an phono jack for output, designed for compatibility with televisions or composite monitors. This analog output encoded the four-bit RGBI color information into a modulated signal, where was derived from the combined intensity of the color bits and was phase-modulated based on the specific color values, producing artifact colors on composite displays. The RGBI signals on the DE-9 operated at TTL-compatible digital levels of approximately 5 V peak-to-peak, while the composite output adhered to standard specifications at 1 V peak-to-peak, ensuring with consumer television equipment.

Display Capabilities

Output Interfaces

The Color Graphics Adapter (CGA) features two primary output interfaces designed to accommodate both dedicated computer monitors and consumer television sets, enabling versatile display options for early systems. The RGBI digital interface provides a high-fidelity signal optimized for color monitors, while the composite video interface offers compatibility with standard televisions and composite monitors through an . These interfaces allow the CGA to support a range of text and graphics modes, with color reproduction varying based on the connected display type. The RGBI digital interface utilizes a 9-pin D-shell connector to deliver TTL-level signals for , , , and (RGBI), supporting a 4-bit that enables up to 16 discrete colors from a predefined palette. This interface is intended for direct connection to compatible color monitors, such as the 5153 Color Display, where it produces sharp, artifact-free imagery in modes like 320×200 pixels with four colors or 640×200 pixels in . The digital nature of the RGBI output ensures precise color and resolution without the signal degradation common in analog connections, making it suitable for professional and technical applications requiring accurate visual representation. In contrast, the composite video interface employs a standard female phono jack to output a compatible with televisions or composite monitors, facilitating broader consumer accessibility by allowing connection to home entertainment devices often requiring an for channel tuning. This interface supports the same display modes as RGBI but encodes color information in a manner that can introduce visual artifacts and reduced color fidelity due to the limitations of composite . While capable of displaying color in text and low-to-medium modes, the composite output prioritizes over precision, resulting in softer imagery and potential color bleeding compared to the digital alternative. The CGA card supports simultaneous output to both the RGBI and composite from a single adapter, allowing users to connect multiple displays concurrently for demonstration or multi-viewing purposes. However, this dual-output capability shares the card's processing and resources, imposing limitations such as synchronized signal generation and no independent mode selection per , which can constrain performance in demanding scenarios. This feature enhances the adapter's flexibility in mixed environments, such as educational or small office settings where both high-quality viewing and projection are desired.

Color Palette Basics

The Color Graphics Adapter (CGA) employs a 4-bit color indexing system that supports 16 distinct colors, numbered from 0 to 15, derived from combinations of , , , and components. These colors are fixed and predefined, allowing selection through attributes in text modes or values in graphics modes. The palette includes:
IndexColor NameRGBI Bits (I R G B)
0Black0000
10001
20010
30011
4Red0100
50101
6Brown0110
7Light Gray0111
8Dark Gray1000
9Bright Blue1001
10Bright Green1010
11Bright Cyan1011
121100
13Bright Magenta1101
141110
15White1111
This indexing follows a binary progression where lower indices (0-7) represent base colors without intensity, and higher indices (8-15) incorporate intensity for brighter variants. The colors are encoded using RGBI format, with four bits directly mapping to intensity (I, bit 3), red (R, bit 2), green (G, bit 1), and blue (B, bit 0). On digital RGB monitors, such as the IBM 5153 Color Display, this encoding produces precise, discrete colors by driving separate TTL-level signals for R, G, B, and I, ensuring the full 16-color palette is rendered accurately without overlap or degradation. The intensity bit effectively boosts the RGB components, creating the distinction between base hues like brown (index 6) and its intensified counterpart, yellow (index 14). In , when connected via output—such as to -compatible televisions or monitors—the palette experiences degradation due to signal . The RGBI signals are combined into a single composite stream, which can result in color bleeding, reduced , or failure to distinguish levels on some displays, limiting the effective palette to fewer distinguishable hues compared to the standard 16 on RGBI outputs. This variation arises from the encoding process, where and are intertwined, potentially altering perceived colors like rendering as a darker . In text modes, these palette colors are applied via character attributes for foreground and background rendering.

Text Modes

40 × 25 Character Mode

The 40 × 25 character mode of the Color Graphics Adapter (CGA) supports a text-based consisting of 40 columns and 25 rows of characters, with each character occupying an 8 × 8 to yield an effective resolution of 320 × 200. This configuration draws from a built-in 8 × 8 character generator containing 256 alphanumeric and graphic symbols, where the font is typically rendered in a 7 × 7 double-dotted pattern within the cell for improved visibility on low-resolution . It corresponds to modes 0 (color) and 1 (). This mode requires 2 KB of video RAM from the CGA's 16 KB total, allocated as 1,000 bytes for character codes and 1,000 bytes for associated color attributes, enabling efficient storage for the full screen buffer at base memory address B8000h. The display timing is managed by the onboard Motorola MC6845 CRT controller, which uses a 14.318 MHz master oscillator divided to produce a 7.159 MHz pixel clock specifically for low-resolution operations like this mode, resulting in a non-interlaced vertical refresh rate of approximately 60 Hz. Horizontal timing accommodates 40 characters plus border, with the character clock effectively at about 0.895 MHz to support the reduced density compared to higher-column modes. A low-resolution text mode available on IBM PC systems, selectable via BIOS INT 10h function 00h with AL=00h for color or AL=01h for black-and-white; the power-on default is 40×25 black-and-white even on CGA. It provides clear readability on CGA-compatible RGB monitors or, via the composite video output, on standard home television sets where its lower horizontal bandwidth demands ensured better synchronization and compatibility without the color bleeding issues seen in denser layouts. Color application in this mode relies on per-character attributes for foreground and background selection from a 16-color palette, with optional blinking, though detailed attribute handling is mode-agnostic across text resolutions.

80 × 25 Character Mode

The 80 × 25 character mode of the Color Graphics Adapter (CGA) provides a text of 80 columns by 25 rows, corresponding to a pixel of 640 × 200. Each character occupies an 8 × 8 cell, with the typically rendered in a 7 × 7 pattern and one scanline reserved for in lowercase letters. This mode utilizes 4 KB of video RAM per display page (calculated as 80 columns × 25 rows × 2 bytes per character, where one byte holds the ASCII code and the other the attribute byte), with the CGA's total 16 KB supporting up to four such pages (4 KB each), accessible starting at memory address B800:0000h. It corresponds to modes 2 (color) and 3 (). The display operates at a 60 Hz vertical in non-interlaced fashion, with a horizontal scan frequency of approximately 15.75 kHz, enabling compatibility with monitors and RGB displays. Horizontal timing is finer than in lower-density modes, with the Motorola MC6845 controller (CRTC) programmed to generate 16 character clock cycles per column (eight visible pixels plus blanking intervals), supporting the denser 640-pixel width without exceeding standard television signal constraints. As the primary text mode for professional and productivity applications on early PCs, the 80 × 25 configuration served as the default for command-line interfaces, setup screens, and software such as word processors and spreadsheets, offering sufficient density for tabular data and code editing while integrating with the shared 16-color attribute system for foreground/background and blinking effects. This emphasis on high-density text distinguished it from coarser modes suited to television viewing, prioritizing on dedicated monitors for business use.

Text Mode Color Attributes

In CGA text modes, each screen character is defined by a pair of bytes in video memory: the first byte specifies the character code from the 256-entry ROM font, while the second byte is the attribute byte that determines the visual styling of that character. The attribute byte consists of 8 bits with the following structure:
BitFunctionDescription
7Blink/Background IntensityWhen the blink enable bit (bit 5) in the CGA mode control register is set (standard for text modes), bit 7 enables blinking for the character; otherwise, it sets background intensity for brighter backgrounds.
6Background RedSets the red component of the background color (1 = red enabled).
5Background GreenSets the green component of the background color (1 = green enabled).
4Background BlueSets the blue component of the background color (1 = blue enabled).
3Foreground IntensityEnables high-intensity (bright) mode for the foreground color (1 = bright).
2Foreground RedSets the red component of the foreground color (1 = red enabled).
1Foreground GreenSets the green component of the foreground color (1 = green enabled).
0Foreground BlueSets the blue component of the foreground color (1 = blue enabled).
This bit layout supports 16 foreground colors—combining the 3 RGB bits with the bit for 8 standard and 8 bright shades—and 8 background colors, limited by the absence of a dedicated bit for backgrounds in standard configurations. Rendering occurs by combining the glyph with the attributes: the retrieves an 8×8 pixel pattern from the generator using the code, then fills the 'on' (lit) pixels with the selected foreground color and the 'off' pixels with the background color, producing a uniform color block per 8×8 on the display. In practice, the default font uses a 7×7 double-dot pattern for thicker characters, and colors map to the CGA's base palette, where bright variants (e.g., black+ appears as dark gray) enhance visibility on composite monitors. Key effects include high-intensity foreground, which bit 3 activates to render bolder, brighter text by selecting the upper 8 palette entries, improving contrast without altering the base RGB mix. , controlled by bit 7 in blink-enabled modes, causes the affected character to periodically invert or alternate visibility—typically at a 2 Hz rate—allowing per-character emphasis, though it affects the entire screen's refresh if multiple characters blink. Limitations of the attribute system include the lack of hardware support for effects like underlining, which must be emulated via software using specific characters from the extended set or manipulation; the also restricts backgrounds to non-bright colors in standard text modes to prioritize functionality.

Graphics Modes

320 × 200 Mode

The 320 × 200 mode of the Color Graphics Adapter (CGA) provides a medium-resolution option capable of displaying four colors simultaneously across a 320--wide by 200--high area. This mode operates at a 2-bit per , allowing each to select from one of four possible color indices (00, 01, 10, or 11 in ), with data packed four per byte in video . The mode utilizes 16 KB of dedicated video , organized into two separate 8 KB banks to support non-interlaced scanning: even-numbered scanlines (rows 0, 2, ..., 198) are mapped to addresses B8000h through B9FFFh, while odd-numbered scanlines (rows 1, 3, ..., 199) occupy BA000h through BBFFFh. This banking arrangement enables software to independent content for even and odd lines within the same , which some applications exploited for visual effects like line alternation in color patterns, particularly when combined with output. Each 80-byte row spans the full 320-pixel width, with the mode running at a 14 MHz clock for compatibility with color monitors or televisions. Color selection in this mode draws from a fixed palette of possible colors (combinations of , , , and bits), but only four are active at once: a programmable background color (selected from the full via port 3D9h bits 0-3) plus three foreground colors determined by a software-selectable palette controlled via port 3D9h bit 5. The default palette (palette 1) maps the foreground indices to (01), (10), and brown/yellow (11), while the alternate palette (palette 2, often used as default in practice) assigns (01), (10), and (11), with typically serving as the background for . This limited but vibrant scheme prioritized colorful imagery over detail, making it suitable for early graphical applications. This mode gained prominence in early PC gaming and software, where its balance of resolution and color supported simple animations and scenes without overwhelming the era's hardware constraints. For instance, Sierra On-Line's (1984) employed the 320 × 200 mode for its adventure game visuals on standard CGA RGB displays, rendering environments and characters in the four-color palette, though composite setups often enhanced perceived colors through artifacting.

640 × 200 Pixel Mode

The 640 × 200 mode of the Color Graphics Adapter (CGA) provides a high-resolution graphics option, featuring a of 640 pixels horizontally by 200 pixels vertically. This mode operates at a of 1 bit per pixel, supporting only two colors—typically —for a total of 16 KB of dedicated video on the adapter. Rendering in this mode uses direct pixel mapping, where each bit in the video corresponds to an individual on the screen, allowing for precise control without blocky artifacts. The is organized as a with bytes per scanline (since pixels divided by 8 bits per byte equals ), divided into two 8 KB banks for even and odd scanlines starting at B8000h, enabling efficient access for vector-based drawing and fine details akin to text rendering. This mode was particularly suited for applications requiring sharp, detailed monochrome output, such as business charts for data visualization, early (CAD) precursors for technical drawings, and certain games that prioritized and clarity over color variety. Intensity variations could be achieved through the palette register (port 03D9h), allowing adjustments to the foreground color brightness while maintaining the monochrome nature of the .

160 × 100 Extended Mode

The 160 × 100 extended mode is an undocumented graphics capability of the (CGA) that provides a resolution of 160 pixels horizontally by 100 pixels vertically, supporting all 16 colors from the CGA palette. This undocumented mode is a hack of the 80-column color (BIOS mode 3), where the 6845 CRTC is programmed for 2 scanlines per character row to produce 100 rows from the 200 visible scanlines. A fixed character pattern like 0xDE is used in video memory to split each 8-pixel-wide cell into left (background color) and right (foreground color) sections, enabling two independent 4-bit color selections (16 colors each) per cell for 160 pixels per row. Implementation requires direct programming of the 6845 CRTC registers to set 2 scanlines per character row, resulting in 100 effective rows from the 200 total visible scanlines, while operating in an 80-column configuration. In video , character bytes are uniformly set to a splitting pattern such as ASCII 0xDE, which divides each 8-pixel-wide into a left section (colored by the attribute's high as ) and a right section (colored by the low as foreground), producing two independent 4-bit color pixels per and thus 160 pixels per row. must be disabled in the CGA mode register to allocate the full attribute byte to color encoding, and careful synchronization is needed to avoid "snow" artifacts from contention during active display. Terminate-and-stay-resident (TSR) programs can assist in transitions or palette , though most implementations embed the register writes in application . Due to its lack of official BIOS support, programming complexity, and incompatibility with some CGA clones or later adapters, the mode saw limited adoption in commercial software and was chiefly employed in technical demonstrations, homebrew developments, and select early titles like Moon Bugs (1983) and (1983) for arcade-style gameplay, where the expanded color options justified the coarser resolution.

Advanced Features and Tweaks

Composite Artifacting

Composite artifacting on the Color Graphics Adapter (CGA) refers to the generation of additional colors through unintended interactions in the composite video signal, allowing for visual effects not possible with the native RGBI output. This phenomenon occurs when high-frequency patterns in the video signal are misinterpreted by a television or composite monitor's as color information, effectively extending the limited palette of CGA's modes. The was not a designed feature but an exploitable side effect of the hardware's signal encoding, particularly useful for enhancing the visual appeal of games and applications on consumer TVs. The mechanism relies on the relationship between the CGA's pixel clock rate of approximately 14.318 MHz and the color subcarrier of 3.579545 MHz, resulting in exactly four s per chroma cycle. In or low-color modes, such as the 640 × 200 mode (1 bit per ), sequences of four consecutive s produce distinct waveforms that align with multiples of the subcarrier . These waveforms modulate the and relative to the color burst reference signal, which the filters and interprets as hues with varying and brightness; for instance, low- patterns yield primary-like colors, while higher harmonics are typically attenuated by 1980s-era s. This enables up to 16 distinct artifact colors from the 16 possible 4-bit patterns (2^4), far exceeding the standard 4-color limit of 2-bit-per- modes like 320 × 200 without such dithering. Specific bit sequences exploit shifts to generate targeted colors; for example, the alternating pattern 1010 (on-off-on-off) in creates a waveform that shifts the to produce an hue, while 1100 might yield a reddish tone. In 2-bit , such as the 320 × 200 with its cyan//white/black palette, coarser 2--per-cycle patterns inherently produce four artifact colors (e.g., and approximations), but finer dithering overlays can simulate the full 16 hues by combining levels. These effects depend on the monitor's low-pass filtering, which blends adjacent pixels, and are most effective at typical viewing distances where individual pixels are not resolvable. Artifacting is exclusive to composite outputs, as the digital RGBI interface bypasses encoding and displays only the intended luminance patterns as without color interpretation. This limitation made it a niche technique, primarily leveraged in software for regions, but it significantly improved the vibrancy of CGA visuals on affordable televisions compared to the stark RGB monitor output.

Dual-Head Configurations

The Color Graphics Adapter (CGA) supported dual-head configurations through pairing with a or MDA-compatible card, enabling simultaneous output to two independent monitors on the PC platform. This setup provided an early capability, leveraging the distinct hardware characteristics of each adapter for complementary functions. Installation involved placing both 8-bit cards in separate expansion slots, with the MDA assigned video memory at segment B000h and I/O ports 3B0h–3BBh for high-resolution monochrome text, and the CGA using segment B800h and ports 3D0h–3DFh for color text and graphics modes. DIP switches configured the primary display—typically the MDA—to ensure initialization targeted the correct card, avoiding signal conflicts that could damage the color monitor. Software then activated the secondary display via commands like CO80 for CGA or equivalent for MDA, allowing independent operation. The cards ran with independent scan timings derived from the system's 14.318 MHz clock, eliminating the need for hardware synchronization but introducing challenges during mode switches, such as vertical blanking mismatches that could cause or require manual intervention. Terminate-and-stay-resident (TSR) programs or custom calls often handled these transitions, enabling seamless content management across displays. Such configurations enhanced productivity by separating text-heavy interfaces from graphical content, as seen in applications like , which displayed spreadsheets on the while rendering charts on the CGA, and Turbo , which split code editing and execution views between monitors. This approach predated integrated support in later systems, offering a practical solution for tasks involving concurrent text and visual data manipulation.

Limitations and Issues

Known Bugs and Errata

The Color Graphics Adapter (CGA) exhibits several documented hardware quirks and artifacts, primarily stemming from its shared memory architecture and video timing constraints. One prominent issue is the "snow" effect, which occurs when the CPU directly accesses video RAM during active screen display in 80-column text mode. This unbuffered memory contention causes temporary visual noise or "snow" on the screen, as the display controller misses pixels while the CPU and video hardware compete for the same bus. The effect is exacerbated in high-resolution text modes due to the lack of dual-ported RAM, a design choice to reduce costs, and it can be mitigated by writing to video memory only during vertical blanking intervals. Although this artifact impacts performance in real-time updates, later adapters like the EGA addressed it through buffering. Another notable limitation involves the screen color in certain modes. In 80-column on composite outputs, the CGA fails to generate a proper color by default, resulting in output unless the color register is explicitly set to a non-black value, such as (color 6). This quirk arises from truncated color burst signals in the hardware, preventing decoding on televisions without the border write to inject the necessary signal. The issue does not affect RGB monitors but was a common in software for composite users, highlighting the adapter's optimization for outputs over broadcast standards. CGA implementations also vary by revision, with early cards (pre-1983, often called "old CGA") differing from later ones ("new CGA") in color generation circuitry and component choices. Early revisions used the MC6845 CRTC chip and relied on phase-based for direct colors, producing higher but unbalanced levels across the palette. These differences could cause issues in software assuming uniform behavior, with early cards showing visual inconsistencies in advanced tweaks like 1024-color modes. Post-1983 revisions incorporated the HD6845 CRTC and weighted RGBI signal mixing, yielding more balanced colors and 16 levels in modes, though this altered artifacting effects in composite output.

Performance Constraints

The Color Graphics Adapter (CGA) was constrained by its 16 KB of video , which served as the sole display buffer and limited the system's ability to handle complex animations or multiple frames simultaneously. This lacked hardware support for features like sprites or hardware-accelerated scrolling, requiring all such operations to be performed via software, which was computationally intensive on the era's processors and often resulted in visual artifacts during updates. For instance, simulating smooth motion demanded manual copying of the entire 16 KB frame buffer in under 1/12 of a second on a 4.77 MHz IBM PC, severely restricting animation fluidity. CGA's maximum resolution of 640 × 200 pixels, while adequate for basic text and simple graphics in the early 1980s, proved insufficient for achieving photorealistic imagery or detailed visuals, as it relied on the heritage of the MC6845 controller (CRTC). The MC6845 dictated the display timing and scan parameters, capping vertical resolution at 200 lines in non-interlaced mode and preventing higher densities without external modifications. This resolution ceiling, combined with the 16-color palette limitation in lower modes, confined CGA to blocky, low-fidelity representations unsuitable for advanced graphical applications. Additionally, CGA operated at a fixed 60 Hz refresh rate in a non-interlaced format, which could induce noticeable flicker in high-resolution modes like 640 × 200 on certain CRT monitors, particularly those optimized for higher persistence phosphors. This issue stemmed from the display's reliance on the MC6845's timing, where rapid screen updates in monochrome or two-color modes exacerbated visible scan lines and instability without interlacing to blend fields. Such constraints highlighted CGA's design priorities for affordability over smooth, high-performance rendering.

Software and Usage

Supported Applications

The Color Graphics Adapter (CGA) found widespread adoption in business applications during the early 1980s, particularly in spreadsheet software that leveraged its color text modes to enhance data visualization. Lotus 1-2-3, released in January 1983, was one of the earliest and most influential programs to utilize CGA's 80-column color text mode (mode 3), where each character could be displayed with one of 16 foreground colors and 8 background colors (128 combinations total) from the adapter's palette. This capability allowed users to apply color attributes for cell highlighting, such as bold red for negative values or green for positives, improving readability and analysis in financial and data management tasks without requiring graphics modes. The program's driver files, like IBM0COLO.DRV dated June 7, 1983, explicitly supported CGA color output on IBM PC systems equipped with 256 KB RAM and a color display. In , CGA's 320 × 200 mode with four colors proved versatile for platformers and titles, especially on the , which extended CGA compatibility to include 16-color support in the same resolution. The PCjr version of , developed by and released in 1984, optimized its visuals for this mode by employing dithering techniques to simulate additional shades and textures within the limited palette, enabling more detailed sprites and backgrounds compared to standard CGA implementations on the original IBM PC. This adaptation took advantage of the PCjr's expanded 32 KB video allocation, allowing smoother gameplay and enhanced while maintaining with CGA hardware. Early software drivers and utilities further expanded CGA's utility by providing BIOS-level extensions for mode switching and palette management. GRAPHICS.COM, an IBM-supplied utility bundled with PC DOS versions from the mid-1980s, served as a mode-switcher for CGA systems, enabling seamless transitions between text and graphics modes to facilitate printing of screen content to compatible printers like the IBM Graphics Printer. It handled palette selection indirectly by preserving CGA's color attributes during output, allowing users to control display configurations for applications requiring consistent color rendering across sessions. These tools were essential for integrating CGA into diverse workflows, from document preparation to custom graphics programming.

Emulation and Legacy

The Color Graphics Adapter (CGA) continues to influence modern through software , enabling the execution of legacy IBM PC software on contemporary hardware. , first released in , provides accurate simulation of CGA's text and graphics modes, including 640×200 pixel resolution with two colors (or 320×200 with four colors) and support for composite artifacting to replicate color bleeding effects observed on original televisions. Similarly, , an open-source emulator initiated in 2007 and actively developed through its successor , emulates CGA hardware at the cycle-accurate level, supporting timings, interrupts, and composite output for authentic reproduction of early 1980s PC behavior. These emulators, refined over the 2000s and , allow users to run CGA-dependent applications without physical hardware, preserving compatibility for DOS-era games and utilities. Hardware recreations using field-programmable gate arrays (FPGAs) offer near-exact replication of CGA's signal generation and artifacts, surpassing software in latency and fidelity. FPGA platform, an open-source project launched in the late , includes a PCXT core released in 2022 that fully implements the PC XT's CGA capabilities, outputting genuine RGBI signals for connection to vintage monitors or modern scalers. This core, built on verified 8088 CPU and CGA palette , enables authentic of CGA's 160×100 extended and other features, facilitating hardware-based retro setups without relying on original, aging components. CGA's constrained four-color palette in 320×200 graphics mode profoundly shaped the origins of , forcing artists to employ dithering and artifacting techniques that defined the aesthetic of early and influenced subsequent digital illustration styles. Preservation efforts in the 2020s, led by organizations like the , have digitized and archived thousands of CGA-compatible software titles, ensuring accessibility through emulated environments and scans of original media to safeguard this foundational era of personal computing graphics.

Comparisons and Alternatives

Competing Graphics Adapters

The (MDA), introduced alongside the (CGA) in 1981, served as a monochrome-only alternative optimized for text-based business applications. It supported 80 columns by 25 rows of s at a of 9x14 s, equivalent to a of 720x350, using 4 KB of video RAM and featuring a parallel printer port for direct output. Unlike the CGA, the MDA prioritized sharp, flicker-free text clarity on green-phosphor monitors like the , but lacked any or color capabilities, making it unsuitable for gaming or visual applications. In 1982, third-party manufacturer Hercules Computer Technology released the (HGC), which extended the 's while adding high-resolution support. The HGC maintained full compatibility, including the 720x350 , but introduced a 720x348 with 64 KB of , allowing for detailed images without color. This combination addressed a key limitation of the CGA's coarser 640x200 in modes, providing crisper visuals for such as , though it required a compatible and offered no color output. Another early third-party contender was the ColorPlus, launched in as a direct enhancement to the CGA standard. It doubled the CGA's 16 KB video RAM to 32 KB, enabling 16 simultaneous colors at 320x200 resolution or 4 colors at 640x200, while remaining backward-compatible with standard CGA modes and monitors. This allowed for richer palettes in applications supporting the extension, such as certain versions of , but its adoption was hampered by limited software and BIOS recognition, positioning it as a niche precursor to more advanced color standards. The CGA benefited from being bundled as a standard option with the IBM PC 5150, giving it an edge in for general-purpose computing, while the MDA appealed to text-focused business users seeking superior readability at a similar . Third-party cards like the HGC achieved significant uptake, becoming a for by the mid-1980s due to their cost-effectiveness—around $499 at launch—and compatibility with existing MDA setups, often outselling CGA variants in professional environments. In contrast, systems like the , with built-in color since 1977, commanded higher overall costs, limiting their appeal in the emerging IBM-compatible business market dominated by more affordable adapter-based solutions.

Evolution to Successors

The (EGA), introduced by in 1984, served as the direct successor to the Color Graphics Adapter (CGA), offering significant improvements while maintaining . EGA supported resolutions up to 640×350 pixels with 16 simultaneous colors from a palette of 64, enabled by 64 KB of video RAM, a substantial upgrade from CGA's 16 KB and limited four-color modes at 320×200. This adapter provided full BIOS-level support for CGA's alphanumeric text modes and graphics modes, allowing seamless operation of CGA software and monitors, though some advanced EGA features required compatible displays. In 1987, further advanced its graphics standards with the (VGA), integrated into the PS/2 line of computers, which became the industry standard for PC displays. VGA offered 640×480 resolution with 16 colors or 320×200 with 256 colors, supported by 256 KB of video RAM, and explicitly emulated CGA and EGA modes to ensure compatibility with existing software. This standardization extended CGA's foundational modes across all subsequent PC hardware, embedding them in the for broad accessibility and preventing obsolescence of early applications. CGA's influence persisted through these evolutions, with its modes retained in PC for compatibility well into the 1990s, facilitating the transition for legacy software during the shift to graphical operating systems. By the release of in 1995, however, mandated VGA or better, marking the effective phase-out of direct CGA hardware support in mainstream computing, though emulation continued for niche uses.

References

  1. [1]
    The IBM PC
    On August 12, 1981, Estridge unveiled the IBM PC at New York's Waldorf Hotel. Priced at USD 1,565, it had 16 kilobytes of RAM and no disk drive, and it came ...Overview · Inspiration
  2. [2]
    [PDF] IBM PC Technical Reference - Bitsavers.org
    ... Color/Graphics Monitor Adapter ................. 2-45. Color/Graphics ... Adapter, Printer Adapter and a. Game Control Adapter. The System Unit is the ...
  3. [3]
  4. [4]
    Famous Graphics Chips: EGA to VGA - IEEE Computer Society
    Nov 15, 2018 · The VGA connector was among things, the catalyst that lead to the formation of the Video Electronics Standards Association (VESA) in 1989. This ...
  5. [5]
  6. [6]
    [PDF] Technical_Reference_Options_a...
    The IBM Portable Personal Computer Display attaches internally to the Color/Graphics Monitor Adapter in the system unit and to the power supply. A cable ...
  7. [7]
    CGA - AllPinouts
    Mar 1, 1998 · CGA = Color Graphics Adapter. Videotype: TTL, 16 colors. Also known as IBM RGBI. (15.75 KHz - 320x200 or 640x200). 9 PIN D-SUB FEMALE at the ...Missing: DE- | Show results with:DE-
  8. [8]
    CGA notes - Colour Graphics Adapter - John Elliott's homepage
    According to IBM's technical manual, this connector is for an add-on RF modulator. In the 5155 (portable PC) it is connected to the internal 9-inch monitor.Missing: Personal Reference
  9. [9]
    Color Generation in IBM CGA, EGA and VGA - KeyJ's Blog
    Sep 9, 2018 · The original Color Graphics Adapter (CGA) card from 1981 has two video outputs: composite analog video and digital RGBI. I'm going to ignore ...
  10. [10]
    IBM PC-Compatible CGA Video Reference
    *TTL signals operate in the range 0.0VDC to 5.0VDC. Levels from 0.0VDC to 0.8VDC are considered to be an "OFF" or "0" state. Levels from 2.0VDC and 5.0VDC are ...<|separator|>
  11. [11]
    [PDF] Color Graphics Adapter
    Original IBM Color Graphics Adapter. The Color Graphics Adapter (CGA), originally also called the Color/Graphics Adapter or IBM. Color/Graphics Monitor ...
  12. [12]
    None
    Below is a merged summary of the Color Graphics Adapter (CGA) output interfaces, consolidating all information from the provided segments into a comprehensive response. To maximize detail and clarity, I’ve organized the information into sections with tables where appropriate, ensuring all unique details (e.g., resolutions, color depths, connector types, page references, and URLs) are retained. Since the system limits thinking tokens, I’ve focused on a dense, structured format without excessive narrative.
  13. [13]
    None
    ### Summary of CGA Output Interfaces
  14. [14]
    [PDF] IBM 5160 Technical Reference APR83 - minus zero degrees
    ... IBM Color/Graphics Monitor Adapter is designed to attach to the IBM Color Display, to a variety of television-frequency monitors, or to home television sets ...<|control11|><|separator|>
  15. [15]
    None
    Below is a merged summary of the Color Graphics Adapter (CGA) information from the IBM Technical Reference (April 1984), consolidating all details from the provided segments into a single, dense response. To maximize clarity and detail, I’ll use a table in CSV format for key technical specifications, followed by a narrative summary that integrates all additional information.
  16. [16]
    IBM's CGA Hardware Explained - Nerdly Pleasures
    May 8, 2016 · The text character cell in all CGA modes is 8 pixels by 8 scanlines. This gives an effective resolution of 320x200 for the 40x25 text mode and ...Missing: specifications | Show results with:specifications<|control11|><|separator|>
  17. [17]
    CGA timings (again) - VOGONS
    Jul 22, 2017 · So in 40x25 text mode (where the CGA is supposed to be running at half clock speed) does it still take 912 clocks to deal with a horizontal scan ...CGA/MDA/HGC test program - VOGONSLCD, fresh rate & DOS games - VOGONSMore results from www.vogons.orgMissing: refresh | Show results with:refresh
  18. [18]
    [PDF] IBM Personal Computer XT Hardware Reference Library Technical ...
    C 1 and CO will select 4 of 16 preselected colors. This color selection (palette) is preloaded in an I/O port. The two colors are: Function. Dot takes on the ...Missing: CGA | Show results with:CGA
  19. [19]
    Color Graphics Adapter (CGA) Programming - usebox.net
    Jan 3, 2025 · In mode 0x04 (320x200, 4 colors), the video memory is mapped at b800:0000 . The pixel data is encoded using 2 bit per pixel, so in one byte we ...<|control11|><|separator|>
  20. [20]
    King's Quest (1984) - MobyGames
    Setting: Fantasy ; Business Model: Commercial ; Media Type: 5.25" Floppy Disk ; Input Devices Supported/Optional: Joystick, Keyboard ; Number of Players Supported ...
  21. [21]
  22. [22]
  23. [23]
  24. [24]
    CGA in 1024 Colors - a New Mode: the Illustrated Guide - INT10h.org
    Apr 15, 2015 · Video output options are composite NTSC through a standard RCA jack, and the more widely-used DE9 connector, which outputs an RGBI signal (red, ...
  25. [25]
    Why weren't there games that use CGA 16-color low res mode?
    Oct 27, 2024 · It involved a little known 160 x 100 video mode called "lores" that was almost undocumented in by IBM. ... 160x100 mode on CGA, as often it's ...Missing: extended | Show results with:extended
  26. [26]
    Best CGA & Hercules monochrome games - Page 7 \ VOGONS
    Jan 30, 2021 · I never ran into a game with CGA support that wouldn't run. At least the low-res 160x100 16-color mode used by games such Moonbugs and Paku Paku worked fine on ...ColorGraphicsAdapter (CGA) Thread (Games/Demos/Intros/GFX-Art ...Feature Request: Mode 8 160x200 16 color - VOGONSMore results from www.vogons.org<|control11|><|separator|>
  27. [27]
    1K colours on CGA: How it's done - Reenigne blog
    Apr 8, 2015 · Separately to artifact colour, the CGA card has 16 "direct" colours (the ones that are available in text modes). These are just the 16 possible ...Missing: spreadsheets business
  28. [28]
    IBM PC (Model 5150) with Dual Displays - PCjs Machines
    The IBM PC 5150 supported dual displays with MDA/CGA, but only one was active at a time, determined by switches or MODE commands. Third-party software could ...
  29. [29]
    Dual-Head Operation on a Vintage PC - John Elliott's homepage
    IBM's manual warns that on an original PC with both MDA and CGA, the MDA card must be set as the primary display (so that the BIOS initialises it) or the mono ...
  30. [30]
    Graphics Cards - DOS Days
    Arguably the lowest grade of early PC colour graphics was IBM's Color Graphics Adapter (CGA). Introduced in 1981 it was the first to be able to display colour ...Missing: price $350
  31. [31]
    https://pdos.csail.mit.edu/6.828/2010/readings/har...
    If set the Display Enable bit is active during the first 16 character clocks of each scanline, and from row 22 till the end of the panel in text modes (row 85 ...Missing: refresh | Show results with:refresh
  32. [32]
    Selecting a video adapter in DOSBox-X
    In DOSBox-X, set the video adapter in the config file using `machine=`. The default is S3 Trio64. A recommended order is MDA > Hercules > CGA > PCjr > Tandy > ...<|control11|><|separator|>
  33. [33]
    8088 MPH: We Break All Your Emulators - Oldskooler Ramblings
    Apr 7, 2015 · We also brought two CGA cards, and two capture devices, and three different methods of exchanging new software bits from our laptops to the old ...
  34. [34]
    CGA: Why the 80-column text mode requires the border color to be set
    Oct 17, 2009 · The original IBM Color Graphics Adapter has a curious quirk - it won't by default display colour on the composite output in 80-column text mode.
  35. [35]
    Comparison of CGA card versions - Reenigne blog
    Oct 8, 2012 · On a colour monitor, a new CGA will give a lower saturation then an old CGA, but the brightnesses of the different colours will seem more ...Missing: bugs early
  36. [36]
    8088 MPH Final: Old vs. New CGA (and Other Gory Details)
    Aug 7, 2015 · Old CGA colors differ in phase, while new CGA adds circuitry for 16 grey levels. The new CGA also requires most graphics to be redone.
  37. [37]
    diffrence between "old" and "new" IBM CGA card
    Oct 30, 2015 · You can tell the difference between the two by the number of resistors by the output ports. http://www.minuszerodegrees.net/5150/early/ ...Differences between IBM CGA cardsQuestioning myself about the importance of true IBM CGAMore results from forum.vcfed.orgMissing: bugs | Show results with:bugs
  38. [38]
    8088 MPH: The final version - Scali's OpenBlog - WordPress.com
    Aug 2, 2015 · The top card is an 'old-style' CGA card, and the bottom one is a 'new-style'. We believe that IBM changed the circuitry because of the ...
  39. [39]
    [PDF] IBM PC Animation - Crude but Effective
    The CGA supports two major text modes: 80 columns by 25 lines and 40 columns by. 25 lines. Each character occupies one byte, and all characters are printable.Missing: frequency | Show results with:frequency
  40. [40]
    Jan. 26, 1983: Spreadsheet as Easy as 1-2-3 | WIRED
    Jan 25, 2009 · 1983: Lotus Development Corporation begins selling its spreadsheet application for Microsoft DOS, called 1-2-3.Missing: CGA | Show results with:CGA<|separator|>
  41. [41]
    Lotus 1-2-3 Release 1A - PCjs Machines
    Lotus 1-2-3 Release 1A, dated 6-07-83, requires an IBM PC (Model 5150) with 256Kb RAM, CGA, and Color Display. The disk images are not exact copies.
  42. [42]
    Read the Jumpman Project FAQ - The Oldskool PC
    The PCjr had (at the time) enhanced graphics and sound over the IBM PC, allowing for 3 voice sound and 16 color graphics. I'm in the process of upgrading ...Missing: dithering 320x200
  43. [43]
    How is the 320x200x16 graphics mode mapped in the IBM PCjr?
    Dec 6, 2018 · The 320x200 mode divides the screen into 4-pixel-high stripes, somewhat like the 2-pixel stripes of CGA graphics modes, where the bottom three ...
  44. [44]
    [PDF] USING MS-DOS KERMIT
    ... GRAPHICS.COM file supplied by IBM with DOS, which works with CGA systems and IBM printers. To get a sensible printout, be sure to set your graphics screen ...
  45. [45]
    Programmer's Technical Reference for MSDOS and the IBM PC
    Thus, DOS consists of several layers of "control"programs and a set of "utility" programs. ... 3) Revectored into GRAPHICS.COM if GRAPHICS.COM is loaded. 4) On ...<|separator|>
  46. [46]
    Configuration:DOSBox - DOSBoxWiki
    Oct 2, 2018 · The CGA supports several different modes; the highest quality text mode is 80x25 characters in 16 colors. Graphics modes range from ...
  47. [47]
    sarah-walker-pcem/pcem - GitHub
    An enhanced CGA board with support for 320x200x16 and 640x200x4, (none). Wyse WY-700, A CGA-compatible board with support for a 1280x800 mode, (none). MDSI ...Sarah-walker-pcem · Issues 130 · Releases 1
  48. [48]
    PCXT port for MiSTer by spark2k06. - GitHub
    The purpose of this core is to implement a PCXT as reliable as possible. For this purpose, the MCL86 core from @MicroCoreLabs and KFPC-XT from @kitune-san ...
  49. [49]
    MiSTer FPGA News – PCXT CORE, Truxton II, VIRTUA FIGHTER ...
    Aug 22, 2022 · The PCXT Core has been officially released. You can update your MiSTer now to obtain it. This is a core that concetrates on older PC hardware.
  50. [50]
    CGA Graphics Cards: Why The Colors Stunk - Tedium
    Jun 15, 2017 · Generally, CGA had two modes: One that displayed red, green, yellow and black; and another that, more questionably, displayed cyan, magenta, white, and black.
  51. [51]
    8-bit PC Hercules Graphics Card from 1984 gets revisited
    Oct 26, 2025 · At the time, IBM PCs offered two display options: Color Graphics Adapter (CGA) and Monochrome Display Adapter (MDA). The former could show ...Missing: Plantronics 1981-1984
  52. [52]
    What is an enhanced graphics adapter? - Webopedia
    May 24, 2021 · The EGA is compatible with its predecessors, the color graphics adapter (CGA) and the monochrome display adapter (MDA) via specific ...
  53. [53]
    The PS/2 - IBM
    And their new video display controller, the video graphics array (VGA), improved on previous displays by offering 640x460-pixel resolution in 16 colors and ...
  54. [54]
    Do all VGA cards implicitly support CGA and EGA?
    Dec 14, 2017 · All VGAs support the “official” CGA and EGA modes, so most CGA and EGA games work fine. However, compatibility can only be relied upon at the BIOS level.Missing: 1984 | Show results with:1984
  55. [55]
    Did the Windows 95 setup team forget that MS-DOS can do graphics?
    Feb 11, 2025 · Fortunately, Windows 95 required a VGA video card at a minimum, so didn't have to worry about CGA or EGA. Mind you, the VGA adapter required ...Missing: until | Show results with:until