En junio de 2024, Zilog decidió dejar de fabricar el z80, aunque esto no quiere decir que el Z80 dejase de existir: por ejemplo, Sharp todavía lo vende con la identificación LH0080, y NEC hace lo propio con la etiqueta D780C-1.
El Z80 era compatible con el Intel 8080. ¿Por qué entonces, si ya existía este procesador, Zilog se “animó” a crear una variante compatible? Lo cierto es que el i8080 era bastante enrevesado en cuanto a la forma de alimentarlo: necesitaba varios voltajes. El Z80, sin embargo, solo necesitaba alimentación de 5V, una sola línea de reloj (CLK), y era más rápido.
Funcionamiento interno
Registro Funcionalidad A Registro acumulador. B Registro de uso libre. c Registro de uso libre. D Registro de uso libre. E Registro de uso libre. H Parte alta de dir. RAM. L Parte baja de dir. RAM. IX Registro de índice. IY Registro de índice. SP Stack pointer. PC Program counter.Todos los registros eran de 8 bits, excepto los registros de índice IX e IY, el contador de programa PC, y el puntero de la pila de llamadas, SP, que son de 16 bits. Pero además, el resto de registros se pueden combinar. Por ejemplo, para acceder a una dirección de memoria, se colocan los 8 bits más bajos en L, y los 8 bits más altos en H, de forma que se obtiene una dirección de memoria de 16 bits (2^16 o 65536 bytes/64 K).
Además, los registros B y C se pueden utilizar juntos como registros de 16 bits, si se utiliza el nombre BC, y lo mismo para D y E, que puede ser utilizado como DE.
Los registros IX e IY son nuevos, permitiendo funcionar como índices. Supongamos que necesitas copiar una cadena de caracteres en la posición de memoria 00000000FFFFFFFF, en otra posición de memoria que sería 00000001FFFFFFFF. El primer valor se copiaría en IX, mientras que se haría lo propio con el segundo en IY. Ahora puedes ir copiando el valor apuntado por uno en la posición apuntado en el otro, e ir incrementando ambos.
8 bits bajos 8 bits altos Registro combinado B C BC D E DE H L HLEs decir, que si se quiere hacer algún cálculo que involucre 16 bits, se usan BC, o DE, y si se quiere acceder a una determinada posición de memoria, HL.
Compatibilidad y legado
El uso del z80 se extendió rápidamente al ser un chip tan versátil. Esto produjo una situación en la que muchos programas podían ser compatibles a nivel de código ejecutable.
Así, Gary Kildall, programó CP/M (el antepasado del sistema operativo MS-DOS) para Z80, vendiéndolo a través de su nueva empresa Digital Research.
Por cuestiones de desacuerdo en las licencias, no creó CP/M para el IBM-PC con su i8088, y al final se adaptó QDOS (el rápido y sucio sistema operativo, o Quick & Dirty Operating System) para la máquina. Posteriormente, Digital Research desarrollaría DR-DOS, compatible con MS-DOS. Pero eso es otra historia.
Para CP/M se crearon lenguajes de programación, bases de datos… fue tremendamente popular, ya que surgieron multitud de máquinas cuyo corazón era el Z80, y para el que CP/M era muy fácilmente adaptable.
Altair BASIC fue creado originalmente por Bill Gates para el Altair 8080, antes de crear Microsoft. Ocupaba 4K de memoria. Pero la multitud de microordenadores que surgieron utilizando el Z80 hizo que Microsoft BASIC, directamente derivado del anterior, tuviera docenas de versiones adaptadas a ellos, creando máquinas cuyos programas en BASIC en binario eran compatibles entre sí, o facilitando la creación de un estándar como tal, el MSX.
…y por supuesto, fue el corazón del Investrónica/Sinclair Spectrum + 128k, el mejor de los microordenadores de 8 bits de los 80. Como curiosidad, es interesante comentar que existe un nuevo modelo de ZX Spectrum, el ZX Spectrum Next, y este lleva un Z80N. capaz de correr incluso a 28 Mhz., en contraste con los 3.5 Mhz. del original. Eso sí, es una recreación moderna del Z80 mediante una FPGA.
Lo siguiente es el código ensamblador para el “¡Hola, mundo!” en el Speccy. No hace uso de la rutina en ROM print del BASIC, sino que muestra una cadena carácter a carácter.
org $8000
ld bc, STR_HELLO ; Carga en BC la dirección de la cadena
SHOW_CHAR: ; Cada iteración muestra un carácter.
ld a, (bc) ; Carga el carácter actual en A
cp 0 ; ¿El carácter en A es un cero?
jr z, END ; Si el resultado es true, salta a END
rst $10 ; Llama a la rutina en ROM que muestra el carácter A por pantalla
inc bc ; Incrementa la dirección en BC en 1
jr SHOW_CHAR ; Salta a SHOW_CHAR
END:
ret ; Terminar el programa, y volver
STR_HELLO: ; Define la cadena de caracteres terminada en 0
defb "¡Hola, mundo!"
defb 13, 0
Enter fullscreen mode Exit fullscreen mode
El Zilog Z80 fue, por tanto, un pilar fundamental en el desarrollo de la informática, que finalmente, con la aparición de los microordenadores, se introducirá en los hogares para su uso doméstico, algo impensable en los 70.
답글 남기기