The COSMAC (Complementary Symmetry Monolithic Array Computer) is an
8-bit
In computer architecture, 8-bit integers or other data units are those that are 8 bits wide (1 octet). Also, 8-bit central processing unit (CPU) and arithmetic logic unit (ALU) architectures are those that are based on registers or data bu ...
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 ...
family introduced by
RCA
RCA Corporation was a major American electronics company, which was founded in 1919 as the Radio Corporation of America. It was initially a patent pool, patent trust owned by General Electric (GE), Westinghouse Electric Corporation, Westinghou ...
. It is historically notable as the first
CMOS
Complementary metal–oxide–semiconductor (CMOS, pronounced "sea-moss
", , ) is a type of MOSFET, metal–oxide–semiconductor field-effect transistor (MOSFET) semiconductor device fabrication, fabrication process that uses complementary an ...
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
Home computers were a class of microcomputers that entered the market in 1977 and became common during the 1980s. They were marketed to consumers as affordable and accessible computers that, for the first time, were intended for the use of a s ...
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,
and as of 2008 continued to be produced by
Renesas (formerly
Intersil
Intersil is an American semiconductor company headquartered in Milpitas, California. , Intersil is a subsidiary of Renesas. The previous Intersil was formed in August 1999 through the acquisition of the semiconductor business of Harris Corpor ...
).
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 the line continues to be produced in its original 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) 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
An integrated circuit (IC), also known as a microchip or simply chip, is a set of electronic circuits, consisting of various electronic components (such as transistors, resistors, and capacitors) and their interconnections. These components a ...
(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
RadioShack (formerly written as Radio Shack) is an American electronics retailer that was established in 1921 as an amateur radio mail-order business. Its parent company was purchased by Tandy Corporation in 1962, which shifted its focus from ma ...
, 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 board
A printed circuit board (PCB), also called printed wiring board (PWB), is a laminated sandwich structure of conductive and insulating layers, each with a pattern of traces, planes and other features (similar to wires on a flat surface) ...
s.
The result, which he called FRED, ostensibly for Flexible Recreational Educational Device, was packaged into a box that was not unlike the
Altair 8800
The Altair 8800 is a microcomputer introduced in 1974 by Micro Instrumentation and Telemetry Systems (MITS) based on the Intel 8080 CPU. It was the first commercially successful personal computer. Interest in the Altair 8800 grew quickly after i ...
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
A character generator, often abbreviated as CG, is a device or software that produces static or animated text (such as news crawls and credits rolls) for keying into a video stream. Modern character generators are computer-based, and they can ...
and the ability to load and save programs on
cassette tape
The Compact Cassette, also commonly called a cassette tape, audio cassette, or simply tape or cassette, is an analog audio, analog magnetic tape recording format for Sound recording and reproduction, audio recording and playback. Invented by L ...
s.
Weisbecker's daughter,
Joyce Weisbecker
Joyce Weisbecker (born 1958) is an American retired engineer and actuary. She became the first female commercial video game designer in 1976. She considers herself the first indie developer, given that she did her work as an independent contrac ...
, 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
A video game console is an electronic device that outputs a video signal or image to display a video game that can typically be played with a game controller. These may be home consoles, which are generally placed in a permanent location conne ...
business in the later 1970s, these games were burned to
ROM cartridge
A ROM cartridge, usually referred to in context simply as a cartridge, cart, cassette, or card, is a replaceable part designed to be connected to a consumer electronics device such as a home computer, video game console or, to a lesser extent, ...
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
David Sarnoff (February 27, 1891 – December 12, 1971) was a Russian and American businessman who played an important role in the American history of radio and television. He led the Radio Corporation of America (RCA) for most of his career in ...
had retired and handed the
CEO
A chief executive officer (CEO), also known as a chief executive or managing director, is the top-ranking corporate officer charged with the management of an organization, usually a company or a nonprofit organization.
CEOs find roles in variou ...
role to his son,
Robert Sarnoff
Robert W. Sarnoff (July 2, 1918 – February 23, 1997) was an American businessman best known as the chief executive officer and chairman of the board of Radio Corporation of America (RCA) after assuming those positions on the retirement of his ...
. Robert was more interested in building the media side of the company while dating recording stars, ignoring
RCA Laboratories
RCA Corporation was a major American electronics company, which was founded in 1919 as the Radio Corporation of America. It was initially a patent trust owned by General Electric (GE), Westinghouse, AT&T Corporation and United Fruit Company ...
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
A mainframe computer, informally called a mainframe or big iron, is a computer used primarily by large organizations for critical applications like bulk data processing for tasks such as censuses, industry and consumer statistics, enterpris ...
computer business to
Sperry Rand
Sperry Corporation was a major American equipment and electronics company whose existence spanned more than seven decades of the 20th century. Sperry ceased to exist in 1986 following a prolonged hostile takeover bid engineered by Burroughs ...
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
An arcade game or coin-op game is a coin-operated entertainment machine typically installed in public businesses such as restaurants, bars and amusement arcades. Most arcade games are presented as primarily game of skill, games of skill and in ...
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
Read-only memory (ROM) is a type of non-volatile memory used in computers and other electronic devices. Data stored in ROM cannot be electronically modified after the manufacture of the memory device. Read-only memory is useful for storing s ...
(ROM) for startup, instead, the processor's
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 ...
(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
In electronics/computer hardware, a display driver is usually a semiconductor integrated circuit (but may alternatively comprise a state machine made of discrete logic and other components) which provides an interface function between a micr ...
chip, the
CDP1861, to produce a
game console
A video game console is an electronic device that outputs a video signal or image to display a video game that can typically be played with a game controller. These may be home consoles, which are generally placed in a permanent location conne ...
. During this time, Joyce Weisbecker (Joseph's daughter) was hired by RCA to write several
videogame
A video game or computer game is an electronic game that involves interaction with a user interface or input device (such as a joystick, controller, keyboard, or motion sensing device) to generate visual feedback from a display device, most ...
s for the platform, including a quiz-style educational product in partnership with
Random House
Random House is an imprint and publishing group of Penguin Random House. Founded in 1927 by businessmen Bennett Cerf and Donald Klopfer as an imprint of Modern Library, it quickly overtook Modern Library as the parent imprint. Over the foll ...
, 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 RCA Studio II is a home video game console made by RCA that debuted in January 1977. The graphics of Studio II games were black and white and resembled those of earlier Pong consoles and their clones. The Studio II also did not have joysti ...
. 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
The Fairchild Channel F, short for "Channel Fun", is a home video game console, the first to be based on a microprocessor and to use ROM cartridges (branded ' Videocarts') instead of having games built-in. It was released by Fairchild Camera and ...
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
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 (Atari VCS), it popularized microprocessor-based hardware and games stored on swappable ROM cartridg ...
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 was unique among early 8-bit processors in that it had been explicitly designed for microcomputer use; other designs of the era were invariably aimed at the
embedded processor
An embedded system is a specialized computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is em ...
space, and those that had been designed for computer use were generally more complex systems, and often 16-bit. Although the COSMAC had been designed for computer use, RCA's slow market entry and undersupported attempts in this market ultimately failed and other processors like the
MOS 6502
The MOS Technology 6502 (typically pronounced "sixty-five-oh-two" or "six-five-oh-two") William Mensch and the moderator both pronounce the 6502 microprocessor as ''"sixty-five-oh-two"''. is an 8-bit microprocessor that was designed by a small ...
,
Intel 8080
The Intel 8080 is Intel's second 8-bit computing, 8-bit microprocessor. Introduced in April 1974, the 8080 was an enhanced successor to the earlier Intel 8008 microprocessor, although without binary compatibility.'' Electronic News'' was a week ...
and
Zilog Z80
The Zilog Z80 is an 8-bit computing, 8-bit microprocessor designed by Zilog that played an important role in the evolution of early personal computing. Launched in 1976, it was designed to be Backward compatibility, software-compatible with the ...
would come to dominate this market. Ironically, COSMAC would ultimately 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
Jupiter is the fifth planet from the Sun and the List of Solar System objects by size, largest in the Solar System. It is a gas giant with a Jupiter mass, mass more than 2.5 times that of all the other planets in the Solar System combined a ...
in 1989, and it remains in use in similar roles to this day.
Applications
Microcomputer systems
A number of
early microcomputers
Early may refer to:
Places in the United States
* Early, Iowa, a city
* Early, Texas, a city
* Early Branch, a stream in Missouri
* Early County, Georgia
* Fort Early, Georgia, an early 19th century fort
Music
* Early B, stage name of Jamaican d ...
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
Montgomery Ward is the name of two successive U.S. retail corporations. The original Montgomery Ward & Co. was a mail-order business and later a department store chain that operated between 1872 and 2001; its common nickname was "Monkey Wards". ...
in the late 1970s, as well as the
RCA Studio II
The RCA Studio II is a home video game console made by RCA that debuted in January 1977. The graphics of Studio II games were black and white and resembled those of earlier Pong consoles and their clones. The Studio II also did not have joysti ...
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 ...
(one of the first consoles to use
bitmap
In computing, a bitmap (also called raster) graphic is an image formed from rows of different colored pixels. A GIF is an example of a graphics image file that uses a bitmap.
As a noun, the term "bitmap" is very often used to refer to a partic ...
ped graphics). The Edukit
single-board computer
A single-board computer (SBC) is a complete computer built on a single circuit board, with microprocessor(s), memory, input/output (I/O) and other features required of a functional computer. Single-board computers are commonly made as demonst ...
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, S-100 bus expandable console computer trainer in the late 1970s called the UC1800, available assembled or in kit form.
As part of 1802
retrocomputing
Retrocomputing is the current use of Vintage computer, older computer hardware and software. Retrocomputing is usually classed as a hobby and recreation rather than a practical application of technology; enthusiasts often collect rare and valuabl ...
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

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
Silicon on sapphire (SOS) is a hetero-epitaxial process for metal–oxide–semiconductor (MOS) integrated circuit (IC) manufacturing that consists of a thin layer (typically thinner than 0.6 μm) of silicon grown on a sapphire () wafer. S ...
(SOS) semiconductor process technology, which gives it a degree of
resistance to radiation and
electrostatic discharge
Electrostatic discharge (ESD) is a sudden and momentary flow of electric current between two differently-charged objects when brought close together or when the dielectric between them breaks down, often creating a visible electric spark, spark as ...
(ESD). A different radiation-hardened version of the 1802, developed jointly by RCA and
Sandia National Laboratories
Sandia National Laboratories (SNL), also known as Sandia, is one of three research and development laboratories of the United States Department of Energy's National Nuclear Security Administration (NNSA). Headquartered in Kirtland Air Force B ...
, was built on bulk silicon using C
2L (Closed COS/MOS Logic) technology.
Along with its extreme low-power abilities, this makes the chip well-suited in space and military applications.
(Also, at the time the 1802 was introduced, very few, if any, other radiation-hardened microprocessors were available in the market).
Space technology and science
The 1802 was used in many spacecraft and space science programs, experiments, projects and modules such as the
Galileo spacecraft
''Galileo'' was an American robotic space probe that studied the planet Jupiter and its moons, as well as the asteroids Gaspra and Ida. Named after the Italian astronomer Galileo Galilei, it consisted of an orbiter and an entry probe. It wa ...
,
Magellan, the Plasma Wave Analyzer instrument on ESA's Ulysses spacecraft, various Earth-orbiting satellites and satellites carrying amateur radio.
The 1802 was used in
NASA
The National Aeronautics and Space Administration (NASA ) is an independent agencies of the United States government, independent agency of the federal government of the United States, US federal government responsible for the United States ...
's
Hubble Space Telescope
The Hubble Space Telescope (HST or Hubble) is a space telescope that was launched into low Earth orbit in 1990 and remains in operation. It was not the Orbiting Solar Observatory, first space telescope, but it is one of the largest and most ...
.
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
Tiny BASIC is a family of dialects of the BASIC programming language that can fit into 4 or fewer KBs of memory. Tiny BASIC was designed by Dennis Allison and the People's Computer Company (PCC) in response to the open letter published by Bi ...
, 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
Stoic may refer to:
* An adherent of Stoicism
Stoicism is a school of Hellenistic philosophy that flourished in ancient Greece and Rome. The Stoics believed that the universe operated according to reason, ''i.e.'' by a God which is immersed i ...
, 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
AMSAT is a name for various amateur radio satellite organizations worldwide. In particular, it often refers to the Radio Amateur Satellite Corporation, headquartered in Washington, D.C. AMSAT organizations design, build, arrange launches for, a ...
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
VHDL (Very High Speed Integrated Circuit Program, VHSIC Hardware Description Language) is a hardware description language that can model the behavior and structure of Digital electronics, digital systems at multiple levels of abstraction, ran ...
for an
FPGA
A field-programmable gate array (FPGA) is a type of configurable integrated circuit that can be repeatedly programmed after manufacturing. FPGAs are a subset of logic devices referred to as programmable logic devices (PLDs). They consist of a ...
. A bus-accurate, full speed
COSMAC Elf clone was created without a CDP1802 microprocessor chip or CDP1861 video chip using
PIC microcontroller
A microcontroller (MC, uC, or μC) or microcontroller unit (MCU) is a small computer on a single integrated circuit. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable input/output peripherals. Pro ...
s. An online simulator of the COSMAC Elf (enhanced) written in JavaScript runs in the user's browser with no need to download.
Description
Introduction

The RCA 1802 has a
static core
In integrated circuit design, static core generally refers to a microprocessor (MPU) entirely implemented in Dynamic logic (digital electronics)#Static versus dynamic logic, static logic. A static core MPU may be halted by stopping the Cloc ...
CMOS
Complementary metal–oxide–semiconductor (CMOS, pronounced "sea-moss
", , ) is a type of MOSFET, metal–oxide–semiconductor field-effect transistor (MOSFET) semiconductor device fabrication, fabrication process that uses complementary an ...
design with no minimum
clock frequency
Clock rate or clock speed in computing typically refers to the frequency at which the clock generator of a Microprocessor, processor can generate Clock signal, pulses used to Synchronization (computer science), synchronize the operations of it ...
, 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
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 ...
and a time-multiplexed
address 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 ...
, with the high-order and low-order 8-bits of the 16-bit address being accessed on alternate clock cycles. This contrasts with most designs of the era, like the
MOS 6502
The MOS Technology 6502 (typically pronounced "sixty-five-oh-two" or "six-five-oh-two") William Mensch and the moderator both pronounce the 6502 microprocessor as ''"sixty-five-oh-two"''. is an 8-bit microprocessor that was designed by a small ...
and
Intel 8080
The Intel 8080 is Intel's second 8-bit computing, 8-bit microprocessor. Introduced in April 1974, the 8080 was an enhanced successor to the earlier Intel 8008 microprocessor, although without binary compatibility.'' Electronic News'' was a week ...
, which used a 16-bit address bus.
The 1802 has a single
bit
The bit is the most basic unit of information in computing and digital communication. The name is a portmanteau of binary digit. The bit represents a logical state with one of two possible values. These values are most commonly represented as ...
, 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
In computing, input/output (I/O, i/o, or informally io or IO) is the communication between an information processing system, such as a computer, and the outside world, such as another computer system, peripherals, or a human operator. Inputs a ...
(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 MHz to 6.4 MHz), ''temperature'' (-40 °C to +85 °C, -55 °C to +125 °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)
Registers and I/O

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. Using the SEP instruction, you can select any of the 16 registers to be the
program counter
The program counter (PC), commonly called the instruction pointer (IP) in Intel x86 and Itanium microprocessors, and sometimes called the instruction address register (IAR), the instruction counter, or just part of the instruction sequencer, ...
; using the SEX instruction, you can select any of the 16-bit registers to be the
index register
An index register in a computer's central processing unit, CPU is a processor register (or an assigned memory location) used for pointing to operand addresses during the run of a program. It is useful for stepping through String (computer science ...
. 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.
[User Manual for the CDP1802 COSMAC Microprocessor]
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 RX 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 light-emitting diode (LED) is a semiconductor device that emits light when current flows through it. Electrons in the semiconductor recombine with electron holes, releasing energy in the form of photons. The color of the light (corresp ...
, a
cassette interface, an
RS-232
In telecommunications, RS-232 or Recommended Standard 232 is a standard introduced in 1960 for serial communication transmission of data. It formally defines signals connecting between a ''DTE'' (''data terminal equipment'') such as a compu ...
interface, and the 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 pushbutton 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, X, and I; 8-bit T; and 1-bit IE.
On the Internet, there is many versions of a Table of the 1802 Instructions, here is one link :
https://www.atarimagazines.com/computeii/issue3/page52.php
There is a number of Tables in the File area for logged in members of the 1802 online club for forum at https://groups.io/g/cosmacelf/files.
Each Instruction is a single Byte, of 8 Bits. The 4 Bits to the Left, sometimes called High Order Hex Digit, are to do with the actual nature of the Instruction, and those 4 Bits are involved with the I Register. The 4 Bits to the Right, sometimes called Low Order Hex Digit, are to do with the working Register, where Data is taken from, or put into it, and those 4 Bits are involved with the N Register.
When a Program is being done, the various stages of the work and the Processes, are stored temporarily in the Register pointed to by the N Register, like what happens, when long Multiplication, or long Division, is done on a piece of paper.
Of course sometimes the Data is moved to and from the Ram Memory section, and different Branches of the Program are done,
as needed, in the flow of time.
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.
Long branches use full 16-bit addressing to support the 64K memory address space, and are the only 3-byte instructions.
Skip instructions increment the PC by one for the unconditional Short Skip, or two for the Long Skips. Only the Long Skip has conditional branching.
Subroutine calls
The processor does not have standard subroutine CALL address and RET instructions, though they can be simulated. The 16-register design makes possible some interesting subroutine call and return mechanisms, though they are better suited to small programs than general purpose coding.
A few commonly used subroutines can be called quickly by keeping their address in one of the 16 registers; however, the called subroutine must know (hard coded) what the calling PC register is to perform the "return" instruction. The SEP instruction is used to call a subroutine pointed to by one of the 16-bit registers and another SEP to return to the caller (SEP stands for ''Set Program Counter'', and selects which one of the 16 registers is to be used as the program counter from that point onward). Before a subroutine returns, it jumps to the location immediately preceding its entry point so that after the SEP "return" instruction returns control to the caller, the register will be pointing to the right value for next usage. (the processor always increments the PC after reference and usage (retrieving the next instruction to execute), so this technique works as noted)
An interesting variation of this scheme is to have two or more subroutines in a ring so that they are called in round robin order. On early hobbyist computers, tricks and techniques like this were commonly used in the horizontal refresh interrupt to reprogram the scan line address to repeat each scan line four times for the video controller.
One well-known and often-used routine is known as SCRT (Standard CALL and RETURN Technique), which allows general purpose subroutine Call and Return, including passing of parameters "in line", and nested subroutines using a stack. Although any of the available registers can be used for this technique, per programmer's preference, many use the routine supplied by RCA in the CDP1802 User Manual, where the suggested register usage is R2 = Stack Pointer, R3 = General Program Counter (PC), R4 = Call, R5 = Return, R6 = Passed Arguments Pointer (non-destructive). Even though these supportive routines are small, there is an execution speed overhead using them. (as opposed to what would be incurred if actual CALL and RET instructions were part of the microprocessor's design) This setup allows R0 to be used for DMA and R1 to be used for Interrupts, if desired, allowing R7 through RF (hex) for general program usage.
Addressing modes
Because of the 16-bit address bus, and the 8-bit data bus, the sixteen general purpose registers are 16 bits wide, but the accumulator D-register is only 8 bits wide. The accumulator, therefore, tends to be a bottleneck. Transferring the contents of one register to another involves four instructions (one Get and one Put on the HI byte of the register, and a similar pair for the LO byte: GHI R1; PHI R2; GLO R1; PLO R2). Similarly, loading a new constant into a register (such as a new address for a subroutine jump, or the address of a data variable) also involves four instructions (two load immediate, LDI, instructions, one for each half of the constant, each one followed by a Put instruction to the register, PHI and PLO).
The two addressing modes ''Indirect register'', and ''Indirect register with auto-increment'' are then fairly efficient, to perform 8-bit operations on the data in the accumulator. There are no other addressing modes, though. Thus, the ''direct addressing'' mode needs to be emulated using the four instructions mentioned earlier to load the address into a spare register; followed by an instruction to select that register as the index register; followed, finally, by the intended operation on the data variable that is pointed to by that address.
DMA and load mode
The CDP1802 has a simple built-in
DMA controller, having two DMA request lines for DMA input and output. The CPU only accesses memory during certain cycles of the multi-step machine cycle, which required between 8 and 16 clock cycles. External hardware could read or write data during these periods without interrupting the processor, a general concept known as
cycle stealing.
R0 is used as the DMA address pointer. The starting address of the DMA data would be put in R0 and then pulling the appropriate read or write pin on the CPU low. The CPU responded to the DMA request by incrementing the value in R0, so that the next request automatically stored in the next location in memory. Thus by simply repeatedly triggering the DMA pins, the system would walk through the entire memory.
The DMA controller also provides a special "load mode", which allows loading of memory while the CLEAR and WAIT inputs of the processor are active. This allows a program to be loaded without the need for a ROM-based bootstrap loader. This was used by the COSMAC Elf microcomputer and its successors to load a program from toggle switches or a hexadecimal keypad with no required software and minimal hardware. The user could simply set the switches to the next value, toggle the read, and then move on. There was no need to change the addresses, that was done automatically by the DMA stepping.
Instruction timing
Clock cycle
In electronics and especially synchronous digital circuits, a clock signal (historically also known as ''logic beat'') is an electronic logic signal (voltage or current) which oscillates between a high and a low state at a constant frequency and ...
efficiency is poor in comparison to most 8-bit microprocessors. Eight clock cycles makes up one machine cycle. Most instructions take two machine cycles (16 clock cycles) to execute; the remaining instructions take three machine cycles (24 clock cycles). By comparison, the
MOS Technology 6502
The MOS Technology 6502 (typically pronounced "sixty-five-oh-two" or "six-five-oh-two") William Mensch and the moderator both pronounce the 6502 microprocessor as ''"sixty-five-oh-two"''. is an 8-bit computing, 8-bit microprocessor that was desi ...
takes two to seven clock cycles to execute an instruction, and the
Intel 8080
The Intel 8080 is Intel's second 8-bit computing, 8-bit microprocessor. Introduced in April 1974, the 8080 was an enhanced successor to the earlier Intel 8008 microprocessor, although without binary compatibility.'' Electronic News'' was a week ...
takes four to 18 clock cycles.
Support chips
Graphics
In early 1802-based microcomputers, the companion
graphics
Graphics () are visual images or designs on some surface, such as a wall, canvas, screen, paper, or stone, to inform, illustrate, or entertain. In contemporary usage, it includes a pictorial representation of the data, as in design and manufa ...
Video Display Controller
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 ...
chip,
RCA CDP1861 (for 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 ...
video format, CDP1864 variant for
PAL
Phase Alternating Line (PAL) is a color encoding system for analog television. It was one of three major analogue colour television standards, the others being NTSC and SECAM. In most countries it was broadcast at 625 lines, 50 fields (25 ...
), used the built-in DMA controller to display black and white
bitmap
In computing, a bitmap (also called raster) graphic is an image formed from rows of different colored pixels. A GIF is an example of a graphics image file that uses a bitmap.
As a noun, the term "bitmap" is very often used to refer to a partic ...
ped graphics on standard TV screens at up to 64 pixels horizontally by 128 pixels vertically. The 1861 was also known as the Pixie graphics system.
Although the faster versions of 1802 could operate at 4–5 MHz (at 5 V; it was faster (6.4 MHz) at 10 V), it was usually operated at 3.58 MHz, divided by 2 (1.79 MHz) to suit the requirements of the 1861 chip, which gave a speed of a little over 100,000 instructions per second, though some ran at other speeds such as the ~2.8 MHz of the
Comx or 5 MHz of the
Pecom. The
COSMAC VIP, which integrated the video chip with the processor as a single purpose-built computer (rather than as an add-on to a hobbyist kit), notably ran the 1802 much slower, synchronising it exactly with the 1861 - at a non-standard 1.76064 MHz, as recommended in the Pixie's spec sheet reference design.
The CDP1862 Color Generator Circuit IC, an 1861 companion chip, could be used to generate color graphics. Some computer systems, like the
Pecom 64 or the
Telmac TMC-600, used the VIS (Video Interface System), consisting of the CDP1869 and CDP1870 companion ICs, for distinctly higher resolution color graphics, comparable to other 8-bit systems of the 1980s.
Code samples
This small code example tests the Event Flag (EF) pins. To test pins one through four, change B4 to B2, which tests EF2 pin.
LOOP
B4 EFbranch; because EF pins pins are active low this makes it behave as a not gate
REQ
BR LOOP
EFbranch
SEQ
BR LOOP
This code snippet example is a diagnostic routine that tests
ALU (Arithmetic and Logic Unit) Operations.
.. TEST ALU OPS
0000 90 GHI 0 .. SET UP R6
0001 B6 PHI 6
0002 F829 LDI DOIT .. FOR INPUT OF OPCODE
0004 A6 PLO 6
0005 E0 SEX 0 .. (X=0 ALREADY)
0006 6400 OUT 4,00 .. ANNOUNCE US READY
0008 E6 SEX 6 .. NOW X=6
0009 3F09 BN4 * .. WAIT FOR IT
000B 6C INP 4 .. OK, GET IT
000C 64 OUT 4 .. AND ECHO TO DISPLAY
000D 370D B4 * .. WAIT FOR RELEASE
000F F860 LDI #60 .. NOW GET READY FOR
0011 A6 PLO 6 .. FIRST OPERAND
0012 E0 SEX 0 .. SAY SO
0013 6401 OUT 4,01
0015 3F15 BN4 *
0017 E6 SEX 6 .. TAKE IT IN AND ECHO
0018 6C INP 4 .. (TO 0060)
0019 64 OUT 4 .. (ALSO INCREMENT R6)
001A 371A B4 *
001C E0 SEX 0 .. DITTO SECOND OPERAND
001D 6402 OUT 4,02
001F E6 SEX 6
0020 3F20 LOOP: BN4 * .. WAIT FOR IT
0022 6C INP 4 .. GET IT (NOTE: X=6)
0023 64 OUT 4 .. ECHO IT
0024 3724 B4 * .. WAIT FOR RELEASE
0026 26 DEC 6 .. BACK UP R6 TO 0060
0027 26 DEC 6
0028 46 LDA 6 .. GET 1ST OPERAND TO D
0029 C4 DOIT: NOP .. DO OPERATION
002A C4 NOP .. (SPARE)
002B 26 DEC 6 .. BACK TO 0060
002C 56 STR 6 .. OUTPUT RESULT
002D 64 OUT 4 .. (X=6 STILL)
002E 7A REQ .. TURN OFF Q
002F CA0020 LBNZ LOOP .. THEN IF ZERO,
0032 7B SEQ .. TURN IT ON AGAIN
0033 3020 BR LOOP .. REPEAT IN ANY CASE
Note: The above routine presumes that the CDP1802 microprocessor is in an initial reset state (or that it has been set as such prior to executing this code). Therefore, the program counter (PC) and the X indirect register 'pointer' are both set to 16-bit register R0. That is why you can output an immediate value, as in the example 'OUT 4,00', because PC and X are both pointing to R0. The PC is incremented after the opcode instruction byte is retrieved from memory, so it points to the next address when the OUT 4 is executed. Therefore, it outputs the value in memory pointed to by RX = R0, which is the next immediate byte. The OUT instruction also increments the X register, which is R0, which is also the PC, so it outputs the immediate value after the OUT and continues program execution at the next instruction address after the immediate value. This is why you see the routine set X (SEX) to register R6 and R0 as needed. Also note that, although the OUT opcode increments the RX register, to easily output a section of memory ('buffer'), INP does not. It stores the value at the address pointed to by RX and into the D 8-bit data byte accumulator, but RX is not modified.
The routine also presumes that OUT 4 will display the value in the CPU system's 8-bit LED or 2-digit hex display, and IN 4 gets the value from the eight toggle switches (or possibly the hex keypad). The BN4 opcode (loop; * = 'this address'), "branch if the single-bit input EF4 line is lo", is used to test if the momentary 'Input' pushbutton is pressed. The B4 opcode ('if hi') loop waits for the button to be released. SEQ and REQ turn the single Q line, which is usually attached to an LED, on and off.
The 1802 is a "byte machine", but has 16 16-bit registers, R0-RF (sometimes referred to as 0-F without the 'R' prefix). To deal with 16-bit register data, the programmer must Get and Put the Hi or Lo values of the registers using the D accumulator as the go-between. These high and low bytes of the registers are sometimes referred to as Rn.0 (lo) and Rn.1 (hi). Short Branches are 2-byte opcodes with page-absolute addressing, and a 256-byte address boundary. Long Branches are 3-byte opcodes with full 16-bit address branching.
This information should make the routine more understandable to any computer programmer who is knowledgeable enough to read "pseudo-code" and is minimally familiar with assembly and machine language programming.
Notes
References
Citations
Bibliography
*
*
*
*
External links
CDP1802A/AC/BC datasheet, 1997(
PDF
Portable document format (PDF), standardized as ISO 32000, is a file format developed by Adobe Inc., Adobe in 1992 to present documents, including text formatting and images, in a manner independent of application software, computer hardware, ...
)
CDP1802AC/3 datasheet, 2008(
PDF
Portable document format (PDF), standardized as ISO 32000, is a file format developed by Adobe Inc., Adobe in 1992 to present documents, including text formatting and images, in a manner independent of application software, computer hardware, ...
)
COSMAC ELF website(1980 text on RCA 1802 assembler)
''Minor parts of this article were originally based on material from the
Free On-line Dictionary of Computing
The Free On-line Dictionary of Computing (FOLDOC) is an online, searchable, encyclopedic dictionary of computing subjects.
History
FOLDOC was founded in 1985 by Denis Howe and was hosted by Imperial College London. In May 2015, the site was ...
, which is
licensed under the
GFDL
The GNU Free Documentation License (GNU FDL or GFDL) is a copyleft license for free documentation, designed by the Free Software Foundation (FSF) for the GNU Project. It is similar to the GNU General Public License, giving readers the rights ...
''.
{{DEFAULTSORT:Rca 1802
Radiation-hardened microprocessors
RCA brands
8-bit microprocessors