stringtranslate.com

Z80

Configuración de pines del paquete de chip DIP40 original del Z80

El Z80 es un microprocesador de 8 bits presentado por Zilog como el primer producto de la nueva empresa . El Z80 fue concebido por Federico Faggin a finales de 1974 y desarrollado por él y sus 11 empleados a principios de 1975. Las primeras muestras funcionales se entregaron en marzo de 1976 y se introdujo oficialmente en el mercado en julio de 1976. Con los ingresos de la Z80, la empresa construyó sus propias fábricas de chips y creció hasta contar con más de mil empleados en los dos años siguientes. [2]

El Zilog Z80 es una extensión y mejora compatible con software del Intel 8080 y, al igual que este, estaba dirigido principalmente a sistemas integrados . Aunque se utilizó en esa función, el Z80 también se convirtió en una de las CPU más utilizadas en computadoras de escritorio y domésticas desde la década de 1970 hasta mediados de la de 1980. [3] [4] También era común en aplicaciones militares, equipos musicales como sintetizadores (como el Roland Jupiter-8 ) y juegos arcade que funcionan con monedas de finales de los años 1970 y principios de los 1980, incluido Pac-Man .

Zilog otorgó la licencia del Z80 a Synertek y Mostek , con sede en EE. UU ., que los habían ayudado con la producción inicial, así como a un fabricante europeo de segunda fuente, SGS . El diseño también fue copiado por varios fabricantes japoneses, de Europa del Este y soviéticos. [iii] Esto ganó la aceptación del Z80 en el mercado mundial desde que grandes empresas como NEC , Toshiba , Sharp e Hitachi comenzaron a fabricar el dispositivo (o sus propios clones o diseños compatibles con el Z80).

En las últimas décadas, Zilog se ha vuelto a centrar en el mercado en constante crecimiento de sistemas integrados, y la familia de microcontroladores compatibles con Z80 más reciente , el eZ80 de 24 bits totalmente canalizado con un rango de direcciones lineales de 16  MB , se ha introducido con éxito junto con los más simples Z80 y Productos Z180 .

Historia

Un anuncio de mayo de 1976 del Z80 describe sus principales ventajas sobre el 8080.
Foto del diseño del microprocesador Zilog Z80 original en nMOS de carga de agotamiento . El tamaño total del troquel es 3545×3350 μm. Los cuadrados azules alrededor del exterior son las almohadillas que se conectan a los pines externos. Este chip fue fabricado en 1990.
Un CMOS Z80 en un paquete plano cuádruple de 44 pines .

Historia temprana

En Fairchild Semiconductor , y más tarde en Intel , el físico e ingeniero Federico Faggin había estado trabajando en 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 Intel 4004 , Intel 8080 y varios otros circuitos integrados. Masatoshi Shima fue el principal diseñador lógico y a nivel 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 . [5]

A principios de 1974, Intel veía sus microprocesadores no tanto como productos para vender por sí solos sino como una forma de vender más de sus productos principales, RAM y ROM estáticas . Una reorganización colocó a 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. [5] Todo esto hizo que Faggin se sintiera inquieto, e invitó a Ungermann a tomar unas copas y le preguntó si estaría interesado en iniciar su propia empresa. Ungermann aceptó de inmediato y, como tenía menos que hacer en Intel, se fue en agosto o septiembre, seguido por Faggin, cuyo último día en Intel fue Halloween de 1974. [6] Cuando Shima se enteró, pidió venir también a la nueva empresa. , pero al no tener diseño de producto ni dinero, le dijeron que esperara. [7]

La empresa recién formada y anónima inicialmente comenzó a diseñar un microcontrolador de un solo chip llamado 2001. Se reunieron con Synertek para discutir la fabricación de 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 líneas de producción propias, como Intel. Luego 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 [7] 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 agrega muchas de las características interesantes del Motorola 6800 , incluidos registros de índice e interrupciones mejoradas . [8]

Inversión de Exxon, comienza el desarrollo detallado

Mientras aún estaban en fase de creación, el boletín del sector Electronic News se enteró de ellos y publicó una historia sobre la nueva empresa. Esto atrajo la atención de Exxon Enterprises, el brazo de inversión en alta tecnología de Exxon . En ese momento, en plena recesión, había muy poco capital de riesgo disponible: en todo 1975 se gastó un total de 10 millones de dólares para toda la industria (equivalente a 54 millones de dólares en 2022). Alguien de Exxon se puso en contacto con la empresa, aún sin nombre, [7] y organizó una reunión que finalmente les llevó a proporcionar una financiación inicial de 500.000 dólares en junio de 1975 (equivalente a 2,7 millones de dólares en 2022). [9]

Con la financiación en discusión y un diseño por construir, Shima se unió en febrero de 1975. [8] Shima inmediatamente se dedicó a producir un diseño de alto nivel, agregando varios conceptos propios. En particular, utilizó su experiencia con las minicomputadoras NEC para agregar el concepto de dos conjuntos de registros de procesador para que pudieran responder rápidamente a las interrupciones . [6] [iv] Ungerman comenzó el desarrollo de una serie de controladores y chips periféricos relacionados que complementarían el diseño. [10]

Durante este período, Shima desarrolló 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 el chip y vetaba su adición si era demasiado grande. [11] La primera pasada del diseño se completó en abril de 1975. Shima había completado un diseño lógico a principios de mayo. El 7 de agosto se publicó una segunda versión del diseño lógico y los detalles del autobús el 16 de septiembre. El montaje de la cinta se completó en noviembre y convertir la cinta en una máscara de producción requirió dos meses más. [12]

Faggin ya había empezado a buscar un socio de producción. En ese momento, Synertek y Mostek habían establecido las líneas de producción en modo de agotamiento que podrían usarse para producir el diseño. Habiendo hablado anteriormente con Synertek, Faggin se acercó a ellos primero. Sin embargo, el presidente de Synertek exigió que se concediera a la empresa una licencia de segunda fuente , que les permitiera vender el diseño directamente. Faggin pensó que esto significaría que nunca podrían competir incluso si establecieran sus propias líneas, y el acuerdo fracasó. Luego recurrió a Mostek, quien aceptó un término de exclusividad mientras Zilog configuraba sus líneas y finalmente obtuvo el acuerdo de segunda fuente. [13]

Después de considerar muchos nombres para la nueva empresa y encontrarlos tan poco memorables que no podían recordarlos ni siquiera un día después, Faggin y Ungermann estaban dando vueltas a ideas basadas en la "lógica integrada" cuando Ungermann dijo "¿qué tal Zilog?" Faggin estuvo de acuerdo de inmediato y afirmó que podían decir que era la "última palabra en lógica integrada". Cuando se encontraron al día siguiente y ambos inmediatamente lo recordaron, la empresa tenía su nombre. [14]

En producción

