RETRODREAMSAMIGA & SPECTRUM
Menu

← Fun Facts

Sinclair e Spectrum

1982

Riscas, apitos e R Tape loading error

As riscas coloridas no bordo do ecrã não eram decoração: eram a própria rotina de carregamento da ROM a mostrar, bit a bit, os dados a chegar da cassete.

Quem teve um Spectrum lembra-se do ritual: LOAD "", ENTER, PLAY no gravador, e minutos a olhar para o bordo do ecrã. As riscas vêm diretamente da rotina da ROM. Primeiro vem o tom guia, um apito contínuo que dura cerca de 5 segundos antes do cabeçalho e cerca de 2 segundos antes dos dados; nessa fase o bordo alterna entre vermelho e ciano a cada transição do sinal. Quando chegam os dados, as cores passam a azul e amarelo [1].

A rotina de leitura é exigente. Para aceitar o tom guia tem de encontrar 256 pares de transições, cada uma a menos de cerca de 3 000 ciclos de relógio da anterior [2]. Os bits distinguem-se pela duração: um 0 são dois impulsos de 855 ciclos cada, um 1 são dois impulsos com o dobro da duração [1]. Feitas as contas, a 3,5 MHz um 0 dura cerca de 0,49 milissegundos e um 1 cerca de 0,98, o que dá em média perto de 1 400 bits por segundo, e à volta de quatro minutos para 40 KB.

As riscas no bordo são a ROM a mostrar, em cores, cada bit que chega da cassete.

O "R Tape loading error" tem uma explicação simples. Cada bloco gravado termina com um byte de paridade, calculado a partir de todos os outros. À medida que lê, a ROM vai refazendo essa conta, e no fim o resultado tem de dar zero; se não der, ou se o sinal se perder a meio, o carregamento falha [2]. O manual do Spectrum descreve o erro R assim: foi encontrado um ficheiro na fita, mas por alguma razão não foi possível lê-lo ou verificá-lo [3].

Os ecrãs de carregamento aproveitavam um atalho do BASIC: SCREEN$ é o mesmo que CODE 16384,6912, os 6 912 bytes da imagem [3]. E carregavam de uma forma estranha por causa da organização da memória de vídeo. Os píxeis não estão guardados linha a linha: primeiro vêm as linhas de cima dos caracteres das linhas 0 a 7, depois as segundas linhas, e assim por diante, e só depois o segundo e o terceiro terço do ecrã. As cores (os atributos) vêm no fim, guardadas pela ordem normal [4]. Por isso a imagem aparecia aos riscos, em três faixas, e só no fim ganhava cor de uma vez.

Os carregadores rápidos (turbo loaders) mudaram as regras. O Speedlock foi escrito em 1983 por David Aubrey-Jones e David Looker, esteve cerca de um ano na gaveta e estreou-se no fim de 1984, no Daley Thompson's Decathlon da Ocean. Além de carregar mais depressa, usava truques do processador, como o registo de refrescamento de memória, para dificultar as cópias [5].

As primeiras versões do Speedlock reconheciam-se pelos cliques no tom guia; as seguintes trocaram-nos por uma contagem decrescente no ecrã, com o tempo que faltava. O sistema passou para o Amstrad CPC em 1985 e foi usado também pela U.S. Gold e pela Ultimate Play the Game [5].

Fontes

  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