Computerspiel Worm

Es gibt – wie fast immer – einen Hauptgrund und Motivator sich mit Computern auseinander zu setzen: Spiele! Das war bei mir nicht anders. Bei mir hat es ja in den späten 1980er Jahren auf dem DDR-Kleincomputer KC85/4 von Robotron angefangen, seit es dann ab dem Jahr 1991 bis heute ohne Unterbrechung die x86 PC-Plattform ist.

Worm
Worm – früher Spielverlauf

Über das c’t Sonderheft Retro des Heise-Verlags bin ich über das Thema CP/M auf das Computerspiel Worm aufmerksam geworden. Dank des großen Angebots an CP/M-Versionen, der dazu passenden Software im Internet und dem SIMH, der auch den Altair 8800 mit Zilog Z80 Prozessor emulieren kann, ist die Einstiegshürde gering.

Worm
Worm – Der kopf jagt seinem Körperende hinterher

Worm ist eine frühe Umsetzung des später auf den Nokia-Mobiltelefonen sehr beliebten Snake gewesen. Das gute an dieser frühen Implementation von Worm ist, dass im Spielablauf nur dann etwas passiert, wenn man eine Taste zur Bewegung des Wurmes drückt. Das entschleunigt den Bewegungsablauf auf eine beliebige Langsamkeit. Dies gibt im Umkehrschluss für den Spieler die Möglichkeit langsam, behutsam und mit System den Bewegungsverlauf der Spielfigur zu Steuern und letztendlich das Spiel vollständig zu lösen. Noch nie ist es mir gelungen, in der Lage zu sein ein Spiel überhaupt – und zudem in der Schnelligkeit von zwei bis drei Tagen und ein paar Anläufen zu lösen.

Worm
Worm – Letztes Segment mit neuer Zahl besetzt
Worm
Worm – Gelöstes Spiel

Die erste Version von Worm ist im Jahr 1978 von dem US-Amerikaner Peter Trefonas programmiert worden. Es ist damit für mich das älteste von mir gespielte Computerspiel.

Links:

MP3-Dateien aus der Tonspur einer DVD erzeugen

Meine DVD-Sammlung besteht fast nur aus Musik-DVDs. Von einigen der darauf enthaltenen Konzerte und Musik-Video-Clips, mochte ich dann immer auch eine Audioversion im MP3-Dateiformat bei einzelnen Lieder, beziehungsweise bei Konzerten eine AAC-codierte m4a-Datei mit Kapitelmarken. – Wobei man sagen muss, dass das MP3-Format selber auch Kapitelmarken unterstützt, nur gibt es bloß eine handvoll Software-Player die Kapitelmarken überhaupt unterstützen, bei den Hardware-Player ist mir selber sogar überhaupt keiner bekannt. Grund ist wahrscheinlich, dass die Funktion der Kapitel erst in einer Weiterentwicklung des MP3-Formats implementiert wurde, wo es sich bereits so weit etabliert hatte, dass es auch keine Rolle mehr gespielt hatte. Auch die Funktionalität der Kapitelmarken in AAC-codierten m4a-Dateien hat in der Music-App auf Apples iOS mal mehr oder weniger zuverlässig funktioniert.

