HARDWAREMONTAGES ★ Pour un bit de plus , port 8 bits pour CPC ★

Port 8 Bits|Micro-Mag)Hardware Montages

Le port imprimante du CPC, c'est bien connu, est de type Centronics incomplet. L'ordinateur se contente en effet de fournir 7 bits de données, un signal STB de validation de données et de prendre en compte l'information de disponibilité du terminal qui lui est raccordé.

S'il est impossible, sans changement majeur du soft résident et de l'électronique du CPC, d'augmenter la quantité de données émises, le montage suivant donne la possibilité, moyennant un minimum de matériel, de piloter des systèmes 8 bits à partir des sept disponibles sur le port CPC. Un exemple typique est le pilotage d'une imprimante à code IBM qui exige un code 8 bits. Certaines imprimantes font de même en mode graphique.

Principe

L'octet à émettre est tout d'abord scindé en deux quar-tets représentant respectivement la partie basse pour les bits de poids faible, et haute pour les bits de poids fort. A chacun de ces quartets , on ajoute une valeur hexa telle que le CPC soit capable de générer le caractère ASCII correspondant. On envoie ensuite ces deux caractères successivement sur le port imprimante, au lieu du seul octet qui serait inévitablement amputé du bit 7. C'est là qu'intervient lé petit montage futé...

En réalité, seuls les 4 bits, de poids faible des caractères Ascii ci-dessus sont utilisés. Dans un premier temps, est mémorisée dans des bascules la partie basse du caractère correspondant à la partie haute de l'octet de départ, puis on transmet simultanément ces 4 bits et la partie basse du caractère qui représente la partie basse de l'octet et le tour est joué! Comme tout ceci peut paraître confus, un exemple apportera sûrement les éclaircissements nécessaires. Soit à transmettre l'octet &9C, on peut le représenter comme suite :

D7 D6 D5 D4 D3 D2 D1 D0
 1  0  0  1  1  1  0  0

La partie haute est 9, soit 1 0 0 1, la partie basse est  C, soit 1 1 0 0. Ajoutons à chaque quartet la valeur &40. On obtient &49 et &4C, c'est-à-dire les caractères Ascii «I» et «L». Envoyons vers le montage, «I» puis «L». Celui-ci va prendre la partie basse de «I», soit &9 comme partie haute du caractère à former et la partie basse de «L», soit &C comme partie basse. Il -va donc transmettre la valeur &9C, à savoir l'octet de départ. Terminé.

Montage

C'est la simplicité même. Quatre circuits intégrés très courants suffisent pour obtenir le résultat escompté. A la mise sous tension, ou lors d'un Reset, la bascule « D » a ses sorties respectivement à 0 pour Q et 1 pour /Q. Lots de l'envoi du premier caractère ( « I » dans notre exemple), la partie basse est mémorisée dans le latch 74LS373 sur le front de descente de /STB. Pendant toute la durée de ce premier /STB, la bascule « D » 74LS74 n'autorise son passage que vers le 74LS373. Quand le /STB remonte, la bascule « D » change d'état. Donc, le deuxième /STB passera vers la sortie alors qu'il n'atteindra pas le latch. Lorsque le caractère « L » de l'exemple sera envoyé, les 4 bits de poids faible seront aiguillés vers les poids faibles de la sortie et les données mémorisées dans- le latch seront envoyées vers les poids forts.


Implantation

Le front de remontée du signal /STB sera pris en compte par la bascule « D » qui reviendra de ce fait à son état initial, aiguillant à nouveau le /STB vers le latch.
Une précaution indispensable, le circuit « R-C » sur la RAZ de la bascule « D », est agrémenté d'un poussoir de Reset, ce qui permet de démarrer à tous les coups dans le bon sens et de réinitialiser si nécessaire le montage.
L'inconvénient majeur inhérent à ce montage est le ralentissement de la transmission. Il faut en effet exécuter deux PRINT au lieu d'un et faire en outre une petite conversion pour fabriquer les caractères. L'utilisation du port 8 bits est toutefois d'une simplicité enfantine: il suffit de remplacer les PRINT #8 par un GOSUB appelant la ligne Basic suivante:

PRINT #8, CHR$(INT (b/16) + 64); CHR$ (b MOD 16 + 64) ;:RETURN

où « b » est la valeur à convertir qui peut être exprimée en hexadécimal ou en décimal. On peut bien sûr remplacer « b »   par   n'importe   quelle variable numérique . Bien entendu, il est facile, sur le même principe, d'envoyer des caractères ASCII normaux par le sous-programme suivant, où b$ est un caractère ASCII :

PRINT #8, CHR$(INT (ASC (b$)/16 + 64)); CHR$ (ASC(b$) MOD 16 + 64)

Ceci afin de ne pas débrancher le montage.

Mise au point

Il y a vraiment peu de chose à en dire. Si le câblage est réalisé convenablement, le circuit démarrera du premier coup. L'éternel testeur à DEL ( Micro-Mag n°2, « Les liaisons dangereuses » ) est encore d'actualité.
- A la mise sous tension, vérifier la présence d'un 1 en 6 du LS74, et d'un 0 en 5.
- Vérifier l'efficacité du bouton Reset en 1 du même boîtier.
- Envoyer par un PRINT #8, un caractère ( un seul ). Contrôler la présence de sa partie basse sur les sorties du 74LS373.
- Recommencer éventuellement avec d'autres caractères (après un Reset pour chaque nouveau caractère). Parvenu à ce point, les chances sont grandes pour que le montage soit prêt à vous rendre les services attendus.

Michel Hugot ,  Micro-MAG n°12 & http://cpcrulez.fr

★ LICENCE: COMMERCIALE
★ ANNÉE: 1990
★ AUTEUR: Michel Hugot

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 084 millisecondes et consultée 983 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.