RETRODREAMSAMIGA & SPECTRUM
Menü

← Fun Facts

Sinclair und Spectrum

1982

Streifen, Pfeiftöne und R Tape loading error

Die bunten Streifen am Bildschirmrand waren keine Dekoration: Es war die Laderoutine des ROM selbst, die Bit für Bit die Daten von der Kassette zeigte.

Wer einen Spectrum hatte, erinnert sich an das Ritual: LOAD "", ENTER, PLAY am Rekorder und minutenlang auf den Bildschirmrand starren. Die Streifen kommen direkt aus der ROM-Routine. Zuerst kommt der Vorspannton, ein Dauerpfeifen von etwa 5 Sekunden vor dem Header und etwa 2 Sekunden vor den Daten; in dieser Phase wechselt der Rand bei jedem Signalwechsel zwischen Rot und Cyan. Wenn die Daten kommen, werden die Farben Blau und Gelb [1].

Die Leseroutine ist anspruchsvoll. Um den Vorspannton zu akzeptieren, muss sie 256 Paare von Signalwechseln finden, jeder weniger als etwa 3.000 Taktzyklen nach dem vorigen [2]. Die Bits unterscheiden sich durch ihre Dauer: Eine 0 sind zwei Impulse von je 855 Zyklen, eine 1 zwei Impulse doppelter Dauer [1]. Rechnet man nach, dauert bei 3,5 MHz eine 0 etwa 0,49 Millisekunden und eine 1 etwa 0,98, was im Schnitt knapp 1.400 Bit pro Sekunde ergibt und rund vier Minuten für 40 KB.

Die Streifen am Rand sind das ROM, das dir in Farbe jedes Bit zeigt, das von der Kassette kommt.

Der „R Tape loading error“ hat eine einfache Erklärung. Jeder aufgezeichnete Block endet mit einem Paritätsbyte, das aus allen anderen berechnet wird. Beim Lesen rechnet das ROM mit, und am Ende muss das Ergebnis null sein; ist es das nicht, oder reißt das Signal mittendrin ab, schlägt das Laden fehl [2]. Das Spectrum-Handbuch beschreibt den Fehler R so: Auf dem Band wurde eine Datei gefunden, aber aus irgendeinem Grund konnte sie nicht gelesen oder geprüft werden [3].

Die Ladebildschirme nutzten eine Abkürzung des BASIC: SCREEN$ ist dasselbe wie CODE 16384,6912, die 6.912 Bytes des Bildes [3]. Und sie luden auf eine seltsame Art, wegen der Organisation des Bildspeichers. Die Pixel sind nicht Zeile für Zeile gespeichert: Zuerst kommen die obersten Zeilen der Zeichen der Zeilen 0 bis 7, dann die zweiten Zeilen und so weiter, und erst danach das zweite und das dritte Drittel des Bildschirms. Die Farben (die Attribute) kommen am Ende, in normaler Reihenfolge gespeichert [4]. Deshalb erschien das Bild streifenweise, in drei Bändern, und bekam erst am Schluss auf einen Schlag Farbe.

Die Schnelllader (Turbo Loader) änderten die Regeln. Speedlock wurde 1983 von David Aubrey-Jones und David Looker geschrieben, lag etwa ein Jahr in der Schublade und hatte Ende 1984 Premiere, in Daley Thompson's Decathlon von Ocean. Neben schnellerem Laden nutzte es Tricks des Prozessors, etwa das Speicher-Refresh-Register, um das Kopieren zu erschweren [5].

Die ersten Speedlock-Versionen erkannte man an den Klicks im Vorspannton; die späteren ersetzten sie durch einen Countdown auf dem Bildschirm mit der verbleibenden Zeit. Das System kam 1985 auf den Amstrad CPC und wurde auch von U.S. Gold und Ultimate Play the Game verwendet [5].

Quellen

  1. [1]The Complete Spectrum ROM Disassembly: SA-BYTES (04C2) · Ian Logan e Frank O'Hara, edição SkoolKit de Richard Dymond
  2. [2]The Complete Spectrum ROM Disassembly: LD-BYTES (0556) · Ian Logan e Frank O'Hara, edição SkoolKit de Richard Dymond
  3. [3]Sinclair ZX Spectrum BASIC Programming, capítulo 20 (armazenamento em fita) · Sinclair Research / World of Spectrum, 1982
  4. [4]Sinclair ZX Spectrum BASIC Programming, capítulo 24 (a memória) · Sinclair Research / World of Spectrum, 1982
  5. [5]Fast loader (secção Speedlock) · Wikipedia