Mein Workflow für die Extraktion von dem Audio auf der DVD sah seit dem Jahr 2003 so aus, dass ich am Computer die DVD mit einem Software-Player abgespielt habe und für den Vorgang ein Wave-Editor das Signal aus dem Audio-Mixer des Betriebssystems aufnahm. Dieses Verfahren war sehr störungsanfällig, da ich sicherstellen musste, dass kein anderes Programm mit Klangwiedergaben in die Aufnahme reingrätschen durfte. Passierte dies, so war die Aufnahme hin und musste neu begonnen werden, und selbst wenn es bei dem ersten Versuch geklappt hatte, so war dies Verfahren dennoch auch zeitaufwendig, denn die Audio-Spur auf der DVD musste ja mindesten einmal in der gesamten Länge abgespielt werden. Danach ging es an das Zurchtstutzen der Enden durch Schneiden, die Anpassung des Signalpegels und dem re-Encoding in die MP3-Datei.
Für die AAC-codierten m4a-Dateien mit den Kapitelmarken musste ich die Aufnahme erst als Wave-Datei speichern, welche ich dann unter GarageBand in ein neues Podcast-Projakt importiert habe. Nur die Podcast-Funktion von Apples GarageBand ist in der Lage die gewünschten Kapitelmarken zu setzen. Und klar: die fertigen Aufnahmen mit allen Kapitelmarken dürfen dann nur als m4a-Datei mit AAC exportiert werden, wenn diese beibehalten werden sollen. Auch GarageBand ist nicht in der Lage MP3s mit Kapitelmarken zu erstellen.
Wenn ich ehrlich bin, so habe ich das Gefühl, dass gerade durch den Schritt des analogen Aufzeichnens meine Aufnahmen bisher schon qualitativ bereits gelitten haben.

Da mir vor ein paar Tagen nach langer Zeit mal wieder eine Konzert-DVD in der Stadtbibliothek in die Hände gefallen ist, von der ich mir einen Großteil der Songs als MP3-Dateien nochmals als eine Art Best-of zusammenstellen möchte, ist das Thema „Extrahieren der Audio-Spur von DVD“ mir wieder in den Fokus gerückt.

Soll direkt aus der Audio-Spur der DVD eine MP3-Datei erstellt werden, ohne dass eine Audio-Bearbeitung vorher stattfindet, ist der für mich beste Workaround nun folgender.:

  • Das ISO-Image der DVD mit HandBrake einlesen.
  • Ein Encoding-Preset wählen, was am Ende eine schlecht mögliches Ergebnis im Video-Encoding ergibt. Der Schnelligkeit halber, denn der Video-Stream wird sowieso dann wieder weggeworfen.
  • Bei den Audio-Einstellungen MP3 als Codec wählen und die gewünschte Bitrate wählen. Für Musik 192 zum Beispiel.
  • Dann kann das Encoding gestartet werden.

Für das eigentliche Extrahieren der Audio-Spur, die ja bereits im gewünschten MP3-Format im MP4-Container enthalten ist, kommt nun das wirklich unschlagbar gute Kommandozeilenprogramm ffmpeg zum Einsatz.

ffmpeg -i Sample.m4a -vn -acodec copy Sample.mp3

Am Ende noch vielleicht Dateinamen anpassen und die id3-Tags bearbeiten. – Fertig!

Soll die Audio-Spur vor dem finalen Encoding als MP3 oder als AAC-m4a-Datei noch bearbeitet werden, so muss die Audio-Spur erst einmal unkomprimiert von der DVD extrahiert werden. Wer wie ich am liebsten das MP4-Containerformat mit der Videodateiendung .m4v verwendet, so muss dieses erst einmal in HandBrake als Zielformat in ‚mkv Datei‘ geändert werden. Grund ist, dass es über HandBrake nur mit mkv-Dateien möglich ist, die Audiospur der DVD mit dem Quell-offenen Audiokompressions-Codec FLAC verlustfrei zu Encodieren. Unter den Audioeinstellungen kann als Codec noch zwischen ‚FLAC 16-Bit‘ und ‚FLAC 24-Bit‘ gewählt werden. Danach das Encoding wieder starten.

Für das Extrahieren der FLAC-Datei kommt nun wieder ffmpeg zum Einsatz.:

ffmpeg -i Sample.mkv -acodec flac Sample.flac

Die erzeugte FLAC-Datei mit der verlustfreien Audiospur kann dann mit dem Audioeditor Audacity geöffnet und bearbeitet werden.