Las primeras muestras fueron devueltas por Mostek el 9 de marzo de 1976. [10] A finales de mes, también habían completado un sistema de desarrollo basado en ensamblador . Algunos de los circuitos integrados periféricos y compatibles con el 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), Z80 DMA [15] (acceso directo a memoria), Z80 DART (receptor-transmisor asíncrono dual), Z80 SIO (controlador de comunicación síncrono) y Z80 PIO (entrada/salida paralela) .

El Z80 se lanzó oficialmente en julio de 1976. [16] Uno de los primeros clientes fue un comprador que, sin que Zilog lo supiera, trabajaba para NEC. En aquel momento, las empresas japonesas de electrónica 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 a Faggin se le ocurrió la idea de agregar transistores que se modificarían sutilmente para funcionar de manera diferente a lo que sugeriría una inspección visual. Shima añadió 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 seis meses. [17]

El exitoso lanzamiento permitió a Faggin y Ungermann acercarse a Exxon en busca de financiación para construir su propia fábrica. La empresa estuvo de acuerdo y Zilog construyó una línea de producción muy rápidamente. Esto les permitió capturar entre el 60 y el 70% del mercado total de ventas del Z80. [18] Con su propia línea en funcionamiento, Mostek recibió el visto bueno para iniciar las ventas de sus propias versiones, el MK3880, que proporcionó una segunda fuente para los clientes de la que Intel carecía. En ese momento, una segunda fuente se consideraba extremadamente importante, ya que una nueva empresa como Zilog podría cerrar y dejar varados a clientes potenciales. [8] [v]

Comparación con el 8080

Faggin diseñó el conjunto de instrucciones para que fuera compatible binariamente con el 8080 [19] [20] de modo que la mayor parte del código 8080, en particular el sistema operativo CP/M y el compilador PL/M de Intel para 8080 (así como su código generado), se ejecutara. sin modificar en la nueva CPU Z80. Masatoshi Shima diseñó la mayor parte de la microarquitectura , así como los niveles de puerta y transistor de la CPU Z80, con la ayuda de un pequeño número de ingenieros y diseñadores . [21] [22] El CEO Federico Faggin estuvo muy involucrado en el trabajo de diseño del chip, junto con dos personas dedicadas al diseño. Según Faggin, trabajó 80 horas a la semana para cumplir con el apretado calendario que le habían asignado los inversores financieros. [2]

El Z80 ofreció muchas mejoras con respecto al 8080: [20]

Éxito en el mercado

El Z80 reemplazó al 8080 y su descendiente, el 8085 , en el mercado de procesadores [27] y se convirtió en una de las CPU de 8 bits más populares y utilizadas. [3] [4] Algunas organizaciones como British Telecom permanecieron leales al 8085 para aplicaciones integradas, debido a su familiaridad con él y a su interfaz serial en chip y arquitectura de interrupción. Asimismo, Zenith Data Systems emparejó el 8085 con el Intel 8088 de 16 bits en su primera computadora 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 otras computadoras 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 8502 .

Más tarde, Zilog estaba produciendo un Z80 de bajo consumo adecuado para el creciente mercado de computadoras portátiles de principios de la década de 1980. Intel produjo un CMOS 8085 (80C85) utilizado en computadoras portátiles que funcionan con baterías, como la computadora portátil diseñada por Kyocera en abril de 1983, también vendida 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 actualización de la DRAM incorporada, al menos en mercados como CP/M y otras computadoras de oficina y domésticas. (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 múltiples niveles, útil para dar servicio a múltiples chips Z80 IO. Estas características permitieron construir sistemas con menos hardware de soporte y diseños de placas de circuito 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 estos 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) .

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 (Z80B) y 8 MHz (Z80H). [29] [30] La versión NMOS se ha producido como una pieza de 10 MHz desde finales de la década de 1980. Las versiones CMOS se desarrollaron con límites de frecuencia superiores específicos 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 manteniendo el estado interno y sin límite de frecuencia inferior . [ix] Los derivados totalmente compatibles HD64180 / Z180 [31] [32] y eZ80 están actualmente especificados para hasta 33 y 50 MHz respectivamente.

Diseño

Modelo de programación y conjunto de registros.

Un diagrama de bloques aproximado del Z80: no hay un sumador dedicado para compensaciones ni un incrementador separado para R, y no se necesita más de un registro temporal de 16 bits WZ (aunque los pestillos del incrementador también se usan como un registro temporal de 16 bits). , en otros contextos). Son los registros de PC e IR los que se colocan en un grupo separado, con un segmento de bus desmontable, para permitir actualizaciones de estos registros en paralelo con el banco de registros principal. [33]

El modelo de programación y el conjunto de registros del Z80 son bastante convencionales y, en última instancia, se basan 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. [x]

El diseño del 2200 permitía emparejar los registros H y L (alto y bajo) de 8 bits en un registro de direcciones HL de 16 bits. [xi] 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 direcciones. El 8080 también introdujo el importante modo de datos inmediatos de 8 bits para operaciones de acumulador y datos inmediatos de 16 bits para cargas HL, BC y DE. 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, tuvieran un 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 direcciones base, donde una instrucción particular proporciona un desplazamiento constante que se suma a los valores anteriores, pero también se pueden utilizar 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 durante el tiempo de una instrucción que usa HL; Esto a veces hace que el uso de IX o IY sea menos eficiente que un método que utiliza sólo 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 la aritmética de 16 bits con signo .

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 uno 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 la función integrada, ya que mejora el rendimiento del manejo de interrupciones, pero encontró un uso generalizado en la función 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 a menudo se denomina "conjunto de registros alternativo" (algunos, el archivo de registro "preparado", ya que el carácter de apóstrofo se usa para indicarlos en el código fuente del ensamblador y en la documentación de Zilog). Esto enfatiza que solo se puede direccionar un conjunto en cualquier momento. Sin embargo, el acumulador A de 8 bits con su registro de bandera F está separado de los pares de registros de "propósito general" HL, DE y BC. Esto se logra con dos instrucciones separadas utilizadas 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 independientemente con cualquiera de los registros de 8 bits de propósito general en el archivo de registro alternativo (o preparado) o, si HL' contiene un puntero a la memoria, algún byte allí (DE' y BC' también puede transferirse). Datos de 8 bits entre memoria y acumulador A).

Esto puede resultar confuso para los programadores porque después de ejecutar EX AF,AF'o EXXlo que antes eran los registros alternativos (preparados) ahora son los registros principales, y viceversa. La única manera que tiene el programador de saber qué conjunto(s) están en contexto (mientras "juega con la computadora" mientras examina el texto fuente del ensamblador, o peor aún, examina minuciosamente el código con un depurador) es rastrear dónde se realiza cada intercambio de registro en cada punto en el programa. Obviamente, si se realizan muchos saltos y llamadas dentro de estos segmentos de código, rápidamente puede resultar difícil saber qué archivo de registro está en contexto, a menos que se comente cuidadosamente. Por tanto, es aconsejable que las instrucciones de intercambio se utilicen directamente y en segmentos de código cortos y discretos. 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 estar emparejados para proporcionar versiones de 16 bits. Los registros compatibles con 8080 [36] son:

Los nuevos registros introducidos con el Z80 son:

El registro de actualización , Raumenta cada vez que la CPU recupera 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. En ocasiones, esto se ha utilizado para generar números pseudoaleatorios en juegos y también en esquemas de protección de software. [ cita necesaria ] También se ha empleado como 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 activando una interrupción al finalizar (conectando INT a A6).

El registro de vector de interrupción , I, se utiliza para las interrupciones del 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 rutina de servicio que se seleccionan mediante 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. [24] 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 tipo margarita para resolución prioritaria. Al igual que el registro de actualización, este registro también se ha utilizado en ocasiones 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 el registro de banderas Z80, a diferencia de todas las demás LDinstrucciones (de carga). Los indicadores Signo (bit 7) y Cero (bit 6) se configuran de acuerdo con los datos cargados desde los registros fuente Actualizar o Interrumpir. Para ambas instrucciones, el indicador de paridad/desbordamiento (bit 2) se establece de acuerdo con el estado actual del flip-flop IFF2. [37]

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 ciclos. [38]

Lenguaje ensamblador Z80

Punto de datos 2200 e Intel 8008

El primer lenguaje ensamblador Intel 8008 se basó en una sintaxis muy simple (pero sistemática) heredada del diseño del Datapoint 2200. Esta sintaxis original se transformó más tarde 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 en el chip Intel 8080 más avanzado (el 8008 y el 8080 compartían un subconjunto de lenguajes sin ser compatibles binariamente ; sin embargo, el 8008 era compatible binariamente con el Datapoint 2200).

En este proceso, el mnemónico Lde LOAD fue reemplazado por varias abreviaturas de las palabras LOAD , STORE y MOVE , entremezcladas con otras letras simbólicas. La letra mnemotécnica M, para la memoria (a la que hace referencia HL), se sacó del interior de la instrucción mnemotécnica para convertirse en un operando sintácticamente independiente , mientras que los registros y combinaciones de registros se denotaron de manera muy inconsistente; ya sea mediante operandos abreviados (MVI D, LXI H, etc.), dentro del propio mnemónico de instrucción (LDA, LHLD, etc.), o ambos al mismo tiempo (LDAX B, STAX D, etc.).

Ilustración de cuatro sintaxis, utilizando ejemplos de instrucciones de carga y almacenamiento equivalentes o (para 8086) muy similares. [39] 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 a continuación), mientras que la sintaxis 8086 usa paréntesis en lugar de paréntesis ordinarios 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. Tenga en cuenta que el 8086 no es un superconjunto completo del Z80. BX es el único par de registros 8086 que se puede utilizar como puntero.

Nueva sintaxis

Debido a que Intel reclamó derechos de autor sobre sus mnemónicos 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:

Estos principios hicieron que fuera sencillo encontrar nombres y formas para todas las instrucciones nuevas del Z80, así como ortogonalizaciones de las antiguas, como LD BC,(1234).

Aparte de las diferencias de nombres, y a pesar de una cierta discrepancia en la estructura básica de los registros, la sintaxis de Z80 y 8086 es prácticamente isomórfica 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 8080 y 8086, aunque los programas 8080 pueden traducirse al lenguaje ensamblador 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 le da 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 la operación de todos los programas 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 de bits, y otras instrucciones del 8080 con modos de direccionamiento más versátiles, como las cargas de 16 bits, E/S, rota/desplaza y saltos relativos):

No hay instrucciones de multiplicación explícitas disponibles en el Z80 original, [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 también IX e IY). Las instrucciones de cambio también pueden multiplicar o dividir por potencias de dos.

Los diferentes tamaños y variantes de adiciones, cambios y rotaciones tienen efectos algo diferentes en las banderas porque la mayoría de las propiedades de cambio de banderas del 8080 fueron copiadas. Sin embargo, el bit P del indicador de paridad del 8080 (bit 2) se llama P/V (paridad/desbordamiento) en el Z80, ya que cumple el propósito adicional de un indicador de desbordamiento en complemento a dos, una característica de la que carece el 8080. Instrucciones aritméticas sobre el Z80 lo configuró para indicar desbordamiento en lugar de paridad, mientras que las instrucciones bit a bit todavía lo usan 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 un desbordamiento con signo donde el 8080 indicaría paridad, lo que posiblemente cause que la lógica de algún software práctico del 8080 falle en el Z80. [xiii] ) Esto El 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) DECno lo afectan. Además, el bit 1 del registro de banderas (un bit de repuesto en el 8080) se utiliza como bandera 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 más tarde DAAproducirá un resultado diferente en un 8080 antiguo que en el Z80. Sin embargo, esto probablemente sería un código erróneo en el 8080, ya que DAAse definió para agregar solo 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 memoria desde estos tres pares de registros, a diferencia del 8080. [39] Al igual que en el 8080, las instrucciones de carga no afectan los indicadores ( excepto para las cargas de registro 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í mismo (p. ej. LD A,A). Esto es efectivamente un NOP.

Las nuevas instrucciones de transferencia en bloque pueden mover hasta 64 kilobytes de memoria a memoria o entre la memoria y los puertos periféricos de E/S. Las instrucciones de bloque LDIRy LDDR( cargar , incrementar / disminuir , repetir ) utilizan 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 del origen al destino, los punteros se incrementan o disminuyen y el contador de bytes disminuye hasta que BC llega a cero. Las versiones no repetitivas LDImueven LDDun solo byte y activan los punteros y el contador de bytes, que si se vuelve cero restablece el indicador P/V. Las instrucciones correspondientes de memoria a E/S INIR, INDR, OTIR, OTDR, INI, y funcionan de manera similar, excepto que B, no BC, se utiliza como contador de bytes IND. [47] [48] El Z80 puede ingresar y enviar 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, usando una dirección de puerto directa especificada en la instrucción; se requiere una técnica de código de modificación automática para usar una dirección de puerto 8080 variable).OUTIOUTD

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 CPIRsolo CPDRterminan si BC llega 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 reinicia la bandera Z. Hay versiones que no se repiten 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. Sólo se pueden probar los indicadores cero y acarreo para estas nuevas JRinstrucciones de dos bytes. (Todos los saltos y llamadas al 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 salto decremental si no está en cero ) toma un 8 con signo -desplazamiento de bits como operando inmediato. El registro B disminuye y, si el resultado es distinto de cero, la ejecución del programa salta en relación con la PC; las banderas permanecen inalteradas. Para realizar un bucle equivalente en un 8080 se requieren instrucciones de salto separadas y condicionales (a una dirección absoluta de dos bytes) (por un total de cuatro bytes), y altera el registro de bandera.DECDEC

