Software

Auf dieser Seite steht verschiedene Software zum Download zur Verfügung. Die PC-Software +divide Manager und der Simple MIDI Monitor für den ZX Spectrum Next wurden von mir erstellt. Weitere Software-Pakete wurden von mir zusammengestellt, stammen aber von anderen Entwicklern.

SymbolInhaltsverzeichnis
+divide ManagerPC-Software zur Verwaltung von virtuellen Plus-D-Images
DivIDE Plus ManualHandbuch für das DivIDE Plus Interface als PDF-Datei (englisch)
ResiDOS v2.30ResiDOS v2.30 - Installationspaket für DivIDE Plus und kurze Beschreibung der Installation
ESXDOS 0.8.9ESXDOS 0.8.9 - Installationspaket für DivIDE Plus und ausführliche Beschreibung der Installation
Simple MIDI MonitorEinfacher MIDI Monitor für den ZX Spectrum Next und die Next MIDI Box
ZX MIDI PlayerPlayer für Standard-MIDI-Files für den ZX Spectrum 128 und ZX Spectrum Next

Symbol+divide Manager
+divide Manager v1.00dAktuelle deutsche Version v1.00 des +divide Managers vom 08.12.2009
+divide Manager v1.00eCurrent English version v1.00 of the +divide Manager from 08/12/2009

Dieses Programm ermöglicht den komfortablen Datenaustausch zwischen einem ZX Spectrum, welcher mit DivIDE Interface und +divide Betriebssystem ausgestattet ist, und einem PC. Als Datenträger kann hier eine CompactFlash-Karte oder eine Festplatte verwendet werden, wobei sich in der Praxis CF-Karten bewährt haben.

Divide Manager Bild

SymbolAllgemeine Informationen

Das +divide Betriebssystem arbeitet wie das Plus-D Interface mit Disketten, allerdings sind diese hier virtuell auf einem IDE-Datenträger abgelegt. Um einen möglichst einfachen Zugriff auf diese virtuellen Disketten zu ermöglichen, sind diese von Sektor 0 beginnend nacheinander auf dem Datenträger angeordnet.

Das ist allerdings ein großes Problem, wenn man mit einem PC auf diesen Datenträger zugreifen will: Da es kein Dateisystem gibt, lässt sich der Inhalt nicht so einfach lesen. Zwar wäre es mit „Hacker-Tools“ möglich, die Daten Sektor für Sektor auf dem PC auszulesen, aber das Handling ist sehr umständlich. Außerdem ist ein direkter Zugriff nicht ungefährlich, wenn man versehentlich einen falschen Datenträger im Laufwerk hat. Also was tun?

Ich habe mir einige Gedanken gemacht und eine praktikable Lösung gefunden, wie man sowohl mit dem Spectrum, als auch mit dem PC auf die gespeicherten Daten zugreifen kann - sofern man einige Randbedingungen beachtet. Und das funktioniert folgendermaßen:

  1. Auf den Datenträger wird eine große Datei (im Folgenden Medium genannt) geschrieben, die den gesamten von +divide genutzten Speicherplatz ausfüllt. So ist zum einen gewährleistet, dass man mit dem +divide Manager auf den gesamten Bereich zugreifen kann und zum anderen verhindert die große Datei, dass andere PC-Programme in diesen Bereich schreiben und dabei den Inhalt zerstören können.
  2. Auf dem Spectrum darf NIEMALS das erste Image (GO TO *1,0,0) verwendet werden. In diesem Bereich liegt die FAT-Struktur des Datenträgers, welche unbedingt bewahrt werden muss.
  3. Wegen der eben erwähnten FAT-Struktur beginnt die Image-Datei nicht beim Sektor 0, sondern erst hinter dem FAT-Bereich, wobei diese Stelle je nach verwendetem Datenträger unterschiedlich ist. Um die genaue Position der ersten nutzbaren virtuellen Diskette (Image 1) genau zu ermitteln, ist eine Prozedur erforderlich, die aber nur einmal durchgeführt werden muss.
  4. Zukünftig sollte die Image-Datei auf dem Datenträger nur noch mit dem +divide Manager am PC bearbeitet werden. Es ist wichtig, dass die Cluster der Image-Datei der Reihe nach angeordnet sind, weil anderenfalls die Daten nicht an der erwarteten Position stehen. Bei der Bearbeitung mit anderen Programmen kann es passieren, dass die Datei fragmentiert wird und dann stimmen die Image-Positionen nicht mehr.

Einen Nachteil möchte ich nicht verschweigen: Beim Einrichten eines Datenträgers gehen alle Daten verloren. Man muss also den Datenträger vor der ersten Verwendung im Spectrum einrichten. Mir ist jedenfalls keine Möglichkeit bekannt, nachträglich ohne Datenverlust eine FAT-Struktur und eine Medium-Datei anzulegen.

SymbolInstallation der Software

Die Installation beschränkt sich hier auf das Anlegen eines Verzeichnisses. Hier wird einfach die Datei dmanager.exe hinein kopiert. Danach kann sie direkt gestartet werden. Nach dem ersten Start legt der +divide Manager im gleichen Verzeichnis noch eine Datei dmanager.ini an, hier wird der Laufwerks-Buchstabe des zuletzt verwendeten Datenträgers gespeichert. Weitere Dateien werden vom +divide Manager ohne Benutzereingriff nicht angelegt, auch werden keine Einträge in die Registry geschrieben.

Auch der ZX Spectrum bzw. das DivIDE Interface muss durch Installation der +divide Firmware vorbereitet werden. Falls anstatt der +divide Firmware die weit verbreitete FATware oder ESXDOS installiert ist, dann wird die Installation besonders einfach: die Datei divide-firmware.zip entpacken und die enthaltene Datei +divide.tap auf einen normalen Datenträger (am besten auf eine CF-Karte) kopieren. Auf dem Spectrum wird dann über den Disk Browser diese Datei ausgewählt und mit LOAD "" gestartet (Jumper nicht vergessen). Benutzer eines DivIDE Plus haben es etwas einfacher. Hier ist die +divide Firmware bereits installiert und muss nach dem Start oder einem Reset mit OUT 23,4 nur aktiviert werden.

SymbolFür Eilige: Kurzanleitung zum Einrichten eines Mediums

Die folgende Prozedur beschreibt die Einrichtung eines Datenträgers für die Verwendung mit +divide in Kurzform. Ich empfehle aber trotzdem, die komplette Beschreibung zu lesen.

  1. Den Datenträger (CF-Karte oder Festplatte) mit dem Dateisystem FAT (nicht FAT32) formatieren.
  2. Den +divide Manager starten und rechts oben den Laufwerks-Buchstaben des Datenträgers auswählen.
  3. Medium erstellen anklicken, Sicherheitsabfrage bestätigen, Anzahl der gewünschten Disk-Images eingeben (oder Vorgabe bestätigen) und zurücklehnen - je nach Größe des Datenträgers und der Anzahl der Disk-Images kann der Vorgang einige Minuten dauern. Ein Statusfenster oben rechts informiert über den Fortschritt. Wenn der Vorgang beendet ist, erscheint ein Info-Fenster, welches die nächsten Schritte auf dem Spectrum anzeigt.
  4. Jetzt den Datenträger an das DivIDE anstecken und den Spectrum einschalten.
  5. Auf dem Spectrum GO TO *1,0,1 und danach CAT 1 eingeben. Es sollte eine leere Diskette angezeigt werden. Jetzt SAVE d1"test" eingeben.
  6. Spectrum ausschalten und den Datenträger wieder an oder in den PC stecken.
  7. Medium positionieren anklicken und im linken Fenster erscheint eine Liste, wobei im 1. Image der Name "test" erscheint - fertig.
