Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Simulateur Arduino Altair 8800

Composants et fournitures

Arduino Mega 2560
× 1
Arduino Due
Arduino Mega ou Due sont requis, pas les deux !
× 1
LED (générique)
× 36
Transistor à usage général NPN
× 36
Résistance 10k ohm
× 36
Résistance 150 ohm
× 36
Mini interrupteur à bascule SPDT On-On
Pour 16 commutateurs d'adresse (SW15-0) plus interrupteur d'alimentation
× 17
Interrupteur momentané SPDT (On)-Off-(On)
Pour les commutateurs de fonction (RUN/STOP/EXAMINE...)
× 8
Feuille de métal pour le support du panneau avant
× 1
Modem Bluetooth SparkFun - BlueSMiRF Silver
Facultatif. Le connecter aux broches Arduino TX/RX permettra à n'importe quel ordinateur ou téléphone compatible Bluetooth d'agir comme un terminal série pour l'Altair émulé.
× 1
carte microSD avec adaptateur de carte SD
Facultatif. Nécessaire uniquement pour l'émulation du lecteur de disque, ce qui n'est pas nécessaire au fonctionnement du simulateur.
× 1

Applications et services en ligne

Arduino IDE
Bibliothèque Arduino DueFlashStorage
L'Arduino Due n'a pas d'EEPROM pour le stockage permanent mais avec cette bibliothèque, les données peuvent être enregistrées sur le -mémoire flash à puce. Tout ce qui est enregistré est supprimé lors du re-flashage de l'Arduino !
Bibliothèque Arduino Due soft_uart
Une implémentation logicielle UART qui permet à n'importe quelle broche d'être utilisée comme interface série (similaire à la bibliothèque SoftwareSerial d'autres plates-formes Arduino). Les fichiers de cette bibliothèque sont inclus dans la source du simulateur car j'ai dû faire quelques petites modifications pour les intégrer dans le simulateur.

À propos de ce projet

Si vous souhaitez construire ceci mais n'aimez pas l'idée de recommencer complètement à partir de zéro, veuillez consulter Kit Altair-Duino de Chris Davis qui vient avec tous les composants, un PCB, un boîtier et un Arduino Due préprogrammé !

Voici quelques photos d'autres personnes qui ont construit ce projet et l'ont fait leur :

  • Alan Lowther a trouvé un joli boîtier en métal pour sa version et connecté un Raspberry Pi pour les entrées/sorties et la synthèse vocale.
  • Martin Zumr a fait une très belle boîte tout en bois.
  • Chris Davis ( kb0wwp) a fait un PCB et un belle affaire.
  • Justin Davis a fait un Bouclier Altair pour Arduino Due.

Si quelqu'un d'autre veut partager sa création, faites-le moi savoir et je la posterai ici. J'aimerais voir la variété de versions que les gens proposent !

Pendant longtemps, j'ai pensé que ce serait cool d'avoir un ordinateur Altair 8800 pour jouer avec. Mais les Altairs d'époque en état de marche sont rares et donc chers, coûtant facilement entre 1 500 et 2 500 dollars s'ils sont disponibles. Il existe d'autres options, telles que altairclone.com, mais cela coûte toujours 600 $, ce qui pour moi est trop cher à dépenser sur un ordinateur qui - bien que très cool - sera d'une utilité limitée. Heureusement, Mike Douglas, le créateur du clone Altair, a mis à la disposition de la communauté tous les anciens documents et logiciels qu'il a recherchés et utilisés lors de la création du clone. Grâce au travail de Mike, il existe une mine d'informations sur le fonctionnement interne de l'Altair et ses périphériques les plus populaires.

À un moment donné, je regardais les spécifications de l'Arduino Mega 2560 et j'ai commencé à me demander s'il aurait suffisamment de broches d'E/S pour simplement brancher les LED et les commutateurs du panneau avant Altair et écrire mon propre logiciel d'émulation. Il s'avère que l'Arduino Mega a exactement le bon nombre de broches d'E/S. Je n'avais donc plus qu'à créer mon propre clone Altair.

L'utilisation de l'Arduino Mega pour piloter le simulateur a bien fonctionné et était simple à configurer, mais l'émulation ne fonctionne qu'à environ 25% de la vitesse de l'Altair et ne peut fournir que 6 Ko de RAM émulée (bien qu'à l'époque cela aurait été beaucoup ). La capacité de stockage permanent (pour sauvegarder les programmes/données créés dans le simulateur) est également limitée puisque l'EEPROM du Mega ne contient que 4 Ko.

L'Arduino Due a beaucoup de mémoire pour prendre en charge 64 Ko de RAM émulée et fonctionne beaucoup plus rapidement que le Mega. De plus, le Due peut enregistrer des données dans la mémoire flash au moment de l'exécution. Cela permet d'utiliser toute partie de la mémoire flash 512K non utilisée par le simulateur lui-même pour un stockage permanent.

En utilisant le Due, j'ai maintenant un simulateur Altair 8800 qui fonctionne à peu près à la vitesse d'origine, fournit 64 Ko de RAM émulée, comprend de nombreux logiciels Altair et peut toujours fournir 32 Ko de stockage semi-permanent pour charger et enregistrer des programmes et des données dans l'émulateur.

Mon objectif pour ce projet était de me rapprocher le plus possible de la "vraie" sensation Altair 8800 lorsque je travaillais avec le simulateur. Cela implique que les voyants du panneau avant reflètent autant que possible le comportement réel. Un critère pour cela était qu'il devrait être possible de jouer au jeu "Kill-the-Bit" du panneau avant - et c'est :

Il s'avère que la simulation est suffisamment fidèle à l'original pour que même la démo musicale Altair 8800 fonctionne. Notez que cela repose sur une radio AM captant les interférences électromagnétiques générées par les circuits de l'Altair !

À l'époque, Processor Technology a sorti une petite carte d'extension pour l'Altair (quelques condensateurs et résistances) avec un logiciel d'accompagnement qui a transformé l'Altair en un système de musique respectable (pour l'époque). Les mêmes ajouts peuvent être apportés au simulateur (voir la documentation) qui lui permet de jouer les morceaux créés pour le système musical à l'époque. Voici un exemple :