Für mich stellt sich weiterhin das Problem mit den Kapitelmarken. Da GarageBand leider nur den Import von MP3- und Wave-Dateien unterstützt, muss ich das bearbeitete Audio mit Audacity erst als Wave-Datei exportieren. Dann die Wave-Datei wie bereits früher gehandhabt, in GarageBand in ein neues Podcast-Projekt importieren, setzen der Kapitelmarke und das Projekt als AAC exportieren, damit die Marken funktionieren.

Es sei noch angemerkt, dass HandBrake auch in der Lage ist, den Signalpegel der Audiospur mittels Gain anzuheben. Davon möchte ich aber abraten, da dies vermutlich am Ende zu einem permanenten Try-and-Error Spiel führt, bis der Pegel in einem sinnvollen Volumen erhöht ist. Ich zum Beispiel könnte nie vorhersagen, welche akustische Dynamik eine Tonspur hat, und sehr schnell sind bei der unvorsichtigen Handhabung des Reglers, Stellen innerhalb der Tonspur – wenn nicht sogar über die gesamte Länge – übersteuert. Deswegen möchte ich immer die Benutzung eines Audio-Wave-Editors für die Bearbeitung einer Tonspur empfehlen. Audacity ist seit Version 2.3 in der Lage die Übersteuerten Stellen einer Tonspur mit einer roten Markierung nun kenntlich zu machen.

Bei meiner aktuellen DVD aus der Stadtbibliothek handelt es sich um eine Konzertaufnahme der Rolling Stones aus dem Jahr 1998 anlässlich ihrer ‚Bridges To Babylon‘-Tour. Das Konzert – unter dem Titel „Bridges To Bremen“ – fand am 02. September 1998 im Bremer Weserstadion statt und wurde von den TV-Stationen in ganz Europa und Teilen Afrikas im Fernsehen live übertragen. Das ist einmal an Bildformat 4:3 und -qualität – und vor allem an dem Audio zu hören. Da dieses Konzert wahrscheinlich nicht für eine offizielle Vermarktung als Tonträger durch das Label aufgenommen wurde, wo es eigentlich immer noch eine Post-Produktion mit dem Mastering gibt, sondern nur direkt versendet wurde, haben die Tontechniker das Signal fleißig durch einige Kompressoren geschickt. Außerdem befinden sich so ziemlich in allen Titeln übersteuerte Stellen.

Leider hatte Apple im Jahr 2013 die Podcast-Funktion mit Erscheinen von GarageBand in Version 10 wieder entfernt und damit mir die Möglichkeit von Kapitelmarken in AAC-encodierten m4a-Dateien genommen.

Links:

Emulation einer VAX mit SIMH: NetBSD

NetBSD ist ein unixoides Betriebssystem, bei dem die einzelnen Komponenten des Userland mit den Fähigkeiten des Kernels optimal abgestimmt sind. Dies wird dadurch erreicht, dass der Kernel und fast das ganze Userland aus einer Hand stammen. Großer Wert wird darauf gelegt, dass sich das System auf allen Architekturen gleich verhält. NetBSD versteht sich sowieso darauf, auf vielen Computer-Architekturen ausgeführt werden zu können, von denen inzwischen viele einen historischen Charakter haben. – Nicht umsonst gibt es den alten Witz.: ‚NetBSD läuft auf allen Geräten. Selbst auf einem Toaster.‘

Die Portierung von NetBSD auf die VAX-Architektur der Digital Equipment Corporation war erstmals mit der NetBSD-Version 1.2 im Oktober 1996 abgeschlossen. Seitdem wird der VAX-Port kontinuierlich weiter entwickelt. Trotzdem ist NetBSD ein modernes Betriebssystem am Puls der Zeit. So war NetBSD auch das erste unter den Open Source-Betriebssystemen, welches die USB-Schnittstelle mit der Version 1.4 im Mai 1999 unterstützte. Selbst unter Linux wurde die Unterstützung für USB erst mit Kernel 2.4 im Januar 2001 realisiert.

