Retro: Sinclair ZX Spectrum – ZXC3 – Teil 5

ZXC3
ZXC3

Weiter geht es mit den Artikeln zum Multitalent ZXC3. Diese Mal dreht sich alles um die bekannten (und manchmal gehassten) Microdrives!

Von dem Microdrive Emulator gibt es zwei verschiedene Versionen. Einmal zur Verwendung mit dem ZX Interface 2 und einmal zur Verwendung mit dem Spectra Interface von Paul Farrow. Beide Versionen arbeiten mit angepassten Interface 1 ROM’s in denen die Routinen für LOAD, SAVE und ERASE angepasst wurden so dass die Befehle sowohl mit dem ROM als auch mit echten Microdrives funktionieren.
Bei der Version für das Interface 2 muss man auch noch das Modell beachten auf dem es verwendet wird – 48K, 128K oder spanischer 128K.
Die SPECTRA Version hat ein paar Vorteile:

  • höhere Kapazität der virtuellen Microdrives da keine modifizierte Version des Spectrum ROM’s benötigt wird (90K im Gegensatz zu 45K-75K)
  • höhere Kompatibilität mit Programmen da das Spectrum ROM nicht mit ZXC3 Mechanismen gepatched werden muss
  • da das echte Spectrum ROM verwendet wird, arbeitet der Emulator ordentlich mit anderen Spectrum Sprachversionen zusammen

Der Microdrive Emulator kann auch verwendet werden wenn kein Interface 1 vorhanden ist. Wenn ein Interface 1 vorhanden ist, kontrolliert der Microdrive Emulator trotzdem ordentlich die RS232 Schnittstelle, die Network Anschlüsse und die Microdrives (es sind „nur“ sieben verfügbar).

Die 128K des ZXC3 werden hier in 8 Bänke mit je 16KB aufgeteilt. Eine Bank enthält das gepatchte Interface 1 ROM. Eine andere wird als temporärer Buffer verwendet wenn auf das virtuelle Microdrive Daten geschrieben werden oder Daten gelöscht werden. Bei Verwendung des Interface 2 wird eine Bank benutzt wenn der 48K Spectrum verwendet wird und zwei Bänke bei einem 128K Spectrum, außerdem eine weitere Bank wenn das Currah uSource emuliert wird. Alle verbleibenden Bänke werden für das virtuelle Microdrive verwendet und in Sektoren formatiert wie bei einem richtigen Microdrive. Die SPECTRA Version stellt sechs Bänke zur Verfügung was 90K entspricht (das überschreitet die 85K die für ein echtes Microdrive angegeben werden). Bei der Interface 2 Version stehen auf einem 48K Spectrum fünf Bänke mit 65K und einem 128K Spectrum vier Bänke mit 60K zur Verfügung. Bei Emulation eines Currah uSource verringert sich das jeweils um 15K.

Man sollte sich nicht wundern wenn man die *.bin-Datei die man sich ausgesucht hat ohne das Programmer Utility auf das ZXC3 aufspielen muss. Das Utility ist in diesem Fall schon integriert (auf dem emulierten Microdrive-Laufwerk)

Die Patches bzgl. des ROMs des Interface 1 bedeuten das so ziemlich jede Software funktionieren sollte. Ausnahmen sind Programme die ihre eigenen LowLevel Routinen verwenden. Im Standard wird das emulierte Microdrive mit der Nummer 1 angesprochen das das das Laufwerk ist, das am meisten benutzt wird. Mit Befehlen für Microdrive 2 bis 8 kann man diese korrekt ansprechen wenn sie vorhanden sind und daher kann der Microdrive Emulator mit bis zu 7 Microdrives koexistieren. Um den Kampf um Laufwerk 1 zu lösen, ist es möglich die Laufwerksnummer auf die das emulierte Microdrive hört zu ändern. Es kann auf jede gültige Microdrive-Nummer zwischen 1 und 8geändert werden unabhängig davon wieviele tatsächlich angeschlossen sind. Um die Laufwerksnummer zu ändern auf die das emulierte Microdrive anspricht kann das Drive Set Utility verwendet werden.

