MASTER COMPONENT #2609
[With some corrections and clarifications, the following information is from an in-house document dated October 31, 1980.]
This document covers the main components of the Intellivision (product number 2609) that are of interest to the programmer. These are:
In addition, the Intellivision includes components not directly accessed by the game program. The principal functions of these components are to (1) generate the 3.579545 MHz system clock, (2) convert the digital sound and video signals to an RF output and (3) supply power for the system. These are not discussed further here.
The information here also applies to the Sylvania model, the Radio Shack Tandyvision One, the Sears Super Video Arcade, and the INTV Master Component (also called INTV System III and the INTV Super Pro System), which are all simply clones of the Intellivision Master Component with minor cosmetic differences.
The CPU is the General Instruments CP1610. This is a general purpose 16-bit microprocessor which has 1024 separate op-codes, and can equally well use 8-bit, 10-bit, 14-bit, and 16-bit RAM or ROM. The CP1610 in the Intellivision uses a machine cycle rate of 894.886 KHz. Individual operations on the 1610 take between 4 and 12 microcycles (Note: the CP1600 is the prototypical or conventional form of the microprocessor; the CP1610 used in the Intellivision is precisely the same in all respects except for a differing clock rate.)
Since most 1610 instructions are 10-bits wide, game programs are stored in 10-bit wide ROMs. This 10-bit "byte" is referred to as a decle (rhymes with "heckle"). Some instructions require 16 bits; these are stored in two successive 10-bit locations, referred to as a bidecle. (For prototyping, dual 8-bit EPROMs are used, with the low 8 bits of each decle stored in one EPROM and the top 2 bits stored in the other.)
The Standard Television Interface Chip (STIC), the General Instruments AY-3-8900-1, controls the video display of the Intellivision. Roughly speaking, the CPU tells the STIC how to create a desired visual display, and the STIC does all the dirty work without further work by the CPU.
The STIC will display a background field of 240 "cards" (20 wide and 12 high; each card is 8 by 8 pixels), giving a resolution of 160 pixels wide and 96 pixels high (each pixel is 2 TV lines high and is in the proportion of 5 wide by 4 high). NOTE: The STIC does NOT display the far right column of pixels, giving an actual displayed resolution of 159 by 96 pixels. Each pixel can be in any of 16 colors (eight "primaries" and eight "pastels.").
In addition, the STIC controls 8 "moving objects", each of which can be 8 wide by 8 high or, at double resolution, 8 wide by 16 half-pixels high (each moving object can also be double-sized in width and/or height). The beauty of this system is that once the CPU has defined a background and a moving object shape, it can change the location of an object merely by writing a different address to the STIC. NOTE: The moving objects can be located on a grid space wider and taller than the displayed background, allowing them to smoothly slide on or off the screen at the edges.
[Blue Sky Rangers comment: Two methods were developed to get around the limit of only eight moving objects: (1) multiplexing is redefining and repositioning one object from frame to frame to give the illusion of two separate objects; (2) sequencing GRAM is writing directly to the Graphics RAM locations, normally only accessed by the EXEC, to animate background cards. Because it causes objects to flicker, marketing forbid the use of multiplexing (common in Atari 2600 and Colecovision games). Sequencing GRAM, however, was used often, including in , and to create screens full of movement.]
The STIC will take care of changing the location of an object, background, overlaps, etc. The STIC will also keep track of moving object interactions with other moving objects or with the background field, and will signal the CPU when crashes occur. As an example, the CPU can define a playing field and a ball moving on it. Then the CPU can move the ball around the field merely by writing a new X,Y location to the STIC. The STIC will make sure that the background properly reappears after an object moves away, and (if requested) will signal the CPU when the ball moves off the edge of the playing field or intersects another moving object such as an opposing player.
The STIC also can cause the entire background to move smoothly, one pixel at a time, either in the X-direction or the Y-direction. Moving objects move with the background. (Special subroutines are available to the programmer to use this feature to create continuous scrolling backgrounds.)
Obviously, the STIC takes a lot of work off the CPU, and it makes it possible for Intellivision to have higher quality graphics than any other video game or home computer system. However, the STIC has limitations which the programmer has to work within, particularly in defining colors:
Moving objects can have only ONE color each; a multicolor character must therefore be made up of more than one of the only eight moving objects.
Each 8 by 8 background card can have only TWO colors on it. There are two methods for defining these colors: (1) Foreground/Background mode allows the colors for each card to be defined individually, but one of the two colors on each card is limited to the eight primary colors. Two pastel colors cannot appear on the same card. (2) Color Stack mode restricts one of the two colors on each card to either the current or next color from a programmer-defined four-color circular stack. However, since all 16 colors are available for the color stack, two pastel colors CAN appear on the same card. Modes cannot be mixed on one screen. In general, a complex screen design is easier to create in Foreground/Background mode, but a simpler (or very clever) design using Color Stack can be more colorful.
(NOTE: There is a third mode, Colored Squares mode, that allows four primary colors to be defined per card, but it is literally limited to colored squares -- four equal-sized blocks per card. Therefore, the entire background must be made up of 4-pixel by 4-pixel solid-color squares. [This mode was only used three times, for and the unreleased games and ])
The CPU and the STIC are linked together and served by the System RAM, the GI RA-3-9600. The System RAM is not just a simple dumb memory chip. It contains (1) 240 locations of information about the 240 background cards (BACKTAB), (2) 112 locations of simple 16-bit ram, used as the CPU stack and (3) a bus arbitration controller to control access to the Graphics ROM (GROM) and the Graphics RAM (GRAM), both of which are accessed by the CPU and the STIC (but never at the same time). The System RAM is crucial from the hardware point of view, but the timing features are transparent to the programmer.
The sound chip is a GI AY-3-8914. This chip contains three separate channels of sound, each channel of which can be individually controlled for frequency and volume. There is also a noise generator on the chip, which can be added to any of the three channels. All three channels are mixed, and fed to the sound output of the TV.
GROM AND GRAM
Graphics ROM and the Graphics RAM (GROM and GRAM) are, in effect, character chips, storing shapes of images used on-screen. GRAM is programmable and GROM is not.
GRAM has space for 64 program-defined 8 by 8 bit images. Both background and moving object images are stored here; since there can be up to 8 double-resolution moving objects defined in GRAM, there are always at least 64-(8*2)=48 background locations which the program can define.
GROM contains 213 predefined 8 by 8 bit image locations (TRIVIA: it was intended to contain 256 images, but space was stolen for an overflow of system software from the EXEC ROM) which include numbers, upper and lower case alphabetic characters, punctuation, and graphics characters (triangles, lines and whatnot).
For example, GROM location #37 contains the character E stored as:
The 240 BACKTAB locations each points to a location in GRAM or GROM. For example, if BACKTAB location #1 points to GROM location #37, an E will appear in the upper left corner of the screen.
BACKTAB contains other information on the display, such as foreground and background color, and whether the character is in GROM or GRAM. Therefore, one GROM or GRAM image can be used to produce different colored images on different parts of the same screen (e.g. you can have a white E on a black background on one part of the screen and a red E on a blue background on a different part of the screen; both use the same bit images pattern stored in GROM location #37).
GROM is a GI RO-3-9503 2K ROM. GRAM is made up of two GTE 3539 256-byte static RAM chips.
The whole system is controlled by a 4K program called the Executive (the EXEC) which resides in the Intellivision's Executive ROM chip (with an additional 344 bytes over in the GROM chip). In a sense, the EXEC is the main game program, and the plug-in cartridge merely contains subroutines and data which are used by the EXEC. Normally, only EXEC routines access GROM, GRAM and the STIC control registers. The EXEC contains routines for moving objects around the screen, loading GRAM, creating sound and music, testing for moving object interaction, etc. The EXEC was written for Mattel Electronics by David Rolfe () at APh Technology Consultants. [Note: In the Intellivision, the Executive ROM is physically two 2K chips, a GI RO-3-9502 and a GI RO-3-9504; in the Intellivision II it is a single 4K GI RO-3-9506 chip.]
BUG: The EXEC's square root subroutine will crash the system if it's given a negative number. Other EXEC routines which calculate position and velocity of moving objects use this subroutine; a game can freeze if one of them is called after an object moves off the top or left side of the screen, into negative coordinates. On many games this problem showed up during testing and extra code had to be added to check for a negative position. But on some games the problem showed up too late: the released version of will freeze up sometimes when a bomb goes off the left side of the screen.
When the Intellivision II was being designed, consideration was given to fixing the square root routine bug. But the fear was that games developed and tested principally on an Intellivision II would then be more likely to crash on an original Intellivision. The bug was left as is.
FUN FACT: The least frequently asked question of the Blue Sky Rangers was from the guy who opened up his Intellivision and noticed that there is no data bus connection between the CPU and the GROM chip. How then, he asked, does the processor execute the EXEC instructions that are located in the GROM chip? The answer is that those instructions, when needed, are loaded from GROM into the BACKTAB locations of System RAM. The processor then executes them from RAM. Since BACKTAB normally defines what's on screen, the STIC is set to black out the video display while the instructions execute. These instructions are used to load picture definitions from the game cartridge into GRAM, which normally occurs only at RESET. This is why the screen goes black for a second when you press RESET, and why you occasionally see a flash of strange characters.
The scratchpad 256-by-8-bit static RAM chip (GTE 3539) is used by the EXEC and by the sound chip for temporary data storage. 147 bytes are left over for use by the game program to keep track of score, level, lives left, and other game variables.
An Intellivision has a left and a right hand controller. Each controller has a disc controller, a 12-number keypad, and 4 "action" buttons (2 on the left side and 2 on the right side). The disc controller can record any of 16 different locations when pressed, somewhat like a joystick. There are two peculiarities of the hand controller:
1. The top action keys are wired together, so there are really only three separate action buttons: left bottom, right bottom and the left/right top button.
2. The 12-number keypad duplicates the disc controller and the action keys, so you can either use the disc controller and the action buttons -- OR -- the keypad, but not both at the same time.
Each hand controller is hooked to an 8-bit input port. (These are physically the input ports of the sound chip, but that's not relevant to the programmer.) The disc controller outputs a 5-bit code; the action buttons output a 3-bit code. The 12-number keypad outputs an 8-bit code. The EXEC contains routines which debounce key inputs and convert 5-bit disc hardware codes to numbers, 0 through 15, which indicate directions. A game program can access the input ports directly, but the EXEC routines are usually used, instead.