Une autre extension historiquement importante de l'Altair était la carte graphique Cromemco Dazzler. En utilisant une extension logicielle ou matérielle, le simulateur peut également émuler cette carte :

Une autre extension logicielle/matérielle permet au simulateur d'émuler la carte graphique Processor Technology VDM-1 :

Bien sûr, au final, je ne possède pas d'Altair d'origine, donc toutes les informations sur son fonctionnement devaient provenir de documents et de vidéos (voir les remerciements ci-dessous). Il peut y avoir quelques différences mineures, mais dans l'ensemble, je pense que cela reproduit assez bien le comportement d'origine. Une différence connue (et intentionnelle) est le voyant d'état HLDA :sur l'original, il signale que le processeur a reconnu avoir été arrêté par un périphérique externe. Cette fonctionnalité n'est jamais utilisée dans le simulateur, elle signale donc ici qu'un fichier (série/capture de bande/relecture) est actuellement ouvert.

Faits saillants

  • Reproduit avec précision le comportement des éléments du panneau avant de l'Altair.
  • Fonctionne à peu près à la même vitesse que l'Altair 8800 d'origine (lors de l'utilisation d'Arduino Due) ou à 25 % de la vitesse d'origine lors de l'utilisation d'Arduino Mega.
  • La taille de la RAM émulée est de 64 Ko (Due) ou 6 K (Mega)
  • Un certain nombre de programmes Altair sont inclus et peuvent être facilement chargés dans l'émulateur, y compris Pong, Altair 4K BASIC (le premier produit Microsoft), Altair Extended BASIC, MITS Programming System II (Due only), Altair Time Sharing BASIC ( permet à plusieurs utilisateurs d'utiliser BASIC en même temps).
  • Les exemples de programmes BASIC et Assembler sont inclus dans le logiciel d'émulation et peuvent facilement être chargés dans BASIC/Assembler.
  • Émule une carte 88-SIO, 88-2SIO et 88-ACR (interface enregistreur de cassette audio). Chaque périphérique série simulé peut être mappé sur l'interface série d'un Arduino. Par défaut, les deux plus courants (88-SIO et 88-2SIO port 1) sont mappés sur le port série principal de l'Arduino à 115200 bauds 8n1, accessible via le câble USB. Je recommande de connecter un dongle série-Bluetooth aux broches série RX/TX. De cette façon, tout appareil compatible Bluetooth peut servir de terminal pour l'Altair.
  • Sur l'Arduino Due, l'interface série principale (USB) et l'interface Serial1 (broches 18/19) peuvent être utilisées simultanément.
  • Les données envoyées à chaque périphérique série (y compris la bande ACR) peuvent être capturées et relues dans jusqu'à 256 fichiers qui sont conservés dans le stockage local de l'Arduino (EEPROM ou FLASH).
  • L'interface de la cassette prend en charge l'utilisation des commandes CSAVE/CLOAD en BASIC étendu (la prise en charge est automatique sans interaction de l'utilisateur requise). Idéal pour développer vos propres programmes BASIC !
  • Émule une carte graphique Cromemco Dazzler (nécessite du matériel/logiciel supplémentaire, voir ici)
  • Émule un bornier vidéo Processor Technology VDM1 (nécessite du matériel/logiciel supplémentaire, voir ici)
  • Émule jusqu'à 16 disques durs 88-DCDD (4 dans la configuration par défaut). L'émulation du lecteur de disque est facultative mais nécessite de connecter une carte SD à l'en-tête SPI de l'Arduino. Uniquement pris en charge lors de l'utilisation d'Arduino Due.
  • Émule un contrôleur de disque dur 88-HDSK avec jusqu'à 4 unités de disque dur connectées (1 dans la configuration par défaut) et 4 plateaux par unité.
  • Émule une carte 88-RTC-VI avec horloge en temps réel et gestion des interruptions vectorielles. Cela permet d'exécuter Altair Time Sharing Basic.
  • Les pages de mémoire de 256 octets peuvent être enregistrées dans un stockage permanent et rechargées en mémoire. Cela fournit un moyen simple de sauvegarder les programmes entrés via les commutateurs du panneau avant.
  • De nombreux paramètres peuvent être facilement modifiés via l'éditeur de configuration intégré.

Lorsque vous utilisez le Due, sachez que tout ce qui est capturé ou enregistré dans le simulateur est effacé si vous téléchargez une nouvelle version du croquis dans le Due. En effet, les données enregistrées sont stockées dans une mémoire flash qui est effacée lors du téléchargement d'un nouveau croquis (le Due n'a pas d'EEPROM pour le stockage permanent). Si une carte SD est connectée au Due, les données enregistrées sont stockées sur la carte SD. Dans ce cas, les données ne seront pas perdues lors du téléchargement d'un nouveau croquis.

Documentation

Étant donné que le simulateur fonctionne exactement de la même manière que l'Altair 8800, la documentation originale d'Altair (facile à trouver sur Google) fournira toutes les informations nécessaires pour faire fonctionner les commutateurs du panneau avant.

Cependant, le simulateur comprend un certain nombre de fonctions supplémentaires et un logiciel intégré pour l'Altair qui sont accessibles via les commutateurs AUX1/AUX2 sur le panneau avant (ceux-ci étaient inclus mais non utilisés sur l'Altair d'origine). Cette fonctionnalité est expliquée dans un document séparé que j'ai rédigé lors du développement du logiciel pour le simulateur. Le document compte plusieurs pages et les informations qu'il contient submergeraient cette page, veuillez donc vous référer au fichier Documentation.pdf dans le référentiel source.

Instructions de construction

L'un des objectifs était d'utiliser le moins de circuits de support possible. Les Arduino Mega et Due ont suffisamment de broches d'E/S pour câbler directement tous les éléments du panneau avant. Les seuls circuits supplémentaires requis sont les transistors et les résistances pour piloter les 36 LED (si les LED étaient connectées directement aux broches de sortie de l'Aruino et qu'un trop grand nombre était allumé en même temps, le courant total dépasserait les limites de l'Arduino).

