El Zilog Z80 es un microprocesador de 8 bits diseñado por Zilog , lanzado por primera vez en 1976; desempeñó un papel importante en la evolución de la informática personal temprana . Fue diseñado para ser compatible a nivel de software con el Intel 8080 , ofreciendo una alternativa atractiva debido a su mejor integración y mayor rendimiento. Junto con los siete registros y el registro de indicadores del 8080, el Z80 introdujo un conjunto de registros alternativo, dos registros de índice de 16 bits e instrucciones adicionales, incluyendo manipulación de bits y copia/búsqueda de bloques.
Originalmente concebido para su uso en sistemas embebidos como el 8080, la combinación de compatibilidad, asequibilidad y rendimiento superior del Z80 propició su adopción generalizada en sistemas de videojuegos y ordenadores domésticos a finales de la década de 1970 y principios de la de 1980, impulsando así la revolución de la informática personal . El Z80 se utilizó en productos emblemáticos como el Osborne 1 , el Radio Shack TRS-80 , la ColecoVision , el ZX Spectrum , el Master System de Sega y la máquina recreativa Pac-Man . A principios de la década de 1990, se empleó en dispositivos portátiles, como la Game Gear y la TI-81, así como en las calculadoras gráficas posteriores. [ 2 ] [ 3 ]
El Z80 fue una creación de Federico Faggin , una figura clave en la creación del Intel 8080. Tras dejar Intel en 1974, cofundó Zilog con Ralph Ungermann . El Z80 debutó en julio de 1976, y su éxito permitió a Zilog establecer sus propias fábricas de chips . [ 4 ] Para la producción inicial, Zilog otorgó licencias del Z80 a las empresas estadounidenses Synertek y Mostek , junto con el fabricante europeo de segunda línea SGS . El diseño también fue copiado por varios fabricantes japoneses, de Europa del Este y soviéticos, obteniendo aceptación en el mercado global a medida que grandes empresas como NEC , Toshiba , Sharp y Hitachi producían sus propias versiones o clones compatibles.
El Z80 continuó utilizándose en sistemas embebidos durante muchos años a pesar de la introducción de procesadores más potentes, y se mantuvo en producción hasta 2024, 48 años después de su lanzamiento original. [ 5 ] Zilog también continuó mejorando el diseño básico del Z80 con varios sucesores, incluidos el Z180 , Z280 , Z380 y eZ80 .
Historia



