CDP1802
# CDP1802

El RCA CDP1802 es un microprocesador de 8 bits LSI (Large Scale Integration) en formato DIP 40 fabricado en tecnología CMOS implementado utilizando la arquitectura COSMAC (Complementary Symmetry Monolithic Array Computer) lanzado por RCA a principios de 1976, siendo el primer microprocesador de la compañía en un solo chip. Es la segunda versión del COSMAC 1801 primer microprocesador CMOS, que estaba formado por dos circuitos, reunidos en uno solo en el 1802. Los aficionados por lo general se refieren a el simplemente como "el 1802". En la actualidad sigue siendo fabricado por Intersil Corporation como un microprocesador de alta fiabilidad. El 1802 tiene una arquitectura diferente de la mayoría de los otros microprocesadores de 8 bits.

En 1970 y 1971, Joseph Weisbecker desarrolló una nueva arquitectura de computadoras de 8 bits. RCA publicó el trabajo de Weisbecker como el COSMAC 1801U y 1801R (también conocido como TA6889/TA6890 y TC 1084/TC 1085) a principios de 1975, utilizando su proceso CMOS (llamado COS/MOS, acrónimo de Complementary Silicon/Metal-oxide Semiconductor). En 1976, un equipo liderado por Jerry Herzog integró los dos chips en uno, el 1802.

Los sucesores del 1802 son el CDP1804, el CDP1805 y el CDP1806, que tienen un conjunto de instrucciones extendido, otras características mejoradas (como RAM y ROM incorporadas y un temporizador incorporado), con algunas versiones funcionando a velocidades de reloj más rápidas, aunque no con una diferencia de velocidad significativa. Algunas características también se pierden, como la funcionalidad de cargador de arranque automático DMA. También hay algunos cambios menores en la función de los pines.

## Introducción

El RCA 1802 tiene un diseño CMOS de núcleo estático sin una frecuencia de reloj mínima, de modo que puede ejecutarse a velocidades muy bajas y baja potencia, incluyendo una frecuencia de reloj de cero para suspender el microprocesador sin afectar su funcionamiento. Tiene dos buses separados de 8 pines: un bus de datos bidireccional de 8 bits y un bus de direcciones multiplexando la parte alta y baja de las direcciones en dos ciclos, al contrario de lo normal, que es multiplexar las direcciones y los datos.

El 1802 tiene un puerto de salida (Q) de un solo bit, programable y comprobable, y cuatro pines de entrada que son probados directamente por una rama de su conjunto de instrucciones (EF1-EF4).

Puede direccionar 64K de memoria, RAM y ROM en cualquier combinación. Mantiene un espacio separado para periféricos que controla mediante cuatro líneas N, que toman un valor 1 a 7 cuando se direcciona un periférico. Permite la transmisión de datos entre memoria y periféricos directamente, sin pasar por el acumulador. Contiene un DMA rudimentario, utilizando R2 como puntero.

Su modo entrada/Salida (I/O) es flexible y programable, y tiene un reloj monofásico con un oscilador integrado. Su conjunto de registros consta de dieciséis registros de 16 bits. El contador de programa (PC) puede residir en cualquiera de estos, y se puede configurar mediante la instrucción SEP Rn, proporcionando una forma sencilla de implementar múltiples PCs y realizar llamadas de subrutina. (Vea las llamadas de subrutina más abajo). De forma similar, los punteros y el direccionamiento indirecto usan el registro X (instrucción SEX Rn), o los 16 registros pueden usarse como registros de propósito general. Las interrupciones DMA In y Out utilizan registros específicos.

## Arquitectura

El 1802 consta de un array de 16 registros de 16 bits, R0 a R15. Cualquiera de estos registros se puede usar como contador de programa, punteros de datos, punteros de pilas o simplemente para guardar datos. Tras el reset, R0 es el contador de programa. Se puede mover la información de los registros al acumulador y viceversa, la parte alta (R0.1) y la parte baja (R0.0) separadamente. Además de los registros, el 1802 contiene:

* D: Acumulador de 8 bits.
* P: Indica que registro actúa como contador de programa. Es de 4 bits.
* X: Indica que registro actúa como puntero de datos. Es de 4 bits.
* DF: Indicador de acarreo. Un bit.
* Q: Flag de usuario. Un bit.
* EI: Habilita la interrupción. Un bit.
* T: Registro temporal que contiene los valores de P y X, se usa bajo control del programa.

## Instrucciones y direccionamientos

* La única forma que el 1802 tiene para acceder a la memoria es indirectamente a través de los registros. Esto es M(R(n)), pero permite incrementar el registro, es decir: M(R(n)++), de modo que R(n) queda apuntando al siguiente byte. Como el contador de programa es uno de los registros, el direccionamiento inmediato no es más que M(R(P)++). Es necesario incrementar el registro para que apunte a la siguiente instrucción.
* No existen saltos relativos, sino que se dividen en tres tipos:
   * Cortos, que cambian la parte baja del contador de programa, esto es: M→R(P).0
   * Largos, que cambian los 16 bits, permitiendo saltar a cualquier parte de la memoria.
   * Skip, que solo salta un byte. También existe un Skip Long incondicional que salta dos bytes.
* No posee aritmética BCD, aunque sus derivados 1805 y 1806, sí.
* Tiene instrucciones que realizan tanto la resta "acumulador menos memoria", D - M(R(N))→ D, como "memoria menos acumulador", M(R(N)) - D → D.
* Carece de pila, de modo que ésta, si se usa, debe mantenerse mediante programa. Las versiones 1805 y 1806 incluyen "Standard Call" y "Standard Return". Son más lentas que modificar P, pero permiten un número ilimitado de subrutinas anidadas.

## Versiones

La tecnología del 1802 lo hizo atractivo para aplicaciones donde el bajo consumo era prioritario: equipos portátiles y militares. Para este ámbito, así como el aeroespacial existen versiones "endurecidas" (Hardened) frente a radiación y en silicio sobre zafiro (SOS). Huges lo fabricó como segunda fuente y en 2006 Harris lo mantiene en su catálogo, tanto comercial como hardened.

* El 1806 es un 1802 con el juego de instrucciones extendido y temporizador.
* El 1805 es un 1806 con RAM interna.

## Aplicaciones

### Resistencia a la radiación

Además de la tecnología C2L CMOS de "silicio en masa", el 1802 también estaba disponible fabricado en la tecnología Silicon on Sapphire (SOS) de proceso de semiconductores, que le da un grado de resistencia a radiación y a la descarga electrostática (ESD). Junto con sus capacidades extremas de baja potencia, esto hace que el chip sea adecuado en aplicaciones espaciales y militares (también, en el momento en que se introdujo el 1802, muy pocos, si es que los había, microprocesadores resistentes a la radiación estaban disponibles en el mercado). La versión resistente a la radiación del 1802 fue fabricada por Sandia National Laboratories bajo acuerdo con RCA.

### Tecnología espacial y ciencia

El 1802 fue utilizado en muchas naves espaciales y programas de ciencia espacial, experimentos, proyectos y módulos.

* La sonda espacial Galileo utiliza múltiples (~20) microprocesadores 1802.
* Se ha afirmado a menudo incorrectamente que el 1802 ha sido utilizado en las Viking y Voyager , pero no estaba disponible en el momento en que esas nave espacial fueron diseñadas, y las fuentes primarias describen las computadoras de Viking y de Voyager como arquitecturas muy diferentes al 1802, no estando basadas en microprocesador.
* El 1802 ha sido ampliamente utilizado en satélites de órbita terrestre, principalmente para su computadora primaria, pero desde la década de 1990 su uso como una computadora de control de vuelo de baja complejidad y sistemas de telecomunicaciones ha dominado.
   * La Fase 3-D de AMSAT (también conocida como AO-40, probablemente el último 1802 lanzado al espacio en 2000)
   * Varios satélites OSCAR
   * UoSAT-C
   * UoSAT-1 UO-9
   * MAGSAT
