El COSMAC (Complementary Symmetry Monolithic Array Computer) es una familia de microprocesadores de 8 bits introducida por RCA . Es históricamente notable por ser el primer microprocesador CMOS . [ 1 ] El primer modelo de producción fue el CDP1801R y el CDP1801U de dos chips , que posteriormente se combinaron en el CDP1802 de un solo chip . [ 2 ] El 1802 representó la mayor parte de la producción de COSMAC, y hoy en día toda la línea se conoce simplemente como RCA 1802 .
El diseño del procesador tiene sus orígenes en un ordenador doméstico experimental diseñado por Joseph Weisbecker a principios de la década de 1970, construido en su casa con componentes TTL . RCA comenzó el desarrollo de la versión CMOS del procesador en 1973, realizando pruebas en 1974 con planes de pasar inmediatamente a una implementación en un solo chip. Jerry Herzog lideró el diseño de la versión de un solo chip, que se probó en 1975 y entró en producción en 1976. [ 3 ] [ 4 ]
A diferencia de la mayoría de los diseños de la época, que se fabricaban mediante el proceso NMOS , el COSMAC se implementó en CMOS y utilizó lógica estática . Esto le permitió funcionar con menor potencia e incluso detenerse por completo; además, funcionaba a menor temperatura y generaba menos calor que los chips NMOS. RCA también produjo versiones resistentes a la radiación , que se utilizaron en el sector aeroespacial. [ 5 ] Estas versiones siguen en producción a fecha de 2022, [ 5 ] y, a partir de 2008, Renesas (anteriormente Intersil ) continuaba produciéndolas . [ 6 ] [ 7 ]
Los sucesores del 1802 son el CDP1804, el CDP1805 y el CDP1806, que cuentan con un conjunto de instrucciones ampliado, otras características mejoradas (como RAM y ROM integradas y temporizador incorporado), y algunas versiones funcionan a velocidades de reloj más rápidas, aunque la diferencia de velocidad no es significativa. También se pierden algunas características, como la funcionalidad del cargador de arranque automático DMA . Además, existen algunos cambios menores en la función de los pines, pero a partir de 2026 la línea continúa produciéndose en su formato original de paquete DIP ( Dual In-line Package ) de 40 pines. [ 8 ]
Historia
FRED
Joseph Weisbecker llevaba mucho tiempo fascinado con el potencial de los ordenadores domésticos, y ya en 1955 afirmó que esperaba que algún día estuvieran integrados en prácticamente todos los dispositivos. La tecnología de la época hacía imposibles los pequeños ordenadores integrados, pero la introducción del circuito integrado (CI) en la década de 1960 cambió las cosas drásticamente. En 1974 describió las posibilidades en un artículo de IEEE Computer:
Durante 20 años, el hardware informático se ha vuelto cada vez más complejo, los lenguajes más intrincados y los sistemas operativos menos eficientes. Ahora, las microcomputadoras nos brindan a algunos la oportunidad de regresar a sistemas más simples. Al ser económicas, las microcomputadoras podrían abrir nuevos y vastos mercados. [ 9 ]
A partir de 1970, [ a ] Weisbecker comenzó el diseño de una pequeña máquina que utilizaba circuitos integrados de lógica transistor-transistor (TTL) de RCA para construir el procesador. Otras piezas, interruptores, lámparas y demás, las tuvo que comprar en Radio Shack , distribuyendo deliberadamente sus compras entre cuatro tiendas para que nadie le preguntara por qué compraba tantas piezas. [ 10 ] El diseño estaba en funcionamiento en octubre de 1971, conteniendo 100 chips [ 1 ] distribuidos en varias placas de circuito . [ 1 ]
El resultado, al que llamó FRED, aparentemente por Dispositivo Educativo Recreativo Flexible, se presentó en una caja similar a la del Altair 8800 de unos años después, con interruptores de palanca en el panel frontal para la entrada, lámparas para la salida y, posteriormente, un teclado hexadecimal . [ 10 ] Weisbecker añadió continuamente nuevas funciones y, para 1972, ya contaba con un generador de caracteres y la capacidad de cargar y guardar programas en cintas de casete . [ 1 ]
La hija de Weisbecker, Joyce Weisbecker , se sintió inmediatamente atraída por el sistema y comenzó a escribir programas para él. Esto incluyó varios juegos, que fueron adaptados a máquinas posteriores basadas en el COSMAC. Cuando RCA entró en el negocio de las consolas de videojuegos a finales de la década de 1970, estos juegos se grabaron en cartuchos ROM , y Joyce se convirtió en la primera mujer conocida en desarrollar videojuegos comerciales. [ 10 ]
Liberar
Weisbecker hizo demostraciones de la máquina a la gerencia de RCA durante todo este período, pero al principio hubo poco interés. Esto ocurrió poco después de que David Sarnoff se jubilara y cediera el cargo de director ejecutivo a su hijo, Robert Sarnoff . Robert estaba más interesado en desarrollar la división de medios de la compañía mientras salía con estrellas de la música, ignorando los Laboratorios RCA a pesar de que allí se estaban llevando a cabo varios desarrollos líderes en la industria. Parte del escepticismo mostrado por la gerencia pudo haber tenido que ver con la reciente venta de la división de computadoras centrales de la compañía a Sperry Rand con una importante depreciación . [ 10 ]
Finalmente, la empresa se interesó en el sistema y comenzó a adaptarlo a su sistema de fabricación COS/MOS recientemente introducido. Un informe de laboratorio de 1973 [ b ] menciona un "prototipo" entregado en 1972, pero probablemente se refiere a la implementación TTL original. Continúa señalando que se hizo un esfuerzo por reducir el procesador a una implementación de dos chips con entregas en COS/MOS en 1974. Es aquí donde el procesador se menciona por primera vez como COSMAC, por Computador de Matriz Monolítica de Simetría Complementaria. Continúa afirmando que otro laboratorio producirá el sistema en un formato de silicio sobre zafiro de 8 chips , aunque la fecha es simplemente "poco después" de las versiones CMOS, y que ya se estaban planificando planes para una versión de un solo chip. [ 11 ] [ c ]
Dispositivos COSMAC
Aunque RCA comenzó el desarrollo del COSMAC a principios de la década de 1970, pasó algún tiempo antes de que introdujeran sus propios productos basados en él. En 1975, se experimentó con un prototipo de una máquina recreativa con ROMs intercambiables para el negocio de las máquinas de monedas, pero finalmente se abandonó. [ 10 ]
Mientras tanto, Weisbecker había adaptado el FRED original, conocido en RCA como Sistema 00 en ese momento, utilizando el nuevo conjunto de chips para producir un sistema de placa única enormemente simplificado, conocido entonces como COSMAC Elf . Las instrucciones de construcción se describieron en un artículo de la revista Popular Electronics en 1976, y una versión ampliada con varias mejoras en un segundo artículo en 1977. Una característica única del ELF es que no requería ninguna memoria de solo lectura (ROM) para el arranque; en su lugar, el sistema de acceso directo a memoria (DMA) del procesador se utilizaba para leer los interruptores del panel frontal directamente en la memoria. [ 10 ]
RCA debatió si lanzar al mercado versiones preempaquetadas del ELF. Mientras tanto, el desarrollo posterior dio como resultado una máquina simplificada que combinaba el ELF con un nuevo chip controlador de pantalla , el CDP1861 , para producir una consola de videojuegos . Durante este tiempo, Joyce Weisbecker (hija de Joseph) fue contratada por RCA para escribir varios videojuegos para la plataforma, incluyendo un producto educativo tipo concurso en colaboración con Random House , una de las muchas empresas adquiridas por RCA. [ 10 ]
Tras un año de debate, la compañía finalmente decidió lanzar dos productos de consumo masivo basados en la plataforma: un ordenador en kit conocido como COSMAC VIP y una consola de videojuegos conocida como RCA Studio II . Si bien las máquinas estaban disponibles desde 1975, la Studio II se anunció recién en enero de 1977, un par de meses después de que la Fairchild Channel F se convirtiera en la primera máquina basada en cartuchos del mercado. Ambas pronto quedarían eclipsadas y prácticamente olvidadas debido al lanzamiento de la Atari 2600 ese mismo año. RCA canceló la Studio II en febrero de 1978. [ 10 ]
RCA también lanzó una serie de sistemas informáticos modulares, basados en el formato RCA Microboard desde el lanzamiento inicial del 1802, hasta el colapso de la propia RCA. Estos estaban dirigidos principalmente a aplicaciones industriales y al desarrollo de sistemas, y eran altamente configurables. [ 13 ]
Uso integrado
El COSMAC tuvo un gran éxito en el mercado de sistemas embebidos, ya que su diseño CMOS le permitía funcionar con menor consumo de energía. A finales de la década de 1970, se utilizaba ampliamente en numerosos entornos industriales, especialmente en el sector aeroespacial. Varios procesadores 1802 se emplearon como procesadores de E/S auxiliares en la sonda Galileo a Júpiter en 1989, y aún se utiliza en funciones similares en 2017. [ 10 ]
Aplicaciones