Las instrucciones de registro de índice (IX/IY, a menudo abreviado XY) pueden ser útiles para acceder a datos organizados en estructuras heterogéneas fijas (como registros ) o en desplazamientos fijos relativos a una dirección base variable (como en marcos de pila recursivos ) y también pueden reducir el código. tamaño al eliminar la necesidad de múltiples instrucciones cortas utilizando 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 usando HL y apuntar a la siguiente). Así, para accesos simples o lineales a datos, el uso de IX e IY tiende a ser más lento y ocupar más memoria. Aún 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 oficialmente no documentadas (ver más abajo) pueden ser especialmente útiles en este contexto, ya que sufren menos desaceleración que sus padres de 16 bits. De manera similar, las instrucciones para adiciones de 16 bits no son particularmente rápidas (11 relojes) en el Z80 original (siendo 1 reloj más lentas que en el 8080/8085); no obstante, son aproximadamente el doble de rápidos 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 compensación (que generalmente 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 canalizadas .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 pilas como Forth , que al final de cada palabra Forth (las subrutinas atómicas que componen el lenguaje) deben volver incondicionalmente a sus rutinas de intérprete de subprocesos. Normalmente, esta instrucción de salto aparece cientos de veces en una aplicación y, al usarla, JP (XY)en lugar de JP THREADguardarla, se guarda un byte y dos estados T para cada aparición. Naturalmente, esto 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 microcodificado, 10 años más nuevo, inicialmente podría permitir más "área de chip", lo que permitiría una implementación ligeramente más eficiente (utilizando una ALU más amplia , entre otras cosas); Se pueden decir cosas similares del Z800 , Z280 y Z380 . Sin embargo, no fue hasta que se lanzó el eZ80 completamente desarrollado en 2001 que esas instrucciones finalmente se volvieron aproximadamente tan eficientes en ciclos como es técnicamente posible realizarlas, es decir, dadas las codificaciones Z80 combinadas con la capacidad de realizar una lectura de 8 bits o escribe cada ciclo de reloj. [ cita necesaria ]

Instrucciones indocumentadas

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, fueron tratados sólo como de 16 bits. 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 16 bits o por separado como registros Alto y Bajo . 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 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. Preceder esta instrucción de dos bytes con 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 instrucciones similares que LD H,(IX+d)utilizan los registros HL y 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, reservando los registros normales de 8 bits para otros usos. La capacidad no documentada de incrementar y disminuir la mitad superior de un registro de índice facilitó la ampliación del rango de instrucciones indexadas normales, sin tener que recurrir a las instrucciones documentadas ADD/SBC XY,DEo ADD/SBC XY,BC.

También hay varias otras instrucciones no documentadas. [51] El Z80 no detecta códigos de operación ilegales o no documentados y tienen varios efectos, algunos de los cuales son útiles. Sin embargo, como no son parte de la definición formal del conjunto de instrucciones, no se garantiza (ni es especialmente probable) que diferentes implementaciones del Z80 funcionen de la misma manera para cada código de operación no documentado.

Insectos

Las OTDRinstrucciones no se ajustan a la documentación del Z80. Se supone que tanto las instrucciones OTDRcomo OTIRdeben dejar la bandera de acarreo (C) sin modificar. La OTIRinstrucción funciona correctamente; sin embargo, durante la ejecución de la OTDRinstrucción, el indicador de acarreo toma los resultados de una comparación espuria entre el acumulador (A) y la última salida de la OTDRinstrucción. [52]

Código de ejemplo

EJEMPLO 1: El siguiente código fuente del ensamblador Z80 es para una subrutina denominada HELLO_WORLD. Este es un programa introductorio que imprimirá un mensaje en la pantalla de video y luego saldrá. Aunque simple, demuestra cómo se formatea un código fuente ensamblador e interactúa con el hardware de la pantalla a través de un sistema operativo de computadora. Esto es necesariamente específico de un hardware informático, un sistema operativo y un software ensamblador en particular. El ejemplo utilizado es el
TRS-80 Modelo 4 que ejecuta TRSDOS/LS-DOS 6.x, producido por Tandy/Radio Shack y Logical Systems, y la mayoría de los ensambladores vendidos por Radio Shack o Misosys Inc. (Serie I/EDTASM, ALDS, EDAS o MRAS con interruptor -GC). Las características principales de esta configuración son universales para los ensambladores Z80, incluso bajo CP/M.

EJEMPLO 2: El siguiente código fuente ensamblador Z80 es para una subrutina denominada 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 importante, pero que es irrelevante para algunas aplicaciones, como, especialmente, cuando el origen está en la ROM y el destino en la RAM, por lo que nunca pueden superponerse. El código de muestra es extremadamente ineficiente y está destinado a ilustrar varios tipos de instrucciones, en lugar de las mejores prácticas de velocidad. El bloque de datos se copia un byte a la vez y la lógica de bucle y movimiento de datos utiliza operaciones de 16 bits. Además, el Z80 tiene una única instrucción que ejecutará todo el bucle ( LDIR). Tenga en cuenta 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). [53] Cada ciclo M corresponde aproximadamente a un acceso a la memoria o a una operación interna. Muchas instrucciones en realidad terminan durante el M1 de la siguiente instrucción, lo que se conoce como superposición de búsqueda/ejecución .

Los ciclos de la máquina Z80 son 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 engorrosa lógica asincrónica y hace que las señales de control se comporten consistentemente en una amplia gama de frecuencias de reloj. También significa que se debe utilizar un cristal de mayor frecuencia que sin esta subdivisión de ciclos de máquina (aproximadamente 2 a 3 veces mayor). 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 la memoria y así la memoria puede estar activa en paralelo con la CPU en mayor medida, permitiendo un uso más eficiente del ancho de banda de la memoria disponible. [ cita necesaria ]

Un ejemplo central de esto es que, para la recuperación de 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 entre el 30 y el 40 % de un ciclo de reloj. [ cita necesaria ] Dado que la asequibilidad del chip de memoria (es decir, tiempos de acceso de alrededor de 450-250 ns en la década de 1980 [ cita necesaria ] ) que generalmente determinaba el tiempo de acceso más rápido posible, esto significó que dichos diseños estaban bloqueados en un ciclo de reloj significativamente más largo (es decir, interno más bajo velocidad de reloj) 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 podría usarse con seguridad en diseños integrados a menudo ha estado limitado por los tiempos de acceso a la memoria, no por la frecuencia máxima de la CPU (especialmente durante la era de las computadoras domésticas). Sin embargo, esta relación ha ido cambiando lentamente durante las últimas décadas, particularmente en lo que respecta a SRAM ; Por lo tanto, los diseños de ciclo único y sin caché, como el eZ80, se han vuelto mucho más significativos 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 decodifica y ejecuta la instrucción recuperada. 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 piezas periféricas para el Z80, todas las cuales admiten el sistema de manejo de interrupciones y el espacio de direcciones de E/S del Z80. Estos incluyen el canal contador/temporizador (CTC), [61] el SIO (entrada/salida serie), el DMA (acceso directo a memoria), el PIO (entrada/salida paralela) y el DART (receptor-transmisor asíncrono dual). A medida que se desarrolló la línea de productos, se introdujeron versiones CMOS y de baja potencia de estos chips.

