El Zilog Z80 es un microprocesador de 8 bits diseñado por Zilog que jugó un papel importante en la evolución de la informática temprana. Compatible por software con el Intel 8080 , ofrecía una alternativa convincente debido a su mejor integración y mayor rendimiento. El Z80 contaba con catorce registros en comparación con los siete del 8080, junto con instrucciones adicionales para la manipulación de bits , lo que lo convertía en un chip más potente.
Inicialmente pensado para usarse en sistemas integrados como el 8080, la combinación de compatibilidad, asequibilidad y rendimiento superior del Z80 lo impulsó a una adopción generalizada en sistemas de videojuegos y computadoras hogareñas a fines de la década de 1970 y principios de la de 1980, impulsando la revolución de la computación personal .
El Z80 fue una creación de Federico Faggin , una figura clave detrás de la creación del Intel 8080. Después de dejar Intel en 1974, Faggin cofundó Zilog con Ralph Ungermann . El Z80 fue lanzado en julio de 1976. Con los ingresos del Z80, la compañía construyó sus propias fábricas de chips . [2] Zilog licenció el Z80 a Synertek y Mostek , con sede en EE. UU. , que los había ayudado con la producción inicial, así como a un fabricante de segunda fuente europeo, SGS . El diseño también fue copiado por varios fabricantes japoneses, de Europa del Este y soviéticos. [d] Esto ganó la aceptación del Z80 en el mercado mundial ya que grandes empresas como NEC , Toshiba , Sharp y Hitachi comenzaron a fabricar el dispositivo (o sus propios clones o diseños compatibles con Z80).
El Z80 siguió utilizándose en sistemas integrados durante décadas después de su introducción, con avances constantes. La última incorporación a la familia Z80 es el eZ80 , que se ofrece junto con los chips sucesores. Zilog anunció la discontinuación del Z80 en abril de 2024 después de casi cinco décadas de producción.
Historia