SymbolAusführliche Beschreibung aller Funktionen

Linkes Anzeigefenster

Hier wird eine Übersicht über alle Disk-Images angezeigt. Jeder Eintrag besteht aus der Image-Nummer und dem ersten Dateinamen, der gefunden wird. Falls das Diskimage von einem SAM Coupé stammt, dann wird der Diskname anstelle des ersten Dateinamens angezeigt. Ist der Katalog eines Disk-Images leer, dann wird <leer> angezeigt. Mit der Maus kann man ein Disk-Image auswählen und dann erscheint dessen gesamter Inhalt im mittleren Anzeigefenster.

Mittleres Anzeigefenster

Hier wird nach Auswahl eines Disk-Images der komplette Inhalt dieses Images aufgelistet. Folgende Daten werden angezeigt:

Dateien vom SAM Coupé werden angezeigt, allerdings fehlen hier die Dateidaten. Dieses Fenster dient nur zur Information. Zwar lassen sich einzelne Einträge auswählen, es ist aber keine weitere Funktion damit verknüpft.

Medium öffnen

Mit dieser Funktion wird ein Medium geöffnet und dessen Inhalt angezeigt. Vorher muss in der Auswahlbox rechts das Laufwerk ausgewählt werden, wo sich der Datenträger befindet. Ein Medium lässt sich nur dann öffnen, wenn es fertig eingerichtet, also erstellt und positioniert ist. Dies erkennt der +divide Manager am Namen der Medium-Datei, welcher folgende Struktur hat: x-y.img

 x Dies ist der so genannte Offset-Wert. Ist dieser Wert 0, so wurde die Positionierung noch nicht durchgeführt. Nach der Positionierung steht hier eine 3- oder 4-stellige Zahl und diese zeigt an, wo in der Medium-Datei das erste Disk-Image beginnt (Anzahl der Sektoren vom Dateianfang bis zum ersten Disk-Image).
 y Dieser Wert enthält die Anzahl der Disk-Images.

Bei Datenträgern, die mit einer älteren Version des +divide Managers (< v0.50) eingerichtet worden sind, hat der Dateiname die Struktur x.img. Hier fehlt die Anzahl der Disk-Images und es wird immer davon ausgegangen, dass der gesamte Datenträger für +divide verwendet wird. Die Anzahl der Images wird dann aus der Größe des Datenträgers ermittelt.

Medium erstellen

Diese Funktion wird benötigt, um ein neues Medium für den gemeinsamen Zugriff von PC und Spectrum einzurichten. Damit diese Funktion ausgeführt werden kann, muss der Datenträger leer sein. Es wird empfohlen, den Datenträger vorher zu formatieren. Dabei muss zwingend das Dateisystem FAT verwendet werden, denn nur so ist gewährleistet, dass die Cluster in der richtigen Reihenfolge geschrieben werden.

Zunächst muss in der rechten Auswahlbox das Laufwerk ausgewählt werden, in dem sich der neue Datenträger befindet. Danach kann die Funktion Medium erstellen gestartet werden. Nach Bestätigung einer Sicherheitsabfrage erscheint eine weitere Abfrage, wo man die Anzahl der gewünschten Disk-Images eingeben kann. Der +divide Manager schlägt hier die maximal mögliche Anzahl vor und wenn man diese bestätigt, wird der gesamte Datenträger für +divide verwendet. Wählt man eine kleinere Anzahl, dann verbleibt freier Speicherplatz auf dem Datenträger, der mit anderen Spectrum-Dateien gefüllt und z.B. mit FATware oder ESXDOS verwendet werden kann. Somit lässt sich ein einzelner Datenträger für mehrere Firmwares verwenden. Nach Eingabe der Anzahl wird eine Datei mit dem Namen 0-y.img auf den Datenträger geschrieben, wobei y der soeben eingegebenen Anzahl von Disk-Images entspricht. An Hand dieser Zahl kann der +divide Manager später beim Öffnen des Mediums den für +divide genutzten Bereich erkennen. Der Schreibvorgang dauert einige Minuten und während dieser Zeit erscheint im Statusfeld oben rechts eine Fortschrittsanzeige.

Wichtig: Das Medium ist nach diesem Arbeitsgang noch nicht verwendbar, es muss noch positioniert werden. Aus diesem Grund erscheint jetzt ein Info-Fenster mit den nächsten Schritten, die auf dem Spectrum durchgeführt werden müssen.

Medium positionieren

Mit dieser Funktion wird die genaue Position des ersten Disk-Images ermittelt und somit die Prozedur zum Erstellen eines Mediums abgeschlossen. Vorher ist allerdings noch ein kleiner Zwischenschritt nötig: Damit das Programm die richtige Position finden kann, muss mindestens ein CAT-Eintrag im ersten Disk-Image auf dem Medium vorhanden sein. Dazu muss der Datenträger entfernt und an den Spectrum angeschlossen werden. Hier sind dann folgende Befehle auszuführen:

GO TO *1,0,1Das erste Disk-Image auswählen
CAT 1Katalog listen (eine leere Diskette sollte angezeigt werden)
SAVE d1"test"Speichert ein Programm unter dem Namen "test" in Disk-Image 1; der Dateiname und der Dateityp ist nicht von Bedeutung; wichtig ist nur, dass mindestens ein Eintrag im Katalog steht

Jetzt kommt der Datenträger wieder in den PC, in der rechten Auswahlbox wird das entsprechende Laufwerk ausgewählt und die Funktion Medium positionieren angeklickt. Wenn alles geklappt hat, dann erscheint jetzt im linken Fenster eine Liste mit Disk-Images, wobei das erste den Namen anzeigt, der zuvor auf dem Spectrum eingegeben wurde. Damit ist das Medium fertig eingerichtet.

Medium sichern

Über diese Funktion kann mit einem Mausklick der gesamte Inhalt des Mediums auf dem PC gesichert werden (Backup-Funktion). Um Zeit und Platz zu sparen, werden nur die Disk-Images gesichert, die Daten enthalten - also mindestens einen Eintrag im Katalog haben.

Nach dem Klick auf Medium sichern öffnet sich ein Dialog, wo man das Verzeichnis und einen Dateinamen für die Sicherung auswählen bzw. eingeben kann. Beim nachfolgenden Klick auf Speichern wird der Sicherungsvorgang gestartet, wobei der eingegebene Name durch das Programm noch erweitert wird. Ein Beispiel:

Eingegebener Name:Backup
Ausgegebene Dateien:Backup-0001.dsk
Backup-0003.dsk
Backup-0004.dsk

Jede Datei enthält ein Disk-Image, wobei die angehängte Zahl der Nummer des Images entspricht. Alle Images werden im dsk-Format gespeichert, der Aufbau einer solchen Datei ist weiter unten beschrieben. Wenn viele Daten zu sichern sind, kann dieser Vorgang einige Zeit in Anspruch nehmen. Über den Fortschritt informiert die Statuszeile rechts oben.

Medium wiederherstellen

Hiermit kann eine im vorherigen Abschnitt beschriebene Datensicherung wieder auf das Medium zurück geschrieben werden. Dabei werden alle Disk-Images, die als Sicherung vorliegen, wieder auf das Medium an die originale Position geschrieben. Alle anderen Images bleiben unverändert.

