Utente:Leo72/prove/Z80

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Uno dei primi microprocessori Z80 fabbricati; la data impressa indica Giugno 1976
Un Z80 in versione CMOS Z80, pacchettizzato in formato QFP

Lo Zilog Z80 è un microprocessore ad 8 bit disegnato e commercializzato da Zilog a partire dal mese di luglio del 1976, largamente utilizzato in numerosi sistemi, dagli home computer agli arcade, dai sistemi embedded a quelli militari[1]. Lo Z80, con i suoi derivati ed i suoi cloni, è una delle famiglie di CPU più usate di tutti i tempi[2] e, con la famiglia del MOS 6502, dominò il mercato dei microcomputer e delle console giochi ad 8 bit di fine anni '70 e quello degli home computer dei primi anni '80[3].

Zilog tentò di realizzare delle versioni per minicomputer dell'architettura Z80, lo Z800 e lo Z280, che però non presero mai piede come il loro predecessore.

Zilog concesse in licenza senza royalty la proprietà intellettuale del progetto del core dello Z80 a qualunque società volesse realizzare una propria copia dello Z80, anche se diversi produttori dell'Europa dell'Est e dell'ex Unione Sovietica fabbricarono delle copie senza licenza della CPU. Questo permise ad un prodotto di una piccola società qual'era Zilog di affermarsi sul mercato mondiale grazie al fatto che i grossi produttori come Toshiba iniziarono a produrre lo Z80. Come conseguenza di questa scelta commerciale Zilog ha prodotto meno del 50% di tutti gli Z80 costruiti in questi anni.

Breve storia e analisi tecnica[modifica | modifica wikitesto]

Lo Z80 nacque quando Federico Faggin, dopo aver lavorato sull'8080, lasciò Intel alla fine del 1974 per fondare con Ralph Ungermann la ZiLOG, una società dedita esclusivamente alla produzione di CPU, il cui primo prodotto fu lo Z80, presentato a luglio del 1976[4]. La CPU fu progettata per essere compatibile a livello di microcodice con l'Intel 8080[4][5] per cui molto del codice per l'8080, principalmente quello del sistema operativo CP/M, poteva girare senza modifiche sullo Z80. Masatoshi Shima, co-progettista dell'Intel 4004 e dell'Intel 8080, contribuì allo sviluppo dello Z80[6].

La piedinatura originale dello Z80 con pacchettizzazione DIL40

Lo Z80 offriva molte migliorìe rispetto all'8080[5]:

  • un insieme di istruzioni più completo[7] incluse quelle per la manipolazione dei bit, lo spostamento dei blocchi di dati, l'I/O e le istruzioni per la ricerca dei byte[8];
  • nuovi registri indice IX e IY, con le relative istruzioni;
  • un più automatizzato e generalizzato sistema di interrupt vettorizzati (modo 2), così come un sistema di interrupt vettorizzati fissi (modo 1) per per sistemi semplici con hardware minimale (il modo 0 indica la modalità compatibile 8080)[9].
  • 2 banchi di registri separati, che possono essere velocemente invertiti, per velocizzare la risposta agli interrupt;
  • necessità di meno hardare per l'alimentazione, la generazione del clock, l'interfaccia di memoria e l'I/O:
    • rchiesta di 1 singola alimentazione a 5V (l'8080 necessita di 3 alimentazioni, rispettivamente a -5V, +5V e +12V)
    • clock a 5 V a singola fase (l'8080 necessita di un generatore di clock a due fasi di grande ampiezza)
    • un meccanismo integrato per il refresh della memoria ad accesso diretto che altrimenti doveva essere fornito da una circuiteria esterna
    • bus dati non multiplato (l'8080 ha nel bus dati un sistema multiplato di segnali di stato)
  • un prezzo più basso.

Lo Z80 si diffuse nel mercato dei processori molto più dell'8080 e del suo successore, l'Intel 8085[10] e divenne una delle CPU ad 8 bit più popolari[11][12]. Uno dei fattori chiave del successo iniziale dello Z80 furono i sistemi integrati nel chip stesso, come quello per il refresh della memoria DRAM, che permettevano di utilizzarlo in abbinamento ad altri pochi chip di supporto (più in là comparvero sistemi embedded basati sullo Z80, che in genere utilizzano memorie statiche, che non necessitano di questo refresh).

Il progetto originale in logica NMOS vide il limite massimo della frequenza del clock crescere progressivamente dai 2,5 MHz iniziali fino ai ben noti 4 MHz dello Z80A, 6 MHz dello Z80B e 8 MHz dello Z80H[13][14]. Ne fu realizzata anche una versione CMOS[15] con un intervallo di frequenze che vanno dai 4 MHz fino ai 20 MHz delle versioni vendute attualmente[16]. La versione CMOS permetteva, inoltre, una modalità d'attesa a basso consumo energetico in cui lo stato interno veniva mantenuto (non esisteva un limite "minimo" di frequenza)[17]. I chip derivati compatibili con lo Z80, l'HD64180/Z180[18][19] e eZ80 sono dichiarati capaci di 33 e 50 MHz, rispettivamente.

Descrizione tecnica[modifica | modifica wikitesto]

Modello di programmazione e gestione dei registri[modifica | modifica wikitesto]

Il modello di programmazione e la gestione dei registri sono convenzionzli e simili a quelli della famiglia x86. I registri AF, BC, DE e HL, compatibili con quelli dell'Intel 8080, sono duplicati nello Z80 in 2 banchi separati[20] con il processore che può velocemente passare da un banco all'altro[21], una caratteristica utile per velocizzare la risposta agli interrupt ad alta priorità e livello singolo. Questa caratteristica era presente nel Datapoint 2200 ma non era invece implementata nell'Intel 8008. Il sistema dei registri doppi aveva un senso sullo Z80 (e su altri microprocessori dell'epoca) perché esso stato progettato anche per i sistemi embedded, non solo per i personal computer o per gli ancora da venire home computer[22]. I doppi registri risultarono molto utili per la codifica assembly altamente ottimizzata: alcuni software, specialmente i giochi per i sistemi MSX, gli Sinclair ZX Spectrum ed altri computer basati sullo Z80, portarono l'ottimizzazione dell'assembly dello Z80 a livelli estremi, impiegando, tra le altre cose, proprio i registri duplicati.

Architettura dello Z80
Registri[23]

Come sull'8080, i registri ad 8 bit sono di solito accoppiati per ottenerne delle versioni a 16 bit. I registri compatibili con quelli dell'8080 sono:

  • AF - (8 bit) accumulatore (A) e bit di flag (F) per resto, zero, meno, parità/overflow, semi-riporto (usato per codifica decimale), ed un flag Aggiungi/Sottrai (normalmente chiamato N), anch'esso per la codifica decimale;
  • BC - (16 bit) registro dati/indirizzo oppure 2 registri ad 8 bit;
  • DE - (16 bit) registro dati/indirizzo oppure 2 registri ad 8 bit;
  • HL - (16 bit) registro accumulatore/indirizzo oppure 2 registri ad 8 bit;
  • SP - (16 bit) stack pointer
  • PC - (16 bit) program counter

I nuovi registri introdotti dallo Z80 sono:

  • IX - (16 bit) registro indice o di base per offset ad 8 bit immediati
  • IY - (16 bit) registro indice o di base oer offeset ad 8 bit immediati
  • I - (8 bit) registro base per gli interrupt vettoriali
  • R - (8 bit) contatore per refresh della DRAM (il bit più significativo non conta)
  • AF' - accumulatore alternativo (od "ombra") e flags (attivati e disattivati con EX AF,AF' )
  • BC', DE' e HL' - registri alternativi (od "ombra") (attivati o disattivati con EXX)
  • 4 bit per lo stato degli interrupt e le modalità degli interrupt

Non c'è la possibilità di accedere direttamente ai registri alternativi: esistono per questo compito 2 istruzioni speciali, EX AF,AF' e EXX[23], ognuna delle quali modifica 1 di 2 multiplatori flip-flop. Questo permette passaggi veloci di contesto per le routine di servizio degli interrupt: EX AF, AF' può essere utilizzata da sola (per routine di interrupt molto semplici e veloci) o in abbinamento a EXX per invertire l'intero gruppo di registri AF, BC, DE e HL, un modo di operare molto più veloce di quello basato sull'inserimento degli stessi registri nello stack (interrupt con più livelli o interrupt lenti e con bassa priorità normalmente utilizzano lo stack per memorizzare il valore dei registri).

Il registro di refresh, R, viene incrementato[24] ogni volta che la CPU esegue un opcode (o un prefisso opcode) e non ha pertanto una relazione semplice con l'esecuzione del programma. Questo modo di operare era spesso usato per generare numeri pseudo-casuali nei giochi ma anche in schemi di protezione software. Era anche utilizzato come contatore "hardware" in alcuni sistemi: un famoso esempio di questo utilizzo è lo ZX81, che permette di tener traccia delle posizioni dei caratteri sullo schermo TV innescando un interrupt al verificarsi della reinizializzazione (collegando l'interrupt ad A6).

