DIP-40 · Z8400A PS · disegno, non fotografia
Zilog Z80Zilog
1976
Zilog Z80
Il processore a 8 bit di tutta la famiglia Sinclair, fatto dalla squadra che aveva progettato l'Intel 8080.
Lanciato da Zilog nel luglio 1976, lo Z80 è un processore a 8 bit compatibile con l'Intel 8080, progettato da Federico Faggin e Masatoshi Shima. Lui, o un suo compatibile, è in tutte le macchine Sinclair dallo ZX80 al +3, ed è uscito di produzione solo nel 2024.
- 8
- 8
- 20
- 8500
- 64 KB
Gli uomini dell'8080
Federico Faggin aveva guidato in Intel il lavoro sul 4004 e sull'8080, e Masatoshi Shima era stato il principale progettista della logica e dei transistor di quei due chip. Nel 1974, con Intel che trattava i microprocessori come un accessorio per vendere memorie e in piena recessione, Faggin sfidò Ralph Ungermann a fondare insieme un'azienda. L'ultimo giorno di Faggin in Intel fu Halloween, il 31 ottobre 1974.
L'azienda non aveva ancora nemmeno un nome quando Exxon Enterprises, il braccio della compagnia petrolifera per gli investimenti in tecnologia, lesse una notizia su di essa ed entrò con 500.000 dollari nel giugno 1975. Shima si unì a febbraio di quell'anno e portò dalla sua esperienza con i minicomputer NEC l'idea di avere due insiemi di registri, per rispondere in fretta agli interrupt.
Il nome nacque in una conversazione tra Faggin e Ungermann: Zilog, che loro spiegavano come "l'ultima parola nella logica integrata". I primi campioni dello Z80 arrivarono da Mostek il 9 marzo 1976 e il lancio ufficiale fu a luglio. Secondo lo stesso Faggin, lavorava 80 ore alla settimana per rispettare il calendario degli investitori.
Un 8080 migliorato
Lo Z80 esegue senza modifiche la maggior parte dei programmi dell'8080, compreso il sistema operativo CP/M, e così ha ereditato in un colpo solo un'intera libreria di software. Ma semplifica molto il resto della scheda: gli basta una sola alimentazione a 5 V (l'8080 chiedeva −5, +5 e +12 V), un clock semplice a una fase, e rinfresca da solo la memoria dinamica (DRAM), che altrimenti richiedeva circuiti a parte.
Aggiunge anche istruzioni che i programmatori hanno apprezzato: operazioni sui singoli bit, salti relativi, copia e ricerca di blocchi di memoria (LDIR, CPIR), aritmetica a 16 bit con segno, e due registri indice, IX e IY. Il sistema di interrupt ha guadagnato tre modi (0, compatibile con l'8080; 1, che salta sempre allo stesso indirizzo; e 2, con una tabella di indirizzi) e un interrupt non mascherabile, l'NMI.
Dentro, spiegato
Un registro è un cassetto dentro il processore, molto più veloce della memoria. Lo Z80 ha l'accumulatore A (dove si fanno i conti), i flag F (che dicono se il risultato è zero, se c'è stato un riporto, ecc.) e le coppie BC, DE e HL, che possono contenere sia due numeri a 8 bit sia un indirizzo a 16 bit. Ci sono poi IX e IY, il puntatore dello stack SP e il contatore di programma PC.
Il trucco di Shima è che AF, BC, DE e HL esistono in doppio: c'è un secondo insieme "ombra", AF', BC', DE' e HL'. Le istruzioni EX AF,AF' ed EXX scambiano i due insiemi in quattro cicli di clock. Pensato per gli interrupt, è finito usato come cassetti in più: la ROM dello ZX81 usa i registri ombra per lavorare con i numeri in virgola mobile a 40 bit del suo BASIC.
Lo Z80 indirizza 64 KB di memoria e, a parte, 256 porte di ingresso e uscita. In pratica, in ogni operazione di ingresso e uscita mette tutti i 16 bit sul bus degli indirizzi, e lo ZX81 e l'Amstrad CPC sfruttano il byte alto per risparmiare logica di decodifica.
Una sorpresa per chi lo vede come un processore a 8 bit: l'unità aritmetica è a 4 bit, e ogni somma a 8 bit viene fatta in due metà.
Il registro R e il trucco di Sinclair
Ci sono due registri poco comuni. I contiene la parte alta dell'indirizzo della tabella di interrupt del modo 2. R è il contatore di refresh: aumenta di 1 a ogni istruzione letta dalla memoria, conta solo nei 7 bit bassi, e subito dopo ogni lettura di istruzione lo Z80 mette I e R sul bus degli indirizzi per rinfrescare la DRAM.
Sinclair ne ha fatto una scheda grafica. Nello ZX80 e nello ZX81 il processore "esegue" la memoria dello schermo stessa: il circuito video legge ogni codice di carattere, consegna allo Z80 un'istruzione NOP (non fare niente) e, nel ciclo di refresh successivo, unisce il registro I (che punta al disegno dei caratteri nella ROM), il codice del carattere e il numero della riga per andare a prendere dalla ROM il disegno da mostrare. Ogni riga di testo finisce con un'istruzione HALT.
R fa da contatore di posizione sullo schermo. Nello ZX81 il pin di interrupt è collegato alla linea di indirizzo A6: quando il bit 6 di R passa da 1 a 0, scatta un interrupt, e il sistema sa di essere arrivato alla fine di una riga. Meno componenti, meno costi, e un processore occupato a disegnare: da qui i modi FAST e SLOW.
Nello Spectrum è la ULA a disegnare l'immagine, ma R e I continuano a contare. Molti giochi usano R come fonte di numeri casuali. E se un programma mette il registro I tra 0x40 e 0x7F, gli indirizzi di refresh cadono nella memoria condivisa con la ULA e sullo schermo compare la "neve" (lo snow effect).
Varianti, copie e cloni
Nell'NMOS originale la velocità massima è salita col tempo: 2,5 MHz nello Z80, 4 MHz nello Z80A (quello dello ZX81 e dello Spectrum, che lo usano sotto il limite), 6 MHz nello Z80B e 8 MHz nello Z80H, con una versione a 10 MHz alla fine degli anni '80. Le versioni CMOS arrivano a 20 MHz e possono fermare il clock senza perdere lo stato, cosa che l'NMOS non permette per più di qualche migliaio di cicli.
Per avere seconde fonti, Zilog diede il chip in licenza a Mostek (MK3880) e a SGS (Z8400); Sharp fece l'LH0080 e NEC il µPD780C. NEC ci arrivò con il reverse engineering e più tardi trovò un accordo con Zilog in una disputa sui brevetti, ottenendo la licenza. Il NEC D780C-1 è il processore della maggior parte degli Spectrum e della maggior parte degli ZX80. Ci furono anche copie non autorizzate, come l'U880 della Germania Est e il T34BM1 sovietico.
Zilog e NEC non sono proprio uguali negli angoli bui: dopo SCF e CCF, i bit 3 e 5 dei flag, che il manuale non documenta, restano diversi nell'uno e nell'altro. Quasi nessun programma ne dipende, ma i programmi di test della CPU colgono la differenza.
Il 15 aprile 2024 Zilog ha annunciato la fine dello Z80 classico, con ordini accettati fino al 14 giugno 2024: 48 anni dopo il lancio. Continua l'eZ80, un discendente compatibile.
Dove altro lo trovi
Negli anni '70 e '80 lo Z80 con CP/M ha dominato i computer da ufficio, dall'Osborne 1 ai Kaypro. Tra i computer domestici è nei TRS-80, negli Amstrad CPC e PCW, negli MSX e nel SAM Coupé, che usa uno Z80B a 6 MHz. Anche il Cambridge Z88, il portatile che Clive Sinclair fece nel 1988 dopo aver venduto il marchio ad Amstrad, ha uno Z80, in versione CMOS.
Nei giochi: il cabinato arcade di Pac-Man, il ColecoVision, il Master System e il Game Gear di Sega. Il Mega Drive ha uno Z80 accanto al 68000, con 8 KB di memoria propria; serve per far girare i giochi del Master System e viene spesso usato per gestire il suono, ma non è solo un chip audio.
E nelle calcolatrici grafiche di Texas Instruments, a cominciare dalla TI-81, del 1990, con uno Z80 a 2 MHz, fino alle TI-83 e TI-84 Plus, ancora in vendita nel 2025. Le più recenti TI-84 Plus CE usano già l'eZ80.
Lo sapevi che…
Per rendere difficili le copie, la squadra mise nel chip sei "trappole": transistor modificati per comportarsi in modo diverso da quello che il disegno suggerisce. Secondo Shima, un ingegnere NEC gli raccontò più tardi che questo aveva ritardato il loro reverse engineering di sei mesi.
Shima aveva la fama di calcolare a mente, nel bel mezzo di una riunione, quanto spazio sul chip avrebbe occupato un'idea, e di bocciarla se non ci stava.
Si dice che la X di ZX80 fosse "l'ingrediente misterioso" aggiunto allo Z80.
I registri IX e IY si possono usare a metà (IXH, IXL, IYH, IYL). Zilog non l'ha mai documentato, ma funziona sugli Z80 dell'epoca e i programmatori l'hanno usato senza problemi.
Negli Z80 CMOS l'istruzione non documentata OUT (C),0 invia 255 invece di 0.
Il bit 7 del registro R non cambia mai da solo: lo modifica solo l'istruzione LD R,A.
Siccome nello Spectrum il byte sul bus durante un interrupt è quasi sempre 0xFF ma non è garantito, i giochi che usano il modo 2 riempiono una tabella di 257 byte tutti uguali, per cadere sempre nello stesso punto.
È rimasto in produzione 48 anni, dal 1976 al 2024.