Créer des schémas complets pour ce projet serait fastidieux, répétitif (36 circuits de commande de LED identiques, câblage pour 32 commutateurs) et pas très utile. Ainsi, le document de schémas contient plutôt des tableaux détaillés sur les éléments qui sont connectés à quelles broches Arduino et les schémas des sous-circuits individuels (comme les pilotes de LED). J'ai également ajouté un fichier Fritzing pour montrer la disposition des composants du pilote LED sur le stripboard.

Pour créer le panneau avant, j'ai commencé par une numérisation de haute qualité du panneau avant de l'Altair (trouvé ici sur www.vintage-computer.com) et je l'ai imprimé dans un magasin de copie sur du papier cartonné. Pour le support (pour maintenir les interrupteurs et les LED en place), j'ai utilisé une feuille de métal de calibre 22, à l'aide d'une perceuse électrique ordinaire pour créer les trous pour les LED et les interrupteurs. Les circuits de commande de LED sont soudés sur des morceaux de stripboard qui sont soudés directement aux LED qui à leur tour sont maintenus en place par la tôle.

Le panneau avant est maintenu en place et debout par une simple boîte en bois. La boîte n'est pas aussi profonde que l'Altair d'origine (car elle n'a qu'à contenir la façade et l'Arduino).

Pour câbler l'interrupteur marche/arrêt du panneau avant, j'ai juste ajouté une prise d'alimentation (la même que sur l'Arduino lui-même) à la boîte, je l'ai câblée à l'interrupteur du panneau avant et de là à une prise d'alimentation qui se branche sur l'Arduino.

