Television Interface Adaptor

Last updated
Atari 2600 Atari-2600-Wood-4Sw-Set.jpg
Atari 2600

The Television Interface Adaptor [1] (TIA) is the custom computer chip, along with a variant of the MOS Technology 6502 constituting the heart of the 1977 Atari Video Computer System game console. The TIA generates the screen display, sound effects, and reads the controllers. At the time the Atari VCS was designed, even small amounts of RAM were expensive. The chip was designed around not having a frame buffer, instead requiring detailed programming to create even a simple display. [2]

Contents

Development of the CO10444/CO11903 [3] TIA was led by Jay Miner who continued at Atari expanding on the design of the TIA for the Atari 400/800 computers with the ANTIC and CTIA/GTIA chips. Jay Miner later led the design of the custom chips for the Amiga computer.

Design

The motherboard of the original six-switch Atari VCS. The 40-pin TIA chip is on the left. The center 28-pin is the MOS Technology 6507, and to its right, the 40-pin MOS Technology 6352 Ram-I/O-Timer (RIOT) chip. The cartridge insertion slot is to the immediate right of the RIOT chip. Atari-2600-Six-Switch-Motherboard-Flat.jpg
The motherboard of the original six-switch Atari VCS. The 40-pin TIA chip is on the left. The center 28-pin is the MOS Technology 6507, and to its right, the 40-pin MOS Technology 6352 Ram-I/O-Timer (RIOT) chip. The cartridge insertion slot is to the immediate right of the RIOT chip.

Background

Around 1975, Atari's engineers at Cyan Engineering led by Steve Mayer and Ron Milner had been considering alternatives to the development dedicated hardware such as application-specific integrated circuits (ASIC) for arcade video games and home video game consoles. Programmable microprocessors had reached the market, but Atari considered them too expensive for a home application. [4] They were limited by cost in options for displaying graphics. At this point in time, most computer graphics were generated by using sprites drawn atop a playfield, which then were translated into an analog signal for display on a CRT video monitor. [5] Sprites would be held as a bitmap in a framebuffer, requiring random-access memory (RAM). RAM was still expensive, costing tens of thousands of dollars per megabyte. [6] , and to display a two-color playfield on a 80×48 display would have cost thousands of dollars in memory. [4] On a conventional NTSC color television, maximum resolutions generally fell between 256 and 320 pixels per line, and 192 to 240 lines per screen. [7]

In September 1975, MOS Technology introduced the 6502 microprocessor, one of the first low-cost microprocessors on the market. Mayer and Milner arranged to speak to the chip's designer, Chuck Peddle, on using the 6502 as the basis for their programmable video game console. Over the course of a couple of days, the basic design of the Atari VCS was laid out, with Peddle offering Atari the use of the lower-cost MOS Technology 6507 processor and the MOS Technology 6532 RAM-I/O-Timer (RIOT) as the core of the design. [8] Using a breadboard prototype for the display adapter atop a 6502 testbed system, Milner was able to demonstrate the ability to program a simple version of their Tank game. Joe Decuir was hired on to help convert Milner's proof-of-concept to a functional prototype, sufficient for Atari to give the go-ahead for the development to continue. [4]

While Decuir worked on the design of the rest of the system, Jay Miner focused on making an ASIC for the display adapter. [4] Early on, the ASIC display adapter was named the Television Interface Adaptor (TIA). [4] The cost of RAM remained high as the team began its design, and thus the option to use memory-based framebuffers was dropped from the TIA's design. [4]

RAM-less design

Due to the lack of RAM, the TIA differs from the conventional framebuffer approach on the screen is composed by manipulating five movable graphic objects (2 players, 2 missiles and 1 ball) and a static playfield object. These are all generated on every scan line from their respective registers, unlike the technique used in a framebuffer-mapped model, requiring the program to update these on every scan line. [9] Horizontal resolution is not uniform, as its size depends on the particular graphics object. The smallest unit of pixel corresponds to 1 color clock cycle of the chip, of which there are 160 visible ones on a line. [9]

The Playfield object consists of a two-and-a-half byte register (20 bits wide), which can be reflected symmetrically or copied as-is to the right half of the screen for 40 bits in total (each bit being 4 color cycles wide). The color that was drawn if the bit was a 1 or a 0 was selected from a pre-defined palette of up to 128 colors (see below) and held in other registers.