Sistemas de microcomputadoras
Varios microordenadores de la época se basaron en el 1802, entre ellos el COSMAC Elf (1976), el Netronics ELF II , el Quest SuperELF , el COSMAC VIP , el Comx-35 , el Telmac 1800 finlandés , el Telmac TMC-600 y el Oscom Nano , el Pecom 32 y 64 yugoslavo , y los sistemas CyberVision 2001 vendidos a través de Montgomery Ward a finales de la década de 1970, [ 14 ] así como la consola de videojuegos RCA Studio II (una de las primeras consolas en utilizar gráficos de mapa de bits ). El sistema de entrenamiento informático de placa única Edukit , similar a un COSMAC Elf ampliado, fue ofrecido por Modus Systems Ltd. en Gran Bretaña a principios de la década de 1980. [ 15 ] Infinite Incorporated produjo un entrenador informático de consola ampliable basado en el 1802 a finales de la década de 1970 llamado UC1800, disponible ensamblado o en forma de kit. [ 16 ] [ 17 ]
Como parte del trabajo de aficionados a la retroinformática de 1802 , se han construido otros ordenadores más recientemente (después del año 2000), incluyendo el kit de microordenador Membership Card que cabe en una lata de Altoids [ 18 ] y el Spare Time Gizmos Elf 2000 (Elf 2K) [ 19 ] , entre otros. Véase § Emuladores y simuladores para otros sistemas.
Integración de productos

