| ★ CODING ★ CLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★ |
| 2/3.4.1 - Exploitation du PIO 8255 | Coding Classeurs Weka |
Le système d'exploitation.des CPC fait très largement appel aux possibilités du PIO 8255 pour des tâches aussi variées que la gestion du clavier, la programmation du synthétiseur de sons, le pilotage du lecteur de cassettes et la supervision de l'imprimante.Moyennant certaines précautions visant à éviter les conflits avec ces opérations, le programmeur peut détourner à son profit une partie des vastes possibilités de ce composant spécialisé dans les entrées/sorties. Il devra cependant savoir exactement ce qu'il fait, certaines instructions malencontreuses pouvant non seulement bloquer la machine, mais aussi endommager certains de ses composants. Mode de sélection du PIO 8255 La figure 1 montre comment le 8255 est matériellement incorporé dans le schéma des CPC : la broche de sélection du PIO est directement reliée à la ligne A11 du bus d'adresses du Z80, ce qui signifie que pour communiquer avec le 8255, le microprocesseur devra faire passer cette ligne A11 à zéro, on consultera également la Partie 2 chapitres 2.1 p. 3, 2.2 p. 3, 2.3 p. 3. Simultanément, le PIO doit être positionné en écriture ou en lecture selon que l'on veut exécuter une opération de sortie ou d'entrée. Pour mettre le 8255 en écriture, il faut appliquer un zéro logique à sa broche WR, tandis que pour le mettre en lecture, c'est sa broche RD qu'il faut amener à zéro.
La figure 2 montre comment les signaux IORD et IOWR, respectivement appliqués à RD et WR du PIO, sont obtenus à partir des lignes RD, WR, et IORQ du bus de commande du microprocesseur. La ligne RD passe à zéro toutes les fois que le Z80 exécute une instruction de lecture, soit en mémoire, soit sur un port. Inversement, il positionne WR à zéro lorsqu'il exécute une instruction d'écriture en mémoire ou sur un port. Parallèlement, il met la ligne IORQ à zéro s'il s'adresse à un port, et la ligne MREQ s'il s'adresse à la mémoire (ce qui nous ne nous concerne pas ici). On constate ainsi que IORD se positionne à zéro seulement en cas de lecture d'un port, et IOWR en cas d'écriture sur un port : ces deux lignes restent insensibles à toute opération en mémoire.
Mode d'adressage du PIO 8255 te 8255 est donc informé de la direction des échanges qui le concernent, mais doit encore savoir lequel de ses trois ports est « adressé ». Le microprocesseur transmet cette information sur les lignes A8 et A9 de son bus d'adresses, lesquelles rejoignent les entrées A0 et A1 du 8255. Le tableau 1 résume les différentes combinaisons possibles entre les états de toutes les lignes desservant le PIO. Grâce au tableau 2, vous comprendrez aisément comment sont calculées les adresses de ports des instructions Basic INP et OUT permettant de communiquer avec le 8255. En théorie, l'état des lignes d'adresse ne desservant pas le 8255 pourrait sembler indifférent, ce qui inciterait à croire que d'autres adresses - mèneraient aux mêmes résultats, ce qui est exact en ce qui concerne le seul 8255. Cependant, d'autres dispositifs d'entrée/sortie sont desservis par les mêmes bus, et réveillés par des états zéro sur d'autres lignes d'adresse. Tableau 1
L'imprimante, par exemple, est sélectionnée par un niveau zéro sur la ligne A12. Attention : Imaginons que nous tentions de sortir un 1 logique sur une ligne maintenue à zéro par un autre dispositif : nous créons un court-circuit qui va faire circuler un courant nettement plus important qu'en temps normal, d'où un échauffement excessif et dangereux dans les circuits intégrés... Exploitation du MO 8255 dans les Amstrad En temps normal, le système d'exploitation des CPC affecte comme suit les trois ports d'entrée/sortie du 8255 :
Le schéma électrique du CPC 464 nous montre que le moteur du magnétophone est mis en service par une tension positive (1 logique) sur la ligne C4 du port C du PIO. Le tableau 3 rappelle par ailleurs que le « poids » décimal de toute ligne de données numérotée « 4 » est de 16 (2 à la puissance 4). Tableau 3 Bus de donnéesLe tableau 1 nous permet de déterminer que pour positionner à 1 la ligne C4, il faut programmer, en Basic, OUT 63231,16. Essayons, et constatons que cette commande fait bien démarrer le moteur, à condition évidemment que la touche PLAY soit enfoncée afin de débloquer la mécanique. |
| Page précédente : 2/3.4 - L'interface parallèle PIO 8255A |
|
Page créée en 412 millisecondes et consultée 3783 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. |