Il registro vettoriale di interrupt, I, è usato per gli interrupt dello Z80 specificati con modalità 2 (selezionata dall'istruzione IM 2). Esso fornisce l'indirizzo di base per la tabella a 128 voci degli indirizzi degli interrupt di servizio che sono selezionati tramite un puntatore inviato alla CPU durante un ciclo di riconoscimento degli interrupt[9]. Il puntatore identifica un particolare chip di periferica e/o una funzione di periferica o quant'altro, dove i chip sono normalmente connessi a cascata per la risoluzione della priorità. Come per quello di refresh, questo registro è stato talvolta utilizzato in maniera creativa.

Il linguaggio assembly dello Z80[modifica | modifica wikitesto]

Una retrospettiva - Il Datapoint 2200 e l'Intel 8008[modifica | modifica wikitesto]

Il linguaggio assembly del primo Intel 8008 era basato su una sintassi molto semplice (ma schematica) derivata dall'architettura del Datapoint 2200: questa sintassi fu poi trasformata in un nuovo e particolare, anche se in qualche modo più tradizionale, linguaggio assembly dedicato all'anch'esso particolare chip 8008. Il nuovo linguaggio assembly fu poi esteso, quasi nello stesso periodo, per adattarsi alle aggiunte possibilità di indirizzamento offerte dal più evoluto chip Intel 8080 (l'8008 e l'8080 condividevano un linguaggio senza che fossero compatibili a livello di codice binario; l'8008 era, invece, compatibile a livello binario con il Datapoint 2200).

In questo processo di trasformazione, l'abbreviazione mnemonica L, che stava per LOAD, fu sostituita dalle parole LOAD, STORE e MOVE, a cui erano aggiunte altre lettere simboliche. La lettera M, per Memory (referenziata da HL), fu trasformata da abbreviazione mnemonica a operando indipendente sintatticamente, mentre i registri e le combinazioni di registri furono indicati in maniera molto inconsistente, sia abbreviando gli operandi (MVI D, LXI H ecc.) sia usando le stesse forme mnemoniche delle istruzioni (LDA, LHLD etc.) sia usando entrambi gli schemi contemporaneamente (LDAX B, STAX D etc.).

Datapoint 2200

& i8008

i8080 Z80 i8086/i8088
ca. -1973 ca. 1974 1976 1978
LBC MOV B,C LD B,C MOV BL,CL
-- LDAX B LD A,(BC) MOV AL,[BX]
LAM MOV A,M LD A,(HL) MOV AL,[BP]
LBM MOV B,M LD B,(HL) MOV BL,[BP]
-- STAX D LD (DE),A MOV [DX],AL
LMA MOV M,A LD (HL),A MOV [BP],AL
LMC MOV M,C LD (HL),C MOV [BP],CL
LDI 56 MVI D,56 LD D,56 MOV DL,56
LMI 56 MVI M,56 LD (HL),56 MOV byte ptr [BP],56
-- LDA 1234 LD A,(1234) MOV AL,[1234]
-- STA 1234 LD (1234),A MOV [1234],AL
-- -- LD B,(IX+56) MOV BL,[SI+56]
-- -- LD (IX+56),C MOV [SI+56],CL
-- -- LD (IY+56),78 MOV byte ptr [DI+56],78
-- LXI B,1234 LD BC,1234 MOV BX,1234
-- LXI H,1234 LD HL,1234 MOV BP,1234
-- SHLD 1234 LD (1234),HL MOV [1234],BP
-- LHLD 1234 LD HL,(1234) MOV BP,[1234]
-- -- LD BC,(1234) MOV BX,[1234]
-- -- LD IX,(1234) MOV SI,[1234]

Illustrazione di 4 sintassi che usano esempi di istruzioni di LOAD e STORE equivalenti o (per l'8086) molto simili[25].

La nuova sintassi[modifica | modifica wikitesto]

Intel dichiarò che i codici mnemonici del suo assembly erano brevettati. Fu perciò sviluppata una nuova sintassi, questa volta con un approccio più semantico:

  • tutti i registri e le coppie di registri venivano indicati esplicitamente con i loro nomi interi;
  • le parentesi tonde "()" venivano utilizzate coerentemente per indicare "contenuto di memoria a" (puntatore non referenziato) con l'eccezione di alcune istruzioni di salto[26].
  • Tutte le istruzioni "load" e "store" usavano lo stesso codice mnemonico, LD per LOAD (un ritorno al vocabolario semplicistico del Datapoint 2200); altre istruzioni di uso comune, come ADD, INC ecc., usavano lo stesso codice mnemonico, indipendentemente dal modo di indirizzamento o dalla dimensione dell'operando (ciò era possibile perché gli stessi operandi contenevano in sé abbastanza informazioni).

Queste linee guida rese semplice il compito di trovare i nomi e la sintassi di tutte le nuove istruzioni dello Z80, così come il riaddattamento delle vecchie, ad esempio "LD BC,(1234)" espresso più sopra.

Dalla tabella si nota anche l'interessante somiglianza tra la sintassi dello Z80 e quella dell'Intel 8086. A parte la differenza di nomenclatura, ed a dispetto di una certa discrepanza nella struttura base dei registri, le due sintassi sono virtualmente isomorfe per una larga porzione di istruzioni. Non è, però, certo se questa somiglianza sia dovuta alle comuni influenze avute su entrambi i gruppi di progettazione dalle CPU ante Intel 8080, come il PDP-11, alla natura competitiva della relazione fra i due progetti o ad una questione di scelte[27][28][29].

Istruzioni e codifica[modifica | modifica wikitesto]

Lo Z80 utilizza 252 dei 256 codici disponibili come singoli byte opcode ("root instructions", "istruzioni base"); i 4 codici rimanenti sono utilizzati estesamente come prefissi opcode[30]: CB e ED abilitano delle istruzioni aggiuntive, e DD e FD selezionano rispettivamente IX+d e IY+d (in alcuni casi senza utilizzare d) al posto di HL. Questo schema dà allo Z80 un elevato numero di permutazioni di istruzioni e registri; ZiLOG le inquadrò in 158 differenti "tipi di istruzioni", 78 delle quali sono le stesse di quelle dell'8080[30] (permettendo l'esecuzione dei programmi 8080 sullo Z80). La documentazione di ZiLOG raggruppa inoltre le istruzioni nelle seguenti categorie:

  • operazioni aritmetiche e logiche ad 8 bit;
  • operazioni aritmetiche a 16 bit;
  • operazioni di caricamento ad 8 bit;
  • operazioni di caricamento a 16 bit;
  • operazioni sui bit (inserimento di valore 1, 0 o di test);
  • operazioni di chiamata, ritorno e ripartenza;
  • operazioni di scambio, trasferimento e ricerca dei blocchi;
  • operazioni di controllo CPU e aritmetica semplice;
  • operazioni di gestione dell'input/output;
  • operazioni di salto;
  • operazioni di rotazione e scorrimento dei bit;

