IBM Monochrome Display Adapter
The IBM Monochrome Display Adapter (MDA), formally known as the IBM Monochrome Display and Printer Adapter, is an expansion card developed by IBM for the original IBM Personal Computer (model 5150), providing a high-resolution monochrome text display interface and an integrated parallel printer port.[1] Introduced on August 12, 1981, alongside the IBM PC's launch, it was designed primarily for business and professional applications requiring clear text output, such as word processing and data management, and connects to a dedicated 11.5-inch green phosphor CRT monitor via a 9-pin D-shell connector.[1] The adapter occupies one of the PC's five expansion slots and was priced at $345 for the accompanying display unit, with first shipments occurring in October 1981.[1] Technically, the MDA employs a Motorola 6845 cathode-ray tube (CRT) controller chip to manage display operations, paired with 4 KB of static RAM serving as a regeneration buffer mapped to memory addresses B0000h through B0FFFh.[2] It supports text modes at 80 columns by 25 rows (or alternatively 40×25) with a pixel resolution of 720×350, using a 9×14 dot matrix per character box and a 7×9 dot character design for sharp rendering on TTL-compatible signals at 18.432 kHz horizontal and 50 Hz vertical refresh rates.[2] Unlike contemporary color adapters, the MDA lacks pixel-addressable graphics capabilities, focusing instead on alphanumeric text with 256 character codes—including a 96-character ASCII set and 64 block graphics symbols—along with attributes like blinking, high intensity, underlining, reverse video, and non-display options to enhance readability.[2] The printer functionality integrates a Centronics-compatible parallel interface via a 25-pin D-connector on the card, supporting impact dot-matrix printers at up to 80 characters per second with 10 characters per inch density, and programmable line spacing of 5, 8, or 10 lines per inch.[2] It handles I/O operations through BIOS interrupt 17h and IRQ7 (or IRQ2 in certain configurations), accommodating one original sheet plus two carbon copies with a maximum thickness of 0.3 mm and page lengths from 1 to 66 lines.[2] During system power-on self-test (POST), the MDA is initialized to verify functionality, displaying horizontal bars for storage testing, underscoring its role in the IBM PC's reliable boot process.[2] This design prioritized professional utility over entertainment, establishing a foundational standard for text-based computing that influenced subsequent PC display technologies.[2]History and Development
Introduction and Release
The IBM Monochrome Display Adapter (MDA) was introduced as a key component of the original IBM Personal Computer (model 5150), marking IBM's entry into the personal computing market. Announced on August 12, 1981, at a press event in New York, the MDA became available for shipment starting in October 1981, coinciding with the first deliveries of the IBM PC 5150 system.[3][1] This adapter provided high-resolution text display capabilities tailored for professional use, reflecting IBM's focus on business-oriented computing during the early 1980s. Priced at $270, the MDA was offered as a standard option within the IBM PC lineup, often bundled with the compatible IBM 5151 monochrome monitor, which cost an additional $345.[1] This combination enabled clear, sharp text output on a 11.5-inch CRT screen, making it a practical choice for office environments where readability was paramount.[4] The adapter's design included an integrated parallel printer port, further supporting productivity tasks like document printing alongside display functions.[1] As one of the two inaugural display adapters for the IBM PC—alongside the Color/Graphics Adapter (CGA)—the MDA was specifically targeted at business users requiring reliable text-based operations, such as word processing and accounting.[1][3] Its emphasis on monochrome text modes addressed the needs of corporate professionals, contrasting with the CGA's focus on color graphics for more general or gaming applications. The MDA was eventually superseded by more advanced options like the Enhanced Graphics Adapter (EGA) introduced in 1984.Design Goals and Context
The IBM Monochrome Display Adapter (MDA) was engineered with the core goal of delivering a high-quality text display tailored for professional applications, placing a strong emphasis on readability and sharp character rendering to support business-oriented tasks such as document preparation and data analysis. This focus on text clarity, achieved through features like an 80-character by 25-line screen format, enabled efficient handling of alphanumeric content without the distractions of color or graphics, making it ideal for productivity in office environments.[5][1] In the nascent personal computer market of 1981, the MDA emerged as a response to the growing demand for reliable business computing solutions, targeting small businesses and professionals who required robust text-based tools like spreadsheets (e.g., VisiCalc) and word processors (e.g., EasyWriter) rather than the entertainment-driven graphics capabilities seen in contemporary home systems such as the Apple II. IBM positioned the MDA to bridge the gap between expensive mainframe setups and affordable desktop computing, streamlining operations for accountants, analysts, and planners who needed accessible problem-solving without advanced programming skills.[3][1] The design of the MDA was heavily influenced by IBM's prior mainframe terminal standards, notably the 3270 Information Display System, which emphasized monochrome text output for high-volume data processing and ensured seamless compatibility for users transitioning from larger enterprise systems. By emulating these terminal-like displays, the MDA maintained a familiar interface that supported asynchronous communications and terminal emulation modes to facilitate integration with host systems.[5][6] As part of IBM's Entry Systems Division initiatives in Boca Raton, Florida, the MDA's development was overseen by a dedicated team under Don Estridge's leadership, employing a fast-paced "skunkworks" methodology to standardize PC peripherals and accelerate market entry. This effort culminated in the adapter's inclusion as a core option for the IBM PC 5150, launched on August 12, 1981, to establish a professional-grade ecosystem that extended mainframe reliability to personal computing.[3]Hardware Architecture
Key Components
The IBM Monochrome Display Adapter (MDA) was built around the Motorola MC6845 cathode ray tube controller (CRTC), which served as the primary chipset responsible for generating scan timing signals to drive the display. This video display controller interfaced with the system's microprocessor and managed raster-scan operations, including horizontal and vertical synchronization, to support text-based output on monochrome monitors.[5] The adapter's video memory consisted of 4 KB of dual-ported static random-access memory (SRAM), enabling simultaneous access by the CPU and the display circuitry without contention delays during normal operation. This memory was implemented using two 2K static RAM chips, providing the 4,000 bytes required for an 80-column by 25-row text buffer, where each character position stored one byte for the ASCII code and one byte for attributes.[2][7] Supporting circuitry included discrete transistor-transistor logic (TTL) components for handling character attributes, such as underlining and blinking, and for generating dot patterns from the onboard ROM during scan-out. The character generation relied on an 8 KB ROM (IBM part 9264 or equivalent), which stored font patterns for the supported character set, allowing the TTL logic to serialize 9x14 pixel matrices for high-resolution text rendering.[5][8] Physically, the MDA was designed as a single-slot, 8-bit Industry Standard Architecture (ISA) expansion card, measuring full-length to fit the original IBM PC chassis, with integrated brackets for the DE-9 monitor connector and a parallel printer port.[9]Interfaces and Connectors
The IBM Monochrome Display Adapter (MDA) features a DE-9 (DB-9) connector for its video output, providing a TTL-level monochrome signal compatible with the IBM 5151 monitor, which uses a green P39 phosphor for display.[7] The connector's pinout includes grounds on pins 1 and 2, +intensity on pin 4, +video on pin 7, +horizontal sync on pin 8, and -vertical sync on pin 9, with pins 3, 5, and 6 unused, enabling direct-drive output at TTL voltage levels (0.0-0.6 Vdc low and 2.4-3.5 Vdc high).[7] This setup supports the adapter's text-based display without color or graphics capabilities beyond line drawing characters. In addition to video output, the MDA integrates a parallel printer adapter via a 25-pin D-shell connector, allowing direct text dumping to dot-matrix printers such as the IBM 5152.[5] The printer port provides 12 TTL-buffered outputs (sourcing 2.6 mA and sinking 24 mA), five steady-state inputs, and an interrupt on pin 10, operating at I/O addresses 3BC (data), 3BD (status), and 3BE (control) for 8-bit TTL-level data transfer.[7] The adapter connects to the host system through a standard 8-bit ISA expansion slot, utilizing I/O ports 3B0-3BF and a 4K RAM display buffer at memory address B0000h, while drawing power from the system's +5 V and +12 V supplies via the slot.[5] Some configurations also reference a -12 V supply, though it is not always required.[5] Early 1981 production models of the MDA included a 6-pin Berg connector for potential RGB output compatibility, with traces linking to the DE-9 pins, though this feature was not enabled in firmware and was removed in later revisions.[8]Display Features
Text Mode Operations
The IBM Monochrome Display Adapter (MDA) operates exclusively in text mode, providing a high-resolution monochrome display for character-based output on early IBM PCs. Its standard configuration supports 80 columns by 25 rows of text, utilizing 9x14 pixel character cells that yield an effective resolution of 720x350 pixels.[5] The 80x25 mode is the default for most applications due to its clarity on compatible monitors.[9] Character generation on the MDA relies on an onboard 8KB ROM containing bitmap fonts for 256 distinct characters, drawn from the IBM PC's original extended ASCII set, which includes alphanumerics, accented characters, and box-drawing symbols akin to Code Page 437.[5] Each character is rendered using an 8x14 dot bitmap from ROM within the 9x14 pixel cell, with the 9th column blank for spacing in alphanumeric characters or duplicating the 8th column for block graphics symbols (codes C0h-DFh) to maintain consistent width, and the ROM providing fixed bitmaps that the hardware scans line-by-line to form the display image.[9][8] This ROM-based approach ensures consistent, high-quality text rendering without requiring additional software intervention for basic glyph display. The MDA includes cursor support managed by the Motorola 6845 CRT controller, allowing for a programmable blinking or non-blinking cursor whose start and end scan lines, size, and position can be configured via dedicated registers.[5] Cursor visibility and behavior are controlled through the 6845's registers 10 and 11, enabling applications to adjust it dynamically for user input or navigation.[9] Display operations are limited to a single visible page at a time, stored in the adapter's 4KB dual-ported RAM buffer, though software can manage up to eight virtual pages for rapid switching.[5] Smooth vertical scrolling is facilitated by the 6845's address and line compare registers, which adjust the display start address to shift content without full buffer rewrites, supporting efficient text updates in business and terminal applications.[9] Attribute bytes accompany each character code to influence rendering, such as intensity or underlining, but these are processed separately from core text layout.[5]Character Attributes and Rendering
The character attribute byte in the IBM Monochrome Display Adapter (MDA) is an 8-bit value that controls various visual modifications to text characters, stored in memory immediately following each character code in the display buffer. Bits 0-2 set to 1 enable underlining, bit 3 sets high intensity for brighter rendering, bit 7 selects blinking or underlining based on global mode (via bit 5 of I/O port 3B8h: 1 for blinking, 0 for underlining), with reverse video achieved through specific attribute values producing inverted intensities.[5][9][8] Rendering effects on the MDA are limited to monochrome output, producing normal (standard intensity foreground on dark background), bright (enhanced intensity foreground), underlined (with a horizontal line at the character bottom), reverse (inverted intensities), or combinations thereof, without any color support. These effects utilize 2 to 4 intensity shades—typically dark background, normal foreground, bright foreground, and inverted variants—achieved through the interaction of video enable signals and attribute bits on the green phosphor display.[8][5] Blinking behavior, triggered by bit 7 in the attribute byte, applies to individual characters or groups when the global blink enable is active; it causes the affected characters to alternate visibility across the entire screen at a fixed rate, enhancing emphasis in text-based interfaces. The underline effect specifically renders as a solid horizontal line spanning the bottom row of the 14-pixel-high character cell, independent of other attributes.[9][8] Font rendering on the MDA uses a fixed 9×14 pixel matrix per character, generated from an onboard ROM, where the 9th column duplicates the 8th column for block graphics symbols to maintain consistent 9-pixel width and prevent visual gaps. The 8 KB ROM character generator supports international symbols, including accented letters and line-drawing elements from code page 437, allowing display of extended ASCII characters beyond basic English text.[5][8]Technical Specifications
Memory and Addressing
The IBM Monochrome Display Adapter (MDA) features 4 KB of static RAM dedicated to the display buffer, providing storage for the 80×25 text mode screen.[10] This memory is mapped to the address segment B0000h–B0FFFh in the system's memory map.[10] For compatibility with certain software and hardware configurations, the 4 KB buffer is mirrored across the full 32 KB range from B0000h to B7FFFh, allowing access to the same data at multiple offset points without altering the underlying storage.[8] The display memory is organized in a format that allocates two bytes per character position, supporting up to 2000 characters in the standard 80-column by 25-row layout.[10] The first byte stores the 7-bit ASCII character code, while the second byte holds the attribute information, including bits for underline (bits 0–2), high intensity (bit 3), and blink (bit 7).[8] This structure enables the CPU to update the screen content directly via memory-mapped I/O, with the display hardware reading from the buffer independently to refresh the output. The MDA's memory is dual-ported, permitting simultaneous write operations from the CPU and read operations by the display circuitry without contention in normal use.[10] During display refresh cycles, which may involve DMA-like access, the CPU experiences wait states to ensure data integrity.[10] Write protection for the display memory can be managed through the mode control register, preventing unintended modifications during specific operations. A key aspect of memory interaction is controlled by the mode control register at I/O port 03B8h, a write-only register that configures display behavior.[8] Bit 0 of this register enables high-resolution mode, which allows for finer scan lines per character (up to 16 pixels high, compared to the standard 14), enhancing text clarity on compatible monitors.[8] If this bit is unset (0), the pixel clock is halted, which can freeze the display and potentially halt the processor by preventing further memory access synchronization.[10] Other bits in the register, such as bit 5 for enabling blinking and bit 3 for video output enablement, further influence how the memory contents are rendered, but do not directly alter addressing.[8]Timing and Signals
The IBM Monochrome Display Adapter (MDA) generates video timing signals using the Motorola 6845 cathode ray tube controller (CRTC), which synchronizes the display output with precise horizontal and vertical parameters. The horizontal timing features a scan rate of 18.432 kHz, resulting in a line duration of approximately 52 μs, including blanking intervals, to support the 720-pixel-wide text mode resolution.[9][8] This rate derives from a character clock of about 1.808 MHz, divided across 98 character times per line as programmed in CRTC register R0 (value 97 decimal).[7] Vertical timing operates at a 50 Hz refresh rate, with 350 active scan lines per frame to accommodate the 25-row text display, where each character spans 14 scan lines.[9][8] The total vertical period includes additional lines for vertical blanking and synchronization, programmed via CRTC registers R4–R6 and R7 (typically set to values yielding 370 total lines).[7] This configuration ensures stable raster scanning for monochrome CRT monitors compatible with the MDA's parameters. The video output employs TTL-compatible digital monochrome signals at 0–5 V levels, where logic low (0–0.6 V) represents black and logic high (2.4–5 V) represents illuminated pixels in green phosphor.[9][5] Horizontal sync (HSYNC) and vertical sync (VSYNC) are separate TTL signals output on pins 8 and 9, respectively, of the DE-9 connector, with HSYNC active high and VSYNC active low to control monitor beam retrace.[8][7] Programming of scan parameters occurs through the 6845 CRTC at I/O addresses 03B0h–03B7h, where 03B4h serves as the index register (write-only) to select one of 18 programmable registers, and 03B5h as the data register (read/write) for loading values.[8][5] A status register at 03BAh (read-only) detects vertical or horizontal retrace intervals, with bit 3 indicating vertical retrace and bit 0 for light pen status, enabling software synchronization during display updates.[9][8] These interfaces allow dynamic adjustment of timing, such as cursor positioning and scan line addressing, while interfacing with the adapter's 4 KB display memory.[5]| CRTC Register | Function | Typical MDA Value (Decimal/Hex) | Citation |
|---|---|---|---|
| R0 | Horizontal Total | 97 / 61h | [7] |
| R1 | Horizontal Displayed | 80 / 50h | [7] |
| R2 | Horizontal Sync Position | 82 / 52h | [7] |
| R3 | Horizontal Sync Width | 15 / 0Fh | [7] |
| R4 | Vertical Total | 25 / 19h | [7] |
| R5 | Vertical Total Adjust | 6 / 06h | [7] |
| R6 | Vertical Displayed | 25 / 19h | [7] |
| R7 | Vertical Sync Position | 25 / 19h | [7] |
| R9 | Maximum Scan Line Address | 13 / 0Dh | [7] |