Z80

El Z80 es un microprocesador de 8 bits introducido en el mercado por Zilog, como primer producto de la startup. Fue concebido por Federico Faggin a finales de 1974 y desarrollado por él y sus empleados a comienzos del año siguiente. Las primeras unidades funcionales llegaron en marzo de 1976, aunque hasta mediados de año que el procesador no saldría oficialmente a la venta. Gracias a las ventas obtenidas, la empresa pudo construir sus propias fábricas de chips y expandir el número de empleados a lo largo de los próximos años.

A nivel de software, se trata de una extensión del Intel 8080 compatible con este y, del mismo modo, estaba destinado a sistemas empotrados. Aunque se usó en ese ámbito, el Z80 también se convirtió en una de las CPUs más empleadas en sistemas de escritorio de los 70 y 80, así como en hardware militar, equipamiento musical, como sintetizadores, y algunas máquinas arcade, incluyendo el notorio Pac-Man.

Zilog licenció el Z80 a las empresas estadounidenses Synertek y Mostek, que habían ayudado con la producción inicial, así como al manufacturador europeo SGS, aunque, de manera no oficial, el diseño fue copiado por compañías japonesas y del este de Europa. Otro factor determinante para su éxito fue el apoyo que posteriormente recibiría por parte de NEC, Toshiba, Sharp o Hitachi, quienes comenzaron a manufacturar el procesador o clones compatibles con el mismo.

Ya en décadas recientes, Zilog se ha centrado de nuevo en el creciente mercado de sistemas empotrados, hecho que se ha reflejado en las últimas versiones de sus microcontroladores compatibles con esta arquitectura.

Instrucciones

A diferencia de la arquitectura 6502, Z80 cuenta con múltiples registros de propósito general que se pueden combinar entre sí para llevar a cabo operaciones de 16 bits, lo que permite una mayor flexibilidad al juego de instrucciones. Algunos registros, de hecho, cuentan con 16 bits de manera independiente, como es el caso de los registros índice y el stack pointer.

  • Aritmético-lógicas (ADC, ADD, AND, CPL, DEC, INC, RLD, RR, SBC, SLR, SRA, SUB, XOR...): Permiten modificar el contenido de los registros o la memoria empleando la ALU. Todas ellas cambian el estado del procesador de modo que no sea necesario realizar comparaciones a posteriori con los valores obtenidos, como suele ocurrir con la mayoría de arquitecturas.
  • Saltos (JP, JR): Permiten modificar el flujo de ejecución del programa incondicional o condicionalmente en función de la variante de cada instrucción empleada. JP permite saltar a direcciones absolutas, mientras que JR solo en relación a la posición de la instrucción actual.
  • Manipulación de la pila (PUSH, POP): Permiten añadir y eliminar valores de la pila, almacenada en RAM.
  • Carga y almacenamiento en memoria (LD, LDD, LDDR, LDI, LDIR): Permiten leer y almacenar datos en posiciones arbitrarias de la memoria direccionable por la CPU. A diferencia de muchas arquitecturas, no hay instrucciones denominadas explícitamente "store", sino que se usa "load" para almacenar en memoria también.
  • Modificación de estado (RES, SET, SCF): Permiten modificar el registro de estado del procesador o incluso manipular a nivel de bits otros registros.
  • Intercambio (EX): Permite transferir el contenido de un registro a otro y viceversa.
  • Entrada y salida (IN, OUT, OUTD, OUTI): Permite mover datos a través de los puertos de entrada y salida. Estas instrucciones son necesarias ya que la E/S en la arquitectura Z80 no funciona por mapeo de memoria, de modo que no hay direcciones asignadas a cada dispositivo.
  • Gestión de interrupciones (DI, EI, IM, RETI, RETN): Permiten manejar las interrupciones activándolas, desactivándolas, generándolas o regresando del manejador de estas.
  • Referencia adicional

    Como suele ocurrir con arquitecturas lanzadas hace décadas, existen numerosas webs de referencia para los interesados en el funcionamiento de sus instrucciones, modos de direccionamiento u otras particularidades del hardware, o quienes busquen desarrollar un emulador para alguno de los sistemas que empleen la arquitectura, incluso en casos en que no sea el procesador principal, como en la Sega Mega Drive, que lo utiliza de chip de audio.

    Algunas páginas de relevancia son Z80.info y Z80-Heaven