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

Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren

Komponenten und Zubehör

Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren
Arduino Mega 2560
× 1
Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren
Arduino Due
Entweder Arduino Mega oder Due erforderlich, nicht beide!
× 1
Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren
LED (allgemein)
× 36
Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren
Allzweck-Transistor NPN
× 36
Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren
Widerstand 10 kOhm
× 36
Widerstand 150 Ohm
× 36
Mini-Kippschalter SPDT On-On
Für 16 Adressschalter (SW15-0) plus Netzschalter
× 17
Taster SPDT (On)-Off-(On)
Für Funktionstasten (RUN/STOP/EXAMINE...)
× 8
Metallblech für Frontplatten-Rückseite
× 1
Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren
SparkFun Bluetooth Modem - BlueSMiRF Silver
Optional. Verbindet man dies mit den Arduino TX/RX Pins, kann jedes Bluetooth-fähige Gerät als serielles Terminal für den emulierten Altair dienen.
× 1
microSD-Karte mit SD-Kartenadapter
Optional. Nur für Diskettenlaufwerk-Emulation nötig, die für den Simulator nicht erforderlich ist.
× 1

Apps und Online-Dienste

Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren
Arduino IDE
Arduino DueFlashStorage Bibliothek
Der Arduino Due hat kein EEPROM für permanente Speicherung, aber mit dieser Bibliothek können Daten im On-Chip Flash-Speicher gespeichert werden. Alles Gespeicherte wird beim Neuprogrammieren des Arduino gelöscht!
Arduino Due soft_uart Bibliothek
Eine Software-UART-Implementierung, die es ermöglicht, beliebige Pins als serielle Schnittstelle zu nutzen (ähnlich der SoftwareSerial-Bibliothek anderer Arduino-Plattformen). Die Dateien dieser Bibliothek sind im Simulator-Quellcode enthalten, da ich kleine Anpassungen für die Integration vornehmen musste.

Über dieses Projekt

Falls Sie diesen Simulator bauen möchten, aber nicht ganz von vorne anfangen wollen, schauen Sie sich den Altair-Duino Bausatz von Chris Davis an, der mit allen Komponenten, einer Platine, einem Gehäuse und einem vorprogrammierten Arduino Due geliefert wird!

Hier sind einige Bilder von anderen, die dieses Projekt gebaut und individuell gestaltet haben:

Wenn jemand sonst seine Kreation teilen möchte, lassen Sie es mich wissen – ich poste es gerne hier. Ich würde gerne die Vielfalt der Versionen sehen, die Leute entwickeln!

Schon lange fand ich es toll, einen Altair 8800 Computer zum Experimentieren zu haben. Aber funktionierende Original-Altairs sind selten und daher teuer – leicht 1.500 bis 2.500 Dollar, falls überhaupt verfügbar. Es gibt Alternativen wie altairclone.com, aber die kosten immer noch 600 Dollar, was mir für einen Computer, der – so cool er auch ist – nur begrenzt nutzbar ist, zu viel ist. Glücklicherweise hat Mike Douglas, der Schöpfer des Altair Clone, der Community alle alten Dokumente und Software zur Verfügung gestellt, die er für den Clone recherchiert und genutzt hat. Dank Mikes Arbeit gibt es eine Fülle an Informationen über die inneren Abläufe des Altair und seiner beliebtesten Peripheriegeräte.

Irgendwann betrachtete ich die Spezifikationen des Arduino Mega 2560 und fragte mich, ob er genügend I/O-Pins hätte, um einfach die LEDs und Schalter der Altair-Frontplatte anzuschließen und meine eigene Emulator-Software zu schreiben. Tatsächlich hat der Arduino Mega genau die richtige Anzahl an I/O-Pins. Also beschloss ich, meinen eigenen Altair-Clone zu bauen.

Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren

Die Nutzung des Arduino Mega für den Simulator funktionierte gut und war einfach einzurichten, aber die Emulation läuft nur mit etwa 25 % der Altair-Geschwindigkeit und bietet nur 6 KB emulierten RAM (was damals zwar viel gewesen wäre). Auch der permanente Speicher (für das Speichern von Programmen/Daten im Simulator) ist begrenzt, da das EEPROM des Mega nur 4 KB fasst.

Der Arduino Due bietet genügend Speicher für volle 64 KB emulierten RAM und läuft deutlich schneller als der Mega. Zudem kann der Due Daten zur Laufzeit in den Flash-Speicher schreiben. Das ermöglicht die Nutzung jedes beliebigen Teils des 512 KB Flash, der nicht vom Simulator selbst belegt ist, für permanente Speicherung.

Mit dem Due habe ich nun einen Altair 8800 Simulator, der etwa mit Originalgeschwindigkeit läuft, 64 KB emulierten RAM bietet, viel Altair-Software enthält und trotzdem noch 32 KB halb-permanenten Speicher zum Laden und Speichern von Programmen und Daten im Emulator bereitstellt.

Mein Ziel war es, dem „echten“ Altair 8800 Gefühl so nah wie möglich zu kommen. Dazu gehört, dass die Frontplatten-LEDs das reale Verhalten so weit wie möglich widerspiegeln. Ein Kriterium war, dass das Frontplatten-Spiel „Kill-the-Bit“ spielbar sein muss – und das ist es:

Es stellt sich heraus, dass die Simulation dem Original so treu ist, dass sogar die Altair 8800 Musik-Demo funktioniert. Beachten Sie, dass dies darauf basiert, dass ein AM-Radio die elektromagnetischen Störungen der Altair-Schaltung aufnimmt!

Damals brachte Processor Technology eine kleine Erweiterungsplatine für den Altair (nur wenige Kondensatoren und Widerstände) mit begleitender Software heraus, die den Altair in ein respektables Musiksystem verwandelte (für die damalige Zeit). Die gleichen Erweiterungen können am Simulator vorgenommen werden (siehe Dokumentation), sodass er die damals für das Musiksystem erstellten Melodien abspielen kann. Hier ein Beispiel:

Eine weitere historisch wichtige Erweiterung war die Cromemco Dazzler Grafikkarte. Mit einer Software- oder Hardware-Erweiterung kann der Simulator auch diese Karte emulieren:

Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren
Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren

Eine weitere Software-/Hardware-Erweiterung ermöglicht die Emulation der Processor Technology VDM-1 Grafikkarte:

Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren

Da ich kein Original-Altair besitze, stammen alle Informationen aus Dokumenten und Videos (siehe Danksagungen unten). Es mag kleinere Unterschiede geben, aber insgesamt reproduziert der Simulator das Originalverhalten sehr gut. Ein bekannter (und bewusster) Unterschied ist die HLDA-Status-LED: Im Original signalisiert sie, dass die CPU ein Halten durch ein externes Gerät quittiert hat. Diese Funktionalität wird im Simulator nie genutzt, daher signalisiert sie hier, dass eine Datei (seriell/Kassetten-Aufnahme/Wiedergabe) gerade geöffnet ist.

Highlights

Wichtig bei Nutzung des Due: Alles, was im Simulator aufgezeichnet oder gespeichert wird, wird gelöscht, wenn Sie einen neuen Sketch auf den Due hochladen. Das liegt daran, dass die Daten im Flash-Speicher abgelegt sind, der beim Hochladen gelöscht wird (der Due hat kein EEPROM). Wenn eine SD-Karte am Due angeschlossen ist, werden die Daten dort gespeichert und gehen beim Neuprogrammieren nicht verloren.

Dokumentation

Da der Simulator exakt wie der Altair 8800 funktioniert, liefert die originale Altair-Dokumentation (leicht über Google zu finden) alle Informationen zur Bedienung der Frontplattenschalter.