* El 1801 de dos chips predecesor del 1802 se utilizó en satélites AMSAT anteriores.
* También se ha verificado en la documentación de la NASA que ha sido utilizado en:
   * EL Telescopio espacial Hubble
   * La Sonda Magellan Venus
   * Sonda espacial Ulysses
* El 1802 también se usó en MASCOT (MIT Astronomical Spectrometer/Camera for Optical Telescopes), un instrumento de viaje desplegado en muchos telescopios a principios de los años ochenta.
* Al menos uno de los 57 experimentos a bordo del Long Duration Exposure Facility (LDEF: Módulo Experimental Espacial de Larga Duración) de la NASA (lanzado y recuperado por un Transbordador espacial), the Thermal Control Surfaces Experiment (TCSE - Experimento de Superficies de Control Térmico), utilizó el 1802.
* Un dispositivo de seguridad basado en 1802, el Electronic Fill Device (dispositivo de llenado electrónico), se utilizó junto con el sistema de comunicaciones seguras del transbordador espacial estadounidense, como un sistema de cifrado/descifrado basado en tierra para cargar claves de misión secreta en varios sistemas informáticos de tierra y los Shuttle antes del lanzamiento.
* Los satélites SROSS-C y SROSS-C2 de la Agencia India de Investigación Espacial lanzados en 1992 y 1994, respectivamente, utilizaron un procesador 1802. Se desconoce si los dos primeros satélites que no lanzaron (A & B) incorporaban un 1802.
* La cámara de transición explosiva (ETC - Explosive Transient Camera) basada en tierra, un monitor de cielo de campo amplio de destellos ópticos celestiales, incorporó un procesador 1802 como controlador para la electrónica de control de instrumentos (ICE).
* Un procesador 1802 fue una de las CPUs utilizados en el Paquete de Diagnósticos de Plasma Recuperable (RPDP - Recoverable Plasma Diagnostics Package), un satélite eyectable y recuperable con sistemas de soporte de vuelo y tierra, que voló en varias misiones Spacelab del transbordador espacial desde los años 80 a la década de 1990.
* Las sondas espaciales idénticas Vega 1 y 2, desarrolladas como un esfuerzo cooperativo internacional en 1985, utilizaron (entre otros procesadores) al menos dos microprocesadores 1802 cada uno en al menos dos instrumentos suministrados por Hungría, el PLAZMAG Comet Plasma Spectrometer y el Espectrómetro de partículas de alta energía TUNDE-M.
* Un procesador 1802 fue utilizado en el SupraThermal Energetic Particle telescope (STEP), subsistema del instrumento científico Energetic Particles: Acceleration, Composition and Transport (EPACT) ubicado en el satélite aún en funcionamiento de la NASA WIND lanzado en 1994.
* En 1982, durante la misión STS-3, el transbordador espacial Columbia llevó una carga útil que incluía el experimento Vehicle Charging and Potential (VCAP) como parte del módulo OSS-l, que consistía en una serie de instrumentos montados en un palet del Spacelab. Uno de los instrumentos del VCAP era la Unidad de Interfaz de Control Digital (DCIU - Digital Control Interface Unit), que incorporaba tres procesadores 1802: un microprocesador de control general, un controlador de voltaje de barrido SRPA y un monitor de señalización y visualización.
* Una de las tres naves espaciales de la misión AMPTE (Active Magnetospheric Particle Tracer Explorers o Exploradores de Trazadores de Partículas Magnetosféricas Activas) el CCE (Charge Composition Explorer), lanzado en 1984, contenía el instrumento de experimentación Medium Energy Particle Analyzer (MEPA), que utilizaba un procesador 1802 resistente a la radiación para su sistema de datos de mando y control.
* La información anecdótica de Tom Skillman, que trabajó en el proyecto, afirma que el Experimento de Composición de Plasma en el satélite ISEE-3 (o ISEE-C - International Sun-Earth Explorer #3; más tarde designado el Explorador Cometario Internacional (ICE - International Cometary Explorer)), lanzado en 1978 y perdido en 2014, contenía un microprocesador 1802. Esta información no se ha verificado a través de la documentación original.

### Microcomputadores

Un número de primeros microcomputadores se basaron en el 1802, incluyendo el COSMAC ELF (1976), Netronics ELF II, Quest SuperELF, COSMAC VIP, Comx-35, los finlandeses Telmac 1800 y Oscom Nano, los yugoslavos Pecom 32 y 64, y los sistemas Cybervision vendidos por Montgomery Ward a finales de los años 70, así como la videoconsola RCA Studio II (una de las primeras consolas en utilizar gráficos en mapa de bits). El sistema de entrenador de computadoras individuales Edukit en una sola placa (SBC - single board computer), similar a un COSMAC Elf ampliado, fue ofrecido por Modus Systems Ltd. en Inglaterra a principios de los años ochenta. Infinite Incorporated produjo un ordenador con bus S-100 para ampliación basado en el 1802 como equipo de entrenamiento a finales de los años 70 llamado el UC1800, disponible ensamblado o en forma del kit.

Como parte del trabajo de los aficionados a la Retroinformática, otras computadoras se han construido más recientemente (después de 2000), incluyendo el kit de microordenador en tarjeta de socio que se ajusta en una lata Altoids y el Spare Time Gizmos Elf 2000 (Elf 2K), entre otros. Consulte Emuladores y Simuladores para otros sistemas.

### Integración del producto

El 1802 también se usó en una variedad de otros productos y sistemas, algunos basados en la ciencia, y otros comerciales.

* Un ejemplo es el Sistema de Monitoreo de Calidad de Agua Desplegable Remota (WQMS - Remote Deployable Water Quality Monitoring System), el cual usó dos microprocesadores 1802, desarrollado como una empresa conjunta por la NASA y otras agencias federales.
* Otro ejemplo son dos versiones tempranas de Sinar Moisture Meters de 1980 y 1985.
* El dispositivo de seguimiento de tiempo Infocel TimeTrac de mediados de los 80 también incorporó el 1802 en su diseño.
* Con posterioridad a 1980 Chrysler y sus diferentes modelos de vehículos utilizan el 1802 en su segunda generación del Electronic Lean-Burn System, con control de chispa electrónica, uno de los primeros sistemas de control automáticos computarizados a bordo.
* El 1802 fue utilizado en la fabricación de muchas máquinas de pinball y arcades en España.
* Muchas patentes de EE. UU. hacen referencia al microprocesador 1802 (búsqueda: CDP1802, RCA1802, & COSMAC).
* A finales de los años setenta y principios de los ochenta, se utilizaron múltiples 1802 en una configuración maestro-esclavo en el diseño del Automated Seismic Processor (ASP) sistema de detección y análisis de microseísmos por la División de Ciencias del Laboratorio Nacional Lawrence Berkeley en la Universidad de California en Berkeley por el Departamento de Energía de los Estados Unidos.
* El 1802 fue utilizado en un cronómetro digital en el Boeing 737.
* Muchas estaciones meteorológicas automatizadas (AWS - Automated Weather Stations) desplegadas en la Antártida a principios de los años 80 utilizaron el 1802.
* Un procesador 1802 se utilizó en los últimos teléfonos de pago Kimus 1a (también conocido como PTT TE 450) de SODECO (Societe Des Compteurs de Geneve) en Europa (Países Bajos y Suiza).
* Un procesador 1802 también se utilizó en el modelo de 1977 Sherwood Micro/CPU-100 FM Tuner.
* La Armada de los Estados Unidos utilizó un sistema basado en 1802 en el desarrollo de su programa de detección, indicación y cálculo de radiación (RADIAC) de ARCADES (Automatic RADIAC Calibration And Diagnostic Equipment System) Radiation Detection, Indication, and Computation (RADIAC) en el Laboratorio Nacional Oak Ridge en colaboración con Martin Marietta en la década de 1980, creando una interfaz entre una unidad lector-registradora y un sistema informático, con el hardware implementado como una computadora RCA CDP18S600 de una sola placa y el software escrito en el intérprete RCA BASIC III.
* El Microwriter MW4 un procesador de textos de mano con un teclado de acordes de finales de 1970 y principios de 1980 utilizó un procesador 1802.
* El Cordis Sequicor I era un marcapasos con microprocesador controlado por software y controlado por software, que utiliza el microprocesador RCA 1802. Cordis también utilizó el 1802 en sus programadores de marcapasos, el Programmer III y el IAP (Inter-Active Programmer).

### Lenguajes de programación

El primer lenguaje de alto nivel disponible para el 1802 fue Forth, proporcionado por Forth, Inc. en 1976. Otros lenguajes de programación disponibles, tanto intérpretes como compiladores, son CHIP-8 (y variantes), 8th (una versión de Forth creada por Lee Hart), Tiny BASIC de Tom Pittman, C, varios ensambladores y ensambladores cruzados, entre otros. Otros lenguajes especiales fueron usados por varias agencias federales, como la NASA y sus instalaciones, incluyendo el Centro Espacial Lyndon B. Johnson, AMES, el Centro de vuelo espacial Goddard, Langley, Marshall y el Laboratorio de Propulsión a Reacción (JPL), que incluyeron el compilador cruzado HAL/S, STOIC, un lenguaje parecido al Forth, y otros.

### Emuladores y Simuladores

El chip 1802 y los ordenadores que utilizan el microprocesador han sido emulados y simulados en hardware y/o software por aficionados. Un diseño está en VHDL para un FPGA. Se creó un clon del COSMAC Elf de plena velocidad y bus exacto sin un chip de microprocesador CDP1802 ni el chip de vídeo CDP1861 utilizando microcontroladores PIC. Un simulador en línea del COSMAC Elf (mejorado) escrito en JavaScript se ejecuta en el navegador del usuario sin necesidad de descargar.

## Chips de soporte

### Chips de gráficos

En los primeros microcomputadores basados en 1802, el chip de vídeo, CDP1861 (para el formato de vídeo NTSC, CDP1864 para PAL ), utilizó el controlador DMA incorporado para mostrar gráficos bitmap en blanco y negro en pantallas estándar de TV. El 1861 también fue conocido como el sistema de gráficos Pixie, pantalla, chip y generador de vídeo, sobre todo cuando se utiliza en el microordenador COSMAC ELF. Otras nombres de chips conocidos para el 1861 son TA10171, TA10171V1 y TA10171X, que fueron designaciones tempranas para "muestras de ingeniería de pre-calificación" y "números de parte preliminares", aunque se han encontrado en microordenadores de producción RCA Studio II y Netronics Elfs.

El chip 1861 podría mostrar 64 pixels horizontalmente y 128 píxeles verticalmente, aunque al volver a cargar el registro R0 DMA a través del programa de controlador de software 1802 requerido y la rutina de servicio de interrupción, la resolución podría reducirse a 64 × 64 o 64 × 32 para usar menos memoria o para hacer píxeles cuadrados. 64 × 32 píxeles cuadrados creados y 256 bytes de memoria (2K bits). Esta fue la resolución habitual para el sistema de programación de juegos Chip-8. Dado que el búfer de trama de gráficos de vídeo era a menudo similar o igual en tamaño al tamaño de la memoria, no era inusual mostrar su programa/datos en la pantalla que le permite ver a la computadora pensar (es decir, procesar sus datos). Los programas que corrieron amok y se sobrescribieron accidentalmente podrían ser espectaculares.

Aunque las versiones más rápidas de 1802 podían operar a 4-5 MHz (a 5 V, era más rápida (6,4 MHz) a 10 V), normalmente se operaba a 3,58 MHz dividido por 2 (1,76 MHz) para satisfacer los requisitos de la norma 1861 que dio una velocidad de poco más de 100.000 instrucciones por segundo.

El circuito integrado CDP1862 Color Generator Circuit IC, un chip auxiliar del 1861, podría utilizarse para generar gráficos en color. Algunos sistemas informáticos, como el Pecom 64, utilizaban el VIS (Video Interface System), que consistía en los chips auxiliares CDP1869 y CDP1870, para gráficos de color de mayor resolución.

Ejemplos de Pixie Graphic Display Imagery :

| Icónico ejemplo de gráficos Pixie del COSMAC Elf mostrando una nave espacial tipo Star Trek y el código de programa, mediante el emulador Octo Chip-8 en resolución 64x32. | Pantalla del juego Mastermind, mediante el emulador Octo Chip-8 en resolución 64x32. | Pantalla del juego Space Jam!, mediante el emulador Octo Chip-8 en resolución 64x32. |
| - | - | - |

## Ejemplo de código

Este ejemplo de fragmento de código es una rutina de diagnóstico que prueba las operaciones ALU (Arithmetic and Logic Unit).

Nota: La rutina anterior supone que el microprocesador CDP1802 está en un estado de reinicio inicial (o que se ha configurado como tal antes de ejecutar este código). Por lo tanto, el contador de programa (PC) y el indicador de registro indirecto X se ajustan a un registro de 16 bits R0. Es por eso que se puede generar un valor inmediato, como en el ejemplo 'OUT 4,00', porque PC y X apuntan a R0. El PC se incrementa después de que el byte de instrucción de opcode se recupera de la memoria, por lo que apunta a la siguiente dirección cuando se ejecuta OUT 4. Por lo tanto, emite el valor en memoria apuntado por RX = R0, que es el siguiente byte inmediato. La instrucción OUT también incrementa el registro X, que es R0, que es también el PC, por lo que emite el valor inmediato después de la salida y continúa la ejecución del programa en la siguiente dirección de instrucción después del valor inmediato. Es por eso que ves la rutina establecida X (SEX) para registrar R6 y R0 según sea necesario. También tenga en cuenta que, aunque el código de operación OUT incrementa el registro RX, para producir fácilmente una sección de memoria ('buffer'), INP no lo hace. Almacena el valor en la dirección señalada por RX y en el acumulador de bytes de datos de 8 bits, pero RX no se modifica.

La rutina también supone que OUT 4 mostrará el valor en el LED de 8 bits del sistema de la CPU o en la pantalla hexadecimal de 2 dígitos, e IN 4 obtendrá el valor de los ocho conmutadores (o posiblemente el teclado hexadecimal). El código de operación BN4 (bucle; * = 'esta dirección'), "rama si la línea EF4 de entrada de un solo bit es lo", se usa para probar si se pulsa el botón momentáneo de "Entrada". El bucle opcode B4 ('if hi') espera que se suelte el botón. SEQ y REQ activan y desactivan la línea Q única, que suele estar conectada a un LED.

El 1802 es una "máquina de bytes", pero tiene 16 registros de 16 bits, R0-RF (a veces denominado 0-F sin el prefijo 'R'). Para hacer frente a los datos de registro de 16 bits, el programador debe obtener y poner los valores Hi o Lo de los registros utilizando el acumulador D como intermediario. Estos bytes altos y bajos de los registros a veces se denominan Rn.0 (lo) y Rn.1 (hi). Las ramas cortas son opcodes de 2 bytes con direccionamiento de página absoluta y un límite de dirección de 256 bytes. Las ramas largas son opcodes de 3 bytes con ramificación de direcciones de 16 bits.

Esta información debe hacer que la rutina sea más comprensible para cualquier programador informático que esté lo suficientemente informado como para leer "pseudo-código" y que esté al menos familiarizado con el ensamblaje y la programación del lenguaje de máquina.

