Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Simulador Arduino Altair 8800

Componentes y suministros

Arduino Mega 2560
× 1
Arduino Due
¡Se requieren Arduino Mega o Due, no ambos!
× 1
LED (genérico)
× 36
Transistor de uso general NPN
× 36
Resistencia de 10k ohmios
× 36
Resistencia 150 ohm
× 36
Mini interruptor de palanca SPDT On-On
Para 16 interruptores de dirección (SW15-0) más interruptor de encendido
× 17
Interruptor momentáneo SPDT (On) -Off- (On)
Para interruptores de función (EJECUTAR / DETENER / EXAMINAR ...)
× 8
Lámina de metal para el respaldo del panel frontal
× 1
Módem Bluetooth SparkFun - BlueSMiRF Silver
Opcional. Conectar esto a los pines Arduino TX / RX permitirá que cualquier computadora o teléfono habilitado para bluetooth actúe como un terminal en serie para el Altair emulado.
× 1
tarjeta microSD con adaptador de tarjeta SD
Opcional. Necesario solo para la emulación de la unidad de disco, que no es necesario para que el simulador funcione.
× 1

Aplicaciones y servicios en línea

Arduino IDE
biblioteca Arduino DueFlashStorage
El Arduino Due no tiene EEPROM para almacenamiento permanente, pero con esta biblioteca los datos se pueden guardar en el -chip de memoria flash. ¡Todo lo guardado se elimina al volver a flashear el Arduino!
biblioteca soft_uart Arduino Due
Una implementación de software UART que permite que cualquier pin se utilice como una interfaz serial (similar a la biblioteca SoftwareSerial de otras plataformas Arduino). Los archivos de esta biblioteca están incluidos en la fuente del simulador ya que necesitaba hacer algunas pequeñas modificaciones para integrarlos en el simulador.

Acerca de este proyecto

Si desea construir esto pero no le gusta la idea de comenzar completamente desde cero, consulte Kit Altair-Duino de Chris Davis que viene con todos los componentes, una PCB, una carcasa y un Arduino Due preprogramado!

Aquí hay algunas fotos de otros que han creado este proyecto y lo han hecho suyo:

  • Alan Lowther encontró un bonita caja de metal para su versión y conecté una Raspberry Pi para entrada / salida y síntesis de voz.
  • Martin Zumr hizo una bonita caja de madera.
  • Chris Davis ( kb0wwp ) hizo un PCB y hermoso caso.
  • Justin Davis hizo un Escudo de Altair para Arduino Due.

Si alguien más quiere compartir su creación, avíseme y lo publicaré aquí. ¡Me encantaría ver la variedad de versiones que se le ocurren a la gente!

Durante mucho tiempo pensé que sería genial tener una computadora Altair 8800 para jugar. Pero los Altair antiguos que funcionan son raros y, por lo tanto, caros, cuestan fácilmente entre $ 1500 y $ 2500 si están disponibles. Hay algunas otras opciones, como altairclone.com, pero todavía cuesta $ 600, lo que para mí es demasiado para gastar en una computadora que, aunque es muy buena, tendrá un uso limitado. Afortunadamente, Mike Douglas, el creador de Altair Clone, ha puesto a disposición de la comunidad todos los documentos y software antiguos que buscó y usó al crear el clon. Gracias al trabajo de Mike, hay una gran cantidad de información sobre el funcionamiento interno del Altair y sus periféricos más populares convenientemente disponibles.

En algún momento, estaba mirando las especificaciones de Arduino Mega 2560 y comencé a preguntarme si tendría suficientes pines de E / S para conectar los LED y los interruptores del panel frontal de Altair y escribir mi propio software emulador. Resulta que Arduino Mega tiene exactamente el número correcto de pines de E / S. Así que tuve que hacer mi propio clon de Altair.

El uso del Arduino Mega para conducir el simulador funcionó bien y fue fácil de configurar, pero la emulación se ejecuta a solo alrededor del 25% de la velocidad del Altair y solo puede proporcionar 6 KB de RAM emulada (aunque en el pasado eso habría sido mucho ). La capacidad de almacenamiento permanente (para guardar programas / datos creados en el simulador) también es limitada ya que la EEPROM de Mega solo tiene 4 KB.

El Arduino Due tiene mucha memoria para admitir 64 KB completos de RAM emulada y funciona mucho más rápido que el Mega. Además, Due puede guardar datos en la memoria flash en tiempo de ejecución. Eso hace posible utilizar cualquier parte de la memoria flash de 512K no utilizada por el simulador en sí para almacenamiento permanente.

Usando Due, ahora tengo un simulador Altair 8800 que se ejecuta aproximadamente a la velocidad original, proporciona 64K de RAM emulada, incluye mucho software Altair y aún puede proporcionar 32K de almacenamiento semipermanente para cargar y guardar programas y datos en el emulador.