Nessuna istruzione di moltiplicazione è disponibile nell'originale Z80[31]. Le differenti dimensioni e le varianti delle operazioni di addizione, spostamento e rotazione dei bit avevano anche differenti effetti sui flag a causa delle proprietà di influenza sui flag copiate dall'8080. Le istruzioni di caricamento non influenzavano i flag (tranne nei casi di caricamento negli speciali registri I e R). Le istruzioni sui registri indice erano utili per ridurre la dimensione del codice e, anche se alcune di esse non erano molto più veloci delle "equivalenti" sequenze composte dalle semplici operazioni, esse permettevano di ridurre indirettamente il tempo di esecuzione diminuendo la necessità di salvare e ripristrinare i registri[32]. Similarmente, le istruzioni per le addizioni a 16 bit non erano particolarmente veloci nell'originale Z80 (11 cicli); comunque, esse erano circa il doppio più veloci se paragonate alle operazioni ad 8 bit alle prese con gli stessi calcoli e, cosa ugualmente importante, esse riducevano l'utilizzo dei registri.

Istruzioni non documentate[modifica | modifica wikitesto]

I registri indice IX e IY erano stati pensati come flessibili puntatori a 16 bit, per migliorare l'abilità di manipolare la memoria, le strutture di dati e gli stack. Ufficialmente essi erano gestiti solo come registri solo a 16 bit ma, in realtà, essi erano implementati come una coppia di registri ad 8 bit[33] alla stessa maniera del registro HL, che era accessibile sia integralmente a 16 bit sia nei suoi come singoli registri ad 8 bit "High" e "Low". Ugualmente i codici opcodeEven (linguaggio macchina) erano identici ma preceduti da un nuovo prefisso opcode[34].

ZiLOG pubblicò gli opcode ed i relativi codici mnemonici per le funzioni illustrate ma non documentò il fatto che ogni opcode che permetteva la manipolazione dei registri H e L era ugualmente valido per le porzioni ad 8 bit dei registri IX e IY. Un esempio è l'opcode 26h seguito immediatamente da un byte (LD H,n), che caricherà quel valore nel registro H. Precedendo questa istruzione a 2 byte con il prefisso opcode per il registro IX si avrà il caricamento di quel valore negli 8 bit più significativi del registro IX. Una importante eccezione a questo modo di operare è data dalle istruzioni simili a LD H,(IX+d) che fanno uso sia del registro HL sia di IX, o di IY, nella stessa istruzione[34]: in questo caso il prefisso DD si applica solo alla porzione (IX+d) dell'istruzione.

Ovviamente ci sono diverse altre istruzioni non documentate[35].

Esecuzione delle istruzioni[modifica | modifica wikitesto]

Ogni istruzione è eseguita in passaggi che sono di solito indicati come cicli macchina (o M-cycles), dall'inglese "machine cycles"), ognuno dei quali può richiedere da 3 a 6 cicli clock (o T-states o T-cycles)[36]. Ogni M-cycle corrisponde approssimativamente ad un accesso alla memoria e/o ad un'operazione interna. Molte istruzione terminano effettivamente durante il ciclo M1 dell'istruzione successiva, condizione nota come fetch/execute overlap.

Esempi di istruzioni tipiche (R=lettura, W=scrittura)

M-cycle
totali
istruzione M1 M2 M3 M4 M5 M6
1[37] INC BC opcode
2[38] ADD A,n opcode n
3[39] ADD HL,DE opcode internal internal
4[40] SET b,(HL) prefix opcode R(HL), set W(HL)
5[41] LD (IX+d),n prefix opcode d n,add W(IX+d)
6[42] INC (IY+d) prefix opcode d add R(IY+d),inc W(IY+d)

I cicli macchina dello Z80 sono gestiti da una macchina a stati finiti interna che costruisce ogni M-cycle a partire da 3, 4, 5 o 6 T-cycle, a seconda del contesto. Questo meccanismo evita di dover usare un'ingombrante logica asincrona e fa sì che i segnali di controllo si comportino in modo coerente all'interno di una vasta gamma di frequenze di clock. Naturalmente, ciò significa anche che va usato un clock con una frequenza superiore rispetto a quello che si userebbe nella situazione in cui questa suddivisione dei cicli macchina non esistesse (approssimativamente 2-3 volte superiore).

Questo non implica, però, la necessità di usare una memoria con dei tempi di accesso migliori perché un clock con una risoluzione più elevata permette un controllo più preciso dei timing della memoria e la stessa può essere attiva in parallelo con la CPU per un margine più ampio (cioè registra meno idle), permettendo un uso più efficiente delle sue prestazioni. Parlando di esecuzione delle istruzioni, lo Z80 combina 2 cicli di clock completi in un lungo periodo di accesso alla memoria (il segnale M1) che generalmente dura solo una frazione di un (più lungo) ciclo di clock, in una specie di design più asincrono (tipo il Motorola 6800 o altre CPU simili).