Historia temprana
En Fairchild Semiconductor , y más tarde en Intel , el físico e ingeniero Federico Faggin había estado trabajando en la tecnología fundamental de fabricación de transistores y semiconductores . También desarrolló la metodología de diseño básica utilizada para memorias y microprocesadores en Intel y dirigió el trabajo en el Intel 4004 , el Intel 8080 y varios otros circuitos integrados. Masatoshi Shima fue el principal diseñador de lógica y a nivel de transistores del 4004 y el 8080 bajo la supervisión de Faggin, mientras que Ralph Ungermann estaba a cargo del diseño de circuitos integrados personalizados . [3]
A principios de 1974, Intel consideraba que sus microprocesadores no eran tanto productos que se pudieran vender por sí solos, sino una forma de vender más de sus productos principales, RAM estática y ROM . Una reorganización colocó muchas de las secciones anteriormente independientes bajo la dirección de Les Vadasz, diluyendo aún más el lugar del microprocesador en la empresa. Ese año, la recesión de 1973-1975 alcanzó su punto máximo e Intel despidió a varios empleados. [3] Todo esto llevó a Faggin a ponerse inquieto, e invitó a Ungermann a tomar algo y le preguntó si estaría interesado en comenzar su propia empresa. Ungermann aceptó de inmediato y, como tenía menos cosas que hacer en Intel, se fue en agosto o septiembre, seguido por Faggin, cuyo último día en Intel fue Halloween de 1974. [4] Cuando Shima se enteró, pidió venir también a la nueva empresa, pero como no tenía un diseño de producto real ni dinero, le dijeron que esperara. [5]
La empresa, de reciente creación y sin nombre, comenzó inicialmente a diseñar un microcontrolador de un solo chip llamado 2001. Se reunieron con Synertek para discutir la fabricación en sus líneas y, cuando Faggin comenzó a comprender los costos involucrados, quedó claro que un producto de bajo costo como este no podría competir con un diseño de una empresa con sus propias líneas de producción, como Intel. Entonces comenzaron a considerar un microprocesador más complejo en su lugar, inicialmente conocido como Super 80, con la característica principal de ser el uso de un bus de +5 V [5] en lugar de los más comunes −5, +5 y 12 V utilizados por diseños como el 8080. El nuevo diseño estaba destinado a ser compatible con el 8080, pero agregar muchas de las agradables características del Motorola 6800 , incluidos los registros de índice e interrupciones mejoradas . [6]
Comienza la inversión de Exxon y el desarrollo detallado
Mientras aún se estaba formando, el boletín de noticias del sector Electronic News se enteró de ellos y publicó un artículo sobre la empresa recién formada. Esto atrajo la atención de Exxon Enterprises, el brazo inversor de alta tecnología de Exxon . En ese momento, en medio de la recesión, había muy poco capital de riesgo disponible, con un total de 10 millones de dólares para toda la industria gastados en todo 1975 (equivalentes a 57 millones de dólares en 2023). Alguien de Exxon se puso en contacto con la empresa aún sin nombre [5] y organizó una reunión que finalmente llevó a que proporcionaran una financiación inicial de 500.000 dólares en junio de 1975 (equivalentes a 2,8 millones de dólares en 2023). [7]
En febrero de 1975, cuando se estaba discutiendo la financiación y se tenía que construir un diseño, Shima se unió a la empresa. [6] Shima se puso inmediatamente a producir un diseño de alto nivel, añadiendo varios conceptos propios. En particular, utilizó su experiencia con las minicomputadoras NEC para añadir el concepto de dos conjuntos de registros de procesador para que pudieran responder rápidamente a las interrupciones . [4] [e] Ungerman comenzó el desarrollo de una serie de controladores y chips periféricos relacionados que complementarían el diseño. [8]
Durante este período, Shima se ganó una reputación legendaria por ser capaz de convertir conceptos lógicos en diseño físico en tiempo real; mientras discutía una característica propuesta, a menudo interrumpía y decía cuánto espacio ocuparía eso en el chip y vetaba su adición si era demasiado grande. [9] El primer paso del diseño se completó en abril de 1975. Shima había completado un diseño lógico a principios de mayo. Una segunda versión del diseño lógico se publicó el 7 de agosto y los detalles del bus el 16 de septiembre. La producción en cinta se completó en noviembre y la conversión de la cinta en una máscara de producción requirió dos meses más. [10]
Faggin ya había empezado a buscar un socio de producción. Para entonces, Synertek y Mostek ya habían instalado las líneas de producción en modo de agotamiento que podrían utilizarse para producir el diseño. Habiendo hablado previamente con Synertek, Faggin se puso en contacto con ellos primero. Sin embargo, el presidente de Synertek exigió que se le diera a la empresa una licencia de segunda fuente , lo que les permitiría vender el diseño directamente. Faggin pensó que esto significaría que nunca podrían competir incluso si establecían sus propias líneas, y el acuerdo fracasó. Entonces recurrió a Mostek, que aceptó un plazo de exclusividad mientras Zilog instalaba sus líneas, y finalmente obtuvo el acuerdo de segunda fuente. [11]
Después de considerar muchos nombres para la nueva empresa y de encontrarlos tan poco memorables que no pudieron recordarlos ni siquiera un día después, Faggin y Ungermann estaban barajando ideas basadas en la "lógica integrada" cuando Ungermann dijo "¿qué tal Zilog?" Faggin estuvo de acuerdo de inmediato, afirmando que podían decir que era "la última palabra en lógica integrada". Cuando se reunieron al día siguiente y ambos lo recordaron de inmediato, la empresa tenía su nombre. [12]
En producción
Las primeras muestras fueron devueltas desde Mostek el 9 de marzo de 1976. [8] A finales de mes, también habían completado un sistema de desarrollo basado en ensamblador . Algunos de los circuitos integrados de soporte y periféricos del Z80 estaban en desarrollo en ese momento, y muchos de ellos se lanzaron durante el año siguiente. Entre ellos se encontraban el Z80 CTC (contador/temporizador), el Z80 DMA [13] (acceso directo a memoria), el Z80 DART (receptor-transmisor asíncrono dual), el Z80 SIO (controlador de comunicación síncrona) y el Z80 PIO (entrada/salida paralela).
El Z80 se lanzó oficialmente en julio de 1976. [14] Uno de los primeros clientes fue un comprador que, sin que Zilog lo supiera, trabajaba para NEC. En ese momento, las empresas de electrónica japonesas eran bien conocidas por tomar diseños de chips estadounidenses y producirlos sin licencia. El equipo de Zilog se había preocupado por esto, y Faggin había tenido la idea de agregar transistores que se modificarían sutilmente para que funcionaran de manera diferente a lo que sugeriría una inspección visual. Shima agregó seis de estas "trampas" alrededor del diseño. Algún tiempo después, un ingeniero de NEC le dijo a Shima que las trampas habían retrasado sus esfuerzos de copia durante seis meses. [15]
El exitoso lanzamiento permitió a Faggin y Ungermann acercarse a Exxon en busca de financiación para construir su propia fábrica. La empresa aceptó y Zilog construyó una línea de producción muy rápidamente. Esto les permitió captar entre el 60 y el 70% del mercado total de ventas del Z80. [16] Con su propia línea en funcionamiento, Mostek recibió el visto bueno para iniciar las ventas de sus propias versiones, la MK3880, que proporcionaba una segunda fuente de clientes de la que carecía Intel. En ese momento, una segunda fuente se consideraba extremadamente importante ya que una empresa emergente como Zilog podría quebrar y dejar a los clientes potenciales varados. [6] [f]
Comparación con el 8080
Faggin diseñó el conjunto de instrucciones para que fuera compatible a nivel binario con el 8080 [17] [18] de modo que la mayor parte del código del 8080, en particular el sistema operativo CP/M y el compilador PL/M de Intel para el 8080 (así como el código generado por el mismo), pudiera ejecutarse sin modificaciones en la nueva CPU Z80. Masatoshi Shima diseñó la mayor parte de la microarquitectura , así como los niveles de compuerta y transistor de la CPU Z80, con la ayuda de un pequeño número de ingenieros y diseñadores gráficos . [19] [20] El director ejecutivo Federico Faggin estuvo muy involucrado en el trabajo de diseño del chip, junto con dos diseñadores gráficos dedicados. Según Faggin, trabajaba 80 horas a la semana para cumplir con el ajustado cronograma que le habían dado los inversores financieros. [2]
El Z80 ofreció muchas mejoras con respecto al 8080: [18]
- Un conjunto de instrucciones mejorado que incluye:
- Un sistema más lógico, comprensible y legible de mnemotecnia de instrucciones de ensamblador.
- Instrucciones de movimiento de datos de 16 bits más flexibles (carga o LD), que incluyen fundamentalmente el puntero de pila SP
- modos de direccionamiento más flexibles para entrada/salida a puertos periféricos externos
- direccionamiento de un solo bit de todos los registros y la memoria, incluida la prueba de bits
- cambia/rota en la memoria y registros distintos del acumulador
- Aritmética BCD mejorada y más precisa (que la 8080 anterior)
- Instrucciones de rotación para cadenas de números BCD en la memoria
- Resta de 16 bits y negación de 8 bits
- bucle de programa
- Saltos relativos del contador de programa (PC)
- instrucciones de copia de bloque , entrada/salida de bloque (E/S) y búsqueda de bytes. [21]
- Un indicador de desbordamiento con mejor soporte para aritmética con signo de 8 y 16 bits. [g]
- Nuevos registros de índice IX e IY con instrucciones para direccionamiento de base+ desplazamiento directo
- Un mejor sistema de interrupción :
- Un sistema de interrupción vectorizado más automático y general , modo 2 , destinado principalmente a la línea de contadores/temporizadores, controladores DMA y de comunicaciones de Zilog, así como un sistema de interrupción vectorial fijo, modo 1 , para sistemas simples con hardware mínimo ( siendo el modo 0 el modo compatible con 8080). [22]
- Una interrupción no enmascarable (NMI), que se puede utilizar para responder a situaciones de apagado u otros eventos de alta prioridad (y que permite que un sistema Z80 minimalista implemente fácilmente un esquema de interrupción de dos niveles en el modo 1 ).
- Un archivo de registro duplicado completo , [23] que se podía cambiar rápidamente para acelerar la respuesta a interrupciones, como controladores de eventos asincrónicos rápidos o un despachador multitarea . Aunque no estaban pensados como registros adicionales para el código general, se usaban de esa manera en algunas aplicaciones. [h]
- Se requiere menos hardware para suministro de energía , generación de reloj e interfaz con memoria y E/S
- Fuente de alimentación única de 5 voltios (el 8080 necesitaba −5 V, +5 V y +12 V).
- Reloj monofásico de 5 voltios (el 8080 necesitaba un reloj bifásico no superpuesto de alta amplitud (9 a 12 voltios) ).
- Actualización de DRAM incorporada , que de otro modo requeriría circuitos externos, a menos que se utilizara SRAM, más cara y menos densa (pero más rápida). [i]
- Buses no multiplexados (el 8080 tenía señales de estado multiplexadas en el bus de datos).
- Un reinicio especial que pone a cero únicamente el contador del programa, de modo que se pueda utilizar una sola CPU Z80 en un sistema de desarrollo como un emulador en circuito . [24]
Éxito en el mercado
El Z80 tomó el relevo del 8080 y su descendiente, el 8085 , en el mercado de procesadores [25] y se convirtió en una de las CPU de 8 bits más populares y ampliamente utilizadas. [26] [27] Algunas organizaciones como British Telecom se mantuvieron leales al 8085 para aplicaciones integradas, debido a su familiaridad con él y a su interfaz serial en chip y arquitectura de interrupción. Del mismo modo, Zenith Data Systems emparejó el 8085 con el Intel 8088 de 16 bits en su primer ordenador MS-DOS, el Zenith Z-100 , a pesar de tener experiencia previa con sus productos pioneros Heathkit H89 y Zenith Z-89 basados en Z80 . Sin embargo, se fabricaron otros ordenadores integrando el Z80 con otras CPU: el Radio Shack TRS-80 Modelo 16 con un Motorola 68000 , el DEC Rainbow con un 8088 y el Commodore 128 con un MOS Technology 8502 .
Más tarde, Zilog produjo un Z80 de bajo consumo adecuado para el creciente mercado de ordenadores portátiles de principios de los años 1980. Intel produjo un CMOS 8085 (80C85) utilizado en ordenadores portátiles alimentados por batería, como el portátil diseñado por Kyocera a partir de abril de 1983, también vendido por Tandy (como TRS-80 Model 100 ), Olivetti y NEC. En los años siguientes, sin embargo, las versiones CMOS del Z80 (tanto de Zilog como de fabricantes japoneses) dominarían también este mercado, en productos como el Amstrad NC100 , el Cambridge Z88 y el propio WP-2 de Tandy.
Tal vez una de las claves del éxito inicial del Z80 fue la actualización de la memoria DRAM incorporada, al menos en mercados como CP/M y otros ordenadores domésticos y de oficina (la mayoría de los sistemas integrados Z80 utilizan RAM estática que no necesita actualización). También puede haber sido su sistema minimalista de interrupción de dos niveles o, por el contrario, su sistema general de interrupción en cadena de varios niveles útil para dar servicio a varios chips de E/S del Z80. Estas características permitieron construir sistemas con menos hardware de soporte y diseños de placas de circuitos más simples.
Sin embargo, otros afirman que su popularidad se debió a los registros duplicados que permitían cambios de contexto rápidos o un procesamiento más eficiente de cosas como matemáticas de punto flotante en comparación con las CPU de 8 bits con menos registros. (El Z80 puede mantener varios de esos números internamente, utilizando HL'HL, DE'DE y BC'BC como registros de 32 bits, evitando tener que acceder a ellos desde una RAM más lenta durante el cálculo). [28]
Para el diseño NMOS original , el límite superior de frecuencia de reloj especificado aumentó sucesivamente desde los 2,5 MHz introductorios , pasando por los conocidos 4 MHz (Z80A), hasta los 6 MHz (Z80B) y los 8 MHz (Z80H). [29] [30] La versión NMOS se ha producido como una parte de 10 MHz desde finales de los años 1980. Las versiones CMOS se desarrollaron con límites superiores de frecuencia especificados que iban desde los 4 MHz hasta los 20 MHz para la versión que se vende hoy en día. Las versiones CMOS permitían un modo de espera de bajo consumo con el estado interno retenido, sin tener un límite de frecuencia inferior . [j] Los derivados totalmente compatibles HD64180 / Z180 [31] [32] y eZ80 están especificados actualmente para hasta 33 MHz y 50 MHz, respectivamente.
Diseño
Modelo de programación y conjunto de registros

El modelo de programación y el conjunto de registros del Z80 son bastante convencionales, basados en última instancia en la estructura de registros del Datapoint 2200. El Z80 fue diseñado como una extensión del Intel 8080, creado por los mismos ingenieros, que a su vez era una extensión del 8008. El 8008 era básicamente una implementación PMOS de la CPU basada en TTL del Datapoint 2200. [k]
El diseño 2200 permitió que los registros de 8 bits H y L (alto y bajo) se emparejaran en un registro de dirección de 16 bits HL. [l] En el 8080, este emparejamiento también se agregó a los pares BC y DE, mientras que HL se generalizó para permitir su uso como un acumulador de 16 bits, no solo como un registro de dirección. El 8080 también introdujo datos inmediatos de 16 bits para cargas BC, DE, HL y SP. Además, ahora era posible la copia directa de 16 bits entre HL y la memoria, utilizando una dirección directa.
El Z80 ortogonalizó esto aún más al hacer que todos los pares de registros de 16 bits, incluidos IX e IY, sean de propósito más general, además de permitir la copia de 16 bits directamente hacia y desde la memoria para todos estos pares. Los registros IX e IY de 16 bits en el Z80 están pensados principalmente como registros de dirección base, donde una instrucción particular proporciona un desplazamiento constante que se suma a los valores anteriores, pero también se pueden usar como acumuladores de 16 bits, entre otras cosas. Una limitación es que todas las referencias de operandos que involucran IX o IY requieren un byte de prefijo de instrucción adicional, agregando al menos cuatro ciclos de reloj sobre el tiempo de una instrucción que usa HL en su lugar; esto a veces hace que usar IX o IY sea menos eficiente que un método que usa solo los registros del modelo 8080. El Z80 también introdujo un nuevo indicador de desbordamiento con signo y complementó la aritmética bastante simple de 16 bits del 8080 con instrucciones dedicadas para aritmética con signo de 16 bits.

Los registros compatibles con 8080 AF, BC, DE, HL están duplicados como un archivo de registro separado en el Z80, [34] donde el procesador puede cambiar rápidamente (cuatro estados t, el menor tiempo de ejecución posible para cualquier instrucción Z80) de un banco al otro; [35] una característica útil para acelerar las respuestas a interrupciones de alta prioridad de un solo nivel. Una característica similar estaba presente en el 2200, pero nunca se implementó en Intel. El conjunto de registros dual es muy útil en el rol integrado, ya que mejora el rendimiento del manejo de interrupciones, pero encontró un uso generalizado en el rol de computadora personal como un conjunto adicional de registros generales para código complejo como aritmética de punto flotante o juegos de computadora domésticos.
El archivo de registro duplicado se suele denominar "conjunto de registros alternativos" (algunos lo denominan "archivo de registros preparados", ya que el carácter de apóstrofo se utiliza para indicarlos en el código fuente del ensamblador y en la documentación de Zilog). Esto pone de relieve que solo se puede acceder a un conjunto en cualquier momento. Sin embargo, el acumulador A de 8 bits con su registro de bandera F se bifurca de los pares de registros de "propósito general" HL, DE y BC. Esto se logra con dos instrucciones independientes que se utilizan para intercambiar sus accesibilidades: EX AF,AF'intercambia solo el par de registros AF con AF', mientras que la EXXinstrucción intercambia los tres pares de registros de propósito general HL, DE y BC con sus alternativos HL', DE' y BC'. Por lo tanto, el acumulador A puede interactuar de forma independiente con cualquiera de los registros de 8 bits de propósito general en el archivo de registros alternativos (o preparados) o, si HL' contiene un puntero a la memoria, algún byte allí (DE' y BC' también pueden transferir datos de 8 bits entre la memoria y el acumulador A).
Esto puede llegar a ser confuso para los programadores porque después de ejecutar EX AF,AF'o EXXlo que antes eran los registros alternativos (primarios) ahora son los registros principales, y viceversa. La única forma que tiene el programador de saber qué conjunto(s) están en contexto (mientras "juega a la computadora" mientras examina el texto fuente del ensamblador, o peor aún, examina el código con un depurador) es rastrear dónde se realiza cada intercambio de registro en cada punto del programa. Obviamente, si se realizan muchos saltos y llamadas dentro de estos segmentos de código, puede volverse rápidamente difícil saber qué archivo de registro está en contexto a menos que se comente cuidadosamente. Por lo tanto, es aconsejable que las instrucciones de intercambio se utilicen directamente y en segmentos de código discretos cortos. El conjunto de instrucciones Zilog Z280 incluye JAFinstrucciones JARque saltan a una dirección de destino si los registros alternativos están en contexto (reconociendo así oficialmente esta complicación de programación).
Registros
Al igual que en el 8080, los registros de 8 bits suelen emparejarse para proporcionar versiones de 16 bits. Los registros compatibles con el 8080 [36] son:
AF: El acumulador de 8 bits (A) y los bits de bandera (F) llevan, cero, menos, paridad/desbordamiento, medio acarreo (usado para BCD ) y una bandera de suma/resta (generalmente llamada N) también para BCDBC: registro de datos/dirección de 16 bits o dos registros de 8 bitsDE: registro de datos/dirección de 16 bits o dos registros de 8 bitsHL: registro acumulador/de dirección de 16 bits o dos registros de 8 bitsSP: puntero de pila , 16 bitsPC: contador de programa, 16 bits
Los nuevos registros introducidos con el Z80 son:
IX:Índice de 16 bits o registro base para desplazamientos inmediatos de 8 bitsIY:Índice de 16 bits o registro base para desplazamientos inmediatos de 8 bitsI: registro base del vector de interrupción, 8 bitsR:Contador de actualización de DRAM, 8 bits ( el msb no cuenta)AF': acumulador alternativo (o de sombra) y banderas ( activadas y desactivadas con EX AF, AF' )BC',DE'yHL': registros alternativos (o de sombra) ( activados y desactivados con EXX )- Cuatro bits de estado de interrupción y estado de modo de interrupción
El registro de actualización , R, se incrementa cada vez que la CPU obtiene un código de operación (o un prefijo de código de operación, que se ejecuta internamente como una instrucción de 1 byte) y no tiene una relación simple con la ejecución del programa. Esto a veces se ha utilizado para generar números pseudoaleatorios en juegos y también en esquemas de protección de software. [ cita requerida ] También se ha empleado como un contador de "hardware" en algunos diseños; un ejemplo de esto es el ZX81 , que le permite realizar un seguimiento de las posiciones de los personajes en la pantalla del televisor al activar una interrupción en el bucle (al conectar INT a A6).
El registro de vector de interrupción , I, se utiliza para las interrupciones de modo 2 específicas del Z80 (seleccionadas por la IM 2instrucción). Suministra el byte alto de la dirección base para una tabla de 128 entradas de direcciones de rutina de servicio que se seleccionan a través de un índice enviado a la CPU durante un ciclo de reconocimiento de interrupción ; este índice es simplemente la parte del byte bajo del puntero a la dirección indirecta tabulada que apunta a la rutina de servicio. [22] El puntero identifica un chip periférico particular o una función o evento periférico, donde los chips normalmente están conectados en una llamada cadena de margarita para la resolución de prioridad. Al igual que el registro de actualización, este registro también se ha utilizado a veces de forma creativa; en los modos de interrupción 0 y 1 (o en un sistema que no utiliza interrupciones) se puede utilizar simplemente como otro registro de datos de 8 bits.
Las instrucciones LD A,Ry LD A,Iafectan al registro de indicadores Z80, a diferencia de todas las demás LDinstrucciones (de carga). Los indicadores de signo (bit 7) y cero (bit 6) se configuran de acuerdo con los datos cargados desde los registros de origen de actualización o interrupción. Para ambas instrucciones, el indicador de paridad/desbordamiento (bit 2) se configura de acuerdo con el estado actual del flip-flop IFF2. [37]
Microarquitectura
Aunque generalmente se considera que el Z80 es una CPU de ocho bits, tiene una ALU de cuatro bits , por lo que los cálculos se realizan en dos pasos. [38]
Lenguaje ensamblador Z80
Punto de datos 2200 e Intel 8008
El primer lenguaje ensamblador del Intel 8008 se basaba en una sintaxis muy simple (pero sistemática) heredada del diseño Datapoint 2200. Esta sintaxis original se transformó posteriormente en una nueva forma de lenguaje ensamblador, algo más tradicional, para este mismo chip 8008 original. Casi al mismo tiempo, el nuevo lenguaje ensamblador también se amplió para dar cabida a los modos de direccionamiento adicionales del chip más avanzado Intel 8080 (el 8008 y el 8080 compartían un subconjunto de lenguaje sin ser compatibles a nivel binario ; sin embargo, el 8008 era compatible a nivel binario con el Datapoint 2200).
En este proceso, la mnemotecnia L, para LOAD , fue reemplazada por varias abreviaturas de las palabras LOAD , STORE y MOVE , entremezcladas con otras letras simbólicas. La letra mnemotécnica M, para memory (referenciada por HL), fue sacada de dentro de la mnemotecnia de instrucción para convertirse en un operando sintácticamente independiente , mientras que los registros y combinaciones de registros comenzaron a denotarse de manera muy inconsistente; ya sea por operandos abreviados (MVI D, LXI H y así sucesivamente), dentro de la mnemotecnia de instrucción misma (LDA, LHLD y así sucesivamente), o ambos al mismo tiempo (LDAX B, STAX D y así sucesivamente).
Ilustración de cuatro sintaxis, utilizando muestras de instrucciones de carga y almacenamiento equivalentes o (para 8086) muy similares. [39] La sintaxis Z80 utiliza paréntesis alrededor de una expresión para indicar que el valor debe usarse como una dirección de memoria (como se menciona a continuación), mientras que la sintaxis 8086 utiliza corchetes en lugar de paréntesis ordinarios para este propósito. Tanto Z80 como 8086 utilizan el signo + para indicar que se agrega una constante a un registro base para formar una dirección. Tenga en cuenta que 8086 no es un superconjunto completo de Z80. BX es el único par de registros 8086 que se puede utilizar como puntero.
Nueva sintaxis
Como Intel reclamó los derechos de autor sobre sus mnemotécnicos de ensamblaje, [40] se tuvo que desarrollar una nueva sintaxis de ensamblaje para el Z80. Esta vez se utilizó un enfoque más sistemático:
- Todos los registros y pares de registros se indican explícitamente mediante sus nombres completos.
- Los paréntesis se utilizan sistemáticamente para indicar "contenido de memoria en" (dirección constante o desreferencia de puntero variable) con la excepción de una instrucción de salto JP (HL). JP (XY) es simplemente una variación de JP (HL) que carga la nueva dirección de PC. [n]
- Todas las instrucciones de carga y almacenamiento utilizan el mismo nombre mnemotécnico, LD, para LOAD (un retorno al vocabulario simplista de Datapoint 2200); otras instrucciones comunes, como ADD e INC, utilizan el mismo nombre mnemotécnico independientemente del modo de direccionamiento o el tamaño del operando. Esto es posible porque los operandos en sí mismos contienen suficiente información.
Estos principios hicieron que fuera sencillo encontrar nombres y formas para todas las nuevas instrucciones del Z80, así como ortogonalizaciones de las antiguas, como LD BC,1234.
Aparte de las diferencias de denominación, y a pesar de una cierta discrepancia en la estructura básica de los registros, la sintaxis del Z80 y del 8086 son prácticamente isomorfas para una gran parte de las instrucciones. Sólo existen similitudes bastante superficiales (como la palabra MOV, o la letra X, para registro extendido) entre los lenguajes ensambladores del 8080 y del 8086, aunque los programas del 8080 se pueden traducir al lenguaje ensamblador del 8086 mediante programas traductores . [42] [43]
Conjunto de instrucciones y codificación
El Z80 utiliza 252 de los 256 códigos disponibles como códigos de operación de un solo byte ("instrucción raíz", la mayoría de los cuales se heredan del 8080); los cuatro códigos restantes se utilizan ampliamente como prefijos de código de operación: [44] CB y ED habilitan instrucciones adicionales, y DD o FD seleccionan IX+d o IY+d respectivamente (en algunos casos sin desplazamiento d) en lugar de HL. Este esquema proporciona al Z80 una gran cantidad de permutaciones de instrucciones y registros; Zilog los clasifica en 158 "tipos de instrucciones" diferentes, 78 de los cuales son los mismos que los del Intel 8080 [44] (lo que permite el funcionamiento de todos los programas del 8080 en un Z80). La documentación de Zilog [45] agrupa además las instrucciones en las siguientes categorías (la mayoría del 8080, otras completamente nuevas como las instrucciones de bloque y bit, y otras instrucciones del 8080 con modos de direccionamiento más versátiles, como las cargas de 16 bits, E/S, rotaciones/desplazamientos y saltos relativos):
- Cargar e intercambiar
- Transferencia de bloques y búsqueda
- Aritmética y lógica
- Girar y desplazar
- Manipulación de bits (establecer, restablecer, probar)
- Saltar, llamar y volver
- Entrada/salida
- Control básico de la CPU
En el Z80 original no hay instrucciones explícitas de multiplicación, [46] aunque los registros A y HL se pueden multiplicar por potencias de dos con las instrucciones ADD A,A y ADD HL,HL (de manera similar a IX e IY). Las instrucciones Shift también pueden multiplicar o dividir por potencias de dos.
Los diferentes tamaños y variantes de adiciones, desplazamientos y rotaciones tienen efectos algo diferentes en los indicadores, ya que se copiaron la mayoría de las propiedades de cambio de indicadores del 8080. Sin embargo, el bit de indicador de paridad P del 8080 (bit 2) se denomina P/V (paridad/desbordamiento) en el Z80, ya que cumple la función adicional de indicador de desbordamiento de complemento a dos, una característica de la que carece el 8080. Las instrucciones aritméticas del Z80 lo configuran para indicar desbordamiento en lugar de paridad, mientras que las instrucciones bit a bit aún lo utilizan como indicador de paridad. (Esto introduce una sutil incompatibilidad del Z80 con el código escrito para el 8080, ya que el Z80 a veces indica desbordamiento con signo donde el 8080 indicaría paridad, posiblemente causando que la lógica de algún software práctico del 8080 falle en el Z80. [o] ) Este nuevo indicador de desbordamiento se utiliza para todas las nuevas operaciones de 16 bits específicas del Z80 ( ADC, SBC) así como para operaciones aritméticas de 8 bits, mientras que las operaciones de 16 bits heredadas del 8080 ( ADD, INC, DEC) no lo afectan. Además, el bit 1 del registro de indicadores (un bit de repuesto en el 8080) se utiliza como un indicador N que indica si la última instrucción aritmética ejecutada fue una resta o una suma. La versión Z80 de la DAAinstrucción (acumulador de ajuste decimal para aritmética BCD) verifica el indicador N y se comporta en consecuencia, por lo que una resta (hipotética) seguida posteriormente por DAAproducirá un resultado diferente en un 8080 antiguo que en el Z80. Sin embargo, es probable que este sea un código erróneo en el 8080, ya que DAAse definió solo para la suma en ese procesador.
El Z80 tiene seis nuevas LDinstrucciones que pueden cargar los pares de registros DE, BC y SP desde la memoria, y cargar la memoria desde estos tres pares de registros, a diferencia del 8080. [39] Al igual que en el 8080, las instrucciones de carga no afectan a los indicadores (excepto las cargas de registros I y R de propósito especial). Un resultado de una codificación regular (común con el 8080) es que cada uno de los registros de 8 bits se puede cargar desde sí mismos (por ejemplo, LD A,A). Esto es efectivamente un NOP.
Las nuevas instrucciones de transferencia de bloques pueden mover hasta 64 kilobytes de memoria a memoria o entre memoria y puertos periféricos de E/S. Las instrucciones de bloque LDIRy LDDR( cargar , incrementar / decrementar , repetir ) usan HL para apuntar a la dirección de origen, DE a la dirección de destino y BC como un contador de bytes. Los bytes se copian de origen a destino, los punteros se incrementan o decrementan, y el contador de bytes se decrementa hasta que BC llega a cero. Las versiones no repetitivas y mueven un solo byte y hacen subir los punteros y el contador de bytes, que si llega a cero reinicia el indicador P/V. Las instrucciones de memoria a E/S correspondientes , , , , , , y funcionan de manera similar, excepto que B, no BC, se usa como contador de bytes. [47] [48] El Z80 puede ingresar y sacar cualquier registro a un puerto de E/S usando el registro C para designar el puerto. (El 8080 solo realiza E/S a través del acumulador A, utilizando una dirección de puerto directo especificada en la instrucción; se requiere una técnica de código automodificable para utilizar una dirección de puerto 8080 variable).
LDILDDINIRINDROTIROTDRINIINDOUTIOUTD
El último grupo de instrucciones de bloque realiza una CPoperación de comparación entre el byte en (HL) y el acumulador A. No se utiliza el par de registros DE. Las versiones repetidas CPIRy CPDRsolo terminan si BC va a cero o se encuentra una coincidencia. HL se deja apuntando al byte después ( CPIR) o antes ( CPDR) del byte coincidente. Si no se encuentra ninguna coincidencia, se restablece el indicador Z. Hay versiones no repetidas CPIy CPD.
A diferencia del 8080, el Z80 puede saltar a una dirección relativa ( JRen lugar de JP) utilizando un desplazamiento de 8 bits con signo. Solo los indicadores de cero y de acarreo se pueden probar para estas nuevas JRinstrucciones de dos bytes. (Todos los saltos y llamadas del 8080, condicionales o no, son instrucciones de tres bytes). Una instrucción de dos bytes especializada para bucles de programas también es nueva en el Z80: DJNZ( decrementar salto si no es cero ) toma un desplazamiento de 8 bits con signo como operando inmediato. El registro B se decrementa y, si el resultado es distinto de cero, la ejecución del programa salta en relación con PC; los indicadores permanecen inalterados. Para realizar un bucle equivalente en un 8080 se requieren instrucciones de salto condicionales (a una dirección absoluta de dos bytes) separadas (DEC que suman cuatro bytes), y el DECmodifica el registro de indicadores.
Las instrucciones de registro de índice (IX/IY, a menudo abreviadas como XY) pueden ser útiles para acceder a datos organizados en estructuras heterogéneas fijas (como registros ) o en desplazamientos fijos con respecto a una dirección base variable (como en marcos de pila recursivos ) y también pueden reducir el tamaño del código al eliminar la necesidad de múltiples instrucciones cortas que utilicen registros no indexados. Sin embargo, aunque pueden ahorrar velocidad en algunos contextos en comparación con secuencias "equivalentes" largas/complejas de operaciones más simples, incurren en mucho tiempo de CPU adicional (por ejemplo, 19 estados T para acceder a una ubicación de memoria indexada frente a tan solo 11 para acceder a la misma memoria utilizando HL y apuntar a la siguiente). Por lo tanto, para accesos simples o lineales a datos, el uso de IX e IY tiende a ser más lento y ocupa más memoria. Aún así, pueden ser útiles en casos en los que todos los registros "principales" están ocupados, al eliminar la necesidad de guardar/restaurar registros. Sus mitades de 8 bits no documentadas oficialmente (ver más abajo) pueden ser especialmente útiles en este contexto, ya que incurren en menos desaceleración que sus progenitores de 16 bits. De manera similar, las instrucciones para adiciones de 16 bits no son particularmente rápidas (11 ciclos de reloj) en el Z80 original (siendo 1 ciclo más lento que en el 8080/8085); no obstante, son aproximadamente el doble de rápidas que realizar los mismos cálculos utilizando operaciones de 8 bits, e igualmente importante, reducen el uso de registros. No era raro que los programadores "meteran" diferentes bytes de desplazamiento de compensación (que normalmente se calculaban dinámicamente) en instrucciones indexadas; este es un ejemplo de código automodificable , que era una práctica habitual en casi todos los primeros procesadores de 8 bits con unidades de ejecución no segmentadas .
INC
Los registros de índice tienen una instrucción paralela a JP (HL), que es JP (XY). Esto se ve a menudo en lenguajes orientados a la pila como Forth , que al final de cada palabra Forth (subrutinas atómicas que componen el lenguaje) deben saltar incondicionalmente de nuevo a sus rutinas de interpretación de subprocesos. Normalmente, esta instrucción de salto aparece cientos de veces en una aplicación, y el uso JP (XY)de en lugar de JP THREADguarda un byte y dos estados T para cada ocurrencia. Esto naturalmente hace que el registro de índice no esté disponible para ningún otro uso, o de lo contrario la necesidad de recargarlo constantemente anularía su eficiencia.
El diseño Z180 , diez años más nuevo, con microcodificación , inicialmente podía permitir una mayor "área de chip", lo que permitía una implementación ligeramente más eficiente (utilizando una ALU más amplia , entre otras cosas); se pueden decir cosas similares de los Z800 , Z280 y Z380 . Sin embargo, no fue hasta que se lanzó el eZ80 completamente segmentado en 2001 que esas instrucciones finalmente se volvieron aproximadamente tan eficientes en cuanto a ciclos como es técnicamente posible hacerlas, es decir, dadas las codificaciones Z80 combinadas con la capacidad de hacer una lectura o escritura de 8 bits en cada ciclo de reloj. [ cita requerida ]
Instrucciones no documentadas
Los registros de índice, IX e IY, fueron pensados como punteros flexibles de 16 bits, mejorando la capacidad de manipular la memoria, los marcos de pila y las estructuras de datos. Oficialmente, se los trataba como de 16 bits solamente. En realidad, se implementaron como un par de registros de 8 bits, [49] de la misma manera que el registro HL, al que se puede acceder como de 16 bits o por separado como los registros High y Low . Los códigos de operación binarios (lenguaje de máquina) eran idénticos, pero precedidos por un nuevo prefijo de código de operación. [50] Zilog publicó los códigos de operación y los mnemónicos relacionados para las funciones previstas, pero no documentó el hecho de que cada código de operación que permitía la manipulación de los registros H y L era igualmente válido para las porciones de 8 bits de los registros IX e IY. Por ejemplo, el código de operación 26h seguido de un valor de byte inmediato (LD H,n)cargará ese valor en el registro H. Si se antepone a esta instrucción de dos bytes el prefijo de código de operación del registro IX, DD, se cargarían los 8 bits más significativos del registro IX con ese mismo valor. Una excepción notable a esto serían las instrucciones similares a LD H,(IX+d)las que utilizan tanto los registros HL como los IX o IY en la misma instrucción; [50] en este caso, el prefijo DD solo se aplica a la parte (IX+d) de la instrucción. Las mitades de los registros XY también podrían contener operandos para instrucciones aritméticas, lógicas y de comparación de 8 bits, lo que dejaría los registros regulares de 8 bits libres para otros usos. La capacidad no documentada de incrementar y decrementar la mitad superior de un registro de índice facilitó la expansión del rango de las instrucciones indexadas normales, sin tener que recurrir a la documentada ADD/SBC XY,DEo ADD/SBC XY,BC.
También existen otras instrucciones no documentadas. [51] El Z80 no detecta los códigos de operación no documentados o ilegales y estos tienen varios efectos, algunos de los cuales son útiles. Sin embargo, como no forman parte de la definición formal del conjunto de instrucciones, no se garantiza (ni es especialmente probable) que las diferentes implementaciones del Z80 funcionen de la misma manera para cada código de operación no documentado.
Insectos
La OTDRinstrucción no cumple con la documentación del Z80. Se supone que tanto la instrucción OTDRcomo la instrucción dejan el indicador de acarreo (C) sin modificar. La instrucción funciona correctamente; sin embargo, durante la ejecución de la instrucción, el indicador de acarreo toma los resultados de una comparación espuria entre el acumulador (A) y la última salida de la instrucción. [52]OTIROTIROTDROTDR
Código de ejemplo
El siguiente código fuente de ensamblaje Z80 es para una subrutina llamada memcpyque copia un bloque de bytes de datos de un tamaño determinado de una ubicación a otra. Importante: el código de ejemplo no maneja el caso en el que el bloque de destino se superpone al de origen; una limitación grave, pero que es irrelevante para algunas aplicaciones, como, especialmente, cuando el origen está en ROM y el destino en RAM, por lo que nunca pueden superponerse. El bloque de datos se copia un byte a la vez, y el movimiento de datos y la lógica de bucle utilizan operaciones de 16 bits. Demuestra una variedad de instrucciones, pero en la práctica no se codificaría de esta manera, ya que el Z80 tiene una sola instrucción que reemplazará a toda esta subrutina: LDIR. El código de muestra moverá un byte cada 46 estados T. Sustituir la LDIRinstrucción moverá cada byte en solo 21 estados T. Tenga en cuenta que el código ensamblado es compatible a nivel binario con las CPU Intel 8080 y 8085.
Ejecución de instrucciones
Cada instrucción se ejecuta en pasos que normalmente se denominan ciclos de máquina (ciclos M), cada uno de los cuales puede durar entre tres y seis períodos de reloj (estados T). [53] Cada ciclo M corresponde aproximadamente a un acceso a la memoria o a una operación interna. Muchas instrucciones terminan en realidad durante el M1 de la siguiente instrucción, lo que se conoce como superposición de búsqueda/ejecución .
Los ciclos de máquina Z80 están secuenciados por una máquina de estados interna que construye cada ciclo M a partir de 3, 4, 5 o 6 estados T según el contexto. Esto evita la lógica asincrónica engorrosa y hace que las señales de control se comporten de manera consistente en un amplio rango de frecuencias de reloj. También significa que se debe utilizar un cristal de frecuencia más alta que sin esta subdivisión de ciclos de máquina (aproximadamente 2-3 veces más alta). No implica requisitos más estrictos en los tiempos de acceso a la memoria , ya que un reloj de alta resolución permite un control más preciso de los tiempos de memoria y, por lo tanto, la memoria puede estar activa en paralelo con la CPU en mayor medida, lo que permite un uso más eficiente del ancho de banda de memoria disponible. [ cita requerida ]
Un ejemplo central de esto es que, para la obtención del código de operación , el Z80 combina dos ciclos de reloj completos en un período de acceso a la memoria (la señal M1). En el Z80, esta señal dura una parte relativamente mayor del tiempo típico de ejecución de instrucciones que en un diseño como el 6800 , 6502 o similar, donde este período normalmente duraría típicamente el 30-40% de un ciclo de reloj. [ cita requerida ] Con la asequibilidad del chip de memoria (es decir, tiempos de acceso alrededor de 450-250 ns en la década de 1980 [ cita requerida ] ) determinando típicamente el tiempo de acceso más rápido posible, esto significaba que dichos diseños estaban limitados a un ciclo de reloj significativamente más largo (es decir, menor velocidad de reloj interno) que el Z80.
La memoria era generalmente lenta en comparación con los subciclos de máquina de estados (ciclos de reloj) utilizados en los microprocesadores contemporáneos. Por lo tanto, el ciclo de máquina más corto que se podía utilizar de forma segura en diseños integrados a menudo se veía limitado por los tiempos de acceso a la memoria, no por la frecuencia máxima de la CPU (especialmente durante la era de los ordenadores domésticos). Sin embargo, esta relación ha cambiado lentamente durante las últimas décadas, en particular en lo que respecta a la SRAM ; por lo tanto, los diseños de un solo ciclo sin caché, como el eZ80, han adquirido mucha más importancia recientemente.
El contenido del registro de actualización R se envía a la mitad inferior del bus de direcciones junto con una señal de control de actualización mientras la CPU está decodificando y ejecutando la instrucción obtenida. Durante la actualización, el contenido del registro de interrupción I se envía a la mitad superior del bus de direcciones. [60]
Periféricos compatibles
Zilog introdujo una serie de componentes periféricos para el Z80, todos ellos compatibles con el sistema de manejo de interrupciones y el espacio de direcciones de E/S del Z80. Entre ellos se incluyen el canal de contador/temporizador (CTC), [61] el SIO (entrada/salida en serie), el DMA (acceso directo a memoria), el PIO (entrada/salida en paralelo) y el DART (receptor-transmisor asíncrono dual). A medida que se desarrolló la línea de productos, se introdujeron versiones de bajo consumo, alta velocidad y CMOS de estos chips.
-
PioZ84C2008
-
Código de conducta Z84C3008
-
Sistema operativo Z84C4008
Al igual que los procesadores 8080, 8085 y 8086, pero a diferencia de procesadores como el Motorola 6800 y el MOS Technology 6502, el Z80 y el 8080 tienen una línea de control separada y un espacio de dirección para las instrucciones de E/S. Mientras que algunas computadoras basadas en el Z80, como el Osborne 1 , usaban dispositivos de entrada/salida mapeados en memoria "estilo Motorola" , normalmente el espacio de E/S se usaba para direccionar uno de los muchos chips periféricos Zilog compatibles con el Z80. Durante la sincronización de una operación de lectura o escritura de E/S, el Z80 inserta automáticamente un único ciclo de espera. [62] Los chips de E/S Zilog soportaban las nuevas interrupciones de modo 2 del Z80, lo que simplificaba el manejo de interrupciones para una gran cantidad de periféricos.
El Z80 fue descrito oficialmente como compatible con direccionamiento de memoria de 16 bits (64 KB) y direccionamiento de E/S de 8 bits (256 puertos). Todas las instrucciones de E/S en realidad hacen uso de todo el bus de direcciones de 16 bits. OUT (C),reg e IN reg,(C) colocan el contenido de todo el registro BC de 16 bits en el bus de direcciones; [52] OUT (n),A e IN A,(n) colocan el contenido del registro A en b8–b15 del bus de direcciones y n en b0–b7 del bus de direcciones. Un diseñador podría elegir decodificar todo el bus de direcciones de 16 bits en operaciones de E/S para aprovechar esta característica, o usar la mitad superior del bus de direcciones para seleccionar subcaracterísticas del dispositivo de E/S. Esta característica también se ha utilizado para minimizar los requisitos de hardware de decodificación, como en Amstrad CPC / PCW y ZX81 .
Segundas fuentes y derivados
Segundas fuentes
Mostek, que produjo el primer Z80 para Zilog, lo ofreció como segunda fuente como MK3880. SGS-Thomson (ahora STMicroelectronics ) también fue una segunda fuente, con su Z8400. Sharp y NEC desarrollaron segundas fuentes para el NMOS Z80, el LH0080 y el μPD780C , respectivamente. El LH0080 se utilizó en varias computadoras domésticas y computadoras personales fabricadas por Sharp y otros fabricantes japoneses, incluidas las computadoras Sony MSX y varias computadoras de la serie Sharp MZ . [63] Sharp desarrolló el LH0080A y el LH0080B para operar a frecuencias de 4 MHz y 6 MHz, respectivamente. [64] Sharp también desarrolló el LH0083 [65] compatible con Z80 DMA.
Toshiba fabricó una versión CMOS, la TMPZ84C00, que se cree [ ¿quién lo cree? ] (pero no está verificado) que es el mismo diseño que utilizó Zilog para su propio CMOS Z84C00. También hubo chips Z8400 y Z80 fabricados por GoldStar (ahora LG ) y la serie BU18400 de clones Z80 (incluidos DMA, PIO, CTC, DART y SIO) en NMOS y CMOS fabricados por ROHM Electronics . Los LH5080, [66] LH5081, [67] y LH5082, [68] que son versiones CMOS del Z80, PIO y CTC respectivamente, son fabricados por Sharp.
En Alemania del Este se fabricó un clon sin licencia del Z80, conocido como U880 . Se utilizó ampliamente en los sistemas informáticos de Robotron y VEB Mikroelektronik Mühlhausen (como la serie KC85 ) y también en muchos sistemas informáticos de fabricación propia. En Rumania se pudo encontrar otro clon sin licencia, llamado MMN80CPU y producido por Microelectronica , utilizado en ordenadores domésticos como TIM-S, HC, COBRA.
Además, se crearon varios clones del Z80 en la Unión Soviética , siendo los más notables el T34BM1, también llamado КР1858ВМ1 (en paralelo al clon soviético 8080 KR580VM80A ). La primera marca se utilizó en series de preproducción, mientras que la segunda tuvo que usarse para una producción más grande. Sin embargo, debido al colapso de la microelectrónica soviética a fines de la década de 1980, hay muchos más T34BM1 que КР1858ВМ1. [ cita requerida ]
Derivados
- Compatible con el Z80 original
- Hitachi desarrolló el HD64180 , un Z80 microcodificado y parcialmente dinámico en CMOS, con periféricos en chip y una MMU simple, que proporciona un espacio de direcciones de 1 MB . Más tarde, Zilog lo adquirió en segunda instancia, inicialmente como Z64180, y luego en la forma del Zilog Z180 ligeramente modificado [69] que tiene un protocolo de bus y tiempos mejor adaptados a los chips periféricos Z80. El Z180 se ha mantenido y desarrollado aún más bajo el nombre de Zilog, y las versiones más nuevas se basan en el núcleo S180/L180 completamente estático con un consumo de energía y EMI (ruido) muy bajos.
- Toshiba desarrolló la serie de "controladores periféricos inteligentes" Z84013/Z84C13 de 84 pines y la serie de "controladores periféricos inteligentes" Z84015/Z84C15 de 100 pines, básicamente núcleos Z80 NMOS y CMOS comunes con periféricos Z80, temporizador de vigilancia , reinicio al encender y generador de estado de espera en el mismo chip. Fabricados por Sharp y Toshiba. Estos productos son actualmente suministrados en segundo lugar por Zilog. [70]
- El Zilog Z380 compatible con Z80 de 32 bits, introducido en 1994, se utiliza en equipos de telecomunicaciones. [71]
- El eZ80 de Zilog, totalmente compatible con Z80, con una longitud de palabra de 8/16/24 bits y un espacio de dirección lineal de 16 MB, se introdujo en 2001. Existe en versiones con memoria SRAM o Flash en chip , así como con periféricos integrados. Una variante tiene un controlador de acceso al medio (MAC) en chip, y el software disponible incluye una pila TCP/IP . A diferencia del Z800 y el Z280, solo hay unas pocas instrucciones agregadas (principalmente dirección efectiva de carga (LEA), dirección efectiva de inserción (PEA) y cargas de 16/24 bits de dirección variable), pero las instrucciones se ejecutan entre 2 y 11 veces más eficientemente que en el Z80 original, con un valor medio de alrededor de 3-5 veces. Actualmente está especificado para frecuencias de reloj de hasta 50 MHz.
- Kawasaki desarrolló el KL5C8400 compatible con binarios, que es aproximadamente 1,2-1,3 veces más eficiente en ciclos de reloj que el Z80 original y puede alcanzar una velocidad de reloj de hasta 33 MHz. Kawasaki también produce la familia KL5C80A1x, que tiene periféricos así como una pequeña RAM en el chip; es aproximadamente tan eficiente en ciclos de reloj como el eZ80 y puede alcanzar una velocidad de reloj de hasta 10 MHz (2006). [73]
- La NEC μPD9002 era una CPU híbrida compatible con las familias Z80 y x86 .
- La familia de chips de procesadores de audio de la empresa china Actions Semiconductor (ATJ2085 y otros) contiene MCU compatibles con Z80 junto con un procesador DSP dedicado de 24 bits. [74] Estos chips se utilizan en muchos productos de reproducción de MP3 y multimedia.
- Los núcleos blandos sintetizables T80 (VHDL) y TV80 (Verilog) están disponibles en OpenCores.org. [75]
- El NSC800 de National Semiconductor , anunciado en 1980 [76], se utiliza en muchas máquinas de cifrado electrónico TeleSecurity Timmann (TST) [77] y en la Canon X-07 . El NSC800 es totalmente compatible con el conjunto de instrucciones Z-80. [78] El NSC800 utiliza un bus multiplexado como el 8085, pero tiene una distribución de pines diferente a la del Z80. [79]
- No compatible
- La serie TLCS 900 de Toshiba , compuesta por microcontroladores de gran volumen y en su mayoría programables una sola vez , se basa en el Z80. Comparten la misma estructura básica de registros BC, DE, HL, IX, IY y, en gran medida, las mismas instrucciones, pero no son compatibles a nivel binario, mientras que el TLCS 90 anterior es compatible con el Z80. [80]
- Los microcontroladores de la serie NEC 78K se basan en el Z80. Comparten la misma estructura básica de registros BC, DE y HL y tienen instrucciones similares, pero con nombres diferentes; no son compatibles a nivel binario.
- Parcialmente compatible
- Los microprocesadores/microcontroladores Rabbit 2000/3000/4000 de Rabbit Semiconductor [81] se basan en la arquitectura HD64180 / Z180 , aunque no son totalmente compatibles a nivel binario. [82]
- Ya no se produce
- El ASCII Corporation R800 era un procesador rápido de 16 bits utilizado en computadoras MSX TurboR ; era compatible con el software, pero no con el hardware, del Z80 (la sincronización de la señal, la distribución de pines y la función de los pines difieren de los del Z80).
- Los NMOS Z800 y CMOS Z280 de Zilog eran implementaciones de 16 bits del Z80 (anteriores al HD64180/Z180) con un espacio de direcciones MMU de 16 MB; añadieron muchas ortogonalizaciones y modos de direccionamiento al conjunto de instrucciones del Z80. Las características de los miniordenadores (como los modos de usuario y de sistema, la compatibilidad con multiprocesadores, MMU en chip, caché de datos e instrucciones en chip, etc.) se consideraban más bien como una complejidad que como una funcionalidad y un soporte para el diseñador de sistemas integrados (normalmente orientado a la electrónica); también dificultaban mucho la predicción de los tiempos de ejecución de las instrucciones. [ cita requerida ]
- Ciertos juegos arcade , como Pang / Buster Bros. , utilizan una CPU Z80 "Kabuki" encriptada fabricada por VLSI Technology , donde las claves de descifrado se almacenan en su memoria interna respaldada por batería , para evitar la piratería y los juegos piratas ilegales. [83]
-
ASCII- R800
-

