
The CP1600 is a
16-bit
16-bit microcomputers are microcomputers that use 16-bit microprocessors.
A 16-bit register can store 216 different values. The range of integer values that can be stored in 16 bits depends on the integer representation used. With the two ...
microprocessor
A microprocessor is a computer processor (computing), processor for which the data processing logic and control is included on a single integrated circuit (IC), or a small number of ICs. The microprocessor contains the arithmetic, logic, a ...
created in a partnership between
General Instrument
General Instrument (GI) was an American electronics manufacturer based in Horsham, Pennsylvania, specializing in semiconductors and cable television equipment. They formed in New York City in 1923 as an electronics manufacturer. During the 1950s ...
and
Honeywell
Honeywell International Inc. is an American publicly traded, multinational conglomerate corporation headquartered in Charlotte, North Carolina. It primarily operates in four areas of business: aerospace, building automation, industrial automa ...
, introduced in February 1975.
It is one of the first single-chip 16-bit processors. The overall design bears a strong resemblance to the
PDP-11
The PDP–11 is a series of 16-bit minicomputers originally sold by Digital Equipment Corporation (DEC) from 1970 into the late 1990s, one of a set of products in the Programmed Data Processor (PDP) series. In total, around 600,000 PDP-11s of a ...
.
Honeywell
Honeywell International Inc. is an American publicly traded, multinational conglomerate corporation headquartered in Charlotte, North Carolina. It primarily operates in four areas of business: aerospace, building automation, industrial automa ...
used the CP1600 in a number of
process control computers and related systems, but its most widespread use was the CP1610 version in the
Intellivision
The Intellivision (a portmanteau of intelligent television) is a home video game console released by Mattel Electronics in 1979. It distinguished itself from competitors with more realistic sports and strategic games. By 1981, Mattel Electronic ...
video game console
A video game console is an electronic device that Input/output, outputs a video signal or image to display a video game that can typically be played with a game controller. These may be home video game console, home consoles, which are generally ...
. The system saw little other use due to General Instrument's marketing philosophy of seeking out customers only with very large orders and ignoring smaller customers. They also did not pursue a
second source
In the electronics industry, a second source is a company that is licensed to manufacture and sell components originally designed by another company (the first source).
It is common for engineers and purchasers to seek components that are availab ...
arrangement, which in the early days of microprocessor designs was a requirement for most potential customers.
Description
Physical implementation

