Atari Sierra
Rainbow
### Rainbow

By the early 1980s, a new generation of CPU designs was coming to market with much greater capability than the earlier 8\-bit designs. Notable among these were the [Intel 8088](/wiki/Intel_8088 "Intel 8088") and [Zilog Z8000](/wiki/Zilog_Z8000 "Zilog Z8000"), designs using [16\-bit](/wiki/16-bit "16-bit") internals, which initially became available as daughtercards on [S\-100 bus](/wiki/S-100_bus "S-100 bus") machines and other platforms as early as the late 1970s. But even as these were coming to market, more powerful [32\-bit](/wiki/32-bit "32-bit") designs were emerging, notably the [Motorola 68000](/wiki/Motorola_68000 "Motorola 68000") (m68k) which was announced in 1979 and led several other companies to begin development their own 32\-bit designs.

Atari's Sunnyvale Research Lab (SRL), run by [Alan Kay](/wiki/Alan_Kay "Alan Kay") and [Kristina Hooper Woolsey](/wiki/Kristina_Hooper_Woolsey "Kristina Hooper Woolsey"), was tasked with keeping the company on the leading edge, exploring projects beyond the next fiscal year. They began experimenting with the new 16\-and 32\-bit chips in the early 1980s. By 1982 it was clear Atari was not moving forward with these new chips as rapidly as other companies. Some panic ensued, and a new effort began to develop a working system.

Steve Saunders began the process in late 1982 by sitting down with the guru of the 8\-bit series chips. He was astonished at the system's limitations and was determined to design something better. His design tracked a set of rectangular areas with different origin points and a priority. The chipset would search through the rectangles in priority order until it found the first one that contained a color value that was visible on the screen at that location. One color from each rectangle's [color lookup table](/wiki/Color_lookup_table "Color lookup table") could be defined as transparent, allowing objects below it to be visible even at a lower priority. In this way, the system would offer the fundamental basis for windowing support.

Each rectangle in the display could be as large or small as required. One might, for instance, make a rectangle that was larger than the screen, which would allow it to be scrolled simply by updating the origin point in its description block. If this was moved off the screen, it would be ignored during drawing, meaning one could use rectangles as offscreen drawing areas and then "flip" them onto the visible screen by changing their origin point once the drawing was complete. Small rectangles could be used for movable objects whereas earlier Atari designs used custom sprite hardware for this task. Each of the rectangles had its own bit depth, 1, 2, 4 or 8\-bit, and each one had its own color lookup table that mapped the 1, 4, 16 or 256 color registers of the selected bit depth onto an underlying hardware pallet of 4,096 colors. The data could be encoded using [run length encoding](/wiki/Run_length_encoding "Run length encoding") (RLE) to reduce memory needs. The display was constructed one line at a time into an internal buffer which was then output to the Gold as it asked for data.

Work on Rainbow continued through 1983, mainly by Saunders and Bob Alkire, who would continue developing the system on a large whiteboard. A polaroid image of the design was made after every major change. A significant amount of effort was applied to considering the timing of the access process searching through the rectangles for a displayed pixel; it was possible to overload the system, asking it to consider too much memory in the available time, but that was considered suitable as this could be addressed in software.

Jack Palevich produced a simulator of the system and George Wang of Atari Semiconductor produced a logic design. The logic was initially implemented as a single\-chip design, but the only cost\-effective chip packaging at the time was the 40\-pin [DIP](/wiki/Dual_in-line_package "Dual in-line package"), which required the system to be reimplemented as two separate [VLSI](/wiki/VLSI "VLSI") chips. This led to the creation of the "Silver" and "Gold" chips, each of which implemented one portion of the Rainbow concept. Silver was responsible for maintaining the rectangle data and priority system and using that to fetch the appropriate data from memory to produce any given pixel, while Gold took the resulting data from Silver, performed color lookup, and produced the video output using a bank of timers that implemented the [NTSC](/wiki/NTSC "NTSC") or [PAL](/wiki/PAL "PAL") signal output.


What are some potential applications of this system beyond gaming consoles?