La memoria, soprattutto quella di tipo EPROM ma anche di le Flash, erano di solito troppo lente se paragonate ai sotto-cicli della macchine a stato finito (i cicli di clock) usate nei processori contemporanei. Il ciclo macchina più breve che poteva essere usato nei progetti embedded era spesso limitato dai tempi di accesso della memoria, non dalla massima frequenza della CPU (specialmente durante l'era degli home computer). Questa relazione, però, è cambiata leggermente durante le ultime decadi, particolarmente per quanto riguarda le SRAM; senza cache, i disegni a ciclo singolo come l'eZ80 sono pertanto divenuti recentemente molto più significativi.

Periferiche compatibili[modifica | modifica wikitesto]

ZiLOG introdusse un certo numero di periferiche per lo Z80 che supportavano tutte il sistema di gestione degli interrupt e lo spazio di indirizzi I/O della CPU. Queste includevano il CTC, Counter-Timer-Circuit, il SIO, Serial Input Output, il DMA Direct Memory Access, il PIO, Parallel Input-Output, ed il DART, Dual Asynchronous Receiver Transmitter. Col tempo, di questi chip furono offerte anche versioni in tecnologia CMOS, che offrivano un consumo energetico più basso unito ad una velocità superiore.

Come i processori Intel 8085 e 8086, ma non come i processori Motorola 6800 e MOS 6502, lo Zilog Z80 e l'Intel 8080 avevano per le istruzioni che riguardavano l'I/O una linea di controllo ed uno spazio d'indirizzi separati. Nonostante alcuni computer basati sullo Z80, come l'Osborne 1, utilizzassero dei dispositivi di I/O mappati su memoria, in genere lo spazio I/O era utilizzato per indirizzare uno dei molti chip periferici di Zilog compatibili con lo Z80: i chip di I/O di Zilog supportavano gli interrupt in modo 2 dello Z80 (vedi sopra), che semplificava la gestione degli stessi per un gran numero di periferiche.

Indirizzamento I/O a 16 bit 'non documentato'[modifica | modifica wikitesto]

Lo Z80 veniva indicato ufficialmente come capace di supportare l'indirizzamento della memoria a 16 bit (max. 64 KB), e l'indirizzamento I/O ad 8 bit (max. 256 porte). Ma leggendo attentamente il manuale hardware di riferimento si poteva notare come tutte le istruzioni di I/O potessero gestire l'intero bus indirizzi a 16 bit: OUT (C),reg e IN reg,(C) inseriscono l'intero contenuto del registro BC nel bus indirizzi[43]; OUT (n),A e IN A,(n) inseriscono il contenuto del registro A nei bit b8-b15 del bus indirizizzi e di n nei bit b0-b7 del bus indirizzi. Un progettista poteva scegliere se decodificare l'intero bus indirizzi a 16 bit sulle operazioni di I/O, così da avvantaggiarsi di questa caratteristica, oppure usare i bit più alti del bus indirizzi (b8-b15) per selezionare delle sotto-caratteristiche del dispositivo di I/O. Questa peculiarità è stata usata anche per minimizzare i requisiti hardware di decodifica, come negli Amstrad CPC e nello ZX81.

Copie su licenza, cloni e derivati[modifica | modifica wikitesto]

Cloni[modifica | modifica wikitesto]

Il NEC µPD780C, un clone dello Z80
Lo Sharp LH0080, un clone dello Z80
Il T34BM1, un clone russo dello Z80
Il Toshiba TMPZ84C015, uno Z80 standard con diverse periferiche della famiglia Z80 integrate in un unico chip, in formato QFP
L'Hitachi HD64180, compatibile con lo Z80
Lo Z180 in formato PLCC
L'R800, compatibile con lo Z80, in formato QFP.
Lo Z280 in formato PLCC

Il Mostek MK3880 e l'SGS-Thomson Z8400 (ora STMicroelectronics) erano entrambi copie ufficiali dello Z80. Sharp e NEC svilupparono dei cloni in tecnologia NMOS, l'LH0080 ed il NEC µPD780C rispettivamente. Toshiba ne realizzò una versione CMOS, il TMPZ84C00, che è ritenuto essere lo stesso processore dello Zilog Z84C00, anch'esso in CMOS. Ci furono anche chip Z80 realizzati da GoldStar (poi LG), così come la serie BU18400 dei cloni Z80 (inclusi i chip DMA, PIO, CTC, DART e SIO) in tecnologia NMOS e CMOS realizzati da ROHM Electronics.

Nella Germania dell'Est comparve un clone senza licenza dello Z80 noto come U880: fu molto popolare ed utilizzato nei computer realizzati da VEB Robotron e VEB Mikroelektronik Mühlhausen, come la serie KC85, ma anche per computer auto-assemblati come il COMP JU+TER. In Romania era diffuso un altro clone senza licenza, l'MMN80CPU di Microelectronica, utilizzato negli home computer quali il TIM-S, l'HC ed il COBRA.

Diversi cloni dello Z80 furono realizzati anche nell'Unione Sovietica. Uno di questi era il T34BM1, chiamato anche КP1858ВМ1 (realizzato parallelamente al clone russo dell'8080, il KR580VM80A): il primo doveva essere usato nelle serie di pre-produzione mentre il secondo doveva essere utilizzato per le produzioni in larga scala anche se, a causa del collasso dell'industria microelettronica sovietica di fine anni '80, esistono più T34BM1 che КP1858ВМ1.

Derivati[modifica | modifica wikitesto]

Compatibili con lo Z80 originale
  • Hitachi sviluppò l'HD64180, un microcodificato e parzialmente dinamico Z80 in CMOS, con le periferiche montate su chip ed una semplice MMU che gestiva uno spazio indirizzi di 1 MB. Questo chip fu poi realizzato anche da Zilog, inizialmente come Z64180 e poi come Z180[44] che ha il protocollo del bus ed i timing adattati meglio ai chip periferici dello Z80. Zilog ha continuato a produrre lo Z180 ed a migliorarlo: le nuove versioni si chiamavano S180/L180, ed avevano core pienamente statici, con bassi consumi energetici e ridotte interferente elettromagnetiche (EMI, elimination of electromagnetic interference)
  • Toshiba sviluppò le serie di controller intelligenti Z84013/Z84C13, ad 84 pin, e Z84015/Z84C15, a 100 pin, in pratica dei core Z80 con le sue periferiche in tecnologia NMOS e CMOS, con un temporizzatore di supervisione, funzione di POR ("Power-On-Reset") e generatore di stati d'attesa, tutto sullo stesso chip. Essi furono fabbricati anche da Sharp. Questi processori sono oggi assemblati anche da Zilog[45].
  • Lo Zilog Z380, un chip a 32 bit compatibile con lo Z80, introdotto nel 1994, è sopravvissuto durante questi anni, anche se non ha mai vissuto un vero momento di gloria; è usato principalmente nei dispositivi per le telecomunicazioni.
  • Lo Zilog eZ80, pienamente compatibile con lo Z80[46] con word di 8/16/24/32 bit ed uno spazio indirizzi lineare di 16 MB; è stato introdotto nel 2001. Esiste in diverse versioni, con SRAM o memoria flash integrata, così come con le periferiche montate su chip. Una variante integra su chip un MAC ed il software a corredo include uno stack IP. A differenza dello Z800 e dello Z280, presenta solo qualche istruzione aggiuntiva (di cui le principali riguardano i metodi di indirizzamento e quelle per caricare i registri in memoria, con indirizzo variabile a 16/24 bit): la vera innovazione risiede nel fatto che le istruzioni sono eseguite da 2 ad 11 volte più velocemente rispetto allo Z80 (con un valore medio di 3-5 volte). E' certificato per frequenze di clock fino a 50 MHz.
  • Kawasaki produsse il KL5C8400, compatibile a livello binario con lo Z80, di cui risulta mediamente 1,2-1,3 volte più veloce dello Z80 e può operare con clock fino a 33 MHz. Kawasaki produsse anche la famiglia KL5C80A1x, con le perifieriche ed una piccola memoria RAM integrata nel chip: è efficiente approssimativamente quanto l'eZ80 e può operare fino a 10 MHz(2006)[47]
  • Alcune famiglie di processori multimediali del costruttore cinese Actions Semiconductor, come l'ATJ2085 ed altri chip, contengono una MCU compatibile con lo Z80 insieme ad un processore DSP dedicato a 24 bit[48]. Questi chip sono utilizzati in molti lettori MP3 e multimediali.
Non compatibili
  • La serie di microcontrollori Toshiba TLCS-900 (principalmente PROM) sono basati sullo Z80, condividendo con questo la struttura base dei registri suddivisi in BC, DE, HL, IX, IY e gran parte delle stesse istruzioni, ma non sono compatibili a livello binario, cose che era invece la precedente famiglia TLCS 90[49].
  • La serie di microcontrollori NEC 78K è basata sullo Z80: essi condividono la stessa struttura base dei registri BC, DE, HL ed una istruzioni simili (ma con nomi diversi). Non sono compatibili a livello binario con lo Z80.
Parzialmente compatibili

Non più in produzione:

  • Lo Z800 prodotto da ASCII Corporation fu un veloce processore a 16 bit utilizzato nei computer MSX Turbo R: era compatibile con lo Z80 a livello software ma non a livello hardware (i timing dei segnali, la disposizione ed i segnali dei pin differivano dallo Z80).
  • Gli sfortunati Z800 in tecnologia NMOS e lo Z280 in tecnologia CMOS furono implementazioni dello Z80, più veloci di questo (prima dell'arrivo dell'HD64180/Z180), con una MMU capace di gestire uno spazio indirizzi di 16 MB; essi aggiungevano molte variazioni e modalità di indirizzamento al set di istruzioni originali dello Z80. Non riuscirono ad imporsi a causa della loro eccessiva complessità e perché erano stati progetti più per l'uso nei mini-computer che nei sistemi embedded[52]. Per contro lo Z80 in versione CMOS era rimasto popolare, a fianco delle famiglie compatibili Z180 ed eZ80.

Versioni FPGA e ASIC[modifica | modifica wikitesto]