The TIA also supported five separate graphics objects consisting of:

Without RAM-based framebuffers, collision detection is also complicated. The TIA has hardware collision detection for all of these objects through the use of 15 set/reset flip-flops and stores a bitmap of collisions, that are typically read during the VBLANK period. [4] Registers in the TIA allow the programmer to control the positioning of the graphical objects and their color.

The TIA also provides two channels of one-bit sound. Each channel provides for 32 pitch values and 16 possible bit sequences. There is a 4 bit volume control. [4]

Lastly, the TIA has inputs for reading up to four analog paddle controllers using potentiometers and for two joystick triggers. [4]

Drawing the display

As the registers hold data for only a single line of the display, creating a full screen requires the game program to update the registers on the fly, a process known as "racing the beam". [10]

To start the process, the game program running on the MOS Technology 6502-based CPU loads the TIA's registers with the data needed to draw the first line of the display. The TIA then waits until the television is ready to draw the line (under the command of the TIA's associated analog hardware) and read out the registers to produce a signal for that line. During the horizontal blanking period between lines, the 6502 quickly changes the TIA's registers as needed for the next line. This process continues down the screen.

This is made more difficult because the MOS Technology 6507 in the 2600 is a pin-reduced version of the 6502 with no support for hardware interrupts. Generally the analog side of the display system generates an interrupt when it finishes drawing a raster line and is getting ready for the next one. The interrupt triggers the code needed to update the screen, and then returns to the "main" program. The 6507 left these pins off of the CPU to save money, however it does have a "RDY" pin to insert wait states into CPU bus cycles. The TIA was specifically designed to use the RDY pin to synchronize the CPU with the raster line timing of the video generated by the TIA: when the CPU writes to a certain register address of the TIA, the TIA lowers its RDY output signal until the end of the current line, a "wait for sync" command. [4] This suspends the operation of the CPU until the start (color clock cycle 0) of the horizontal blanking period right ahead of the next line, providing a measure of automatic synchronization. The intended use of this mechanism is for the CPU to run code that sets up the TIA registers for the line about to be drawn, and which usually runs to completion some time before the TIA reaches the end of that line. To make video timing synchronization easier, the CPU then writes to the register that triggers the synchronization delay via RDY, throwing away a variable amount of CPU time. [4]

In addition, the TIA only semi-automatically generates vertical sync timing signals (to mark the end of each video frame and the start of the next). The TIA is capable of inserting a vertical sync signal into the analog output video signal, but it does not have a frame line-counter and so cannot tell when a frame should end. Instead, it is left to the CPU program to trigger vertical sync signals and to count the lines in each frame to determine when a vertical sync signal should be generated. Like for the RDY-wait hardware, the vertical sync signal is triggered by the CPU writing to a specific TIA register address. If no write to that address was ever done and the TIA was allowed to free-run, it would generate a single infinite frame of active raster lines, which would typically appear on the TV as a rolling picture. Most published games for the Atari 2600 generated vertical sync after either every 262 or every 263 lines (but nothing about the TIA prevents it from generating frames of any length, shorter or longer, though the resulting video displays would roll vertically on normal TVs).

These and other details of TIA programming mean that programmers need to time their programs carefully to run in the exact number of cycles needed for various screen-related events. Getting this wrong means the screen is not drawn properly. The part of a program that does this is known as the "kernel" of that program. [11]

Given this complexity, early games using the system tended to be simple in layout, using the TIA to create symmetric playfields with players on top. This was the original intention of the system: to run the handful of arcade games Atari had already produced like Tank and Pong . In these cases the playfield data was typically laid out in the 2 kB ROM memory in the game cartridge. As each line used 20 bits of data, and there were 192 lines on an NTSC display, [12] a display with a different layout on every line needed only 480 bytes (192 x 20 / 8) of the cartridge's 4 kB to hold a single hard-coded display. In this case the kernel simply advanced 20 bits through ROM for every line as the TIA advanced down the screen, a task that took only a few cycles of CPU time. This can be further reduced by using the same data for multiple lines, either doubling them vertically, or reading one way through the list for the top and then back the other way for the bottom, producing a vertically mirrored display of only 240 bytes.

