DIP-40 · 6C001E-7 · disegno, non fotografia
SinclairFerranti (para a Sinclair)
1981
ULA da Ferranti
Un chip "non impegnato" che Sinclair ha trasformato nel resto del computer.
La ULA (Uncommitted Logic Array) di Ferranti è una matrice di porte logiche collegate su misura nell'ultima fase della produzione. Nello ZX81 ha sostituito 18 chip dello ZX80; nello Spectrum genera l'immagine a colori, legge la tastiera, gestisce la cassetta e il suono, e decide quando il processore può usare la memoria.
- 8
Una matrice non impegnata
Una ULA è un chip prodotto in anticipo con migliaia di transistor ancora senza collegamenti. Solo gli ultimi strati di metallo, fatti su ordinazione, collegano quei transistor in porte logiche e flip-flop, ed è questo a definire che cosa fa il chip. Costa molto meno ed è molto più rapido da sviluppare di un chip progettato da zero, che conviene solo con volumi enormi.
Ferranti, di Manchester, la stessa azienda che nel 1951 aveva completato il Ferranti Mark 1, fu pioniera nel Regno Unito di queste matrici in tecnologia bipolare. Secondo Chris Smith, che ha passato anni a studiare la ULA dello Spectrum, la 6C001E sarebbe venuta dalla serie 6000 delle matrici Ferranti, dopo le serie 1000, 2000 e 5000 di logica CML. Ferranti fece anche ULA per il BBC Micro e l'Acorn Electron.
Nel 1982 Ferranti arrivò a vendere l'ULA Designer, una stazione di progettazione da 46.500 sterline, promettendo circa 5.000 sterline per progetto e da 1 a 2 sterline per chip in grandi quantità, contro 15.000 sterline se il progetto lo faceva Ferranti stessa. La divisione di microelettronica fu venduta a Plessey nel novembre 1987.
La ULA dello ZX81
Jim Westwood, ingegnere capo di Sinclair, ricevette il compito di abbassare il costo dello ZX80 e riunì 18 dei suoi chip in una sola ULA. Lo ZX81 rimase con quattro chip principali: processore, ULA, ROM e memoria. Il manuale chiamava la ULA il "dogsbody" del sistema, il tuttofare.
È lei a generare il clock a 6,5 MHz (da cui viene quello a 3,25 MHz del processore), sincronizzare l'immagine, leggere la tastiera, registrare e leggere la cassetta, scegliere quando parlano la ROM e la RAM e controllare la temporizzazione di tutto. Siccome lo stesso pin serve al video e all'uscita cassetta, durante LOAD e SAVE sullo schermo compaiono le strisce a zigzag.
Ci furono tre versioni principali: 2C158E, 2C184E e 2C210E. Le prime due generano un segnale video senza il "back porch", un piccolo intervallo del segnale che i televisori usano come riferimento, e su molti televisori a colori l'immagine risulta molto scura, con il bianco che sembra grigio. La 2C210E ce l'ha già. Il Timex Sinclair 1000 usa la 2C210E.
La ULA dello Spectrum
Richard Altwasser progettò l'hardware dello Spectrum e, con esso, la sua ULA. La modalità grafica fu pensata per stare in meno di 7 KB: 6.144 byte per i 256 × 192 pixel e 768 byte di attributi, uno per ogni blocco di 8 × 8, per un totale di 6.912 byte. Ogni attributo ha 3 bit per il colore dell'inchiostro, 3 per quello della carta, uno per la luminosità e uno per il FLASH, che scambia i due colori ogni 0,64 secondi.
La ULA legge la tastiera e l'ingresso cassetta dalla porta 0xFE, e dalla stessa porta riceve il colore del bordo (bit da 0 a 2), l'uscita MIC (bit 3) e il beeper (bit 4). Per ripulire il rumore delle cassette, la squadra mise un trigger di Schmitt dentro la ULA.
Il clock viene da un quarzo da 14 MHz: la ULA lo divide per 2 per avere i 7 MHz dei pixel e per 4 per avere i 3,5 MHz dello Z80. E circa 50 volte al secondo, all'inizio di ogni immagine, dà al processore l'interrupt che la ROM usa per leggere la tastiera e contare il tempo.
Memoria contesa: comanda la ULA
La ULA e il processore condividono i primi 16 KB di RAM (da 0x4000 a 0x7FFF), dove sta lo schermo, e la memoria non può essere letta da entrambi nello stesso momento. La ULA ha la priorità: mentre disegna la parte utile dello schermo, ritarda lo Z80 che voglia accedere a quella zona, secondo uno schema di 6, 5, 4, 3, 2, 1, 0, 0 cicli. Nel bordo e nei ritorni del fascio non ci sono ritardi. Il codice nei 32 KB alti gira sempre a piena velocità.
Nel 48K ogni riga dura 224 cicli del processore e ci sono 312 righe, il che dà 69.888 cicli per immagine. Gli effetti che cambiano i colori a metà schermo, la musica per beeper a più voci o i campioni vocali contano questi cicli uno per uno. E siccome la ULA rilegge gli attributi a ogni riga di pixel, ci sono programmi che cambiano gli attributi tra una riga e l'altra per mostrare più colori in un blocco di 8 × 8.
Leggendo una porta dove non è collegato niente, il processore prende il byte che la ULA sta andando a prendere in quel momento dalla memoria video: il cosiddetto floating bus. Giochi come Cobra, Short Circuit, Sidewize e Arkanoid lo usavano per sapere in che punto dello schermo si trovava il fascio e disegnare senza tremolii.
Revisioni: scarafaggi e ragni
La prima ULA dello Spectrum, la 5C102E (schede Issue 1 e alcune Issue 2), aveva un errore nella contesa delle porte che rendeva poco affidabile la lettura della tastiera da codice macchina. La correzione fu il "dead cockroach" (scarafaggio morto): un chip 74LS00 saldato a mano sopra la scheda, collegato con fili volanti.
La 5C112E, delle Issue 2, corresse l'errore ma cominciò a ritardare porte che non ne avevano bisogno. Arrivò allora il "ragno" (spider): un transistor ZTX313 saldato sopra il processore, con un diodo e una resistenza. Dalla Issue 3 quel transistor entrò a far parte della scheda, come TR6. ZTX era la linea di transistor della stessa Ferranti.
Seguì la famiglia 6C001E. La 6C001E-5 cambiò la temporizzazione per funzionare con più televisori, al prezzo di spostare l'immagine di un carattere a sinistra, e il bit dell'ingresso EAR restava fluttuante finché la ULA non si scaldava. La 6C001E-6 fu usata nella maggior parte delle Issue 3, e la 6C001E-7 funziona su tutte le schede del 48K; le ultime portano già il logo Plessey. Le ULA dello ZX81 e del 48K hanno 40 pin.
Dal 128 alla fine della ULA, e le Timex
Il 128 e il +2 grigio usano la 7K010E5, poi marcata Amstrad 40056 ma funzionalmente identica, con 48 pin e uscita RGB. Un solo quarzo da 17,7345 MHz dà, diviso per 5, i 3,5469 MHz del processore e, diviso per 4, i 4,43 MHz del colore PAL. Ogni immagine passa ad avere 228 × 311 = 70.908 cicli, ed è per questo che il 128 è un po' più veloce del 48K e alcuni trucchi di temporizzazione notano la differenza.
Per un errore in un chip logico di paginazione, nel 128 e nel +2 grigio le pagine contese sono la 1, 3, 5 e 7, e non la 4, 5, 6 e 7 che indicava la documentazione. Si nota, per esempio, nella voce digitalizzata di Fantasy World Dizzy, che suona male su un 128 e bene su un +2A.
Nel +2A, nel +2B e nel +3 la ULA sparisce: Amstrad mise al suo posto un gate array, il 40077, in un package a montaggio superficiale, che unisce le funzioni della ULA e della logica intorno. La contesa passa alle pagine da 4 a 7 e solo negli accessi alla memoria, e i giochi che dipendevano dal floating bus possono bloccarsi o andare a scatti.
Le Timex presero un'altra strada: nel TS2068 il ruolo della ULA lo svolge l'SCLD (Standard Cell Logic Device), un chip a celle standard che Timex ordinò a NCR, in un package a 68 pin. È anche nel TS1500 e nei TC2048 e TC2068 fatti in Portogallo, dove permette le modalità a 512 × 192 e il colore in celle da 8 × 1. Nel TS2068 lo Z80 lavora a 3,528 MHz, un quarto del clock a 14,112 MHz dell'SCLD.
Lo sapevi che…
Si dice che si dovesse usare solo il 70% delle porte della ULA dello ZX81, ma Sinclair le usò tutte per metterci più funzioni, e il computer scaldava. Si racconta che c'era chi lo raffreddava con un cartone di latte freddo sopra il case.
Il nome "scarafaggio morto" viene, si dice, dall'aspetto del 74LS00 saldato sopra la scheda, con le zampe e i fili in vista.
Chris Smith ha tolto la copertura a diverse ULA 6C001E-7 per fotografarle e ha ridisegnato il circuito transistor per transistor: lo schema completo, su carta, misura 210 × 196 cm.
Nell'ex Unione Sovietica fu fatto un chip compatibile con la ULA dello Spectrum, il T34VG1.
Nel 48K il bordo cambia colore attraverso la stessa porta che fa suonare il beeper, ed è quella porta a dipingere le strisce colorate sul bordo mentre si carica una cassetta.
La ULA del 128 fu marcata Amstrad 40056 dopo l'acquisto di Sinclair, ma funziona esattamente come la 7K010E5 di Ferranti.
L'SCLD delle Timex non è una ULA: è un chip a celle standard, una tecnica semi-custom diversa.
Attribute clash
Sullo Spectrum, la ULA memorizza il colore per cella di 8×8 pixel: un solo colore d'inchiostro e uno di carta in ciascuna. Quando la navicella gialla entra in una cella, tutto quello che c'è disegnato cambia colore con lei. Confronta con il colore per pixel.





