Le Zilog Z80
Chroniques

Le Zilog Z80

Le processeur Zilog Z80 fut l’un des pionniers de l’ère informatique des années 1980. Connu pour sa puissance de calcul remarquable et son coût de production compétitif, le Z80 a joué un rôle majeur dans la démocratisation des micro-ordinateurs au sein des foyers. Ce processeur a indéniablement marqué l’histoire de l’informatique et du jeu vidéo en offrant de nouvelles possibilités aux développeurs. Cet article a pour but de vous présenter en détail le processeur qui a donné naissance aux consoles prodigieuses que sont la Master System et la Game Gear de SEGA.

L’histoire du Zilog Z80 est étroitement liée à Federico Faggin, un ingénieur en électronique né le 1ᵉʳ décembre 1941. En 1971, il se démarque pour son rôle dans la conception du premier processeur commercial, l’Intel 4004, puis en 1974 pour sa contribution à l’élaboration de l’Intel 8080, une évolution majeure dans le domaine de la micro-informatique. En 1976, Faggin prend la décision de quitter Intel pour fonder la société Zilog avec Ralph Ungermann. Leur objectif : concevoir et produire un nouveau processeur, le Z80. Masatoshi Shima, qui avait également participé à la conception du 4004, rejoint Zilog et apporte son aide à l’élaboration du Z80, qui sera commercialisé dès le mois de juillet.

Le Z80 est un processeur 8 bits qui a été conçu en priorité pour être compatible avec le 8080, ce qui lui permet d’exécuter le même code sans grandes modifications. De plus, il peut utiliser le système d’exploitation CP/M initialement conçu pour le 8080, ce qui lui octroyait un avantage significatif sur la concurrence. Avec sa puissance de calcul accrue et ses fonctionnalités étendues, le Z80 surpasse largement le 8080. Son succès a été immédiat, devenant ainsi l’un des processeurs les plus populaires de son époque, dominant le marché aux côtés du 6502 de MOS Technology jusqu’au milieu de la décennie.

Au fil des années, le Z80 a connu plusieurs évolutions. Sa fréquence maximale est passée de 2,5 MHz à 8 MHz avec les versions Z80A, Z80B et Z80H. En 2007, a été commercialisée une version CMOS du Z80, capable de fonctionner à des fréquences allant jusqu’à 20 MHz. De plus, des dérivés du Z80, tels que le Z180 et le eZ80, offrent des performances accrues, avec des fréquences pouvant atteindre respectivement 33 MHz et 50 MHz.

Le micro Z80

Le processeur Z80 a représenté une avancée majeure dans le domaine des micro-ordinateurs puisque la construction d’un système micro-informatique reposant sur le Z80 est composé d’éléments minimalistes.

Au cœur du système se trouve le Z80 qui reçoit les instructions depuis la mémoire et exécute les opérations nécessaires. La mémoire ROM sert à stocker les différentes instructions et les données à traiter, il s’agit généralement d’un disque de données, d’une cassette ou d’une cartouche. La mémoire RAM, quant à elle, conserve le résultat des différentes opérations effectuées. Le contrôleur de périphériques E/S gère la communication avec les différents périphériques externes tels que les écrans, claviers, manettes de jeu, lecteur de disques, etc.

Le Z80 permettait ainsi de concevoir des ordinateurs offrant des spécifications qui étaient autrefois réservées aux mini-ordinateurs, tout en conservant un encombrement réduit pour l’utilisateur. Cette grande flexibilité de conception permettait aux fabricants d’ordinateurs de créer des modules standard capables de répondre à une grande variété d’applications.

Le fonctionnement du Z80

Le Z80 dispose de 16 lignes d’adresses lui permettant d’adresser 64K (65 536 octets) de mémoire. Son architecture se compose d’une unité de contrôle, un compteur de programme, un registre d’instruction, une unité arithmétique et logique ainsi que 24 registres utilisateurs.