Lors de l'utilisation de l'Arduino Due, l'émulation de jusqu'à 16 disques durs 88-DCDD peut être activée en connectant une carte SD au port SPI du Due. La dernière page du document Schémas montre en détail le câblage requis.

Avant de télécharger l'esquisse sur l'Arduino Due, assurez-vous de basculer le paramètre d'optimisation du compilateur Arduino sur « performances ». Par défaut, il est défini sur "taille" (je ne sais pas pourquoi puisque le Due a une mémoire flash de 512k). Pour cela, chargez le fichier

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

dans un éditeur de texte et remplacez toute occurrence de "-Os" par "-O3". Vous pouvez ignorer cette étape, mais le simulateur fonctionnera alors beaucoup plus lentement.

Le logiciel du simulateur peut également fonctionner sur un Arduino simple (Mega ou Due) sans qu'aucune commande du panneau avant ne soit connectée. Cela permet d'exécuter bon nombre des programmes inclus (ceux qui utilisent principalement le terminal série et non les éléments du panneau avant). Pour cela, éditez le config.h source et définissez #define STANDALONE 1 (au lieu de 0). Reportez-vous à la section « Capacités de débogage » dans la documentation pour voir comment utiliser les éléments de la face-avant virtuelle dans cette configuration. Gardez à l'esprit que ce n'est pas l'utilisation prévue du simulateur. Je suggère d'utiliser des émulateurs entièrement logiciels sur PC si vous ne souhaitez pas créer le matériel du panneau avant. Le config.h Le fichier source contient un certain nombre de commutateurs qui incluent/excluent la fonctionnalité de simulation. Les paramètres par défaut fonctionnent bien, mais si vous souhaitez modifier le simulateur, c'est par ici qu'il faut commencer.

Remerciements

Comme je ne possède pas moi-même d'Altair, j'ai dû me fier à l'obtention d'informations sur Internet. Les vidéos pédagogiques Altair 8800 produites par Mike Douglas (deramp5113) de altairclone.com ont été d'une grande aide et sont très intéressantes à regarder. En plus de produire les vidéos, Mike a rassemblé une multitude de manuels matériels et logiciels liés à Altair et les a rendus disponibles sur son site.

(Notez que les vidéos de Mike sont très utiles pour avoir des idées sur ce qu'il faut faire avec le simulateur une fois que vous l'avez construit)

L'outil ADEXER de Martin Eberhard a été inestimable pour le débogage de bas niveau de la prise en charge du disque dur. Il a également écrit deux chargeurs de démarrage utilisés par le simulateur :le combo disk boot loader (CDBL) pour démarrer les disques et mini-disques ainsi que le hard disk boot loader (HDBL) qui est plus court et plus stable que l'original.

Bien que j'aie écrit moi-même tout le code, y compris l'émulation CPU, je me suis inspiré du projet de modèle de base i8080 lorsqu'il s'agissait d'implémenter efficacement le calcul de demi-portée et l'instruction DAA.

Le simulateur comprend des logiciels originaux pour l'Altair 8800. Un autre grand merci à Mike Douglas qui a passé d'innombrables heures à rechercher, collecter et faire fonctionner ce logiciel, puis l'a rendu disponible sur son site Web altairclone.com :

  • Altair 4K BASIC (MITS 1975)
  • Altair Extended ROM Basic (MITS 1975)
  • Altair Time Sharing Basic (MITS 1977)
  • Jeu Kill-the-Bit (Dean McDaniel, 1975)
  • Jeu de pong utilisant le panneau avant (Mike Douglas)
  • Musique 'Daisy, Daisy...' (Steve Dompier, 1975)
  • Système de musique (technologie de processeur 1977)
  • Système de programmation MITS II (MITS 1976)
  • Moniteur clé en main Altair (MITS 1977)
  • Diagnostic du processeur i8080 (Microcosm Associates, 1980)
  • Exerciseur de CPU i8080 (Frank D. Cringle 1994, Ian Bartholomew 2009)

Les images du disque et du disque dur (inclus dans le sous-répertoire "disks" de l'archive source) ont également été prises altairclone.com ainsi que deramp.com (site web personnel de Mike Douglas). Ceux-ci incluent CP/M, diverses versions du disque BASIC, Altair DOS (y compris Fortran) et plus encore. Encore une fois, Mike a fait un travail incroyable en trouvant tous ces logiciels, puis en créant des images de disque fonctionnelles qui peuvent être utilisées par la communauté Altair. Je n'ai utilisé qu'une sélection de logiciels, vous pouvez donc vous rendre sur altairclone.com ou deramp.com et en découvrir d'autres.

Forum de discussion

Chris Davis d'Altairduino.com a créé un groupe Google pour discuter des questions liées à Altair-Duino :

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

N'hésitez pas à visiter et à contribuer à la discussion !

Code

Code du simulateur Arduino Altair 8800
https://github.com/dhansel/Altair8800

Schémas

Au lieu de fournir des schémas complets (très répétitifs), ce document décrit les broches à connecter à quels éléments du panneau avant et fournit des schémas pour les sous-circuits (tels que les circuits de commande de LED) Une tentative pour montrer la disposition du stripboard auquel les LED sont connectées à. C'est un peu encombré mais ça devrait être assez bon pour voir comment les choses sont reliées entre elles. L'important est que les composants de chaque LED n'occupent pas plus de 5 espaces sur le stripboard. De cette façon, les LED peuvent être suffisamment proches les unes des autres pour que le panneau avant soit à sa taille d'origine. ledstrip_4OVCpRyKQS.fzz

Processus de fabrication

  1. Panneau LCD avec Arduino pour Flight Simulator
  2. Arduino Spybot
  3. FlickMote
  4. Téléviseur maison B-Gone
  5. horloge maîtresse
  6. Trouvez-moi
  7. Puissance Arduino
  8. Tech-TicTacToe
  9. Arduino quadrupède