RETRODREAMSAMIGA & SPECTRUM
Menu

← Curiosità

Sinclair e Spectrum

1982

Strisce, fischi e R Tape loading error

Le strisce colorate sul bordo dello schermo non erano decorazione: erano la routine di caricamento della ROM stessa che mostrava, bit per bit, i dati in arrivo dalla cassetta.

Chi ha avuto uno Spectrum si ricorda il rituale: LOAD "", ENTER, PLAY sul registratore, e minuti a fissare il bordo dello schermo. Le strisce vengono direttamente dalla routine della ROM. Prima arriva il tono guida, un fischio continuo che dura circa 5 secondi prima dell'intestazione e circa 2 secondi prima dei dati; in questa fase il bordo alterna rosso e ciano a ogni transizione del segnale. Quando arrivano i dati, i colori diventano blu e giallo [1].

La routine di lettura è esigente. Per accettare il tono guida deve trovare 256 coppie di transizioni, ciascuna a meno di circa 3.000 cicli di clock dalla precedente [2]. I bit si distinguono per la durata: uno 0 è formato da due impulsi di 855 cicli ciascuno, un 1 da due impulsi di durata doppia [1]. Fatti i conti, a 3,5 MHz uno 0 dura circa 0,49 millisecondi e un 1 circa 0,98, il che dà in media quasi 1.400 bit al secondo, e circa quattro minuti per 40 KB.

Le strisce sul bordo sono la ROM che mostra, a colori, ogni bit in arrivo dalla cassetta.

L'errore "R Tape loading error" ha una spiegazione semplice. Ogni blocco registrato termina con un byte di parità, calcolato a partire da tutti gli altri. Man mano che legge, la ROM rifà quel calcolo, e alla fine il risultato deve dare zero; se non lo dà, o se il segnale si perde a metà, il caricamento fallisce [2]. Il manuale dello Spectrum descrive l'errore R così: è stato trovato un file sul nastro, ma per qualche motivo non è stato possibile leggerlo o verificarlo [3].

Le schermate di caricamento sfruttavano una scorciatoia del BASIC: SCREEN$ equivale a CODE 16384,6912, i 6.912 byte dell'immagine [3]. E si caricavano in modo strano per via dell'organizzazione della memoria video. I pixel non sono memorizzati riga per riga: prima vengono le righe superiori dei caratteri delle righe da 0 a 7, poi le seconde righe, e così via, e solo dopo si passa al secondo e al terzo terzo dello schermo. I colori (gli attributi) vengono alla fine, memorizzati nell'ordine normale [4]. Per questo l'immagine compariva a strisce, in tre fasce, e solo alla fine prendeva colore tutta in una volta.

I caricatori veloci (turbo loader) cambiarono le regole. Speedlock fu scritto nel 1983 da David Aubrey-Jones e David Looker, rimase nel cassetto per circa un anno e debuttò alla fine del 1984, in Daley Thompson's Decathlon di Ocean. Oltre a caricare più in fretta, usava trucchi del processore, come il registro di refresh della memoria, per rendere difficili le copie [5].

Le prime versioni di Speedlock si riconoscevano dai clic nel tono guida; le successive li sostituirono con un conto alla rovescia sullo schermo, con il tempo mancante. Il sistema passò all'Amstrad CPC nel 1985 e fu usato anche da U.S. Gold e da Ultimate Play the Game [5].

Fonti

  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