L'Evatronix CZ80CPU è un core per CPU equivalente allo Z80[53] disponibile come codice sorgente Verilog o VHDL per i diffusi ASIC o come sorgente EDIF di netlist per i FPGA da Actel, Altera, Lattice o Xilinx.

Versioni libere sono il T80 ed il TV80, disponibili come sorgenti VHDL e Verilog sotto una licenza in stile BSD[54][55][56]. La versione in VHDL, una volta sintetizzata, può essere impostata fino a 35 MHz su un FPGA Spartan II di Xilinx. Per produzioni in grandi volumi è comunque più conveniente utilizzare una soluzione tradizionale (o ASIC) piuttosto che un FPGA.

Emulazione software[modifica | modifica wikitesto]

Gli emulatori software degli Z80 girano oggi sui modermi PC molto più velocemente di quanto facesse la CPU Z80 originale: essi sono utilizzati per simulare gli home computer basati sullo Z80 (come l'Amstrad CPC, l'MSX ed il Sinclair ZX Spectrum) ma anche negli emulatori di videogiochi (come il MAME) per eseguire i vecchi arcade. Il SIMH emula il computer MITS Altair 8800 con l'Intel 8080, lo Zilog Z80 o l'Intel 8086 come processore.

Usi[modifica | modifica wikitesto]

Nei computer desktop[modifica | modifica wikitesto]

Durante la fine degli anni '70 e i primi anni '80 lo Z80 fu utilizzato in un gran numero di macchine da ufficio basate sul sistema operativo CP/M, un binomio che dominò il mercato di quel tempo[57][58].

Due esempi ben noti di macchine da ufficio basate sul binomio Z80+CP/M furono il portatile Osborne 1 e la serie Kaypro. Research Machines realizzò i microcomputer 380Z e 480Z nel 1981: essi erano dotati di collegamento Ethernet tipo LAN e CP/NET. Altri costruttori di tali sistemi furono Televideo, Xerox (serie 820) ed un gran numero di altre società sconosciute. Alcuni sistemi utilizzavano un multitasking software per distribuire un processo fra diversi utenti.

Il Commodore 128 integrava un processore Z80 a fianco del MOS 8502 grazie al quale poteva entrare in una modalità particolare compatibile con il CP/M[59]. Altri computer basati sul MOS 6502 in vendita a quel tempo, come il BBC Micro e l'Apple II[60], o basati sul MOS 6510, come il Commodore 64,[61] potevano usare lo Z80 con un'unità esterna, una scheda aggiuntiva o una cartuccia di espansione. La Z-80 SoftCard di Microsoft per l'Apple II era una scheda aggiuntiva particolarmente diffusa ed uno dei pochi prodotti hardware realizzati da Microsoft a quel tempo.

Acer, all'epoca Multitech, introdusse il Microprofessor I nel 1981, un semplice ed economico dispositivo per l'apprendimento del linguaggio macchina dello Z80. Attualmente è ancora prodotto e venduto da Flite Electronics International Limited, con sede a Southampton, Inghilterra.

Nei sistemi embedded e nell'elettronica di consumo[modifica | modifica wikitesto]

Il PABX, basato sullo Z80. La CPU è nella parte sinistra, accanto al chip con l'etichetta sopra

Lo Zilog Z80 è stato a lungo un microprocessore molto diffuso nei sistemi embedded] e nei microcontroller[23] dove continua ad essere largamente utilizzato anche ai giorni nostri[11][62]. Di seguito sono illustrati alcuni usi dello Z80, inclusi i prodotti dell'elettronica di consumo.

Utilizzo industriale/professionale[modifica | modifica wikitesto]

Elettronica di consumo[modifica | modifica wikitesto]

Strumenti musicali ed altro[modifica | modifica wikitesto]

  • Alcuni sequencer MIDI come l'E-mu 4060 Polyphonic Keyboard and Sequencer, lo Zyklus MPS ed il Roland MSQ700, erano costruiti intorno allo Z80.
  • Anche alcuni controller e commutatori MIDI, come il Waldorf Midi-Bay MB-15, usavano lo Z80.
  • Alcuni sintetizzatori analogici polifonici integravano lo Z80 come scanner della tastiera (ma anche per gestire le manopole delle impostazioni, i display ed altro) e nei convertitori D/A o nei controlli PWM dei livelli analogici; nei sistemi più recenti è stato usato alle volte per gestire le comunicazioni tra i dispositivi MIDI. Lo Z80 è stato spesso utilizzato anche per generare il suono, implementanto un oscillatore a bassa frequenza o un sintetizzatore. Esempi sono:
    • i sintetizzatori Prophet 5, Prophet 10[76], Prophet 600, Six-Trak, Multitrak, MAX e Split-8 di Sequential Circuits;
    • il sintetizzatore a 6 voci MemoryMoog[77]
    • il sintetizzatore ad 8 voci Oberheim OB-8 con MIDI
    • il sintetizzatore ad 8 voci Roland Jupiter-8;
  • Sintetizzatori/campionatori digitali come l'Emulator I, l'Emulator II ed il campionatore a 12 bit Akai S700;
  • drum machine come l'E-mu SP-12, l'E-mu SP-1200, l'E-mu Drumulator ed il Drumtraks di Sequential Circuits usavano i processori Z80.
  • Molti riverberatori digitali della Lexicon (PCM70, LXP15, LXP1, MPX100) usavano uno o più Z80 per l'interfaccia utente e l'oscilloscopio a bassa frequenza; le funzioni sul segnale digitale erano poi eseguite da hardware dedicato.
  • Il premaplificatore per chitarra con controller MIDI a valvole ADA MP-1 usava lo Z80.

Voci correlate[modifica | modifica wikitesto]

Letture di approfondimento[modifica | modifica wikitesto]

Manuali per Z80 CPU con le referenze di programmazione di 3 aziende.

Articoli sull'architettura dello Z80[modifica | modifica wikitesto]

Impieghi educativi[modifica | modifica wikitesto]

Applicazioni scientifiche[modifica | modifica wikitesto]

Bibliografia[modifica | modifica wikitesto]

  • Zilog Components Data Book, Zilog, 1985.
  • Zilog Z-80 Data Book (PDF), Zilog, 1978. URL consultato il 20/07/2009.
  • Alexander John Anderson, Foundations of Computer Technology, 1a ediz., CRC Press, 08/09/1994, ISBN 0-412-59810-8.
  • Steve Ciarcia, Build your own Z80 computer: design guidelines and application notes, Circuit Cellar, ottobre 1981, ISBN 0-07-010962-1.

Collegamenti esterni[modifica | modifica wikitesto]