Nach dem Klick auf Medium wiederherstellen erscheint zunächst ein Dialog. Hier braucht man nur eine Datei aus der Backup-Reihe zu markieren (egal welche), auf Öffnen zu klicken und die Wiederherstellung wird gestartet. Auch hier informiert eine Anzeige in der Statuszeile über den Fortschritt der Aktion.

Hinweis: Die Wiederherstellung funktioniert nur, wenn der Datenträger bereits ein Medium enthält und dieses auch richtig positioniert ist. Falls dies nicht der Fall ist, so muss vorher die Einrichtungsprozedur durchgeführt werden.

Man kann diese Funktion zum Kopieren eines Mediums benutzen, wobei das Zielmedium auch kleiner oder größer als das Original sein kann. Bei einem kleineren Medium kann es allerdings passieren, dass nicht alle Images wiederhergestellt werden (Nummern größer als maximale Image-Anzahl). Diese Images können aber mit der Funktion Disk-Image einfügen manuell ergänzt werden, sofern noch freie Plätze vorhanden sind.

Medium schließen

Diese Funktion erklärt sich von selbst. Wenn man mit der Bearbeitung des Mediums fertig ist und den Datenträger entnehmen möchte, dann sollte auf Medium schließen geklickt werden.

Disk-Image extrahieren

Mit dieser Funktion lässt sich ein einzelnes Disk-Image als Datei speichern. Diese Datei kann dann z.B. per Mail verschickt oder als Web-Download zur Verfügung gestellt werden.

Zunächst wählt man im linken Fenster das Disk-Image aus, welches man extrahieren möchte, wobei dessen Inhalt im mittleren Fenster angezeigt wird. Als nächstes legt man in der Auswahlbox neben dem Button das gewünschte Dateiformat fest. Zur Auswahl stehen hier dsk, mgt und img. Eine Beschreibung der Image-Formate erfolgt weiter unten. Nach dem Klick auf Disk-Image extrahieren öffnet sich ein Dialog, in dem man einen Dateinamen eingeben oder auswählen kann. Die Dateierweiterung kann weggelassen werden - diese wird entsprechend des gewählten Formates vom Programm ergänzt.

Disk-Image einfügen

Hiermit ist es möglich, eine Image-Datei in das Medium einzufügen. Vorher muss im linken Fenster die Position angeklickt werden, an welcher das Image eingefügt werden soll. Nach dem Klick auf Disk-Image einfügen erscheint ein Dialog, wo die Image-Datei eingegeben oder ausgewählt werden kann. Anhand der Dateierweiterung (dsk, mgt oder img) wird das Format erkannt, entsprechend konvertiert und in das Medium eingefügt. Das Image, welches sich vorher an dieser Stelle befand, wird dabei komplett überschrieben.

Disk-Image löschen

Diese Funktion ermöglicht das Löschen eines nicht mehr benötigten Disk-Images auf dem Medium. Auch hier muss zunächst im linken Fenster das entsprechende Disk-Image ausgewählt werden. Nach dem Klick auf Disk-Image löschen erscheint eine Sicherheitsabfrage und nach deren Bestätigung wird gelöscht. Dabei werden alle Sektoren des Images mit Nullbytes überschrieben. Dies entspricht dem Befehl FORMAT d1 auf dem Spectrum.

Plus-D Disk schreiben

Hinweis: Diese Funktion ist nur dann verfügbar, wenn das Programm SamDisk installiert ist (weitere Hinweise folgen weiter unten).

Plus-D Disk schreiben entspricht weitgehend der Funktion Disk-Image extrahieren, hier wird jedoch keine Datei erstellt, sondern das gewählte Image direkt auf eine Plus-D Diskette geschrieben, die sich im Laufwerk A: befinden muss. Nach der Bestätigung der Sicherheitsabfrage öffnet sich ein SamDisk-Fenster, in dem der Schreibvorgang beobachtet werden kann. Insgesamt dauert es etwas mehr als 2 Minuten, bis die Diskette fertig formatiert, geschrieben und verglichen ist. Danach schließt sich SamDisk wieder.

Plus-D Disk einlesen

Hinweis: Auch diese Funktion ist nur dann verfügbar, wenn das Programm SamDisk installiert ist (weitere Hinweise folgen weiter unten).

Diese Funktion gibt es ebenfalls schon in ähnlicher Form (Disk-Image einfügen), hier wird aber nicht von einer Image-Datei gelesen, sondern direkt von einer Plus-D Diskette im Laufwerk A:. Nach Bestätigung der Sicherheitsabfrage wird auch bei dieser Funktion SamDisk gestartet und nach Abschluss des Lesevorganges wieder geschlossen (dauert ungefähr 40 Sekunden).

Programm beenden

Damit wird das Programm beendet :-)

SymbolSamDisk installieren

Um die Funktionen Plus-D Disk schreiben und Plus-D Disk einlesen verwenden zu können, muss das Programm SamDisk installiert sein. Dieses Programm wurde zwar für SAM Coupé User geschrieben, kann aber wegen des identischen Diskformates auch für Plus-D verwendet werden. Es wurde von Simon Owen geschrieben und auf seiner Homepage steht es zum Download zur Verfügung. Aktuell war zum Zeitpunkt der Texterstellung (11.06.2007) die v2.0:

http://simonowen.com/sam/samdisk/

Dieses Programm arbeitet in der Kommandozeile und sollte in ein Verzeichnis des Suchpfades (PATH) kopiert werden. Wem das jetzt zu kompliziert erscheint, der kopiert es einfach ins Verzeichnis vom +divide Manager. Das ist schon alles. Der +divide Manager prüft beim Start, ob SamDisk installiert ist und gibt dann die beiden Plus-D Funktionen frei.

Übrigens, der +divide Manager verwendet folgende Funktionsaufrufe zum Schreiben und Lesen von Plus-D Disketten:

samdisk /f /v temp.dsk a:schreibt das Image temp.dsk auf Diskette
samdisk a: temp.dskliest das Image temp.dsk von Diskette

SymbolWeitere Informationen

Aufbau eines Datenträgers / Mediums

+--------------+--------------+--------------+--------------+~~+--------------+
| Disk-Image 0 | Disk-Image 1 | Disk-Image 2 | Disk-Image 3 |  | Disk-Image n |
|              |              |              |              |  |              |
| FAT | (frei) |              |              |              |  |              |
+-----+--------+--------------+--------------+--------------+~~+--------------+
^     ^        ^              ^
|     |        |              |
|     |        |              ‘--- Medium + Offset + 1600 Sektoren
|     |        ‘------------------ Medium + Offset (Offset steht im Dateinamen)
|     ‘--------------------------- Medium ab hier nutzbar
‘--------------------------------- Datenträger - Sektor 0

Image-Formate

Der +divide Manager unterstützt derzeit 3 Formate: dsk, mgt und img. Allen gemeinsam ist die Größe von 1600 Sektoren, was 819200 Bytes entspricht. Da es sich hier um virtuelle Disketten handelt, sind die Daten auch wie bei einer Diskette angeordnet: Es gibt 2x 80 Tracks (Spuren) mit jeweils 10 Sektoren. Die Tracks auf der unteren Diskseite haben die Nummern 0-79 und die Tracks auf der Oberseite die Nummern 128-207. Der Unterschied bei den Dateiformaten besteht in der Anordnung der Tracks:

dsk: 0, 128, 1, 129, 2, 130, 3, 131, 4, 132, …, 78, 206, 79, 207
mgt: 0, 128, 1, 129, 2, 130, 3, 131, 4, 132, …, 78, 206, 79, 207
img: 0, 1, 2, 3, 4, …, 77, 78, 79, 128, 129, 130, …, 205, 206, 207