Rainbow effect visible in Barnstorming game Barnstorming Atari 2600.jpg
Rainbow effect visible in Barnstorming game

A key advance was the licensing of Space Invaders for the platform, which required many more player graphics to draw the enemy aliens. The solution was to change the player data for every line as the image was being drawn, creating an apparent large number of players. Another advance was made by (partially) coding the display as CPU instructions instead of storing it as fixed data in ROM. Adventure uses this concept to produce a wide variety of maps by combining different portions of the data in ROM, jumping back and forth through it during the screen drawing. [13] This allowed the game to have 30 rooms, which would have otherwise required 14 kB of ROM.

As programmers grew more accustomed to the odd timing needed to get things to work properly on-screen, they began to use the inherent flexibility in the TIA to greatly improve the displays. One common technique was to change the color registers that were used to draw the 1 and 0 states of the playfield, resulting in displays with rainbow-like effects. Later games could modify the playfield mid-line to generate asymmetric patterns, repositioning and changing player sprites mid-screen to generate additional sprites.

TIA Color Capabilities

The TIA uses different color palettes depending on the television signal format used. For NTSC format (part number CO10444), [3] a 128-color palette is provided, while only 104 colors are available for PAL (part number CO11903). [3] Finally, the SECAM palette consists of only 8 colors.

NTSC palette

luminance
hue
02468101214
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

PAL palette

luminance
hue
02468101214
0,1,14,15
2
3
4
5
6
7
8
9
10
11
12
13

SECAM palette

02468101214

Noise/Tone Generator (AUD0/1)

The TIA is capable of generating different types of pulse waves and white noise output to its two oscillators (or channels) AUD0 and AUD1. Each oscillator has a 5-bit frequency divider and a 4-bit audio control register which manipulates the waveform. There is also a 4-bit volume control register per channel.

Frequency Divider (AUDF0/1)

Frequencies are generated by taking 31399  Hz (31113  Hz for PAL) and dividing by the 5-bit value supplied. [14] The result is a cheap frequency divider capable of detuned notes and the odd tuned frequency. The TIA is not a musical chip unless the composer works within the frequency limits or modulates between two detuned frequencies to create a vibrato tuned note.

Audio Control (AUDC0/1)

The Audio Control register generates and manipulates a pulse wave to create complex pulses or noise. The following table (with designed duplicates) explains how its tones are generated:

HEXD7D6D5D4D3D2D1D0Type of noise or division
0 0000Set to 1 (volume only)
100014 bit poly
20010÷ 15 → 4 bit poly
300115 bit poly → 4 bit poly
40100÷ 2
50101÷ 2
60110÷ 31
701115 bit poly → ÷ 2
810009-bit poly (white noise)
910015-bit poly
A1010÷ 31
B1011Set last 4 bits to 1
C1100÷ 6
D1101÷ 6
E1110÷ 93
F11115-bit poly ÷ 6

Related Research Articles

<span class="mw-page-title-main">Atari 2600</span> Home video game console

The Atari 2600 is a home video game console developed and produced by Atari, Inc. Released in September 1977 as the Atari Video Computer System, it popularized microprocessor-based hardware and games stored on swappable ROM cartridges, a format first used with the Fairchild Channel F in 1976. The VCS was bundled with two joystick controllers, a conjoined pair of paddle controllers, and a game cartridge—initially Combat and later Pac-Man. Sears sold the system as the Tele-Games Video Arcade. Atari rebranded the VCS as the Atari 2600 in November 1982 alongside the release of the Atari 5200.

<span class="mw-page-title-main">Atari 7800</span> Home video game console

The Atari 7800 ProSystem, or simply the Atari 7800, is a home video game console officially released by Atari Corporation in 1986 as the successor to both the Atari 2600 and Atari 5200. It can run almost all Atari 2600 cartridges, making it one of the first consoles with backward compatibility. It shipped with a different model of joystick from the 2600-standard CX40 and Pole Position II as the pack-in game. Most of the announced titles at launch were ports of 1981–1983 arcade video games.

<span class="mw-page-title-main">MOS Technology 6502</span> 8-bit microprocessor from 1975

The MOS Technology 6502 is an 8-bit microprocessor that was designed by a small team led by Chuck Peddle for MOS Technology. The design team had formerly worked at Motorola on the Motorola 6800 project; the 6502 is essentially a simplified, less expensive and faster version of that design.