-
Toshiba TMPZ84C015
Usos notables
Computadoras de escritorio

A finales de los años 1970 y principios de los años 1980, el Z80 se utilizó en un gran número de máquinas orientadas a los negocios bastante anónimas con el sistema operativo CP/M , una combinación que dominaba el mercado en ese momento. [84] [85] Cuatro ejemplos conocidos de computadoras comerciales Z80 que ejecutan CP/M son el Heathkit H89 , el portátil Osborne 1 , la serie Kaypro y el Epson QX-10 . Menos conocido fue el costoso Otrona Attache de alta gama. [86] Algunos sistemas usaban software de sistema operativo multitarea (como MP/M o Micronix de Morrow ) para compartir el procesador entre varios usuarios simultáneos .

Se introdujeron múltiples computadoras domésticas que usaban el Z80 como procesador principal o como una opción de complemento para permitir el acceso al software escrito para el Z80. Destacan la serie TRS-80 , incluido el modelo original (posteriormente rebautizado como "Modelo I"), el Modelo II , el Modelo III y el Modelo 4 , que estaban equipados con un Z80 como procesador principal, y algunos (pero no todos) otros modelos TRS-80 que usaban el Z80 como procesador principal o secundario. Otras máquinas notables fueron el DEC Rainbow 100 y el Seequa Chameleon , que presentaban tanto un Intel 8088 como una CPU Z80, para admitir aplicaciones CP/M-80 de 8 bits que se ejecutaban en el Z80, o un MS-DOS personalizado que no era totalmente compatible con aplicaciones DOS para PC que se ejecutaban en el 8088.
En 1981, Multitech (que más tarde se convertiría en Acer ) presentó el Microprofessor I , un sistema de entrenamiento sencillo y económico para el microprocesador Z80. En la actualidad, todavía lo fabrica y lo vende Flite Electronics International Limited en Southampton, Inglaterra .
En 1984, Toshiba presentó el Toshiba MSX HX-10 en Japón y Australia.
En 1985, Sharp presentó el Hotbit y Gradiente presentó el Expert , que se convirtieron en las computadoras domésticas de 8 bits dominantes en Brasil hasta finales de la década de 1980.
Computadoras portátiles y de mano
El uso del Z80 en dispositivos más ligeros y que funcionaban con baterías se generalizó con la disponibilidad de versiones CMOS del procesador. También inspiró el desarrollo de otros procesadores basados en CMOS, como el LH5801 [87] de Sharp. El Sharp PC-1500 , un ordenador de bolsillo programable en BASIC , se lanzó en 1981, seguido por el Sharp PC-1600 mejorado en 1986 y el Sharp PC-E220 en 1991. Los modelos posteriores de la serie Sharp Wizard de organizadores personales también estaban basados en Z80. Los portátiles que podían ejecutar el sistema operativo CP/M al igual que las máquinas de escritorio siguieron con el Epson PX-8 Geneva en 1984, y en 1985 el Epson PX-4 y el Bondwell-2 . Mientras que el mercado de las computadoras portátiles en los años siguientes se movió hacia procesadores Intel 8086 más potentes y el sistema operativo MS-DOS, todavía se estaban introduciendo sistemas ligeros basados en Z80 con una mayor duración de la batería, como el Cambridge Z88 en 1988 y el Amstrad NC100 en 1992. El Z8S180 derivado del Z80 también encontró su camino en uno de los primeros asistentes digitales personales operados con lápiz , el Amstrad PenPad PDA600 en 1993. VTech, con sede en Hong Kong, produjo una línea de pequeñas computadoras portátiles llamadas 'Lasers' basadas en un Z80. [88] [89] Los dos últimos fueron el Laser PC5 [90] y el PC6. [91] El Cidco MailStation Mivo 100, lanzado por primera vez en 1999, era un dispositivo de correo electrónico portátil independiente, con un microcontrolador basado en Z80. [92] Texas Instruments produjo una línea de organizadores de bolsillo (que finalizó en 2000) utilizando procesadores Toshiba construidos alrededor de un núcleo Z80; el primero de ellos fue el TI PS-6200 [93] y después de una larga producción de unas docenas de modelos culminó en su serie PocketMate. [94]
Sistemas integrados y electrónica de consumo