Boot NetBSD 9.1 MicroVAX 3900 1
Boot NetBSD 9.1 MicroVAX 3900

Ich selber habe meinen ersten Kontakt mit NetBSD mit Erscheinen der Version 4.0 aufgenommen. – Das war im Jahr 2008. Motivation war damals für mich, dass das Betriebssystem selber nur aus einem kleinen Basissatz mit den wichtigsten Programmen (also dem Useland) besteht und so trotz Fehlen einer grafischen Benutzeroberfläche mit Maus, stattdessen mit einer ncurses-ähnlichen Menü-Steuerung extrem fix auf dem Computer installiert werden kann. Nach dem ersten Boot auf das installierte System war und ist man nur mit dem vi als Texteditor ausgestattet, gezwungen das System durch editieren von Dateien und den Kommandozeilenprogrammen des Basissystems zu konfigurieren und sich einzurichten. Das war für mich der Hebel, einen Zugang zu der Shell zu bekommen. Schneller und deutlich angenehmer als, wenn ich mich zum Beispiel mit Linux From Scratch erst einmal durch lange Anleitungen lesen hätte müssen und die nötigen Programme sowie Bibliotheken aus dem Sorce-Code erst in Binädaten kompiliert werden müssen.

Inzwischen ist das Programm sysinstall – so heißt der ncurses-ähnliche Installer nämlich – nochmals verbessert worden. So lassen sich über ihn inzwischen unter anderem auch die Quellpfade für die pre-kompilierten Programmpakete sowie das Archiv der Programmpakete mit dem Quellcode konfigurieren und beziehen, den lokalen NTP-Zeitserver aktivieren, den Displaymanager xdm für den automatischen, grafischen Login systemweit aktivieren oder einen eingeschränkten User-Account erstellen.
Im Prinzip verläuft die Installation und Einrichtung des Systems auf der VAX-Architektur genau so wie bei der x86 PC-Version (32 und 64 Bit). Das einzige, was im Gegensatz zu den x86 PC-Versionen zum Glück wegfällt, ist die Partition mit der MBR-/GPT-Formatierung. Während des Boots des Installationsmediums muss aber noch ein Terminal ausgewählt werden, sonst kann verständlicherweise das sysinstall-Programm nicht starten. – Es stehen als Terminal-Emulation VT100, VT220, Ansi und XTerm zur Verfügung, wobei die Darstellung von der Ansi-Emulation im SIMH-Emulator absolut furchtbar aussieht.
War ich nach der Installation von dem NetBSD 7.x im SIMH ziemlich angenervt, weil der Init-Prozess bei jedem Booten von der HDD nach der gewünschten Terminal-Emulation fragt, wird bei NetBSD 9.x das System ohne der Emulation gestartet. Es kann sein, dass da die Skripte vor Veröffentlichung nicht vollständig implementiert wurden. Die Umgebungsvariable muss also nachträglich noch händisch gesetzt werden.

In meinem Doku-Wiki habe ich die knappe Konfigurationsdatei für die SIMH-Emulation für NetBSD dokumentiert.

Boot NetBSD 9.1 MicroVAX 3900 2
Login NetBSD 9.1 MicroVAX 3900

Da zum heutigen Veröffentlichungszeitpunkt dieses Beitrags NetBSD 9.1 erst 12 Tage zur Verfügung steht, wurden noch keine pre-kompilierten pkgsrc-Programmpakete für den VAX-Port auf den Servern zur Verfügung gestellt. Waren für NetBSD 8.2 noch 476 Binärpakete verfügbar, gibt es für NetBSD 9.0 nur noch 26 Pakete zur Auswahl. Ich denke, dass aufgrund der aus heutiger Sicht extrem begrenzten Leistungsfähigkeit der VAX-Architektur die Computermodelle längst nicht mehr auch nur für halbwegs sinnvolle Aufgabengebiete eingesetzt werden können, wird an der Menge der angebotenen Programmpakete auch kein Zuwachs mehr zu erwarten sein.
Der NetBSD-User John Klos hatte mal das Experiment gewagt und auf seiner VAXStation 4000/VLC mit 24 Megabyte RAM unter Version 9.0 Perl in der Version 5.30.3 aus den Quellen kompiliert. Das Kompilat stand erst nach exakt 9 Tagen, 15 Stunden, 6 Minuten und 48 Sekunden zur Verfügung.