Mi objetivo para este proyecto era acercarme lo más posible a la sensación "real" del Altair 8800 al trabajar con el simulador. Eso incluye que las luces del panel frontal reflejen el comportamiento real tanto como sea posible. Un criterio para ello fue que debería ser posible jugar el juego "Kill-the-Bit" del panel frontal, y es:

Resulta que la simulación es lo suficientemente fiel al original que incluso la demostración musical de Altair 8800 funciona. ¡Tenga en cuenta que esto se basa en una radio AM que capta la interferencia electromagnética generada por los circuitos de Altair!

En el pasado, Processor Technology lanzó una pequeña placa de extensión para Altair (solo unos pocos condensadores y resistencias) con el software que lo acompañaba que convirtió al Altair en un sistema de música respetable (por el momento). Se pueden hacer las mismas adiciones al Simulador (ver la documentación) que le permite reproducir las melodías creadas para el sistema de música en ese entonces. Aquí tienes un ejemplo:

Otra extensión históricamente importante del Altair fue la placa gráfica Cromemco Dazzler. Usando una extensión de software o hardware, el Simulador también puede emular esa placa:

Otra extensión de software / hardware permite que el simulador emule la tarjeta gráfica Processor Technology VDM-1:

Por supuesto, al final no tengo un Altair original, por lo que toda la información sobre cómo funciona tenía que provenir de documentos y videos (vea los agradecimientos a continuación). Puede haber algunas diferencias menores, pero sobre todo creo que reproduce bastante bien el comportamiento original. Una diferencia conocida (e intencionada) es la luz de estado HLDA:en el original, indica que la CPU ha reconocido que un dispositivo externo la ha detenido. Esta funcionalidad nunca se usa en el simulador, por lo que aquí indica que un archivo (serie / captura de cinta / reproducción) está abierto actualmente.

Destacados

  • Reproduce con precisión el comportamiento de los elementos del panel frontal de Altair.
  • Funciona aproximadamente a la misma velocidad que el Altair 8800 original (cuando se usa Arduino Due) o al 25% de la velocidad original cuando se usa Arduino Mega.
  • El tamaño de la RAM emulada es 64 KB (Due) o 6K (Mega)
  • Se incluyen varios programas de Altair y se pueden cargar fácilmente en el emulador, incluidos Pong, Altair 4K BASIC (el primer producto de Microsoft), Altair Extended BASIC, MITS Programming System II (solo debido), Altair Time Sharing BASIC ( permite que varios usuarios utilicen BASIC al mismo tiempo).
  • Los programas de ejemplo BASIC y Assembler se incluyen en el software del emulador y se pueden cargar fácilmente en BASIC / Assembler.
  • Emula una placa 88-SIO, 88-2SIO y 88-ACR (interfaz de grabadora de casetes de audio). Cada dispositivo en serie simulado se puede asignar a la interfaz en serie de un Arduino. De forma predeterminada, los dos más comunes (88-SIO y 88-2SIO puerto 1) están asignados al puerto serie principal de Arduino a 115200 baudios 8n1, al que se puede acceder a través del cable USB. Recomiendo conectar un dongle serie a Bluetooth a los pines serie RX / TX. De esa manera, cualquier dispositivo habilitado para bluetooth puede servir como terminal para Altair.
  • En Arduino Due, tanto la interfaz serial principal (USB) como la interfaz Serial1 (pines 18/19) se pueden usar simultáneamente.
  • Los datos enviados a cada dispositivo serie (incluida la cinta ACR) se pueden capturar y reproducir en hasta 256 archivos que se guardan en el almacenamiento local de Arduino (EEPROM o FLASH).
  • La interfaz de casete admite el uso de los comandos CSAVE / CLOAD en BASIC extendido (el soporte es automático sin necesidad de interacción del usuario). ¡Excelente para desarrollar sus propios programas BÁSICOS!
  • Emula una placa gráfica Cromemco Dazzler (necesita hardware / software adicional, consulte aquí)
  • Emula una placa de terminales de video VDM1 de tecnología de procesador (necesita hardware / software adicional, consulte aquí)
  • Emula hasta 16 unidades de disco 88-DCDD (4 en la configuración predeterminada). La emulación de la unidad de disco es opcional, pero requiere conectar una tarjeta SD al encabezado SPI de Arduino. Solo se admite cuando se usa Arduino Due.
  • Emula un controlador de disco duro 88-HDSK con hasta 4 unidades de disco duro conectadas (1 en la configuración predeterminada) y 4 platos por unidad.
  • Emula una placa 88-RTC-VI con reloj en tiempo real y manejo de interrupciones vectoriales. Esto hace posible ejecutar Altair Time Sharing Basic.
  • Las páginas de memoria de 256 bytes se pueden guardar en un almacenamiento permanente y volver a cargarse en la memoria. Esto proporciona una forma sencilla de guardar programas ingresados ​​a través de los interruptores del panel frontal.
  • Muchas configuraciones se pueden cambiar fácilmente a través del editor de configuración integrado.

