Conversión de KIM-1 a COSMAC Elf - Tipo de

A mediados de la década de 1970, si tenía su propia computadora, probablemente la construyó. Si tuviera mucho dinero y una capacidad de construcción considerable, podría hacer un Altair 8800 por alrededor de $ 395, mejor que los $ 650 para construirlo. Sin embargo, las alternativas baratas no se quedaron atrás.

En 1976, Popular Electronics lanzó planes para una computadora llamada COSMAC Elf, que podrías construir por menos de $ 100, y mucho menos si tuvieras un buen bote de basura. El diseño era lo suficientemente simple como para que se pudiera construir en un tablero de perforación o con una envoltura de alambre. Presentamos el archivo ar en línea de toda la colección de Popular Electronics, pero vaya a la página 33 de este PDF si desea ir directamente al artículo que lo inició todo. El COSMAC Elf es una gran máquina construida alrededor de un procesador RCA 1802 de 40 pines, y para muchos fue la primera computadora que tenían. Perdí mi computadora original 1802 en una tormenta y mi reciente reconstrucción en otro tipo de tormenta completamente diferente. Pero hay una manera de retomar esos gloriosos días sin empezar de cero. Reutilizaré otra distracción retrocomputadora; el KIM-1.

Lo admito, reiniciar un KIM-1 real para tomar una CPU 1802 sería difícil e innecesario y de eso no se trata este artículo. Sin embargo, tenía KIM ONE - [Oscar’s] respin desde la computadora clásica usando Arduino mini pro. Mirando el teclado, se me ocurrió que el Arduino podía simular tan fácilmente 1802 como 6502. Diablos, eso son solo dos dígitos diferentes, ¿verdad?

El resultado es bastante agradable. "Verdadero" Elf tenía 8 interruptores, pero había varias variaciones que tenían teclados, por lo que no está tan lejos. La mayoría de las computadoras élficas tenían 256 bytes de memoria (sin actualización) pero el 1802 UNO (como yo lo llamo) tiene 1K. También hay muchas otras características, incluida una ROM y una pantalla para cargar y depurar programas que no requieren espacio en la copia 1802.

Reutilizar

El KIM UNO tiene 24 interruptores. Hay 16 para los dígitos hexadecimales, por supuesto. Las dos filas superiores imitan las características del KIM-1 original. Un elfo real tenía una forma de insertar un byte (generalmente 8 interruptores), un interruptor de carga, un interruptor de ejecución, un interruptor de protección de memoria y un botón pulsador conectado a un pin de la CPU. Esto significa que el hardware tiene conmutadores más que suficientes.

En el lado de la pantalla, un elfo normal tenía una pantalla de maldición de un byte, aunque algunos clones tenían más. También estaba el LED Q que un programa podía iluminar o apagar. El hardware KIM UNO tiene muchas pantallas de 7 segmentos, por lo que es posible usar esos dígitos como un elfo clon. Sin embargo, no hay ningún LED, a excepción del LED insertado del Arduino, que generalmente no es visible durante el funcionamiento. Sin embargo, las pantallas digitales tienen puntos decimales y están conectadas al Arduino. Entonces, si no le importa usarlos, también tiene muchos LED.

El hardware está abierto y es fácil de copiar. [Oscar] a veces también tienen equipo y son muy baratos (alrededor de $ 20).

El software KIM UNO es de código abierto, así que comencé por ahí. Primero eliminé todo el código del archivo principal, excepto las partes que conducían a la pantalla y al teclado, luego creé todo lo necesario para asumir la copia 1802. Puede encontrar todo el código en mi repositorio 1802UNO GitHub.

Dentro del 1802

El conjunto de instrucciones de 1802 es muy regular y bastante simple. La mayoría de las instrucciones utilizan los 4 bits superiores como código operativo y los 4 bits inferiores para seleccionar uno de los dieciséis registros de 16 bits. Entonces, 0x12 aumenta el registro 2 y 0x15 aumenta el registro 5. Hay solo un puñado de códigos operativos que no siguen este patrón. También hay un acumulador de 8 bits llamado "D" (diferente del registro D).