Mit der Veröffentlichung von Version 2.8 war im Dezember 2000 die Portierung von OpenBSD auf DECs VAX-Architektur abgeschlossen und die Weiterentwicklung begonnen. OpenBSD selber ist von dem ehemaligen NetBSD-Mitinitiator und -entwickler Theo de Raadt im Jahr 1995 gegründet worden, nachdem dieser von seiner ehemaligen Community ausgeschlossen wurde. Nach der Veröffentlichung von Version 5.8 im Jahr 2015 wurde dann die Weiterentwicklung von OpenBSD auf die VAX-Reihe wieder aufgegeben.

Links:

Emulation einer VAX mit SIMH: Die Hardware

Der Host – Der Computer auf dem SIMH ausgeführt wird

Nachdem ich meine ersten Gehversuche in der Emulation der (Micro-) VAX unter SIMH unternommen habe um in DEC’s Betriebssysteme ULTRIX und OpenVMS hineinschnuppern zu können, sowie auch bereits der Gedanke in mir aufkeimte, gleich eine Artikel-Serie daraus zu stricken, hatte ich die Möglichkeit für lau einen Laptop zu übernehmen. Dabei handelt es sich um einen Acer Aspire 7530, welcher vermutlich im Mai 2008 auf den Markt gebracht wurde. Ausgestattet ist das Gerät mit einem AMD Athlon X2 Dual Core QL-60, welcher mit 1,9 GHz getaktet wird und der zwei mal 64 KB Level 1 Cache, sowie 512 KB Level 2 Cache für jeden der beiden Kerne besitzt. Damit ist die CPU-Leistung für diesen dicken, schweren 17″-Laptop (von den Maßen und der Tastatur eigentlich schon eine Mobile-Workstation) laut der damaligen Fachpresse recht mager. Zur sonstigen Ausstattung gehörten 3 GB DDR2 RAM, von dem bis zu 256 MB Video-RAM für die auch eher seinerzeit schwache nVidea GeForce 9400M abgezweigt werden können, und eine 320 GB Festplatte. Die weiteren technischen Merkmale habe ich in meinem Wiki in der Auflistung meiner PC-Familie aufgelistet, waren aber seinerseits bei Marktstart des Gerätes alle marktüblich, spielen dennoch aber für meinen Einsatzzweck keine Rolle.

Nach Erhalt des Gerätes bin ich erst einmal hingegangen und habe für etwas mehr als 20,- Euro noch ein 2 GB Speichermodul gekauft und eingebaut, weil ich der Überzeugung bin, dass ein Computer Arbeitsspeicher nicht genug haben kann. So hat das Gerät nun 4 Gigabyte statt der ursprünglichen etwas krummen 3 Gigabyte. Beim Betrieb dann mit Linux unter Verwendung von LXDE als Window-Manager hat sich dann deutlich heraus gestellt, dass die CPU-Leistung der deutlich limitierender Leistungsfaktor ist, und weniger die Menge des Arbeitsspeichers. Da ich auf meinen Apple-Macs leider die Treiber für TUN/TAP und vde2 nicht korrekt installieren konnte, bin ich doch froh einen separaten Computer zu haben, den ich in erster Linie nur für das Ausführen von SIMH nutzen kann. Von daher ist es erstmal nicht so schlimm, dass modernere Betriebssystem wie ein aktuelles NetBSD unter einer emulierten Digital VAX auf dem Acer-Laptop recht träge gegenüber meinen leistungsfähigeren Macs laufen. Auf dem Acer-Laptop habe ich Debian-Linux als Host-Betriebssystem installiert, wo der TUN/TAP-Treiber vernünftig läuft und die Programm-Pakete auch besser aufeinander abgestimmt sind.