Al usar Due, tenga en cuenta que todo lo capturado o guardado dentro del simulador se borra si carga una nueva versión del boceto en Due. Esto se debe a que los datos guardados se almacenan en la memoria flash que se borra al cargar un nuevo boceto (el Due no tiene ninguna EEPROM para almacenamiento permanente). Si una tarjeta SD está conectada al vencimiento, los datos guardados se almacenan en la tarjeta SD. En ese caso, los datos no se perderán al cargar un nuevo boceto.

Documentación

Dado que el simulador funciona exactamente igual que el Altair 8800, la documentación original de Altair (que se encuentra fácilmente en Google) proporcionará toda la información necesaria para operar los interruptores del panel frontal.

Sin embargo, el simulador incluye una serie de funciones adicionales y software incorporado para el Altair a los que se puede acceder a través de los interruptores AUX1 / AUX2 en el panel frontal (los que se incluyeron pero no se usaron en el Altair original). Esa funcionalidad se explica en un documento separado que escribí mientras desarrollaba el software para el Simulador. El documento tiene muchas páginas y la información que contiene abrumaría esta página, así que consulte el archivo Documentation.pdf en el repositorio de origen.

Instrucciones de construcción

Uno de los objetivos era utilizar la menor cantidad posible de circuitos de soporte. Tanto Arduino Mega como Due tienen suficientes pines de E / S para conectar directamente todos los elementos del panel frontal. Los únicos circuitos adicionales requeridos son los transistores y resistencias para impulsar los 36 LED (si los LED estuvieran conectados directamente a los pines de salida del Aruino y demasiados encendidos al mismo tiempo, la corriente total excedería los límites del Arduino).

Crear esquemas completos para este proyecto sería tedioso, repetitivo (36 circuitos de controladores LED idénticos, cableado para 32 interruptores) y no muy útil. Por lo tanto, el documento de esquemas contiene tablas detalladas sobre qué elementos se conectan a qué pines de Arduino y los esquemas de los subcircuitos individuales (como los controladores de LED). También agregué un archivo Fritzing para mostrar el diseño de los componentes del controlador LED en el tablero.

Para crear el panel frontal, comencé con un escaneo de alta calidad del panel frontal del Altair (que se encuentra aquí en www.vintage-computer.com) y lo imprimí en una tienda de fotocopias en cartulina. Para el respaldo (para mantener los interruptores y los LED en su lugar) utilicé una hoja de metal de calibre 22, usando un taladro eléctrico regular para crear los agujeros para los LED y los interruptores. Los circuitos de los controladores de LED están soldados en trozos de cartón que se sueldan directamente a los LED que, a su vez, se mantienen en su lugar mediante la hoja de metal.

El panel frontal se mantiene en su lugar y en posición vertical mediante una simple caja de madera. La caja no es tan profunda como el Altair original (porque solo tiene que sostener el panel frontal y Arduino).

Para conectar el interruptor de encendido / apagado del panel frontal, simplemente agregué una toma de corriente (igual que en el propio Arduino) a la caja, lo conecté al interruptor del panel frontal y desde allí a un enchufe de alimentación que se conecta al Arduino.

Al usar Arduino Due, se puede habilitar la emulación de hasta 16 unidades de disco 88-DCDD conectando una tarjeta SD al puerto SPI de Due. La última página del documento Esquemas muestra el cableado necesario en detalle.

Antes de cargar el boceto en Arduino Due, asegúrese de cambiar la configuración de optimización del compilador Arduino a "rendimiento". De forma predeterminada, está configurado en "tamaño" (no estoy seguro de por qué, ya que el Due tiene una memoria flash de 512k). Para hacerlo, cargue el archivo

c:\ Users \ [usuario] \ AppData \ Local \ Arduino15 \ packages \ arduino \ hardware \ sam \ 1.6.9 \ platform.txt

en un editor de texto y cambie cualquier aparición de "-Os" a "-O3". Puede omitir este paso, pero el simulador se ejecutará significativamente más lento.

