Altair Simulation

Historische Computer Programmiersprachen

Die mittlerweile vielfältigen Simulationen historischer Computersysteme finde ich ganz wunderbar. Dafür gibt es heute eine Vielzahl von Simulationsprogrammen, die unterschiedlichste Rechnersysteme der letzten 80 Jahre Computergeschichte simulieren. Dabei gibt es Exoten, die ganz dezidiert ein einziges System simulieren, aber auch Frameworks, die es erlauben, relativ leicht Simulatoren für unterschiedlichste Systeme zu programmieren. Dazu gehört SIMH von Robert M. Supnik (http://simh.trailing-edge.com/). Die aktuellen Versionen finden sich auf https://github.com/simh/simh und ein guter Überblick auch auf Wikipedia SIMH – Wikipedia

Heute möchte ich darauf eingehen, welche Schritte notwendig sind, wenn man sich zum ersten Mal mit so einer SIMH-Simulation beschäftigen möchte. Als Beispiel möchte ich dabei auf die wunderbare Altair Simulation von Peter Schorn, basierend auf dem SIMH-Projekt, zurückgreifen. Der Altair 8800 – basierend auf dem Intel 8080 Prozessor – war wahrscheinlich der erste massenmarkttaugliche Homecomputer und wurde ab 1975 in relevanten Stückzahlen verkauft ( Altair 8800 – Wikipedia ). Der Rechner wurde komplett ohne Software, also auch ohne Betriebssystem ausgeliefert. Diese Lücke schloss bald ein kleines Startup bestehend aus den jungen Programmieren Bill Gates und Paul Allen, indem sie mit dem Altair Basic eine Kombination aus Betriebssystem und Programmiersprache schufen, die schnell sehr populär wurde. Hier wurde der Grundstein von Microsoft gelegt und den Rest der Geschichte kennt jeder.

Der Ablauf im Weiteren bezieht sich auf das von mir genutzte Windows 10 (64 Bit) System. Dafür existieren ausführbare Programme (.exe). Unter Linux – z. B. auf meinem Raspberry – lädt man sich die Quellen herunter und kann die ausführen Programme sehr einfach über ein MAKE erzeugen.

Was braucht man nun mindestens um zu starten?

Was ist nun zu tun?

  • Einen Ordner anlegen, in den wir alles hineinkopieren. Es muss nichts installiert werden. Darum am besten nicht in den Windows-Programmverzeichnissen. Aus dem Software-Zip-File alles in diesen Ordner entpacken. Eigentlich benötigt wird nur die passende 32- oder 64-Bit EXE. Die Doku ist aber sehr empfehlenswert. Sieht dann bei mir im Ergebnis so aus:
  • In diesen Ordner dann wie Dateien 8kbas.bin und bas8 aus dem heruntergeladenen Zip-File mit der Altair-Original-Software kopieren, was dann im Ergebnis so aussehen sollte:
  • Und jetzt kann es auch schon losgehen: Starten der passenden 32- oder 64-Bit EXE. Bei Win10 kommt jetzt ggf. eine Sicherheitsabfrage, weil das Programm keine Signatur hat. Ich persönlich ignoriere das – muss aber jeder für sich selbst entscheiden!
  • Was einem nun in reinem DOS-Box-Schwarz entgegenstrahlt ist ein laufender Altair Computer, der darauf wartet, dass man ihm sagt, was er tun soll.
  • Tatsächlich war ich bei meinem ersten Versuch ziemlich ernüchtert, da ich schon etwas erwartet hätte, was wie ein Computer aussieht und wo nun wenigsten ein Betriebssystem läuft. Zumindest wissen wir, dass wir eine aktuelle Version des Altair 8800-Simulators am laufen haben, der allerdings schon über die neuere Z80-CPU verfügt. Zu dem, was man hier jetzt schon tun könnte später mehr. Der Prompt „sim>“ sagt uns, dass wir uns nun auf der Kommando-Ebene des Simulators befinden.
  • Nun werfen wir mal unser Basic auf dem Altair an. Dafür hat uns her Schorn freundlicherweise ein Start-Script bereitgestellt, das uns die Arbeit deutlich erleichtert. Der erste und wichtigste Befehl im Simulator ist das simple „do“ gefolgt von dem Namen einer Datei, die eine folge von SIMH-Kommandos enthält. Das ist in unseren Fall die Datei bas8 (ohne Endung aber eine reine Textdatei).
  • Das mal flott eingetippt und dann startet der Rechner auch schon

Die erste Meldung sagt uns, dass die 8192 Bytes = 8k des Basic ab der Speicheradresse 0 geladen wurden

  • Die Frage nach dem Memory Size stammt schon aus dem Basic, da der Altair mit unterschiedlichen Speicherausbauten verkauft wurde und die Software schlankweg wissen wollte, was sie denn verwenden darf
  • Diese und die folgende Frage beantworten wir lapidar mit „Enter“ was im Ergebnis den gesamten (64k großen) Speicher nutz und eine Terminalbreite von 72 Zeichen einstellt. Und dann können wir uns entscheiden, ob wir gerne die gängigen trigonometrischen Funktionen nutzen wollen. Wenn nicht, spart das wieder was vom knappen Hauptspeicher
  • Und schon sind wir im Basic-Interpreter und können damit ungefähr so viel tun, wie mit einem C64 oder mit einem DOS 2.11 und GW-Basic. Zum Beispiel unser beliebtes „Hello World“:
  • Oder auch ein erstes, kleines Programm:
  • Das Programm wird zeilenweise eingetippt und entspricht dem Basic-Standard Mitte der 1970er-Jahre. Wer zum Beispiel noch den VC20/C64 kennt findet sich hier auf Anhieb zurecht. Das Programm liefert auch – im Rahmen der geringen Genauigkeit der numerischen Variablen – das richtige Ergebnis.
  • Nun würde man das Ganze vielleicht gerne speichern aber in der Minimal-Konfiguration, die wir hier gestartet haben, fehlt jegliches Speichermedium. Damals (1975) wäre das wohl ein Kassettenlaufwerk gewesen, später dann Disketten. Was aber trotzdem geht ist das Kopieren in eine Textdatei auf dem Windows-Host mit Copy und Paste. An anderer Stelle zeige ich mehr Wege, wie man Daten zwischen den Maschinen austauschen kann
  • Als letztes für heute noch der Hinweise, was die ominöse Datei bas8 eigentlich steuert. Doch zunächst einmal der Inhalt der Version, die ich heute heruntergeladen haben:

reset cpu
set cpu 8080
set cpu noitrap
set cpu altairrom
set sio ansi
set sio upper
l 8kbas.bin 0
d sr 8
g 0
; MEMORY SIZE?
; TERMINAL WIDTH?
; WANT SIN-COS-TAN-ATN? Y
;
; 58756 BYTES FREE
; ALTAIR BASIC REV. 4.0
; [EIGHT-K VERSION]
; COPYRIGHT 1976 BY MITS INC.
; OK

  • Das ist grundsätzlich eine Folge von SIMH-Kommandos, die in diesem Fall einfach sequentiell abgearbeitet werden, wenn man die Datei mit DO [Dateiname] ausführt. Unabhängig davon kann man jeden dieser Befehle auch manuell in der SIMH-Konsole eingeben und direkt ausführen.
    • RESET CPU – setzt den Simulator zurück – was ein Reset halt so tut
    • SET CPU 8080 – Dadurch wird SIMH aufgefordert, einen Altair mit einer Intel 8080 CPU zu simulieren. Das später sehr verbreitete Betriebssystem CP/M verlangte dann allerdings eine Z80 CPU, die der Simulator natürlich auch anbietet
    • SET CPU NOITRAP – Sorgt dafür, dass die Simulation nicht stoppt, wenn sie einen ungültigen Befehl für die 8080 CPU findet – was wohl seinerzeit gar nicht so ungewöhnlich war
    • SET CPU ALTAIRROM – aktiviert das Boot-ROM des Altair
    • SET SIO ANSI – sorgt dafür, dass die Kommunikation zwischen der Außenwelt – wir am Rechner mit der CMD-Shell als Terminal – und dem Altair über einen ANSI-Zeichensatz erfolgt
    • SET SIO UPPER – setzt alle Eingaben automatisch auf Großbuchstaben um
  • Die nächsten drei Befehle sorgen nun dafür, dass auch wirklich was passiert. Sie sind hier abgekürzt, was am Anfang etwas verwirrend ist:
    • L(OAD) 8KBAS.BIN 0 – lädt den Inhalt der angegebenen Binärdatei in den Speicher des simulierten Rechners, in diesem Fall ab der Speicherstelle „0“
    • D(EPOSIT) SR 8 – setzt den Inhalt eines Registers der CPU oder eines Peripheriegerätes auf den angegebenen Wert. Hier wird der Wert der Sense-Switches (einer Reihe von 16 Kippschaltern am Frontpanel des Altair) auf 8 gesetzt. Die Schalter ergeben zusammen eine 16-Bit Binärzahl und wurden ursprünglich verwendet um einfache Programme in Maschinensprache Byte für Byte einzugeben. Typischerweise waren das Ladeprogramme, die dann die eigentliche Software von einem externen Medium, z. B. dem Papertape (einem Lochstreifen aus Papier) nachgeladen. Das 8K-Basic erwartet, dass sie Sense-Switches auf dem Wert acht stehen.
Altair 8800 der im Smithsonian-Museum ausgestellt ist – Copyright Ed Uthman (Houston, TX, USA) – Lizenz Creative Commons
  • G(O) 0 – Startet die Maschine mit Ausführen des geladenen Programms aus dem Load-Befehl ab Adresse „0“
  • Die folgenden Zeilen, jeweils mit einem „;“ beginnend sind Kommentare, damit man weiß, was nach einem erfolgreichen Systemstart ggf. noch einzugeben ist und was die Maschinen dann so meldet

In einem der kommenden Beiträge wollen wir den Altair im Massenspeicher ergänzen und ein Terminal anschließen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.