El modelo 1802 se utilizó en instrumentos científicos y productos comerciales. [ 20 ] [ 21 ]
El modelo 1802 se utilizó en las cabinas telefónicas de Plessey. [ 22 ]
Los vehículos Chrysler y modelos asociados posteriores a 1980 utilizan el motor 1802 en su sistema electrónico de combustión pobre de segunda generación, con control electrónico de chispa, uno de los primeros sistemas de control a bordo basados en computadoras para automóviles. [ 23 ] [ 24 ]
El modelo 1802 se utilizó en la fabricación de máquinas de pinball y videojuegos arcade en España. [ 25 ]
Resistencia a la radiación
Se fabricó una versión de alta velocidad del 1802 con tecnología de proceso de semiconductores de silicio sobre zafiro (SOS), lo que le confiere cierta resistencia a la radiación y a las descargas electrostáticas (ESD). [ 26 ] Otra versión del 1802, resistente a la radiación y desarrollada conjuntamente por RCA y los Laboratorios Nacionales Sandia , se construyó sobre silicio masivo utilizando tecnología C2L (lógica COS/MOS cerrada). [ 27 ] [ 28 ] Junto con su consumo de energía extremadamente bajo, esto hace que el chip sea idóneo para aplicaciones espaciales y militares. [ 27 ] (Además, en el momento de la introducción del 1802, había muy pocos, o ningún, otro microprocesador resistente a la radiación disponible en el mercado).
Tecnología y ciencia espacial
El 1802 se utilizó en muchos programas, experimentos, proyectos y módulos de naves espaciales y ciencia espacial, como la nave espacial Galileo , [ 29 ] Magellan , [ 30 ] el instrumento Plasma Wave Analyzer en la nave espacial Ulysses de la ESA, varios satélites en órbita terrestre [ 31 ] y satélites que transportan radioaficionados . [ 32 ]
Varios subsistemas del Telescopio Espacial Hubble de la NASA utilizan procesadores 1802, incluidos el WFPC [ 33 ] y los MAT. [ 34 ]
Usos militares
Varios artículos militares británicos de las décadas de 1980 y 1990 utilizaron el modelo 1802, entre ellos:
- Ajustador de espoletas L1A1 [ 35 ]
- Sistema de entrenamiento SAWES (Simulador de Efectos de Armas de Fuego Ligeras) adaptado a los fusiles SLR/SA80.
- Sistema de comunicaciones de campo de batalla Ptarmigan
Lenguajes de programación
El primer lenguaje de alto nivel disponible para la 1802 fue Forth , proporcionado por Forth, Inc. y conocido como MicroFORTH, en 1976 (ver el archivo de Forth Inc.). Otros lenguajes de programación disponibles, tanto intérpretes como compiladores, son CHIP-8 (también inventado por Joseph Weisbecker ) (y variantes), 8th (una versión de Forth creada por Lee Hart), [ 36 ] Tiny BASIC de Tom Pittman , [ 37 ] C, varios ensambladores y ensambladores cruzados, y otros. Otros lenguajes especializados fueron utilizados por agencias federales como la NASA y sus instalaciones, incluyendo el Centro Espacial Johnson , AMES, Goddard, Langley, Marshall y el Laboratorio de Propulsión a Chorro (JPL), que incluían el compilador cruzado HAL/S , [ 38 ] STOIC , un lenguaje similar a Forth, [ 39 ] y otros.
El intérprete para estructuras de procesos (IPS), un lenguaje de programación y entorno de desarrollo, fue escrito y utilizado específicamente para el control en tiempo real de los satélites AMSAT . [ 40 ]
Emuladores y simuladores
El chip 1802 y las computadoras que utilizan el microprocesador han sido emulados y simulados en hardware y/o software por aficionados. Hay tres diseños en VHDL para una FPGA . [ 41 ] [ 42 ] [ 43 ] Se creó un clon de COSMAC Elf de velocidad completa y con precisión de bus sin un chip microprocesador CDP1802 ni un chip de video CDP1861 utilizando microcontroladores PIC . [ 44 ] Un simulador en línea del COSMAC Elf (mejorado) escrito en JavaScript se ejecuta en el navegador del usuario sin necesidad de descarga. [ 45 ]
Descripción
Introducción