Les registres du Z80 peuvent être regroupés en deux catégories : les registres principaux et les registres secondaires. Les registres principaux sont des registres de 8 bits qui peuvent être associés pour former des registres de 16 bits. Les registres secondaires, IX et IY, peuvent être utilisés comme des registres de 8 bits indépendants. Le registre A (accumulateur) est le plus important, tandis que le registre F (drapeau) contient des drapeaux indiquant les résultats des opérations précédentes.

Les autres registres, tels que B/C et D/E, sont utilisés pour des opérations arithmétiques simples, tandis que les registres H/L disposent d’un jeu d’instructions plus riche. Enfin, le registre SP (stack pointer) est utilisé pour gérer la pile, stockant temporairement des valeurs dans la mémoire et libérant ainsi les registres pour effectuer de nouvelles opérations complexes.

Le Z80 dispose d’un jeu d’instructions assez riche, comprenant un total de 158 instructions différentes. Ces instructions couvrent un large éventail d’opérations, allant des opérations arithmétiques et logiques de base aux instructions de contrôle de flux, de manipulation de bits, d’accès à la mémoire, etc. Cette diversité permet aux développeurs de programmer de manière plus efficace en simplifiant le code, ce qui fait du Z80 un processeur particulièrement attrayant.

Le processeur est capable de générer un signal de rafraîchissement pour la mémoire dynamique, communément appelée DRAM, ce qui est un avantage considérable par rapport à certains autres processeurs de l’époque. Pour bien comprendre l’importance de cette fonctionnalité, il faut savoir que la DRAM nécessite un rafraîchissement périodique étant donné qu’elle utilise des condensateurs pour stocker les données, ce qui contraint le processeur à communiquer avec un contrôleur de mémoire externe. Il en résulte un impact sur les performances puisque le processeur doit passer par plusieurs étapes avant d’accéder à la mémoire du système.

Fort heureusement, le Z80 a la particularité d’intégrer un contrôleur de mémoire interne qui simplifie grandement la gestion de ce processus. Ainsi, il génère un signal de rafraîchissement automatique pour la mémoire, libérant ainsi le processeur des tâches liées à cette opération. Cela permet de faciliter la conception des systèmes utilisant de la mémoire dynamique, tout en garantissant un fonctionnement dès plus efficace de cette dernière.

La programmation Z80

Le développement de logiciels sur micro Z80 se fait généralement en utilisant le langage assembleur fourni par la société Zilog où chaque instruction du processeur est représentée par un simple mnémonique permettant à l’utilisateur d’écrire des programmes sans avoir besoin d’une documentation complexe destinée à des ingénieurs. À l’époque, il était nécessaire de disposer d’un micro-ordinateur utilisant le système d’exploitation CP/M, avec un éditeur de texte tel qu’ED ou ED.COM et d’un assembleur Z80 tel que TASM (Turbo Assembler) ou MACRO-80 pour compiler le code source en langage machine.

Une alternative à l’assembleur était disponible, car de nombreux ordinateurs permettaient à l’utilisateur de programmer en langage BASIC, ce qui s’avérait bien plus accessible pour un débutant ou une personne trouvant l’assembleur beaucoup trop compliqué. Néanmoins, les performances et les possibilités offertes le BASIC sont très limitées par rapport à l’assembleur qui permet d’exploiter pleinement tout le potentiel offert par le système Z80.

De nos jours, un développeur peut désormais utiliser le langage C afin de mettre en œuvre un programme de manière plus naturellement grâce au compilateur SDCC ou bien Z88DK qui interprète le code en langage assembleur. Néanmoins, ce confort d’utilisation ce fait au détriment des performances au même titre que le langage BASIC.