The CP1600 was implemented in
enhancement mode nMOS and required +12, +5, and −3 V power supplies; I/O connections except for the clocks were
TTL (5 V) compatible. Each microstate or processor cycle uses four internal time slots generated by two non-overlapping clocks. A 3.3 MHz two-phase clock produces a 600 nanosecond microcycle. A 5 MHz two-phase clock produces a 400 nanosecond microcycle. Due to the voltage requirements of the clock signals, these had to be generated with external circuitry, as was common in this era of microprocessor design.
In order to fit a 16-bit processor into a 40-pin
dual in-line package
In microelectronics, a dual in-line package (DIP or DIL) is an Semiconductor package, electronic component package with a rectangular housing and two parallel rows of electrical connecting pins. The package may be through-hole technology, throu ...
(DIP) chip design, the CP1600 multiplexed its data and address pins. This allowed a set of 16 pins to be used for both address selection and reading and writing data, but to do so required two bus cycles. It also complicated the overall machine layout as buffers were required on the memory bus to latch the address while the processor switched the pins to data mode. The interface to the system was likewise complex, requiring three pins, , and , which had to be decoded to understand what state the memory bus was in.
A relatively uncommon feature of the CP1600 was its "external branch" concept. This was implemented as four pins on the chip, through , which held the lower four bits of the instruction opcode. When this instruction is performed, the pins are activated and are used to indicate which of up to sixteen external systems should be sampled. Those devices would then respond to the query by setting pin, and the state of this pin would then determine whether the branch was taken or not. This could be used, for instance, to test whether an external device had input data that needed to be processed; the processor could express the value "2" on the to sample device 2, call the , and that device would then respond by setting to true if there was data, causing the processor to jump into the code to read the data from that device.
This contrasts with the typical solution for handling external devices; most systems have the devices
raise an interrupt which causes the processor to call special code, the
interrupt handler
In computer systems programming, an interrupt handler, also known as an interrupt service routine (ISR), is a special block of code associated with a specific interrupt condition. Interrupt handlers are initiated by hardware interrupts, software ...
, which then reads additional data to determine which device called the interrupt. This additional data may be presented using dedicated pins on the CPU, but is often presented as a value on the
data bus
In computer architecture, a bus (historically also called a data highway or databus) is a communication system that transfers data between components inside a computer or between computers. It encompasses both hardware (e.g., wires, optical ...
. The interrupt handler code then decides which
device driver
In the context of an operating system, a device driver is a computer program that operates or controls a particular type of device that is attached to a computer or automaton. A driver provides a software interface to hardware devices, enabli ...
to call to process the data. The CP1600 can implement this in fewer instructions; the interrupt handler is simply a series of instructions pointing at the associated drivers which it runs through one at a time until the device in question sets the and automatically cause the code to branch.
In total, implementing a system using the CP1600 often required additional support chips and logic. This included a system to multiplex sixteen signals into a single pin if the external branching was being used, and a three-bit-to-eight-line converter to avoid having to decode the bus status signals in external parts.
Instruction set and registers
The smallest unit of addressable and writable memory is the 16-bit word; byte addressing is not supported. The CP1600 can address 64K words. Of the 16-bits available in an instruction
opcode
In computing, an opcode (abbreviated from operation code) is an enumerated value that specifies the operation to be performed. Opcodes are employed in hardware devices such as arithmetic logic units (ALUs), central processing units (CPUs), and ...
, the CP1600 used only 10. The remaining 6 bits were marked "Future Use." The 10-bit instructions meant that code stored in a typical byte-oriented ROM would waste six bits per instruction. In the era of expensive memory, this was a significant issue. To address this, General Instrument also produced special 10-bit ROMs that efficiently stored the instructions. As data and addresses would still require 16-bit values, the 1600 included a special SDBD instruction that pieced together a 16-bit argument from two 10-bit ROM reads.
The unused 6 bits were intended to be used with co-processors, asserting the line which stalled the CPU until released. Early documentation shows two planned chips in the series, the 1616 which added the "Extended Instruction Set", and the 1618 "Priority Expander".
The system included 87 basic instructions. Instructions might be one to three 16-bit words long depending on the addressing format being used. The CP1600 did not support memory-memory indirect addressing (offsets), and looping was implemented using a dedicated adder that performed single-cycle changes to addresses in memory. The
arithmetic logic unit
In computing, an arithmetic logic unit (ALU) is a Combinational logic, combinational digital circuit that performs arithmetic and bitwise operations on integer binary numbers. This is in contrast to a floating-point unit (FPU), which operates on ...
(ALU) was 16-bit wide and could add two 16-bit internal registers in 2.4 microseconds, and memory to register adds of 16-bit numbers in 3.2 microseconds.
Like the PDP-11, the CP1600 used eight 16-bit "general purpose"
processor register
A processor register is a quickly accessible location available to a computer's processor. Registers usually consist of a small amount of fast storage, although some registers have specific hardware functions, and may be read-only or write-onl ...
s, although they were not truly general-purpose as in modern designs. Only R0 had no pre-defined purpose and has been described as "the primary accumulator".
[Lowell Turner]
"General Instruments CP1600"
10 July 2001 R1 through R3 could be used data pointers, generally used for register-based addressing ("implied addressing"). R4 and R5 auto-incremented after being accessed, which made them useful for looping over collections of data.
R6 was the
stack pointer
A stack register is a computer central processor register whose purpose is to keep track of a call stack. On an accumulator-based architecture machine, this may be a dedicated register. On a machine with multiple general-purpose registers, it m ...
, R7 the program counter. Since both of these registers were visible to the programmer, they could be used to implement multiple stacks, or support more complex branching, among other things. There were no implicit stack instructions; when R6 was used in a "read" operation it decremented the address and then returned the data being pointed at, simulating a
POP
, and when it was used in a "write" it would write then post-increment (like R4/R5), simulating a
PUSH
.
I/O
As was common for the era, the CP1600 used
memory-mapped I/O
Memory-mapped I/O (MMIO) and port-mapped I/O (PMIO) are two complementary methods of performing input/output (I/O) between the central processing unit (CPU) and peripheral devices in a computer (often mediating access via chipset). An altern ...
, as opposed to separate I/O pins as seen on the
Intel
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California, and Delaware General Corporation Law, incorporated in Delaware. Intel designs, manufactures, and sells computer compo ...
systems. The use of a multiplexed bus and multi-state bus status made implementing I/O more difficult than would normally be the case on memory-mapped systems. This meant that implementations had to use latches or buffers to be able to interface with the CPU as it changed the bus from indicating an address to data.
[ This both negatively affected I/O performance and increased the complexity of the I/O devices.
To address this problem, GI supplied a series of 164x dedicated I/O chips that implemented the required bus logic. These included, for instance, the 1641 keyboard controller, the 1643 cassette tape controller, and the 1647 display control. Most famous among these is the 1640 "Programmable Interface Controller", or PIC, which was designed to work in concert with the CP1600 and act as a ]channel controller
In computing, channel I/O is a high-performance input/output (I/O) architecture that is implemented in various forms on a number of computer architectures, especially on mainframe computers. In the past, channels were generally implemented with cu ...
for the CPU. As with the other 1640 series chips, the PIC internally decoded the bus logic, but also added a very simple processor that could run its own programs to perform I/O and direct memory access
Direct memory access (DMA) is a feature of computer systems that allows certain hardware subsystems to access main system computer memory, memory independently of the central processing unit (CPU).
Without DMA, when the CPU is using programmed i ...
. For instance, one might send an instruction to a PIC on a floppy disk
A floppy disk or floppy diskette (casually referred to as a floppy, a diskette, or a disk) is a type of disk storage composed of a thin and flexible disk of a magnetic storage medium in a square or nearly square plastic enclosure lined with a ...
card to read data from a given sector on the disk. The PIC would then read the data into its own internal buffer, watch the bus for unused time when the bus status pins were all zero, and then send data to main memory.
General Instrument provided cross-assemblers and simulators/debuggers compatible with 16-bit or larger minicomputer
A minicomputer, or colloquially mini, is a type of general-purpose computer mostly developed from the mid-1960s, built significantly smaller and sold at a much lower price than mainframe computers . By 21st century-standards however, a mini is ...
s. GI also provided a standalone CP1600 based microcomputer system in the GIC1600.
Uses
The CP1610, used in game consoles such as the Champion 2711 and most notably the Intellivision
The Intellivision (a portmanteau of intelligent television) is a home video game console released by Mattel Electronics in 1979. It distinguished itself from competitors with more realistic sports and strategic games. By 1981, Mattel Electronic ...
, is a compatible member of the 1600 microprocessor family. It uses a 2 MHz two-phase clock producing a 1 microsecond processor cycle. The CP1610 in the NTSC
NTSC (from National Television System Committee) is the first American standard for analog television, published and adopted in 1941. In 1961, it was assigned the designation System M. It is also known as EIA standard 170.
In 1953, a second ...
Intellivisions uses a 1.7897725 MHz two-phase clock. Although users of the CP1600 in the traditional computer role were relatively rare, over 3 million Intellivisions were produced from 1980 until the video game crash of 1983
The video game crash of 1983 (known in Japan as the Atari shock) was a large-scale recession in the video game industry that occurred from 1983 to 1985 in the United States. The crash was attributed to several factors, including market saturatio ...
led to the closing of the Intellivision production lines in 1984.
Production of the CP1600 ended in 1985 when General Instrument spun off its microelectronics division to create Microchip Technology
Microchip Technology Incorporated is a publicly listed American semiconductor corporation that manufactures microcontroller, mixed-signal, analog, and Flash-IP integrated circuits.
Its corporate headquarters is located in Chandler, Arizona. ...
. By this point a number of 32-bit designs like the MC68000 were available that limited interest in a 16-bit design like the CP1600, and their main existing customer, the Intellivision, was no longer in production. Many other products were also end-of-lifed at the same time, and their primary product was the PIC.
Notes
References
Citations
Bibliography
*
* {{cite book
, title=Series 1600 Microprocessor System
, publisher=General Instrument
, date=1975
, url=http://www.bitsavers.org/components/gi/CP1600/CP-1600_Microprocessor_Users_Manual_May75.pdf
, ref=CITEREFSeries16001975
External links
"CP1610"
at th
Intellivision Wiki
CP1600
Honeywell
Intellivision
16-bit microprocessors