Der Simulator enthält jedoch zusätzliche Funktionen und eingebaute Software für den Altair, die über die AUX1/AUX2-Schalter der Frontplatte zugänglich sind (diese waren im Original vorhanden, aber ungenutzt). Diese Funktionalität wird in einem separaten Dokument erklärt, das ich während der Entwicklung verfasst habe. Das Dokument ist viele Seiten lang und würde diese Seite sprengen – bitte lesen Sie die Datei Documentation.pdf im Quell-Repository.

Bauanleitung

Ein Ziel war, so wenig Hilfsschaltungen wie möglich zu verwenden. Sowohl Arduino Mega als auch Due haben genügend I/O-Pins, um alle Frontplatten-Elemente direkt zu verdrahten. Die einzige zusätzliche Schaltung sind die Transistoren und Widerstände zum Ansteuern der 36 LEDs (würden die LEDs direkt an die Arduino-Ausgänge angeschlossen und zu viele gleichzeitig eingeschaltet, würde der Gesamtstrom die Arduino-Grenzen überschreiten).

Vollständige Schaltpläne wären mühsam, repetitiv (36 identische LED-Treiber, Verdrahtung für 32 Schalter) und wenig hilfreich. Stattdessen enthält das Schaltplan-Dokument detaillierte Tabellen, welche Elemente mit welchen Arduino-Pins verbunden werden, sowie Schaltpläne für die einzelnen Teilschaltungen (wie LED-Treiber). Zusätzlich gibt es eine Fritzing-Datei, die das Layout der LED-Treiber-Komponenten auf der Lochrasterplatine zeigt.

Für die Frontplatte begann ich mit einem hochwertigen Scan der Altair-Frontplatte (gefunden auf www.vintage-computer.com) und ließ ihn im Copyshop auf Karton drucken. Als Rückseite (um Schalter und LEDs zu halten) verwendete ich ein 22-gauge Metallblech und bohrte mit einem normalen Bohrer die Löcher für LEDs und Schalter. Die LED-Treiber-Schaltungen sind auf Lochrasterplatinen gelötet, die direkt an die LEDs angelötet sind, welche wiederum durch das Metallblech gehalten werden.

Die Frontplatte wird durch eine einfache Holzkiste aufrecht gehalten. Die Box ist nicht so tief wie der originale Altair (da sie nur Frontplatte und Arduino aufnehmen muss).

Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren

Für den Frontplatten-Ein/Aus-Schalter fügte ich einfach eine Strombuchse (wie am Arduino selbst) an die Box an, verdrahtete sie mit dem Frontplattenschalter und von dort zu einem Stromstecker, der in den Arduino gesteckt wird.

Bei Nutzung des Arduino Due kann die Emulation von bis zu 16 88-DCDD Diskettenlaufwerken aktiviert werden, indem eine SD-Karte an den SPI-Port des Due angeschlossen wird. Die letzte Seite des Schaltplan-Dokuments zeigt die erforderliche Verdrahtung im Detail.

Wichtig vor dem Hochladen auf den Arduino Due: Stellen Sie die Compiler-Optimierung auf „Performance“ um. Standardmäßig ist „Size“ eingestellt (warum auch immer, der Due hat 512 KB Flash). Dazu die Datei

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

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

Die Simulator-Software kann auch auf einem „nackten“ Arduino (Mega oder Due) ohne Frontplatten-Hardware laufen. Das erlaubt das Ausführen vieler enthaltener Programme (die hauptsächlich das serielle Terminal und nicht die Frontplatten-Elemente nutzen). Dazu in der Quelldatei config.h den Wert #define STANDALONE 1 setzen (statt 0). Siehe Abschnitt „Debugging capabilities“ in der Dokumentation, wie die virtuellen Frontplatten-Elemente in diesem Setup bedient werden. Beachten Sie aber, dass dies nicht der vorgesehene Einsatzzweck ist. Wenn Sie keine Frontplatten-Hardware bauen wollen, empfehle ich PC-basierte Software-Emulatoren. Die Datei config.h enthält diverse Schalter zum Ein-/Ausschalten von Simulator-Funktionen. Die Standardeinstellungen funktionieren gut, aber wenn Sie den Simulator anpassen wollen, ist das der richtige Startpunkt.