Die Sektoren innerhalb eines Tracks sind bei allen Formaten gleichermaßen in der Folge 1-10 angeordnet. Wie man sieht, ist das dsk- und das mgt-Format identisch, allerdings scheint das mgt-Format noch mehr zu bieten (z.B. Multi-Images), leider fehlen mir weitere Informationen. Die meiste Verbreitung scheint das dsk-Format zu haben, deshalb habe ich es für die Sicherungsdaten verwendet (Medium sichern und Medium wiederherstellen).

Einige Tipps

Disk-Images auf dem Spectrum: Niemals das Disk-Image 0 verwenden! Ein Schreibzugriff würde die FAT-Struktur des Datenträgers zerstören und er ist dann im schlimmsten Fall nicht mehr auf dem PC lesbar. Auch sollten nur so viele Disk-Images verwendet werden, wie bei der Medium-Erstellung angegeben wurden. Werden Images über diesen Wert hinaus verwendet, dann können Schreibzugriffe die Daten beschädigen, die sich hinter der Medium-Datei befinden. Meine Empfehlung: Man sollte sich die Anzahl der Disk-Images notieren und am besten auf den Datenträger schreiben. Notfalls verrät der Dateiname die Anzahl: Die Zahl nach dem Minus-Zeichen gibt die Anzahl der Disk-Images an. Ein Beispiel: Bei folgendem Dateinamen 1015-250.img sind 250 Disk-Images nutzbar (1-250).

Schneller Wechsel auf FATware: Wenn die +divide Firmware aktiv ist und man möchte auf FATware wechseln, dann kann man die Datei fatware-012-image.zip laden und entpacken. Hier ist ein Disk-Image mit der FATware v0.12 enthalten. Einfach dieses Image mit der Option Disk-Image einfügen in das Medium aufnehmen und schon hat man eine schnelle Möglichkeit, von +divide auf FATware zu wechseln. Mit GO TO *1,0,x (x ist die Nummer des Disk-Images) und nachfolgendem RUN kann FATware v0.12 installiert werden.

Alternative Datensicherung: Eine Datensicherung ist auch möglich, indem man die Medium-Datei ganz normal kopiert. Ein Zurückschreiben ist aber nur auf den gleichen Datenträger möglich, wenn er vorher komplett gelöscht oder formatiert wurde.

Zum Schluss noch der obligatorische Hinweis: Ich kann nicht dafür garantieren, dass dieses Programm überall fehlerfrei läuft und das tut, was weiter oben beschrieben wird. Zwar habe ich alles ausgiebig getestet, trotzdem kann ich nicht ausschließen, dass Fehlfunktionen auftreten.

Das Programm ist Freeware und darf gern weitergegeben werden.


SymbolDivIDE Plus Manual
DivIDE-Plus-Manual.zipHandbuch für das DivIDE Plus als PDF-Datei (englisch)

Dieses Handbuch enthält eine komplette Beschreibung des DivIDE Plus Interface. Hier wird die Konfiguration der Hardware und der Anschluss von IDE-Geräten beschrieben. Außerdem werden alle vorinstallierten Firmwares vorgestellt und sehr ausführlich dokumentiert.


SymbolResiDOS v2.30
ResiDOS-230.zipResiDOS v2.30 - Installationspaket für DivIDE Plus

ResiDOS ist eine sehr komplexe Firmware für das DivIDE Plus und so nimmt allein die Beschreibung dieser Firmware gut die Hälfte des DivIDE Plus Manuals ein. Diese Firmware läuft als einzige vollständig im RAM und benutzt hierfür einen speziellen Modus des DivIDE Plus. Wenn das DivIDE Plus ausgeliefert wird, ist ResiDOS normalerweise vorinstalliert. Diese Version ist allerdings veraltet und sollte durch eine aktuelle Version ersetzt werden. Leider ist die ResiDOS-Seite bei World of Spectrum nicht mehr auffindbar und auch sonst scheinen alle Download-Möglichkeiten von ResiDOS verschwunden zu sein. Aus diesem Grund habe ich hier ein Paket mit der letzten Version v2.30 und einigen interessanten Packages (Erweiterungen) zusammengestellt.

Die Installation ist recht einfach: Nach dem Download wird das ZIP-Archiv entpackt und die Datei residos.tap in das Hauptverzeichnis einer CF-Karte im FAT-Format (muss nicht leer sein) kopiert. Die PKG-Dateien kommen ebenfalls auf die CF-Karte und können z.B. im Unterverzeichnis /system abgelegt werden. Für die Basis-Installation werden diese nicht benötigt. Mit dieser CF-Karte wird der Spectrum gestartet und dabei die Leertaste gedrückt. Beim Einschalten des DivIDE Plus wird FATware aktiv und durch die Leertaste wird eine neue Suche nach IDE-Geräten ausgelöst. Hier sollte unsere Speicherkarte angezeigt werden und ein beliebiger Tastendruck führt uns in den normalen Spectrum-Bildschirm. Jetzt wird der NMI-Taster gedrückt und im Disk Browser die Datei residos.tap ausgewählt. Dabei landet man wieder im Spectrum-BASIC und hier kann man mit LOAD "" den Installer starten. Eine Sicherheitsabfrage wird mit ENTER bestätigt und der Installer zeigt zunächst die erkannte RAM-Größe von 512kB an. Ein weiterer Druck auf ENTER startet schließlich die Installation. Diese dauert einige Sekunden, dann startet der Spectrum mit ResiDOS neu und zeigt einige Informationen über das System an.

Wenn ResiDOS einmal installiert ist, bleibt es natürlich durch die Batterie-Pufferung auch beim Ausschalten des Spectrum im Speicher und kann beim nächsten Systemstart mit OUT 23,72 bzw. OUT 23,104 wieder aktiviert werden. Dabei bleiben auch alle Einstellungen erhalten, wie z.B. die geladenen Module oder das zuletzt verwendete Verzeichnis auf der CF-Karte. Wünscht man eine Neuinitialisierung des Systems, dann kann man dies mit PRINT USR 0 auslösen.


SymbolESXDOS 0.8.9
esxdos089-fatware.zipESXDOS 0.8.9 und FATware - Installationspaket für DivIDE Plus

ESXDOS ist eine sehr umfangreiche Firmware, die nicht nur für DivIDE, sondern auch für DivMMC und MB03+ zur Verfügung steht. Das System kann mit Medien im Format FAT16 und FAT32 umgehen und das sowohl lesend als auch schreibend. Leider werden derzeit keine langen Dateinamen unterstützt, allerdings ist die Entwicklung noch lange nicht abgeschlossen. ESXDOS enthält eine Emulation für virtuelle Bänder (lesend und schreibend) und eine Emulation für Betadisk/TR-DOS. Eine Besonderheit von ESXDOS sind die so genannten Dot-Commands. Das sind zusätzliche Kommandos, die mit einem Punkt beginnen und relativ einfach zum System hinzugefügt werden können. Außerdem gibt es weitere Module wie z.B. einen stark erweiterten NMI-Navigator.

Die Installation von ESXDOS ist beim DivIDE Plus etwas komplizierter als beim einfachen DivIDE und das hat mehrere Gründe:

