Tandy Graphics Adapter


Tandy Graphics Adapter is a computer display standard for an IBM PC compatible video subsystem that improved on IBM's Color Graphics Adapter technology. Whereas CGA could display only four colors at a time at a screen resolution of 320×200 pixels, a TGA system could display up to 16 colors. While not strictly an adapter—the TGA hardware was available only integrated onto computer motherboards, not on a separate card—TGA is so called to parallel CGA, to which TGA is related and with which it competed.
IBM premiered the new video adapter in the PCjr home computer it announced in 1983. At that time, the company called the main LSI chip of the video subsystem the Video Gate Array, or CGA Plus. The PCjr video subsystem incorporated the Motorola 6845 "CRT Controller", an integrated circuit for controlling video raster timing, which is also used in the IBM MDA and CGA video adapters. Thus the PCjr video subsystem consists mainly of the VGA and 6845 chips, along with relatively few discrete logic chips. This was the most integrated IBM PC video system to date. It was also the last to use the Motorola 6845, as IBM switched to their own custom CRTC for their next PC video standard, the Enhanced Graphics Adapter or EGA.
The PCjr was not popular, but the Tandy 1000 family of home computers are compatible with its video standard and Texas Instruments SN76489-based enhanced sound, and sold well. With built-in joystick ports, the 1000 was the best platform for IBM PC-compatible games before the VGA era, and the combination of its graphics and sound became known as "Tandy compatible"; 28 of 66 games that Computer Gaming World tested in 1989 supported Tandy graphics. The later Tandy 1000 SL and TL models have an enhanced version of the CGA Plus adapter, capable of displaying 16 colors at an improved resolution of 640×200.

Output capabilities

Tandy Video I, TGA, TCGA, or ECGA

Tandy 1000 systems before the Tandy 1000 SL have this type of video.
CGA compatible modes:
Both text modes could themselves be set to display in monochrome, or in 16 colors.
In addition to the CGA modes, it offers:
Tandy 1000 SL-series, TL-series, and RL-series models have this type of video.
It offers all the same modes as Tandy Video I, plus one more non-CGA mode:
The full 16 color CGA palette is available. Some games detect the Tandy hardware and display enhanced graphics in Tandy mode when the CGA mode is selected, while others offer the option to select "Tandy" graphics.

Incompatibilities

Strictly speaking, the PCjr video and Tandy 1000 graphics subsystems are not identical. One specific difference is in the size of the video memory aperture at address 0xB8000. While the PCjr video hardware can use up to 32 KB of RAM for the video buffer, it emulates the CGA precisely by making only 16 KB of this available at address 0xB8000; like in a true CGA, in the PCjr, the 16 KB at 0xB8000 is aliased at address 0xBC000. The Tandy hardware, in contrast, makes the full 32 KB of selected video RAM available at 0xB8000. This difference causes some software written for Tandy graphics not to work correctly on a PCjr, displaying images in 320x200 16-color or 640x200 with periodic black horizontal lines: a venetian-blinds effect. It is also at least technically possible that software for the PCjr will not work correctly on a Tandy 1000. On the other hand, it is possible by intention to write software that will work correctly on either a PCjr or a Tandy 1000.

Technical details

Shared RAM

Unlike every other IBM PC video standard, TGA uses some of the main RAM as the video RAM. This was originally done by IBM as a cost-cutting measure on the PCjr. The PCjr has 64 KB of built-in RAM on the mainboard, and an additional 64 KB can be installed via a special card that plugs into a dedicated slot on the PCjr mainboard. This 64 KB or 128 KB of base RAM is special in that it is shared with the PCjr video subsystem. PCjr video modes use either 16 KB or 32 KB of RAM each. For video purposes, the base 128 KB of RAM is divided into eight 16 KB banks. The PCjr can use any bank for video generation, in a video mode that uses 16 KB; in a mode that uses 32 KB, it can use any even bank concatenated with the next higher odd bank. The PCjr also can independently map any 16 KB bank of base RAM to address 0xB8000 for CPU access; this is for CGA compatibility. Apart from address 0xB8000, the CPU can access any bank at any time via its native address in the first 128 KB of the address space.
This scheme has two cost-cutting advantages: it saves the cost of dedicated video RAM, and the dynamic RAM is refreshed by the 6845 CRT controller as long as the video is running, so there is no need for separate DRAM refresh circuitry. In the IBM PC XT upon which the PCjr is based, DRAM refresh is performed by one channel of the 8237 DMA controller, triggered by one channel of the 8253 programmable timer; in the PCjr, the 8237 is eliminated and the timer channel is repurposed.
The shared-RAM scheme does have some advantages: up to almost 128 KB of RAM can be used for video, and the displayed video banks can be switched instantaneously to implement double-buffering for smooth full-screen animation, something the CGA cannot do.
The Tandy 1000 computers do not incorporate the same cost-cutting measures, but for compatibility with PCjr video, they use the same RAM-sharing scheme.

Programmable palette

A major advance in the PCjr video subsystem was the addition of a programmable palette which can map each 1, 2 or 4-bit video value to any of the 16 colors of the CGA palette. The pixel data generated by the video regeneration circuitry are transformed by the programmable palette array just before being output to the monitor. This has great benefit even for standard CGA modes, as the programmer is no longer constrained to one of the predefined CGA graphics palettes but can choose any 2 or 4 colors. The palette mapping logic is always active, even in text modes, so it is possible to cause certain text to change in appearance just by changing the palette, without making any changes to the character attribute bytes in RAM. The following improvements in color choice are available in the CGA graphics modes:
It is also useful in the PCjr/TGA-specific video modes, and particularly marks a difference between these systems and e.g. the Plantronics Colorplus extended-CGA system, which essentially ran 640x200 mode as a double-width CGA 320x200 complete with the same restricted palette options, and 320x200 as a 4-bit direct-color mode where each distinct bitplane pattern always maps to the same output color on-screen without any potential for flashing, color cycling or other special effects.
The PCjr/TGA programmable palette was carried over to the IBM EGA, where it was extended to 6-bit entries for 64 colors; this was retained in the VGA and subsequent video standards.