Wie schon am Rande erwähnt ist die emulierte Microdrive Cartridge mit folgenden Utilitys vobereitet:

  • Drive Set Utility: damit kann man die dem emulierten Microdrive zugewiesene Laufwerksnummer anpassen
  • Copier Utility: damit kann man Dateien zwischen echten Microdrives, dem emulierten Microdrive und einer Cassette kopieren
  • Flash Programmer: dürfte schon bekannte sein

Ein einfaches Startmenü ist auch vorhanden und hat den Dateinamen „run“ und kann daher einfach durch eintippen von „RUN“ gestartet werden. Danach muss man nur noch die Nummer entsprechend dem Utility das man verwenden will eingeben.
Hinweis: Wenn man das Menü ein zweites Mal verwenden will, ohne das vorher der ZX Spectrum ausgeschaltet wurde, funktioniert das mit der einfachen Eingabe von „RUN“ nicht mehr. Nun muss die Datei „manuell“ geladen werden:
LOAD *“m“;3;“run“
Wobei hier „3“ die Laufwerksnummer des emulierten Microdrives ist.

Wenn das Drive Set Utiltiy gestartet wird, wird folgendes Menü angezeigt:

ME_DriveSet_Menu

Das Utility zeigt das die aktuell zugewiesene Laufwerksnummer des emulierten Microdrives an. Um die Laufwerksnummer zu ändern „Change Microdrive Numer“ aus dem Menü auswählen und die Laufwerksnummer angeben. Das Utility benötigt dann einige Sekunden um den Microdrive Emulator anzupassen.

Microdrive Kopierer
Diese 8K ROM Cartridge erlaubt das Kopieren von Daten zwischen

  • Microdrive und Microdrive
  • Microdrive und Kassette
  • Kassette und Microdrive
  • Kassette und Kassette

Das Programm soll hauptsächlich zur Archivierung von Microdrive auf Kassette dienen, um die Daten dann von der Kassette wieder auf eine neue MD Cartridge zu sichern. Die Daten werden beim Kopierprozess nicht modifiziert, daher ist es unwahrscheinlich das Programme die in mehreren Teilen vorliegen direkt von Kassette in den Spectrum geladen werden können.

Copier_Menu

Das Programm benutzt die unteren beiden Drittel der Display-Datei um Programm Routinen zu speichern. Daher ist es das Benutzer Interface auf das obere Drittel beschränkt. Mit den Cursor-Tasten wird durch die Programmpunkte gescrollt und mit ENTER ausgewählt.

Die „Microdrive to Microdrive“ Option erlaubt das Transferieren von Dateien zwischen jedem der acht möglichen Microdrives. Als erstes frägt es nach dem Namen der Datei die zu laden ist. Ein Dateiname (Groß-/Kleinschreibung) mit bis zu 10 Zeichen kann eingegeben werden oder es können alle Dateien auf dem Laufwerk ausgewählt werden indem man einfach ENTER drückt. Das Quell- und das Ziellaufwerk werden dann abgefragt wobei auch das gleiche Laufwerk angegeben werden kann wenn nur ein einzelnes Microdrive verfügbar ist.

Die angeforderten Dateien werden dann vom Quell-Microdrive eingelesen und automatisch auf der Ziel-Microdrive geschrieben. Wenn ein einzelnes Laufwerk für die Quelle und das Ziel benutzt wird werden Aufforderungen angezeigt um die Cartridges zu wechseln. Wenn eine Datei zu groß ist um in den Speicher geladen zu werden, dann wird sie in Teilen übertragen. Die Anzeige zählt die Teile wenn sie übertragen werden.

Zu jedem Zeitpunkt des Transfers kann mit der BREAK Taste der Vorgang abgebrochen werden. Sollt eine Datei nicht gefunden werden oder die Ziel-Cartridge voll werden, wird eine Fehlermeldung angezeigt und der Transfervorgang wird abgebrochen. Wenn die Zeildatei schon mit gleichem Namen existiert, wird eine Aufforderung angezeigt ob die Datei überschrieben werden soll. Drücken der Taste Y überschreibt die Datei und Drücken der Taste N ignoriert den Transfer. Wenn mehrere Dateien kopiert werden, wird durch Drücken von N zur nächsten Datei gesprungen. Eine dritte Option wird auch noch ermöglicht – durch Drücken der Taste A werden alle weiteren Dateien automatisch überschrieben.

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