Eine Installation ist aber möglich und das liegt daran, dass die ROM-Datei vom einfachen DivIDE unverändert auch auf dem DivIDE Plus läuft. Außerdem existiert bereits ein Flash-Utility, welches mit einer früheren Version von ESXDOS als divide_plus_esx085_flasher.zip veröffentlicht wurde. Auf dieser Basis habe ich einen Installer für ESXDOS 0.8.9 gebaut, der auf dem DivIDE Plus verwendet werden kann: BASIC-Teil und Flash-Utility stammen aus dem eben genannten Paket und die ROM-Datei wurde dem aktuellen Installer für das einfache DivIDE entnommen. Außerdem wurde (so wie bei der früheren Installer-Version) zusätzlich die ROM-Datei von FATware integriert. Das Download-Paket esxdos089-fatware.zip enthält den konstruierten Installer in 2 Versionen: Einmal in der Kombination ESXDOS/FATware 0.12a (esx89f12.tap) und einmal in der Kombination ESXDOS/FATware 0.14 (esx89f14.tap). Außerdem findet man hier alle für ESXDOS 0.8.9 notwendigen Dateien von der ESXDOS-Homepage und eine weitere Datei, die für FATware 0.14 erforderlich ist.

Ich möchte nun beschreiben, wie man ESXDOS mit dem Installer dauerhaft auf dem DivIDE Plus installiert. Dabei soll folgendes Ziel erreicht werden: Die im Auslieferungszustand des DivIDE Plus beim Systemstart aktive (oder über OUT 23,0 auswählbare) FATware 0.12 soll durch ESXDOS 0.8.9 ersetzt werden. Dabei wird aufgrund der Speicherstruktur zwangsläufig auch die über OUT 23,2 auswählbare Firmware DEMFIR d0.7b gelöscht. Diese könnte man zwar wieder an der gleichen Stelle installieren, allerdings möchte ich diese jetzt durch FATware 0.12a ersetzen. Zur besseren Übersicht habe ich die Details noch einmal in einer Tabelle zusammengefasst:

OUT 23,0OUT 23,2
AuslieferungszustandFATware 0.12DEMFIR d0.7b
nach InstallationESXDOS 0.8.9FATware 0.12a

Die nachfolgende Beschreibung gilt übrigens nicht nur für eine Neuinstallation, auch ein Update einer Firmware kann auf diese Weise durchgeführt werden. Grundsätzlich sollte man sehr sorgfältig arbeiten, denn eine falsche Aktion kann dazu führen, dass das DivIDE Plus gar nicht mehr startet. In einem solchen Fall muss man das DivIDE durch Abziehen eines Jumpers auf der Rückseite deaktivieren, dann eine gute alte Kassette vorbereiten und damit das DivIDE sehr aufwändig wiederbeleben. Im normalen Installationsablauf muss übrigens kein Jumper am DivIDE Plus verändert werden.

Zuerst wird die Datei esx89f12.tap aus dem Download-Paket in das Hauptverzeichnis einer CF-Karte kopiert. Diese Karte sollte das Format FAT16 oder FAT32 haben und darf auch schon Dateien enthalten. Die Karte wird ordentlich vom PC entfernt und kommt nun in das DivIDE Plus. Der Spectrum wird anschließend mit gedrückter Leertaste eingeschaltet. Dabei führt die derzeit aktuelle Firmware auf der ersten Speicherbank eine Neuinitialisierung durch und erkennt die neue CF-Karte. Weiter geht es mit einem Druck auf den NMI-Taster des DivIDE Plus. Im NMI-Dateimenü wird die soeben kopierte Datei esx89f12.tap ausgewählt und gestartet. Danach ist folgendes unspektakuläres Bild zu sehen:

DivIDE Plus Bild 1 An dieser Stelle hat man 2 Möglichkeiten: Möchte man jetzt ESXDOS installieren, dann geht es mit ENTER weiter zum Flash-Utility. Alternativ wird mit N die nächste ROM-Datei geladen, die sich in der Datei esx89f12.tap befindet. In diesem Fall würde FATware12a als nächstes geladen und wiederum das gleiche Menü angeboten. Mehr ROM-Dateien sind nicht vorhanden und wenn man nochmals auf N drückt, wird die TAP-Datei virtuell zurückgespult und erneut ESXDOS.BIN geladen.

Hier soll jetzt ESXDOS installiert werden (wie im Bild zu sehen) und mit ENTER wird das Flash-Utility gestartet.

DivIDE Plus Bild 2 Bevor es zur Sache geht, erscheint noch eine kompakte Anleitung für die Installation der ersten Firmware (hier als main system bezeichnet). Genauso wird die Installation in den folgenden Schritten durchgeführt. Zusätzlich soll auch die nächste Bank mit einer weiteren Firmware programmiert werden.

Mit einer beliebigen Taste geht es weiter.

DivIDE Plus Bild 3 So zeigt sich das Flash-Utility nach dem Start. Damit eine neue Firmware installiert werden kann, muss zunächst ein Speichersektor gelöscht werden. Diese Funktion wird mit der Taste X (Erase) aufgerufen.

DivIDE Plus Bild 4 Dieses Bild zeigt das Erase-Menü. Über die Taste 0 wird nun der Sektor 0 ohne weitere Rückfrage gelöscht. Während dieses Vorgangs, der ungefähr eine Sekunde dauert, erscheint der Hinweis Erasing... und nach Abschluss Done! Der Sektor 0 enthält übrigens die Firmwares 0 und 2.

Wichtig: Das DivIDE Plus kann in diesem Zustand bei einem Reset nicht mehr booten. Also zügig weitermachen und mit ENTER (oder einer anderen Taste) wieder zurück ins Hauptmenü gehen. Hier wird nun über die Taste W das Program-Menü aufgerufen.

DivIDE Plus Bild 5 Auf diesem Bild ist das Program-Menü zu sehen. Hier muss jetzt über die Taste 1 die neue Firmware in Page 1 geschrieben werden. Auch dieser Vorgang startet ohne Rückfrage und wird durch den Hinweis Writing flash chip... bestätigt. Nach wenigen Sekunden sollte die Erfolgsmeldung Done! erscheinen. Mit ENTER (oder einer anderen Taste) kehrt man ins Hauptmenü zurück.

Damit ist ESXDOS als erste Firmware im Flash-Speicher installiert, allerdings wird es noch nicht funktionieren, da noch einige Komponenten auf der CF-Karte fehlen (oder im Fall eines Updates noch nicht auf dem aktuellen Stand sind). Aus diesem Grund ist es an dieser Stelle sinnvoll, den Spectrum auszuschalten und die CF-Karte an den PC anzuschließen. Hier müssen jetzt aus dem Downloadpaket die 4 Verzeichnisse BIN, DOCS, SYS und TMP komplett mit Inhalt ins Hauptverzeichnis der CF-Karte kopiert werden. Die so vorbereitete Karte kommt nun wieder in das DivIDE Plus und der Spectrum wird mit gedrückter Leertaste eingeschaltet. Jetzt sollte ESXDOS starten und dabei auch kurz die richtige Versionsnummer anzeigen.

Übrigens, die eben beschriebene Reihenfolge gilt auch bei einem Update von ESXDOS: Zuerst die ROM-Datei im Flash-Speicher erneuern und erst dann die Dateien in den Verzeichnissen BIN, DOCS, SYS und TMP auf der CF-Karte ersetzen.

Die Installationsprozedur ist damit noch nicht abgeschlossen, denn bei der Löschung des Speichersektors 0 wurde auch die Firmware auf den Pages 2 und 3 entfernt. Hier soll jetzt FATware installiert werden und dafür ist es nochmals erforderlich, die Datei esx89f12.tap zu starten. Dies kann mit dem soeben installierten ESXDOS und dessen NMI-Menü erledigt werden.