Links:

Die MicroVAX 3900 von DEC als emulierte Computer

Die VAX im allgemeinen (kurz für Virtual Address eXtension) ist eine von der Digital Equipment Corporation entwickelte 32 Bit Rechnerarchitektur. Die 32 Bit VAX-Prozessoren besitzen einen CISC-Befehlssatz. Für die VAX-Reihe hatte DEC auch passend zu der Architektur das Betriebssystem VMS (kurz Virtual Memory System, später OpenVMS) mitentwickelt und auf den Markt gebracht. – Inzwischen wurde und wird auch das Betriebssystem OpenVMS durch die Firma Hewlett Packard Enterprise zu einem 64 Bit System weiter entwickelt. – Auch lässt sich inzwischen auf den Computern der VAX-Reihe NetBSD und Linux betreiben. Es wurde von OpenBSD auch eine Portierung für die VAX-Computer entwickelt, aber diese wurde in ihrer Weiterentwicklung mit OpenBSD 5.9 im Jahr 2016 wieder eingestellt. Ich bin mir aber auch nicht sicher, ob inzwischen die Weiterentwicklung der Portierung von Linux auf die VAX-Architektur wieder bereits eingestellt wurde.

In der stabilen SIMH-Version 3.x wurde die von Digital Equipment Corporation als ersten Computer der VAX-Reihe auf dem Markt eingeführte VAX 11/780 aus dem Jahr 1977 und das im Jahr 1989 wesentlich kleinere Model, die MicroVAX 3900 implementiert. Da die VAX 11/780 das erste Modell der VAX-Familie war, hat Digitial im Laufe der Jahre einen eigenen Benchmark für die hinzugekommenen Modell (-Reihen) geschaffen.: den VUP. VUP steht für VAX Unit of Performance, bei dem das Urmodel als Referenz definiert ist. Der bei den nachfolgenden Modellen angegebenen VUP gibt also den Faktor der Leistung zum Urmodell an. So hat die bereits erwähnte MicroVAX 3900 einen VUP von 3,8 oder die im Jahr 1991 eingeführte VAXStation 4000 M60 einen VUP von 12.

Im vorherigen Beitrag habe ich bereits dargestellt, dass die aktuelle Beta-Version von SIMH gegenüber den stabilen, prekompilierten Versionen in den Linux- sowie BSD-Distributionen für mich die bessere Wahl ist. Ein wesentlicher Punkt von der Beta-Version ist, dass neben den bereits in der stabilen SIMH-Version 3.x verfügbaren VAX 11/780 und der MicroVAX 3900 weitere Computer der VAX-Reihe emuliert werden können. In einer Tabelle in meinem Wiki habe ich mal die neu hinzugekommenen Modelle tabellarisch aufgeführt, die einen sichtlichen Leistungszuwachs gegenüber die MicroVAX 3900 vorweisen können – sofern der Host-Computer für die Verarbeitungsgeschwindigkeit entsprechend leistungsfähig ist. So hatte ich zum Beispiel mal den Versuch unternommen gehabt, auf einem Raspberry Pi Model 1 B mit einem mit 700 MHz getakteten 1-Kern ARM11-Prozessor und NetBSD 7 als Host-Betriebssystem, die MicroVAX 3900 zu emulieren. Als Betriebssystem kam die VAX-Portierung von NetBSD 7 wieder zum Einsatz. Die Verarbeitungsgeschwindigkeit des Raspberry Pi war dabei so langsam, dass auf dem emulierten System der Login-Prozess während diesem bereits wieder Timeouts geworfen hatte. Aber ohne Login ist natürlich auch nur im Ansatz kein Arbeiten mit dem System möglich. Andere User hatten zu dem Zeitpunkt sich mit dem Raspberry Pi der ersten Generation bereits erfolgreich OpenVMS-Cluster gebaut gehabt.