Historia temprana
En Fairchild Semiconductor , y posteriormente en Intel , el físico e ingeniero Federico Faggin trabajó 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 lógico y de transistores del 4004 y el 8080 bajo la supervisión de Faggin, mientras que Ralph Ungermann estuvo a cargo del diseño de circuitos integrados personalizados . [ 6 ]
A principios de 1974, Intel no veía los microprocesadores tanto como productos para vender por separado, sino como una forma de vender más de sus productos principales: la RAM estática y la ROM . Una reorganización puso algunas de las secciones anteriormente independientes bajo la dirección de Les Vadasz, lo que diluyó aún más la posición del microprocesador en la empresa. Ese año, la recesión de 1973-1975 alcanzó su punto álgido e Intel despidió a varios empleados. [ 6 ] Todo esto llevó a Faggin a sentirse inquieto, e invitó a Ungermann a tomar algo y le preguntó si estaría interesado en fundar su propia empresa. Ungermann aceptó de inmediato y, como tenía menos responsabilidades en Intel, se marchó en agosto o septiembre, seguido por Faggin, cuyo último día en Intel fue Halloween de 1974. [ 7 ] Cuando Shima se enteró, pidió unirse también a la nueva empresa, pero al no tener un diseño de producto real ni capital, le dijeron que esperara. [ 8 ]
La empresa recién formada 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, inicialmente conocido como Super 80, cuya característica principal era el uso de un bus de +5 V [ 8 ] 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 varias de las características del Motorola 6800 , incluidos registros de índice e interrupciones mejoradas . [ 9 ]
Comienza la inversión de Exxon y el desarrollo detallado.
Mientras aún se encontraban en fase de constitución, el boletín informativo del sector, Electronic News , se enteró de su existencia y publicó un artículo sobre la empresa recién formada. Esto atrajo la atención de Exxon Enterprises, la división de inversión en alta tecnología de Exxon . En aquel momento, en plena recesión, el capital de riesgo disponible era escaso; en 1975, se invirtieron un total de 10 millones de dólares en toda la industria (equivalentes a 60 millones de dólares en 2025 ). Alguien de Exxon contactó con la empresa, aún sin nombre, [ 8 ] y concertó una reunión que finalmente derivó en una financiación inicial de 500 000 dólares en junio de 1975 (equivalentes a 3 millones de dólares en 2025 ). [ 10 ]
Con la financiación en discusión y un diseño por construir, Masatoshi Shima se unió en febrero de 1975. [ 9 ] Shima inmediatamente se dedicó a producir un diseño de alto nivel, agregando varios conceptos propios. En particular, utilizó su experiencia con minicomputadoras NEC para agregar el concepto de dos conjuntos de registros de procesador para que pudieran responder rápidamente a las interrupciones . [ 7 ] [ d ] Ungerman comenzó el desarrollo de una serie de controladores y chips periféricos relacionados que complementarían el diseño. [ 11 ]
Durante este período, Shima desarrolló una reputación legendaria por su capacidad para convertir conceptos lógicos en diseño físico en tiempo real; al discutir una característica propuesta, a menudo interrumpía para indicar cuánto espacio ocuparía en el chip y vetaba su adición si era demasiado grande. [ 12 ] La primera versión 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 fabricación de la cinta se completó en noviembre y la conversión de la cinta en una máscara de producción requirió dos meses más. [ 13 ]
Faggin ya había comenzado a buscar un socio de producción. Para entonces, Synertek y Mostek ya habían establecido las líneas de producción de modo de agotamiento que podían utilizarse para producir el diseño. Tras haber hablado previamente con Synertek, Faggin se dirigió primero a ellos. Sin embargo, el presidente de Synertek exigió que se le otorgara 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 período de exclusividad mientras Zilog establecía sus líneas, y finalmente se le otorgó el acuerdo de segunda fuente. [ 14 ]
Tras considerar varios nombres para la nueva empresa, y encontrarlos tan poco memorables que no los recordaban ni siquiera al día siguiente, Faggin y Ungermann barajaban ideas basadas en la "lógica integrada" cuando Ungermann dijo: "¿Qué tal Zilog?". Faggin aceptó de inmediato, afirmando que podrían decir que era "la última palabra en lógica integrada". Cuando se reunieron al día siguiente y ambos lo recordaron al instante, la empresa ya tenía nombre. [ 15 ]
En producción
Las primeras muestras fueron devueltas por Mostek el 9 de marzo de 1976. [ 11 ] A finales de mes, también habían completado un sistema de desarrollo basado en ensamblador . Algunos de los circuitos integrados periféricos y de soporte del Z80 estaban en desarrollo en ese momento, y algunos de ellos se lanzaron durante el año siguiente. Entre ellos estaban el Z80 CTC (contador/temporizador), el Z80 DMA [ 16 ] (acceso directo a memoria), el Z80 DART (transmisor-receptor 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. [ 17 ] En ese momento, existía preocupación en la industria de semiconductores por la reproducción no autorizada de diseños de chips por parte de fabricantes extranjeros. Para ayudar a disuadir la ingeniería inversa, el equipo de Zilog incorporó seis "trampas", transistores que fueron modificados sutilmente para comportarse de manera diferente a lo que su apariencia sugeriría. Según Shima, un ingeniero de NEC le dijo más tarde que estas trampas retrasaron sus esfuerzos de ingeniería inversa en seis meses. [ 18 ] NEC luego resolvió una disputa por infracción de patentes con Zilog, obteniendo una licencia para producir versiones autorizadas del Z80 y otros chips. [ 19 ]
Tras el exitoso lanzamiento del Z80, Faggin y Ungermann se acercaron a Exxon para obtener financiación para establecer una planta de fabricación de semiconductores . Exxon aceptó, y Zilog construyó su propia línea de producción, lo que le permitió capturar entre el 60 y el 70 por ciento del mercado total de ventas del Z80. [ 20 ] Mientras tanto, Mostek fue autorizada a producir una versión con licencia del chip, el MK3880, proporcionando una segunda fuente para los clientes, una garantía de la que Intel carecía. En ese momento, los acuerdos de segunda fuente se consideraban esenciales, especialmente para las empresas emergentes como Zilog, que conllevaban un mayor riesgo de fracaso empresarial e interrupción del suministro. [ e ] [ 9 ]
Comparación con el 8080
Faggin diseñó el conjunto de instrucciones para que fuera compatible binariamente con el 8080 [ 21 ] [ 22 ] 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 su código generado), se ejecutaría sin modificaciones en la nueva CPU Z80. Masatoshi Shima diseñó la mayor parte de la microarquitectura , así como los niveles de compuertas y transistores de la CPU Z80, con la ayuda de un pequeño grupo de ingenieros y diseñadores de circuitos integrados . [ 23 ] [ 24 ] El director ejecutivo Federico Faggin participó activamente en el diseño del chip, junto con dos personas dedicadas a ello. Según Faggin, trabajaba 80 horas semanales para cumplir con el ajustado cronograma impuesto por los inversores financieros. [ 4 ]
El Z80 ofrecía múltiples mejoras con respecto al 8080: [ 22 ]
- Un conjunto de instrucciones mejorado que incluye:
- un sistema de mnemónicos para instrucciones de ensamblador más lógico, comprensible y legible.
- Instrucciones de movimiento de datos de 16 bits más flexibles (carga o LD), incluyendo, de manera crucial, el puntero de pila SP.
- modos de direccionamiento más flexibles para la entrada/salida a puertos periféricos externos
- Direccionamiento de un solo bit de todos los registros y la memoria, incluyendo pruebas de bits.
- Desplazamientos/rotaciones en la memoria y los registros distintos del acumulador.
- La resta es compatible con la aritmética BCD.
- Instrucciones de rotación para cadenas de números BCD empaquetadas en memoria
- Resta de 16 bits y negación de 8 bits
- bucle del programa
- saltos relativos del contador de programa (PC)
- Instrucciones de copia de bloques , entrada/salida (E/S) de bloques y búsqueda de bytes. [ 25 ]
- Un indicador de desbordamiento con mejor soporte para aritmética con signo de 8 y 16 bits. [ f ]
- Nuevos registros de índice IX e IY con modo de direccionamiento base+ desplazamiento
- Un mejor sistema de interrupciones :
- Un sistema de interrupción vectorizada 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 el 8080). [ 26 ]
- 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 registros duplicado completo , [ 27 ] que podía cambiarse rápidamente, para acelerar la respuesta a interrupciones como manejadores de eventos asíncronos rápidos o un despachador multitarea . Aunque no estaban pensados como registros adicionales para código general, se usaban de esa manera en algunas aplicaciones. [ g ]
- Se requiere menos hardware para la fuente de alimentación , la generación de reloj y la interfaz con la memoria y la 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 de alta amplitud (de 9 a 12 voltios) sin solapamiento ).
- Refresco de DRAM integrado , que de otro modo requeriría circuitos externos. El 8080 se diseñó antes de que la DRAM se generalizara, y la SRAM común no necesitaba refresco. A mediados de la década de 1970, la DRAM había reemplazado en gran medida a la SRAM para la mayoría de las funciones, pero usar DRAM con el 8080 requería circuitos externos adicionales. Implementar esto internamente en el Z80 redujo la complejidad y el costo de un sistema completo. [ h ]
- Buses no multiplexados (el 8080 tenía señales de estado multiplexadas en el bus de datos).
- Un reinicio especial que pone a cero solo el contador de programa, de modo que se pueda usar una sola CPU Z80 en un sistema de desarrollo como un emulador en circuito . [ 28 ]
Éxito en el mercado
El Z80 reemplazó al 8080 y a su sucesor, el 8085 , en el mercado de procesadores [ 29 ] y se convirtió en una de las CPU de 8 bits más populares y utilizadas. [ 30 ] [ 31 ] Algunas organizaciones, como British Telecom, se mantuvieron fieles al 8085 para aplicaciones integradas, debido a su familiaridad con él y a su interfaz serie en chip y arquitectura de interrupciones. De igual manera, Zenith Data Systems combinó 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 basados en el Z80, el Heathkit H89 y el Zenith Z-89 . Sin embargo, se fabricaron otros ordenadores que integraban 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 .
Posteriormente, Zilog fabricó un Z80 de bajo consumo, adecuado para el creciente mercado de ordenadores portátiles de principios de la década de 1980. Intel produjo un CMOS 8085 (80C85) utilizado en ordenadores portátiles alimentados por batería, como el portátil diseñado por Kyocera en abril de 1983, también vendido por Tandy (como TRS-80 Modelo 100 ), Olivetti y NEC. Sin embargo, en los años siguientes, 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.
Quizás una de las claves del éxito inicial del Z80 fue la función de actualización de DRAM integrada, al menos en mercados como el de CP/M y otros ordenadores de oficina y domésticos. (La mayoría de los sistemas embebidos Z80 utilizan RAM estática que no requiere actualización). También pudo deberse a su sistema de interrupciones minimalista de dos niveles o, por el contrario, a su sistema general de interrupciones en cadena multinivel, útil para dar servicio a múltiples chips de E/S del Z80. Estas características permitieron construir sistemas con menos hardware de soporte y diseños de placas de circuito impreso más sencillos.
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 las operaciones matemáticas de punto flotante en comparación con las CPU de 8 bits con menos registros. (El Z80 puede almacenar internamente varios de estos números, utilizando HL'HL, DE'DE y BC'BC como registros de 32 bits, evitando tener que acceder a ellos desde la RAM más lenta durante el cálculo). [ 32 ]
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 6 MHz (Z80B) y 8 MHz (Z80H). [ 33 ] [ 34 ] Se produjo una versión NMOS como una pieza de 10 MHz a partir de finales de la década de 1980. Se desarrollaron versiones CMOS con límites superiores de frecuencia especificados que van desde 4 MHz hasta 20 MHz para la versión que se vende hoy. Las versiones CMOS permitían el modo de espera de bajo consumo con el estado interno retenido, sin tener un límite inferior de frecuencia. [ i ] Los derivados totalmente compatibles HD64180 / Z180 [ 35 ] [ 36 ] 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. [ j ]
El diseño del 2200 permitía emparejar los registros de 8 bits H y L (Alto y Bajo) en un registro de direcciones de 16 bits HL. [ k ] En el 8080, este emparejamiento se añadió también a los pares BC y DE, mientras que HL se generalizó para permitir su uso como acumulador de 16 bits, no solo como registro de direcciones. El 8080 también introdujo datos inmediatos de 16 bits para las cargas de 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ó aún más esto al hacer que todos los pares de registros de 16 bits, incluidos IX e IY, fueran de propósito más general, además de permitir la copia directa de 16 bits hacia y desde la memoria para todos estos pares. Los registros IX e IY de 16 bits en el Z80 están destinados 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, lo que agrega al menos cuatro ciclos de reloj al 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 de 16 bits bastante simple del 8080 con instrucciones dedicadas para aritmética de 16 bits con signo .

Los registros AF, BC, DE, HL compatibles con el 8080 se duplican como un archivo de registros separado en el Z80, [ 38 ] donde el procesador puede cambiar rápidamente (en cuatro estados t, el menor tiempo de ejecución posible para cualquier instrucción del Z80) de un banco a otro; [ 39 ] una característica útil para acelerar las respuestas a interrupciones de un solo nivel y alta prioridad. El conjunto de registros dual es útil en el rol embebido, 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éstica.
El archivo de registros duplicado se suele denominar "conjunto de registros alternativo" (algunos lo llaman archivo de registros "precedido", ya que el apóstrofo se utiliza para indicarlo en el código fuente del ensamblador y en la documentación de Zilog). Esto subraya que solo se puede acceder a un conjunto a la vez. Sin embargo, el acumulador de 8 bits A, con su registro de bandera F, se bifurca de los pares de registros de "propósito general" HL, DE y BC. Esto se logra mediante dos instrucciones separadas que intercambian sus accesibilidades: EX AF,AF'una intercambia únicamente el par de registros AF con AF', mientras que la EXXotra intercambia los tres pares de registros de propósito general HL, DE y BC con sus alternativas HL', DE' y BC'. De este modo, el acumulador A puede interactuar de forma independiente con cualquiera de los registros de propósito general de 8 bits en el archivo de registros alternativo (o precedido), o, si HL' contiene un puntero a memoria, con algún byte de la misma (DE' y BC' también pueden transferir datos de 8 bits entre la memoria y el acumulador A).
Esto puede resultar confuso para los programadores, ya que después de ejecutar EX AF,AF'o EXX, el contenido de los registros alternativos (preactivados) se encuentra ahora en los registros principales, y viceversa. La única forma de que el programador comprenda y siga esta condición de intercambio es rastrear el flujo del código, anotando cada aparición de una instrucción de intercambio de registros. Obviamente, si se realizan instrucciones de salto y llamada dentro de estos segmentos de código, puede resultar difícil determinar qué archivo de registros está en contexto a menos que se comente cuidadosamente. Por lo tanto, es recomendable que las instrucciones de intercambio se utilicen directamente y en segmentos de código cortos y discretos. El conjunto de instrucciones del Zilog Z280 incluye instrucciones JAFy 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 combinarse para proporcionar versiones de 16 bits. Los registros compatibles con el 8080 [ 40 ] son:
AF: Acumulador de 8 bits (A) y bits de bandera (F) acarreo, cero, menos, paridad/desbordamiento, medio acarreo (utilizado para BCD ), y una bandera de suma/resta (generalmente llamada N) también para BCDBC: Registro de datos/direcciones de 16 bits o dos registros de 8 bitsDE: Registro de datos/direcciones de 16 bits o dos registros de 8 bitsHL: registro acumulador/de direcciones 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: Registro base o índice de 16 bits para desplazamientos inmediatos de 8 bitsIY: Registro base o índice de 16 bits para desplazamientos inmediatos de 8 bitsI: registro base del vector de interrupción, 8 bitsR: Contador de actualización de DRAM, 8 bits ( el bit más significativo no cuenta)AF': acumulador y banderas alternativos (o de sombra) ( se activan y desactivan con EX AF,AF' )BC'yDE':HL'registros alternativos (o de sombra) ( que se activan y desactivan con EXX )- Cuatro bits de estado de interrupción: dos indicadores de habilitación de interrupción,
IFF1yIFF2, más el modo de interrupción de dos bits,IM.
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 internamente se ejecuta como una instrucción de 1 byte) y no tiene una relación simple con la ejecución del programa. Esto se ha utilizado a veces para generar números pseudoaleatorios en juegos, y también en esquemas de protección de software. [ 41 ] 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 caracteres en la pantalla del televisor al activar una interrupción al desbordarse (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 ). Proporciona el byte alto de la dirección base para una tabla de 128 entradas de direcciones de rutinas 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. [ 26 ] El puntero identifica un chip periférico o función o evento periférico en particular, 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) puede utilizarse simplemente como otro registro de datos de 8 bits.
Las instrucciones LD A,Rafectan LD A,Ial registro de indicadores del Z80, a diferencia de todas las demás LDinstrucciones (de carga). Los indicadores de signo (bit 7) y cero (bit 6) se establecen según los datos cargados desde los registros de fuente de actualización o interrupción. Para ambas instrucciones, el indicador de paridad/desbordamiento (bit 2) se establece según el estado actual del flip-flop IFF2. [ 42 ]
Microarquitectura
Aunque el Z80 generalmente se considera una CPU de ocho bits, tiene una ALU de cuatro bits , por lo que los cálculos se realizan en dos pasos. [ 43 ]
Lenguaje ensamblador Z80
Datapoint 2200 e Intel 8008
El primer lenguaje ensamblador de Intel 8008 se basaba en una sintaxis simple (pero sistemática) heredada del diseño del 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 Intel 8080, más avanzado (el 8008 y el 8080 compartían un subconjunto del lenguaje sin ser compatibles binariamente ; sin embargo, el 8008 sí era compatible binariamente con el Datapoint 2200).
En este proceso, el mnemónico L, para CARGAR , fue reemplazado por varias abreviaturas de las palabras CARGAR , ALMACENAR y MOVER , intercaladas con otras letras simbólicas. La letra mnemónica M, para memoria (referenciada por HL), fue extraída del mnemónico de la instrucción para convertirse en un operando sintácticamente independiente , mientras que los registros y combinaciones de registros se denotaron de manera inconsistente; ya sea mediante operandos abreviados (MVI D, LXI H, etc.), dentro del propio mnemónico de la instrucción (LDA, LHLD, etc.), o ambos al mismo tiempo (LDAX B, STAX D, etc.).
Ilustración de cuatro sintaxis, usando ejemplos de instrucciones de carga y almacenamiento equivalentes o (para 8086) muy similares. [ 44 ] La sintaxis Z80 usa paréntesis alrededor de una expresión para indicar que el valor debe usarse como una dirección de memoria (como se menciona más adelante), mientras que la sintaxis 8086 usa corchetes en lugar de paréntesis comunes para este propósito. Tanto Z80 como 8086 usan el signo + para indicar que se agrega una constante a un registro base para formar una dirección. Nótese que 8086 no es un superconjunto completo de Z80. BX es el único par de registros 8086 que puede usarse como puntero.
Nueva sintaxis
Debido a que Intel reclamó los derechos de autor de sus mnemónicos de ensamblaje, [ 45 ] fue necesario desarrollar una nueva sintaxis de ensamblaje para el Z80. En esta ocasión se utilizó un enfoque más sistemático:
- Todos los registros y pares de registros se designan explícitamente por sus nombres completos.
- Los paréntesis se utilizan sistemáticamente para indicar "contenido de memoria en" (desreferenciación de dirección constante o puntero variable), con la excepción de las instrucciones de salto
JP (HL),JP (IX), y ,JP (IY)que implican una dirección efectiva. Estas cargan la nueva dirección del PC directamente desde el registro correspondiente, sin pasar por la memoria. - Todas las instrucciones de carga y almacenamiento utilizan el mismo nombre mnemotécnico, LD, para CARGAR (un retorno al vocabulario sencillo del Datapoint 2200); otras instrucciones comunes, como ADD e INC, utilizan el mismo mnemotécnico independientemente del modo de direccionamiento o del tamaño del operando. Esto es posible porque los operandos contienen suficiente información para determinar el código de operación específico.
Estos principios facilitaron la búsqueda de nombres y formas para todas las nuevas instrucciones Z80, así como ortogonalizaciones de las antiguas, como LD BC,1234.
Se introdujo al menos una inconsistencia. Aunque una resta con acarreo se codifica como SBC A,r, la resta sin acarreo se codifica como SUB ren lugar de SUB A,r. [ 46 ]
Aparte de las diferencias de nomenclatura, y a pesar de cierta discrepancia en la estructura básica de los registros, la sintaxis de Z80 y 8086 es prácticamente isomorfa para una gran parte de las instrucciones. Solo existen similitudes bastante superficiales (como la palabra MOV o la letra X para registro extendido) entre los lenguajes ensamblador de 8080 y 8086, aunque los programas de 8080 pueden traducirse al lenguaje ensamblador de 8086 mediante programas traductores . [ 47 ] [ 48 ]
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 : [ 49 ] 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 le da al Z80 una gran cantidad de permutaciones de instrucciones y registros; Zilog los clasifica en 158 "tipos de instrucción" diferentes, 78 de los cuales son los mismos que los del Intel 8080 [ 49 ] (lo que permite la operación de todos los programas del 8080 en un Z80). La documentación de Zilog [ 50 ] agrupa además las instrucciones en las siguientes categorías (la mayoría del 8080, otras completamente nuevas como las instrucciones de bloque y de 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
- Rotar y cambiar
- Manipulación de bits (establecer, restablecer, probar)
- Salta, llama y regresa
- Entrada/salida
- Control básico de la CPU
En el Z80 original no hay instrucciones de multiplicación explícitas, [ 51 ] aunque los registros A y HL se pueden multiplicar por potencias de dos con las instrucciones ADD A,A y ADD HL,HL (de forma similar, también IX e IY). Las instrucciones de desplazamiento también pueden multiplicar o dividir por potencias de dos.
Las distintas sumas, desplazamientos y rotaciones, de diferentes tamaños y variantes, tienen efectos ligeramente diferentes en los indicadores, ya que se copiaron la mayoría de las propiedades de modificación de indicadores del 8080. Sin embargo, el bit P del indicador de paridad del 8080 (bit 2) se denomina P/V (paridad/desbordamiento) en el Z80, puesto que también funciona como indicador de desbordamiento en complemento a dos, una característica ausente en el 8080. Las instrucciones aritméticas del Z80 lo configuran para indicar desbordamiento en lugar de paridad, mientras que las instrucciones a nivel de bits lo siguen utilizando 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, lo que posiblemente cause que la lógica de algunos programas prácticos del 8080 falle en el Z80. [ m ] ) Este nuevo indicador de desbordamiento se utiliza para todas las nuevas operaciones de 16 bits específicas del Z80 ( ADC, SBC) así como para las 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 reserva 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 (ajustar el acumulador decimal para aritmética BCD) comprueba el indicador N y actúa en consecuencia, por lo que una resta (hipotética) seguida posteriormente DAAdará un resultado diferente en un antiguo 8080 que en el Z80. Sin embargo, esto probablemente sería un código erróneo en el 8080, ya que DAAen ese procesador solo se definió para la suma.
El Z80 tiene seis nuevas LDinstrucciones que pueden cargar los pares de registros DE, BC y SP desde la memoria, y cargar memoria desde estos tres pares de registros, a diferencia del 8080. [ 44 ] Al igual que en el 8080, las instrucciones de carga no afectan a los flags (excepto las cargas de registros I y R de propósito especial). Como resultado de una codificación regular (común con el 8080), cada uno de los registros de 8 bits se puede cargar desde sí mismo (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( carga , incremento / decremento , repetición ) usan HL para apuntar a la dirección de origen, DE a la dirección de destino y BC como 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 aumentan los punteros y el contador de bytes, que si llega a cero restablece el indicador P/V. Las instrucciones de memoria a E/S correspondientes , , , , , , y operan de manera similar, excepto que B, no BC, se usa como contador de bytes. [ 52 ] [ 53 ] El Z80 puede introducir y enviar cualquier registro a un puerto de E/S usando el registro C para designar el puerto. (El microcontrolador 8080 solo realiza operaciones de entrada/salida a través del acumulador A, utilizando una dirección de puerto directa especificada en la instrucción; se requiere una técnica de código automodificable para utilizar una dirección de puerto variable del 8080).LDILDD INIRINDROTIROTDRINIINDOUTIOUTD
El último grupo de instrucciones de bloque realiza una CPoperación de comparación entre el byte en (HL) y el acumulador A. El par de registros DE no se utiliza. Las versiones repetitivas CPIRy CPDRsolo terminan si BC llega a cero o se encuentra una coincidencia. HL se queda apuntando al byte después ( CPIR) o antes ( CPDR) del byte coincidente. Si no se encuentra ninguna coincidencia, el indicador Z se restablece. Hay versiones no repetitivas CPIy CPD.
A diferencia del 8080, el Z80 puede saltar a una dirección relativa ( JRen lugar de JP) usando una instrucción más corta con un desplazamiento de 8 bits con signo. Existen formas incondicionales y condicionales de esta instrucción. Solo se pueden comprobar las condiciones de cero y acarreo. (Todos los saltos y llamadas del 8080, condicionales o no, son instrucciones de tres bytes). Si se realiza el salto, las JRinstrucciones de dos bytes son más lentas que las instrucciones de tres bytes al estilo del 8080 JP; si no se realiza, JRlas instrucciones son más rápidas.
Una instrucción de dos bytes especializada para bucles de programa también es nueva en el Z80: DJNZ( decremento de salto si no es cero ) toma un desplazamiento con signo de 8 bits como operando. El registro B se decrementa y, si el resultado no es cero, la ejecución del programa salta con respecto al PC; los indicadores permanecen inalterados. Para realizar un bucle equivalente en un 8080 se requieren instrucciones de salto separadas DECy condicionales (a una dirección absoluta de dos bytes) (que suman cuatro bytes), y se 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 utilizan 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, conllevan 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 usando 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. Aun así, pueden ser útiles en casos donde 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 generan menos ralentización que sus padres de 16 bits. De manera similar, las instrucciones para sumas de 16 bits no son particularmente rápidas (11 ciclos de reloj) en el Z80 original (siendo 1 ciclo de reloj más lentas que en el 8080/8085); sin embargo, son aproximadamente el doble de rápidas que realizar los mismos cálculos usando operaciones de 8 bits, y, lo que es igualmente importante, reducen el uso de registros. No era raro que los programadores "introdujeran" diferentes bytes de desplazamiento de offset (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 (IX)y JP (IY). 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 vuelta a sus rutinas de intérprete de hilos. Normalmente, esta instrucción de salto aparece cientos de veces en una aplicación, y usar JP (IX)en lugar de JP THREADahorra un byte y dos estados T por 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 microcodificado Z180, diez años más reciente, inicialmente ofrecía mayor "área del chip", lo que permitía una implementación ligeramente más eficiente (utilizando una ALU más amplia , entre otras cosas); lo mismo puede decirse de los Z800 , Z280 y Z380 . Sin embargo, no fue hasta el lanzamiento del eZ80 totalmente segmentado en 2001 que esas instrucciones finalmente alcanzaron una eficiencia de ciclo casi tan alta como técnicamente es posible, es decir, dadas las codificaciones del Z80 combinadas con la capacidad de realizar una lectura o escritura de 8 bits en cada ciclo de reloj.
Instrucciones no documentadas
Los registros de índice, IX e IY, fueron concebidos como punteros flexibles de 16 bits, mejorando la capacidad de manipular memoria, marcos de pila y estructuras de datos. Oficialmente, se trataron como de solo 16 bits. En realidad, se implementaron como un par de registros de 8 bits, [ 54 ] de la misma manera que el registro HL, que es accesible como 16 bits o por separado como los registros High y Low . Los códigos de operación binarios (lenguaje máquina) eran idénticos, pero precedidos por un nuevo prefijo de código de operación. [ 55 ] 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. Anteponer a esta instrucción de dos bytes el prefijo de código de operación del registro IX, DD, daría como resultado que los 8 bits más significativos del registro IX se cargaran con ese mismo valor. Una excepción notable a esto serían las instrucciones similares que LD H,(IX+d)utilizan los registros HL e IX o IY en la misma instrucción; [ 55 ] 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 permitiría reservar los registros regulares de 8 bits 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. [ 56 ] Los códigos de operación no documentados o ilegales no son detectados por el Z80 y tienen diversos efectos, algunos de los cuales son útiles. Sin embargo, dado que 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 se ajusta a la documentación del Z80. Se supone que ambas OTDRinstrucciones OTIRdeben dejar el indicador de acarreo (C) sin modificar. La OTIRinstrucción funciona correctamente; sin embargo, durante su ejecución OTDR, el indicador de acarreo toma el resultado de una comparación errónea entre el acumulador (A) y la última salida de la OTDRinstrucción. [ 57 ]
Código de ejemplo
El siguiente código fuente en lenguaje ensamblador Z80 corresponde a una subrutina memcpyque copia un bloque de bytes de datos de un tamaño determinado de una ubicación a otra. El bloque de datos se copia byte a byte, y la lógica de movimiento y bucle de datos utiliza operaciones de 16 bits. Muestra diversas instrucciones, pero en la práctica no se codificaría de esta manera, ya que el Z80 dispone de una única instrucción que puede reemplazar toda esta subrutina: LDIR. El código de ejemplo mueve un byte cada 46 estados T. Sustituyendo la LDIRinstrucción, cada byte se mueve en tan solo 21 estados T. Cabe destacar que el código ensamblado es compatible binariamente con las CPU Intel 8080 y 8085.
Ejecución de instrucciones
Cada instrucción se ejecuta en pasos que generalmente se denominan ciclos de máquina (ciclos M), cada uno de los cuales puede tomar entre tres y seis períodos de reloj (estados T). [ 58 ] Cada ciclo M corresponde aproximadamente a un acceso a memoria u operación interna. Varias instrucciones terminan 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 del Z80 se secuencian mediante 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 asíncrona compleja y garantiza que las señales de control se comporten de forma consistente en un amplio rango de frecuencias de reloj. También implica que se debe utilizar un cristal de mayor frecuencia que sin esta subdivisión de los ciclos de máquina (aproximadamente 2-3 veces mayor). Esto 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 la temporización de la memoria, lo que permite que esta funcione en paralelo con la CPU en mayor medida, posibilitando un uso más eficiente del ancho de banda de memoria disponible.
Un ejemplo clave de esto es que, para la obtención de código de operación , el Z80 combina dos ciclos de reloj completos en un período de acceso a 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 , el 6502 o similares, donde este período suele durar entre el 30 % y el 40 % de un ciclo de reloj. Dado que la asequibilidad de los chips de memoria (es decir, tiempos de acceso de alrededor de 450-250 ns en la década de 1980 ) determinaba generalmente 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, una velocidad de reloj interna menor) que el Z80.
La memoria era generalmente lenta en comparación con los subciclos de la 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 podía utilizarse de forma segura en diseños embebidos solía estar limitado por los tiempos de acceso a la memoria, y 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 gradualmente en las últimas décadas, sobre todo en lo que respecta a la SRAM ; por consiguiente, los diseños sin caché y de un solo ciclo, como el eZ80, han adquirido mucha más relevancia recientemente.
El contenido del registro de actualización R se envía por la mitad inferior del bus de direcciones junto con una señal de control de actualización mientras la CPU decodifica y ejecuta la instrucción obtenida. Durante la actualización, el contenido del registro de interrupción I se envía por la mitad superior del bus de direcciones. [ 65 ]
Periféricos compatibles
Zilog introdujo varios periféricos para el Z80, todos compatibles con el sistema de gestión de interrupciones y el espacio de direcciones de E/S del Z80. Estos incluyen el canal de contador/temporizador (CTC), [ 66 ] el SIO (entrada/salida serie), el DMA (acceso directo a memoria), el PIO (entrada/salida paralela) y el DART (transmisor-receptor asíncrono dual). A medida que se desarrollaba la línea de productos, se introdujeron versiones de estos chips de bajo consumo, alta velocidad y tecnología CMOS .
PIO Z84C2008
CTC Z84C3008
SIO 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 y un espacio de direcciones separados para las instrucciones de E/S. Si bien algunas computadoras basadas en el Z80, como la Osborne 1 , usaban dispositivos de entrada/salida mapeados en memoria al estilo Motorola , generalmente el espacio de E/S se usaba para direccionar uno de los chips periféricos Zilog compatibles con el Z80. Durante la temporización para una operación de lectura o escritura de E/S, el Z80 inserta automáticamente un ciclo de espera. [ 67 ] Los chips de E/S Zilog admitían las nuevas interrupciones de modo 2 del Z80, que simplificaban 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 afirman el bus de direcciones completo de 16 bits. OUT (C),reg e IN reg,(C) colocan el contenido del registro BC completo de 16 bits en el bus de direcciones; [ 57 ] OUT (n),A e IN A,(n) colocan el contenido del registro A en b8–b15 del bus de direcciones y la dirección del puerto n en b0–b7 del bus de direcciones. Un diseñador podría optar por decodificar el bus de direcciones completo de 16 bits en las 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 el Amstrad CPC / PCW y el ZX81 .
Fuentes secundarias y derivados
Fuentes secundarias
Mostek, que produjo el primer Z80 para Zilog, lo ofreció como fuente secundaria bajo el nombre MK3880. SGS-Thomson (ahora STMicroelectronics ) también fue una fuente secundaria con su Z8400. Sharp y NEC desarrollaron fuentes secundarias 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 . [ 68 ] Sharp desarrolló el LH0080A y el LH0080B para operar a frecuencias de 4 MHz y 6 MHz, respectivamente. [ 69 ] Sharp también desarrolló el LH0083 [ 70 ] compatible con el DMA del Z80.
Toshiba fabricó una versión CMOS, la TMPZ84C00, que se cree (aunque no se ha verificado) que es el mismo diseño que también 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 (que incluyen DMA, PIO, CTC, DART y SIO) en NMOS y CMOS fabricados por ROHM Electronics . Los LH5080, [ 71 ] LH5081, [ 72 ] y LH5082, [ 73 ] que son versiones CMOS del Z80, PIO y CTC respectivamente, son fabricados por Sharp.
En Alemania Oriental se fabricó un clon no autorizado del Z80, conocido como U880 . Este se utilizó ampliamente en los sistemas informáticos de Robotron y VEB Mikroelektronik Mühlhausen (como la serie KC85 ), así como en numerosos sistemas informáticos de fabricación propia. En Rumanía se podía encontrar otro clon no autorizado, denominado MMN80CPU y producido por Microelectronica , utilizado en ordenadores domésticos como TIM-S, HC y COBRA.
Además, en la Unión Soviética se crearon varios clones del Z80 , entre los que destaca el T34BM1 , también conocido como КР1858ВМ1 (similar al clon soviético del 8080, el KR580VM80A ). La primera denominación se utilizó en las series de preproducción, mientras que la segunda se reservó para la producción a mayor escala. Sin embargo, debido al colapso de la industria microelectrónica soviética a finales de la década de 1980, existen más unidades del T34BM1 que del КР1858ВМ1.
Derivados
- Compatible con el Z80 original
- Hitachi desarrolló el HD64180 , un Z80 microcodificado y parcialmente dinámico en CMOS, con periféricos integrados y una MMU simple, que proporcionaba un espacio de direcciones de 1 MB . Posteriormente, Zilog lo adquirió como proveedor secundario, inicialmente como el Z64180, y luego en forma del Zilog Z180 ligeramente modificado [ 74 ] , que cuenta con 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 recientes se basan en el núcleo S180/L180 totalmente estático con bajo consumo de energía y EMI (ruido).
- Toshiba desarrolló las series de "controladores periféricos inteligentes" Z84013/Z84C13 de 84 pines y Z84015/Z84C15 de 100 pines, que básicamente integraban núcleos Z80 NMOS y CMOS convencionales con periféricos Z80, temporizador de vigilancia , reinicio al encender y generador de estado de espera en el mismo chip. Fueron fabricados tanto por Sharp como por Toshiba. Actualmente, Zilog también se encarga de la fabricación de estos productos. [ 75 ]
- El Zilog Z380 de 32 bits compatible con Z80, presentado en 1994, se utiliza en equipos de telecomunicaciones. [ 76 ]
- El eZ80 [ 77 ] de Zilog, totalmente segmentado y compatible con Z80, con una longitud de palabra de 8/16/24 bits y un espacio de direcciones lineal de 16 MB, se presentó en 2001. Existen versiones con memoria SRAM o Flash integrada, así como con periféricos integrados. Una variante cuenta con un controlador de acceso al medio (MAC) integrado , y el software disponible incluye una pila TCP/IP . A diferencia del Z800 y el Z280, solo se han añadido unas pocas instrucciones (principalmente carga de dirección efectiva (LEA), inserción de dirección efectiva (PEA) y cargas de 16/24 bits de dirección variable), pero las instrucciones se ejecutan entre 2 y 11 veces más eficientemente en ciclos de reloj que en el Z80 original, con un valor medio de entre 3 y 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 funcionar a una frecuencia de hasta 33 MHz. Kawasaki también produce la familia KL5C80A1x, que incluye periféricos y una pequeña memoria RAM integrada; su eficiencia en ciclos de reloj es similar a la del eZ80 y puede funcionar a una frecuencia de hasta 10 MHz (2006). [ 78 ]
- El NEC μPD9002 era una CPU híbrida compatible con las familias Z80 y x86 .
- La familia de chips procesadores de audio de la empresa china Actions Semiconductor (ATJ2085 y otros) contiene microcontroladores compatibles con Z80 junto con un procesador DSP dedicado de 24 bits. [ 79 ] Estos chips se utilizan en varios productos de reproductores de MP3 y multimedia.
- Los núcleos blandos sintetizables T80 (VHDL) y TV80 (Verilog) están disponibles en OpenCores.org. [ 80 ]
- El National Semiconductor NSC800, anunciado en 1980 [ 81 ] , se utiliza en varias máquinas de cifrado electrónico TeleSecurity Timmann (TST) [ 82 ] y en la Canon X-07 . El NSC800 es totalmente compatible con el conjunto de instrucciones Z80 . [ 83 ] El NSC800 utiliza un bus multiplexado como el 8085, pero tiene una distribución de pines diferente a la del Z80. [ 84 ]
- No compatible
- La serie Toshiba TLCS 900 de microcontroladores de alto volumen, 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 prácticamente las mismas instrucciones, pero no son compatibles a nivel binario, mientras que el modelo anterior TLCS 90 sí es compatible con el Z80. [ 85 ]
- Los microcontroladores de la serie NEC 78K se basan en el Z80. Comparten la misma estructura básica de registros BC, DE, 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 [ 86 ] se basan en la arquitectura HD64180 / Z180 , aunque no son totalmente compatibles a nivel binario. [ 87 ]
- Ya no se produce
- El procesador R800 de ASCII Corporation era un procesador rápido de 16 bits utilizado en los ordenadores MSX TurboR ; era compatible a nivel de software, pero no a nivel de hardware con el Z80 (la temporización de la señal, la distribución de pines y la función de los pines difieren de las del Z80).
- Los microcontroladores NMOS Z800 y CMOS Z280 de Zilog eran implementaciones de 16 bits del Z80 (anteriores al HD64180/Z180) con un espacio de direcciones MMU paginado de 16 MB; añadieron múltiples ortogonalizaciones y modos de direccionamiento al conjunto de instrucciones del Z80. Las características de los minicomputadores , como los modos de usuario y sistema, la compatibilidad con multiprocesadores, la MMU integrada, la caché de instrucciones y datos integrada, etc. , se consideraban más una complejidad que una funcionalidad y una ayuda para el diseñador de sistemas embebidos (generalmente orientado a la electrónica); además, dificultaban la predicción de los tiempos de ejecución de las instrucciones.
- Ciertos juegos arcade , como Pang / Buster Bros. , utilizan una CPU "Kabuki" Z80 encriptada fabricada por VLSI Technology , donde las claves de descifrado se almacenan en su memoria interna con respaldo de batería , para evitar la piratería y los juegos piratas ilegales. [ 88 ]
ASCII R800


Toshiba TMPZ84C015
Usos notables
Ordenadores de sobremesa

Durante finales de la década de 1970 y principios de la de 1980, el Z80 se utilizó en una gran cantidad de máquinas empresariales bastante anónimas con el sistema operativo CP/M , una combinación que dominaba el mercado en ese momento. [ 89 ] [ 90 ] Cuatro ejemplos conocidos de computadoras empresariales Z80 que ejecutaban 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 gama alta. [ 91 ] Algunos sistemas utilizaban software de sistema operativo multitarea (como MP/M o Micronix de Morrow ) para compartir el único procesador entre varios usuarios concurrentes .

Se introdujeron varios ordenadores domésticos que utilizaban el Z80 como procesador principal o como opción de expansión para acceder a software escrito para el Z80. Destacan la serie TRS-80 , incluyendo el modelo original (posteriormente renombrado 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 utilizaban el Z80 como procesador principal o secundario. Otras máquinas notables fueron el DEC Rainbow 100 y el Seequa Chameleon , ambos con una CPU Intel 8088 y una 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 las aplicaciones PC DOS 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. Actualmente, Flite Electronics International Limited, con sede en Southampton, Inglaterra , sigue fabricándolo y comercializándolo .
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 los ordenadores domésticos 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 alimentados por batería se generalizó con la disponibilidad de versiones CMOS del procesador. También inspiró el desarrollo de otros procesadores basados en CMOS, como el LH5801 [ 92 ] de Sharp. El Sharp PC-1500 , un ordenador de bolsillo programable en BASIC , se lanzó en 1981, seguido por el mejorado Sharp PC-1600 en 1986 y el Sharp PC-E220 en 1991. Los modelos posteriores de la serie Sharp Wizard de agendas electrónicas también se basaron en el Z80. Los portátiles que podían ejecutar el sistema operativo CP/M al igual que los ordenadores de sobremesa llegaron con el Epson PX-8 Geneva en 1984, y en 1985 el Epson PX-4 y el Bondwell-2 . Mientras que el mercado de portátiles en los años siguientes pasó a procesadores Intel 8086 más potentes y al sistema operativo MS-DOS, todavía se introducían 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 se incorporó a un asistente digital personal operado por 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. [ 93 ] [ 94 ] Los dos últimos fueron el Laser PC5 [ 95 ] y el PC6. [ 96 ] 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. [ 97 ] 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 [ 98 ] y después de una larga producción de una docena de modelos culminó en su serie PocketMate. [ 99 ]
Sistemas embebidos y electrónica de consumo

El Zilog Z80 ha sido durante mucho tiempo un microprocesador popular en sistemas embebidos y núcleos de microcontroladores , [ 40 ] donde sigue siendo ampliamente utilizado hoy en día. [ 30 ] [ 100 ] 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 , [ 101 ] así como en el primer sintetizador equipado con MIDI , el Prophet 600. [ 102 ] El Z80 fue la base de todos los instrumentos de E-mu Systems desde 1976 hasta 1986. [ 103 ] Casio utilizó el Z80A en su consola de videojuegos PV-1000 .
Muchos videojuegos arcade de principios de la década de 1980, incluido el juego arcade Pac-Man , contienen procesadores 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 y puertos de E/S (controlador) del sistema, y tiene una ruta de datos conmutada al bus de memoria principal del 68000 (proporcionando acceso a los 64 KB de RAM principal, el cartucho de software y todo el chip de vídeo); además de proporcionar retrocompatibilidad con los juegos de Master System, el Z80 se utiliza a menudo para controlar y reproducir audio en el software de Genesis. [ n ]
Los procesadores Z80 también se utilizaron en la popular serie de calculadoras gráficas TI-8x de Texas Instruments , a partir de 1990 con la TI-81 , que incorpora un Z80 con una frecuencia de reloj de 2 MHz. La mayoría de las calculadoras de gama alta de la serie, comenzando con la TI-82 y la TI-85 , tienen procesadores Z80 con una frecuencia de reloj de 6 MHz o superior. (Algunos modelos con el nombre TI-8x utilizan otros procesadores, como el M68000, pero la gran mayoría se basan en el Z80. En estos últimos, es posible ejecutar programas de usuario ensamblados o compilados en forma de código máquina Z80).
Las calculadoras gráficas TI-83 y TI-84 Plus utilizan el chip Z80, mientras que la serie TI-84 Plus CE utiliza el chip eZ80 ; Texas Instruments sigue vendiendo las tres series de calculadoras a fecha de 2025.
A finales de la década de 1980, una serie de teléfonos fijos soviéticos llamados "AON" incorporaban el Z80; estos teléfonos ampliaban las funciones de la línea fija con identificador de llamadas , diferentes tonos de llamada según la persona que llamaba, marcación rápida , etc. [ 104 ] Sin embargo, en la segunda mitad de la década de 1990, los fabricantes de estos teléfonos cambiaron a microcontroladores compatibles con el 8051 para reducir el consumo de energía y evitar el sobrecalentamiento de los adaptadores de corriente de pared compactos.
Los primeros robots móviles autónomos Micromouse para resolver laberintos utilizaban la CPU Z80, como el Moonlight Special (1978), que empleaba un Z80A de 4 MHz para minimizar el hardware integrado aprovechando su única fuente de alimentación de +5 V. El diseño se basaba en las nuevas instrucciones de transferencia de bloques del procesador para gestionar las tablas de nodos del laberinto y en sus interrupciones vectorizadas para controlar el muestreo de sensores en tiempo real y el motor paso a paso dentro de un ciclo de interrupción ajustado de 4 kHz (250 µs).
Discontinuación
El 15 de abril de 2024, Zilog anunció la descontinuación del Z80, aunque se aceptarían pedidos hasta el 14 de junio de 2024. El anuncio incluía 13 variantes del Z80, incluidas variantes DIP40 , y afirmaba que continuaría produciendo su sucesor mejorado, el eZ80 . [ 5 ]
Véase también
- Autobús S-100
- SymbOS
- Z88DK
- Microprofesor MPF-I , sistema de entrenamiento Z80
Notas a pie de página
- ↑ Solo en CMOS, National no fabricó ninguna versión NMOS, según la historia oral con Federico Faggin.
- ↑ Las variantes CMOS alcanzaron hasta 20 MHz y los derivados compatibles con binarios hasta 50 MHz.
- ↑ Compatible con versiones anteriores de Intel 8080
- ↑ Esta era una característica bastante común en los diseños de minicomputadoras de la época, y se incorporó a varios de los primeros microprocesadores.
- ↑ Zilog fabricó el Z80, así como la mayoría de sus otros productos, durante muchos años hasta que vendieron sus plantas de fabricación y se convirtieron en la empresa " sin fábrica propia " que son hoy en día.
- ↑ Si bien el 8080 contaba con instrucciones de suma, incremento y decremento de 16 bits, carecía de resta explícita de 16 bits y de indicador de desbordamiento. El Z80 complementó esta funcionalidad con las instrucciones ADCHL,rr y SBCHL,rr, que establecen el nuevo indicador de desbordamiento. (La instrucción ADD HL,rr, compatible con el 8080, no lo hace).
- ↑ En particular, para manejar simultáneamente las mantisas de 32 bitsde dos operandos en el formato de punto flotante de 40 bitsutilizado en la computadora doméstica ZX81 . También se utilizaron de manera similar en algunas computadoras anteriores, pero menos conocidas, basadas en Z80, como la ABC 80 y la ABC 800 suecas .
- ↑ Como esta actualización no necesita transferir ningún dato, solo generar direcciones de fila secuenciales, ocupa menos de 1,5 estados T. El ciclo de lectura M1 es medio ciclo más corto que una lectura de memoria normal. La señal M1 dedicada ( ciclo de máquina uno ) en el Z80 se puede usar para permitir que los chips de memoria tengan el mismo tiempo de lectura para la búsqueda de instrucciones que para el acceso a datos, es decir, casi 2 estados T completos del ciclo de búsqueda de 4T (así como del ciclo de lectura de datos de 3T ). La dirección válida hasta el flanco descendente de la lectura (o M1) sigue siendo medio ciclo más corto que una lectura normal. 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 lectura multiciclo también significaba que el Z80 podía emplear aproximadamente cuatro veces la frecuencia interna de un 6800, 6502 o similar usando la misma velocidad de memoria.
- ↑ A diferencia de la versión nMOS original, que utilizaba pestillos dinámicos y no podía detenerse durante más de unos pocos miles de ciclos de reloj.
- ↑ La familia 8086, relacionada con esta , también heredó este diseño de registro.
- ↑ Este puntero variable HL era, de hecho, la única forma de acceder a la memoria (para datos) en el Datapoint 2200 y, por lo tanto, también en el Intel 8008. No se podían usar direcciones directas para acceder a los datos.
- ↑ La carga inmediata de memoria no está disponible en Datapoint 2200.
- ↑ Por ejemplo, en el 8080, un programador podría probar la paridad del acumulador asignándole
ADDcero,SUBrestándole cero oORrestándoleXORcero; todas estas son operaciones de una sola instrucción de la misma velocidad y tamaño, tanto en el 8080 como en el Z80. Si el programador eligió probar la paridad asignándoleORceroXOR, el Z80 ejecutará el programa correctamente, pero si el programador eligió probar la paridad restándoleADDoSUBrestar cero nunca causa un desbordamiento o subdesbordamiento) en lugar de asignar P para indicar correctamente la paridad del byte, como lo harían el 8080 o el 8085, y el programa podría fallar. En los manuales de programación del Intel 8080 no se desaconseja el uso de instrucciones aritméticas ni se prescribe el uso de instrucciones lógicas para comprobar la paridad, por lo que no hay muchas razones para que un programador del 8080 elija una u otra. En aplicaciones reales, es improbable que se seleccionen las instrucciones aritméticas de este ejemplo para comprobar la paridad, ya que las instrucciones lógicasAND AsonOR Amás rápidas y ocupan un byte menos. - ↑ Este uso común, pero meramente opcional y no limitante, lleva a la descripción frecuente pero incorrecta del Z80 en la Genesis como un "procesador de sonido".
Referencias
- 1 2 3 Zilog (2005). Manual de usuario de la CPU de la familia Z80 (PDF) . Zilog. pág. 5. Archivado (PDF) del original el 19 de junio de 2009. Recuperado el 18 de julio de 2009 .
- ↑ "Salón de la Fama de los Chips: Microprocesador Zilog Z80 - IEEE Spectrum" . spectrum.ieee.org . Consultado el 22 de noviembre de 2024 .
- ↑ Edwards, Benj (22 de abril de 2024). "Después de 48 años, Zilog está acabando con el clásico chip microprocesador Z80 independiente" . Ars Technica . Consultado el 22 de noviembre de 2024 .
- ^ Faggin , Shima y Ungermann 2007 .
- 1 2 Edwards, Benj (22 de abril de 2024). "Después de 48 años, Zilog está acabando con el clásico chip microprocesador independiente Z80" . Ars Technica . Archivado del original el 12 de mayo de 2024. Recuperado el 23 de mayo de 2024 .
- 1 2 Faggin, Shima y Ungermann 2007 , pág. 1.
- 1 2 Faggin, Shima y Ungermann 2007 , pág. 2.
- 1 2 3 Faggin, Shima y Ungermann 2007 , pág. 3.
- 1 2 3 Faggin, Shima y Ungermann 2007 , pág. 4.
- ↑ Faggin, Shima y Ungermann 2007 , pág. 8.
- 1 2 Faggin, Shima y Ungermann 2007 , pág. 5.
- ↑ Faggin, Shima y Ungermann 2007 , pág. 19.
- ↑ Faggin, Shima y Ungermann 2007 , pág. 6.
- ↑ Faggin, Shima y Ungermann 2007 , pág. 7.
- ↑ Faggin, Shima y Ungermann 2007 , pág. 17.
- ↑ "Controlador de acceso directo a memoria DMA Z80®" (PDF) . Archivado (PDF) del original el 5 de febrero de 2024. Recuperado el 8 de enero de 2024 .
- ↑ Anderson (1994) , pág. 51.
- ↑ Faggin, Shima y Ungermann 2007 , pág. 13.
- ↑ Holder, Keith (16 de febrero de 1984). "Exxon y Zilog llegan a un acuerdo con NEC" . Computer Weekly . pág. 9. Consultado el 15 de junio de 2025 .
- ↑ Faggin, Shima y Ungermann 2007 , pág. 9.
- ↑ Anderson (1994) , pág. 57.
- 1 2 Brock, Gerald W. (2003). La segunda revolución de la información . Harvard University Press. ISBN 978-0-674-01178-6.
- ↑ «Historia de los 8 bits: un viaje largo en poco tiempo» . InfoWorld . Vol. 4, n.º 47. Palo Alto, CA: Popular Computing Inc. 29 de noviembre de 1982. págs. 58-60 . ISSN 0199-6649 . Archivado del original el 5 de enero de 2024.
- ↑ Faggin, Federico; Shima, Masatoshi ; Ungermann, Ralph (19 de agosto de 1976). «El conjunto de chips Z-80 anuncia la tercera generación de microprocesadores» (PDF) . Electronics . Vol. 49, n.º 17. Nueva York: McGraw-Hill . págs. 89-93 . Archivado (PDF) del original el 31 de enero de 2023.
- ↑ Ciarcia (1981) , págs.31 , 32.
- 1 2 Chen, Wai-Kai (2002). Manual de circuitos y filtros . CRC Press . pág. 1943. ISBN 978-0-8493-0912-0El
procesamiento de interrupciones comienza según el método de interrupción estipulado por la instrucción IM i , donde i = 0, 1 o 2. Si i = 1, para el método directo, el PC se carga con 0038H. Si i = 0, para el método vectorizado, el dispositivo de interrupción tiene la oportunidad de colocar el código de operación para un byte. Si i = 2, para el método vectorial indirecto, el dispositivo de interrupción debe colocar un byte. El Z80 utiliza este byte para seleccionar uno de los 128 vectores de interrupción.
- ↑ Mathur (1989). Introducción a los microprocesadores . Tata McGraw-Hill Publishing Company. pág. 111. ISBN 978-0-07-460222-5
La arquitectura de registros del Z80 es más innovadora que la del 8085
. - ↑ Brewer, Tony. "Z80 Special Reset" . GitHub . Archivado del original el 27 de abril de 2024. Recuperado el 27 de abril de 2024 .
- ↑ Adrian, Andre (4 de junio de 2011). "Z80, el procesador de números de 8 bits" . Archivado del original el 26 de noviembre de 2023.
- 1 2 Balch, Mark (18 de junio de 2003). «Fundamentos digitales». Diseño digital completo: una guía integral de electrónica digital y arquitectura de sistemas informáticos . Ingeniería profesional. Nueva York, Nueva York : McGraw-Hill Professional . pág. 122. ISBN 0-07-140927-0.
- ↑ El informe Seybold sobre informática profesional . Seybold Publications. 1983.
En el mundo de 8 bits, los dos microordenadores más populares son los chips Z80 y 6502.
- ↑ Adrian, Andre (4 de junio de 2011). "Z80, el procesador de números de 8 bits: suma de 32 bits (larga) en Z80" . Archivado del original el 26 de noviembre de 2023.
- ↑ Informática Popular . McGraw-Hill . 1983. pág. 15.
- ↑ Markoff, John (18 de octubre de 1982). «El veloz Z80 de Zilog mejora el rendimiento de 8 bits a 16 bits» . InfoWorld . Vol. 4, n.º 41. Palo Alto, CA: Popular Computing, Inc. pág. 1. ISSN 0199-6649 . Archivado del original el 5 de enero de 2024.
- ↑ Diseño electrónico . Hayden. 1988. pág. 142.
Además de admitir todo el conjunto de instrucciones Z80, el Z180
- ↑ Ganssle, Jack G. (1992). "¡El Z80 sigue vivo!" . Archivado del original el 20 de diciembre de 2023.
Los diseñadores eligieron una arquitectura compatible con el Z80, lo que proporciona a los usuarios del Z80 una ruta de actualización totalmente compatible por software. El procesador 64180 ejecuta cada instrucción del Z80 exactamente como lo hace un Z80.
- ↑ Shiriff, Ken. "Hasta el silicio: cómo se implementan los registros del Z80" . Archivado del original el 5 de noviembre de 2023.
- ↑ Kilobaudios . 1001001. 1977. pág. 22.
- ^ Zaks, Rodnay (1982). Programando el Z80 (3ª ed.). SÍBEX. pag. 62.ISBN 978-0-89588-069-7.
- 1 2 Heath, Steve (2003). Diseño de sistemas embebidos . Oxford: Newnes. pág. 21. ISBN 978-0-7506-5546-0.
- ↑ North, Jon (marzo de 1991). "Cómo hackear" . Your Sinclair . N.° 63. pág. 77.
- ↑ Rison, Mark. Young, Sean (ed.). "Z80 Flag Affection" . z80.info . Thomas Scherrer. Archivado del original el 23 de diciembre de 2023. Recuperado el 14 de junio de 2016 .
- ↑ Shirriff, Ken. "El Z-80 tiene una ALU de 4 bits. Así es como funciona" . Archivado del original el 9 de septiembre de 2013. Recuperado el 16 de noviembre de 2021 .
- 1 2 Durda IV, Frank (2012). "Conjunto de instrucciones 8080/Z80" . Archivado del original el 11 de febrero de 2016. Recuperado el 22 de julio de 2009 .
- ↑ "8080A/ Microprocesador de canal N de 8 bits". Catálogo de datos de componentes de Intel 1978. Santa Clara, CA: Intel Corporation. 1978. págs. 11–17 .
Todos los mnemónicos © Intel Corporation 1977
- ↑ "Guía del usuario del ensamblador de macros reubicables Z80" (PDF) . pág. 2–2. Archivado del original (PDF) el 20 de julio de 2011. Recuperado el 4 de junio de 2009 .
- ↑ Scanlon, Leo J. (1988). Lenguaje ensamblador 8086/8088/80286 . Brady Books . pág . 12. ISBN 978-0-13-246919-7[
...] El 8086 es compatible con el 8080 a nivel de lenguaje ensamblador. [...]
- ↑ Nelson, Ross P. (enero de 1989) [1988]. El libro del 80386: Guía del programador en lenguaje ensamblador para el 80386. Serie de programación de Microsoft (1.ª ed.). Microsoft Press . pág. 2. ISBN 978-1-55615-138-5[
...] Un programa traductor de Intel podría convertir programas ensamblador 8080 en programas ensamblador 8086 [...]
- 1 2 "Introducción a la CPU Z80" . Zilog . 1995. Archivado del original el 20 de diciembre de 2023.
Tiene un lenguaje de 252 instrucciones raíz y, con los 4 bytes reservados como prefijos, accede a 308 instrucciones adicionales.
- ↑ "Conjunto de instrucciones de la CPU Z80" (PDF). Zilog . 1976. pág. 19. Archivado del original el 5 de noviembre de 2023. Consultado el 20 de julio de 2021 .
- ↑ Sánchez, Julio; Cantón, María P. (2008). Soluciones de software para ingenieros y científicos . Taylor & Francis. pág. 65. ISBN 978-1-4200-4302-0
Los microprocesadores de 8 bits que precedieron a la familia 80x86 (como el Intel 8080, el Zilog Z80 y el Motorola) no incluían multiplicación
. - ↑ Ciarcia (1981) , pág. 86.
- ↑ HAYES, JOHN P. (1978). Arquitectura y organización de computadoras . McGraw-Hill. pág. 423. ISBN 0-07-027363-4.
- ↑ Froehlich, Robert A. (1984). El catálogo y directorio de software libre . Crown Publishers. pág. 133. ISBN 978-0-517-55448-7Los códigos Z80 no
documentados permiten operaciones de 8 bits con los registros IX e IY.
- 1 2 Bot, Jacco JT "Instrucciones no documentadas del Z80" . Página principal de la CPU Z80 . Archivado del original el 23 de diciembre de 2023.
Si un código de operación funciona con los registros HL, H o L, entonces si ese código de operación está precedido por #DD (o #FD) funciona en IX, IXH o IXL (o IY, IYH, IYL), con algunas excepciones. Las excepciones son instrucciones como LD H,IXH y LD L,IYH.
- ↑ Robin Nixon, Guía avanzada del usuario del Bloc de notas Amstrad , Robin Nixon, 1993, ISBN 1-85058-515-6páginas 219–223.
- 1 2 Young, Sean (octubre de 1998). "Características no documentadas del Z80 (en el comportamiento del software)" . Archivado del original el 25 de diciembre de 2023.
Las instrucciones de E/S utilizan todo el bus de direcciones, no solo los 8 bits inferiores. Así que, de hecho, puede tener 65536 puertos de E/S en un sistema Z80 (el Spectrum usa esto). IN r,(C), OUT (C),r y todas las instrucciones de bloque de E/S ponen todo BC en el bus de direcciones. IN A,(n) y OUT (n),A ponen A*256+n en el bus de direcciones.
- ↑ "Sincronización". Manual de usuario de la CPU de la familia Z80 (PDF) . Zilog . 2016. pág. 7. UM008011-0816. Archivado (PDF) del original el 26 de diciembre de 2023. Consultado el 5 de enero de 2024 .
- ↑ Ciarcia (1981) , pág. 65.
- ^ Zaks, Rodnay (1989). Programando el Z80 . Síbex. pag. 200.ISBN 978-0-89588-069-7.
ADD A, n Suma el acumulador con datos inmediatos n. MEMORIA Tiempo: 2 M ciclos; 7 estados T.
- ↑ Ciarcia (1981) , pág. 63.
- ↑ Ciarcia (1981) , pág. 77.
- ↑ Ciarcia (1981) , pág. 36.
- ↑ Ciarcia (1981) , pág. 58.
- ↑ "Registros de propósito especial". Manual de usuario de la CPU de la familia Z80 (PDF) . Zilog . 2016. pág. 3. UM008011-0816. Archivado (PDF) del original el 26 de diciembre de 2023. Recuperado el 5 de enero de 2024 .
- ↑ "Manual de usuario de periféricos de CPU de la familia Z80" (PDF) . Hoja de datos de EEWORLD . ZiLOG. 2001. Archivado del original (PDF) el 2 de mayo de 2014. Recuperado el 30 de abril de 2014 .
- ↑ "Sharp 1986 Semiconductor Data Book" (PDF) . pág. 218. Archivado (PDF) del original el 1 de enero de 2024. Recuperado el 1 de enero de 2024 .
- ↑ "Descripción general de la serie SHARP MZ" . SharpMZ.org . Archivado del original el 27 de marzo de 2008. Consultado el 28 de julio de 2011. La
mayoría de los MZ utilizan la CPU de 8 bits LH0080 / Z80 [...]
- ↑ "LH0080/LH0080A/LH0080B". Libro de datos de semiconductores de 1986 (PDF) . Sharp Corporation . 1986. pág. 210. Archivado (PDF) del original el 1 de enero de 2024. Recuperado el 1 de enero de 2024 .
- ↑ "Sharp 1986 Semiconductor Data Book" (PDF) . págs. 255–269 . Archivado (PDF) del original el 20 de enero de 2024. Recuperado el 13 de enero de 2024 .
- ↑ "Sharp 1986 Semiconductor Data Book" (PDF) . págs. 296–301 . Archivado (PDF) del original el 20 de enero de 2024. Recuperado el 20 de enero de 2024 .
- ↑ "Sharp 1986 Semiconductor Data Book" (PDF) . págs. 302–306 . Archivado (PDF) del original el 28 de enero de 2024. Recuperado el 28 de enero de 2024 .
- ↑ "Sharp 1986 Semiconductor Data Book" (PDF) . págs. 307–311 . Archivado (PDF) del original el 28 de enero de 2024. Recuperado el 28 de enero de 2024 .
- ↑ Ganssle, Jack G. (1992). "¡El Z80 sigue vivo!" . Archivado del original el 1 de mayo de 2009. Recuperado el 17 de julio de 2009. El
64180 es un núcleo Z80 suministrado por Hitachi con numerosos "extras" integrados. La versión de Zilog es el Z180, que es esencialmente la misma pieza.
- ↑ Ganssle, Jack G. (1992). "¡El Z80 sigue vivo!" . Archivado del original el 1 de mayo de 2009. Recuperado el 17 de julio de 2009. Tanto
Toshiba como Zilog venden los modelos 84013 y 84015, que son núcleos Z80 con periféricos Z80 convencionales integrados en la placa.
- ↑ Granville, Fran (1 de agosto de 1996). "EDN Access — 08.01.96 Z80 cumple 20 años" . EDN . Archivado del original el 7 de agosto de 2023. Recuperado el 7 de agosto de 2023 .
- ↑ "Familia de productos EZ80 ACCLAIM" . Zilog. Archivado del original el 20 de diciembre de 2008.
- ↑ Electronic Business Asia . Cahners Asia Limited. 1997. pág. 5. Los microcontroladores KL5C80A12, KL5C80A16 y KL5C8400 de Kawasaki son
MCU
y CPU de 8 bits de alta velocidad
. Su código de CPU, KC80, es compatible con el Z80 de Zilog a nivel binario. El KC80 ejecuta instrucciones aproximadamente cuatro veces más rápido que el Z80 a la misma frecuencia de reloj.
- ↑ "Especificaciones de hardware" . S1mp3.org . 19 de octubre de 2005. Archivado del original el 8 de diciembre de 2005.
- ↑ "Descripción general :: CPU T80 :: OpenCores" . opencores.org . Archivado del original el 1 de abril de 2024. Consultado el 1 de julio de 2024 .
- ↑ Rada, Col (marzo de 1981). "NSC800: una familia de microprocesadores de alto rendimiento y bajo consumo" . Electronics and Power . 27 (3). Institution of Engineering and Technology : 222. doi : 10.1049/ep.1981.0107 . Archivado del original el 16 de octubre de 2021. Recuperado el 1 de junio de 2021 .
- ↑ "TST-4043: Encriptador de datos con módem HF y FEC" . Museo de Criptografía . 27 de febrero de 2018. Archivado del original el 5 de noviembre de 2023.
- ↑ "Microprocesador CMOS de alto rendimiento y bajo consumo NSC800" (PDF) . National Semiconductor . Junio de 1992. Archivado (PDF) del original el 19 de noviembre de 2023.
- ↑ "Placas de expansión MCS-85, Zilog Z80 y National NSC800" . CPU Shack . 15 de febrero de 2015. Archivado del original el 30 de septiembre de 2023.
- ↑ "Sección 6 Tendencias del mercado de MPU, MCU y periféricos MOS" (PDF) . Integrated Circuit Engineering Corporation. pág. 16. Archivado del original (PDF) el 14 de junio de 2011.
- ↑ Axelson, Jan (2003). Embedded Ethernet and Internet Complete . Lakeview Research. pág. 93. ISBN 978-1-931448-00-0El microprocesador Rabbit 3000 de Rabbit Semiconductor, que
es una versión mucho mejorada y perfeccionada del venerable microprocesador Z80 de ZiLOG, Inc.
- ↑ Hyder, Kamal; Perrin, Bob (2004). Diseño de sistemas embebidos con el microprocesador Rabbit 3000. Newnes. pág. 32. ISBN 978-0-7506-7872-8Los componentes Rabbit se basan en gran medida en la arquitectura Zilog Z180 ,
aunque no son compatibles a nivel binario con los componentes Zilog.
- ↑ Cruz, Eduardo (23 de noviembre de 2014). "Capcom Kabuki CPU – Introducción" . Arcade Hacker . Archivado del original el 5 de noviembre de 2023.
- ↑ Holtz, Herman (1985). Estaciones de trabajo informáticas . Chapman and Hall. pág. 223. ISBN 978-0-412-00491-9...
y CP/M continuó dominando el mundo de los microordenadores de 8 bits.
- ↑ Dvorak, John C. (10 de mayo de 1982). "Después de CP/M, los sistemas operativos orientados a objetos podrían liderar el campo" . InfoWorld . Vol. 4, n.º 18. InfoWorld Media Group. pág. 20. ISSN 0199-6649 . Archivado del original el 6 de enero de 2024.
La idea de un sistema operativo genérico aún está en sus inicios. En muchos sentidos, comienza con CP/M y la mezcla de las primeras computadoras 8080 y Z80.
- ↑ Stengel, Steven. "Otrona Attache" . Museo de computadoras antiguas de Steve . Archivado del original el 27 de diciembre de 2023. Recuperado el 5 de marzo de 2019 .
- ↑ "Manual de referencia técnica de Sharp PC-1500" (PDF) . Archivado (PDF) del original el 5 de noviembre de 2023.
- ↑ "La computadora portátil del pobre" . Google Books . Popular Mechanics, abril de 1991, página 120. Abril de 1991. Consultado el 11 de abril de 2018 .
- ↑ "Laser PC4" . Museo de Computadoras Antiguas . Archivado del original el 5 de noviembre de 2023. Recuperado el 11 de abril de 2018 .
- ↑ "Láser PC5 de VTech" . larwe.com . Archivado del original el 5 de noviembre de 2023. Consultado el 11 de abril de 2018 .
- ↑ "Laser PC6" . Perfect Solutions.com . Perfect Solutions. Archivado del original el 21 de mayo de 2018. Consultado el 11 de abril de 2018 .
- ↑ "Desarrollo de Mailstation" . Fybertech.net . Archivado del original el 6 de enero de 2024. Consultado el 18 de abril de 2021 .
- ↑ Woerner, Joerg. "Texas Instruments PS-6200" . Datamath Calculator Museum . Archivado del original el 5 de noviembre de 2023. Recuperado el 18 de junio de 2019 .
- ↑ Woerner, Joerg. "Texas Instruments PocketMate 100" . Datamath Calculator Museum . Archivado del original el 5 de noviembre de 2023. Recuperado el 18 de junio de 2019 .
- ↑ Ian R. Sinclair (2000). Manual práctico de electrónica (5.ª ed.). Oxford, Inglaterra: Newnes. pág. 204. ISBN 978-0-7506-4585-0LCCN 00502236 . OCLC 42701044 .
- ↑ "Sintetizadores clásicos de Gordon Reid: el Sequential Circuits Prophet 5 y el Prophet 10" . gordonreid.co.uk . 1999. Archivado del original el 5 de noviembre de 2023.
- ↑ Fabio, Adam (19 de marzo de 2014). "Prophet 600: Un sintetizador clásico recibe una actualización de procesador" . Archivado del original el 5 de noviembre de 2023.
- ↑ Keeble, Rob (septiembre de 2002). "30 años de Emu" . Sound On Sound . SOS Publications Group . Recuperado el 10 de enero de 2025 .
- ↑ "Creando una demo para un teléfono antiguo — AONDEMO" . habr.com . 29 de enero de 2020. Archivado del original el 5 de noviembre de 2023.
Fuentes
- Anderson, A. John (1994). Fundamentos de la tecnología informática (1.ª ed.). Londres: Chapman & Hall. ISBN 0-412-59810-8.
- Ciarcia, Steve (1981). Construye tu propio ordenador Z80: directrices de diseño y notas de aplicación (1.ª ed.). Byte Books. ISBN 978-0-07-010962-9.
- Faggin, Federico; Peuto, Bernard; Shima, Masatoshi; Ungermann, Ralph (27 de abril de 2007). "Panel de historia oral sobre el desarrollo y la promoción del microprocesador Zilog Z8000" (PDF) (Entrevista).
Lecturas adicionales
- Hojas de datos y manuales
- Hoja de datos del Z80 (NMOS) ; Zilog; 10 páginas; 1978.
- Manual de datos Z80 (NMOS) ; Zilog; 131 páginas; 1978.
- Hoja de datos del Z80 (NMOS y CMOS) ; Zilog; 36 páginas; 2002. Erratas
- Manual de usuario del Z80 (NMOS y CMOS) ; Zilog; 332 páginas; 2016.
- Manual de usuario de periféricos Z80 (NMOS y CMOS) ; Zilog; 330 páginas; 2001.
- Libros de ferretería
- Construye tu propio ordenador Z80 : directrices de diseño y notas de aplicación ; 1.ª ed.; Steve Ciarcia ; Byte Books; 332 páginas; 1981; ISBN 978-0070109629. (archivo)
- Microprocesador Z80: Arquitectura, Interfaz, Programación y Diseño ; 1.ª ed.; Ramesh Gaonkar; Macmillan; 674 páginas; 1988; ISBN 978-0675205405. (archivo)
- Manual de usuario del Z80: definiciones de pines, señales de control, periféricos y más ; 1.ª ed.; Joseph Carr; Reston; 338 páginas; 1980; ISBN 978-0835995177. (archivo)
- Técnicas de interfaz de microprocesadores ; 3.ª ed.; Rodnay Zaks y Austin Lesea; Sybex; 466 páginas; 1979; ISBN 978-0-89588-029-1. (archivo)
- Libros de software
- Programando el Z80 ; 3ª edición; Rodnay Zaks; sibex; 630 páginas; 1980; ISBN 978-0895880949. (archivo)
- Programación en lenguaje ensamblador Z80 ; 1.ª ed.; Lance Leventhal; Osborne/McGraw-Hill; 642 páginas; 1979; ISBN 978-0931988219. (archivo)
- Lenguaje ensamblador 8080/Z80: Técnicas para mejorar la programación ; 1.ª ed.; Alan Miller; John Wiley & Sons; 332 páginas; 1981; ISBN 978-0471081241. (archivo)
- Programación en lenguaje ensamblador para Z80 y 8080 ; 1.ª ed.; Kathe Spracklen; Hayden; 180 páginas; 1979; ISBN 978-0810451674. (archivo)
- Programación práctica de microordenadores: el Z80, incluyendo el código fuente del ensamblador residente y el monitor de depuración ; 1.ª ed.; Walter Weller; Northern Technology; 501 páginas; 1978; ISBN 978-0930594053. (archivo)
- Subrutinas en lenguaje ensamblador Z80 ; 1.ª ed.; Lance Leventhal y Winthrop Saville; Osborne/McGraw-Hill; 512 páginas; 1983; ISBN 978-0931988912. (archivo)
- Z80 no documentado documentado ; Sean Young; v0.91; 52 páginas; 2005. (archivo)
- Fichas de referencia
- Ficha de referencia para el microprocesador Z80 ; Shirley & Nanos; Nanos Systems; 16 páginas; 1981. (archivo)
- Tarjeta de referencia instantánea del microprocesador Z80 ; James Lewis; Micro Logic; 2 páginas; 1981. (archivo)
Enlaces externos
- Página de soporte no oficial de Z80
- Literatura técnica Z80
- Colección de pruebas Z80
- Hoja de referencia rápida del Z80
- Lista de chips compatibles con Z80
- Shirriff, Ken (septiembre de 2013). "Ingeniería inversa del Z-80: explicación del silicio para dos compuertas interesantes" . Archivado del original el 28 de noviembre de 2023. Recuperado el 26 de noviembre de 2023 .
- — (septiembre de 2013). "El Z-80 tiene una ALU de 4 bits. Así es como funciona" . Archivado del original el 9 de septiembre de 2013. Recuperado el 16 de noviembre de 2021 .
- — (octubre de 2014). "Hasta el silicio: cómo se implementan los registros del Z80" . Archivado del original el 6 de octubre de 2014. Consultado el 5 de octubre de 2014 .
- — (Noviembre de 2013). "Ingeniería inversa del circuito de incremento/decremento de 16 bits del Z-80" . Archivado del original el 15 de enero de 2024. Recuperado el 26 de noviembre de 2023 .
Simuladores / Emuladores:
- emuladores de software Z80
- Otro emulador Z80 más
- Emulador de bus Z80 con fines educativos
- Remix visual Z80
- Librería de emulación Z80 escrita en ANSI C
- Tableros
- El ordenador Z80 de 7 chips de Grant
- El ordenador Z80 de 9 chips de Grant admite CP/M 2.2 o BASIC.
- Computadora link3000 de 6 chips Z80, compatible con CP/M 2.2
- Introducciones relacionadas con la informática en 1976
- Microprocesadores Zilog
- Z80
- Productos de Sharp Corporation
- microprocesadores de 8 bits