Il est encore possible d’écrire des programmes en assembleur pour le Z80 depuis un système d’exploitation moderne tel que Linux ou Windows grâce à de puissants éditeurs de texte et une multitude d’assembleurs disponibles gratuitement pour chacun d’entre eux. Parmi les assembleurs les plus célèbres, on peut citer Pasmo, WLA DX et SJASM. Il est bon de préciser qu’il est possible de compiler du code assembleur Z80 directement depuis son navigateur grâce au site web ASM80 qui offre une interface complète pour tester du code.

L’utilisation du Z80

Au vu de ses spécifications avantageuses, le Z80 a équipé bon nombre d’ordinateurs, consoles de jeux et divers appareils électroniques. Parmi ses utilisations les plus notables, on peut citer les micros Radio Shack TRS-80, Sinclair ZX80 / ZX81 / ZX Spectrum, MSX, Amstrad CPC ainsi que le PC-88.

Du côté des consoles, le Z80 a été principalement été utilisé au profit des consoles emblématiques que sont la Master System et la Game Boy. Le Z80 a également été présent dans des consoles de la génération suivante, la NeoGeo et la Mega Drive, où il était surtout employé à titre de processeur complémentaire pour améliorer la qualité sonore.

La présence du Z80 dans la Mega Drive assure aussi une rétrocompatibilité avec les jeux de la Master System et permet aux développeurs de créer rapidement des jeux sans avoir à maîtriser le Motorola 68000, le processeur principal de la console, puisqu’il était possible de programmer des jeux en utilisant seulement le Z80.

L’utilisation du Z80 ne se limite pas à ces machines, étant donné qu’il a été largement exploité dans différentes bornes d’arcade de renom. Des jeux mythiques tels que Pac-Man (Namco - 1980), Galaga (Namco - 1981), Donkey Kong (Nintendo - 1981), Mario Bros. (Nintendo - 1983), Punch Out!! (Nintendo - 1984), Frogger (Konami - 1981) étaient tous basés sur le Z80.

Le Z80 a été un processeur incontournable en arcade, comme en témoigne le système arcade “Galaga” de Namco, qui intègre trois processeurs Z80 cadencés à une fréquence d’environ 3 MHz. C’est sur ce système que des jeux emblématiques tels que Galaga, Xevius et Super Xevius ont vu le jour.

La société Capcom s’est aussi tournée vers le Z80 pour créer une PCB compatible JAMMA baptisée pour l’occasion “Z80 Based” présente dans les salles d’arcade en 1984. Le système était équipé d’un Z80 (Z80A) cadencé à 4 MHz ou de deux Z80 (Z80B) cadencés à 6 MHz. Le processeur sonore était aussi un Z80, mais limité à 3 MHz. Au total, Capcom aura développé pas moins de cinq titres pour le Z80 Based dont les excellents 1942 et Vulgus.

En 1985, SNK sort le système arcade “Triple Z80 Based” qui, comme son nom l’indique, utilise simultanément trois Z80A. Chaque processeur est affecté à une tâche bien précise : la gestion du son, la logique du jeu et l’envoi des nouvelles positions à la puce graphique. SNK a été relativement prolifique avec le Triple Z80 Based puisqu’on dénombre un total de 35 titres développés dont les excellents Ikari Warriors (1986), Victory Road (1986), Psycho Soldier (1986), TNK III (1985), Time Soldiers (1987) ou encore Guerrilla Wars.

SEGA et le Z80

Chez SEGA, le Z80 apparaît très tôt sur les bornes d’arcade du constructeur, à commencer par le System 1 disponible en 1983. Une seconde version verra le jour, le System 2, qui repose sur les mêmes spécifications, mais avec l’ajout d’une mémoire ROM supplémentaire, une mémoire RAM plus rapide et une zone d’affichage de 512x512 pour l’arrière-plan. Les jeux les plus notables du System 1 et 2 sont sans conteste My Hero (1985), Ninja Princess (1985), Wonder Boy (1986) et Wonder Boy in Monster Land (1987).

