CODINGLA BIBLE DU CPC 6128

La bible du CPC 6128 : 1.07.04 L'utilisation du 8255 sur le CPC
Après avoir donné un aperçu des possibilités variées du 8255, nous en venons au fonctionnement pratique de ce composant universel sur le CPC. Comme en fait presque tous les circuits intégrés sur le CPC, le 8255 est également utilisé de façon optimale. Aucun bit n'est inutilisé.
Mais devenons plus concret.

Le 8255 sert le clavier, le chip sonore, le moteur du lecteur de cassette, produit les signaux d'écriture du lecteur de cassette, lit le flux de bits venant du lecteur de cassette, contrôle le signal V Sync du CRTC, contrôle si l'imprimante est prête à recevoir, interroge avec un bit l'état du signal EXP du connecteur d'extension, décide à travers un pont si la production de l'image doit se faire suivant la norme PAL ou SECAM en 50 ou 60 Hertz et il reste enfin encore trois bits qui interrogent des ponts lors de la mise sous tension de façon à savoir quel ordinateur vous avez acheté. L'état de ces ponts décide en effet si vous recevrez dans le message d'initialisation, le nom de la firme Amstrad, Awa, Triumpf, Schneider ou un autre des 8 noms possibles.

Avoir réalisé toutes ces fonctions avec uniquement les 24 canaux d'entrée/sortie disponibles, témoigne de l'esprit d'économie et de l'inventivité des développeurs de ce matériel.
Le bus de données est relié directement au bus de données du processeur. Le signal CS (Chip Select) est produit par le bit d'adresse Ail du processeur. Les pins A0 et A1 du 8255 pour la sélection de registre sont reliés aux pins d'adresse A8 et A9 du processeur.

Comme nous l'avons déjà indiqué, les éléments périphériques du CPC sont appelés à travers des adresses de port. C'est pourquoi le canal RD* du 8255 est relié au signal IORD*.

Ce signal est produit par la combinaison des signaux RD* et IORQ* du Z80. Uniquement lorsque IORQ* et RD* sont low, apparaît un low
sur l'entrée RD*.

La connexion WR* du 8255 est commandée de même. Ici apparaît un low, venant du pin 3 du 74LS32, lorsqu'aussi bien WR* que IORQ* du Z80 deviennent low.

Ces données permettent maintenant de déterminer les adresses de port du 8255. Pour, par exemple, écrire une valeur dans le registre 0, le registre de données du port A, les connexions Ail, A9 et A8 doivent être low. En écriture binaire, nous obtenons, pour l'octet fort du bus d'adresse, la valeur suivante:

A15 A14 A13 A12 A11 A10 A09 A08
1 1 1 1 0 1 0 0


Ce qui correspond à la valeur hexadécimale &F4.

Les 8 bits d'adresse inférieurs n'interviennent pas dans la sélection du 8255, une valeur entre &00 et &FF est ici possible.

Les bits mis dans l'octet fort ne sont pas non plus nécessaires en réalité à un adressage correct et on pourrait donc avoir l'idée d'utiliser comme octet fort la valeur 00H. Cela marcherait d'ailleurs. Mais comme le décodage des différents circuits intégrés périphériques se produit d'une semblable façon incomplète, les bits doivent être mis, sinon d'autres circuits intégrés tels que le CRTC ou le gâte array pourraient se croire également appelés.

Mais revenons à notre exemple. Donc, pour charger une valeur dans le registre A, la valeur &F400 doit être placée sur le bus d'adresse. Ceci peut être obtenu avec les instructions:

LD A,valeur
LD BC,&F400
OUT (C),A


Le registre de port C peut de même être lu avec les instructions:

LD BC,&F600
IN A,(C)

Les trois ports sont utilisés essentiellement en mode 0. Les 24 canaux d'entrée/sortie sont ainsi disponibles.

Le port A (&F400) est relié aux 8 canaux de données du générateur de son AY-3-8912. Suivant l'action demandée, le port A est programmé comme entrée ou sortie.

S'il est programmé en sortie, les instructions de commande sont envoyées au chip sonore à travers les 8 canaux du port. Vous trouverez le détail de ces instructions de commande dans le chapitre sur la programmation du AY-3-8912. Indiquons simplement pour le moment que le chip sonore dispose également d'un port 8 bits bidirectionnel. Une page de la matrice du clavier est connectée sur ce port. A travers le port A du 8255, il est possible par un détour du port du AY-3-8912 de savoir si une touche est enfoncée. A cet effet, le port A doit bien sûr être programmé en entrée.

Le port B (&F500) est programmé comme port d'entrée. Toutes les interrogations évoquées, hormis celle du clavier, se produisent à travers ce port. Les différents bits de ce port reçoivent l'affectation suivante:

Bit 0 : Ce bit interroge l'état du V Sync du CRTC. Comme cette interrogation doit aller très vite, le bit 0 peut être décalé dans le flag carry par simple rotation de la valeur lue avec INP. Il est ainsi possible de connaître rapidement l'état de V Sync.

Bits 1-3 : Ce bit est relié au pont LK4. Si ce pont est ouvert,
le contrôleur vidéo est programmé pour le travail en PAL en 50 Hertz. Un pont fermé entraîne une programmation du CRTC pour la norme SECAMde 60 Hertz pour la fréquence de renouvellement de l'image. Cette possibilité de programmation différente est importante lorsque le CPC doit être utilisé à travers le module MPI sur un téléviseur.

Bit 5 : Ce bit interroge l'état du signal EXP du connecteur
d'extension.

Bit 6 : Ce bit restitue l'état d'une imprimante connectée.
Comme l'imprimante ne peut pas recevoir de caractères en permanence, il est possible d'interdire un transfert de caractère en fixant cette connexion sur high.

Bit 7 : Les données fournies par le lecteur de cassette avec un niveau TTL sont lues à travers ce bit. Ici aussi vaut ce que nous disions pour le bit 0. Comme ce canal doit être examiné très rapidement, l'état de ce canal peut être déterminé très vite par une rotation unique du bit 7 vers le flag carry.

Le port C (&F600) est sur le CPC programmé comme port de sortie.

Quatre de ses huit canaux lui permettent de commander une partie de l'interrogation du clavier et deux autres bits sont utilisés pour le lecteur de cassette. Les deux bits restants sont employés pour la commande du chip sonore. Comme les canaux du port C peuvent être mis et annulés directement, celui-ci convient particulièrement à ce type de tâches.
Les différents bits sont ainsi utilisés:


Bits 0-3 : Ces bits commandent la matrice du clavier. Les quatre canaux programmés en sortie sont reliés à un décodeur BCD-décimal.
Ce décodeur met sur la masse une de ses 10 entrées, en fonction de l'information binaire en entrée. Les combinaisons en entrée autorisées sont les valeurs de 0 à 9.

Bit 4 : Ce bit commande le moteur du lecteur de cassette. Le moteur n'est cependant pas commandé directement, mais à travers un transisteur (et un relais commuté à la suite). Si ce bit est sur la masse, le moteur s'arrête.

Bit 5 : Les fréquences, qui doivent être reçues par le lecteur de cassette et qui produisent cette si douce mélodie, sont fournies par l'ordinateur à travers ce pin du 8255.

Bits 6-7 : Ces bits de port sont reliés aux connexions BC1 et BDIR du chip sonore et travaillent comme signaux de chip sélect et de strobe pour l'AY-3-8912. Vous trouverez une description plus détaillée de ces connexions dans le prochain chapitre sur le générateur de son.

★ ANNÉE: ???

Page précédente : La bible du CPC 6128 : 1.07.03 Commande du 8255, description des registres
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 229 millisecondes et consultée 1527 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.