DivIDE Plus Bild 6 Hier wurde der Installer gestartet und mit N bereits die nächste ROM-Datei FATware12a geladen. Jetzt geht es mit ENTER weiter zur Seite mit der Kurzanleitung und mit nochmaligem ENTER zum Flash-Utility. Die Sektor-Löschung darf bei diesem Schritt nicht ausgeführt werden und es geht mit W direkt zum Program-Menü.

DivIDE Plus Bild 5 Dieses Bild zeigt nochmals das Program-Menü. Abweichend zur ersten Firmware muss jetzt über die Taste 3 die neue Firmware in Page 3 geschrieben werden. Dieser Vorgang startet wiederum ohne Rückfrage mit dem Hinweis Writing flash chip... und endet einige Sekunden später mit der Meldung Done!. Mit ENTER (oder einer anderen Taste) kehrt man ins Hauptmenü zurück und die Taste Z beendet das Flash-Utility.

Damit ist die komplette Installation abgeschlossen. Zum finalen Test von FATware stoppt man mit BREAK das BASIC-Programm, schaltet mit OUT 23,2 auf die soeben installierte FATware um und startet eine Initialisierung mit PRINT USR 0. Nach dem Druck auf ENTER zur Ausführung muss man schnell sein und sofort die Leertaste drücken, damit FATware die CF-Karte neu einlesen kann.

Das Installationspaket enthält übrigens noch den Installer esx89f14.tap. Hier ist neben ESXDOS 0.8.9 noch die relativ aktuelle FATware 0.14a3 enthalten. Allerdings haben FATware-Versionen ab 0.14 die Besonderheit, dass sie eine weitere Datei auf der CF-Karte benötigen. Diese wird bei der Initialisierung geladen und anschließend das DivIDE Plus in den MAPRAM-Modus umgeschaltet. Wurde FATware (wie oben beschrieben) als Firmware 2 installiert, dann läuft das solange gut, bis ein Spectrum-Reset erforderlich ist. Dabei schaltet das DivIDE Plus auf die Firmware 0 zurück (in diesem Fall ESXDOS), lässt aber den MAPRAM-Modus aktiv und das führt unweigerlich zum Crash, aus dem man nur durch kurzes Abschalten der Stromversorgung wieder herauskommt.

Möchte man trotzdem FATware 0.14a3 verwenden, dann empfehle ich die Installation (abweichend von der Anleitung oben) als erste Firmware. Hier ist es anschließend erforderlich, das Verzeichniss FATware aus dem Installationspaket mit Inhalt in das Hauptverzeichnis der CF-Karte zu kopieren. Anschließend wird FATware mit gedrückter Leertaste gestartet und nach erfolgreicher Initialisierung steht auch das NMI-Menü zur Verfügung, so dass weitere Firmwares installiert werden können.

Mit FATware als erste Firmware führt ein Reset mit aktivem MAPRAM-Modus immer zu FATware zurück und das System bleibt am Leben. Man muss allerdings beim Wechsel auf eine andere Firmware beachten, dass man zunächst mit OUT 23,192 den MAPRAM-Modus ausschaltet und erst dann die gewünschte Firmware mit dem entsprechenden OUT 23,x aufruft. Nach der Rückkehr zu FATware (entweder durch Reset oder mit OUT 23,0) ist allerdings wieder eine Initialisierung erforderlich.


SymbolSimple MIDI Monitor

Please click here for the English version.

midimon-v10.zipSimple MIDI Monitor - Einfacher MIDI Monitor für den ZX Spectrum Next und die Next MIDI Box

MIDI Monitor Bild 1 Dieses in NextBASIC geschriebene Programm demonstriert die MIDI-Fähigkeiten des ZX Spectrum Next mit angeschlossener Next MIDI Box. Es wertet über MIDI In empfangene Daten aus und zeigt diese übersichtlich in Form einer Liste an. Dazu wird zunächst die Next MIDI Box an den Anschluss JOY 2 des ZX Spectrum Next gesteckt. Anschließend stellt man eine Verbindung vom MIDI Out des MIDI-Instruments, dessen Daten ausgewertet werden sollen, zum MIDI In der Next MIDI Box her.

Wenn das Programm gestartet wird, beginnt es direkt mit der Arbeit. Eingehende MIDI-Nachrichten werden sofort ausgewertet und angezeigt. Es gibt allerdings wenige Ausnahmen, die nicht in der Ausgabe erscheinen. Diese sind weiter unten aufgelistet. Das Programm ist sehr einfach gehalten und es gibt nur eine Möglichkeit, in den Ablauf einzugreifen: Durch Drücken und Halten der Leertaste kann die Ausgabe angehalten werden, bis die Taste wieder losgelassen wird.

Das Programm arbeitet gut, sofern keine großen Datenmengen angeliefert werden. Man kann damit z.B. den Output eines Keyboards oder MIDI-Controllers analysieren, nicht jedoch die Daten, die ein MIDI-File-Player sendet. Hier kommen dann so viele Informationen, dass zum einen die Ausgabe nicht mehr sinnvoll gelesen werden kann und zum anderen vermutlich der Empfangspuffer überlaufen wird und Daten verloren gehen.

Dass dieses BASIC-Programm überhaupt MIDI-Daten in Echtzeit empfangen und auswerten kann, liegt an einer Funktionseinheit des ZX Spectrum Next, die unabhängig von der CPU serielle Daten senden und empfangen kann: dem UART (Universal Asynchronous Receiver Transmitter). Dieser ist außerdem mit einem 256 Byte großen Empfangspuffer ausgestattet, so dass auch bei kurzzeitiger starker Auslastung des Programms im Hintergrund weitere Daten empfangen werden können. Wenn das Programm wieder Zeit hat, können weitere Bytes aus dem Puffer geholt und der Rückstand aufgearbeitet werden. Trotzdem ist es nicht ausgeschlossen, dass der Puffer überläuft. Das Programm erkennt diesen Zustand und zeigt eine entsprechende Meldung an. In diesem Fall gehen allerdings Daten verloren.

Im Detail macht das Programm folgendes: Zunächst wird über ein Next-Register der Joystick-Port 2 (JOY 2) in den UART-Modus gesetzt. Diese Einstellung gibt den Anschlüssen 7 und 9 die Funktion UART-TX (Sender) sowie UART-RX (Empfänger). Anschließend wird über einen Next-I/O-Port der UART, welcher normalerweise mit dem WiFi-Modul verbunden ist, zum Joystick-Port umgeleitet. Über einen weiteren Next-I/O-Port wird zunächst der UART initialisiert und dann auf die Einstellung 8N1 gesetzt (8 Daten-Bits, kein Paritäts-Bit und 1 Stopp-Bit). Im letzten Schritt muss der UART noch auf die MIDI-Geschwindigkeit von 31250 Baud programmiert werden. Das ist allerdings etwas aufwändiger: Der UART-Takt wird vom Systemtakt der Videosignalerzeugung abgeleitet und liegt zwischen 27 MHz und 33 MHz - abhängig vom eingestelltem Video-Modus. Es muss also zuerst über ein Next-Register der aktuelle Video-Modus (0-7) ermittelt werden, anschließend kann man die entsprechende Taktfrequenz (ist im Handbuch zum ZX Spectrum Next dokumentiert) als Takt-Basis nehmen und durch 31250 teilen. Als Ergebnis erhält man den Wert des Vorteilers, mit dem man den UART dann auf die richtige Geschwindigkeit setzen kann. Das wiederum erfordert die Aufteilung des Vorteiler-Wertes in zwei 7-Bit-Werte, welche dann nacheinander über einen Next-I/O-Port zum UART übermittelt werden. Bevor das Programm endlich mit der eigentlichen Arbeit beginnt, werden noch einige Variablen gesetzt, der Grafik-Layer 1,1 aktiviert und der Z80 auf 28 MHz hochgeschaltet.

