Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino Altair 8800 Simulator

Komponenten und Verbrauchsmaterialien

Arduino Mega 2560
× 1
Arduino Due
Entweder Arduino Mega oder Due sind erforderlich, nicht beides!
× 1
LED (generisch)
× 36
Allzwecktransistor NPN
× 36
Widerstand 10k Ohm
× 36
Widerstand 150 Ohm
× 36
Mini-Kippschalter SPDT On-On
Für 16 Adressschalter (SW15-0) plus Netzschalter
× 17
Kurzzeitiger Schalter SPDT (Ein)-Aus-(Ein)
Für Funktionsschalter (RUN/STOP/EXAMINE...)
× 8
Metallblech für die Rückseite der Frontplatte
× 1
SparkFun Bluetooth-Modem - BlueSMiRF Silber
Optional. Wenn Sie dies an die Arduino TX / RX-Pins anschließen, kann jeder Bluetooth-fähige Computer oder Telefon als serieller Anschluss für den emulierten Altair fungieren.
× 1
microSD-Karte mit SD-Kartenadapter
Optional. Nur für die Festplattenemulation erforderlich, die für die Funktion des Simulators nicht erforderlich ist.
× 1

Apps und Onlinedienste

Arduino-IDE
Arduino DueFlashStorage-Bibliothek
Der Arduino Due hat kein EEPROM für die dauerhafte Speicherung, aber mit dieser Bibliothek können Daten auf dem On gespeichert werden -Chip-Flash-Speicher. Beim erneuten Flashen des Arduino wird alles Gespeicherte gelöscht!
Arduino Due soft_uart-Bibliothek
Eine Software-UART-Implementierung, die die Verwendung beliebiger Pins als serielle Schnittstelle ermöglicht (ähnlich der SoftwareSerial-Bibliothek anderer Arduino-Plattformen). Die Dateien aus dieser Bibliothek sind in der Simulator-Quelle enthalten, da ich einige kleine Änderungen vornehmen musste, um sie in den Simulator zu integrieren.

Über dieses Projekt

Wenn Sie dies erstellen möchten, aber die Idee, komplett von vorne anzufangen, nicht mögen, sehen Sie sich bitte . an Chris Davis' Altair-Duino-Trikot was kommt mit allen Komponenten, einer Platine, einem Gehäuse und einem vorprogrammierten Arduino Due!

Hier sind einige Bilder von anderen, die dieses Projekt aufgebaut und zu ihrem eigenen gemacht haben:

  • Alan Lowther gefunden schönes Metallgehäuse für seine Version und schloss einen Raspberry Pi für Ein-/Ausgabe und Sprachsynthese an.
  • Martin Zumr hat eine wirklich gut aussehende Box ganz aus Holz gemacht.
  • Chris Davis ( kb0wwp) hat ein . erstellt PCB und ein schöner Fall.
  • Justin Davis hat eine . gemacht Altair-Schild für den Arduino Due.

Wenn noch jemand seine Kreation teilen möchte, lass es mich wissen und ich poste es hier. Ich würde gerne die Vielfalt der Versionen sehen, die sich die Leute einfallen lassen!

Lange dachte ich, es wäre cool, einen Altair 8800-Computer zum Herumspielen zu haben. Aber funktionierende Vintage-Altairs sind selten und daher teuer, sie kosten leicht 1500 bis 2500 US-Dollar, wenn sie überhaupt verfügbar sind. Es gibt einige andere Optionen, wie altairclone.com, aber das kostet immer noch 600 US-Dollar, was für mich zu viel ist, um es für einen Computer auszugeben, der - obwohl er sehr cool ist - von begrenztem Nutzen ist. Zum Glück hat Mike Douglas, der Schöpfer des Altair-Klons, der Community alle alten Dokumente und Software zur Verfügung gestellt, die er gefunden und bei der Erstellung des Klons verwendet hat. Dank Mikes Arbeit ist eine Fülle von Informationen über das Innenleben des Altair und seiner beliebtesten Peripheriegeräte bequem verfügbar.

Irgendwann habe ich mir die Spezifikationen des Arduino Mega 2560 angeschaut und mich gefragt, ob es genug I / O-Pins haben würde, um einfach die LEDs und Schalter von der Altair-Frontplatte anzuschließen und meine eigene Emulator-Software zu schreiben. Es stellte sich heraus, dass der Arduino Mega genau hat die richtige Anzahl von I/O-Pins. Also musste ich nur meinen eigenen Altair-Klon machen.