Pour son System 16 qui est apparu pour la première fois en 1985, SEGA a opté pour le Motorola 68000 en guise de processeur central, tout en préservant le Z80 dont la tâche est la gestion de la puce sonore Yamaha YM2151. Trois ans plus tard, la Mega Drive reprendra la même architecture composée du duo 68000 / Z80, mais la console héritera d’une puce sonore YM2612.

Il était logique pour SEGA de recourir au Z80 pour sa première console, la SG1000, afin de permettre à ses équipes de développeurs de porter facilement les jeux issus du System 1 et 2, mais d’utiliser leur compétence pour concevoir rapidement des titres exclusifs à la machine. Ce choix s’est avéré judicieux et a été répété plus tard lors de la conception de la Master System qui dispose également d’un processeur central Z80 dont la fréquence reste identique. En outre, le maintien du Z80 a permis de garantir la rétrocompatibilité avec les jeux développés pour la SG1000, même si cela avait au final que peu d’intérêt pour les joueurs occidentaux puisque la console et ses jeux n’ont jamais été commercialisés dans nos contrées.

Il est aussi important de mentionner que SEGA avait tenté de se faire une place sur le marché de la micro-informatique avec le fameux SC-3000 (SEGA Computer 3000). Cet ordinateur personnel d’entrée de gamme était basé sur le hardware de la SG-1000 et disposait donc d’un processeur Z80. Le SC-3000 reposait sur le même processeur Z80, mais bénéficiait de mémoire RAM supplémentaire extensible jusqu’à 48 Ko grâce aux cartouches BASIC disponibles en trois versions. Malheureusement, cet ordinateur fut le premier et dernier à rencontrer le succès dans les différents pays où il a été commercialisé, dont la France.

Comparaison avec le 6502

La présence du Z80 est un véritable atout pour la Master System par rapport à la NES, qui repose sur un processeur 6502 qui offre une puissance de calcul moindre. Cette différence se fait sentir à travers les jeux, qui sont généralement plus beaux et plus aboutis techniquement sur la console de SEGA. Des titres d’exception tels que Sonic The Hedgehog, Ninja Gaiden, Castle of Illusion, Wonder Boy, Rastan et bien d’autres en sont de parfaits exemples, démontrant ainsi la supériorité technique de la Master System face à la NES de Nintendo dans le domaine des consoles 8-bit.

En effet, le 6502 repose sur une architecture RISC (Reduced Instruction Set Computer) qui comprend un ensemble d’instructions plus limitées et plus simples en comparaison à l’architecture CISC (Complex Instruction Set Computer) du Z80. De plus, le 6502 possède seulement trois registres, ce qui a pour effet de rendre le code plus complexe et contraint le développeur à utiliser fréquemment la mémoire pour stocker des valeurs temporaires.

En revanche, les instructions du 6502 sont exécutées plus rapidement, car le processeur nécessite moins de cycles d’horloge par instruction par rapport au Z80. Cependant, il est important de souligner que le 6502 est tributaire d’un contrôleur de mémoire externe, ce qui a pour conséquence d’augmenter les coûts de fabrication en plus d’ajouter de la latence lorsque le processeur accède à la mémoire.

Le cas du Sharp SM83

Il est important de mentionner que la console portable de SEGA, la Game Gear, utilise un hardware similaire à la Master System et dispose donc du même processeur Z80A, limité à une fréquence de ~ 3,58 MHz. Cela donne à la Game Gear la capacité de faire tourner des jeux très proches de ceux disponibles sur la Master System, avec en prime une gamme de couleurs plus riche.

La Game Boy de Nintendo utilise également un processeur Z80, mais en réalité, il s’agit d’un Sharp SM83 cadencé à ~ 4,9 MHz, qui est un hybride entre l’Intel 8080 et le Z80. Ce processeur a été spécialement conçu pour la Game Boy et est intégré dans une puce Sharp LR35902, contenant d’autres composants essentiels. Ce type de puce est connu sous le nom de SoC (System on Chip) qui intègre tous les éléments d’un système au sein d’une seule puce.

