Retro: Sinclair ZX Spectrum – ZXC3 – Teil 3

ZXC3
ZXC3

Weiter gehts im nächsten Teil rund um das ZXC3 Modul für den Sinclair Spectrum.

Diese Mal dreht alles um die ZX81 und ZX80 Emulatoren. Am Besten funktionieren die Emulatoren auf einem Spectrum 128K. Sie würden auch auf dem 48K Spectrum funktionieren, allerdings ist hier zusätzliche Hardware nötig, auf die ich nicht direkt eingehen will. Wer das Experiment wagen will, kann sich auf der Seite zum ZXC3 die Unterlagen gerne besorgen. Das Cartridge enthält eine modifizierte Version des ZX81 ROM. Das bedeutet das der ZX Spectrum 128 wirklich als ZX81 läuft und ihn nicht nur emuliert. Es ist möglich Spiele direkt von Kassette zu laden und der Großteil der Titel sollte erfolgreich laufen (einschließlich vieler hochauflösender Spiele). Man kann zwischen verschiedenen ROM-Versionen wählen – mit Fehler (ZX81 E1)/ohne Fehler (ZX81 E2). In jedem Fall wird nach dem Start des Spectrum ein Menü im Stil des 128er angezeigt mit mehreren Auswahlmöglichkeiten:

ZX81 E1 - Menü
ZX81 E1 – Menü
ZX81 E2 - Menü
ZX81 E2 – Menü

Um den Emulator einfacher bedienen zu können wurde die Tastatur des ZX81 an die des 128er angepasst. Hier gibt es ein Diagramm dazu: Mapping der ZX81 Tasten Wenn die Befehle zum Laden/Speichern verwendet werden, erscheint ebenfalls ein Menü:

ZX81 RC Load Menu
ZX81 RC Lade Menü
ZX81 RC Save Menu
ZX81 RC Speichern Menü

Wie man hier sieht, kann man nicht nur auf Cassette speichern und laden, sondern auch via RS232 direkt am PC! Ein ähnliches Menü gibt es auch für den Drucker:

ZX81 RC Drucker Menü
ZX81 RC Drucker Menü

Speichern und Laden über die serielle Schnittstelle geschieht mit 9600 baud, 8 Data bits, keine Parität und 2 Stop bits. So kann ein 16K Programm in ca. 20 Sekunden übertragen werden. Paul Farrow hat ein Programm für Windows erstellt um damit ZX81 Programme über die serielle Schnittstelle zu laden und zu speichern (Download ZX File Transfer). Er kann auch die Druckerausgaben empfangen. Das Programm unterstützt die Dateiformate .P, .81 und .P81.

ZXTransfer
ZXTransfer

Das Programm dient als Server für das Empfangen und Senden von ZX81 Programmen und reagiert auf Anfragen der Cartridge. Der Program Details Bereich zeigt Informationen über das für Laden oder Speichern angeforderte Programm – den Dateinamen, den Dateipfad auf dem PC und die Dateigröße. Es zeigt ebenso die tatsächliche Länge des ZX81 Programms und den Adressbereich den es belegt. Der Program Info Bereich zeigt die Bytes des Programmnamens und die System Variablen. Der Reset Knopf erlaubt den Abbruch einer Übertragung. Über das View kann das Printer Output Fenster und die Datei-Optionen angezeigt werden.

ZX File Transfer - Drucker Ausgabe
ZX File Transfer – Drucker Ausgabe
ZX File Transfer - Dateiauswahl
ZX File Transfer – Dateiauswahl

Das Fenster mit den Daten der Drucker Ausgabe zeigt alle Daten, die von LPRINT, LLIST und COPY Befehlen empfangen werden. Der Feed Knopf erzeugt einen Zeilenvorschub einschließlich einer Reihe von Leerzeichen, der  Clear Knopf verwirft die Ausgabe und der Save Knopf speichert die gesamte Ausgabe als Bitmap in den angegebenen Ordner.

