Retro: Sinclair Spectrum – Spectranet – boot.zx

Spectranet 4 miniJetzt wird sich mancher denken „Jetzt spinnt er komplett“ 😉 Was will er nun…..Da mich das Netzwerkinterface für den Sinclair Spectrum doch ziemlich fasziniert, wollte ich meinen eigenen kleinen Spiele-Server für den ZX Spectrum mit meinem eigenen Menü ausstatten.
Da ich aber schon fast 30 Jahre nicht mehr auf dem Spectrum programmiert hatte, habe ich mir das Menüprogramm des Spectranet-Entwicklers als Vorlage geschnappt und einige Stunden damit verbracht es zu „übersetzen“.
Bei den Tests bin ich auf den schon beschrieben „Bug“ gestoßen, der zu dem Firmware-Update auf R544 führte 😉
Nun zum Aufbau des Servers:

  • boot.zx – das Menüprogramm
  • games.lst – die Listen mit den Dateien in jedem Verzeichnis
  • (games.w – das Programm das die jeweilige Liste erstellt)
  • (*.h – die Programme um die Hilfedateien zu erstellen)

games.w
Mit diesen Programmen können die Listen für die Menüs erstellt werden die dann in boot.zx eingelesen werden und am Bildschirm dargestellt werden.

10%fopen #4,"games.lst","w"
20%oneof 100
30 PRINT #4;"Apulija-13"'"apulija.tap"'"tap i"
40 PRINT #4;"Games 2013"'"Games 2013"'"dir"
50 PRINT #4;"Retro Game"'"Retro"'"sna"
60 PRINT #4;"Jungsis Corner"'"Jungsi"'"prg"
90 PRINT #4;"Zurueck"'".."'"dir"
100%close #4

Nun zur Erläuterung der einzelnen Zeilen:
Zeile 10: Einen Stream mit Namen „games.lst“ öffnen und mit „w“ zum Schreiben vorbereiten.
Zeile 20: dem Programm sagen wo der Stream wieder geschlossen wird
Zeile 30: In die Datei die erste Zeile schreiben – die Zeichenfolge zwischen den ersten Anführungszeichen wird am Bildschirm dargestellt – die nächste Zeichenfolge ist der Dateiname (inkl. Endung) – die letzte Zeichenfolge enthält nochmal die Endung und (falls vorhanden) ein „i“ für eine Hilfe-Datei.
Zeile 40: Die zweite Zeile in der Datei „games.lst“ – dieses Mal ein Verzeichnis – der Name für die Bildschirmausgabe, gefolgt von dem Verzeichnisnamen und der Angabe der der „Datei-Art“ – „dir“ für Verzeichnis.
Zeile 50 und 60: wie Zeile 30 aber für Snapshot-Datein und Programme (sna und prg)
Zeile 60: einfach eine Menüebene zurück
Zeile 100: der Stream wird geschlossen

Allerdings geht das auch einfacher 😉
Man kann diese Listen (games.lst) auch einfach mit einem Texteditor erstellen Ich verwende Notepad++.
Als Beispiel nehmen wir mal das Menü meines kleinen Servers – nach dem Start wird folgendes Menü angezeigt:

Spectranet "boot.zx" Menü 1
Spectranet „boot.zx“ Menü 1

Damit das klappt benötigt man eine Datei mit folgenden Zeilen (wird in dem jeweiligen Verzeichnis als „games.lst“ gespeichert)

Classic
Classic
dir
Neue Spiele
neu
dir
WOS Top Ten
WOSTT
dir

Hier gehören immer drei Zeilen zusammen:
1. Zeile: hier steht was am Bildschirm angezeigt werden soll
2. Zeile: Name der Datei/des Ordners
3. Zeile: was soll geladen werden? dir = in Zeile 2 steht der Name eines Ordners – tap = in Zeile 2 steht der Name einer TAP-Datei – sna = in Zeile 2 steht der Name einer SNA-Datei – prg = in Zeile 2 steht der Name eines Programms
Nehmen wir mal an, es wurde in obigen Beispiel „C“ für WOS Top Ten ausgewählt solle folgendes Menü erscheinen:

Spectranet boot.zx Menü 2
Spectranet boot.zx Menü 2

Hier wieder die Einträge in die Datei „games.lst“:

Renegade
RENEGADE.TAP
tap i
R-Type
R-Type.tap
tap
Fairlight
FAIR1.TAP
tap
Skool Daze
skooldaze.tap
tap
The Great Escape
The Great Escape.tap
tap
Zurueck
..
dir

1. Zeile: Es wird „Renegade“ ausgegeben
2. Zeile: Name der Datei die geladen werden soll inkl. Endung
3. Zeile: Art der Datei: tap – !Besonderheit! hier wurde noch ein „i“ angefügt – das ist der Hinweis das es noch eine Hilfedatei gibt (siehe weiter unten)
die drei letzen Zeilen stellen den Menüpunkt zur Verfügung damit man im Menü eine Ebene zurückspringen kann.

Hat man nun bei der Dateiart (tap, sna oder prg) ein „i“ für eine Hilfedatei eingegeben, verzweigt das Hauptprogramm und will diese Datei einlesen. Diese Datei muss folgender Syntax folgen: INSTR-Dateiname.end – im obigen Beispiel (Renegade) sollte die Datei also Instr-RENEGADE.TAP heißen und im gleichen Verzeichnis wie das Spiel liegen. Die Datei kann auch mit Notepad++ erstellt werden (Dateiendung anpassen). Sollte die Hilfedatei mit einer Bildschirmseite nicht ausreichen, muss man rechtzeitig in die Datei eine Zeile mit einem „m“ (dann wird der Bildschirm leer gemacht und die nächste Seite der Datei geladen) einbauen. Eine empfehlenswerte Methode um die Hilfedatei am Bildschirm gut aussehen zu lassen ist das man auf eine Seite nur 32 x 24 Zeichen Platz hat. d.h. wenn der Hilfetext länger sein ist, sollte man in Zeile 24 das m setzen für die nächste Seite. Wenn man sich im Notepad++ die Zeilenbreite auf 32 einstellt bekommt man auch ein Gefühl dafür wie viel in eine Zeile passt Dann weiß das Programm das der Bildschirm leer gemacht werden soll und weiter geladen wird.

Spectranet boot.zx - Hilfe/Info starten - Abfrage
Spectranet boot.zx – Hilfe/Info starten – Abfrage
Spectranet "boot.zx" - Anzeige der Hilfedatei
Spectranet „boot.zx“ – Anzeige der Hilfedatei

 

Das Original-Programm „boot.zx“ habe ich in den entsprechenden Zeilen auf deutsch angepasst und noch eine kleine Begrüßung eingebaut.