★ CODING ★ AMSLIVE ★ AMSLIVE n°01 - ELECTRONIQUE : LE Z80 ★ |
AMSLIVE n°01 - Z80 | Coding Amslive |
Nous allons parallèlement traiter du Z80 dans un cadre général et dans celui de son utilisation sur CPC. Ainsi, L'assembleur tu maîtriseras, la machine tu comprendras, plus aucun bug tu n 'auras, et enfin tu jouiras. Etudions les différentes broches du Z80 : Pas de commentaires sur CLK (Clock : horloge), GND et+ 5V! Le contrôle des bus. L'entrée BUSREQ (bus request) force le Z80 à mettre les bus, MREQ, IORQ, RD et WR dans l'état haute impédance après le cycle machine en cours. Le contrôle du System. Il ne s'agit que de sorties. MREQ (Memory REQuest) indique une opération de lecture ou d'écriture en mémoire et que l'adresse sur le bus est valable. WR (WRite) : indique à la mémoire ou au périphérique adressé que la donnée présente sur le bus est valable. Le contrôle du Z80. La sortie HALT* indique que le Z80 a exécuté une instruction HALT et attend une interruption (non maskable ou maskable si autorisée). Pendant ce temps, il exécute des NOP pour maintenir le rafraîchissement de la mémoire. Les autres signaux sont des entrées WAIT indique au Z80 que la mémoire ou le périphérique n'est pas prêt à être accédé. Ceci était nécessaire à l'époque ou les circuits (mémoires par exemple) étaient trop lents. Mais sur CPC, son utilisation est tout autre. Le CRTC a besoin d'accéder à la mémoire à une fréquence très précise et d'une manière prioritaire. BUSREQ* est à proscrire : s'il permet de prendre le contrôle à la fin d'un cycle machine (cycle M), ces cycles ne contiennent pas tous le même nombre de périodes d'horloge (cycle T). Par contre, WAIT est analysé à la fin de chaque cycle T, et on peut ainsi interrompre l'exécution d'une instruction. INT (INTerrupt request) informe d'une demande d'interruption. Le Z80 y répond à la fin de l'instruction courante si les interruptions sont autorisées et si BUSREQ* est inactif. NMI (Non-maskable interrupt, active sur front bas) est pris en compte à la fin de l'instruction, prioritairement par rapport à INT*, mais seulement si BUSREQ* est inactif. Le PC est alors sauvegardé et prend la valeur &66. RESET réinitialise le Z80 : Mode d'interruption 0, PC, I et R à 0, interruptions autorisées.
|