Das File Options Fenster erlaubt die Auswahl der Ordner auf dem PC von dem die ZX81 Programme geladen und gespeichert werden sollen und listet alle ZX81 Dateien auf die in dem ausgewählten Ordner gefunden werden. Die Format Drop Down Listen erlaubt die Auswahl der Default Datei-Formate. Das Programm unterstützt sowohl die ZX81 ROM Cartridge als auch die ZX80 ROM Cartridge. Wenn die Option PC File Path angehakt ist erlaubt das Programm dem ZX81 das Dateinamen einen Pfad enthalten. Beispiel: wenn am ZX81 angegeben wird das Programm „E:/ZX81/Programme/Mazogs.p“ zu laden, wird dadurch vom PC das Programm Mazogs.p von E:\ZX81\Programme geladen. Relative Dateinamen können auch angegeben werden. z.B. „../Mazogs.p“ würde vom Eltern Ordner laden.

Wenn ein Pfad ohne einen Dateinamen angegeben wird, erstellt das Programm eine Liste aller verfügbaren Programme im ausgewählten Ordner und erstellt daraus ein Programm aus dem die zu ladende Datei ausgewählt werden kann. Dies kann man mit den Cursortasten oder durch Drücken der Taste des ersten Buchstaben des Programms. z.b. werden durch Drücken von S alle Programme angezeigt, die mit S beginnen. Mit Enter kann das Programm dann geladen werden.

ZXTransfer Menu
ZXTransfer Menu

Um das Konvertieren von Programmen von Cassette zum PC und umgekehrt zu vereinfachen gibt es ein Menü mit dem das erledigt werden kann. Dieses Menü erreicht man indem man BREAK gedrückt hält während man den Spectrum 128 resettet oder indem man PRINT USR 8249 eingibt. Das Menü enthält folgende Optionen:

ZX81 RC Transfer Menü
ZX81 RC Transfer Menü

Paul Farrow stellt einige modifizierte ROMs zur Verfügung die für bestimmte Spiele benötigt werden:

QS Character Board: Die Firma Quicksilva hatte das QS Character Board für den ZX81 entworfen, welches es erlaubte den Zeichensatz mit einem der im RAM der Erweiterung gespeichert ist zu ersetzen. Die beiden Spiele QS Invaders und QS Scramble unterstützen dieses Board. Diese beiden laufen auf einem Standard ZX81 Emulator nicht sauber, daher hat Paul Farrow eine Version des Emulators produziert welcher das QS Character Board nachahmt und Unterstützung für die Quicksilva Spiele bietet. Damit diese Spiele einwandfrei funktionieren, ist es nötig, dass der Emulator sie identifiziert wenn sie geladen werden und modifiziert damit sie mit der Hardware des Spectrum 128 arbeiten.

ZX 81 Qicksilva ROM
ZX 81 Qicksilva ROM

dk’tronics: dk’tronics produzierte ein 4K Grafik ROM Kit für den ZX81 welches sieben alternative Zeichensätze zur Verfügung stellte. Dieses Kit wurde von den Spielen Asteroids, Centipede, Defender, Invaders und Meteor Storm unterstützt. Das Grafik ROM war zwischen den Adressen 2000h und 2FFFh angesiedelt und stellte Routinen zur Verfügung um die verschiedenen Zeichensätze auszuwählen. Diese Routinen änderten einfach den Wert im Register I so dass die Video Hardware des ZX81 einfach einen Zeichensatz im Grafik ROM anstelle eines Zeichensatz im Sinclair ROM benutzte. Paul Farrow hat einen Version des Emulators, basierend auf dem Edition 2 ROM entworfen, der das dk’tronics Grafik ROM unterstützt. Diese Version des Emulators verwendet die Paging Fähigkeiten des ZXC2 PCB und benötigt ein 32K EPROM.

ZX81 dk'tronics ROM Menü
ZX81 dk’tronics ROM Menü

