ZX Spectrum 2009 REMAKE!
- prima parte -
Una riedizione in chiave piu' moderna del glorioso computer degli anni '80
Introduzione
Chi come me ha quarant'anni, sicuramente ricorda ed ha vissuto direttamente o indirettamente, i primi esperimenti da parte di molte marche (vedi Commodore, Sinclair, Amstrad, Sony, Texas Instrument, eccetera), di fare entrare nelle case della gente l'informatica, tramite l'ausilio di computer a basso costo e facili da usare. All'epoca eravamo adolescenti e cominciavamo a muovere i primi passi anche nell'ambito dell'elettronica, assemblando i nostri primi circuitini, e rimanevamo estasiati davanti al nostro fido computer, cercando di capire come potesse funzionare e come fosse complesso. Purtroppo, nel mio caso, un fulmine nel maledetto inverno del 1986, mise fine alla vita del mio amato ZX Spectrum+ che purtroppo non si riusci' a riparare, a causa della scarsa reperibilita' dei ricambi dovuto al fallimento della Sinclair ed acquisizione da parte dell'Amstrad.
Alcuni anni fa, grazie a quel fantastico strumento che prende il nome di Internet, sono riuscito a trovare in Germania, una ditta (la Sintech) che possiede alcuni dei ricambi che facevano al caso mio e quindi feci un ordine. Voi non ci crederete, ma a distanza di 20 anni sono riuscito a riparare il mio amato Spectrum, che ora dorme sonni tranquilli rigorosamente al riparo da luce e polvere. Sappiate che sono ormai pezzi da museo e quindi vi esorto a non disfarvene. Quest'anno mi e' venuto in mente di riprendere in mano lo schema elettrico del computer orginale, di studiarne i punti di debolezza e se possibile, ridurre il numero di componenti in modo da eventualmente crearne un kit di montaggio alla portata di tutti. Ebbene, ci sono riuscito, e con solo 11 integrati, vi sottopongo il frutto del mio lavoro.
Prima, pero', non posso non parlare delle caratteristiche del prodotto originale e del componente 'chiave' che prende il nome di ULA. L'ULA, era prodotta dalla defunta Ferranti ed era un chip-custom, progettato dalla Sinclair. Estrapolando i circuiti presenti nell'ULA, si potrebbe realizzare un PCB di circa 2 metri quadri. L'ULA, nel nostro caso la versione 6C001-7, aveva i seguenti compiti:
1) Produrre il clock per la CPU ed eventualmente 'sospenderla';
2) Produrre i segnali U, V, Y (da dare in pasto all'encoder PAL LM1889), tramite la conversione delle informazioni presenti nell'area di memoria compresa tra le locazioni 4000h - 5AFFh (display file);
3) Produrre il suono;
4) Gestire la scansione della tastiera;
5) Gestire il registratore (salvataggio e caricamento dati).
Si capisce che era il cuore del sistema e di conseguenza il componente piu' costoso ed indispensabile. Da quella ditta tedesca, si trovano ancora parecchi esemplari del nostro super-chip al prezzo di EUR 19,99. Si tratta di componenti nuovi, mai usati, fondi di magazzino.
Ecco le principali caratteristiche del Sinclair ZX Spectrum, prodotto in versione 16K o 48K, tratte da Wikipedia, l'enciclopedia libera:
Specifiche tecniche e hardware
Scheda interna ZX Spectrum (Edizione 3B - 1983)
- processore Zilog Z80A a 3,5 MHz
- 16 kB ROM contenente il sistema operativo e l'interprete BASIC
- 16 kB RAM (espandibili a 48 KB) per la versione Spectrum 16 kB o 48 kB RAM nella versione Spectrum 48 kB
- dimensioni: 233 mm (larghezza) x 144 mm (profondità) x 30 mm (altezza)
Grafica
Lo ZX Spectrum opera costantemente in modalità grafica, e la sua memoria video può essere indirizzata direttamente. La mappa dello schermo prevede 256x192 pixel, e il font di caratteri, di dimensioni 8x8 pixel, permette la visualizzazione di 24 righe da 32 caratteri. Con l'utilizzo di font più compatti i programmatori arrivarono comunque ad ottenere fino a 85 caratteri per riga, sebbene raramente si superasse il limite delle 64 colonne (è ad esempio il caso del Word Processor "Tasword II"). Testo e grafica possono essere tranquillamente usati contemporaneamente. Lo schermo è diviso in due sezioni: quella superiore normalmente occupa le prime 22 linee di caratteri e mostra il listato o i risultati dei programmi in esecuzione; quella inferiore, costituita dalle ultime 2 righe, mostra il comando digitato o la linea di programma che si sta modificando o eventuali messaggi di sistema. I comandi possono essere editati con l'ausilio dei tasti cursor left, cursor right, insert e delete con ripetizione automatica.
A differenza delle console per videogiochi dell'epoca (e di diversi home-computer indirizzati al mercato dei videogiochi), l'hardware dello ZX Spectrum non implementava i cosiddetti sprite, né vi erano porte joystick di serie. La velocità del processore e la possibilità di un accesso relativamente veloce alla pagina video permisero ugualmente la creazione di una vasta libreria di videogiochi che sfruttavano ingegnosi trucchi di programmazione per animare gli sprite.
Lo Spectrum, per il quale non era commercializzato un monitor dedicato, si collega ad un normale televisore PAL UHF a colori o in bianco e nero, sul canale 36.
Colori
Per utilizzare i colori senza consumare troppa memoria e potenza di calcolo i progettisti scelsero di far colorare solo le 32x24 aree di 8x8 pixel: ogni area 8x8 poteva avere 16 colori (otto di base più otto a luminosità maggiorata, "bright"), più la possibilità del flash (lampeggiamento, generato dall'hardware). In un'area di 8x8 pixel potevano essere presenti perciò solo pixel di due colori qualsiasi (più l'eventuale lampeggiamento); tentare di utilizzare un altro colore avrebbe cambiato gli "attributi" dell'intera area 8x8 (il cosiddetto effetto del colour clash, passione o fastidio di tanti programmatori Spectrum).
I colori base sono: nero, verde, blu, rosso, magenta (porpora), cyan (ciano), giallo e bianco. Tutti gli otto colori possono essere presenti sullo schermo contemporaneamente con alcune zone lampeggianti e altre ferme e dei caratteri con l'extra bright: tramite quest'ultimo accorgimento si ottengono in tutto 15 colori, ma non è possibile usare un colore bright ed uno standard nel medesimo quadretto di 8 x 8 pixel. Il colore del bordo dello schermo è definibile con uno degli 8 colori base tramite il comando BORDER. I colori di primo piano (foreground) e di sfondo (background) e gli attributi di luminosità (brightness) e lampeggio (flashing) sono impostati con i comandi BASIC INK, PAPER, BRIGHT e FLASH. Possono essere attivati anche OVER (sovrascrittura degli attributi dello schermo) e INVERSE (scambia i colori di sfondo e primo piano). Questi sei comandi possono essere impostati in modo da modificare tutte le successive operazioni PRINT, PLOT, DRAW o CIRCLE o riguardare una singola linea di comando.
Audio
Come molti altri microcomputer dei primi anni '80, per la generazione dei suoni lo ZX Spectrum è dotato solo di un limitato buzzer, teoricamente in grado di generare esclusivamente segnali ad onda quadra. Grazie alla discreta velocità di calcolo del microprocessore questi limiti sono stati comunque spesso superati con accorgimenti software: tramite accurate temporizzazioni infatti i programmatori hanno sintetizzato svariati effetti sonori, brani polifonici e addirittura un minimo di sintesi vocale. Il segnale sonoro può inoltre essere riprodotto, amplificato e (seppure in bassa qualità) campionato sfruttando gli stessi connettori messi a disposizione per il registratore a cassette. Questa caratteristica, che potrebbe sembrare banale, è stata utilizzata per molte realizzazioni hardware a basso costo, tra le quali la penna ottica e un modem RTTY per radioamatori: l'essenzialità degli schemi elettrici, principalmente costituiti da circuti per l'amplificazione e l'adattamento dei segnali, veniva infatti compensata con il software.
I modelli prodotti da Amstrad montano un vero e proprio chip audio, quindi offrono un sonoro migliore di quello ottenibile con l'altoparlantino integrato nei modelli precedenti. Il chip era lo stesso degli Amstrad CPC ed un parente stretto di quello montato sull'Atari ST, la qualità era inferiore a quella del C64 ma era pur sempre un importante passo avanti rispetto al 48K ed al primo plus. Molti giochi hanno usato il chip senza rinunciare alla compatibilità coi modelli precedenti, anche se ovviamente questi ultimi non erano in grado di riprodurre i suoni e le musiche che richiedevano il chip.
Tastiera
La tastiera ha 40 tasti con maiuscole e minuscole e tasto Caps Lock. Tutti i tasti hanno la ripetizione automatica. I primi modelli di Spectrum (Spectrum 16K e Spectrum 48K) hanno una tastiera gommosa piccola e piuttosto scomoda: per ridurre la fatica di digitazione durante la programmazione il produttore pensò quindi di associare ad ogni tasto due o tre comandi BASIC, richiamabili premendo semplicemente il tasto associato, eventualmente in combinazione coi tasti CAPS SHIFT e/o SYMBOL SHIFT: in tal modo, oltre a permettere una maggiore velocità di redazione del software, si eliminava la possibilità di lasciare errori di sintassi nei listati, il che contribuì alla divulgazione di questo semplice ma assai utile linguaggio di programmazione.
Il set di caratteri comprende, oltre ai normali caratteri ASCII, 16 caratteri grafici, 22 codici colore e 21 caratteri grafici ridefinibili dall'utente.
Interfacce e periferiche
Sulla porta di espansione, documentata accuratamente nei manuali a corredo, furono realizzate una miriade di interfacce aggiuntive. La Kempston produsse interfacce per joystick e mouse. La Sandy produsse floppy drives da 400 e 800kb di capacità. Seikosha vendeva una stampante ad aghi a colori corredata di interfaccia parallela dedicata allo Spectrum e fornita di software di controllo per le funzionalità di hardcopy; tra le tante stampanti utilizzate con lo Spectrum in Italia la Mannesmann Tally MT-80 ebbe una discreta diffusione, in quanto controllabile sia tramite porta parallela che (con apposita espansione interna), tramite porta seriale. La Sinclair stessa produsse una mini-stampante a carta termica (la ZX Printer) e dei supporti di memorizzazione di massa (i problematici ZX Microdrive, costituiti di piccoli nastri magnetici interamente gestiti dal computer, che avrebbero dovuto sostituire a basso costo i drive per dischi).
Interfaccia per registratore a cassette
- la memoria di massa utilizzata da tutti i modelli di Spectrum è il registratore a cassette e tutto il software prodotto è disponibile su nastro. L'eccezione è il modello ZX Spectrum+3 che usa un lettore floppy da 3” ma può caricare i programmi anche da nastro. Ove il registratore non sia integrato, l'interfaccia è realizzata tramite due connettori da 3,5 mm. Questo permetteva di utilizzare come dispositivo di memorizzazione di massa, a differenza del Commodore 64, che richiedeva un registratore dedicato, un qualsiasi registratore portatile. I dati vengono registrati a circa 1500 baud.
Un tono guida viene registrato sul nastro prima di far partire i segnali relativi ai dati in modo da aggiustare le eventuali fluttuazioni di volume di alcuni registratori. I programmi iniziano con un header contenente informazioni relative al tipo, al titolo, alla lunghezza dei successivi dati. Programmi, blocchi di memoria, stringhe e matrici o schermate possono essere salvate separatamente e i primi tre tipi possono essere verificati dopo il salvataggio per confermare la corretta memorizzazione. Normalmente i programmi non si avviano da soli dopo il caricamento ma occorre lanciarli con RUN; il salvataggio però può avvenire anche in modo da impostare l'avvio automatico.
- porta di espansione: posta sul retro, riporta praticamente tutti i segnali del bus della macchina. Vi si poteva collegare direttamente una delle stampanti a disposizione, la ZX Printer della Sinclair, che utilizzava carta metallizzata, l'Alphacom 32, che stampava su carta termica, o la Seikosha GP50S. Grazie alla versatilità di questa porta, negli anni si resero disponibili parecchi dispositivi esterni, tra i quali ricordiamo:
- ZX Interface 1: utilizzata per connettere fino a 8 Microdrive, apposite unità a nastro di fabbricazione Sinclair, concettualmente simili ai DECTape. Forniva anche una porta seriale RS232C e una rudimentale LAN per connettere fino ad 63 Spectrum o QL fra loro. Nell'interfaccia era presente una ulteriore ROM da 8K in grado di estendere il BASIC Sinclair con i comandi di supporto alle nuove porte di espansione.
- Kempston Interface: Dotava lo Spectrum di 1 porta per joystick digitali. A differenza delle altre interfacce, non emulava la pressione di tasti del computer: lo stato del joystick era invece leggibile alla porta di I/O 31, anche da BASIC. Divenne lo standard de facto per collegare un joystick allo Spectrum.
- ZX Interface 2: prodotta direttamente dalla Sinclair, anche essa dotava lo Spectrum di due entrate per joystick digitali, ma al contrario da quanto proposto dalla Kempston, i movimenti rilevati erano abbinati ai tasti numerici. Oltre agli ingressi per i joystick era presente anche una interfaccia per cartucce ROM, ma i titoli software pubblicati in ROM si contano sulle dita. È interessante notare che dopo l'acquisizione di Sinclair da parte di Amstrad (1986) lo Spectrum venne dotato di una interfaccia Joystick interna, incompatibile con i Joystick digitali standard, come il modello SISJ dell'Amstrad, e le interfacce precedenti.
Tra le altre interfacce prodotte ricordiamo una interfaccia MIDI, le Multiface in grado di "congelare" un qualsiasi programma e salvarlo su disco e almeno 3 interfacce per floppy standard da 3,5" coma le Disciple e la Plus D. La mancanza di standardizzazione e il proliferare di interfacce di terze parti faceva sì che non tutte le interfacce fossero sempre compatibili tra loro Gli ultimi modelli furono equipaggiati da porte seriali e parallele standard.
Descrizione
Come ho semplificato e modificato lo schema? Partiamo dalla premessa che lo stadio alimentazione originale, gravava interamente su un povero 7805 dotato per ragioni di spazio di una misera aletta dissipatrice. Veniva utilizzato un ingegnoso sistema (mediante un 'coil') per ricavare le seguenti tensioni a partire dai 5V generati dal 7805:
1) -5V e +12V, utilizzate dalle RAM dinamiche 4116;
2) +12V, utilizzate dall'encoder PAL;
3) -12V, riportata solo sul pettine posteriore, per eventuali espansioni.
Era il tallone d'Achille, assolutamente sottodimensionato. Se qualcosa non andava per il verso giusto, quasi sicuramente si bruciavano le RAM dinamiche 4116 che erano deputate a contenere il display-file. Io ho optato per un moderno switching utilizzando un LM2576-5 che rimane 'freddo' e che necessita di pochissimi componenti esterni. Inoltre, non ho piu' bisogno delle tensioni -5V e -12V, in quanto ho utilizzato in loco delle 8 DRAM 4116 (1x16384), ovvero da 1bit * 16Kb, soltanto 2 DRAM 41464 (4x65536), ovvero 4bit * 64Kb, configurate in modo da usarne soltanto 16Kb, tenendo A7 alto. In questo modo ho ricreato il banco da 16Kb utilizzando soltanto 2 DRAM con un risparmio di 6 IC ed inoltre le 41464 utilizzano solo una singola tensione (+5V) per il loro funzionamento. Altro risparmio, l'ho ottenuto utilizzando in loco delle 8 DRAM 4532 (1x32768), una singola RAM statica (62256, 8x32768), la cui gestione, ricade direttamente sulla CPU Z80, poiche', essendo statica non necessita del refresh e puo' essere indirizzata direttamente dalla CPU, risparmiando in questo modo 2 TTL 74HC157.
Tirando le somme ho risparmiato:
- 6 x 4116;
- 2 x 74HC157;
- 7 x 4532 (utilizzando una singola SRAM 62256), per un totale di 15 IC e ben 224 pin! Da cio' si capisce come anche il PCB e le difficolta' complessive si siano notevolmente ridimensionate, senza contare il risparmio in termini 'energetici' che offre adesso il circuito.
Ora segue una carrellata di immagini, mentre nella seconda parte dell'articolo, pubblichero' schemi, disegni, consigli e quant'altro, senza dimenticare come realizzare la tastiera. A presto!
|
clicca per ingrandire |
|
clicca per ingrandire |
|
clicca per ingrandire |
|
clicca per ingrandire |
|
clicca per ingrandire |
|
clicca per ingrandire |
|
clicca per ingrandire |