Una característica única en la arquitectura de 1802 es el contador de programas. No hay nadie. Bueno, más precisamente, es hasta 16. Algunos de los registros pueden ser el contador del programa y una llamada a un subprograma puede ser tan simple como cambiar el contador del programa. Desafortunadamente, esto no se remonta mucho (o es bueno para la recursividad). Si desea una llamada de subrutina adecuada, debe codificarla usted mismo. Radio Corporation of America proporcionó la "técnica estándar de llamada y devolución", que tenía la desafortunada desventaja de destruir el acumulador.

Con tan pocas instrucciones, el emulador resulta ser unas pocas declaraciones de cambio y un código bastante simple. Aunque está hecho para funcionar con el hardware KIM UNO, como el KIM UNO, debería poder usarlo con casi cualquier Arduino a través del puerto serie. No es tan divertido como tener el hardware real, pero es más simple.

Irreal

El emulador es bastante preciso, excepto que no simula interrupciones (porque no hay fuente de ellas). Sin embargo, no reproduce fielmente el régimen de carga de 1802, que utilizaba DMA. En cambio, el modo de carga es solo un código completamente personalizado que inserta datos en la memoria. No simula el ciclo y registra las manipulaciones que ocurren en 1802 real usando DMA en modo de carga.

Además de cargar un programa usando el modo de carga, también puede mover la RAM de un lado a otro a una EEPROM o computadora a través del puerto serie.

Botones de serie y de presión

El puerto serie es solo el puerto serie Arduino habitual configurado para 9600 baudios. De forma predeterminada, la entrada en serie imitará las teclas del dispositivo. Sin embargo, puede usar el signo de tubería ('|') para cambiar el puerto serie al modo final. Entonces, el código 1802 puede leer datos del puerto serie. Pierde las funciones del panel anterior y no es posible volver antes de comenzar, a menos que haga que el código 1802 libere el puerto.

Algunos botones tienen funciones especiales si los mantiene pulsados ​​durante más de un segundo. Por ejemplo, el botón AD escribe los datos de EEPROM en la RAM. Esto es útil, por ejemplo, para mantener una demostración autónoma.

Puede encontrar un resumen del teclado y los comandos seriales en el sitio web de GitHub. El puerto serie puede hacer cosas que no puede hacer desde el panel frontal, como configurar un modo de seguimiento, vaciar los registros de la CPU y más.

Edificio

El hardware no necesita cambios en el equipo KIM UNO de serie. Hay mucho que soldar y después de soldar las pantallas, sería difícil sacar el Arduino de la placa.

Probablemente podría construir el programa con el IDE de Arduino, pero usé Platform IO. Esto me permite usar el editor de mi elección, pero también debería poder iniciar el código en el IDE. Hay suficiente memoria para expandir la RAM, pero yo no. Debido a que una forma de guardar y cargar la RAM es en EEPROM, no quería que la RAM fuera más grande que la EEPROM. Además, la RAM se "asigna" como un verdadero Elf (es decir, la RAM en la ubicación 0x0 también aparece en 0x4000, 0x8000, etc.). Esto sería más difícil si agregara un poco más de 1K de RAM.

Hay algunas otras opciones en la parte superior de 1802config.h. Puede elegir la frecuencia con la que se actualizan la pantalla y el teclado. Los valores más altos se actualizan más lentamente pero ejecutan el código más rápido. Puede cambiar los puertos de E / S asociados con el teclado, las pantallas y el puerto serie. También puede cambiar la señal de escape en serie.

Ejemplos de

Se proporcionan algunos ejemplos que hacen parpadear los LED y manipulan el puerto serie. Si miras a tu alrededor, hay mucho código 1802 en el sitio. Sin embargo, tenga en cuenta que la mayoría de los 1802 no tienen hardware UART. Copian puertos serie a través de la salida Q y una de las entradas EF. Es bueno para un dispositivo real aunque necesita mucho código, pero para este dispositivo virtual no es práctico. Deberá extraer cualquier código que realice E / S en serie y reemplazarlo con instrucciones de E / S únicas.

Si tiene un archivo binario (o un formato que puede convertir a binario), tengo un convertidor escrito en C incluido en GitHub. Puede compilarlo en casi cualquier plataforma y usarlo para convertir. Siempre asume una dirección. Si esto no es apropiado, siempre puede abrir el resultado en un editor de texto y configurarlo.

Además, hay tres ROM que puedes probar. De forma predeterminada, hay un juego simple alto-bajo. También hay dos pantallas, una para usar con el teclado integrado y otra para usar con un puerto serie. Para seleccionar una ROM, edite 1802rom.h y cambie los comentarios para que la ROM deseada no sea comentada y las demás sí.