Die Hauptschleife des Programms prüft zuerst über einen Next-I/O-Port, ob neue Daten im Empfangspuffer liegen. Weiterhin wird geprüft, ob ein Puffer-Überlauf vorliegt und gegebenenfalls eine Meldung ausgegeben. Wird das Drücken der Leertaste erkannt, dann bleibt das Programm an dieser Stelle stehen, bis die Taste wieder losgelassen wird. Wurde ein Byte aus dem Puffer gelesen, dann hängt die weitere Verarbeitung davon ab, ob es sich um ein Status- oder Daten-Byte handelt. Bei einem Status-Byte (erkennbar am gesetzten Bit 7) werden zunächst die Nachrichten bearbeitet, die weitere Daten-Bytes erfordern. Hier wird der Status gespeichert, die Anzahl der erwarteten Datenbytes festgelegt, ein Bytezähler gelöscht und anschließend auf weitere Bytes gewartet. Status-Nachrichten, die keine weiteren Daten erfordern, werden direkt ausgegeben oder ignoriert (mehr Infos weiter unten).

Bei der Bearbeitung von Datenbytes wird mithilfe eines Zählers festgestellt, welches Byte empfangen wurde und dann das Byte an der richtigen Stelle zwischengespeichert. Wurde das letzte Byte einer MIDI-Nachricht empfangen, dann beginnt die Verabeitung der gesamten Nachricht. Bei allen Kanal-Nachrichten wird zuerst der MIDI-Kanal ermittelt. Bei Nachrichten mit Notenwerten wird dann die Oktave errechnet (Division des Notenwertes durch 12). Durch eine Modulo-Operation wird anschließend die Notennummer innerhalb der Oktave ermittelt und aus einem String mit den 12 Notennamen der entsprechende Name ausgelesen, z.B. C# (Cis). Alle anderen Datenbytes, wie z.B. Anschlagstärke, Controller-Nummern, Controller-Werte oder Programm-Nummern werden einfach als 3-stelliger Zahlenwert ausgegeben. Eine Ausnahme ist Pitch Bend, hier sind alle Werte 4-stellig und haben ein Vorzeichen. Eine weitere Ausnahme ist System Exclusive, bei dem nur die Anzahl der Bytes gezählt und dann die Summe ausgegeben wird.

Die nachfolgende Tabelle enthält alle Nachrichten, die der MIDI-Monitor anzeigen kann:

BytesNachrichtangezeigte ParameterFarbe
8X XX XXNote OffMIDI-Kanal (C01...C16), Notenwert (C-0...G-9), Geschwindigkeit des Loslassens (0...127)Magenta
9X XX XXNote OnMIDI-Kanal (C01...C16), Notenwert (C-0...G-9), Anschlagstärke (0...127)Rot
AX XX XXPolyphonic AftertouchMIDI-Kanal (C01...C16), Notenwert (C-0...G-9), Stärke des Tastendrucks (0...127)Cyan
BX XX XXControl ChangeMIDI-Kanal (C01...C16), Controller-Nummer (0...127), Controller-Wert (0...127)Blau
CX XXProgram ChangeMIDI-Kanal (C01...C16), Programm-Nummer (0...127)Grün
DX XXChannel AftertouchMIDI-Kanal (C01...C16), Stärke des Tastendrucks (0...127)Cyan
EX XX XXPitch BendMIDI-Kanal (C01...C16), Wert (-8192...+8191)Blau
F0 ... F7System ExclusiveAnzahl der übermittelten BytesRot
F3 XXSong SelectSong-Nummer (0...127)Schwarz
F6Tune RequestSchwarz
FAStartSchwarz
FBContinueSchwarz
FCStopSchwarz
FFSystem ResetSchwarz

Das Programm kann übrigens auch mit dem so genannten Running Status umgehen. Bei MIDI ist es zulässig, Datenbytes auch ohne führendes Status-Byte zu übertragen, sofern sich der Status nicht geändert hat. Das Programm erkennt solche Datenbytes und zeigt die komplette Nachricht an. Bei den Notenwerten gibt es noch einen Sonderfall: Die Notennummern 0-11 sind nicht definiert und hier wird anstatt des Notenwertes der Text Low angezeigt (Notenwert zu tief).

Es gibt einige MIDI-Nachrichten, die in so schneller Folge übertragen werden, dass eine sinnvolle Anzeige im MIDI-Monitor nicht möglich ist. Die nachfolgenden Nachrichten werden deshalb zwar intern ausgewertet, jedoch nicht angezeigt:

BytesNachricht
F1 XX XXMIDI Time Code
F2 XX XXSong Position Pointer
F8Timing Clock
FEActive Sensing

Übrigens, der im Programm festgelegte Joystick-Port kann auch auf JOY 1 umgestellt werden. Dazu muss eine Zeile am Anfang des Programms auskommentiert werden. Es ist auch grundsätzlich möglich, anstatt des UART 0 vom WiFi-Modul den UART 1 vom Accelerator-Board zu verwenden. Das würde aber mehrere Änderungen erfordern. Wichtig: Wenn das Programm gestartet wurde, ist der UART 0 mit dem Joystick-Port verbunden und nicht mehr mit dem WiFi-Modul. Es ist also nicht möglich, MIDI und WiFi gleichzeitig zu verwenden. Benötigt man wieder die WiFi-Funktion, dann genügt ein Reset des ZX Spectrum Next und der ursprüngliche Zustand des UART wird wiederhergestellt.

Dieses Programm ist durchaus noch ausbaufähig. Es wäre z.B. noch möglich, jede Nachricht mit einem Zeitstempel zu versehen und die Bildschirmausgaben zusätzlich in einer Datei zu speichern. Auch die Datenanzeige könnte man erweitern: So ließen sich die im MIDI-Standard festgelegten Controller-Nummern im Klartext anzeigen, ebenso die Programm-Nummern, die z.B. bei General MIDI feste Namen haben. Vielleicht gibt es irgendwann eine Version 2.0...


SymbolZX MIDI Player
https://github.com/UzixLS/zx-midiplayer/tree/masterDies ist die GitHub-Homepage des ZX MIDI Players. Hier findet man immer den aktuellen Quelltext dieses Projektes, außerdem in unregelmäßigen Abständen ein fertiges Release mit dem ausführbaren Player als TR-DOS-Image.
zx-midiplayer-tap.zipFalls kein aktuelles Release auf der GitHub-Homepage zur Verfügung steht oder das Assemblieren zu kompliziert ist, kann man hier die aktuelle Programmversion als TAP-Datei laden.

ZX MIDI Player Screenshot Dieser MIDI-Player läuft auf allen Varianten des ZX Spectrum 128 und auch auf dem ZX Spectrum Next. Er spielt Standard-MIDI-Files (Type 0 und 1) ab und kann die MIDI-Daten an verschiedene Hardware ausgeben. Es werden viele Speichersysteme unterstützt: Neben TR-DOS, welches fest eingebaut ist, lässt sich u.a. auch DivIDE und DivMMC verwenden. Weiterhin ist es möglich, den Player mit erhöhtem Systemtakt (bis 28 MHz) zu betreiben. Es gibt nur eine Limitierung, die die Nutzung etwas einschränkt: Die Dateigröße der MIDI-Files darf 64kB nicht überschreiten.