Note[modifica | modifica wikitesto]

  1. ^ Eastern Bloc Z80, su cpu-collection.de. URL consultato il 21 agosto 2010.The 880 series of East German processors are clones of Zilog Z80 processors. The U880 and UB880 are Z80 clones, the UA880 is a Z80 A equivalent and the VB880 is a Z80 version with enhanced temperature range (-25° to +85° C) for industrial and military purposes. They were produced by in the 1980s. (trad.: La serie 880 dei processori prodotti nella Germania dell'Est sono cloni dei processori Zilog Z80. L'U880 e l'UB880 sono cloni dello Z80, l'UA880 è un equivalente dello Z80 A ed il VB880 è una versione dello Z80 con un intervallo operativo di temperature allargato (da -25° a +85°C) destinato ad utilizzi militari ed industriali. Furono prodotti da Funkwerk Erfurt (FWE), poi rinominata in VEB Mikroelektronik "Karl Marx", con sede nella città di Erfurt (MME).)
  2. ^ Z80 class ICs, su cpu-collection.de. URL consultato il 21 agosto 2010.It [the Z80] was widely used both in desktop and embedded computer designs as well as for defense purposes, and is one of the most popular CPUs of all time. (trad.: Lo Z80 fu largamente utilizzao sia sui sistemi embedded sia nella progettazione dei computer così come per impieghi militari, ed è una delle CPU più popolari di tutti i tempi.).
  3. ^ What does the word 8 bit processor mean?, su wiki.answers.com, Answers.com. URL consultato il 21 agosto 2010.The Z80 and the MOS Technology 6502 8-bit CPUs were widely used in home computers and game consoles of the 70s and 80s. (trad.: Le CPU ad 8 bit Z80 e MOS Technology 6502 furono ampiamente utilizzate nei computer e nelle console gioco degli anni '70 ed '80.).
  4. ^ a b Anderson, 1994 (pag. 51)
  5. ^ a b Gerald W. Brock, The second information revolution, Harvard University Press, 2003, ISBN 978-0-674-01178-6, ..
  6. ^ History of the 8-bit: travelling far in a short time, in InfoWorld, InfoWorld Media Group, 29 novembre 1982, p. 58, ISSN 0199-6649 (WC · ACNP).
  7. ^ Mathur, Introduction to Microprocessors, p. 111, ISBN 978-0-07-460222-5, ..The register architecture of the Z80 is more innovative than that of the 8085 (trad.: L'architettura dei registri dello Z80 è più innovativa rispetto a quella dell'8085.).
  8. ^ Ciarcia (1981), pagg. 31,32
  9. ^ a b Wai-Kai Chen, The circuits and filters handbook, CRC Press, 2002, p. 1943, ISBN 978-0-8493-0912-0, ..(...) interrupt processing commences according to the interrupt method stipulated by the IM i, i=0, 1, or 2, instruction. If i=1, for direct method, the PC (...) is loaded with 0038H. If i=0, for vectored method, (...) the interrupting device has the opportunity to place the op-code for one byte (...). If i=2, for indirect vector method, (...) the interrupting device must then place a byte (...). The Z80 then uses this byte (...) where one of 128 interrupt vectors can be selected by the byte (...). "(trad.: (...)la gestione degli intettupt inizia secondo il metodo di interrupt impostato dall'istruzione IM i, con i che può assumere i valori di 0, 1 o 2. Se i=1 (modalità diretta), allora PC (...) viene caricato con $0038. Se i=0, metodo vettorizzato, il dispositivo che chiede l'interruzione ha l'opportunità di piazzare l'op-code per 1 byte (...). Se i=2, modalità vettorizzata indiretta, (...) il dispositivo che chiede l'interruzione deve piazzare un byte (...). Lo Z80 usa poi questo byte (...) per selezionare uno fra i 128 vettori di interrupt (...)"
  10. ^ Andre Adrian, Z80, the 8-bit Number Cruncher, su andreadrian.de.
  11. ^ a b c Mark Balch, Digital Fundamentals, in Complete Digital Design: A Comprehensive Guide to Digital Electronics and Computer System Architecture, McGraw-Hill Professional, 18/06/20003, p. 122, ISBN 0-07-140927-0.
  12. ^ The Seybold report on professional computing, Seybold Publications, 1983.In the 8-bit world, the two most popular microcomputers are the Z80 and 6502 computer chips. trad.: Nel mondo degli 8 bit i due microcomputer più popolari sono i chip per computer Z80 e 6502.).
  13. ^ Popular Computing, McGraw-Hill, 1983, p. 15.
  14. ^ John Markoff, Zilog's speedy Z80 soups up 8-bit to 16-bit performance, in InfoWorld, InfoWorld Media Group, 18 ottobre 1982, p. 1.
  15. ^ Margins are great, and most chips actually work well at significantly higher (such as 2x) clock frequencies than specified; memory speed has often been the real (physical) limiting factor up until the last 15 years or so, when cheaper and faster available memory chips changed this relation. (trad.: I margini sono elevati e molti chip possono lavorare bene anche a frequenze di clock molto più elevate (tipo 2x) di quelle specificate; la velocità della memoria è stata in genere il vero fattore (fisico) limitante fino a circa 15 anni fa, quando si sono resi disponibili chip di memoria più economici e veloci, che hanno cambiato questa relazione)
  16. ^ Zilog product specification - Z8400/Z84C00 NMOS/CMOS Z80 CPU Central Processing Unit (PDF), su z80.info. URL consultato il 21 agosto 2010.
  17. ^ Made possible by fully static gate structures. (trad.: reso possibile da una struttura a gate completamente statici
  18. ^ Electronic design, Hayden, 1988, p. 142.In addition to supporting the entire Z80 instruction set, the Z180... (trad.: oltre a supportare l'intero set di istruzione dello Z80, lo Z180...
  19. ^ Jack G. Ganssle, The Z80 Lives!, su z80.info, 1992.The designers picked an architecture compatible with the Z80, giving Z80 users a completely software compatible upgrade path. (...) The 64180 processor runs every Z80 instruction exactly as a Z80 does (trad.: Gli sviluppatori crearono un'architettura compatibile con lo Z80, dando agli utenti dello Z80 un prodotto compatibile al 100% con lo Z80 a livello di software. (...) Il processore 64180 esegue ogni istruzione dello Z80 esattamente come farebbe uno Z80.}}
  20. ^ Kilobaud, 1001001, 1977, p. 22.
  21. ^ Rodnay Zaks, Programming the Z80 (3rd edition), SYBEX, 1982, p. 62, ISBN 978-0-89588-069-7.
  22. ^ According to one of the designers, Masatoshi Shima, the market focus was on high performance printers, high-end cash registers, and intelligent terminals. (trad.: Stanto ad uno dei progettisti, Masatoshi Shima, il target di mercato erano le stampanti ad alte prestazioni, i registratori di cassa di fascia alta, i terminali intelligenti).
  23. ^ a b c Steve Heath., Embedded systems design, Newnes, 2003, p. 21, ISBN 978-0-7506-5546-0, ..
  24. ^ While R is an 8-bit register, it wraps around at 128 instead of 256. If the programmer stores a value in the register, its high bit will be preserved regardless of what the CPU does to the remaining seven bits. Incorrect implementation of this behaviour is a common source of problems when running games on emulated Z80-machines (trad.: Nonostante R sia un registro ad 8 bit, esso viene reinizializzato a 128 invece che a 256. Se il programmatore memorizza in valore nel registro, il suo bit più significativo verrà conservato indipendentemente da che cosa la CPU farà degli altri 7 bit. Un'implementazione non corretta di questo modo di operare del registro creare spesso problemi durante l'esecuzione di giochi o negli emulatori dello Z80).
  25. ^ Frank Durda IV, 8080/Z80 Instruction Set, su nemesis.lonestar.org.
  26. ^ "Jump (JP) instructions, which load the program counter with a new instruction address, do not themselves access memory. Absolute and relative forms of the jump reflect this by omitting the round brackets from their operands. Register based jump instructions such as "JP (HL)" include round brackets in an apparent deviation from this convention. (trad.: Le istruzioni di salto "Jump" (JP) , che caricano nel contatore del programma l'indirizzo dove andare ad eseguire nuove istruzioni, non accedono direttamente alla memoria. Le forme assolute e relative del salto riflettono questo omettendo le parentesi tonde nei loro operandi. Le istruzioni di salto basate sui registri, come ad esempio ""JP (HL)", apparentemente non rispettano questa convenzione ed includono le parentesi tonde.)." Z80 Relocating Macro Assembler User's Guide (PDF), su z80cpu.eu, p. Pag. B-2.
  27. ^ Surprisingly, only quite superficial similarities (such as the word MOV, or the letter X, for extended register) exists between the 8080 and 8086 assembly languages, despite the fact that 8080 programs can be compiled into x86 code (using a special assembler) (trad.: Sorprendentemente, tra i linguaggi assembly dell'8080 e dell'8086 esistono solo alcune similitudini abbastanza superficiali (come la parola MOV, o la lettera X, per i registri estesi), nonostante il fatto che i programmi per l'8080 possono essere compilati in codice x86 (usando uno speciale assembler)
  28. ^ Leo J. Scanlon, 8086/8088/80286 assembly language, Brady Books, 1978, p. 12, ISBN 9780132469197..The 8086 is software-compatible with the 8080 at the assembly-language level. (trad.: L'8086 è compatibile a livello di software a livello di linguaggio assembly)
  29. ^ Ross P. Nelson, The 80386 book: assembly language programmer's guide for the 80386, Microsoft Press, 1988, p. 2, ISBN 9781556151385..An Intel translator program could convert 8080 assembler programs into 8086 assembler programs (trad.: Un programma Intel di traduzione poteva convertire i programmi assembler dell'8080 in programmi assembler per l'8086).)
  30. ^ a b Z80 CPU Introduction, su z80.info, ZiLOG, 1995.It has a language of 252 root instructions and with the reserved 4 bytes as prefixes, accesses an additional 308 instructions. (trad.: E' un linguaggio con 252 istruzioni base e con i restanti byte riservati come prefissi, che accedono a 308 istruzioni addizionali.)
  31. ^ Julio Sanchez, Maria P. Canton, Software solutions for engineers and scientists, CRC Press, p. 65, ISBN 9781420043020.The 8-bit microprocessors that preceded the 80x86 family (such as the Intel 8080, the Zilog Z80, and the Motorola) did not include multiplication (...) (trad.: Nessun microprocessore ad 8 bit antecedente alla famiglia 80x86 (come l'Intel 8080, lo Zilog Z80 ed i Motorola) includeva la moltiplicazione).
  32. ^ The 10-year-newer microcoded Z180 design could initially afford more "chip area", permitting a slightly more efficient implementation (using a wider ALU, among other things), similar things can be said for the Z800, Z280, and Z380. However, it was not until the fully pipelined eZ80 was launched in 2001 that those instructions finally became approximately as cycle-efficient as it is technically possible to make them, i.e. given the Z80 encodings combined with the capability to do an 8-bit read or write every clock cycle. (trad.: Il progetto dello Z180, più giovane di 10 anni, poteva inizialmente fare affidamento su una maggior "superficie del chip", che permetteva una implementazione molto più efficiente (usando, tra le altre cose, una ALU più grande), e lo stesso può dirsi per lo Z800, lo Z280 e lo Z380. Nonostante ciò, non fu che con l'introduzione dello eZ80 (2001), con la sua struttura a pipeline, che l'esecuzione di tali istruzioni non divenne efficiente a livello di cicli come sarebbe potuto sembrare, ad esempio, considerando le codifiche dello Z80 combinate con la capacità di fare una lettura o scrittura ad 8 bit per ogni ciclo di clock.).
  33. ^ Robert A. Froehlich, The free software catalog and directory, Crown Publishers, 1984, p. 133, ISBN 9780517554487..Undocumented Z80 codes allow 8 bit operations with IX and IY registers. (trad.: I codici non documentati dello Z80 permetteono operazioni ad 8 bit con i registri IX e IY).
  34. ^ a b Jacco J. T. Bot, Z80 Undocumented Instructions, in Home of the Z80 CPU.If an opcode works with the registers HL, H or L then if that opcode is preceded by #DD (or #FD) it works on IX, IXH or IXL (or IY, IYH, IYL), with some exceptions. The exceptions are instructions like LD H,IXH and LD L,IYH (...) (trad.: Se un opcode opera con i registri HL, H o L allora se quell'opcode è preceduto da #DD (o #FD esso opera con IX, IXH o IXL (o IY, IYH e IYL), con alcune eccezioni. Le eccezioni sono le istruzioni quali LD, H,IXH e LD, L,IYH(...)).
  35. ^ InfoWorld, vol. 4, n. 24, InfoWorld Media Group, 21/06/1982, p. 23.After the command summary are examples and two pages of undocumented Z80 operation codes. (trad.: dopo il sommario dei comandi ci sono gli esempi e due pagina di codici di operazioni non documentate dello Z80).
  36. ^ ZiLOG, Z80 Family CPU User Manual (PDF), ZiLOG, 2005, p. 11.
  37. ^ Ciarcia (1981), pag. 65
  38. ^ Rodnay Zaks, Programming the Z80, p. 200, ISBN 9780895880697.ADD A, n Add accumulator with immediate data n. (...) MEMORY Timing: 2 M cycles; 7 T states (trad.: ADD A,n Aggiungi all'accumulatore il successivo dato n. (....) MEMORY Timing: 2 M-cycles; 7 T-states).
  39. ^ Ciarcia (1981), pag. 63
  40. ^ Ciarcia (1981), pag. 77
  41. ^ Ciarcia (1981), pag. 63
  42. ^ Ciarcia (1981), pag. 58
  43. ^ Sean Young, z80.info, 1998, http://z80.info/z80undoc3.txt. The I/O instructions use the whole of the address bus, not just the lower 8 bits. So in fact, you can have 65536 I/O ports in a Z80 system (the Spectrum uses this). IN r,(C), OUT (C),r and all the I/O block instructions put the whole of BC on the address bus. IN A,(n) and OUT (n),A put A*256+n on the address bus. (trad.: Le istruzioni di I/O utilizzano l'intero bus indirizzi, non solo gli 8 bit più bassi. Si possono infatti avere 65.536 porte di I/O in un sistema Z80 (lo Spectrum usa questa configurazione). IN r,(C), OUT (C),r e tutte le istruzioni sui blocchi I/O inseriscono l'intero contenuto del registro BC nel bus indirizzi. IN A,(n) e OUT (n),A inseriscono A*256+n nel bus indirizzi)}}
  44. ^ Jack G. Ganssle, z80.info, 1992, http://www.z80.info/z80lives.htm. The 64180 is a Hitachi-supplied Z80 core with numerous on-chip "extras". Zilog's version is the Z180, which is essentially the same part. (trad.: Il 64180 è un core Z80 sviluppato da Hitachi con numerosi "extra" integrati nel chip. La versione di Zilog è lo Z180, che è essenzialmente la stessa cosa.)}}
  45. ^ Jack G. Ganssle, The Z80 Lives!, su z80.info, 1992.Both Toshiba and Zilog sell the 84013 and 84015, which are Z80 cores with conventional Z80 peripherals integrated on-board. (trad.: Sia Toshiba che Zilog vendono l'84013 e l'84015, che sono dei core Z80 con le periferiche convenzionali dello Z80 integrate nel chip.)
  46. ^ EZ80 ACCLAIM Product Family, su zilog.com, ZiLOG.
  47. ^ Electronic Business Asia, Cahners Asia Limited, 1997, p. 5.Kawasaki's KL5C80A12, KL5C80A16 and KL5C8400 are high speed 8-bit MCUs and CPU. Their CPU code, KC80 is compatible with Zilog's Z80 at binary level. [...] KC80 executes instructions about four times faster than Z80 at the same clock rate [...] (trad.: I chip Kawasaki KL5C80A12, KL5C80A16 e KL5C8400 sono MCU e CPU ad 8 bit ad alta velocità. Il codice della loro CPU, KC80, è compatibile a livello binario con quello dello Zilog Z80. (...) Il KC80 esegue le istruzioni circa 4 volte più velocemente dello Z80 alla stessa frequenza di clock (...).)}}
  48. ^ Hardware specs, in S1mp3.org, 2005.
  49. ^ Section 6 MOS MPU, MCU, and Peripherals Market Trends (PDF), su smithsonianchips.si.edu, p. 16.
  50. ^ Jan Axelson, Embedded ethernet and internet complete, Lakeview research, 2003, p. 93, ISBN 9781931448000.[...] Rabbit Semiconductor's Rabbit 3000 microprocessor, which is a much improved and enhanced derivative of ZiLOG, Inc.'s venerable Z80 microprocessor. (trad.: Il microprocessore Rabbit 3000 di Rabbit Semiconductor è una versione migliorata e potenziata del venerabile processore Z80 di ZiLOG, Inc.)}}
  51. ^ Kamal Hyder, Perrin Bob, Embedded systems design using the Rabbit 3000 microprocessor, Newnes, 2004, p. 32, ISBN 9780750678728.The Rabbit parts are based closely on the Zilog Z180 architecture, although they are not binary compatible with the Zilog parts. (trad.: I prodotti di Rabbit sono basate molto sull'architettura Zilog Z180 anche se non sono compatibili a livello binario con i prodotti Zilog.)
  52. ^ Minicomputer features such as, user and system modes, multiprocessor support, on chip MMU, on chip instruction and data cache, etc. was seen rather as more complexity than as functionality and support for the (usually electronics-oriented) embedded systems designer, it also made it very hard to predict instruction execution times. (trad.: Caratteristiche per i minicomputer come modalità utente e sistema, supporto multiprocessore, MMU integrata nel chip, cache istruzioni e dati integrate nel chip, ecc... furono viste più come una complessità aggiuntiva che una funzionalità ed un supporto per gli (eventualmente orientati elettronicamente) disegnatori di sistemi embedded, con anche tempi di esecuzione delle istruzioni difficilmente prevedibili.)
  53. ^ CZ80CPU - 8-bit Microprocessor Core, in Cast.
  54. ^ OpenCores.org, http://www.opencores.org/?do=project&who=t80.
  55. ^ OpenCores.org, http://www.opencores.org/?do=project&who=tv80.
  56. ^ TV 80 Home Page, su ghutchis.googlepages.com.
  57. ^ Herman Holtz, Computer work stations, Chapman and Hall, 1985, p. 223, ISBN 9780412004919.[...] and CP/M continued to dominate the 8-bit world of microcomputers. (trad.: (...) ed il CP/M continuò a dominare il mondo dei microcomputer ad 8 bit.)
  58. ^ John C. Dvorak, After CP/M, object oriented operating systems may lead the field, in InfoWorld, vol. 4, n. 18, InfoWorld Media Group, 10/05/1982, p. 20.The idea of a generic operating system is still in its infancy. In many ways it begins with CP/M and the mishmash of early 8080 and Z80 computers. (trad.: L'idea di un sistema operativo generico è ancora nella sua prima infanzia. In molti modi essa inizia con il CP/M ed il polpettone dei primi computer 8080 e Z80.)
  59. ^ Byte, McGraw-Hill, 1986, p. 274.C-128 CP/M uses both the Z80 and 8502 processors. The Z80 executes most of the CP/M BIOS functions. (trad.: Il CP/M del C-128 utilizza sia il processore Z80 che l'8502. Lo Z80 esegue la gran parte delle funzioni del BIOS CP/M.)
  60. ^ Marty Petersen, Review: Premium Softcard IIe, in "InfoWorld", vol. 6, n. 6, InfoWorld Media Group, 06/02/1984, p. 64.Several manufacturers, however, make Z80 coprocessor boards that plug into the Apple II (trad.: Alcuni costruttori, però, realizzano delle schede coprocessore con lo Z80 che possono essere inserite all'interno dell'Apple II.)
  61. ^ Popular Computing, McGraw-Hill, 1986, p. 22.The Commodore 64 CP/M package contains a plug-in cartridge with a Z80 microprocessor and the CP/M operating system on a disk. (trad.: Il pacchetto Commodore 64 CP/M contiene una scheda aggiuntiva con un microprocessore Z80 ed un dischetto con il sistema operativo CP/M}}
  62. ^ Ian R. Sinclair, Practical electronics handbook, Newnes, 2000, p. 204, ISBN 9780750645850.
  63. ^ A. Meystel, Autonomous mobile robots: vehicles with cognitive control, World Scientific, 1991, p. 44, ISBN 9789971500894.
  64. ^ American Society of Cinematographers, American cinematographer, ASC Holding, 1983, p. 18.
  65. ^ Bruce A. Artwick, Microcomputer interfacing., Prentice-Hall, 1980, p. 25, ISBN 9780135809020.
  66. ^ Nate Anderson, Source code requests force breathalyzer maker to sober up, in Ars Technica.The Intoxilyzer 5000EN, a breathalyzer [...], runs on a pair of Z80 processors (trad.: L'Intoxilyzer 5000EN, un etilometro (...), funziona con un paio di processori Z80.)
  67. ^ Robert Campbell, TI-82/83/85/86 Mathematics Use, su math.umbc.edu, UMBC, 2001.
  68. ^ Klaus Miesenberger, Computers Helping People with Special Needs, Springer, 2008, p. 556, ISBN 9783540705390.
  69. ^ Game Board Schematic (PDF), in Midway Pac-Man Parts and Operating Manual, Midway Games, dicembre 1980, pp. 32, 35. URL consultato il 20/07/2009.
  70. ^ Michael Nitsche, Games and Rules, in Video Game Spaces: Image, Play, and Structure in 3D Worlds, MIT Press, 31/03/2009, p. 26, ISBN 0-262-14101-9.[...] they would not realize the fundamental logical difference between a version of Pac-Man (Iwatani 1980) running on the original Z80 [...] (trad.: (...) essi non capirono la fondamentale differenza nella logica fra la versione del Pac-Man (Iwatani 1980) che giraca sull'originale Z80 (...).)}}
  71. ^ Game Logic Schematic (PDF), in Midway Galaxian Parts and Operating Manual, Midway Games, febbraio 1980, pp. 22, 24. URL consultato il 20/07/2009.
  72. ^ Schematics and Wiring Diagrams (PDF), in Midway Galega Parts and Operating Manual, Midway Games, ottobre 1981, pp. 7-7, 7-9, 7-14. URL consultato il 20/07/2009.
  73. ^ InfoWorld, vol. 4, n. 50, 20/12/1982, p. 33.The ColecoVision uses the Z80 microprocessor (trad.: Il ColecoVision utilizza il microprocessore Z80.)
  74. ^ Daniel, Core techniques and algorithms in game programming, New Riders, 2004, p. 14, ISBN 9780131020092.Internally, both the NES and Master System were equipped with 8-bit processors (a 6502 and a Zilog Z80, respectively) (trad.: Internamente sia il NES che il Master System erano equipaggiati con processori ad 8 bit (rispettivamente un 6502 ed uno Zilog Z80).)}}
  75. ^ Joe Frand, Albert Yarusso, Game console hacking: Xbox, PlayStation, Nintendo, Game Boy, Atari, & Sega, Syngress, 2004, p. 182, ISBN 9781931836319.This first Game Boy operated on four AA batteries and was equipped with a Zilog Z80 microprocessor - the same processor used on many electronic devices in the 1980s. In fact, all the Game Boy models up to and including the Game Boy Color featured a Z80 CPU. (trad.: Il primo Game Boy era alimentato con 4 batterie AA ed era equipaggiato con un microprocessore Zilog Z80 - lo stesso processore utilizzato su molti dispositivi degli anni '80. Infatti, tutti i modelli del Game Boy fino al Game Boy Color incluso utilizzavano una CPU Z80.)
  76. ^ Gordon Reid, The Prophet 5 and Prophet 10, 1999. Although the Prophet 5s and Prophet 10s incorporated Z80 microprocessors, [...] (trad.: Anche se i Prophet 5 ed i prophet 10 incorporavano dei microprocessori Z80, (...).)
  77. ^ About MemoryMoog, in Moog MemoryMoog User Group.CPU is Z80 + Z80CTC (trad.: La CPU è uno Z80 più uno Z80CTC.)

[[Categoria:Microprocessori]]