Die Zeichensätze werden über USR 11904, USR 11909, USR 11914, USR 11919, USR 11924, USR 11929 und USR 11934 ausgewählt, womit das I Register auf 20h, 22h, 24h, 26h, 28h, 2Ah und 2Ch gesetzt wird. Der Sinclair Zeichensatz kann mit USR 11393 wieder ausgewählt werden, womit das I Register wieder auf 1Eh gesetzt wird.

Kayde produzierte eine Variane des dk’tronics 4K Grafik ROM Kit welches sich nur in einem Zeichensatz unterschied. Das Board wurde von ihren Spielen Peckmen, Centipede und Space Invaders untersützt. Paul Farrow hat einen Version des Emulators, basierend auf dem Edition 2 ROM entworfen, der das Kayde Grafik ROM unterstützt. Diese Version des Emulators verwendet die Paging Fähigkeiten des ZXC2 PCB und benötigt ein 32K EPROM.

ZX81 Kayde ROM Menü
ZX81 Kayde ROM Menü

Timex lizenzierte die Rechte am ZX81 um ihn in den USA unter dem Namen TS1000 zu verkaufen. Es folgte der TS1500, was eigentlich nur ein ZX81 in einer Art Spectrum-Gehäuse mit eingebauten 16K war. Auch wurden einige Änderungen am ROM durchgeführt. Die Initalisierungsroutine nahm nun an das 16K verbaut waren, anstelle die Größe zu prüfen, gefolgt von einem Test um zu prüfen ob im Bereich von 2000h bis 3FFFh ein zusätzliches ROM vorhanden war  – entsprechend einem TS1510 ROM Cartridge und dieses zu starten falls vorhanden. Die beiden Fehler im ZX81 ROM in den Divisions und LPRINT Routinen wurden ebenso behoben. Siehe Wilf Rigter’s Seite für Details zu den Unterschieden im ROM zwischen dem ZX81 und dem TS1500. Da das TV System in den USA Bildwiederholraten von 60Hz statt 50Hz in den USA hat, benötigt der TS1000/TS1500 mehr CPU Zeit um das TV Bild zu generieren als der ZX81. Als Ergebnis laufen die Programme langsamer. 🙂

TS1500 ROM Menü
TS1500 ROM Menü

ROM Cartridge Creator

Mit dem schon beschriebenen ROM Cartridge Creator kann man sich sehr einfach ein ROM mit ZX81 Spielen erstellen (von denen schon einige wegen Ihrer geringen Größe drauf passen), dem dann automatisch er passende Emulator hinzugefügt wird. Da das alles sehr umfangreich ist, kann ich schon verstehen das es nur auf einem 128K Spectrum sauber läuft. Sobald ein ZX81 Programm ausgewählt wird, wird automatisch auch ein Emulator Image mit auf das ROM gepackt. Im Hauptfenster kann man nun noch auswählen welche Emulator Version man verwenden will.

Eine wunderbare Möglichkeit „mal schnell“ einen ZX81 zu simulieren ohne ihn wirklich aufbauen zu müssen. Die Methoden die hier verwendet werden sind schon sehr ausgefeilt und bis ins Kleinste durchdacht!

Hier noch ein kurzes Video in dem man sieht wie ein ZX81-Spiel direkt von der Cartridge gestartet wird – wenn man die obigen Funktionen nutzen will, muss man sich auf das ZXC3 die gewünscht Cartridge laden: Spectrum 128 Downloads

ZXC3 – Teil 1: Allgemeines zum ZXC3
ZXC3 – Teil 2: Cartridge Programmer Utility/Flash Programmer
ZXC3 – Teil 3: ZX80/ZX81 Emulatoren
ZXC3 – Teil 4: Spectrum 128 Emulator
ZXC3 – Teil 5: Microdrive Emulator/Microdrive Kopierer
ZXC3 – Teil 6: Testprogramme