Die Verwendung des Arduino Mega zum Antreiben des Simulators funktionierte gut und war einfach einzurichten, aber die Emulation läuft nur mit etwa 25% der Geschwindigkeit des Altair und kann nur 6 KB emulierten RAM bereitstellen (obwohl das früher viel gewesen wäre) ). Die permanente Speicherkapazität (zum Speichern von im Simulator erstellten Programmen/Daten) ist ebenfalls begrenzt, da das EEPROM des Mega nur 4 KB fasst.

Der Arduino Due hat viel Speicher, um volle 64 KB emulierten RAM zu unterstützen und läuft viel schneller als der Mega. Darüber hinaus kann der Due zur Laufzeit Daten im Flash-Speicher speichern. Dadurch ist es möglich, jeden Teil des 512K-Flashes, der nicht vom Simulator selbst verwendet wird, für die dauerhafte Speicherung zu verwenden.

Mit dem Due habe ich jetzt einen Altair 8800-Simulator, der ungefähr mit der ursprünglichen Geschwindigkeit läuft, 64 KB emulierten RAM bietet, viel Altair-Software enthält und immer noch 32 KB semi-permanenten Speicher zum Laden und Speichern von Programmen und Daten im Emulator bereitstellen kann.

Mein Ziel bei diesem Projekt war es, dem "echten" Altair 8800-Feeling beim Arbeiten mit dem Simulator so nah wie möglich zu kommen. Dazu gehört, dass die Frontpanel-Leuchten das reale Verhalten so gut wie möglich widerspiegeln. Ein Kriterium dafür war, dass das Front-Panel-Spiel "Kill-the-Bit" spielbar sein sollte - und zwar:

Es stellt sich heraus, dass die Simulation originalgetreu genug ist, dass sogar die Altair 8800 Musikdemo funktioniert. Beachten Sie, dass dies davon abhängt, dass ein AM-Radio die von den Schaltkreisen des Altair erzeugten elektromagnetischen Störungen aufnimmt!

Damals hat Processor Technology ein kleines Erweiterungsboard für den Altair (nur ein paar Kondensatoren und Widerstände) mit begleitender Software herausgebracht, das den Altair zu einem (für die damalige Zeit) respektablen Musiksystem machte. Dieselben Ergänzungen können am Simulator vorgenommen werden (siehe Dokumentation), wodurch er die damals für das Musiksystem erstellten Melodien abspielen kann. Hier ist ein Beispiel:

Eine weitere historisch wichtige Erweiterung des Altair war die Cromemco Dazzler-Grafikkarte. Mit einer Software- oder Hardwareerweiterung kann der Simulator auch dieses Board emulieren:

Eine weitere Software-/Hardware-Erweiterung ermöglicht es dem Simulator, die Prozessortechnologie VDM-1-Grafikkarte zu emulieren:

Natürlich besitze ich am Ende kein Original Altair, daher mussten alle Informationen zur Funktionsweise aus Dokumenten und Videos stammen (siehe Danksagung unten). Es kann einige geringfügige Unterschiede geben, aber insgesamt denke ich, dass es das ursprüngliche Verhalten ziemlich gut reproduziert. Ein bekannter (und beabsichtigter) Unterschied ist die HLDA-Statusleuchte:Auf dem Original signalisiert sie, dass die CPU das Anhalten durch ein externes Gerät bestätigt hat. Diese Funktionalität wird im Simulator nie verwendet, daher signalisiert sie hier, dass eine Datei (Seriell/Bandaufnahme/Wiedergabe) derzeit geöffnet ist.

Höhepunkte

  • Reproduziert das Verhalten der Frontplattenelemente des Altair genau.
  • Läuft ungefähr die gleiche Geschwindigkeit wie der ursprüngliche Altair 8800 (bei Verwendung von Arduino Due) oder 25 % der ursprünglichen Geschwindigkeit bei Verwendung von Arduino Mega.
  • Emulierte RAM-Größe beträgt 64 KB (Fällig) oder 6 KB (Mega)
  • Eine Reihe von Altair-Programmen sind enthalten und können einfach in den Emulator geladen werden, darunter Pong, Altair 4K BASIC (das erste Microsoft-Produkt), Altair Extended BASIC, MITS Programming System II (nur fällig), Altair Time Sharing BASIC ( ermöglicht es mehreren Benutzern, BASIC gleichzeitig zu verwenden).
  • BASIC- und Assembler-Beispielprogramme sind in der Emulator-Software enthalten und können einfach in BASIC/Assembler geladen werden.
  • Emuliert ein 88-SIO, 88-2SIO und 88-ACR (Audio Cassette Recorder Interface) Board. Jedes simulierte serielle Gerät kann einer seriellen Schnittstelle eines Arduino zugeordnet werden. Standardmäßig sind die beiden gängigsten (88-SIO- und 88-2SIO-Port 1) dem seriellen Hauptport des Arduino mit 115200 Baud 8n1 zugeordnet, auf den über das USB-Kabel zugegriffen werden kann. Ich empfehle, einen Seriell-zu-Bluetooth-Dongle an die seriellen RX/TX-Pins anzuschließen. Auf diese Weise kann jedes Bluetooth-fähige Gerät als Terminal für den Altair dienen.
  • Auf dem Arduino Due können sowohl die serielle Hauptschnittstelle (USB) als auch die Serial1-Schnittstelle (Pins 18/19) gleichzeitig verwendet werden.
  • Daten, die an jedes serielle Gerät (einschließlich des ACR-Bands) gesendet werden, können in bis zu 256 Dateien erfasst und wiedergegeben werden, die im lokalen Speicher des Arduino (EEPROM oder FLASH) aufbewahrt werden.
  • Die Kassettenschnittstelle unterstützt die Verwendung der CSAVE/CLOAD-Befehle im erweiterten BASIC (die Unterstützung erfolgt automatisch, ohne dass eine Benutzerinteraktion erforderlich ist). Ideal für die Entwicklung eigener BASIC-Programme!
  • Emuliert eine Cromemco Dazzler-Grafikkarte (benötigt zusätzliche Hardware/Software, siehe hier)
  • Emuliert ein VDM1-Videoterminalboard mit Prozessortechnologie (benötigt zusätzliche Hardware/Software, siehe hier)
  • Emuliert bis zu 16 88-DCDD-Festplattenlaufwerke (4 in der Standardkonfiguration). Die Emulation des Festplattenlaufwerks ist optional, erfordert jedoch das Anschließen einer SD-Karte an den SPI-Header des Arduino. Wird nur bei Verwendung von Arduino Due unterstützt.
  • Emuliert einen 88-HDSK-Festplattencontroller mit bis zu 4 angeschlossenen Festplatteneinheiten (1 in der Standardkonfiguration) und 4 Platten pro Einheit.
  • Emuliert ein 88-RTC-VI-Board mit Echtzeituhr und Vektor-Interrupt-Behandlung. Dadurch kann Altair Time Sharing Basic ausgeführt werden.
  • 256-Byte-Speicherseiten können im permanenten Speicher gespeichert und wieder in den Speicher geladen werden. Dies bietet eine einfache Möglichkeit, über die Schalter auf der Frontplatte eingegebene Programme zu speichern.
  • Viele Einstellungen lassen sich einfach über den integrierten Konfigurationseditor ändern.

Beachten Sie bei der Verwendung des Due, dass alles, was im Simulator erfasst oder gespeichert wurde, gelöscht wird, wenn Sie eine neue Version der Skizze in das Due hochladen. Dies liegt daran, dass die gespeicherten Daten im Flash-Speicher gespeichert werden, der beim Hochladen einer neuen Skizze gelöscht wird (der Due hat kein EEPROM für die dauerhafte Speicherung). Wenn eine SD-Karte an das Due angeschlossen ist, werden die gespeicherten Daten auf der SD-Karte gespeichert. In diesem Fall gehen die Daten beim Hochladen einer neuen Skizze nicht verloren.

Dokumentation

Da der Simulator genauso funktioniert wie der Altair 8800, enthält die Originaldokumentation von Altair (leicht auf Google zu finden) alle Informationen, die für die Bedienung der Frontplattenschalter erforderlich sind.

Der Simulator enthält jedoch eine Reihe zusätzlicher Funktionen und integrierter Software für den Altair, die über die AUX1/AUX2-Schalter auf der Vorderseite zugänglich sind (diese waren enthalten, aber beim ursprünglichen Altair nicht verwendet). Diese Funktionalität wird in einem separaten Dokument erklärt, das ich während der Entwicklung der Software für den Simulator geschrieben habe. Das Dokument ist viele Seiten lang und die darin enthaltenen Informationen würden diese Seite überfordern. Bitte konsultieren Sie die Documentation.pdf-Datei im Quell-Repository.

Bauanleitung

Ein Ziel war es, so wenig Unterstützungsschaltungen wie möglich zu verwenden. Sowohl der Arduino Mega als auch der Due verfügen über genügend I / O-Pins, um alle Frontplattenelemente direkt zu verdrahten. Die einzige zusätzliche Schaltung, die erforderlich ist, sind die Transistoren und Widerstände zum Ansteuern der 36 LEDs (wenn die LEDs direkt an die Ausgangspins des Aruino angeschlossen und zu viele gleichzeitig eingeschaltet würden, würde der Gesamtstrom die Grenzen des Arduino überschreiten).

Das Erstellen von vollständigen Schaltplänen für dieses Projekt wäre mühsam, repetitiv (36 identische LED-Treiberschaltungen, Verdrahtung für 32 Schalter) und nicht sehr hilfreich. Das Schaltplandokument enthält stattdessen detaillierte Tabellen darüber, welche Elemente mit welchen Arduino-Pins verbunden werden und die Schaltpläne für die einzelnen Teilschaltungen (wie LED-Treiber). Ich habe auch eine Fritzing-Datei hinzugefügt, um das Layout der LED-Treiberkomponenten auf dem Stripboard anzuzeigen.

Um die Frontplatte zu erstellen, begann ich mit einem hochwertigen Scan der Frontplatte des Altair (zu finden hier auf www.vintage-computer.com) und ließ sie in einem Copyshop auf Karton drucken. Für die Unterlage (um Schalter und LEDs tatsächlich an Ort und Stelle zu halten) habe ich ein Blech von 22 Gauge verwendet, mit einer normalen Bohrmaschine, um die Löcher für LEDs und Schalter zu erstellen. Die LED-Treiberschaltungen werden auf Streifenplatten gelötet, die direkt an die LEDs gelötet werden, die wiederum durch das Metallblech gehalten werden.

Die Frontplatte wird von einer einfachen Holzkiste in Position und aufrecht gehalten. Die Box ist nicht so tief wie beim Original Altair (da sie nur die Frontplatte und Arduino aufnehmen muss).

Um den Ein/Aus-Schalter an der Frontplatte zu verdrahten, habe ich der Box einfach eine Steckdose (wie beim Arduino selbst) hinzugefügt, sie mit dem Frontplattenschalter und von dort mit einem Netzstecker verbunden, der in den Arduino gesteckt wird.

Bei Verwendung des Arduino Due kann die Emulation von bis zu 16 88-DCDD-Festplattenlaufwerken aktiviert werden, indem eine SD-Karte an den SPI-Port des Due angeschlossen wird. Die letzte Seite im Schaltplandokument zeigt die erforderliche Verkabelung im Detail.

Stellen Sie vor dem Hochladen der Skizze zum Arduino Due sicher, dass die Optimierungseinstellung des Arduino-Compilers auf "Performance" umgestellt wird. Standardmäßig ist es auf "size" eingestellt (nicht sicher warum, da das Due 512k Flash-Speicher hat). Laden Sie dazu die Datei

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

in einen Texteditor und ändern Sie jedes Vorkommen von "-Os" in "-O3". Sie können diesen Schritt überspringen, aber dann läuft der Simulator deutlich langsamer.

Die Simulator-Software kann auch auf einem Barebone-Arduino (Mega oder Due) ohne angeschlossene Bedienelemente an der Frontplatte ausgeführt werden. Dies ermöglicht es, einige der mitgelieferten Programme auszuführen (diejenigen, die hauptsächlich das serielle Terminal und nicht die Frontplattenelemente verwenden). Bearbeiten Sie dazu die config.h Quelldatei und setze #define STANDALONE 1 (statt 0). Lesen Sie den Abschnitt "Debugging-Funktionen" in der Dokumentation, um zu erfahren, wie Sie die virtuellen Frontpanel-Elemente in diesem Setup bedienen. Beachten Sie jedoch, dass dies nicht die beabsichtigte Verwendung des Simulators ist. Ich schlage vor, PC-basierte All-Software-Emulatoren zu verwenden, wenn Sie die Frontplattenhardware nicht erstellen möchten. Die config.h Quelldatei enthält eine Reihe von Schaltern, die Simulatorfunktionen einschließen/ausschließen. Die Standardeinstellungen funktionieren gut, aber wenn Sie den Simulator optimieren möchten, ist dies der Anfang.

Danksagungen

Da ich selbst keinen Altair besitze, war ich darauf angewiesen, Informationen aus dem Internet zu bekommen. Die von Mike Douglas (deramp5113) von altairclone.com produzierten Lehrvideos zu Altair 8800 waren eine große Hilfe und sehr interessant anzusehen. Neben der Produktion der Videos hat Mike eine Fülle von Hardware- und Softwarehandbüchern zu Altair gesammelt und auf seiner Website zur Verfügung gestellt.

(Beachten Sie, dass Mikes Videos sehr hilfreich sind, um einige Ideen zu erhalten, was mit dem Simulator zu tun ist, wenn Sie ihn erstellt haben.)

Das ADEXER-Tool von Martin Eberhard war für das Low-Level-Debugging der Festplattenunterstützung von unschätzbarem Wert. Er hat auch zwei Bootloader geschrieben, die vom Simulator verwendet werden:den Combo Disk Bootloader (CDBL) zum Booten von Disks und Minidisks sowie den Hard Disk Bootloader (HDBL), der kürzer und stabiler ist als das Original.

Während ich den gesamten Code einschließlich der CPU-Emulation selbst geschrieben habe, habe ich mich vom i8080-Kernmodellprojekt inspirieren lassen, wenn es darum ging, die Half-Carry-Berechnung und den DAA-Befehl effizient zu implementieren.

Der Simulator enthält einige Originalsoftware für den Altair 8800. Ein weiterer großer Dank geht an Mike Douglas, der unzählige Stunden damit verbracht hat, diese Software zu suchen, zu sammeln und zum Laufen zu bringen und sie dann auf seiner Website altairclone.com zur Verfügung zu stellen:

  • Altair 4K BASIC (MITS 1975)
  • Altair Extended ROM Basic (MITS 1975)
  • Altair Time Sharing Basic (MITS 1977)
  • Kill-the-Bit-Spiel (Dean McDaniel, 1975)
  • Pong-Spiel mit Frontpanel (Mike Douglas)
  • 'Daisy, Daisy...' Musik (Steve Dompier, 1975)
  • Musiksystem (Prozessortechnologie 1977)
  • MITS-Programmiersystem II (MITS 1976)
  • Schlüsselfertiger Altair-Monitor (MITS 1977)
  • i8080 CPU-Diagnose (Microcosm Associates, 1980)
  • i8080 CPU-Trainingsgerät (Frank D. Cringle 1994, Ian Bartholomew 2009)

Die Festplatten- und Festplatten-Images (im Unterverzeichnis "disks" des Quellarchivs enthalten) wurden ebenfalls von altairclone.com sowie von deramp.com (Mike Douglas' persönliche Website) übernommen. Dazu gehören CP/M, verschiedene Versionen von Disk BASIC, Altair DOS (einschließlich Fortran) und mehr. Auch hier hat Mike großartige Arbeit geleistet, all diese Software zu finden und dann funktionierende Disk-Images zu erstellen, die von der Altair-Community verwendet werden können. Ich habe nur eine Auswahl der Software verwendet, daher möchten Sie vielleicht zu altairclone.com oder deramp.com gehen und sich mehr ansehen.

Diskussionsforum

Chris Davis von Altairduino.com hat eine Google-Gruppe zur Diskussion von Altair-Duino-bezogenen Fragen eingerichtet:

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

Kommen Sie gerne vorbei und tragen Sie zur Diskussion bei!

Code

Arduino Altair 8800 Simulatorcode
https://github.com/dhansel/Altair8800

Schaltpläne

Anstatt vollständige Schaltpläne (sehr wiederholend) bereitzustellen, beschreibt dieses Dokument, welche Pins mit welchen Frontplattenelementen verbunden werden müssen, und bietet Schaltpläne für die Unterschaltkreise (z. B. LED-Treiberschaltkreise). zu. Es ist ein bisschen überfüllt, aber es sollte gut genug sein, um zu sehen, wie die Dinge miteinander verbunden sind. Wichtig ist, dass die Komponenten für jede LED nicht mehr als 5 Plätze auf dem Stripboard einnehmen. Auf diese Weise können die LEDs nah genug beieinander sein, um die Frontplatte in Originalgröße zu haben. ledstrip_4OVCpRyKQS.fzz

Herstellungsprozess

  1. LCD-Panel mit Arduino für Flugsimulator
  2. Arduino Spybot
  3. FlickMote
  4. Selbstgemachter Fernseher B-Gone
  5. Hauptuhr
  6. Finde mich
  7. Arduino-Power
  8. Tech-TicTacToe
  9. Arduino-Vierbeiner
  10. Arduino-Joystick