El RCA 1802 tiene un diseño CMOS de núcleo estático sin frecuencia de reloj mínima , por lo que puede funcionar a velocidades muy bajas y con bajo consumo de energía, incluyendo una frecuencia de reloj de cero para suspender el microprocesador sin afectar su funcionamiento.
Cuenta con dos buses de 8 pines independientes: un bus de datos bidireccional de 8 bits y un bus de direcciones multiplexado en el tiempo , donde los 8 bits de orden superior e inferior de la dirección de 16 bits se activan con un retardo de dos ciclos de reloj en la dirección inferior. Esto contrasta con la mayoría de los diseños de la época, como el MOS 6502 y el Intel 8080 , que utilizaban un bus de direcciones dedicado de 16 bits. El 1802 también se compara desfavorablemente con el Intel 8085 , que multiplexaba su dirección inferior en el bus de datos no utilizado, lo que prácticamente eliminaba el retardo de dirección.
El microcontrolador 1802 cuenta con un puerto de salida programable y comprobable de un solo bit (Q), y cuatro pines de entrada que se prueban directamente mediante instrucciones de salto (EF1-EF4). Estos pines permiten gestionar tareas sencillas de entrada/salida (E/S) de forma directa y programable.
Debido a que las instrucciones tardaban 16 o 24 ciclos de reloj en completarse, el 1802 no era particularmente rápido. En comparación, el 6502 completa la mayoría de las instrucciones en 2 a 4 ciclos de reloj, y la más larga (instrucción oficial) [ 46 ] tarda 7 ciclos. [ 47 ]
Designaciones de sufijo del número de pieza
Los distintos sufijos del número de pieza CDP1802 indican especificaciones técnicas, como la velocidad de funcionamiento (A, B y C) (de 3,2 MHz a 6,4 MHz), la temperatura (de -40 °C a +85 °C, de -55 °C a +125 °C), los rangos de voltaje (de 4 V a 10,5 V), el tipo de encapsulado (D, E y Q) y la prueba de envejecimiento (X). Estas especificaciones estaban estandarizadas entre los distintos proveedores, como RCA, Intersil, Harris, Hughes Aircraft y Solid State Scientific (SSS). Hughes utilizaba el prefijo HCMP, y SSS el prefijo SCP (y posiblemente BCP), en lugar de CDP, y tenía sufijos adicionales que aún no se han documentado. (Ejemplos: CDP1802A, CDP1802ACE, CDP1802BCD, HCMP1802AP, SCP1802D) [ 48 ] .
Instrucciones
La mayoría de las instrucciones RCA 1802 tienen una longitud de un byte (8 bits). En estas instrucciones, los cuatro bits superiores (el nibble de orden superior) especifican el código de operación de la instrucción y se almacenan en el registro I durante la búsqueda de la instrucción. Los cuatro bits inferiores (el nibble de orden inferior) seleccionan uno de los dieciséis registros de propósito general y se almacenan en el registro N. [ 49 ]
Para las instrucciones que hacen referencia a registros, el registro designado por N proporciona el operando de origen o destino, según la operación. Durante la ejecución del programa, los valores intermedios y el estado se almacenan habitualmente en el registro seleccionado, lo que permite realizar operaciones de varios pasos a través de instrucciones sucesivas.
Algunas instrucciones, como LDI (Carga Inmediata), tienen una longitud de dos bytes (16 bits). En estos casos, el primer byte contiene el código de operación, mientras que el segundo proporciona un operando inmediato o un valor de dirección que la instrucción utiliza. La ejecución del programa también puede implicar transferencias entre registros y memoria, así como operaciones de bifurcación condicionales e incondicionales, lo que permite cambios en el flujo de control a medida que avanza la ejecución.
Registros y E/S
La 1802 es una máquina de bytes de 8 bits, con soporte mínimo para operaciones de 16 bits, excepto mediante manipulación de 2 bytes. El acumulador principal es el registro 'D' (registro de datos) de 8 bits. El indicador de acarreo de un solo bit es DF (indicador de datos). La mayoría de las operaciones utilizan el registro D, incluidas las funciones aritméticas y lógicas, y las instrucciones de carga y almacenamiento que hacen referencia a la memoria. La mayoría de las operaciones de 16 bits deben trabajar primero con el byte inferior y luego con el superior, a través del registro D, utilizando DF como acarreo y préstamo según sea necesario.
Una característica importante del 1802 es un conjunto de dieciséis registros de 16 bits cada uno, utilizados principalmente para el direccionamiento. La instrucción SEP puede seleccionar cualquiera de los 16 registros como contador de programa . La instrucción SEX puede seleccionar cualquiera de los registros de 16 bits como registro de índice . [ 50 ] El registro R0 tiene la función especial de almacenar la dirección de memoria para el controlador DMA integrado . El registro R1 tiene la función especial de ser el contador de programa para el manejador de interrupciones. Algunas instrucciones utilizan R2 para la pila. [ 51 ]
Existen instrucciones que permiten establecer y leer los valores de estos registros mediante el bit D, trabajando por separado con los 8 bits superiores e inferiores de forma individual. También hay instrucciones para incrementar y decrementar el valor completo de 16 bits, y algunas instrucciones realizan incrementos y decrementos automáticos, como LDA (avance de carga) y STXD (almacenamiento mediante X y decremento). Las comparaciones de registros y valores de 16 bits también requieren el uso del registro D como intermediario, utilizando múltiples instrucciones para realizar las operaciones.
El procesador cuenta con cinco líneas de E/S especiales . Dispone de una única salida Q que se puede configurar con la instrucción SEQ y restablecer con la instrucción REQ. Tiene cuatro entradas externas de un bit (EF1, EF2, EF3 y EF4) y ocho instrucciones de salto dedicadas para realizar saltos condicionales según el estado de dichas líneas de entrada. Además, cuenta con siete instrucciones de puerto de entrada y siete de salida que utilizan el registro R(X) y el acumulador D.
Las líneas EF y Q se utilizaban habitualmente para múltiples interfaces en ordenadores de aficionados basados en el microcontrolador 1802 debido a su facilidad de manejo. La línea Q solía controlar un LED de estado , una interfaz de casete , una interfaz RS-232 y un altavoz. Esto permitía al usuario escuchar la transmisión de datos RS-232 y de casete (a menos que se implementara un control de volumen). Tradicionalmente, la línea EF4 se conecta al pulsador momentáneo INPUT del COSMAC Elf. Otros sistemas podrían utilizar alguna de las otras líneas.
Existen otros registros y banderas de uso especial, algunos internos y otros utilizables mediante programación: N, P y X de 4 bits; T de 8 bits; e IE de 1 bit.
Derivación
En el modelo 1802 existen tres tipos de ramificación incondicional y condicional: corta, larga y saltos.
Las bifurcaciones cortas son instrucciones de 2 bytes y utilizan un rango de 256 bytes, una dirección de un solo byte y direccionamiento absoluto de página en el rango de 0 a 255 (hexadecimal FF). No hay bifurcación relativa. La bifurcación corta siempre salta dentro de la página que contiene el byte de dirección. [ 51 ]
Las bifurcaciones largas utilizan direccionamiento completo de 16 bits para admitir el espacio de direcciones de memoria de 64 KB, y son las únicas instrucciones de 3 bytes.
Las instrucciones Skip incrementan el contador de programa (PC) en uno para el salto corto incondicional, o en dos para los saltos largos. Solo el salto largo tiene ramificación condicional.
Llamadas a subrutinas
El procesador no dispone de instrucciones estándar de llamada a subrutina ni de retorno (RET), aunque pueden simularse. El diseño de 16 registros permite algunos mecanismos interesantes de llamada y retorno a subrutinas, si bien son más adecuados para programas pequeños que para programación de propósito general.
Algunas subrutinas de uso común se pueden llamar rápidamente manteniendo su dirección en uno de los 16 registros; sin embargo, la subrutina llamada debe saber (codificado) cuál es el registro PC que la llama para realizar la instrucción "return". La instrucción SEP se usa para llamar a una subrutina apuntada por uno de los registros de 16 bits y otra SEP para regresar al llamador. SEP significa Establecer Contador de Programa y selecciona cuál de los 16 registros se usará como contador de programa a partir de ese momento. Antes de que una subrutina regrese, salta a la ubicación inmediatamente anterior a su punto de entrada para que, después de que la instrucción "return" de SEP devuelva el control al llamador, el registro apunte al valor correcto para el siguiente uso. El procesador siempre incrementa el PC después de la referencia y el uso (apuntando a la siguiente instrucción a ejecutar), por lo que esta técnica funciona como se indicó.
Una variante interesante de este esquema consiste en tener dos o más subrutinas en anillo para que se llamen en orden rotatorio. En los primeros ordenadores para aficionados, se utilizaban comúnmente trucos y técnicas como esta en la interrupción de actualización horizontal para reprogramar la dirección de la línea de exploración y repetir cada línea cuatro veces para el controlador de vídeo.
Una rutina muy conocida y de uso frecuente es SCRT (Standard CALL and RETURN Technique), que permite la llamada y retorno de subrutinas de propósito general, incluyendo el paso de parámetros "en línea" y subrutinas anidadas mediante una pila. Si bien se puede usar cualquiera de los registros disponibles para esta técnica, según la preferencia del programador, muchos utilizan la rutina proporcionada por RCA en el Manual del Usuario del CDP1802, donde el uso sugerido de registros es: R2 = Puntero de pila, R3 = Contador de programa general (PC), R4 = Llamada, R5 = Retorno, R6 = Puntero de argumentos pasados (no destructivo). Aunque estas rutinas auxiliares son pequeñas, su uso conlleva una sobrecarga en la velocidad de ejecución, en comparación con la que se produciría si las instrucciones CALL y RET formaran parte del diseño del microprocesador. Esta configuración permite usar R0 para DMA y R1 para interrupciones, si se desea, dejando R7 a RF (hexadecimal) para uso general del programa.
Modos de direccionamiento
Debido al bus de direcciones de 16 bits y al bus de datos de 8 bits, los dieciséis registros de propósito general tienen un ancho de 16 bits, pero el registro D del acumulador solo tiene un ancho de 8 bits. Por lo tanto, el acumulador tiende a ser un cuello de botella. La transferencia del contenido de un registro a otro requiere cuatro instrucciones (una instrucción Get y una instrucción Put en el byte HI del registro, y un par similar para el byte LO: GHI R1; PHI R2; GLO R1; PLO R2). De manera similar, la carga de una nueva constante en un registro (como una nueva dirección para un salto de subrutina o la dirección de una variable de datos) también requiere cuatro instrucciones (dos instrucciones de carga inmediata, LDI, una para cada mitad de la constante, cada una seguida de una instrucción Put en el registro, PHI y PLO).
Los modos de direccionamiento Registro indirecto , Registro indirecto con autoincremento y Registro indirecto con autodecremento son bastante eficientes para realizar operaciones de 8 bits en los datos del acumulador. Sin embargo, no existen otros modos de direccionamiento. Por lo tanto, es necesario emular el modo de direccionamiento directo utilizando las cuatro instrucciones mencionadas anteriormente para cargar la dirección en un registro de reserva, seguidas de una instrucción para seleccionar ese registro como registro índice y, finalmente, la operación prevista sobre la variable de datos a la que apunta dicha dirección.
Los modos de autoincremento y autodecremento permiten crear una pila básica. En otros procesadores, los punteros de pila se implementan con operaciones de preincremento y postincremento , o alguna variante. Dado que el COSMAC solo ofrece postincremento y decremento, es necesario corregir explícitamente el puntero de pila con las instrucciones INC o DEC al cambiar de dirección. R2 se utiliza con frecuencia como puntero de pila debido a la instrucción MARK y su comportamiento ante interrupciones. STXD se puede usar para insertar y LDXI o LDA para extraer.
Si bien se admiten las operaciones de la ALU con registro indirecto y direccionamiento inmediato , no se admiten las operaciones directas de la ALU con registros. Solo se admiten cargas, almacenamientos, incrementos y decrementos en los registros.
Interrumpe
Al inicializarse el microcontrolador 1802, las interrupciones se habilitan tras la primera instrucción. Si no se desea esta habilitación, las interrupciones pueden deshabilitarse ejecutando inmediatamente una DISinstrucción seguida de un parámetro en línea de 00. Para configurar las interrupciones, R1 se carga en la dirección de la rutina de servicio de interrupción (ISR) y R2 se carga en un área que la ISR pueda usar para la pila. El acceso directo a memoria (DMA) también está siempre activo, a menos que se inhiba externamente.
Cuando la línea INT- se mantiene en nivel bajo y la instrucción actual o el ciclo DMA ha finalizado, el contenido de los registros X y P se almacena en el registro temporal T. X se establece en 2 y P en 1. Esto tiene el efecto de cambiar el contador de programa a la ISR y R(X) a una pila. IE se borra, deshabilitando las interrupciones posteriores. En este punto, la rutina de servicio de interrupción toma el control. Se utiliza una instrucción DEC R2 para asignar espacio en la pila, y una instrucción SAV copia el registro T (con el contenido anterior de X y P) a la pila. El acumulador se guarda con otra instrucción DEC R2 y STXD. DF se guarda con una instrucción SHL y otra STXD. El estado adicional, según sea necesario, se puede guardar de manera similar. El código de interrupción entonces da servicio al hardware, liberando la línea INT-.
Para salir de la rutina de servicio de interrupción, se ejecuta INC R2 para corregir el puntero de pila. Los registros guardados se restauran desde la pila. DF se restaura con LDXA y SHR. El acumulador D se restaura con LDXA. Recordemos que R1 es el puntero a la dirección de la ISR. Como R1 se ha utilizado como contador de programa desde que se inició la ISR, la dirección de la ISR que contiene se ha modificado. Esto se corrige saltando a un punto justo antes del punto de entrada de la ISR y ejecutando RET. Esto hace que R1 vuelva al punto de entrada de la ISR, habilita las interrupciones y recarga los registros X y P antiguos desde la pila, saliendo de la interrupción.
DMA y modo de carga
El CDP1802 cuenta con un controlador DMA integrado sencillo , con dos líneas de solicitud DMA para entrada y salida. La CPU solo accede a la memoria durante ciertos ciclos del ciclo de máquina multietapa, que requieren entre 8 y 16 ciclos de reloj. El hardware externo puede leer o escribir datos durante estos periodos sin interrumpir el procesador, un concepto conocido como robo de ciclo .
R0 se utiliza como puntero de dirección DMA. La dirección de inicio de los datos DMA se almacena en R0 y, a continuación, se activa el pin de lectura o escritura correspondiente de la CPU. La CPU responde a la solicitud DMA incrementando el valor de R0, de modo que la siguiente solicitud utiliza automáticamente la siguiente ubicación en la memoria. Así, al activar repetidamente los pines DMA, el sistema recorre toda la memoria, leyendo y/o escribiendo según lo indiquen las líneas de solicitud.
El controlador DMA también proporciona un modo de carga especial que permite cargar la memoria mientras las entradas CLEAR y WAIT del procesador están activas. Esto permite cargar un programa sin necesidad de un cargador de arranque basado en ROM. El microordenador COSMAC Elf y sus sucesores utilizaban este modo para cargar un programa desde interruptores o un teclado hexadecimal sin necesidad de software ni hardware adicional. El usuario simplemente configuraba los interruptores al siguiente valor, activaba la lectura y continuaba. No era necesario cambiar las direcciones, ya que esto se realizaba automáticamente mediante el control DMA.
Conjunto de instrucciones
La eficiencia del ciclo de reloj es baja en comparación con la mayoría de los microprocesadores de 8 bits. Ocho ciclos de reloj equivalen a un ciclo de máquina. La mayoría de las instrucciones requieren dos ciclos de máquina (16 ciclos de reloj) para ejecutarse; las bifurcaciones largas, los saltos largos y las instrucciones NOP requieren tres ciclos de máquina (24 ciclos de reloj). En comparación, el MOS Technology 6502 requiere de dos a siete ciclos de reloj para ejecutar una instrucción, y el Intel 8080 requiere de cuatro a dieciocho ciclos de reloj.
Chips de soporte
Gráficos
En los primeros microordenadores basados en el procesador 1802, el chip controlador de vídeo gráfico RCA CDP1861 (para el formato de vídeo NTSC y la variante CDP1864 para PAL ) utilizaba el controlador DMA integrado para mostrar gráficos de mapa de bits en blanco y negro en pantallas de televisión estándar con una resolución de hasta 64 píxeles horizontales por 128 píxeles verticales. El 1861 también era conocido como el sistema gráfico Pixie.
Aunque las versiones más rápidas del 1802 podían operar a 4-5 MHz (a 5 V ; era más rápido (6,4 MHz) a 10 V), normalmente se operaba a 3,58 MHz, dividido por 2 (1,79 MHz) para adaptarse a los requisitos del chip 1861, que proporcionaba una velocidad de poco más de 100.000 instrucciones por segundo, aunque algunos funcionaban a otras velocidades como los ~2,8 MHz del Comx o los 5 MHz del Pecom . El COSMAC VIP , que integraba el chip de vídeo con el procesador como un ordenador único diseñado específicamente para ello (en lugar de como un complemento para un kit de aficionado), notablemente ejecutaba el 1802 mucho más lento, sincronizándolo exactamente con el 1861, a una velocidad no estándar de 1,76064 MHz, como se recomendaba en el diseño de referencia de la hoja de especificaciones del Pixie. [ e ]
El circuito integrado generador de color CDP1862, un chip complementario del 1861, podía utilizarse para generar gráficos en color. Algunos sistemas informáticos, como el Pecom 64 o el Telmac TMC-600 , utilizaban el VIS (Video Interface System), compuesto por los circuitos integrados complementarios CDP1869 y CDP1870, para obtener gráficos en color de resolución notablemente superior, comparable a la de otros sistemas de 8 bits de la década de 1980.
Ejemplo de código
El siguiente código fuente en ensamblador corresponde a la subrutina CPYMEM, que copia bytes de una ubicación a otra. Tanto los punteros como el contador son de 16 bits. El microprocesador 1802 no admite las instrucciones CALL y RET mediante instrucciones dedicadas, a diferencia de casi todos los demás microprocesadores. En su lugar, se espera que un puntero se establezca en una subrutina y que la instrucción SEP se utilice para que dicho puntero sea el nuevo contador de programa (PC). Para regresar, la subrutina debe seleccionar el PC de la subrutina que la llama con otra instrucción SEP. Esto dificulta el anidamiento de subrutinas. El método de llamada SCRT (descrito previamente en la sección " Llamadas a subrutinas ") proporciona una subrutina que actúa como una llamada a una subrutina invitada y otra que actúa como una instrucción RET. Esto añade una sobrecarga considerable y utiliza algunos registros: R2 como puntero de pila, R3 como contador de programa, R4 para la rutina CALL, R5 para la rutina RETURN y R6 como puntero de argumento. CPYMEM asume que se llamó utilizando el método SCRT. Normalmente, al regresar, una subrutina se bifurca justo antes de su punto de entrada para restaurar su dirección, pero el método SCRT no requiere esto. Esta subrutina universal salta al inicio, por lo que puede llamarse con o sin SCRT.
Notas
- ↑ La fecha exacta varía entre las referencias, como sucede con la mayoría de las fechas relacionadas con el COSMAC. Edwards la sitúa en 1969, [ 10 ] mientras que la mayoría de los demás dicen 1970, la fecha que se utiliza aquí.
- ↑ Este fue el informe anual de las operaciones de 1973, publicado en algún momento de 1974. [ 11 ]
- ↑ Las fechas exactas del muestreo y la distribución general de los distintos dispositivos COSMAC siguen siendo imprecisas. Herb Johnson ha elaborado una extensa lista de informes de RCA que constituyen la base de las fechas de este artículo. [ 12 ]
- 1 2 La operación mostrada es probablemente la operación real del 1802. Sin embargo, la documentación del 1802 muestra esta operación como X:P ← M(R(X)); R(X) ← R(X) + 1; IE ← 0 o 1. Si esto fuera cierto, se incrementaría un R(X) impredecible cada vez que se produzca una interrupción.
- ↑ Sin embargo, dada la antigüedad de la máquina, esto puede deberse a que aún no se habían desarrollado las velocidades más altas, lo que significa que el procesador solo estaba clasificado para un máximo de 3,2, o posiblemente incluso solo 2,5 MHz. Aunque es un caso extremo, la máquina no sería la única en hacer funcionar una CPU muy por debajo de su velocidad nominal para ahorrar costos y complejidad en el sistema de temporización, y simplemente funcionar a 3,52 MHz habría representado un riesgo del 10%, o incluso un overclock extremo e insostenible del 41%.
Referencias
Citas
- 1 2 3 4 Cass 2018 .
- ↑ "RCA COSMAC 1802" . La página del coleccionista de chips antiguos . AntiqueTech.com. 21 de abril de 2009. Archivado del original el 2 de enero de 2013. Consultado el 27 de diciembre de 2010 .
- ↑ "Joseph Weisbecker" . Vintage-Computer.com. 8 de febrero de 2010. Archivado del original el 16 de marzo de 2012. Consultado el 27 de diciembre de 2010 .
- ↑ "Joseph A. Weisbecker (1932 - 1990)" . CosmacElf.com. Archivado del original el 16 de junio de 2014. Consultado el 27 de diciembre de 2010 .
- 1 2 Cass, Stephen. "Salón de la Fama de los Chips: RCA CDP 1802 - IEEE Spectrum" . IEEE . IEEE . Consultado el 19 de julio de 2023 .
- ↑ "CDP1802A" . Archivado del original el 9 de marzo de 2012. Consultado el 23 de agosto de 2010 .
- ↑ "CDP1802AC/3 Microprocesador CMOS de 8 bits de alta fiabilidad" . Intersil Americas LLC. 17 de octubre de 2008.
- ↑ Renesas CDP1802A en encapsulado SBDIP de 40 pines
- ↑ Weisbecker 1974 , pág. 41.
- 1 2 3 4 5 6 7 8 9 10 Edwards 2017 .
- 1 2 Lab 1973 , pág. 152.
- ↑ Johnson, Herb (11 de diciembre de 2018). "COSMAC 1801, 1802 "fechas"" .
- ↑ "RCA MCDS, Microboard Computer Development System" . RetroTechnology.com. 28 de octubre de 2020. Consultado el 8 de mayo de 2022 .
- ↑ Ruske, Dave. "Cibervisión 2001, 3001 y 4001" . COSMAC Elf . COSMACELF.COM . Consultado el 30 de junio de 2016 .
- ↑ "Anuncio de la revista Wireless World en la página 22" (PDF) . Historia de la radio estadounidense . Mayo de 1981. Consultado el 21 de enero de 2017 .
- ↑ "Informe de equipos - Microcomputadora Infinite UC1800" (PDF) . ClassicCmp.org - Computación clásica . Revista Radio Electronics. Agosto de 1977. Consultado el 22 de enero de 2017 .
- ↑ Haberhern, William (febrero de 1977). "Artículo de la revista Kilobaud, pág. 90" . Archive.org . Wayne Green . Consultado el 22 de enero de 2017 .
- ↑ Hart, Lee. "La computadora de la tarjeta de membresía de 1802" . Página principal de Lee Hart . Lee Hart . Consultado el 22 de mayo de 2016 .
- ↑ "Dispositivos de tiempo libre Elf 2000 (Elf 2K)" .
- ↑ "Cinco generaciones de medidores de humedad Sinar" . Consultado el 22 de mayo de 2016 .
- ↑ "Inforcel" . Consultado el 22 de mayo de 2016 .
- ↑ "Teléfonos públicos del Reino Unido CT24 CT25" . Consultado el 9 de enero de 2026 .
- ↑ Johnson, Herbert R. (22 de junio de 2016). "RCA/Weisbecker "Sistema 00" también conocido como "FRED"" . Retrotecnología . Consultado el 23 de junio de 2016 .
- ↑ "El sistema de control del motor Chrysler Lean Burn" . Toda la información de Mopar Chrysler . AllPar.com . Consultado el 23 de junio de 2016 .
- ↑ Donnelly, William (7 de julio de 2016). "MDCCCII (1802) | Integración de productos: aplicaciones comerciales y científicas" . Una extravagancia de retrocomputación de la CPU COSMAC 1802. William Donnelly . Recuperado el 7 de julio de 2016 .
- ↑ Briggs, GR; Connor, SJ; Sinniger, JO; Stewart, RG (agosto de 1978). "Microprocesador CMOS sobre zafiro de 40 MHz". IEEE Transactions on Electron Devices . 25 (8): 952– 959. Bibcode : 1978ITED...25..952B . doi : 10.1109/T-ED.1978.19207 .
- 1 2 Dingwall, A.; Stricker, R.; Sinniger, J. (octubre de 1977). "Un microprocesador CMOS C2L de alta velocidad". IEEE Journal of Solid-State Circuits . 12 (5). IEEE: 457– 462. doi : 10.1109/ISSCC.1977.1155726 .
- ↑ "Una familia de microprocesadores CMOS con puerta de silicio masivo resistentes a la radiación" (PDF) . IAEA.org . Consultado el 4 de junio de 2016 .>
- ↑ Tomayko, James (abril de 1987). "Computadoras en vuelos espaciales: la experiencia de la NASA" . NASA . Consultado el 6 de febrero de 2010 .
- ↑ http://www2.jpl.nasa.gov/magellan/guide4.html#4.11 La guía del explorador de Venus de la misión Magellan, Capítulo 4 - La nave espacial Magellan - Computación y software
- ↑ "RCA COSMAC VIP" . Consultado el 31 de enero de 2010 .
- ↑ http://www.amsat.org/amsat-new/AboutAmsat/amsat_history.php Archivado el 5 de octubre de 2006 en Wayback Machine Historia de AMSAT
- ↑ Afshari, A. (enero de 1993). "Cámara planetaria/de campo amplio del telescopio espacial Hubble" (PDF) . Shutterbug . Archivado del original (PDF) el 6 de octubre de 2016.
- ↑ Xapsos, MA; Stauffer, C.; Jordan, T.; Poivey, C.; Haskins, DN; Lum, G.; Pergosky, AM; Smith, DC; LaBel, KA (diciembre de 2014). "¿Cuánto tiempo puede operar de forma fiable el Telescopio Espacial Hubble? Una perspectiva de dosis total" (PDF) . IEEE Transactions on Nuclear Science . 61 (6): 3356–3362 . Bibcode : 2014ITNS...61.3356X . doi : 10.1109/TNS.2014.2360827 . hdl : 2060/20160005759 . S2CID 1792941. Archivado del original (PDF) el 27 de febrero de 2017 . Consultado el 7 de julio de 2017 .
- ↑ Desmontaje del ajustador de espoletas Royal Ordnance L1A1 , 2 de mayo de 2021 , consultado el 16 de octubre de 2022
- ↑ "Software para tarjetas de membresía" .
- ↑ "Ordenadores diminutos y TinyBasic" .
- ↑ "Estado actual del compilador HAL/S en el ordenador Modcomp Classic 7870" (PDF) .
- ↑ MASCOT (Espectrómetro Astronómico del MIT / Cámara para Telescopios Ópticos) . Enero de 1980.
- ↑ James Miller G3RUH; Paul Willmott VP9MU; Stacey Mills W4SM (2002). "Programación IPS" . AMSAT. Archivado del original el 29 de febrero de 2012. Consultado el 21 de abril de 2012 .
{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace ) - ↑ Baker, Scott (2016). "CPU 1802 codificada en VHDL" . Scott L Baker Github . Scott Baker . Recuperado el 24 de julio de 2016 .
- ↑ Smith, Eric (2009). "cosmac - Núcleo de CPU equivalente funcional del RCA COSMAC CDP1802 en VHDL" . Eric Smith Github . Eric Smith . Consultado el 9 de julio de 2019 .
- ↑ Teal, Steve (2016). "Núcleo VHDL 1802 con TinyBASIC para la placa Lattice MachXO2 Pico" . Steve Teal Github . Steve Teal . Recuperado el 9 de julio de 2019 .
- ^ Rossin, Ted (2011). "Clon elfo" . Página de inicio de Ted Rossin . Ted Rossin . Consultado el 24 de julio de 2016 .
- ↑ Donnelly, William (2011). "Simulador COSMAC Elf-ish CDP1802 en JavaScript" . Página principal de Donnelly-House . William Donnelly . Consultado el 24 de julio de 2016 .
- ↑ Landsteiner, Norbert (2021-06-05). "Now Go Bang! 6502 "Illegal" Opcodes Demystified" . Now Go Bang! . Recuperado el 2024-02-02 .
- ↑ "Conjunto de instrucciones 6502" . mass:werk .
- ↑ Shvets, Gennadiy (2 de octubre de 2016). "Familia de microprocesadores RCA 1802 (CDP1802)" . CPU-World . Gennadiy Shvets . Consultado el 17 de octubre de 2016 .
- ↑ El conjunto de instrucciones de 1802
- ↑ "¿Qué significa SEXO?" . Consultado el 26 de diciembre de 2013 .
- 1 2 Manual de usuario del microprocesador COSMAC CDP1802
Bibliografía
- Informe de investigación de 1973 (PDF) (Informe técnico). Laboratorios RCA. 1973.
- Cass, Stephen (2 de julio de 2018). "Salón de la Fama de los Chips: RCA CDP 1802" . IEEE Spectrum .
- Edwards, Benj (27 de octubre de 2017). "Redescubriendo a la primera diseñadora de videojuegos perdida de la historia" . Fast Company . Recuperado el 8 de febrero de 2026 .
- Weisbecker, Joe (marzo de 1974). "Una arquitectura de microcomputadora simplificada". IEEE Computer . 7 (3): 41– 47. Bibcode : 1974Compr...7c..41W . doi : 10.1109/MC.1974.6323475 . S2CID 30965828 .
Enlaces externos
- Hoja de datos del CDP1802A/AC/BC, 1997 ( PDF )
- Hoja de datos del CDP1802AC/3, 2008 ( PDF )
- Sitio web de COSMAC Elf
- Un breve curso de programación (texto de 1980 sobre el ensamblador RCA 1802)
- Disparo de alta resolución
Algunas partes de este artículo se basaron originalmente en material del Diccionario Gratuito en Línea de Informática , que está bajo la licencia GFDL .
- Microprocesadores resistentes a la radiación
- Computadoras RCA
- microprocesadores de 8 bits
- Introducciones relacionadas con la informática en 1974