Die aktuelle Version des ZX MIDI Players kann von der GitHub-Homepage als Assembler-Quelltext geladen werden. Es steht auch eine ausführbare Version als TR-DOS-Image zur Verfügung, diese ist allerdings nicht immer aktuell. Man kann diese Version auf einem ZX Spectrum 128 mit DivIDE oder DivMMC (jeweils mit ESXDOS) verwenden. Für den ZX Spectrum Next ist diese jedoch nicht so gut geeignet, da man den Next erst in den Modus für ZX Spectrum 128 oder +2 umschalten muss. Besser wäre ein TAP-File, welches man direkt im Next-Modus laden kann.

Dafür gibt es eine Lösung: Man kann den aktuellen Quelltext mit dem vielseitigen Z80-Assembler sjasmplus auf einem PC selbst zu einem fertigen Programm zusammenbauen. Bei diesem Prozess werden neben einem TR-DOS-Image auch eine TAP- und eine SNA-Datei erstellt. Ich habe die während der Texterstellung aktuelle Version des MIDI Players als Basis genommen und die erzeugte TAP-Datei zum Download bereitgestellt: zx-midiplayer-tap.zip. In Zukunft werde ich immer mal nachschauen, ob eine neue Version des Players veröffentlicht wurde und aktualisiere dann die TAP-Datei.

Nach dem Start des Players erscheint bei der TRD-Version eine Art Browser, mit dem man durch Laufwerke und Verzeichnisse navigieren und auch Einstellungen vornehmen kann. Der Start der TAP-Version führt zunächst zum Player, in dem ein kurzer Demosong abgespielt wird. Anschließend wird auch hier zur Browser-Ansicht gewechselt. In diesem Browser kann man mit der Leertaste zwischen den Fenstern Menu und Entries wechseln. Im aktiven Fenster kann die Markierung mit den Pfeiltasten bewegt werden und mit Enter wird der gewählte Eintrag aktiviert.

Mit diesem Wissen kann man nun einige Einstellungen vornehmen. So muss zunächst festgelegt werden, welche Hardware für die Ausgabe der MIDI-Daten verwendet werden soll. Dazu wechselt man im linken Fenster auf Settings und im rechten Fenster ist bereits Output ausgewählt. Hier kann man nun mit Enter die gewünschte Einstellung selektieren. Wenn man einen ZX Spectrum 128 und den internen RS232/MIDI-Anschluss verwendet, dann ist die Voreinstellung 128 std genau richtig. Auf dem ZX Spectrum Next wählt man ZX Next UART aus. Dann werden die MIDI-Daten am Joystick-Anschluss zur Next MIDI Box ausgegeben.

Eine weitere Einstellung betrifft das Dateisystem. Sofern man TR-DOS benutzt, besteht kein Handlungsbedarf. Bei Verwendung eines DivIDE oder DivMMC muss die entsprechende Option im Menü aktiviert werden. Auf einem ZX Spectrum Next ist die Aktivierung von DivMMC notwendig. Normalerweise wählt man jetzt die Option Save aus, um die Einstellung zu speichern. Das funktioniert allerdings nur unter TR-DOS und bedeutet, dass man auf anderen Systemen die Einstellung bei jedem Programmstart wiederholen muss. Speziell für den ZX Spectrum Next findet man im Paket zx-midiplayer-tap.zip eine inoffizielle TAP-Version, die mit den richtigen Einstellungen gestartet wird. Wichtig ist der letzte Schritt: Mit Apply werden die Einstellungen wirksam und im linken Fenster sollte ein zusätzlicher Laufwerksbuchstabe erscheinen (es können auch mehrere Laufwerksbuchstaben sein). Über diese kann man sich nun im Dateisystem bewegen und die gewünschten MIDI-Dateien zum Abspielen auswählen.

Falls der Wunsch besteht, den Quelltext selbst zu assemblieren, hier noch eine kurze Anleitung: Man benötigt den Quelltext des ZX MIDI Players und das Assembler-Paket sjasmplus (unter Releases die aktuelle Windows-Version downloaden). Zunächst wird der Quelltext in einem leeren Verzeichnis entpackt. Aus dem sjasmplus-Paket wird nur die Datei sjasmplus.exe benötigt und am besten in ein Verzeichnis kopiert, welches in der PATH-Systemvariable enthalten ist. Alternativ kann man diese auch einfach in das Quelltext-Verzeichnis kopieren, in dem sich die Datei make.bat befindet. Anschließend kann man die make.bat starten. Dabei werden einige Fehler ausgegeben, da die GitHub-Umgebung fehlt. Das Assemblieren selbst sollte aber ohne Fehler laufen. Man erkennt dies an den Meldungen Pass 1 complete (0 errors), Pass 1 complete (0 errors) und Pass 3 complete Errors: 0, warnings: 2 .... Die beiden Warnungen kann man ignorieren und werden von 2 leeren Strings in der make.bat erzeugt, die eigentlich die Versionsnummer enthalten sollten. Man findet jetzt ein neues Unterverzeichnis build und hier liegen die fertigen Dateien im Format SNA, TAP und TRD, die man auf dem Spectrum starten kann.

Die Entwicklung geht weiter und so gibt es jetzt einen modifizierten MIDI-Player, der an das +3DOS angepasst wurde, welches beim ZX Spectrum +3 und auch beim ZX Spectrum Next verwendet wird. Alles andere entspricht dem weiter oben beschriebenen Player. Der modifizierte Player hat den großen Vorteil, dass alle Einstellungen gespeichert werden können, denn die originale Version kann dies nur unter TR-DOS. Weiterhin steht noch eine spezielle Version für den ZX Spectrum Next zur Verfügung, bei der die optimalen Optionen bereits voreingestellt sind (MIDI-Ausgabe an Next MIDI Box und aktiviertes DivMMC-Dateisystem). Ferner wird hier +3DOS nur für das Schreiben und Lesen der Konfiguration verwendet.

Der komplette Assembler-Quelltext ist über GitFlic (siehe Tabelle) verfügbar, muss allerdings selbst assembliert werden. Dazu benötigt man den bereits erwähnten Assembler sjasmplus und am besten eine Linux-Umgebung für den Bau des fertigen Programms. Ich habe diese Arbeit bereits erledigt und über die nachfolgende Tabelle können die fertigen Programm-Versionen für den ZX Spectrum +3 sowie den ZX Spectrum Next geladen werden. Auch hier werde ich regelmäßig nach Updates schauen und dann die Programme aktualisieren.

https://gitflic.ru/project/chwe/zx-midiplayerDies ist die GitFlic-Homepage des modifizierten ZX MIDI Players für den ZX Spectrum +3 und den ZX Spectrum Next. Hier kann man den aktuellen Quelltext des Projektes laden, der lauffähige Player muss selbst assembliert werden.
zx-midiplayer-plus3.zipDieses Paket enthält den modifizierten ZX MIDI Player als lauffähige Version für den ZX Spectrum +3. Neben den Dateien im +3DOS-Format ist auch ein Disk-Image enthalten.
zx-midiplayer-next.zipDieses Paket enthält den modifizierten ZX MIDI Player als lauffähige Version für den ZX Spectrum Next.

An dieser Stelle vielen Dank an Eugene Lozovoy für diesen großartigen MIDI-Player und an Chwe für die Anpassung an den +3 und den Next.