El Zilog Z80 ha sido durante mucho tiempo un microprocesador popular en sistemas integrados y núcleos de microcontroladores , [36] donde sigue siendo de uso generalizado en la actualidad. [26] [95] Las aplicaciones del Z80 incluyen usos en electrónica de consumo , productos industriales e instrumentos musicales electrónicos. Por ejemplo, el Z80 se utilizó en el innovador sintetizador musical Prophet-5 , [96] así como en el primer sintetizador MIDI Prophet 600. [97] Casio utilizó el Z80A en su consola de videojuegos PV-1000 .
Una buena cantidad de videojuegos arcade de principios de la década de 1980, incluido el juego arcade Pac-Man , contienen CPU Z80.
El Z80 se utilizó en las consolas Master System y Game Gear de Sega . La Sega Genesis contiene un Z80, con sus propios 8 KB de RAM, que funciona en paralelo con la CPU principal MC68000, tiene acceso directo a los chips de sonido del sistema y a los puertos de E/S (controlador), y tiene una ruta de datos conmutada al bus de memoria principal del 68000 (que proporciona acceso a la RAM principal de 64 KB, al cartucho de software y a todo el chip de vídeo); además de proporcionar compatibilidad con versiones anteriores de los juegos de Master System, el Z80 se utiliza a menudo para controlar y reproducir audio en el software de Genesis. [p]
Las CPU Z80 también se utilizaron en la pionera y popular serie de calculadoras gráficas TI-8x de Texas Instruments , comenzando en 1990 con la TI-81 , que cuenta con un Z80 con una frecuencia de reloj de 2 MHz. La mayoría de las calculadoras de línea superior de la serie, comenzando con la TI-82 y la TI-85 , tienen sus CPU Z80 a 6 MHz o más. (Algunos modelos con nombres TI-8x usan otras CPU, como la M68000, pero la gran mayoría están basadas en Z80. En ellas, es posible ejecutar programas de usuario ensamblados o compilados en forma de código de lenguaje de máquina Z80). La serie TI-84 Plus , presentada en 2004, todavía está en producción a partir de 2023. La serie TI-84 Plus CE , presentada en 2015, utiliza el procesador Zilog eZ80 derivado de Z80 y también sigue en producción a partir de 2024.
A finales de la década de 1980, una serie de teléfonos fijos soviéticos llamados "AON" presentaron el Z80; estos teléfonos ampliaron el conjunto de funciones de los teléfonos fijos con identificador de llamadas , diferentes tonos de llamada según la persona que llama, marcación rápida , etc. [98] Sin embargo, en la segunda mitad de la década de 1990, los fabricantes de estos teléfonos cambiaron a MCU compatibles con 8051 para reducir el consumo de energía y evitar que los adaptadores de corriente de pared compactos se sobrecalienten.
Discontinuación
El 15 de abril de 2024, Zilog anunció la discontinuación del procesador Z80 y que se aceptarían pedidos hasta el 14 de junio de 2024. El anuncio incluía 13 variantes del procesador Z80, muchas de las cuales eran variantes DIP40 del chip. Zilog continuará fabricando la versión eZ80 mejorada del procesador. [99]
Véase también
- Autobús S-100
- Símbolos
- Z88DK
- Sistema de formación Micro-Professor MPF-I , Z80
Notas al pie
- ^ Solo en CMOS, Nacional no hizo versión NMOS, según Historia Oral con Federico Faggin
- ^ Las variantes CMOS llegaron hasta los 20 MHz y los derivados compatibles con binarios llegaron hasta los 50 MHz
- ^ Compatible con versiones anteriores de Intel 8080
- ^ Zilog incluyó varias "trampas" en el diseño del chip para intentar retrasar esta copia. Según Faggin, un ingeniero de NEC le dijo más tarde que les había costado varios meses de trabajo, antes de que pudieran hacer funcionar su μPD780.
- ^ Esta era una característica bastante común de los diseños de minicomputadoras de la época y se utilizó en varios de los primeros microprocesadores.
- ^ Zilog fabricó el Z80, así como la mayoría de sus otros productos, durante muchos años hasta que vendió sus plantas de fabricación y se convirtió en la empresa " sin fábrica " que es hoy.
- ^ Aunque el 8080 tenía instrucciones de adición de 16 bits e instrucciones de incremento y decremento de 16 bits , no tenía una resta explícita de 16 bits ni un indicador de desbordamiento. El Z80 complementó esto con las instrucciones ADC HL,rr y SBC HL,rr, que establecen el nuevo indicador de desbordamiento en consecuencia. (El ADD HL,rr compatible con el 8080 no lo hace).
- ^ En particular, para manejar simultáneamente las mantisas de 32 bits de dos operandos en el formato de punto flotante de 40 bits utilizado en las computadoras hogareñas Sinclair . También se utilizaron de manera similar en algunas computadoras basadas en Z80 anteriores pero menos conocidas, como las suecas ABC 80 y ABC 800 .
- ^ Como esta actualización no necesita transferir ningún dato, solo direcciones de fila secuenciales de salida, ocupa menos de 1,5 T-estados. La señal M1 dedicada ( ciclo de máquina uno ) en el Z80 se puede utilizar para permitir que los chips de memoria tengan la misma cantidad de tiempo de acceso para la búsqueda de instrucciones que para el acceso a datos, es decir, casi 2 T-estados completos del ciclo de búsqueda de 4T (así como del ciclo de lectura de datos de 3T ). El Z80 podía usar memoria con el mismo rango de tiempos de acceso que el 8080 (o el 8086) a la misma frecuencia de reloj. Esta larga señal M1 (en relación con el reloj) también significaba que el Z80 podía emplear aproximadamente 4-5 veces la frecuencia interna de un 6800, 6502 o similar usando el mismo tipo de memoria.
- ^ Unlike the original nMOS version, which used dynamic latches and could not be stopped for more than a few thousand clock cycles.
- ^ The related 8086 family also inherited this register design.
- ^ This variable HL pointer was actually the only way to access memory (for data) in the Datapoint 2200, and hence also in the Intel 8008. No direct addresses could be used to access data.
- ^ Load memory immediate not available on Datapoint 2200.
- ^ 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.[41] - ^ For example, on the 8080, a programmer might test the parity of a byte by
ADDing zero to it, bySUBtracting zero from it, or byORing orXORing it with zero; all of these are single-instruction operations of the same speed and size, on both the 8080 and the Z80. If the programmer happened to choose to test parity byORing orXORing with zero, then the Z80 will execute the program correctly, but if the programmer chose to test parity byADDing orSUBtracting zero, then the Z80 will always reset the P/V flag to zero (since adding or subtracting zero never causes an overflow or underflow) instead of assigning P to correctly indicate the parity of the byte (as the 8080—or 8085—would), and the program may fail. Nothing in the Intel programming manuals or other documentation for the 8080 discouraged use of arithmetic instructions, or prescribed using logical instructions, to test parity, so there is no reason that an 8080 programmer exercising recommended good programming practice should be expected to have chosen one of the ways that will work on the Z80 over one of the ways that will not work. - ^ This common, but merely optional and not limiting, usage leads to the frequent but incorrect description of the Z80 in the Genesis as a "sound processor".
References
- ^ a b c Zilog (2005). Z80 Family CPU User Manual (PDF). Zilog. p. 5. Archived (PDF) from the original on June 19, 2009. Retrieved July 18, 2009.
- ^ a b Faggin, Shima & Ungermann 2007.
- ^ a b Faggin, Shima & Ungermann 2007, p. 1.
- ^ a b Faggin, Shima & Ungermann 2007, p. 2.
- ^ a b c Faggin, Shima & Ungermann 2007, p. 3.
- ^ a b c Faggin, Shima & Ungermann 2007, p. 4.
- ^ Faggin, Shima & Ungermann 2007, p. 8.
- ^ a b Faggin, Shima & Ungermann 2007, p. 5.
- ^ Faggin, Shima & Ungermann 2007, p. 19.
- ^ Faggin, Shima & Ungermann 2007, p. 6.
- ^ Faggin, Shima & Ungermann 2007, p. 7.
- ^ Faggin, Shima & Ungermann 2007, p. 17.
- ^ "Z80® DMA Direct Memory Access Controller" (PDF). Archived (PDF) from the original on February 5, 2024. Retrieved January 8, 2024.
- ^ Anderson (1994), p. 51.
- ^ Faggin, Shima & Ungermann 2007, p. 13.
- ^ Faggin, Shima & Ungermann 2007, p. 9.
- ^ Anderson (1994), p. 57.
- ^ a b Brock, Gerald W. (2003). The second information revolution. Harvard University Press. ISBN 978-0-674-01178-6.
- ^ "History of the 8-bit: travelling far in a short time". InfoWorld. Vol. 4, no. 47. Palo Alto, CA: Popular Computing Inc. November 29, 1982. pp. 58–60. ISSN 0199-6649. Archived from the original on January 5, 2024.
- ^ Faggin, Federico; Shima, Masatoshi; Ungermann, Ralph (August 19, 1976). "Z-80 chip set heralds third microprocessor generation" (PDF). Electronics. Vol. 49, no. 17. New York: McGraw–Hill. pp. 89–93. Archived (PDF) from the original on January 31, 2023.
- ^ Ciarcia (1981), pp. 31, 32.
- ^ a b Chen, Wai-Kai (2002). The circuits and filters handbook. CRC Press. 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.
- ^ Mathur (1989). Introduction to Microprocessors. Tata McGraw-Hill Publishing Company. p. 111. ISBN 978-0-07-460222-5.
The register architecture of the Z80 is more innovative than that of the 8085
- ^ Brewer, Tony. "Z80 Special Reset". GitHub. Archived from the original on April 27, 2024. Retrieved April 27, 2024.
- ^ Adrian, Andre (June 4, 2011). "Z80, the 8-bit Number Cruncher". Archived from the original on November 26, 2023.
- ^ a b Balch, Mark (June 18, 2003). "Digital Fundamentals". Complete Digital Design: A Comprehensive Guide to Digital Electronics and Computer System Architecture. Professional Engineering. New York, New York: McGraw-Hill Professional. p. 122. ISBN 0-07-140927-0.
- ^ 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.
- ^ Adrian, Andre (June 4, 2011). "Z80, the 8-bit Number Cruncher: Z80 32-bit (long) add". Archived from the original on November 26, 2023.
- ^ Popular Computing. McGraw-Hill. 1983. p. 15.
- ^ Markoff, John (October 18, 1982). "Zilog's speedy Z80 soups up 8-bit to 16-bit performance". InfoWorld. Vol. 4, no. 41. Palo Alto, CA: Popular Computing, Inc. p. 1. ISSN 0199-6649. Archived from the original on January 5, 2024.
- ^ Electronic design. Hayden. 1988. p. 142.
In addition to supporting the entire Z80 instruction set, the Z180
- ^ Ganssle, Jack G. (1992). "The Z80 Lives!". Archived from the original on December 20, 2023.
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
- ^ Shiriff, Ken. "Down to the silicon: how the Z80's registers are implemented". Archived from the original on November 5, 2023.
- ^ Kilobaud. 1001001. 1977. p. 22.
- ^ Zaks, Rodnay (1982). Programming the Z80 (3rd ed.). SYBEX. p. 62. ISBN 978-0-89588-069-7.
- ^ a b Heath, Steve (2003). Embedded systems design. Oxford: Newnes. p. 21. ISBN 978-0-7506-5546-0.
- ^ Rison, Mark. Young, Sean (ed.). "Z80 Flag Affection". z80.info. Thomas Scherrer. Archived from the original on December 23, 2023. Retrieved June 14, 2016.
- ^ Shirriff, Ken. "The Z-80 has a 4-bit ALU. Here's how it works". Archived from the original on September 9, 2013. Retrieved November 16, 2021.
- ^ a b Durda IV, Frank (2012). "8080/Z80 Instruction Set". Archived from the original on February 11, 2016. Retrieved July 22, 2009.
- ^ "8080A/ 8-Bit N-Channel Microprocessor". Intel Component Data Catalog 1978. Santa Clara, CA: Intel Corporation. 1978. pp. 11–17.
All mnemonics copyright Intel Corporation 1977
- ^ "Z80 Relocating Macro Assembler User's Guide" (PDF). p. B–2. Archived from the original (PDF) on July 20, 2011. Retrieved June 4, 2009.
- ^ Scanlon, Leo J. (1988). 8086/8088/80286 assembly language. Brady Books. p. 12. ISBN 978-0-13-246919-7.
[...] The 8086 is software-compatible with the 8080 at the assembly-language level. [...]
- ^ Nelson, Ross P. (January 1989) [1988]. The 80386 Book: Assembly Language Programmer's Guide for the 80386. Microsoft Programming Series (1 ed.). Microsoft Press. p. 2. ISBN 978-1-55615-138-5.
[...] An Intel translator program could convert 8080 assembler programs into 8086 assembler programs [...]
- ^ a b "Z80 CPU Introduction". Zilog. 1995. Archived from the original on December 20, 2023.
It has a language of 252 root instructions and with the reserved 4 bytes as prefixes, accesses an additional 308 instructions.
- ^ "Z80-CPU Instruction Set" (PDF). Zilog. 1976. p. 19. Archived from the original on November 5, 2023. Retrieved July 20, 2021.
- ^ Sanchez, Julio; Canton, Maria P. (2008). Software Solutions for Engineers And Scientists. Taylor & Francis. p. 65. ISBN 978-1-4200-4302-0.
The 8-bit microprocessors that preceded the 80x86 family (such as the Intel 8080, the Zilog Z80, and the Motorola) did not include multiplication.
- ^ Ciarcia (1981), p. 86.
- ^ HAYES, JOHN P. (1978). Computer Architecture and Organization. p. 423. ISBN 0-07-027363-4.
- ^ Froehlich, Robert A. (1984). The free software catalog and directory. Crown Publishers. p. 133. ISBN 978-0-517-55448-7.
Undocumented Z80 codes allow 8 bit operations with IX and IY registers.
- ^ a b Bot, Jacco J. T. "Z80 Undocumented Instructions". Home of the Z80 CPU. Archived from the original on December 23, 2023.
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.
- ^ Robin Nixon The Amstrad Notepad Advanced User Guide, Robin Nixon, 1993, ISBN 1-85058-515-6, pages 219–223.
- ^ a b Young, Sean (October 1998). "Z80 Undocumented Features (in software behaviour)". Archived from the original on December 25, 2023.
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.
- ^ "Timing". Z80 Family CPU User Manual (PDF). Zilog. 2016. p. 7. UM008011-0816. Archived (PDF) from the original on December 26, 2023. Retrieved January 5, 2024.
- ^ Ciarcia (1981), p. 65.
- ^ Zaks, Rodnay (1989). Programming the Z80. Sybex. p. 200. ISBN 978-0-89588-069-7.
ADD A, n Add accumulator with immediate data n. MEMORY Timing: 2 M cycles; 7 T states.
- ^ Ciarcia (1981), p. 63.
- ^ Ciarcia (1981), p. 77.
- ^ Ciarcia (1981), p. 36.
- ^ Ciarcia (1981), p. 58.
- ^ "Special-Purpose Registers". Z80 Family CPU User Manual (PDF). Zilog. 2016. p. 3. UM008011-0816. Archived (PDF) from the original on December 26, 2023. Retrieved January 5, 2024.
- ^ "Z80 Family CPU Peripherals User Manual" (PDF). EEWORLD Datasheet. ZiLOG. 2001. Archived from the original (PDF) on May 2, 2014. Retrieved April 30, 2014.
- ^ "Sharp 1986 Semiconductor Data Book" (PDF). p. 218. Archived (PDF) from the original on January 1, 2024. Retrieved January 1, 2024.
- ^ "Overview of the SHARP MZ-series". SharpMZ.org. Archived from the original on March 27, 2008. Retrieved July 28, 2011.
Most MZ's use the 8bit CPU LH0080 / Z80 [...]
- ^ "LH0080/LH0080A/LH0080B". 1986 Semiconductor Data Book (PDF). Sharp Corporation. 1986. p. 210. Archived (PDF) from the original on January 1, 2024. Retrieved January 1, 2024.
- ^ "Sharp 1986 Semiconductor Data Book" (PDF). pp. 255–269. Archived (PDF) from the original on January 20, 2024. Retrieved January 13, 2024.
- ^ "Sharp 1986 Semiconductor Data Book" (PDF). pp. 296–301. Archived (PDF) from the original on January 20, 2024. Retrieved January 20, 2024.
- ^ "Sharp 1986 Semiconductor Data Book" (PDF). pp. 302–306. Archived (PDF) from the original on January 28, 2024. Retrieved January 28, 2024.
- ^ "Sharp 1986 Semiconductor Data Book" (PDF). pp. 307–311. Archived (PDF) from the original on January 28, 2024. Retrieved January 28, 2024.
- ^ Ganssle, Jack G. (1992). "The Z80 Lives!". Archived from the original on May 1, 2009. Retrieved July 17, 2009.
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.
- ^ Ganssle, Jack G. (1992). "The Z80 Lives!". Archived from the original on May 1, 2009. Retrieved July 17, 2009.
Both Toshiba and Zilog sell the 84013 and 84015, which are Z80 cores with conventional Z80 peripherals integrated on-board.
- ^ Granville, Fran (August 1, 1996). "EDN Access — 08.01.96 Z80 turns 20". EDN. Archived from the original on August 7, 2023. Retrieved August 7, 2023.
- ^ "EZ80 ACCLAIM Product Family". Zilog. Archived from the original on December 20, 2008.
- ^ 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
- ^ "Hardware specs". S1mp3.org. October 19, 2005. Archived from the original on December 8, 2005.
- ^ "Overview :: T80 cpu :: OpenCores". opencores.org. Archived from the original on April 1, 2024. Retrieved July 1, 2024.
- ^ Rada, Col (March 1981). "NSC800 — a low-power high-performance microprocessor family". Electronics and Power. 27 (3). Institution of Engineering and Technology: 222. doi:10.1049/ep.1981.0107. Archived from the original on October 16, 2021. Retrieved June 1, 2021.
- ^ "TST-4043: Data encryptor with HF-modem and FEC". Crypto Museum. February 27, 2018. Archived from the original on November 5, 2023.
- ^ "NSC800 High-Performance Low-Power CMOS Microprocessor" (PDF). National Semiconductor. June 1992. Archived (PDF) from the original on November 19, 2023.
- ^ "MCS-85, Zilog Z80 and National NSC800 Expansion Boards". CPU Shack. February 15, 2015. Archived from the original on September 30, 2023.
- ^ "Section 6 MOS MPU, MCU, and Peripherals Market Trends" (PDF). Integrated Circuit Engineering Corporation. p. 16. Archived from the original (PDF) on June 14, 2011.
- ^ Axelson, Jan (2003). Embedded Ethernet and Internet Complete. Lakeview research. p. 93. ISBN 978-1-931448-00-0.
Rabbit Semiconductor's Rabbit 3000 microprocessor, which is a much improved and enhanced derivative of ZiLOG, Inc.'s venerable Z80 microprocessor.
- ^ Hyder, Kamal; Perrin, Bob (2004). Embedded systems design using the Rabbit 3000 microprocessor. Newnes. p. 32. ISBN 978-0-7506-7872-8.
The Rabbit parts are based closely on the Zilog Z180 architecture, although they are not binary compatible with the Zilog parts.
- ^ Cruz, Eduardo (November 23, 2014). "Capcom Kabuki CPU – Intro". Arcade Hacker. Archived from the original on November 5, 2023.
- ^ Holtz, Herman (1985). Computer work stations. Chapman and Hall. p. 223. ISBN 978-0-412-00491-9.
and CP/M continued to dominate the 8-bit world of microcomputers.
- ^ Dvorak, John C. (May 10, 1982). "After CP/M, object oriented operating systems may lead the field". InfoWorld. Vol. 4, no. 18. InfoWorld Media Group. p. 20. ISSN 0199-6649. Archived from the original on January 6, 2024.
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.
- ^ Stengel, Steven. "Otrona Attache". Steve's Old Computer Museum. Archived from the original on December 27, 2023. Retrieved March 5, 2019.
- ^ "Sharp PC-1500 Technical Reference Manual" (PDF). Archived (PDF) from the original on November 5, 2023.
- ^ "Poor Man's Laptop". Google Books. Popular Mechanics, April 1991, page 120. April 1991. Retrieved April 11, 2018.
- ^ "Laser PC4". Old Computer Museum. Archived from the original on November 5, 2023. Retrieved April 11, 2018.
- ^ "Laser PC5 from VTech". larwe.com. Archived from the original on November 5, 2023. Retrieved April 11, 2018.
- ^ "Laser PC6". Perfect Solutions dot com. Perfect Solutions. Archived from the original on May 21, 2018. Retrieved April 11, 2018.
- ^ "Mailstation Development". Fybertech.net. Archived from the original on January 6, 2024. Retrieved April 18, 2021.
- ^ Woerner, Joerg. "Texas Instruments PS-6200". Datamath Calculator Museum. Archived from the original on November 5, 2023. Retrieved June 18, 2019.
- ^ Woerner, Joerg. "Texas Instruments PocketMate 100". Datamath Calculator Museum. Archived from the original on November 5, 2023. Retrieved June 18, 2019.
- ^ Ian R. Sinclair (2000). Practical electronics handbook (5 ed.). Oxford, Angleterre: Newnes. p. 204. ISBN 978-0-7506-4585-0. LCCN 00502236. OCLC 42701044.
- ^ "Gordon Reid's Vintage Synths – the Sequential Circuits Prophet 5 and Prophet 10". gordonreid.co.uk. 1999. Archived from the original on November 5, 2023.
- ^ Fabio, Adam (March 19, 2014). "Prophet 600: A Classic Synthesizer Gets Processor Upgrade". Archived from the original on November 5, 2023.
- ^ "Making a demo for an old phone — AONDEMO". habr.com. January 29, 2020. Archived from the original on November 5, 2023.
- ^ Edwards, Benj (April 22, 2024). "After 48 years, Zilog is killing the classic standalone Z80 microprocessor chip". Ars Technica. Archived from the original on May 12, 2024. Retrieved May 23, 2024.
Sources
- Anderson, A. John (1994). Foundations of computer technology (1st ed.). London: Chapman & Hall. ISBN 0-412-59810-8.
- Ciarcia, Steve (1981). Build Your Own Z80 Computer – Design Guidelines and Application Notes (1st ed.). Byte Books. ISBN 978-0-07-010962-9.
- Faggin, Federico; Peuto, Bernard; Shima, Masatoshi; Ungermann, Ralph (April 27, 2007). "Oral History Panel on the Development and Promotion of the Zilog Z8000 Microprocessor" (PDF) (Interview).
Further reading
- Datasheets and manuals
- Z80 Datasheet (NMOS); Zilog; 10 pages; 1978.
- Z80 Data Book (NMOS); Zilog; 131 pages; 1978.
- Z80 Datasheet (NMOS and CMOS); Zilog; 36 pages; 2002. Errata
- Z80 User Manual (NMOS and CMOS); Zilog; 332 pages; 2016.
- Z80 Peripheral User Manual (NMOS and CMOS); Zilog; 330 pages; 2001.
- Hardware books
- Build Your Own Z80 Computer – Design Guidelines and Application Notes; 1st Ed; Steve Ciarcia; Byte Books; 332 pages; 1981; ISBN 978-0070109629. (archive)
- Z80 Microprocessor – Architecture, Interfacing, Programming, and Design; 1st Ed; Ramesh Gaonkar; Macmillan; 674 pages; 1988; ISBN 978-0675205405. (archive)
- Z80 Users Manual – Pin Definitions, Control Signals, Peripherals, and More; 1st Ed; Joseph Carr; Reston; 338 pages; 1980; ISBN 978-0835995177. (archive)
- Microprocessor Interfacing Techniques; 3rd Ed; Rodnay Zaks and Austin Lesea; Sybex; 466 pages; 1979; ISBN 978-0-89588-029-1. (archive)
- Software books
- Programming the Z80; 3rd Ed; Rodnay Zaks; Sybex; 630 pages; 1980; ISBN 978-0895880949. (archive)
- Z80 Assembly Language Programming; 1st Ed; Lance Leventhal; Osborne/McGraw-Hill; 642 pages; 1979; ISBN 978-0931988219. (archive)
- 8080/Z80 Assembly Language – Techniques for Improved Programming; 1st Ed; Alan Miller; John Wiley & Sons; 332 pages; 1981; ISBN 978-0471081241. (archive)
- Z80 and 8080 Assembly Language Programming; 1st Ed; Kathe Spracklen; Hayden; 180 pages; 1979; ISBN 978-0810451674. (archive)
- Practical Microcomputer Programming – The Z80 – including Source for Resident Assembler and Debug Monitor; 1st Ed; Walter Weller; Northern Technology; 501 pages; 1978; ISBN 978-0930594053. (archive)
- Z80 Assembly Language Subroutines; 1st Ed; Lance Leventhal and Winthrop Saville; Osborne/McGraw-Hill; 512 pages; 1983; ISBN 978-0931988912. (archive)
- Undocumented Z80 Documented; Sean Young; v0.91; 52 pages; 2005. (archive)
- Reference cards
- Reference Card for the Z80 Microprocessor; Shirley & Nanos; Nanos Systems; 16 pages; 1981. (archive)
- Z80 Microprocessor Instant Reference Card; James Lewis; Micro Logic; 2 pages; 1981. (archive)
External links
- Z80 unofficial support page
- Z80 technical literature
- Z80 test collection
- Z80 Cheat Sheet
- List of Z80 compatible chips
- Shirriff, Ken (September 2013). "Reverse-engineering the Z-80: the silicon for two interesting gates explained". Archived from the original on November 28, 2023. Retrieved November 26, 2023.
- — (September 2013). "The Z-80 has a 4-bit ALU. Here's how it works". Archived from the original on September 9, 2013. Retrieved November 16, 2021.
- — (October 2014). "Down to the silicon: how the Z80's registers are implemented". Archived from the original on October 6, 2014. Retrieved October 5, 2014.
- — (November 2013). "The Z-80's 16-bit increment/decrement circuit reverse engineered". Archived from the original on January 15, 2024. Retrieved November 26, 2023.
Simulators / Emulators:
- Z80 software emulators
- Yet Another Z80 Emulator
- Z80 Bus Emulator for education purpose
- Visual Z80 Remix
- Z80 emulation library written in ANSI C
- Boards
- Grant's 7-chip Z80 computer
- Grant's 9-chip Z80 computer, supports CP/M 2.2 or BASIC
- link3000 6-chip Z80 computer, supports CP/M 2.2