¿Práctica?

Los emuladores son divertidos, pero según la canción, nada se parece a lo real. Si eso no es lo suficientemente auténtico para ti, es posible crear una apariencia muy auténtica de un elfo, incluso hoy. La razón por la que los 1802 reales todavía existen es que tenían varias características deseables, a saber, bajo consumo de energía y resistencia a la radiación.

La simulación de Arduino no tiene ninguna de estas características. Sin embargo, es un divertido juguete informático al revés, barato y una gran herramienta de aprendizaje. La CPU es lo suficientemente simple como para programar directamente en código de máquina y la portabilidad es mejor que muchas otras computadoras de la vieja escuela.

Si desea obtener más información sobre el 1802, hay varios sitios web dedicados a él y un grupo de Yahoo muy útil. Un sitio tiene un autor de programa muy prolífico, pero la mayor parte del código no cabe en la RAM de 1K de la UNO de 1802. Quizás haya una versión con más memoria en el futuro.

  • tecnomalogía dice:

    Enlace profundo a la página de la derecha: http://www.americanradiohistory.com/Archive-Poptronics/70s/1976/Poptronics-1976-08.pdf#page=33

  • Andrés dice:

    Frio. También tengo a Kim Uno. Creo que le daré una vuelta a tu firmware ELF uno de estos días.

  • localroger dice:

    Tengo una COSMAC Super Elf. En un marco de fotos. Aunque está montado con una toma de corriente, por lo que se puede encender. Sin embargo, no lo he hecho en mucho tiempo.

    • Andrés dice:

      Cuidado con los electrolíticos al final del tablero de la izquierda. Reemplacé mi último año después de que se decidió que era el final de la línea. Un poco desordenado pero completamente conservable y sabía que sería necesario, tarde o temprano.

  • Arduinoz dice:

    ¡Esta! Por eso leo la-tecnologia. Voy a sacar un arduino y probarlo.

  • Verder dice:

    Supongo que 1K es más que el original, pero sería bueno tener más. Recordé que el pdp / avr11 lo hizo https://dave.cheney.net/2014/01/24/avr11-how-to-add-256-kilobytes-of-ram-to-an-arduino - sería posible aquí?

  • Sidra de pera dice:

    Realmente me estoy pateando el trasero ahora porque he tirado mis libros electrónicos. Casi todos los tuve buenos.
    Si los coloca en una estantería, yo diría que 8 'de ancho por 7' de alto completo. Quizás un poco más.
    Ahora solo tengo 4 cajas con algunas revistas raras y todas las computadoras canadienses y cualquier cosa de Radio Shack.
    Unas 4 o 5 cajas.
    Los saco cada dos años, los miro y disfruto de lo que había allí.
    Es muy divertido cuánto te darán $ 3 hoy.
    Estoy tan sorprendido de lo que viene ahora.

    Sigan con el buen trabajo para todos y gracias por los recuerdos.

  • Norris dice:

    Lo probé sin Kim hw y tuve que buscar algunos de los viejos códigos elfos. Funciona bien. Puede que tengas que conseguir la computadora.

    Cosas buenas

  • ospress dice:

    Alabama,
    ¡Gracias por hacer esto! Pensé en 1802 por un tiempo ...

    Agregué una pequeña pantalla Pixie al código. Simplemente conecte una de estas pantallas OLED de $ 2 en el puerto de expansión de la placa KIM Uno (o directamente en los pines I2C de Arduino) y obtendrá el icónico programa de demostración de Star Trek. O algo más que quieras ejecutar, por supuesto ...

    Descargue el código de boceto de Arduino aquí:
    https://drive.google.com/open?id=0B_jM3_1AFMbMZWl3Q0pwRzREUDQ

    Estoy trabajando para que este OLED también se comporte como la pantalla final de la máquina de escribir de TV clásica.

    • ospress dice:

      Aquí hay una publicación de blog con detalles:
      http://obsolescenceguaranteed.blogspot.ch/2017/08/the-uno1802-cosmac-elf-for-15-in-parts.html

    • Al Williams dice:

      ¡Se ve genial Oscar! Oscar también me envió esto:

Miguel Vidal
Miguel Vidal

Deja una respuesta

Tu dirección de correo electrónico no será publicada.