right|thumb|180px|RCA CDP1802 die shot

The COSMAC (Complementary Symmetry Monolithic Array Computer) is an 8-bit microprocessor family introduced by RCA. It is historically notable as the first CMOS microprocessor. The first production model was the two-chip CDP1801R and CDP1801U, which were later combined into the single-chip CDP1802. The 1802 represented the majority of COSMAC production, and today the entire line is known simply as the RCA 1802.

The processor design traces its history to an experimental home computer designed by Joseph Weisbecker in the early 1970s, built at his home using TTL components. RCA began development of the CMOS version of the processor design in 1973, sampling it in 1974 with plans to move to a single-chip implementation immediately. Jerry Herzog led the design of the single-chip version, which sampled in 1975 and entered production in 1976.

In contrast to most designs of the era, which were fabricated using the NMOS process, the COSMAC was implemented in CMOS form and used static logic. This allowed it to run at lower power settings and even be stopped completely; in addition it would run cooler and not generate as much heat as NMOS chips. RCA also produced radiation hardened versions, which found use in the aerospace field. These remain in production as of 2022,

Successors to the 1802 are the CDP1804, CDP1805, and CDP1806, which have an extended instruction set, other enhanced features (like on-chip RAM and ROM, and built-in timer), with some versions running at faster clock speeds, though not a significant speed difference. Some features are also lost, like the DMA auto-boot loader functionality. There are also some minor pin function changes, but as of 2026 the line continues to be produced in its original 40-pin dual in-line package (DIP) format.

History

FRED

Joseph Weisbecker had long been fascinated with the potential for computers in the home, having stated as early as 1955 that he expected they would one day be built into practically every device. The technology of the era made small embedded computers impossible, but the introduction of the integrated circuit (IC) in the 1960s changed things dramatically. In 1974 he described the possibilities in an IEEE Computer article:

Beginning in 1970, Weisbecker began the design of a small machine using RCA transistor-transistor logic (TTL) ICs to construct the processor. Other parts, switches and lamps and such, he had to buy from Radio Shack, deliberately spreading his purchases around four stores so no one would ask him why he was buying so many parts. The design was running in October 1971, containing 100 chips spread over multiple circuit boards.

The result, which he called FRED, ostensibly for Flexible Recreational Educational Device, was packaged into a box that was not unlike the Altair 8800 of a few years later, with toggle switches on the front panel for input, lamps for output, and later adding a hex pad keyboard. Weisbecker added new features continually and by 1972 it had gained a character generator and the ability to load and save programs on cassette tapes.

Weisbecker's daughter, Joyce Weisbecker, was immediately drawn to the system and began writing programs for it. This included several games, which were ported to later machines based on the COSMAC. When RCA entered the game console business in the later 1970s, these games were burned to ROM cartridge form, and Joyce became the first known female commercial videogame developer.

Release

Weisbecker demonstrated the machine to RCA management throughout this period, but there was little interest at first. This was shortly after David Sarnoff had retired and handed the CEO role to his son, Robert Sarnoff. Robert was more interested in building the media side of the company while dating recording stars, ignoring RCA Laboratories in spite of a number of industry-leading developments taking place there. Some of the skepticism displayed by management may have had to do with the company's recent sale of their mainframe computer business to Sperry Rand with a huge writedown.

Eventually, the company became interested in the system and began adapting it to their newly introduced COS/MOS fabrication system. A 1973 lab report refers to a "prototype" being delivered in 1972, but this is likely referring to the original TTL implementation. It goes on to note that an effort to reduce the processor to a two-chip implementation with deliveries in COS/MOS in 1974. It is here that the processor is first referred to as COSMAC, for COmplementary-Symmetry-Monolithic-Array Computer. It goes on to state that another lab will be producing the system in an 8-chip silicon-on-sapphire format, although the date is simply "soon after" the CMOS versions, and that plans for a single-chip version were already being planned.

COSMAC devices

Although RCA began the development of the COSMAC in the early 1970s, it was some time before they introduced their own products based on it. In 1975, a prototype of an arcade game machine with swappable ROMs was experimented with for the coin-op business, but was ultimately abandoned.

Meanwhile, Weisbecker had adapted the original FRED, known within RCA as System 00 by this time, using the new chipset to produce a greatly simplified single-board system known as then COSMAC Elf. Building instructions were described in an article in Popular Electronics magazine in 1976, and an expanded version with various upgrades in a second article in 1977. A unique feature of the ELF is that it did not require any read only memory (ROM) for startup, instead, the processor's direct memory access (DMA) system was used to read front-panel switches directly into memory.

