Tandy Graphics Adapter

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Tandy Graphics Adapter
Release date1984; 35 years ago (1984)
Entry-levelTandy Video I
High-endTandy Video II
PredecessorColor Graphics Adapter
SuccessorEnhanced Graphics Adapter
Tandy 1000 RL computer with a Tandy Video II display
Sample image of simulated Tandy 16-color screen at 160x—200

Tandy Graphics Adapter (TGA, also Tandy graphics) is a computer display standard for an IBM PC compatible video subsystem that improved on IBM's Color Graphics Adapter (CGA) 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 (not to be confused with the later Video Graphics Array or VGA standard), or CGA Plus[citation needed]. The PCjr video subsystem incorporated the Motorola 6845 "CRT Controller" (CRTC), 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";[1][2] 28 of 66 games that Computer Gaming World tested in 1989 supported Tandy graphics.[3] 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.[4]

Output capabilities[edit]

Tandy Video I, TGA, TCGA, or ECGA[edit]

Tandy 1000 systems before the Tandy 1000 SL have this type of video.[5]

CGA compatible modes:

  • 320×200 in 4 colors from a 16 color (RGBI) 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 (effective resolution of 320×200)
  • 80×25 with 8×8 pixel font text mode (effective resolution of 640×200)

Both text modes could themselves be set to display in monochrome, or in 16 colors.

In addition to the CGA modes, it offers:

  • 160×200 with 16 colors (equivalent to the graphical quality of many contemporary 8-bit home computers and games consoles, using the same 16kb memory size and machine bandwidth as the original CGA modes, and analogous to/somewhat able to share graphics assets with CGA's "composite color" mode whilst remaining displayable on RGB monitors)
  • 320×200 with 16 colors
  • 640×200 with 4 colors (from 16)

Tandy Video II or ETGA[edit]

Tandy 1000 SL-series, TL-series, and RL-series models have this type of video.[5] It offers all the same modes as Tandy Video I, plus one more non-CGA mode:

  • 640x200 with 16 colors


Full CGA 16-color palette
0 gray
1 light blue
2 light green
3 light cyan
4 light red
5 light magenta
6 yellow
light gray
7 white (high intensity)

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.


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 (that relies on the memory wrap-around at address 0xBC000) 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[edit]

Shared RAM[edit]

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.[6] This 64 KB or 128 KB of base RAM is special in that it is shared with the PCjr video subsystem. PCjr (i.e. TGA) video modes use either 16 KB or 32 KB of RAM each.[7] (Text modes uses 16 KB divided into 4 or 8 pages, for 80x25 or 40x25 text formats respectively.) For video purposes, the base 128 KB of RAM is divided into eight 16 KB banks.[8] 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.[9] The PCjr also can independently map any 16 KB bank of base RAM to address 0xB8000 for CPU access; this is for CGA compatibility.[10] 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.[11](Note that the first bank overlaps the interrupt vector table of the x86 CPU and the data area used by the BIOS, so it is generally not usable for graphics.)

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 (to work around a complication of other cost-cutting in the keyboard interface).[12]

The shared-RAM scheme does have some advantages: up to almost 128 KB of RAM can be used for video (if software is mostly in ROM—e.g. on PCjr cartridges—or in RAM above the first 128 KB), and the displayed video banks can be switched instantaneously to implement double-buffering (or triple-buffering, or up to 7-fold buffering in 16 KB video modes) for smooth full-screen animation, something the CGA cannot do.

The Tandy 1000 computers do not incorporate the same cost-cutting measures (most of them have an 8237 DMA controller), but for compatibility with PCjr video, they use the same RAM-sharing scheme.

Programmable palette[edit]

A major advance in the PCjr (and TGA) video subsystem was the addition of a programmable palette which can map each 1, 2 or 4-bit video (pixel) 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.[13] This has great benefit even for standard CGA modes, as the programmer is no longer constrained to one of the predefined CGA graphics palettes (e.g. cyan-magenta-white or red-green-yellow) 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 (appear, disappear, cycle colors, etc.) 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.

It is also useful in the PCjr/TGA-specific video modes (160/320x200x16, 640x200x4), 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 (and lacked 160x200 mode entirely).

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.

See also[edit]


  1. ^ Loguidice, Bill; Barton, Matt (2014). Vintage Game Consoles: An Inside Look at Apple, Atari, Commodore, Nintendo, and the Greatest Gaming Platforms of All Time. CRC Press. pp. 96–97. ISBN 1135006512.
  2. ^ Norton, Peter (1984-01-24). "Sound Abilities: The PCjr". PC Magazine. p. 137. Retrieved 23 October 2013.
  3. ^ "The Owner's Guide to Tandy 16 Color". Computer Gaming World. August 1989. p. 14. Retrieved 4 November 2013.
  4. ^ "PC (PCjr / Tandy 1000 Series)". CVGM.net. Retrieved 19 June 2014.
  5. ^ a b II.B.5. What is this weird video Tandy has?, Tandy 1000-series FAQ (Version 2.52 / October 25, 2005)
  6. ^ IBM PCjr Technical Reference
  7. ^ IBM PCjr Technical Reference
  8. ^ IBM PCjr Technical Reference
  9. ^ IBM PCjr Technical Reference
  10. ^ IBM PCjr Technical Reference
  11. ^ IBM PCjr Technical Reference
  12. ^ IBM PCjr Technical Reference
  13. ^ IBM PCjr Technical Reference