Al igual que los procesadores 8080, 8085 y 8086, pero a diferencia de procesadores como el Motorola 6800 y MOS Technology 6502, el Z80 y el 8080 tienen una línea de control y un espacio de direcciones separados para instrucciones de E/S. Mientras que algunas computadoras basadas en Z80, como la Osborne 1 , usaban dispositivos de entrada/salida mapeados en memoria "estilo Motorola" , generalmente el espacio de E/S se usaba para direccionar uno de los muchos chips periféricos Zilog compatibles con el Z80. Durante el tiempo para una operación de lectura o escritura de E/S, el Z80 inserta automáticamente un único ciclo de espera. [62] Los chips Zilog I/O soportaban las nuevas interrupciones modo 2 del Z80, lo que simplificaba el manejo de interrupciones para un gran número de periféricos.

Se describió oficialmente que el Z80 admite 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 afirman 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 optar por 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 NMOS Z80, LH0080 y μPD780C , respectivamente. El LH0080 se utilizó en varias computadoras domésticas y 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 4MHz y 6MHz, respectivamente. [64] Sharp también desarrolló LH0083 [65] compatible con Z80 DMA.

Toshiba creó una versión CMOS, la TMPZ84C00, en la que creen [ ¿ quién? ] (pero no verificado) es el mismo diseño que también utiliza Zilog para su propio CMOS Z84C00. También hubo chips 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 de Z80, PIO y CTC respectivamente, son fabricados por Sharp.

En Alemania Oriental 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, denominado 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 notable 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 utilizarse para una producción mayor. Sin embargo, debido al colapso de la microelectrónica soviética a finales de la década de 1980, hay muchos más T34BM1 que КР1858ВМ1. [ cita necesaria ]

Derivados

Compatible con el Z80 original.
No compatible
Parcialmente compatible
Ya no se produce

Usos notables

Computadores de escritorio

El Z80A se utilizó como CPU en varias consolas de juegos, como esta ColecoVision .

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

Un Sinclair ZX Spectrum que utiliza un Z80 con frecuencia de 3,5 MHz