Les principales différences entre le Sharp SM83 et le Z80 résident dans l’absence des registres IX et IY, ainsi que des instructions IN et OUT, ce qui signifie que les ports d’E/S ne peuvent pas être utilisés directement. Le Sharp SM83 ne dispose que des registres de l’Intel 8080 et inclut uniquement les instructions du Z80 permettant la manipulation de bits.

Même si le Sharp SM83 de la Game Boy utilise une fréquence plus élevée, le processeur de la Game Gear est beaucoup plus intéressant pour un développeur grâce à sa compatibilité complète avec le Z80, incluant toutes les fonctionnalités avancées. L’intérêt est encore plus grand puisque la Game Gear est capable d’exécuter des jeux conçus pour la Master System sans modifications majeures.

L’héritage du Z80

Le Z80 a été au cœur de la révolution qu’ont connu la micro-informatique et le jeu vidéo dans les années 80. Son architecture polyvalente et sa compatibilité avec le 8080 en ont fait un choix privilégié pour de nombreux concepteurs d’ordinateurs personnels, de consoles de jeux vidéo et de systèmes embarqués. Grâce à sa puissance de calcul, sa simplicité d’utilisation et sa flexibilité, le Z80 a remarquablement marqué l’histoire de l’informatique et du divertissement électronique.

Apprendre l’assembleur Z80 peut être très enrichissant, même à notre époque, que ce soit pour pratiquer la programmation sur d’anciens systèmes ou simplement par passion et curiosité. L’assembleur Z80 offre une excellente introduction à la programmation dite “bas niveau” et constitue une base solide pour comprendre les principes fondamentaux de l’informatique. De plus, il existe de nombreuses ressources et outils disponibles pour aider le novice à acquérir les compétences nécessaires au développement sur un système Z80.

Si l’apprentissage du Z80 vous intéresse, je vous invite de débuter en ciblant des micro-ordinateurs tels que l’Amstrad CPC ou le MSX qui disposent d’une documentation complète, une grande communauté active et des outils modernes pour développer tout en confort. Un autre avantage, et pas des moindres, est la possibilité de programmer directement sur ces systèmes, permettant ainsi de vivre intensément les sensations que pouvait éprouver les développeurs de l’époque si vous avez la chance de disposer du matériel à la maison. Bien sûr, il est tout à fait possible de commencer par le langage BASIC pour se familiariser en douceur avec l’un de ces ordinateurs, mais gardez bien à l’esprit que seul l’assembleur vous permettra de tirer profit de leur véritable potentiel.

Hélas, après 48 ans d’exploitation sur le marché, Zilog s’apprête à mettre un terme à la carrière bien remplie du Z80 puisque la production de ce légendaire processeur prendra fin le 14 juin 2024. Néanmoins, Zilog continuera de fabriquer le microcontrôleur eZ80 qui dispose de caractéristiques nettement supérieures. Bien que cette décision puisse paraître décevante pour les passionnés et fervents adeptes du Z80, il est logique que Zilog souhaite mettre un terme à une technologie jugée obsolète afin de concentrer ses efforts sur le futur de l’informatique et d’adapter son offre aux demandes actuelles du marché.

Le Z80 continuera de vivre à travers les machines merveilleuses qu’il a animées, que ce soit dans les micro-ordinateurs ou les consoles de jeux vidéo que nous aimons tant. Il laissera derrière lui un héritage sans précédent dans l’histoire de l’informatique et du jeu vidéo. Son influence perdurera à travers les nombreux passionnés qui continueront de développer et de faire revivre ce processeur mythique. En mettant un terme à la production du Z80, Zilog tourne une page importante de l’histoire de l’informatique, mais ouvre également la voie à de nouvelles innovations, témoignant ainsi de l’évolution constante du domaine technologique.