<span class="mw-page-title-main">MOS Technology</span> Semiconductor company based in Pennsylvania, U.S.

MOS Technology, Inc. ("MOS" being short for Metal Oxide Semiconductor), later known as CSG (Commodore Semiconductor Group) and GMT Microelectronics, was a semiconductor design and fabrication company based in Audubon, Pennsylvania. It is most famous for its 6502 microprocessor and various designs for Commodore International's range of home computers.

<span class="mw-page-title-main">Amiga Original Chip Set</span> Chipset used in Amiga personal computer

The Original Chip Set (OCS) is a chipset used in the earliest Commodore Amiga computers and defined the Amiga's graphics and sound capabilities. It was succeeded by the slightly improved Enhanced Chip Set (ECS) and the greatly improved Advanced Graphics Architecture (AGA).

<span class="mw-page-title-main">MOS Technology 6507</span> 8-bit microprocessor

The 6507 is an 8-bit microprocessor from MOS Technology, Inc. It is a version of their 40-pin 6502 packaged in a 28-pin DIP, making it cheaper to package and integrate in systems. The reduction in pin count is achieved by reducing the address bus from 16 bits to 13 and removing a number of other pins used only for certain applications.

<span class="mw-page-title-main">Atari 8-bit computers</span> Home computer series introduced in 1979

The Atari 8-bit computers, formally launched as the Atari Home Computer System, are a series of 8-bit home computers introduced by Atari, Inc. in 1979 with the Atari 400 and Atari 800. It is the first home computer architecture with coprocessors, enabling more advanced graphics and sound than most of its contemporaries. Video games are key to its software library, and the 1980 first-person space combat simulator Star Raiders is considered the platform's killer app.

<span class="mw-page-title-main">Framebuffer</span> Portion of random-access memory containing a bitmap that drives a video display

A framebuffer is a portion of random-access memory (RAM) containing a bitmap that drives a video display. It is a memory buffer containing data representing all the pixels in a complete video frame. Modern video cards contain framebuffer circuitry in their cores. This circuitry converts an in-memory bitmap into a video signal that can be displayed on a computer monitor.

<span class="mw-page-title-main">MOS Technology VIC-II</span> Video microchip in the Commodore 64 and C128 home computers

The VIC-II, specifically known as the MOS Technology 6567/6566/8562/8564, 6569/8565/8566 (PAL), is the microchip tasked with generating Y/C video signals and DRAM refresh signals in the Commodore 64 and Commodore 128 home computers.

<span class="mw-page-title-main">ANTIC</span> Computer graphics chip

Alphanumeric Television Interface Controller (ANTIC) is an LSI ASIC dedicated to generating 2D computer graphics to be shown on a television screen or computer display. Under the direction of Jay Miner, the chip was designed in 1977–1978 by Joe Decuir, Francois Michel, and Steve Smith for the Atari 8-bit computers first released in 1979. The chip was patented by Atari, Inc. in 1981. ANTIC is also used in the 1982 Atari 5200 video game console, which shares most of the same hardware as the 8-bit computers.

<span class="mw-page-title-main">MOS Technology 8502</span>

The MOS Technology 8502 is an 8-bit microprocessor designed by MOS Technology and used in the Commodore 128 (C128). It is an improved version of the MOS 6510 used in the Commodore 64 (C64). It was manufactured using the HMOS process, allowing it to have higher transistor density, and lower cost, while dissipating less heat. The 8502 allows the C128 to run at double the clock rate of the C64 with some limitations.

<span class="mw-page-title-main">CTIA and GTIA</span> Custom chips used in Atari 8-bit computers

Color Television Interface Adaptor (CTIA) and its successor Graphic Television Interface Adaptor (GTIA) are custom chips used in the Atari 8-bit family of computers and in the Atari 5200 home video game console. In these systems, a CTIA or GTIA chip works together with ANTIC to produce the video display. ANTIC generates the playfield graphics while CTIA/GTIA provides the color for the playfield and adds overlay objects known as player/missile graphics (sprites). Under the direction of Jay Miner, the CTIA/GTIA chips were designed by George McLeod with technical assistance of Steve Smith.

<span class="mw-page-title-main">Motorola 6845</span> Display controller

