Arduino-basierter Altair 8800 Simulator Bausatz – Retro-Computer bauen & programmieren
Komponenten und Zubehör
![]() |
|
× | 1 | |||
![]() |
|
× | 1 | |||
![]() |
|
× | 36 | |||
![]() |
|
× | 36 | |||
![]() |
|
× | 36 | |||
|
× | 36 | ||||
|
× | 17 | ||||
|
× | 8 | ||||
|
× | 1 | ||||
![]() |
|
× | 1 | |||
|
× | 1 |
Apps und Online-Dienste
![]() |
|
|||
|
||||
|
Ü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:
- Alan Lowther fand ein schönes Metallgehäuse für seine Version und verband einen Raspberry Pi für Ein-/Ausgabe und Sprachsynthese.
- Martin Zumr baute eine wirklich schöne Box komplett aus Holz.
- Chris Davis (kb0wwp) entwarf eine Platine und ein wunderschönes Gehäuse.
- Justin Davis baute ein Altair Shield für den Arduino Due.
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.

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:

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

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
- Reproduziert das Verhalten der Altair-Frontplatten-Elemente präzise.
- Läuft mit etwa der Originalgeschwindigkeit des Altair 8800 (bei Arduino Due) oder 25 % Originalgeschwindigkeit (bei Arduino Mega).
- Emulierte RAM-Größe: 64 KB (Due) oder 6 KB (Mega).
- Zahlreiche Altair-Programme 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 Due), Altair Time Sharing BASIC (ermöglicht mehreren Nutzern gleichzeitige BASIC-Nutzung).
- 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 (Kassettenrekorder-Interface) Board. Jedes simulierte serielle Gerät kann auf eine serielle Arduino-Schnittstelle gemappt werden. Standardmäßig sind die zwei häufigsten (88-SIO und 88-2SIO Port 1) auf den Haupt-Seriellen Port des Arduino mit 115200 Baud 8n1 gemappt, der über das USB-Kabel zugänglich ist. Ich empfehle, einen Serial-to-Bluetooth-Dongle an die RX/TX-Pins anzuschließen. So kann jedes Bluetooth-Gerät als Terminal für den Altair dienen.
- Beim Arduino Due können sowohl die Haupt-Serienschnittstelle (USB) als auch Serial1 (Pins 18/19) gleichzeitig genutzt werden.
- An jedes serielle Gerät gesendete Daten (einschließlich ACR-Kassette) können in bis zu 256 Dateien aufgezeichnet und wiedergegeben werden, die im lokalen Speicher des Arduino (EEPROM oder FLASH) abgelegt sind.
- Das Kassetteninterface unterstützt CSAVE/CLOAD-Befehle in Extended BASIC (automatisch, ohne Benutzerinteraktion). Ideal für die Entwicklung eigener BASIC-Programme!
- Emuliert eine Cromemco Dazzler Grafikkarte (benötigt zusätzliche Hardware/Software, siehe Dokumentation).
- Emuliert eine Processor Technology VDM1 Video-Terminal-Karte (benötigt zusätzliche Hardware/Software, siehe Dokumentation).
- Emuliert bis zu 16 88-DCDD Diskettenlaufwerke (4 in Standardkonfiguration). Diskettenemulation ist optional, erfordert aber den Anschluss einer SD-Karte an den SPI-Header des Arduino. Nur mit Arduino Due unterstützt.
- Emuliert einen 88-HDSK Festplattencontroller mit bis zu 4 Festplatteneinheiten (1 in Standardkonfiguration) und 4 Platten pro Einheit.
- Emuliert ein 88-RTC-VI Board mit Echtzeituhr und Vektor-Interrupt-Handling. Ermöglicht das Ausführen von Altair Time Sharing Basic.
- 256-Byte-Speicherseiten können in permanenten Speicher gespeichert und wieder in den RAM geladen werden. Einfache Möglichkeit, Programme zu speichern, die über die Frontplattenschalter eingegeben wurden.
- Viele Einstellungen lassen sich über den integrierten Konfigurationseditor einfach ändern.
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).

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:
- 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 Frontplatte (Mike Douglas)
- „Daisy, Daisy...“ Musik (Steve Dompier, 1975)
- Music System (Processor Technology 1977)
- MITS Programming System II (MITS 1976)
- Altair Turnkey Monitor (MITS 1977)
- i8080 CPU Diagnostic (Microcosm Associates, 1980)
- i8080 CPU Exerciser (Frank D. Cringle 1994, Ian Bartholomew 2009)
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
- Arduino Nano Flight Simulator 2020 Kontrollpanel – LCD & CDI Display
- Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
- FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
- DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
- Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Optimierte Stromversorgungslösungen für Arduino-Projekte
- Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
- Intelligenten Arduino-Vierbeiner-Roboter bauen: Schritt-für-Schritt-Anleitung
- DIY Arduino Lenkrad / Joystick für Rennspiele – USB-HID-Umbau






