Revenir au plan du site
Les composants de l'Amstrad CPC/Plus
Comme la plupart des ordinateurs, l'Amstrad regroupe différents composants ayant chacun un rôle à jouer dans l'ordinateur.
Le Z80 est le microprocesseur, c'est en quelque sorte le cerveau de la machine. Il exécute en permanence un programme et ce, dès l'allumage, ce point est détaillé juste après.
Le Z80 est le décideur (même si il est peut attendre que le bus mémoire soit libre pour s'en servir), c'est lui qui peut programmer les différents composants du système (puce graphique, puce audio, mémoire...).
La ROM. Dans chaque ordinateur il existe un programme de démarrage par défaut (qu'on appelle BIOS sur de nombreuses machines), dans notre cas c'est en lisant cette mémoire
'morte' (ou ROM) que le système démarre et initialise la machine.
La ROM est une puce mémoire permanente que l'on ne peut que lire, elle ne peut subir de modifications ; C'est ce qui fait que si la machine plante, un redémarrage vous ramènera toujours au BASIC. Indestructible je vous dis!
Les modèles 664 et 6128 ont un programme ROM supplémentaire qui s'appelle l'AMSDOS et qui définit les commandes CAT, ùCPM (et d'autres) pour manipuler les disquettes.
Aux côtés du Z80 se trouvent plusieurs puces indispensables :
La RAM ou mémoire vive : Elle permet au microprocesseur d'y écrire des informations et de les relire. Le microprocesseur va y stocker des variables mais il va aussi
'dessiner' dans la mémoire afin que la puce graphique puisse envoyer une image à l'écran. Cette mémoire est considérée comme vide au démarrage. Elle peut parfois
contenir des valeurs aléatoires ou des motifs de nombre inutilisables.
Le Gate Array : C'est le chef d'orchestre/métronome de la machine, le maître du temps et celui qui lit la mémoire et construit les pixels à envoyer vers le moniteur. Il partage les accès mémoire entre le microprocesseur et lui même, afin d'éviter les conflits. Régulièrement, de part son rôle de puce graphique, il met en 'pause' le Z80 afin de lire les données à envoyer à l'écran (note : il continue de lire la mémoire même quand il n'y a rien à afficher à l'écran, car la mémoire a besoin d'être lue en permanence pour conserver ses données). Pour savoir quelles données lire en mémoire, le Gate Array est assisté par le CRTC qui lui dit ce qu'il doit afficher : De la mémoire, du border, un signal de synchro.
Enfin, le Gate Array sert de filtre sur le bus mémoire pour rendre visible ou non des pages mémoires qui partagent le même espace (pas de panique, on en reparlera).
L'AY ou puce sonore : Cette puce est un générateur de signaux carrés ce qui procure au CPC ce son typique des années 80. C'est peu ou prou la même puce qui a été utilisée sur MSX, Spectrum et Atari ST. Grosse différence avec les autres ordinateurs, le Z80 n'est pas capable de discuter directement avec la puce sonore. Il lui faut passer par une autre puce qu'on appelle le PPI. Autant vous dire que les accès PPI seront abordés bien plus tard, car c'est le bazar!
Le PPI : C'est une interface programmable pour périphériques (Programmable Peripheral Interface). Sur Amstrad il permet de gérer la puce sonore, les accès au clavier, aux joysticks (en entrée ET en sortie!), le lecteur de cassettes, l'accès à des signaux vidéos (la VBL), le signal 'occupé' de l'imprimante ainsi que le modèle de la machine.
Le FDC ou contrôleur de disquette : C'est la seule puce de l'ordinateur qui n'est pas synchrone avec les autres. On ne peut pas lui donner d'ordres fermes, il faut dialoguer avec. Tout comme le PPI, son fonctionnement n'est pas simple et cette puce sera abordée à la fin.
Le CRTC ou calculateur d'adresses : J'ai failli l'oublier. Cette puce est un calculateur d'adresse à destination du Gate Array. Elle présente régulièrement au Gate Array des adresses, dans un ordre particulier et avec une régularité sans faille. En comprenant comment cette puce calcule les adresses, on sait comment dessiner dans l'écran. Au démarrage du CPC, le firmware/BASIC initialise l'écran aux dimensions de 320x200 pixels mais le CRTC calculant en octets, c'est la largeur de 80 qui est envoyée au CRTC. Le calcul des 200 lignes présente une subtilité. L'affichage n'est pas linéaire (tel que programmé par défaut sur CPC), le CRTC fonctionne avec des blocs de 2048 octets, il faut donc déclarer 25 blocs de 8 lignes pour arriver à 200 lignes. Là encore nous reviendrons plus tard sur ces réglages.
Sur la gamme Plus, des fonctionnalités étendues sont ajoutées et le PPI, CRTC et Gate Array sont regroupées dans une unique puce : Le fonctionnement reste le 'même' pour le programmeur, on envoie depuis le microprocesseur des ordres comme si ces 3 puces étaient toujours distinctes.
Emplacement des composants sur une vraie carte mère :
Schéma simplifié des relations entre composants
Il y a sur ce dessin un parti pris de montrer que les accès mémoires de ou vers le microprocesseur passent par le Gate Array. Ce n'est pas vrai électroniquement parlant mais je considère que les bascules font partie de l'ensemble du Gate Array (Gate veut dire porte en anglais) car il s'occupe de sélectionner la mémoire que peut lire/écrire le Z80. Cela permet de garder en tête qu'il faut dialoguer avec lui pour accéder à d'autres zones mémoires. Gros gros raccourci mais nous sommes sur un site débutant non? ;)
On voit le rôle central du PPI pour dialoguer avec clavier, imprimante, K7, jouer du son ou connaitre l'état du CRTC concernant le signal de synchro verticale.
On voit aussi que le microprocesseur discute avec tout le monde, c'est raccord avec son rôle de décideur, d'exécuteur.