The Motorola 6845, or MC6845, is a display controller that was widely used in 8-bit computers during the 1980s. Originally intended for designs based on the Motorola 6800 CPU and given a related part number, it was more widely used alongside various other processors, and was most commonly found in machines based on the Zilog Z80 and MOS 6502.

<span class="mw-page-title-main">Video display controller</span> Type of integrated circuit

A video display controller (VDC), also called a display engine or display interface, is an integrated circuit which is the main component in a video-signal generator, a device responsible for the production of a TV video signal in a computing or game system. Some VDCs also generate an audio signal, but that is not their main function. VDCs were used in the home computers of the 1980s and also in some early video picture systems.

A raster interrupt is an interrupt signal in a legacy computer system which is used for display timing. It is usually, though not always, generated by a system's graphics chip as the scan lines of a frame are being readied to send to the monitor for display. The most basic implementation of a raster interrupt is the vertical blank interrupt.

<span class="mw-page-title-main">Atari 2600 hardware</span> Hardware of the Atari 2600 video game console

The Atari 2600 hardware was based on the MOS Technology 6507 chip, offering a maximum resolution of 160 x 192 pixels (NTSC), 128 colors, 128 bytes of RAM with 4 KB on cartridges. The design experienced many makeovers and revisions during its 14-year production history, from the original "heavy sixer" to the Atari 2600 Jr. at the end. The system also has many controllers and third-party peripherals.

<span class="mw-page-title-main">Atari Sierra</span> Unreleased computer design

Sierra was the code name for a 16-bit/32-bit personal computer designed by the Sunnyvale Research Lab (SRL) of Atari, Inc. starting around 1983. The design was one of several new 16-bit computer systems proposing to use a new chipset from Atari Corporate Research.

<span class="mw-page-title-main">Atari joystick port</span> Computer port used for gaming controllers

The Atari joystick port is a computer port used to connect various gaming controllers to game console and home computer systems in the 1970s to the 1990s. It was originally introduced on the Atari 2600 in 1977 and then used on the Atari 400 and 800 in 1979. It went cross-platform with the VIC-20 in 1981, and was then used on many following machines from both companies, as well as a growing list of 3rd party machines like the MSX platform and various Sega consoles.

References

  1. "I. Theory of Operation". Atari Video Computer System Field Service Manual - Model 2600/2600A Domestic (PDF). Rev. 02. Atari, Inc. January 21, 1983. pp. 1–4. Archived from the original (PDF) on February 15, 2017. Retrieved September 10, 2010.
  2. Hague, James (September 10, 2013). "Why Do Dedicated Game Consoles Exist?". Programming in the Twenty-First Century.
  3. 1 2 3 Stilphen, Scott (February 5, 2020). "ATARI VCS/2600 TIA CHIPS" . Retrieved February 24, 2020.
  4. 1 2 3 4 5 6 7 8 9 10 11 Decuir, Joe (July 2015). "Atari Video Computer System: Bring Entertainment Stories Home". IEEE Consumer Electronics Magazine: 59–66. doi: 10.1109/MCE.2015.2421572 .
  5. Chris Crawford, "ANTIC and the display list", De Re Atari
  6. McCallum, John C. (February 13, 2012). "Memory Prices (1957-2012)". jcmit.net. Archived from the original on October 26, 2012. Retrieved October 27, 2012.
  7. Montfort & Bogost, pg. 27
  8. Goldberg, Marty; Vendel, Curt (2012). "Chapter 5". Atari Inc: Business is Fun. Sygyzy Press. ISBN   978-0985597405.
  9. 1 2 Wright, Steve. "Stella Programmer's Guide", (in Spanish) December 3, 1979. Archived on March 5, 2016.
  10. Kohler, Chris (March 13, 2009). "Racing the Beam: How Atari 2600's Crazy Hardware Changed Game Design". Wired . Archived from the original on July 12, 2014.
  11. Montfort & Bogost, pg. 34
  12. More on PAL, see "Atari 2600 Specifications" Archived May 24, 2011, at the Wayback Machine
  13. Robinett, Warren, "Adventure", University of North Carolina. Archived on January 27, 2018.
  14. "Sound Chips in 8-bit Computers". FLOP Atari portal. Retrieved 14 December 2023.

Sources