El software del simulador también se puede ejecutar en un Arduino básico (Mega o Due) sin ningún control del panel frontal conectado. Esto permite ejecutar bastantes de los programas incluidos (los que utilizan principalmente el terminal serie y no los elementos del panel frontal). Para hacerlo, edite el config.h archivo de origen y establezca #define STANDALONE 1 (en lugar de 0). Consulte la sección "Capacidades de depuración" en la documentación para ver cómo operar los elementos del panel frontal virtual en esa configuración. Sin embargo, tenga en cuenta que este no es el uso previsto del simulador. Sugiero usar emuladores de software basados ​​en PC si no desea construir el hardware del panel frontal. El config.h El archivo de origen contiene una serie de conmutadores que incluyen / excluyen la funcionalidad del simulador. La configuración predeterminada funciona bien, pero si desea modificar el simulador, este es el lugar para comenzar.

Agradecimientos

Como yo mismo no tengo un Altair, tuve que confiar en obtener información de Internet. Los videos instructivos de Altair 8800 producidos por Mike Douglas (deramp5113) de altairclone.com fueron de gran ayuda y son muy interesantes de ver. Además de producir los videos, Mike ha recopilado una gran cantidad de manuales de software y hardware relacionados con Altair y los ha puesto a disposición en su sitio.

(Tenga en cuenta que los videos de Mike son muy útiles para obtener algunas ideas sobre qué hacer con el simulador una vez que lo haya creado)

La herramienta ADEXER de Martin Eberhard fue invaluable para la depuración de bajo nivel del soporte del disco duro. También escribió dos cargadores de arranque utilizados por el simulador:el cargador de arranque de disco combinado (CDBL) para arrancar discos y minidiscos, así como el cargador de arranque de disco duro (HDBL), que es más corto y más estable que el original.

Si bien escribí todo el código, incluida la emulación de CPU, me inspiré un poco en el proyecto del modelo central i8080 cuando se trataba de implementar el cálculo de medio acarreo y la instrucción DAA de manera eficiente.

El simulador incluye software original para el Altair 8800. Otro gran agradecimiento a Mike Douglas, quien pasó incontables horas buscando, recolectando y haciendo que este software funcione y luego lo puso todo disponible en su sitio web altairclone.com:

  • Altair 4K BASIC (MITS 1975)
  • Altair Extended ROM Basic (MITS 1975)
  • Altair Time Sharing Basic (MITS 1977)
  • Juego Kill-the-Bit (Dean McDaniel, 1975)
  • Juego de Pong usando el panel frontal (Mike Douglas)
  • Música 'Daisy, Daisy ...' (Steve Dompier, 1975)
  • Sistema de música (tecnología de procesador 1977)
  • Sistema de programación MITS II (MITS 1976)
  • Monitor llave en mano de Altair (MITS 1977)
  • i8080 CPU Diagnostic (Microcosm Associates, 1980)
  • Ejercitador de CPU i8080 (Frank D. Cringle 1994, Ian Bartholomew 2009)

El disco y las imágenes del disco duro (incluidas en el subdirectorio "discos" del archivo de origen) también se tomaron de altairclone.com y deramp.com (el sitio web personal de Mike Douglas). Estos incluyen CP / M, varias versiones del disco BASIC, Altair DOS (incluido Fortran) y más. Una vez más, Mike ha hecho un trabajo increíble al encontrar todo ese software y luego crear imágenes de disco en funcionamiento que pueden ser utilizadas por la comunidad de Altair. Solo utilicé una selección del software, por lo que es posible que desee visitar altairclone.com o deramp.com y ver más.

Foro de discusión

Chris Davis de Altairduino.com ha creado un grupo de Google para debatir cuestiones relacionadas con Altair-Duino:

https://groups.google.com/forum/#!forum/altair-duino

¡No dude en visitarnos y contribuir a la discusión!

Código

Código del simulador Arduino Altair 8800
https://github.com/dhansel/Altair8800

Esquemas

En lugar de proporcionar esquemas completos (muy repetitivos), este documento describe qué pines conectar a qué elementos del panel frontal y proporciona esquemas para los subcircuitos (como los circuitos de los controladores de LED) .Un intento de mostrar el diseño del tablero en el que están conectados los LED a. Está un poco abarrotado, pero debería ser lo suficientemente bueno para ver cómo están conectadas las cosas. Es importante que los componentes de cada LED no ocupen más de 5 espacios en el tablero. De esa manera, los LED pueden estar lo suficientemente cerca como para que el panel frontal tenga su tamaño original. ledstrip_4OVCpRyKQS.fzz

Proceso de manufactura

  1. Panel LCD con Arduino para Flight Simulator
  2. Arduino Spybot
  3. FlickMote
  4. Televisión casera B-Gone
  5. Reloj maestro
  6. Encuéntrame
  7. Arduino Power
  8. Tech-TicTacToe
  9. Arduino Cuadrúpedo
  10. Joystick de Arduino
  11. Máquina CNC