RCA debated whether to introduce pre-packaged versions of the ELF to the market. While they debated, further development led to a simplified machine combining the ELF with a new display driver chip, the CDP1861, to produce a game console. During this time, Joyce Weisbecker (Joseph's daughter) was hired by RCA to write several videogames for the platform, including a quiz-style educational product in partnership with Random House, one of the many companies that had been picked up by RCA's buying sprees.

After a year of discussion, the company eventually decided to release two mass-market products based on the platform, a kit computer known as the COSMAC VIP, and a game console known as the RCA Studio II. The machines had been available since 1975, but the Studio II was announced only in January 1977, a couple of months after the Fairchild Channel F became the first cartridge-based machine on the market. Both would soon be eclipsed and largely forgotten due to the release of the Atari 2600 later that year. RCA canceled the Studio II in February 1978.

RCA also released a series of modular computer systems, based on the RCA Microboard form factor from the 1802's initial release, up until the collapse of RCA itself. These were mainly aimed at industrial applications and systems development, and were highly configurable.

Embedded use

The COSMAC would find great success in the embedded market, because its CMOS design allowed it to work at lower power. By the late 1970s it was widely used in many industrial settings, and especially aerospace. Multiple 1802s were used as auxiliary IO processors in the Galileo probe to Jupiter in 1989, and it remains in use in similar roles as of 2017.

Applications

thumb |1802-based [[CyberVision 2001 logic board. It features 4K of static RAM and 1K ROM.]]

Microcomputer systems

A number of early microcomputers were based on the 1802, including the COSMAC Elf (1976), Netronics ELF II, Quest SuperELF, COSMAC VIP, Comx-35, Finnish Telmac 1800, Telmac TMC-600 and Oscom Nano, Yugoslav Pecom 32 and 64, and the CyberVision 2001 systems sold through Montgomery Ward in the late 1970s, as well as the RCA Studio II video game console (one of the first consoles to use bitmapped graphics). The Edukit single-board computer trainer system, similar to an expanded COSMAC Elf, was offered by Modus Systems Ltd. in Britain in the early 1980s. Infinite Incorporated produced an 1802-based, expandable console computer trainer in the late 1970s called the UC1800, available assembled or in kit form.

As part of 1802 retrocomputing hobbyist work, other computers have been built more recently (post-2000), including the Membership Card microcomputer kit that fits in an Altoids tin and the Spare Time Gizmos Elf 2000 (Elf 2K), among others. See for other systems.

Product integration

thumb|alt=A 40 pin DIL 1802, with eproms, crystal and other support components |The CDP1802ACE in the CT34 UK Payphone The 1802 was used in scientific instruments and commercial products.

The 1802 was used in Plessey payphones.

Post-1980 Chrysler and associated model vehicles use the 1802 in their second-generation Electronic Lean-Burn System, with electronic spark control, one of the first on-board auto computer-based control systems.

The 1802 was used in the manufacture of pinball machines and video arcade games in Spain.

Radiation hardening

A high-speed version of the 1802 was fabricated in Silicon on Sapphire (SOS) semiconductor process technology, which gives it a degree of resistance to radiation and electrostatic discharge (ESD). A different radiation-hardened version of the 1802, developed jointly by RCA and Sandia National Laboratories, was built on bulk silicon using C<sup>2</sup>L (Closed COS/MOS Logic) technology. Along with its extreme low-power abilities, this makes the chip well-suited in space and military applications. Magellan, the Plasma Wave Analyzer instrument on ESA's Ulysses spacecraft, various Earth-orbiting satellites and satellites carrying amateur radio.

Several subsystems of NASA's Hubble Space Telescope use 1802 processors, including the WFPC

and the MATs.

Military uses

A number of British military items from the 1980s and 1990s used the 1802, amongst them:

  • L1A1 Fuze Setter
  • SAWES training system (Small Arms Weapons Effects Simulator) fitted to SLR / SA80 rifles
  • Ptarmigan battlefield communications system

Programming languages

The first high-level language available for the 1802 was Forth, provided by Forth, Inc. and it was known as MicroFORTH, in 1976 (see Forth Inc's archive). Other available programming languages, both interpreters and compilers, are CHIP-8 (also invented by Joseph Weisbecker) (and variants), 8th (a version of Forth created by Lee Hart), Tom Pittman's Tiny BASIC, C, various Assemblers and cross-assemblers, and others. Other specialty languages were used by federal agencies such as NASA and its installations, including Johnson Space Center, AMES, Goddard, Langley, Marshall, and Jet Propulsion Laboratory (JPL), which included the HAL/S cross-compiler, STOIC, a Forth-like language, and others.

Interpreter for Process Structures (IPS), a programming language and development environment, was specifically written and used for real-time control of AMSAT satellites.

Emulators and simulators

The 1802 chip and computers using the microprocessor have been emulated and simulated in hardware and/or software by hobbyists. There are three designs in VHDL for an FPGA. A bus-accurate, full speed COSMAC Elf clone was created without a CDP1802 microprocessor chip or CDP1861 video chip using PIC microcontrollers. An online simulator of the COSMAC Elf (enhanced) written in JavaScript runs in the user's browser with no need to download.

Description

Introduction

thumb|RCA CDP1802 COSMAC processor DIP chip [[pinout]]

The RCA 1802 has a static core CMOS design with no minimum clock frequency, so that it can be run at very low speeds and low power, including a clock frequency of zero to suspend the microprocessor without affecting its operation.

It has two separate 8-pin buses: an 8-bit bidirectional data bus and a time-multiplexed address bus, with the high-order and low-order 8-bits of the 16-bit address being asserted with a two-clock delay on the lower address. This contrasts with most designs of the era, like the MOS 6502 and Intel 8080, which used a dedicated 16-bit address bus. The 1802 also compares unfavorably with the Intel 8085 which multiplexed its lower address on the unused data bus incurring almost no address delay at all.

The 1802 has a single bit, programmable and testable output port (Q), and four input pins that are directly tested by branch instructions (EF1-EF4). These pins allow simple input/output (I/O) tasks to be handled directly and easily programmed.

Because the instructions took 16 or 24 clock cycles to complete, the 1802 was not particularly fast. For comparison, the 6502 completes most instruction in 2 to 4 clock cycles, with the longest (official instruction) taking 7 cycles.

Part number suffix designations

Various suffixes to the CDP1802 part number denote technical specifications, including (A, B, & C) operating speed (3.2&nbsp;MHz to 6.4&nbsp;MHz), temperature (-40&nbsp;°C to +85&nbsp;°C, -55&nbsp;°C to +125&nbsp;°C), and voltage ranges (4V to 10.5V), package type (D, E, Q), and burn-in (X). These were somewhat standardized between the various source suppliers, including RCA, Intersil, Harris, Hughes Aircraft, and Solid State Scientific (SSS). Hughes used the HCMP prefix, and SSS used the SCP (and possibly BCP) prefix, instead of CDP, and had additional suffixes that have not been documented as of yet. (examples: CDP1802A, CDP1802ACE, CDP1802BCD, HCMP1802AP, SCP1802D)

{| class="wikitable"

!Suffix

!Package Type

|-

|E

|PDIP = Plastic Dual In-Line Package

|-

|D

|SBDIP = Side-Brazed Ceramic Dual In-Line Package

|-

|Q

|PLCC = Plastic Leaded Chip Carrier

|-

|X

|Burn-in

|}

Instructions

Most RCA 1802 instructions are one byte (8 bits) in length. In these instructions, the upper four bits (the high-order nibble) specify the instruction opcode and are latched into the I register during instruction fetch. The lower four bits (the low-order nibble) select one of the sixteen general-purpose registers and are latched into the N register.

For register-referencing instructions, the register designated by N provides the source or destination operand, depending on the operation. During program execution, intermediate values and state are commonly held in the selected register, allowing multi-step operations to be carried out across successive instructions.

Some instructions, such as LDI (Load Immediate), are two bytes (16 bits) in length. In these cases, the first byte contains the opcode, while the second byte supplies an immediate operand or address value that is consumed by the instruction. Program execution may also involve transfers between registers and memory, as well as conditional and unconditional branch operations, enabling control flow changes as execution proceeds.

Registers and I/O

thumb|Register model

The 1802 is an 8-bit byte machine, with minimal support for 16-bit operations, except via 2-byte manipulation. The primary accumulator is the 8-bit 'D' register (Data register). The single bit carry flag is DF (Data Flag). Most operations use the D register, including arithmetic and logic functions, and memory referencing load and store instructions. Most 16-bit operations have to work on the lower byte and then the upper byte, via D, using the DF as carry and borrow as needed.

An important feature of the 1802 is a set of sixteen registers of 16 bits each, used primarily for addressing. The SEP instruction can select any of the 16 registers to be the program counter. The SEX instruction can select any of the 16-bit registers to be the index register. Register R0 has the special use of holding the memory address for the built-in DMA controller. Register R1 has the special use of being the program counter for the interrupt handler. Some instructions use R2 for a stack.

There are instructions that allow the values in these registers to be set and read via D, separately working the upper and lower 8-bits at a time. There are also instructions to perform increment and decrement of the entire 16-bit value, and a few instructions perform automatic increment and decrement, like LDA (load advance) and STXD (store via X and decrement). 16-bit register and value comparisons would also need to use the D register as a go-between, using multiple instructions to perform the operations.

The processor has five special I/O lines. There is a single Q output that can be set with the SEQ instruction and reset with the REQ instruction. There are four external, single-bit flag inputs, EF1, EF2, EF3, and EF4, and there are eight dedicated branch instructions to conditionally branch based on the state of those input lines. There are seven INput and seven OUTput port instructions that use the R(X) register and D accumulator.

The EF and Q lines were typically used for multiple interfaces on 1802-based hobbyist computers because of the lines' favorable and easy handling. It was typical for the Q line to drive a status LED, a cassette interface, an RS-232 interface, and a speaker. This meant that the user could actually hear RS-232 and cassette data being transmitted (unless a volume control was implemented). Traditionally, the EF4 line is attached to the INPUT momentary push button on the COSMAC Elf. Other systems might use one of the other lines.

There are some other special use registers and flags, some internal, and some usable programmatically: 4-bit N, P, and X; 8-bit T; and 1-bit IE.

Branching

There are three types of unconditional and conditional branching in the 1802, Short and Long, and Skips.

Short branches are 2-byte instructions, and use 256-byte range, single byte address, page absolute addressing in the range 0 to 255 (hex FF). There is no relative branching. The short branch always jumps within the page that contains the address byte.