Se introdujeron varias 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. Son notables la serie TRS-80 , incluido el modelo original (posteriormente denominado "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 la DEC Rainbow 100 y la Seequa Chameleon , las cuales presentaban una CPU Intel 8088 y una Z80, para admitir aplicaciones CP/M-80 de 8 bits que se ejecutan en la Z80 o un MS-DOS personalizado. que no era totalmente compatible con las aplicaciones DOS de 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 formación sencillo y económico para el microprocesador Z80. Actualmente, todavía lo fabrica y 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 introdujo el Hotbit y Gradiente introdujo el Expert , que se convirtió en la computadora doméstica de 8 bits dominante en Brasil hasta finales de los años 1980.

Computadoras portátiles y de mano

El uso del Z80 en dispositivos más ligeros que funcionan 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ó al mercado en 1981, seguido por el mejorado Sharp PC-1600 en 1986 y el Sharp PC-E220 en 1991. Los modelos posteriores de la serie de organizadores personales Sharp Wizard también estaban basados ​​en el Z80. . A las computadoras portátiles que podían ejecutar el sistema operativo CP/M al igual que las máquinas de escritorio les siguieron la Epson PX-8 Geneva en 1984, y en 1985 la Epson PX-4 y la Bondwell-2 . Si bien en los años siguientes el mercado de portátiles pasó a procesadores Intel 8086 más potentes y al sistema operativo MS-DOS, todavía se estaban introduciendo sistemas ligeros basados ​​en Z80 con una mayor duración de batería, como el Cambridge Z88 en 1988 y el Amstrad NC100. en 1992. El Z8S180 derivado del Z80 también se abrió 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 e 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 una docena de modelos culminó con su serie PocketMate. [94]

Sistemas integrados y electrónica de consumo.

PABX basada en Z80 . El Z80 es el tercer chip desde la izquierda, a la derecha del chip con la etiqueta blanca escrita a mano.

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. [3] [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 .

Un buen número 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 . El Sega Genesis contiene un Z80, con sus propios 8 KB de RAM, que se ejecuta 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 brindar compatibilidad con versiones anteriores de los juegos Master System, el Z80 se usa a menudo para controlar y reproducir audio en el software Genesis. [xiv]

Las CPU Z80 también se utilizaron en la innovadora y popular serie TI-8x de calculadoras gráficas de Texas Instruments , comenzando en 1990 con la TI-81 , que cuenta con una Z80 con frecuencia 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 , sincronizan sus CPU Z80 a 6 MHz o más. (Algunos modelos con nombres TI-8x utilizan 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 , introducida en 2004, todavía está en producción a partir de 2023. La serie TI-84 Plus CE , introducida en 2015, utiliza el procesador Zilog eZ80 derivado del Z80 y también sigue en producción a partir de 2023.

A finales de la década de 1980, una serie de teléfonos fijos soviéticos llamados "AON" presentaban el Z80; Estos teléfonos ampliaron el conjunto de funciones de la línea fija 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 sobrecalentaran.

Ver también

Notas a pie de página

  1. Sólo en CMOS, Nacional no hizo versión NMOS, según Historia Oral con Federico Faggin
  2. ^ Que es compatible con versiones anteriores de Intel 8080
  3. ^ 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 poder hacer funcionar su μPD780.
  4. ^ Esta era una característica bastante común de los diseños de minicomputadoras de la época y se abrió camino en varios de los primeros microprocesadores.
  5. ^ Zilog fabricó el Z80 y 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 " ​​que son hoy.
  6. ^ Aunque el 8080 tenía instrucciones de suma de 16 bits e instrucciones de incremento y decremento de 16 bits, no tenía resta explícita de 16 bits ni indicador de desbordamiento. El Z80 complementó esto con las instrucciones ADC HL,rr y SBC HL,rr, que configuran el nuevo indicador de desbordamiento en consecuencia. (El ADD HL,rr compatible con 8080 no lo hace).
  7. ^ 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 domésticas Sinclair . También se utilizaron de manera similar en algunas computadoras anteriores pero menos conocidas basadas en Z80, como las suecas ABC 80 y ABC 800 .
  8. ^ Como esta actualización no necesita transferir ningún dato, solo genera direcciones de fila secuenciales, ocupa menos de 1,5 estados T. La señal M1 dedicada ( ciclo de máquina uno ) en el Z80 se puede utilizar para permitir a los chips de memoria la misma cantidad de tiempo de acceso para la recuperación de instrucciones que para el acceso a datos, es decir, casi 2 estados T completos fuera del ciclo de recuperación de 4T (también como fuera del ciclo de lectura de datos 3T ). El Z80 podrí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 entre 4 y 5 veces la frecuencia interna de un 6800, 6502 o similar usando el mismo tipo de memoria.
  9. ^ 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.
  10. ^ La familia 8086 relacionada también heredó este diseño de registro.
  11. ^ Este puntero HL variable era en realidad 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 utilizar direcciones directas para acceder a los datos.
  12. ^ Las instrucciones de salto ( JP), que cargan el contador del programa con una nueva dirección de instrucción, no acceden a la memoria. Las formas absolutas y relativas del salto reflejan esto omitiendo los corchetes de sus operandos. Las instrucciones de salto basadas en registros como " JP (HL)" incluyen corchetes en una aparente desviación de esta convención. [41]
  13. ^ Por ejemplo, en el 8080, un programador podría probar la paridad de un byte poniendo ADDcero en él, SUBextrayendo cero de él o ORponiendo o XORponiendo cero; 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 ingresando ORo XORtrazando cero, entonces el Z80 ejecutará el programa correctamente, pero si el programador eligió probar la paridad ingresando ADDo SUBtrazando cero, entonces el Z80 siempre restablecerá el indicador P/V. a cero (ya que sumar o restar cero nunca causa un desbordamiento o un desbordamiento insuficiente) en lugar de asignar P para indicar correctamente la paridad del byte (como lo haría el 8080 o el 8085), y el programa puede fallar. Nada en los manuales de programación de Intel u otra documentación para el 8080 desaconsejaba el uso de instrucciones aritméticas, ni prescribía el uso de instrucciones lógicas, para probar la paridad, por lo que no hay razón para que un programador del 8080 que aplica las buenas prácticas de programación recomendadas deba haber elegido una de las formas que funcionarán en el Z80 sobre una de las formas que no funcionarán.
  14. ^ Este uso común, pero meramente opcional y no limitante, conduce a la descripción frecuente pero incorrecta del Z80 en el Génesis como un "procesador de sonido".

Referencias

  1. ^ abc Zilog (2005). Manual de usuario de CPU de la familia Z80 (PDF) . Zilog. pag. 5.
  2. ^ ab Faggin, Shima y Ungermann 2007.
  3. ^ abc Balch, Mark (18 de junio de 2003). "Fundamentos digitales". Diseño digital completo: una guía completa sobre electrónica digital y arquitectura de sistemas informáticos . Ingeniería Profesional. Nueva York, Nueva York : McGraw-Hill Professional . pag. 122.ISBN _ 0-07-140927-0.
  4. ^ ab El informe Seybold sobre informática profesional . Publicaciones Seybold. 1983. En el mundo de los 8 bits, los dos microordenadores más populares son los chips Z80 y 6502.
  5. ^ ab Faggin, Shima y Ungermann 2007, pág. 1.
  6. ^ ab Faggin, Shima y Ungermann 2007, pág. 2.
  7. ^ abc Faggin, Shima y Ungermann 2007, pág. 3.
  8. ^ abc Faggin, Shima y Ungermann 2007, pág. 4.
  9. ^ Faggin, Shima y Ungermann 2007, pág. 8.
  10. ^ ab Faggin, Shima y Ungermann 2007, pág. 5.
  11. ^ Faggin, Shima y Ungermann 2007, pág. 19.
  12. ^ Faggin, Shima y Ungermann 2007, pág. 6.
  13. ^ Faggin, Shima y Ungermann 2007, pág. 7.
  14. ^ Faggin, Shima y Ungermann 2007, pág. 17.
  15. ^ "Controlador de acceso directo a memoria Z80® DMA" (PDF) . Consultado el 8 de enero de 2024 .
  16. ^ Anderson (1994), pág. 51.
  17. ^ Faggin, Shima y Ungermann 2007, pág. 13.
  18. ^ Faggin, Shima y Ungermann 2007, pág. 9.
  19. ^ Anderson (1994), pág. 57.
  20. ^ ab Brock, Gerald W. (2003). La segunda revolución de la información . Prensa de la Universidad de Harvard. ISBN 978-0-674-01178-6.
  21. ^ "Historia de los 8 bits: viajar lejos en poco tiempo". InfoMundo . vol. 4, núm. 47. Palo Alto, CA: Popular Computing Inc. 1982-11-29. págs. 58–60. ISSN  0199-6649. Archivado desde el original el 5 de enero de 2024.
  22. ^ Maricón, Federico; Shima, Masatoshi ; Ungermann, Ralph (19 de agosto de 1976). "El conjunto de chips Z-80 presagia la tercera generación de microprocesadores" (PDF) . Electrónica . vol. 49, núm. 17. Nueva York: McGraw-Hill . págs. 89–93. Archivado (PDF) desde el original el 31 de enero de 2023.
  23. ^ Ciarcia (1981), págs.31, 32.
  24. ^ ab Wai-Kai Chen (2002). El manual de circuitos y filtros . Prensa CRC . pag. 1943. ISBN 978-0-8493-0912-0. El procesamiento de interrupción comienza de acuerdo con el método de interrupción estipulado por la instrucción IM  i , i  = 0, 1 o 2. Si i  = 1, para el método directo, la PC se carga con 0038H. Si i  = 0, para el método vectorial, 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 entonces este byte, donde se puede seleccionar uno de los 128 vectores de interrupción por byte.
  25. ^ Mathur (1989). Introducción a los Microprocesadores . Compañía editorial Tata McGraw-Hill. pag. 111.ISBN _ 978-0-07-460222-5. La arquitectura de registro del Z80 es más innovadora que la del 8085
  26. ^ Stevenson, Dave. "Reinicio especial Z80". Archivado desde el original el 12 de octubre de 2023.
  27. ^ Adrián, André (4 de junio de 2011). "Z80, el analizador de números de 8 bits". Archivado desde el original el 26 de noviembre de 2023.
  28. ^ Adrián, André (4 de junio de 2011). "Z80, el analizador de números de 8 bits: complemento Z80 de 32 bits (largo)". Archivado desde el original el 26 de noviembre de 2023.
  29. ^ Computación popular . McGraw-Hill . 1983. pág. 15.
  30. ^ Markoff, John (18 de octubre de 1982). "El veloz Z80 de Zilog mejora el rendimiento de 8 a 16 bits". InfoMundo . vol. 4, núm. 41. Palo Alto, CA: Popular Computing, Inc. p. 1.ISSN 0199-6649  . Archivado desde el original el 5 de enero de 2024.
  31. ^ Diseño electrónico . Hayden. 1988. pág. 142. Además de admitir todo el conjunto de instrucciones Z80, el Z180
  32. ^ Ganssle, Jack G. (1992). "¡El Z80 vive!". Archivado desde el original el 20 de diciembre de 2023. Los diseñadores eligieron una arquitectura compatible con el Z80, brindando a los usuarios del Z80 una ruta de actualización completamente compatible con el software. El procesador 64180 ejecuta cada instrucción Z80 exactamente como lo hace un Z80
  33. ^ Shiriff, Ken. "Hasta el silicio: cómo se implementan los registros del Z80". Archivado desde el original el 5 de noviembre de 2023.
  34. ^ Kilobaudios . 1001001. 1977. pág. 22.
  35. ^ Zaks, Rodnay (1982). Programando el Z80 (3ª ed.). SÍBEX. pag. 62.ISBN _ 978-0-89588-069-7.
  36. ^ ab Steve Heath. (2003). Diseño de sistemas empotrados . Oxford: Newnes. pag. 21.ISBN _ 978-0-7506-5546-0.
  37. ^ Rison, Mark. Joven, Sean (ed.). "Afecto a la bandera Z80". z80.info . Tomás Scherrer. Archivado desde el original el 23 de diciembre de 2023 . Consultado el 14 de junio de 2016 .
  38. ^ Comisario, Ken. "El Z-80 tiene una ALU de 4 bits. Así es como funciona". Archivado desde el original el 9 de septiembre de 2013 . Consultado el 16 de noviembre de 2021 .
  39. ^ ab Frank Durda IV. "Conjunto de instrucciones 8080/Z80". Archivado desde el original el 11 de febrero de 2016 . Consultado el 22 de julio de 2009 .
  40. ^ "Guía del usuario del macroensamblador de reubicación Z80" (PDF) . pag. B–2. Archivado desde el original (PDF) el 20 de julio de 2011 . Consultado el 4 de junio de 2009 .
  41. ^ Scanlon, Leo J. (1988). Lenguaje ensamblador 8086/8088/80286. Libros Brady. pag. 12.ISBN _ 978-0-13-246919-7. [...] El 8086 es compatible con el software del 8080 a nivel de lenguaje ensamblador. [...]
  42. ^ Nelson, Ross P. (enero de 1989) [1988]. El libro 80386: Guía del programador en lenguaje ensamblador para el 80386 . Serie de programación de Microsoft (1 ed.). Prensa de Microsoft . pag. 2.ISBN _ 978-1-55615-138-5. [...] Un programa traductor Intel podría convertir programas ensambladores 8080 en programas ensambladores 8086 [...]
  43. ^ ab "Introducción a la CPU Z80". Zilog . 1995. Archivado desde el 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.
  44. ^ "Conjunto de instrucciones de CPU Z80" (PDF). Zilog . 1976. pág. 19. Archivado desde el original el 5 de noviembre de 2023 . Consultado el 20 de julio de 2021 .
  45. ^ Sánchez, Julio; Cantón, María P. (2008). Soluciones de software para ingenieros y científicos . Taylor y Francisco. pag. 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.
  46. ^ Ciarcia (1981), pág. 86.
  47. ^ HAYES, JOHN P. (1978). Arquitectura y Organización de Computadores . pag. 423.ISBN _ 0-07-027363-4.
  48. ^ Froehlich, Robert A. (1984). El catálogo y directorio de software libre . Editores de la corona. pag. 133.ISBN _ 978-0-517-55448-7. Los códigos Z80 no documentados permiten operaciones de 8 bits con registros IX e IY.
  49. ^ ab Bot, Jacco JT "Instrucciones no documentadas del Z80". Hogar de la CPU Z80 . Archivado desde el 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.
  50. ^ Robin Nixon Guía avanzada del usuario del Bloc de notas de Amstrad , Robin Nixon, 1993, ISBN 1-85058-515-6 , páginas 219–223. 
  51. ^ ab Young, Sean (octubre de 1998). "Funciones no documentadas del Z80 (en el comportamiento del software)". Archivado desde el original el 25 de diciembre de 2023. Las instrucciones de E/S utilizan todo el bus de direcciones, no sólo los 8 bits inferiores. 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 del bloque de E/S colocan todo BC en el bus de direcciones. IN A,(n) y OUT (n),A colocan A*256+n en el bus de direcciones.
  52. ^ "Tiempo". Manual de usuario de CPU de la familia Z80 (PDF) . Zilog . 2016. pág. 7. UM008011-0816. Archivado (PDF) desde el original el 26 de diciembre de 2023 . Consultado el 5 de enero de 2024 .
  53. ^ Ciarcia (1981), pág. sesenta y cinco.
  54. ^ Zaks, Rodnay (1989). Programando el Z80. Síbex. pag. 200.ISBN _ 978-0-89588-069-7. AGREGAR A, n Agregar acumulador con datos inmediatos n. MEMORIA Temporización: 2 M ciclos; 7 estados T.
  55. ^ Ciarcia (1981), pág. 63.
  56. ^ Ciarcia (1981), pág. 77.
  57. ^ Ciarcia (1981), pág. 36.
  58. ^ Ciarcia (1981), pág. 58.
  59. ^ "Registros para fines especiales". Manual de usuario de CPU de la familia Z80 (PDF) . Zilog . 2016. pág. 3. UM008011-0816. Archivado (PDF) desde el original el 26 de diciembre de 2023 . Consultado el 5 de enero de 2024 .
  60. ^ "Manual de usuario de periféricos de CPU de la familia Z80" (PDF) . Hoja de datos de EEWORLD . ZiLOG. 2001. Archivado desde el original (PDF) el 2 de mayo de 2014 . Consultado el 30 de abril de 2014 .
  61. ^ "Libro de datos de semiconductores de Sharp 1986" (PDF) . pag. 218 . Consultado el 1 de enero de 2024 .
  62. ^ "Descripción general de la serie SHARP MZ". SharpMZ.org . Archivado desde el original el 27 de marzo de 2008 . Consultado el 28 de julio de 2011 . La mayoría de MZ utilizan la CPU de 8 bits LH0080 / Z80 [...]
  63. ^ "LH0080/LH0080A/LH0080B". Libro de datos de semiconductores de 1986 (PDF) . Corporación Sharp . 1986. pág. 210. Archivado (PDF) desde el original el 1 de enero de 2024 . Consultado el 1 de enero de 2024 .
  64. ^ "Libro de datos de semiconductores de Sharp 1986" (PDF) . págs. 255–269 . Consultado el 13 de enero de 2024 .
  65. ^ "Libro de datos de semiconductores de Sharp 1986" (PDF) . págs. 296–301 . Consultado el 20 de enero de 2024 .
  66. ^ "Libro de datos de semiconductores de Sharp 1986" (PDF) . págs. 302–306 . Consultado el 28 de enero de 2024 .
  67. ^ "Libro de datos de semiconductores de Sharp 1986" (PDF) . págs. 307–311 . Consultado el 28 de enero de 2024 .
  68. ^ Ganssle, Jack G. (1992). "¡El Z80 vive!". El 64180 es un núcleo Z80 suministrado por Hitachi con numerosos "extras" en el chip. La versión de Zilog es la Z180, que es esencialmente la misma pieza.
  69. ^ Ganssle, Jack G. (1992). "¡El Z80 vive!". Tanto Toshiba como Zilog venden el 84013 y el 84015, que son núcleos Z80 con periféricos Z80 convencionales integrados.
  70. ^ Granville, Fran (1 de agosto de 1996). "Acceso EDN - 01.08.96 Z80 cumple 20 años". EDN . Consultado el 7 de agosto de 2023 .
  71. ^ "Familia de productos EZ80 ACCLAIM". Zilog. Archivado desde el original el 20 de diciembre de 2008.
  72. ^ Negocios electrónicos Asia . Cahners Asia Limited. 1997. pág. 5. 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. KC80 ejecuta instrucciones aproximadamente cuatro veces más rápido que Z80 a la misma frecuencia de reloj
  73. ^ "Especificaciones de hardware". S1mp3.org . 2005-10-19. Archivado desde el original el 8 de diciembre de 2005.
  74. ^ "Proyectos :: OpenCores".
  75. ^ Rada, Col (marzo de 1981). "NSC800: una familia de microprocesadores de alto rendimiento y bajo consumo". Electrónica y Energía . Institución de Ingeniería y Tecnología . 27 (3): 222. doi :10.1049/ep.1981.0107.
  76. ^ "TST-4043: cifrado de datos con módem HF y FEC". Museo Cripto . 2018-02-27. Archivado desde el original el 5 de noviembre de 2023.
  77. ^ "Microprocesador CMOS de bajo consumo y alto rendimiento NSC800" (PDF) . Semiconductor Nacional . Junio ​​de 1992. Archivado (PDF) desde el original el 19 de noviembre de 2023.
  78. ^ "Placas de expansión MCS-85, Zilog Z80 y National NSC800". Choza de CPU . 2015-02-15. Archivado desde el original el 30 de septiembre de 2023.
  79. ^ "Sección 6 Tendencias del mercado de periféricos, MPU y MPU MOS" (PDF) . Corporación de Ingeniería de Circuitos Integrados. pag. 16. Archivado desde el original (PDF) el 14 de junio de 2011.
  80. ^ Axelson, enero (2003). Ethernet e Internet integrados completos. Investigación de Lakeview. pag. 93.ISBN _ 978-1-931448-00-0. El microprocesador Rabbit 3000 de Rabbit Semiconductor, que es un derivado muy mejorado y mejorado del venerable microprocesador Z80 de ZiLOG, Inc.
  81. ^ Hyder, Kamal; Perrin, Bob (2004). Diseño de sistemas embebidos utilizando el microprocesador Rabbit 3000. Newnes. pag. 32.ISBN _ 978-0-7506-7872-8. Las piezas Rabbit se basan estrechamente en la arquitectura Zilog Z180, aunque no son compatibles binariamente con las piezas Zilog.
  82. ^ Cruz, Eduardo (23 de noviembre de 2014). "CPU Capcom Kabuki - Introducción". Hacker arcade . Archivado desde el original el 5 de noviembre de 2023.
  83. ^ Holtz, Herman (1985). Estaciones de trabajo con ordenadores . Chapman y Hall. pag. 223.ISBN _ 978-0-412-00491-9. y CP/M continuó dominando el mundo de las microcomputadoras de 8 bits.
  84. ^ Dvorak, John C. (10 de mayo de 1982). "Después de CP/M, los sistemas operativos orientados a objetos pueden liderar el campo". InfoMundo . vol. 4, núm. 18. Grupo de medios InfoWorld. pag. 20. ISSN  0199-6649. Archivado desde el original el 6 de enero de 2024. La idea de un sistema operativo genérico aún está en pañales. En muchos sentidos, comienza con CP/M y la mezcolanza de las primeras computadoras 8080 y Z80.
  85. ^ Stengel, Steven. "Agregado de Otrana". Museo de la antigua computadora de Steve . Archivado desde el original el 27 de diciembre de 2023 . Consultado el 5 de marzo de 2019 .
  86. ^ "Manual de referencia técnica de Sharp PC-1500" (PDF) . Archivado (PDF) desde el original el 5 de noviembre de 2023.
  87. ^ "La computadora portátil del pobre". Libros de Google . Mecánica Popular, abril de 1991, página 120. Abril de 1991 . Consultado el 11 de abril de 2018 .
  88. ^ "Láser PC4". Museo de la Computadora Antigua . Archivado desde el original el 5 de noviembre de 2023 . Consultado el 11 de abril de 2018 .
  89. ^ "Láser PC5 de VTech". larwe.com . Archivado desde el original el 5 de noviembre de 2023 . Consultado el 11 de abril de 2018 .
  90. ^ "Láser PC6". Soluciones perfectas punto com . Soluciones perfectas. Archivado desde el original el 21 de mayo de 2018 . Consultado el 11 de abril de 2018 .
  91. ^ "Desarrollo de estaciones de correo". Fybertech.net . Archivado desde el original el 6 de enero de 2024 . Consultado el 18 de abril de 2021 .
  92. ^ Woerner, Joerg. "Instrumentos de Texas PS-6200". Museo de la Calculadora Datamath . Archivado desde el original el 5 de noviembre de 2023 . Consultado el 18 de junio de 2019 .
  93. ^ Woerner, Joerg. "Texas Instruments PocketMate 100". Museo de la Calculadora Datamath . Archivado desde el original el 5 de noviembre de 2023 . Consultado el 18 de junio de 2019 .
  94. ^ Ian R. Sinclair (2000). Manual práctico de electrónica (5 ed.). Oxford, Angleterre: Newnes. pag. 204.ISBN _ 978-0-7506-4585-0. LCCN  00502236. OCLC  42701044.
  95. ^ "Sintetizadores antiguos de Gordon Reid: los circuitos secuenciales Prophet 5 y Prophet 10". gordonreid.co.uk . 1999. Archivado desde el original el 5 de noviembre de 2023.
  96. ^ Fabio, Adán (19 de marzo de 2014). "Prophet 600: un sintetizador clásico obtiene una actualización de procesador". Archivado desde el original el 5 de noviembre de 2023.
  97. ^ "Hacer una demostración de un teléfono antiguo - AONDEMO". habr.com . 2020-01-29. Archivado desde el original el 5 de noviembre de 2023.

Fuentes

Otras lecturas

Hojas de datos y manuales
Libros de hardware
Libros de software
Tarjetas de referencia

enlaces externos

Simuladores / Emuladores:

tableros