Bei meinen Experimenten, eine der hinzugefügten VAX-Modelle in der Beta-Version zu emulieren, bin ich auf zahlreiche Fehler gestoßen und ich konnte bisher nicht die passenden Geräte-Komponenten (Harddisk-Controller, Festplatten- und CD-ROM Modell) für einen Betrieb zusammenstellen. Andere User haben beim Emulationsversuch – beispielsweise einer VAXStation – nicht die Netzwerkschnittstelle aktivieren können. Es kann natürlich auch sein, dass im Code für die in der aktuellen Beta-4 neu hinzugekommen VAX-Modelle noch Fehler sind. Deswegen beschränke ich mich momentan auf die bereits in stabilen Version vorhandene MicroVAX 3900.

Quelle: The NetBSD Foundation, VAX Hardware Reference (www.netbsd.org)

Noch ein paar Fakten und Informationen zu der Hardware der MicroVAX 3900 selber.:

Der Computer wurde durch DEC mit dem Codenamen Mayfair III im April 1989 im Markt eingeführt. Sie war High-End-Modell der MicroVAX-Familie, welche die MicroVAX 3600 ersetzte, und sollte mit der AS/400-Serie von IBM konkurrieren. Bei der Einführung betrug der Startpreis der MicroVAX 3900 120.000,- US-Dollar. Dieses System verwendete das KA655-CPU-Modul, das einen CVAX-Chipsatz mit 16,67 MHz (60 ns Zykluszeit) enthielt.

RangeServer
IntroducedApril 1989
CPUKA655, CVAX+ Chip
Taktfrequenz16,67 MHz
FPUCFPA
Cycle in ns60
Level 1 Cache1 KiB
Level 2 Cache64 KiB mit von 120 ns Cycle
Arbeitsspeicher16 – 64 MiB ECC
BUS Storage1 x QBUS und 1 x DSSI
Bandbreite3,3 MB/s
HDD Kapazitätmax. 9,7 GB
GehäuseH9642 (19″ breit)
VUP3,8
Einführungspreis in $120.000,-
Supportet OSVMS, ULTRIX, VAXELN
FPU DatentypenF, D, G, H
Netzwerkmax. 2 Ethernet-Ports

Links:

Emulation einer VAX mit SIMH: Der SIMH-Simulator

SIMH (History Simulator) des Computer History Simulation Project ist eine Sammlung von Simulatoren für historisch bedeutende oder einfach nur interessante Computerhardware und -software aus der Vergangenheit. Ziel des Projekts ist es, hoch portable Systemsimulatoren zu erstellen und diese als Freeware im Internet mit frei verfügbaren Kopien bedeutender oder repräsentativer Software zu veröffentlichen.
Das Projekt soll zudem dazu dienen, älterer Software weiterhin eine Umgebung zu bieten, auch wenn die Original-Hardware nicht mehr zur Verfügung steht. Auch wird es verwendet, um Betriebssysteme wie OpenVMS, RSTS, RSX-11, RT-11, TOPS-10 oder TOPS-20 auf PCs laufen zu lassen.

Unter der Liste der emulierten Hardware sind folgende Computer vertreten:

  • einige der PDP-und VAX-Reihe von Digital Equipment Corporation
  • Nova und Eclipse von Data General
  • Großrechner von IBM der 700er-/7000er-Serie
  • Minicomputer von Hewlett-Packard und Honeywell
  • die CDC 1700 von Control Data Corporation
  • den Microcomputer Altair 8800 von MITS (wahlweise mit Zilog Z80 oder Intel 8080 Prozessor)
  • und viele andere