Danksagungen

Da ich keinen eigenen Altair besitze, musste ich auf Internet-Informationen zurückgreifen. Die Altair 8800 Lehrvideos von Mike Douglas (deramp5113) von altairclone.com waren eine große Hilfe und sind sehr sehenswert. Zusätzlich hat Mike eine Fülle an Altair-bezogenen Hardware- und Software-Handbüchern gesammelt und auf seiner Seite verfügbar gemacht.

(Hinweis: Mikes Videos sind sehr hilfreich, um Ideen zu bekommen, was man mit dem Simulator nach dem Bau alles machen kann.)

Martin Eberhards ADEXER-Tool war unschätzbar für das Low-Level-Debugging der Festplattenunterstützung. Er schrieb auch zwei Bootloader, die der Simulator nutzt: den Combo Disk Boot Loader (CDBL) für das Booten von Disketten und Mini-Disketten sowie den Hard Disk Boot Loader (HDBL), der kürzer und stabiler als das Original ist.

Obwohl ich den gesamten Code einschließlich der CPU-Emulation selbst geschrieben habe, habe ich mir beim i8080 Core Model Project Inspiration für die effiziente Implementierung der Half-Carry-Berechnung und der DAA-Instruktion geholt.

Der Simulator enthält originale Altair 8800 Software. Ein weiteres großes Dankeschön an Mike Douglas, der unzählige Stunden damit verbrachte, diese Software zu suchen, zu sammeln, zum Laufen zu bringen und dann auf altairclone.com zur Verfügung zu stellen:

Die Disketten- und Festplatten-Images (im disks-Unterverzeichnis des Quellarchivs) stammen ebenfalls von altairclone.com und deramp.com (Mikes persönliche Seite). Darunter sind CP/M, verschiedene Disk-BASIC-Versionen, Altair DOS (inkl. Fortran) und mehr. Mike hat einen fantastischen Job gemacht, all diese Software zu finden und funktionsfähige Disk-Images für die Altair-Community zu erstellen. Ich habe nur eine Auswahl genutzt – schauen Sie auf altairclone.com oder deramp.com für mehr.

Diskussionsforum

Chris Davis von Altairduino.com hat eine Google Group für Diskussionen rund um Altair-Duino eingerichtet:

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

Fühlen Sie sich frei, vorbeizuschauen und mitzudiskutieren!

Code

Arduino Altair 8800 Simulator Code

https://github.com/dhansel/Altair8800

Schaltpläne

Anstelle vollständiger Schaltpläne (sehr repetitiv) beschreibt dieses Dokument, welche Pins mit welchen Frontplatten-Elementen verbunden werden, und liefert Schaltpläne für die Teilschaltungen (wie LED-Treiber).

Ein Versuch, das Layout der Lochrasterplatine darzustellen, an der die LEDs angeschlossen sind. Es ist etwas überfüllt, aber sollte gut genug sein, um die Verbindungen zu erkennen. Wichtig: Die Komponenten für jede LED dürfen maximal 5 Lochraster-Felder beanspruchen, damit die LEDs nah genug beieinander sind, um die Frontplatte in Originalgröße zu realisieren.

ledstrip_4OVCpRyKQS.fzz

Herstellungsprozess

  1. Arduino Nano Flight Simulator 2020 Kontrollpanel – LCD & CDI Display
  2. Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
  3. FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
  4. DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
  5. Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
  6. Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
  7. Optimierte Stromversorgungslösungen für Arduino-Projekte
  8. Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
  9. Intelligenten Arduino-Vierbeiner-Roboter bauen: Schritt-für-Schritt-Anleitung
  10. DIY Arduino Lenkrad / Joystick für Rennspiele – USB-HID-Umbau