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:
- 320×200 in 4 colors from a 16 color hardware palette. Pixel aspect ratio of 1:1.2.
- 640×200 in 2 colors from 16. Pixel aspect ratio of 1:2.4
- 40×25 with 8×8 pixel font text mode
- 80×25 with 8×8 pixel font text mode
In addition to the CGA modes, it offers:
- 160×200 with 16 colors
- 320×200 with 16 colors
- 640×200 with 4 colors
Tandy Video II or ETGA
It offers all the same modes as Tandy Video I, plus one more non-CGA mode:
- 640x200 with 16 colors
Palette
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:- 320×200 in 4 colors: The three foreground colors can be freely chosen, in addition to the background color which a CGA allows to be freely chosen.
- 640×200 in 2 colors: The background color can be freely chosen, rather than always being black, in addition to the foreground color which a CGA allows to be freely chosen.
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.