Die aktuelle, stabile Version vom SIMH ist die 3.x. Diese ist auch in allen aktuellen und namenhaften Linux-Distributionen, sowie BSD-Systemen als vorkompiliertes Paket in den Repositories enthalten. Ich aber hingegen bevorzuge lieber den aktuellen Beta-Zweig v4.0 – 19-01 Current von der GitHub Projektseite. Dies hat auch mehrere Gründe.:

  • In der aktuellen Beta 4 ist bereits USE_NETWORK als Teil der Kompilierungsbefehlszeile definiert, damit die PDP-11- und VAX-Simulatoren die Ethernet-Emulation unterstützen.
  • Neben der Emulation von DECs VAX11/780 und MicroVAX3900 aus dem SIMH-Zweig 3.x, wurden in dem Beta-Zweig 4.x Current weitere VAX-Modelle implementiert. – Allerdings muss ich dazu sagen, dass bei meinen Internetrecherchen ich festgestellt habe, dass andere User von fehlerhafter Netzwerkunterstützung berichteten. Ich selber habe bei einigen neu hinzugefügten VAX-Modellen das Problem gehabt, die Datenträger korrekt zu definieren und der Emulator konnte die virtuellen Geräte nicht ansprechen.
  • Von allen (neuen) VAX-Modellen sind die Boot-ROMs mit den eventuellen Patch-Dateien enthalten. Gerade bei Linux-Distributionen wie Debian-Linux, welche den Fokus haben, im Wesentlichen ein System aus freier Software zu bestehen, fehlen die Boot-ROM-Dateien, da sie proprietären Bytecode enthalten.

Um den aktuellen Beta-Release des SIMH-Emulators nun auf dem Computer installieren zu können, ist es wichtig folgende Pakete vorher zu installieren, sofern noch nicht geschehen. (als Benutzer root unter Debian-Linux):

apt-get update && apt-get install git build-essential

Quellcode des aktuellen Beta-Releases laden und den Emulator – zum Beispiel einer MicroVAX3900 von DEC – kompilieren.

$make {simulator-name (i.e. vax)}

git clone https://github.com/simh/simh.git
cd simh
make vax

Die so erstellte Binärdatei wird im SIMH-Verzeichnis in dem Unterverzeichnis BIN/vax gespeichert.

Damit das emulierte System auch Teil des heimischen IPv4 Netzwerkes ist, habe ich bereits in meinem Blog-Artikel „Netzwerk-Bridge unter Linux mit TUN/TAP“ beschrieben, wie unter einem Debian-basierten Linux eben diese einzurichten ist.

Start-Konsole
Start-Konsole mit Hilfe Übersicht

Um die Simulation der MicroVAX3900 nun starten zu können, muss lediglich die erstellte Binärdatei noch ausgeführt werden. SIMH startet dann immer erst in den Kommandomodus. Diese Konsole ist sehr mächtig und beinhaltet eine sehr umfangreiches Hilfesystem in dem alle Parameter zur Ausführung der Simulation, sowie die unterstützten Hardwarekomponenten des emulierten Computersystems aufgeführt werden. Ferner kann über die Konsole auch ein Log über die Simulation erstellt werden.

SIMH-Hilfe show-Befehl
SIMH-Hilfe show-Befehl
Zusätzliche Informationen der Hilfe
Zusätzliche Informationen der Hilfe
Informationen der Specifikationen
Informationen der Specifikationen

Mit der Konsole können auch dann direkt die Maschinen-spezifischen Parameter gesetzt werden und zur Ausführung für ein Betriebssystem der Hardware die Emulation gestartet werden.

Parameter und Boot
Parameter setzen und Boot

Es sei nochmal darauf hingewiesen, dass SIMH neben der VAX-Reihe von DEC auch andere Computerarchitekturen (anderer Hersteller) simuliert. Daher ist die Konsole von SIMH auch bei den anderen Simulatoren ähnlich umfangreich. – Zum Beispiel habe ich die Altair-Emulation mit dem Zilog Z80 Prozessor mal kurz ausprobiert gehabt.

Links: