HARDWARE ★ LE HARD N'EST PAS SI DUR QU'IL EN A L'AIRE (SCIENCE ET VIE) ★

Science&Vie n°822Science&Vie n°823

Voici la suite de cette rubrique mensuelle, commencée dans notre dernier numéro et dont le but est d'utiliser au maximum les ressources du microordinateur dont vous pouvez être équipé à la maison.

Tout au long de ces lignes nous serons obligés d'utiliser des termes bien ésotériques, relatifs au fonctionnement d'un microprocesseur ; pour être plus précis, à celui qui équipe le “micro” que nous avons choisi pour la présente rubrique, le Z 80. Pour la clarté des exposés sur les diverses interfaces que nous réaliserons, il n'est pas inutile d'expliquer quelques-uns de ces termes et de voir, en bref, de quoi est fait un micro-ordinateur.

Comme chacun sait, le “cœur” de la machine est un microprocesseur. Mais seul, il ne serait pas d'une grande utilité. Il faut lui adjoindre des organes annexes: les plus connus sont la mémoire morte, qui contient généralement le langage basic et des sous-programmes assurant les diverses fonctions de la machine (affichage des caractères sur écran ou gestion du clavier) et la mémoire vive avec des données telles que les symboles utilisés ou le programme de l'utilisateur. Mais bien d'autres organes —contrôleur vidéo, contrôleur de clavier ou modules d'entrée/sortie— font également partie de “l'architecture” de la machine.

Pour converser avec ces organes, le microprocesseur utilise un dispositif qui peut être comparé à notre réseau téléphonique. Il s'agit d'une série de fils —tracés sur le circuit imprimé de la machine— appelée “bus”. Sur chacun de ces fils le microprocesseur pourra envoyer un “0” ou un “1”, de manière à échanger les informations souhaitées.

/im4/sv823c.jpg

Au dos de votre "micro", le "bus" , et posée verticalement, l'unité centrale Z80 qui équipe les machines que nous utiliserons.

Sur le bus, les connexions sont réparties en trois grandes catégories : les adresses, les données et les signaux de contrôle.

Sur tous les “micros”, on peut accéder au bus depuis un connecteur placé à l'arrière de l'appareil (voir photo). Dans la plupart des cas il s'agit d'une simple fenêtre pratiquée dans le boîtier et laissant apparaître le circuit imprimé.

Les adresses.

Comme tout abonné au téléphone, chaque élément composant un “micro” possède en quelque sorte un numéro d'appel. Nous verrons plus loin que, grâce aux signaux de contrôle, le microprocesseur disposera d'éléments complémentaires pour appeler soit de la mémoire soit tout autre dispositif.

Le numéro d'appel est codé sur 16 fils. Pour les identifier, ils sont toujours numérotés de A0 à A15 sur le connecteur arrière (“A” pour “adresse”, suivi du numéro de fil).

N'oublions pas qu'un ordinateur fonctionne en binaire et ne sait donc présenter que des 0 ou des 1 sur le bus. Pour trouver l'état des tensions (0 volt pour “0”, 5 volts pour “1”) présentes sur les fils d'adresses du bus pour un dispositif donné, il suffira de convertir un numéro d'appel choisi en binaire et de le reporter sur le bus en se rappelant que A0 représente le bit le plus faible (l'unité en quelque sorte). Par exemple, si l'adresse est 183, l'état du bus sera le suivant lorsqu'elle sera envoyée :

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
0000000010110111soit:
0000000050550555volts:

Notons qu'un périphérique peut avoir une adresse identique à celle d'une case mémoire. La distinction sera toujours effectuée grâce aux signaux de contrôle.

Comme, dans le cas de la mémoire, certaines adresses sont déjà utilisées par des éléments internes du micro-ordinateur tels que contrôleur vidéo, lecteur de cassettes ou de disquettes, contrôleur de clavier, imprimante, etc. , avant d'envisager la réalisation d'une interface, il sera donc indispensable de vérifier si l'adresse que vous pensez lui donner est effectivement libre. En cas contraire, vous vous exposeriez à bien des surprises. Généralement le fascicule d'utilisation des micro-ordinateurs précise quelles sont les adresses déjà utilisées, souvent celles qu'il est judicieux d'employer.

Pour notre part nous tenterons toujours de réaüser des interfaces dont il sera facile de modifier l'adresse.

Les données.

Elles sont transmises sur huit fils. Le Z 80 ne sera donc capable de transmettre que huit bits simultanément, soit un octet. C'est sur ces fils que “la conversation” aura lieu. Dès que l'adresse aura été présentée, le Z 80 viendra échanger des informations sur les fils de données. Si, par exemple, c'est une case mémoire qui a été demandée il sera possible au microprocesseur, soit de lire son contenu, soit d'y enregistrer un octet. Il en serait de même pour un périphérique quelconque. D'une manière générale, les contacts correspondant aux données sont indiqués sur le schéma de brochage du connecteur par DO à D7 ; D pour donnée. Comme dans le cas des adresses, le chiffre indiquera le numéro de fil. Tout comme précédemment, D0 correspondra au bit de poids faible. Si donc, à l'adresse dont nous avons parlé plus haut (adresse 183), l'information 17, par exemple, transite, nous trouverons simultanément : 0000000010110111 sur les adresses et 00010001 (soit 17) sur les données, répartis comme suit :

D7D6D5D4D3D2D1D0
00010001soit:
00050005volts.

Comme on peut le constater, le principe de fonctionnement des fils de données est très proche de celui des fils d'adresses. Une différence fondamentale pourtant: si, sur les adresses, le microprocesseur ne peut qu'envoyer un message, sur les données par contre il peut soit en émettre (écrire), soit en recevoir (lire en mémoire).

Il s'agit donc de liaisons bidirectionnelles. La direction suivant laquelle seront acheminées les informations sera précisée, ici encore, par les signaux de contrôle. Il est donc évident qu'une interface devra prendre en compte la direction de conversation pour fonctionner correctement.

Les signaux de contrôle.

Ils sont nombreux. Cependant nous n'en utiliserons que quelques-uns. Ici, comme pour les adresses, il s'agit de signaux monodirectionnels ; c'est donc le microprocesseur qui les envoie ou les reçoit Notons cependant que ces signaux sont inversés ; c'est-à-dire qu'ils prennent la valeur 0 lorsqu'il faut en tenir compte. Ce détail est indiqué en inscrivant une barre horizontale au-dessus de leur dénomination. Nous ne passerons ici en revue que certains d'entre eux, qui nous seront le plus utile. Si, par la suite, nous sommes appelés à en utiliser d'autres nous indiquerons alors leur rôle précis.

  • Le signal IOKQ : Ce sera l'un des plus importants pour la réalisation d'interfaces. En effet lorsqu'il passe à 0, le microprocesseur indique par là qu'il va soit parler, soit écouter une interface. Son nom, peu évocateur en français il faut bien l'avouer, vient directement de l'abréviation de sa fonction en anglais : Input Output ReQuest ; c'est-à-dire demande d'entrée ou de sortie de données {via un périphérique ou une interface). Si, au contraire, le Z 80 avait voulu converser avec sa mémoire il aurait mis à 0 le signal MREQ : Memory REQuest ; demande mémoire.

Il s'agit donc là de deux signaux que le microprocesseur envoie.

  • Le signal RD : il a pour effet d'indiquer le sens de la conversation sur les fils de données. Il signale que le microprocesseur est à l'écoute et qu'il attend donc l'arrivée de données. Son appellation vient de ReaD ; lire, en anglais. Son complémentaire est le signal WR (WRite ; écrire) qui indiquera que le microprocesseur va envoyer quelque chose sur les données ; donc interdiction absolue de tenter de parler. Là encore il s'agit de deux signaux émis par le microprocesseur.
  • Le signal INT : Sa mise à 0 provoque l'arrêt momentané du Z 80. Il signifie INTerrupt et devra être utilisé avec prudence. Il s'agit d'un signal reçu par le Z80.

    Voici, pour les signaux qui nous intéresseront tout particulièrement.

    Si le basic de votre “micro” comporte les instruction IN et OUT ; elles se chargeront directement de piloter l'ensemble des signaux de BUS. IN sera utilisée pour questionner l'interface et OUT pour lui transmettre des données.

    Cependant sur certaines machines, telles que le ZX81 par exemple, ces instructions n'existent pas. Nous vous proposerons donc de réaliser un petit programme en langage machine pour les remplacer. Celui-ci est prévu pour fonctionner sur un “micro” comportant au moins 16 Koctets de mémoire vive (RAM).

    Il commencera par une instruction CLEAR de manière à déclarer un RAMTOP, c'est-à-dire une zone mémoire où l'ordinateur n'aura pas le droit de modifier des données. Si vous disposez d'une machine dont la capacité mémoire est supérieure à 16 Koctets, la valeur du RAMTOP pourra être modifiée, mais il faudra alors prendre soin de changer l'adresse de chaque instruction POKE. Voici donc ce petit programme que nous commenterons au fur et à mesure :

INSTRUCTIONS PARTICULIÈRES POUR LE ZX81

10 CLEAR 29999 Mise en place du RAMTOP.
15 REM routine OUT
20 POKE 30000,62 Chargement du registre A
30 POKE 30001,0 du microprocesseur à la valeur 0,
40 POKE 30002,211 OUT de la valeur contenue
50 POKE 30003,254 dans A sur l'interface N.254.
60 POKE 30004,201 Retour au langage basic.
95 REM routine IN
100 POKE 30010,219 IN : le registre A prend
110 POKE 30011,254 la valeur présentée par 254.
120 POKE 30012,50 Transfert de la donnée contenue
130 POKE 30013,68 dans A dans la case
140 POKE 30014,117 mémoire numéro 30020.
150 POKE 30015,201 Retour au langage basic.

Pour exécuter un OUT il faudra donc faire un POKE de l'adresse d'interface désiré en 30003, puis un POKE du contenu à transmettre en 30001 et enfin demander RANDOMISE, ou CALL, USR 30000.

De même pour un IN il suffira d'indiquer l'adresse de l'interface à questionner par un POKE de son adresse en 30011 et la donnée reçue sera obtenue en effectuant un PEEK en 30020. Ici l'instruction RAND, ou CALL , USR 30010 devra être insérée entre le POKE et le PEEK.

Nous sommes donc à présent prêts à attaquer notre première réalisation. Préparez vos outils à “wrapper”, supports et connecteurs pour le mois prochain.

Henri-Pierre PENEL , Science&Vie n°823

★ EDITEUR: Science&Vie
★ ANNÉE: 1986
★ AUTEUR: Henri-Pierre PENEL

Cliquez sur l'image pour voir les différents packages (2). 

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Hardware » Amstrad et le Magnetophone (Amstar)
» Hardware » Synthetiseurs vocale pour Amstrad CPC
» Hardware » Half, full and Simplex (Popular Computing Weekly)
» Hardware » Amstrad s'étend (Hebdogiciel)
» Hardware » Communication Amstrad (Tilt)
» Hardware » Les Interfaces DK'Tronics (CPC Revue)
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 308 millisecondes et consultée 2728 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.