Hercules Graphics

Hercules Graphics Card Drivers

The Hercules Graphics Card (HGC) is a computer graphics controller made by Hercules Computer Technology, Inc. that combines IBM's text-only MDA display standard with a bitmapped graphics mode. This allows the HGC to offer both high quality text and graphics from a single card. The HGC was very popular, and became a widely supported de facto display standard on IBM PC compatibles connected to a monochrome monitor. The HGC standard was used long after more technically capable systems had entered the market, especially on dual-monitor setups.

The Hercules Graphics Card was developed in 1982 by Van Suwannukul, founder of Hercules Computer Technology. The system was created by Suwannukul initially so that he could work on his doctoral thesis on an IBM PC using the Thai alphabet, as Thai was his native language. In 1984, its list price was US$499 (equivalent to $1,243 in 2020), although it was often sold for less than the manufacturer's suggested price.

The Hercules card was essentially an MDA-compatible monochrome card with an added all-points-addressable graphics mode. The card connected to IBM's monochrome 5151 monitor or a third-party monitor compatible with the 5151, and it displayed text and graphics in the same 720×350 pixel resolution format, in the same raster format, and at the same horizontal and vertical scan frequencies as the MDA. In the text mode, which the Hercules card reverted to when the PC was reset, it was almost exactly like the IBM MDA and could be treated by software as if it was an MDA. For full MDA compatibility, the HGC used a 6845 CRT controller (CRTC) chip like the one found on the MDA. The HGC was so compatible with the MDA in this regard that it did not provide its own BIOS ROM and was recognized and operated by the standard PC system board BIOS as an MDA.

The graphics mode of the Hercules card used the same raster format and timing as the MDA text mode, as stated above, but unlike the text mode, it made all pixels addressable. To support this mode, the MDA had a full 64 KB of video RAM—16 times the RAM of an MDA (4 KB) and four times the RAM of a CGA card (16 KB). The Hercules graphics mode had a lot in common with the CGA high-resolution (640×200) two-color mode: the video buffer contained a packed-pixel bitmap (eight pixels per byte, one bit per pixel) with the same byte format, including the pixel-to-bit mapping and byte order, as the CGA two-color graphics mode, and the video buffer was split into interleaved banks, each 8 KB in size, as in the CGA graphics modes. However, because in the Hercules graphics mode there were more than 256 scanlines and the display buffer size was nearly 32 KB (instead of 16,000 bytes as in all CGA graphics modes), four interleaved banks were used in the Hercules mode instead of two as in the CGA modes. Also, to represent 720 pixels per line instead of 640 as on the CGA, each scanline had 90 bytes of pixel data instead of 80.

The 64 KB RAM of the HGC could hold two graphics display pages. Either page could be selected for display by setting or resetting a single bit in the Mode Control Register. Another bit, in a configuration register exclusive to the HGC, determined whether the second 32 KB of RAM on the HGC was accessible to the CPU at the base address B8000h. This bit was reset at system reset (e.g. power-on) so that the card would not conflict with a CGA or other color card at address B8000h.

Programming for the Hercules card's native graphics mode was somewhat hindered by a lack of BIOS support and standardization from IBM—after all, the HGC was a competing technology. As stated, the Hercules card was supported as an MDA by the IBM PC BIOS and did not provide its own BIOS ROM (unlike most other video adapters after the MDA and CGA). Therefore, there was no BIOS support for the Hercules graphics mode, unlike all standard CGA, EGA, and VGA graphics modes. At least by December 1983, Hercules cards came with a "GRAPH X" installable program which enhanced the BIOS by adding Hercules graphics-mode support and even geometric drawing primitives. Popular IBM PC programs at the time (such as Lotus 1-2-3 spreadsheet, AutoCAD computer-aided drafting, Pagemaker and Xerox Ventura desktop publishing, and Microsoft Flight Simulator) came with their own drivers to use the Hercules graphics mode.

Though the graphics mode of the Hercules card was not CGA-compatible, it was technically similar enough to the two CGA graphics modes that eventually through the use of third-party drivers (TSRs) it could also work (suboptimally) with most programs written for the CGA card's standard graphics modes. As the Hercules card did not actually have color-generating circuitry, nor could it connect to a color monitor, color appeared as simulated greyscale in varying patterns (in essence, a primitive form of half-toning or dithering.)

Very large numbers of imitations of the Hercules appeared, including generic clones at very low prices, usually without the printer port. Hercules briefly ran ads implying that use of generic clones of the Hercules card could damage the computer.

Long after its prime, the Hercules card continued to be popular for dual-monitor setups alongside another (color) graphics adapter. Certain software detected the presence of both video systems, and used the monochrome display for extra data display, while running the application on the other screen—for example, a CAD work area would be displayed on the main (non-Hercules driven) screen, and a list of drawing commands would be shown on the HGC-driven monochrome screen. Some software debuggers could take advantage of an HGC to run the main program on the color monitor and the debugger on the HGC. Later on, the multi-monitor trick became obsolete with OS-related improvements such as the introduction of GUIs for debug commands as a software analogy for debug command modules.

The dual-monitor capability of the original Hercules card and its imitations (and some successors) came from its emulation of an MDA rather than a CGA. When IBM designed the original two cards for the PC, the MDA and the CGA, it assigned them different I/O and memory address ranges. This made it possible for both cards to be installed and operated in the same computer at the same time. Subsequent video hardware standards from IBM—the EGA and VGA—used the same I/O and memory address ranges as the CGA (optionally emulating an MDA in its address ranges or using additional I/O and memory addresses not used by earlier cards). Therefore, an EGA or a VGA could replace a CGA and operate in color modes, but either could only replace an MDA, and operate alongside another color graphics card, if it was put into MDA-compatible mode, which gave no more display capability than the Hercules graphics card. Two color cards could not operate in color modes at the same time in a PC, PC XT, or PC AT. Therefore, the Hercules card (or, later, a much more expensive EGA operating in a configuration to essentially emulate the Hercules card) was the only way to produce two graphics displays on two monitors at the same time.