★ HARDWARE ★ MINITEL: LE MEDIA ÉLECTRONIQUE (MICRO-SYSTEMES) ★ |
Minitel: Le Media Électronique (Micro-Systemes) |
Au même titre que le téléphone, le Minitel fait désormais partie de notre vie de tous les jours. Mais, si tout un chacun parvient, au bout d'un bref apprentissage, à se servir correctement de l'un et de l'autre, il est encore bien peu de personnes sachant comment ce terminal Teletel fonctionne. Aussi ne nous pencherons-nous pas sur la « pratique » du Minitel mais sur son fonctionnement.Ainsi sommes-nous sûrs qu'à la fin de cettextude vous comprendrez parfaitement comment fonctionne ce nouveau média. Que les amoureux du hard se rassurent, ils trouveront en annexe un montage très simple et très peu coûteux qui leur permettra d'utiliser leur appareil comme modem. A eux toutefois de développer le logiciel adéquat pour l'utiliser. Il était une fois... le codage de l'information Chacun d'entre vous connaît le code ASCII, qui permet de transformer les états haut et bas du courant, rassemblés par groupes de huit sous forme d'octets, en symboles alphanumériques et en codes de contrôle. Dans le cas du Minitel, c'est un peu la même chose. Le code utilisé par le Minitel a été défini dans la recommandation numéro 5 du CCITT (Comité Consultatif International pour le Télégraphe et le Téléphone). Il est constitué de mots de sept bits, ce qui permet de représenter 128 ca ractères. On y trouve :
![]() Pour transmettre des données par le canal téléphonique, on utilise des ondes sinusoïdales. Le réseau électrique fonctionne en effet avec un courant alternatif. Ce courant a comme propriété de voir varier sa tension un certain nombre de fois par seconde. Dans le cas de l'EDF, cette variation se produit 50 fois par seconde. Cette variation, encore appelée fréquence, est donc de 50 Hz (contre 60 pour le réseau nord-américain). La durée de cette variation s'appelle la période ; elle est inversement proportionnelle à la fréquence. Plus la fréquence est élevée et plus les périodes qui la composent sont courtes. Ce qui nous donne la relation suivante : P = l/FSur le téléphone, la tension varie du fait du courant produit par la bobine associée au microphone. Lorsque vous parlez, le son de votre voix fait vibrer la membrane du micro, qui excite la bobine, produit un courant, qui excite la bobine du récepteur de votre correspondant, récepteur dont la membrane se met à son tour à vibrer, reproduisant le son de votre voix. Mais ici surgit un petit problème. Sur le réseau téléphonique, on ne peut pas faire passer n'importe quelle fréquence. En réalité, les ondes transmises sont cantonnées entre deux valeurs extrêmes qui délimitent ainsi ce que l'on appelle une bande de fréquence. C'est pourquoi il n'est pas possible de faire transiter les données à trop grande vitesse (sauf sur des lignes spécialisées) si l'on ne veut pas récupérer un splendide charabia à la réception. Pour transmettre les messages du Minitel, on associe au symbole 0 un signal sinusoïdal de durée T et de fréquence f0 et au symbole 1 un signal sinusoïdal identique au précédent mais de fréquence différente f|. Ce déplacement de fréquences est identique à celui que produit votre voix lorsque vous modulez des sons pour les transformer en phonèmes. C'est pourquoi on parle aussi ici de modulation. Mais vous savez très bien que les signaux transmis par un ordinateur (ou un terminal) sont des signaux carrés et non pas sinusoïdaux. Aussi s'avère-t-il nécessaire de les transformer, à savoir de les moduler. Cette opération est effectuée par le modulateur du Minitel. De même, la réception d'un signal modulé doit être démodulée pour être intelligible par le terminal. Dans le Minitel, ces deux opérations s'exécutent au moyen d'un appareil modulateur-démodulateur. Il semble alors évident que ce modem transmet et reçoit à une certaine vitesse. Cette vitesse dépend de la durée de transmission d'un élément binaire, c'est-à-dire le temps pendant lequel sont émises (ou reçues) les fréquences f0 ou f1. Cette rapidité est l'inverse de cette durée. Elle s'exprime en bits/seconde soit :R = l/TLe modem du Minitel fonctionne selon l'avis V23 du CCITT, c'est-à-dire qu'il autorise des échanges simultanés (full-duplex) à 1 200 bauds dans le sens réception et 75 bauds (7,5 bits/secondes) dans le sens de l'émission. La modulation s'effectue par déplacement d'une fréquence de ± 30 Hz sur une fréquence constante de 420 Hz, appelée porteuse. Ce sont ces pics et ces crêtes qui donneront nos symboles 1 et 0. Encore faut-il que le niveau sonore de l'émission soit suffisant. En réception, le démodulateur transforme (nous verrons comment dans quelques instants) une fréquence de ± 400 Hz placée sur une porteuse à 1 700 Hz en symbole 1 ou 0. Cette transformation des déplacements de modulation en données significatives est assurée par un coupleur asynchrone qui peut être soit logiciel soit matériel, et qui constitue ou reconstitue nos paquets de 10 octets (un bit de start (0), 7 bits de données, un bit de parité, un bit de stop ( 1 ).
Notons au passage que le premier bit reçu est le bit de poids faible. Ce qu'il vous faut savoir également c'est que, dès la mise sous tension du Minitel, le modem est disponible, le microprocesseur l'obligeant en permanence à boucler sur lui-même. Si bien qu'il réémet tout ce qu'il reçoit. Pour vous en assurer, il vous suffit d'enfoncer une touche du clavier alphabétique, et vous verrez s'afficher le caractère émis à l'écran, ce qui constitue un parfait moyen pour savoir si votre modem fonctionne correctement. Ce type de fonctionnement est appelé « écho ». C'est aussi ce qui se passe lorsque le Minitel est connecté à un serveur ; ce que vous tapez est envoyé au modem qui l'envoie à la banque de données, celle-ci renvoyant les caractères tapés vers le modem qui les dirige alors vers l'écran. Ainsi est-on sûr de ce que reçoit le serveur. Sachez également qu'un logiciel de correction d'erreur est implanté dans le modem. Mais voyons ce qui se passe lorsque l'on connecte, puis déconnecte le modem. La connexion peut provenir soit d'une demande tapée au clavier (touche bascule CONNEXION/ FIN), soit d'une demande provenant de la prise péri-informatique du Minitel. Que se passe-t-il alors ? Le Minitel effectue les opérations suivantes :
Minitel : quatre organes pour un cerveau En réalité, la « dissection » du Minitel nous apprend qu'il est constitué de quatre organes, reliés entre eux par un réseau « nerveux » à double sens, les nerfs moteurs et sensitifs étant eux-mêmes sous le contrôle du cerveau déjà mentionné, à savoir le Protocole. Nous venons d'examiner le premier de ces organes, le modem. Les trois autres sont le clavier, l'écran et la prise péri-informatique. Le cerveau assure l'envoi des données vers un ou plusieurs organes, tant et si bien que l'on peut assimiler le Minitel à un réseau en étoile dont la gestion serait centralisée (fig. 1). Disons tout de suite que le « cerveau » réagit différemment selon que l'appareil est en mode local (ce que l'on pourrait appeler son « dialogue intérieur ») ou en mode connecté. Dans le premier cas (fig. 2) le modem boucle sur lui-même et les trajets d'information sont les suivants :
Pleine page sur l'écran Dès sa mise sous tension, le Minitel fonctionne en mode pleine page. Il existe également d'autres modes tels que le mode rouleau, le mode loupe, etc., mais pour fonctionner ils doivent être spécifiquement activés. A dire vrai, notre organe écran est un ensemble composé de trois sous-organes : le tube cathodique, un automate de visualisation, lui-même tripartite, et un logiciel de décodage vidéotex. L'automate possède trois sous parties :
Fig. 4. - Schéma conceptuel d'un automate de visualisation. Fig. 5. - Le tableau GO fournit les codes des caractères alphanumériques standards du minitel. Fig. 6. - Le tableau G1 indique les codes de caractères semi-graphiques du minitel. Si l'écran du Minitel comprend 25 lignes de 40 colonnes, un peu à la manière des ordinateurs familiaux de la précédente génération, la matrice d'une de ces cases n'est pas tout à fait semblable. Elle est constituée par une série de 10 lignes de 8 points. La ligne doit être ici entendue comme l'unité de balayage horizontal d'une image télé. Nous avons vu que chaque case équivalait à 2 octets en mémoire de page, c'est donc qu'il est nécessaire d'opérer un transcodage pour passer de 7 bits à 2 octets ! Ceci est réalisé au moyen d'une mémoire ROM qui interprète les codes reçus depuis le modem, la prise péri-informatique ou le clavier, et les transforme en caractères visualisables. Mais au juste que peut-on voir apparaître sur un Minitel ? A dire vrai, trois jeux de caractères (fig. 5, 6 et 7), le premier comprenant toute une série de codes de contrôle, les lettres de l'alphabet non accentuées, quelques signes de ponctuation ainsi que les « portes » qui permettent de passer d'un jeu de caractères à l'autre. Le second jeu est composé de caractères mosaïques qu'on obtient en divisant la matrice en six morceaux. Petite réflexion comme ça en passant : comment diviser 80 par 6 et tomber juste ? Très simple : on divise 80 par 6, ce qui donne des morceaux de 3 pixels de côté par 4 de long ; reste une ligne de 8 pixels. Bon sang, mais c'est bien sûr! Pour faire «joli», on ajoute cette ligne aux morceaux du milieu. Pour ceux qui n'ont toujours rien compris, reportez-vous à la figure 8. Le dernier jeu est à nouveau alphabétique, il contient les caractères accentués, la cédille du ç, l'œ, des flèches, des signes de fractions, bref, tout ce qu'il faut pour écrire correctement dans la langue de Rabelais. Pour s'y retrouver parmi tous ces codes, le CCITT les a alignés dans des tableaux (ceux des fig. 5, 6 et 7). Comment savoir à quel code correspond le A ? Très simple : on va tout d'abord regarder à quelle rangée il appartient. En regard de cette rangée, on trouve un paquet de 4 bits qui correspondent aux bits de poids faible de notre mot de 7 bits ; comme vous l'avez deviné, la colonne de notre A nous donne les 3 bits restants. Ce qui nous donne pour le A: 1000001, soit 65 en décimal (chic ! c'est de l'Ascii). Mais pourquoi faire simple quand on peut faire compliqué ? Au lieu de dire tout simplement « les caractères alphanumériques non accentués correspondent au standard ASCII et seront représentés comme tels », il est beaucoup plus « smart » de dire : chaque code sera désigné par deux chiffres (ou un chiffre et une lettre pour ceux qui parlent couramment l'hexa), séparés par une barre de fraction. Fig. 7. - Le tableau G2 correspond aux différents caractères snéciaux affichés. Fig. 8. - Les caractères semi-graphiques se décomposent en six points de taille inégale. Si bien qu'au lieu de notre 65 nous aurons un magnifique 4/1 (avouez qu'ils l'ont fait exprès !). Bon, ce n'est pas tout ça, mais nos lettres accentuées ? Elles s'obtiennent en composant une suite de codes. Le premier de la séquence est un code de commande (les commandes occupent les deux premières colonnes du jeu 1 ), il a pour valeur 1 /9 et permet au générateur de caractères de savoir qu'il doit aller chercher un accent dans le jeu G2 ; cette commande s'appelle SS2 (fig. 9). Le second code correspond à l'accent choisi dans le jeu de caractères d'accentuation. Tout comme sur une machine à écrire, on pose l'accent d'abord puis on pose le caractère sans avoir pour autant fait avancer le chariot de la machine. C'est exactement ce qui se produit ici ! Si nous voulons par exemple obtenir un ç, il nous faudra la séquence suivante :
Deux choses encore à vous préciser avant d'aller plus loin : d'une part le programme contenu dans la ROM du générateur de caractères dispose d'une sécurité, si bien qu'il vous sera impossible de mettre une cédille au u. De même, les lettres liées ne comptent pas pour deux codes mais pour un seul. Par exemple l'e dans l'o sera codé SS2 7/10Passons maintenant aux caractères graphiques (fig. 6). Pour les obtenir, il suffit de composer le code S0 (0/14), ce qui a pour effet de vous faire basculer dans le jeu graphique. Vous y resterez jusqu'à ce que vous décidiez de passer la porte baptisée SI, dont le code se trouve en 0/15. Bien entendu, si vous êtes en mode semi-graphique et que vous essayez de repasser par SS2, vous vous heurterez à un mur.C'est bien beau tout ça, mais cela risque d'être un peu terne si cela demeure en noir et blanc et si on ne peut pas élargir ou allonger les caractères. Car, ô surprise, le Minitel dispose d'un codage des couleurs des lettres, et du fond, même s'il est en noir et blanc. Les couleurs, dans ce cas, se traduiront par une brillance plus ou moins intense. Mais que peut-on faire pour égayer le « décor » ? On peut, au niveau des caractères alphabétiques, les souligner, les faire clignoter, les allonger, les élargir, et les faire passer en vidéo inverse. Quant au fond, on en détermine à loisir la couleur. Il est encore possible de masquer toute une suite de caractères et, bien sûr, de souligner en bloc. Les caractères semi-graphiques, eux, peuvent clignoter, changer de couleur, être disjoints ou masqués. Mais il ne faut surtout pas croire que l'on est obligé de déterminer pour chaque caractère toute une tribu d'attributs (sic). Il est tout à fait possible de procéder par zones. Une zone est une suite d'emplacements de caractères qui appartiennent à la même rangée physique (mais pas. à la même colonne). Elle est délimitée au début de la rangée. Si vous n'avez pas plusieurs zones s'enchaînant les unes les autres, vous n'aurez pas besoin d'en placer un autre à la fin de chaque rangée. Ce délimiteur est signalé en mémoire de page par un mot bien particulier qui contient son identification, ainsi que les informations de changement d'attributs assignés à la zone. Par exemple : zone verte, soulignée, clignotante. Il se trouve que le délimiteur est codé, en transmission, comme un espace, tant et si bien que, répété sur deux emplacements consécutifs d'une même rangée, il signalera le passage de la zone en double largeur, et, répété sur deux emplacements consécutifs d'une même colonne, il signalera la double hauteur de cette zone. Autre petite chose à savoir : lorsque vous effacez l'écran de votre Minitel, il s'ensuit un remplissage de l'écran par des pavés noirs semi-graphiques. Pourquoi ? Tout simplement pour empêcher que le lignage ou la couleur de fond n'anticipent sur l'inscription des caractères de la rangée courante. Fig. 9. - Les trois jeux de caractères sont sélectionnés par l'un des codes suivants : SI, SS2 ou SO. Mais revenons à nos attributs. Ceux-ci sont codés au moyen d'une séquence « Escape » suivie d'un code d'appel. Tous ces codes sont ensuite filtrés par le module écran du Minitel. Une fois définis au niveau du caractère, ils sont traités en parallèle, c'est-à-dire qu'ils n'apparaissent que conjointement à un caractère. Ainsi chaque signe peut avoir ses propres attributs. Il n'est d'ailleurs pas nécessaire de coder chaque symbole, puisque les attributs de visualisation s'appliquent par défaut à tous les caractères qui les suivent. Dans quels cas les attributs cessent-ils de s'appliquer ? Tout d'abord, quand on rencontre une nouvelle batterie d'attributs ; là, pas de surenchère, mais un passage au nouveau jeu d'attributs pour la suite de caractères qui leur succède ; ensuite, lorsque l'on rencontre un séparateur bien particulier qui délimite des portions de page-écran. Ce séparateur est codé l /F. Dans le tableau représenté à la figure 9, il est désigné par l'abréviation US (Unit Separator). Il signale la disponibilité d'une portion de l'écran pour recevoir de nouveaux caractères (quel que soit leur mode) et les attributs qui les accompagnent. Par défaut, cette portion de l'image repassera en mode alphanumérique et avec les couleurs (ou valeurs) codées lors de l'initialisation du terminal. Si bien qu'il est évident de dire que les attributs cessent de s'appliquer lorsque le terminal est réinitialisé. En tout, ce sont 28 codes qui sont utilisés pour définir les attributs. Listons-les rapidement :
Il est aussi possible de masquer et de démasquer l'écran d'un seul coup. Pour effectuer un masquage, employez la séquence ESC, 2/3, 2/0, 5/8. Le démasquage ne change que pour le troisième code, qui passe de 5/8 à 5/F. Questions de taille Nous parlions précédemment de la taille des caractères. A ce propos, il est intéressant de voir comment l'automate de visualisation analyse les attributs permettant de passer en double grandeur ou en double hauteur. Lors de la lecture d'un attribut de double taille ou de double hauteur, il y a affectation immédiate aux deux rangées caractère, de deux caractéristiques, l'une pour la partie haute, l'autre, bien évidemment pour la partie basse, caractéristiques qui demeureront inchangées jusqu'à la Fin de rangée. Notons tout de suite qu'il n'est pas possible d'utiliser ce type de caractères en rangée 1. Pourquoi ? Tout simplement parce que la rangée 0 est consacrée aux messages de service (par exemple, le « C qui vous indique que vous êtes connecté). Nous vous conseillons de n'utiliser cette rangée qu'avec parcimonie. Il est en effet préférable de la réserver à l'inscription de messages de contrôle. Pour y accéder, vous emploierez la séquence US (notre fameux délimiteur d'article) 4/0 X/Y (où Y désigne le numéro de colonne, donc prenez soin de laisser X à 0 !). Un petit truc : pour repasser à la ligne où se trouvait le curseur avant cette incursion, il suffit d'envoyer le code du saut de ligne, LF, soit 0/A. Par ailleurs, vous pourrez aussi quitter la rangée 0 en envoyant le code US. Revenons maintenant, après cette petite digression, à notre double taille. Si un autre caractère est désigné comme en double taille sur la rangée immédiatement inférieure ou supérieure aux rangées de notre double rangée, c'est-à-dire s'il incorpore soit la première soit la seconde rangée du doublet, on ne visualisera que sa partie haute ou sa partie basse. Ça paraît peut-être un peu ésotérique mais, si vous y réfléchissez trente secondes, cela vous expliquera pourquoi, sur la version actuelle de votre Minitel, il ne vous est pas possible d'obtenir des caractères double taille qui soient placés en quinconce. Votre double taille, ainsi que tous les attributs définis au niveau du caractère, se retrouvera de plus transportée avec tous les déplacements d'écriture dans l'écran, ceci jusqu'à ce que soit rencontré un code US ou FF (Form Feed, saut de page) ou encore RS (Record Séparator). Dernier point avant de passer à autre chose : ce que fait en permanence l'automate de visualisation, c'est une analyse des séquences d'attribution au fur et à mesure qu'elles lui sont envoyées. Tant et si bien qu'on peut considérer l'envoi des attributs comme étant réalisé de façon sérielle. VOUS QUI ENTREZ ICI ABANDONNEZ TOUTE ESPERANCEavec le VOUS en bleu, le QUI en rouge, le ENTREZ en noir, le ICI en magenta, et le reste à nouveau en rouge, et que nous introduisions ensuite des tirets à la place des espaces, ce qui donnerait :VOUS-QUI-ENTREZ-ICI-ABANDONNEZ-TOUTE-ESPERANCEEnfer et damnation ! Toute la phrase est devenue bleue ! Ceci s'explique quand on sait que le Minitel ne relit pas la mémoire de page. Ce qui fait que les attributs série ne sont pas transportables lors d'un mouvement dans l'écran de la position courante. Le simple fait de remplacer un séparateur par un autre caractère annule purement et simplement les attributs qui lui avaient été alloués. Que fait alors l'automate ? Il se contente de prendre pour attributs ceux de la zone située immédiatement à gauche, et ceci pour une bonne et simple raison : la transformation du séparateur provoque la réunion des deux zones.A droite, à gauche, en haut, en bas Mais ce n'est pas tout que de s'amuser avec les couleurs. Pour que votre texte (ou votre dessin) ait vraiment l'air présentable, encore faut-il l'aérer, le disposer correctement, etc. Bref, le mettre en page. La page du Minitel est constituée de 25 lignes de 40 colonnes, exactement la taille du feuillet dans certains journaux. C'est peut-être pourquoi les « djinns » de la DGT l'ont baptisée du doux nom d'article. Enfin, peut importe, l'essentiel est de pouvoir traiter ce dernier de la même façon qu'un imprimeur traiterait le contenu d'un texte soumis à composition, c'est-à-dire de pouvoir indenter les paragraphes, sauter quelques lignes en fin de section, et aller à la page suivante pour le prochain chapitre. Voyons rapidement les fonctions dont dispose le Minitel pour faire tout cela. Ce sont les codes allant de 0/8 à 0/D qui vont ici nous servir. Parole d'évangile, le retour chariot est codé 0/D. Les tabulations horizontales et verticales correspondent respectivement à 0/9 (HT), 0/B (VT) et 0/A (LF). Elles provoquent le déplacement du curseur d'un caractère vers la droite, vers le haut, et d'une ligne vers le bas. A noter que le retour chariot correspond à celui d'une machine à écrire, il ne provoque pas de saut de ligne, comme le Line Feed, mais ramène tout simplement le curseur dans la première colonne de la rangée en cours d'édition. L'espacement arrière (Back Space) nous est donné par 0/8. A tout ceci, il faut ajouter le « Form Feed » qui passe à l'article suivant ; il provoque l'effacement complet de l'écran, de la rangée 1 à la rangée 24. Pour ramener le curseur dans le coin supérieur gauche de l'écran, nous emploierons le séparateur d'enregistrement RS, codé 1/E. Là aussi, on ne regrimpe pas sur la rangée 0 mais sur la rangée 1. Ce code constitue par ailleurs un séparateur explicite d'article. Pour diviser un article en plusieurs sous-articles, on emploie US, 1 /F. Ce code est suivi de deux caractères non visualisés qui, ainsi que nous le disions auparavant, correspondent aux coordonnées des caractères qui seront ensuite envoyés à l'automate de visualisation.
Cette fonction est très intéressante, car c'est grâce à elle que nous pourrons positionner le curseur où bon nous semble. Imaginons que nous voulions que le mot BEATRICE commence à la 25e colonne de la 5e rangée. Nous enverrons donc les codes suivants : 1/F (US), 4/5, 5/9, 4/2, 4/5, 4/1, 5/4, 5/2, 4/9, 4/3, 4/5.Vous remarquerez tout de suite qu'il y a plusieurs 4/5 qui ne correspondent absolument pas à la même chose ; dans le premier cas, 4/5 désigne le numéro de rangée, tandis que dans les deux autres ils représentent la lettre E. Explication : le premier doublet correspond à un caractère non visualisé et chiffré sur six bits utiles, qui nous donne le numéro de la rangée, et n'a donc rien à voir avec le codage de la lettre E. Traduisons ce doublet sur 6 bits, cela nous donnera 000101, c'est-à-dire bien 5 en décimal. De même, 25 nous donne en binaire 011001, soit 5/9. Compris ?Mais vous aurez peut-être envie de faire suivre BEATRICE non pas par un détective privé mais par des espaces présentant les mêmes attributs. Pour ce faire, vous emploierez la fonction CAN, codée 1/8. Notons au passage que ce code ne sert pas de délimiteur ; aussi les caractères envoyés ensuite, et qui débuteront à la première colonne de la rangée suivante (colonne 0 de la rangée 6 dans notre exemple) auront les mêmes attributs que BEATRICE. Quelques mots encore sur le curseur. Il est tout à fait possible d'arrêter la visualisation de celui-ci en envoyant le code 1/4 (baptisé DC4 certainement par un passionné d'aéronautique !). Pour faire réapparaître le petit carré clignotant, il suffit d'envoyer le code DC1 (1/1). Ceci nous amène à vous parler d'un petit truc bien utile quand on veut faire de jolis en-têtes à l'écran. Nous vous avons parlé longuement du séparateur de sous-article US. Le terminal l'utilise dans un autre cas que pour positionner le curseur. Si vous faites ESC 6/1, il s'en servira pour vous retourner la valeur des coordonnées qui suivent US. Ainsi, si vous avez déplacé votre curseur jusqu'à la cinquième colonne de la cinquième rangée, la séquence ESC 6/1 matérialisera à l'écran les codes 4/5 5/9. Les autres fonctions Le code SP (2/10) déplace le curseur d'un espace vers la droite. Il inhibe alors les attributs de visualisation de zone précédente et laisse apparaître la couleur du fond. Mais, pour les titres, par exemple, il est préférable de laisser les espaces de la même couleur que les caractères. Est-ce à dire que vous devrez composer une séquence ESCAPE pour chaque espace à colorier ? Que nenni ! La fonction d'oblitération DEL (7/F) s'en chargera à votre place. Ainsi, si nous voulons obtenir BEATRICE en caractères rouges de taille normale entrecoupés de pavés de la même couleur, nous aurons la séquence suivante : 1/B (ESC) 4/1 (rouge) 4/9 (caractères fixes) 4/C (taille normale) 4/2 (B) 7/F (espace rouge) 4/5 (E) 7/F (espace rouge) 4/1 (A) 7/F (espace rouge) 5/4 (T) 7/F (espace rouge) 5/2 (R) 7/F (espace rouge) 4/9 (I) 7/F (espace rouge) 4/3 (C) 7/F (espace rouge) 4/5 (E).La répétition d'un caractère est également possible. Pour ce faire, il faut employer la fonction REP (1/2) x, où x désigne sur 6 bits utiles le nombre de répétitions désirées. Si, par exemple, nous voulons afficher qu'un certain liquide bien connu pour ses bulles est FFFFFOU, nous aurons la séquence suivante :4/6 (F), 1/2 (REP), 4/3 (000011 en binaire), 4/F (0), 5/5 (U).C'est bien gentil tout ça, direz-vous, mais 000011 en binaire ça n'a jamais fait 4 mais plutôt 3 ! Tout à fait d'accord ! Mais comme il faut bien avoir un modèle sous la main pour pouvoir le répéter, le code du caractère provoquera le premier affichage, et il faudra donc ôter 1 du nombre de fois que vous désirez voir reproduire le caractère (cqfd).Enfin, last but not least, votre Minitel possède une sonnerie. Vous l'activerez en employant la fonction BEL (0/7). A la réception de ce code, une sonnerie se déclenche pendant une durée inférieure à une seconde. On peut la prolonger en répétant le code BEL. D'où l'idée complètement loufoque de transmettre par votre Minitel non pas des caractères visualisables mais du morse, en vous servant des caractères «. » et « - », auxquels vous adjoindrez une sonnerie brève et une sonnerie longue (le mieux dans ce cas est la séquence BEL REP 4/2). Certaines séquences provoquent un fonctionnement particulier de l'écran. Vous pourrez notamment faire passer votre Minitel en mode rouleau en tapant la séquence suivante : ESC, 3/A, 6/9, 4/3.Pour repasser en mode plein écran, il suffira de retaper la même séquence en remplaçant juste 6/9 par 6/A.Deux autres couples de séquences ESCAPE commandent la mise en œuvre et l'arrêt du mode loupe. Ce mode particulier permet de grossir soit la moitié supérieure soit la moitié inférieure de l'écran. Pour passer en mode loupe haut, il faut faire : ESC, 3/A, 6/9, 4/6puisESC 3/A, 6/A, 4/6pour repasser en mode normal.De même, pour passer en loupe basse, vous utiliserez : ESC, 3/A, 6/9, 4/7puisESC, 3/A, 6/A, 4/7pour désactiver cette fonction. Ces diverses séquences appartiennent au Protocole que nous allons étudier maintenant (nous laisserons en effet de côté l'étude du module clavier qui, dans le cadre de ce dossier, n'offre pas un grand intérêt).Le protocole Les quatre organes du Minitel sont pilotés par un logiciel spécifique baptisé Protocole. C'est lui qui, à l'instar d'un chef de gare, assure l'aiguillage des données d'un organe à un autre. Cette position de «grand répartiteur » fait que ses instructions ne sont pas soumises au mécanisme des aiguillages. Seuls les modules le sont, leur mise en relation étant assurée selon qu'ils sont en émission ou en réception. Pour chacun de ces deux modes, les modules disposent d'un code distinct. Résumons ceux-ci rapidement :
Ce qu'il faut également savoir, c'est que tous les ordres du langage Protocole nécessitent l'emploi de séquences Escape. Ces séquences sont analysées uniquement par le logiciel. Il y a au total 29 instructions dans le langage Protocole. Notons toutefois que certaines séquences de type SEP, X sont également émises par le Protocole. Une fois la commande reçue, le Protocole garantit sa reconnaissance en envoyant une séquence d'acquittement, un peu à la manière de l'ACKnow-ledge transmis par une imprimante à l'ordinateur. A la mise sous tension du terminal, ce dernier est en aiguillage standard, c'est-à-dire qu'aucun mode particulier n'est activé. A ce stade, une séquence SEP, 5/3 est diffusée vers tous les récepteurs. Lorsque le terminal change d'état, il envoie une séquence spécifique vers tous les récepteurs. SEP, 5/0 marque le changement d'état résultant de la connexion du terminal à un serveur. SEP, 5/1 est le message qui est diffusé quand le modem change de vitesse. Lors de la détection de la porteuse, c'est la séquence SEP, 5/3 qui est expédiée ! Enfin, quand la prise péri-informatique est en service, le terminal diffuse la séquence SEP, 5/4. Le terminal dans tous ses états Nous savons que notre Minitel fonctionne en mode local lors de sa mise sous tension. Mais qu'en est-il quand il passe en mode terminal ? Son état physique, lors de la demande, se traduit par la séquence suivante : ESC, 3/9, 7/0. La réponse à cette mise en état est donnée par la séquence suivante: ESC, 3/A, 7/1, octet de status terminal. Ici, deux remarques s'imposent :
Mais, vous vous en doutez, il existe d'autres instructions, ne serait-ce que pour faire passer le modem de son bouclage permanent, lorsque le terminal est en mode local, en émission-réception dès qu'il y a détection d'une porteuse. On voit donc combien il est facile de réaliser un dispositif autorépondeur en se servant d'un tout petit programme. Pour ce faire, il suffit en effet de concevoir une fonction de scrutation permanente de l'octet de status qui boucle tant que le bit DP ne passe pas à 1. Dès le passage à 1, il faudra envoyer la séquence Escape correspondant à la connexion du modem, c'est-à-dire PRO1, 6/8. La déconnexion sera réalisée par la séquence PRO1, 6/7. De module en module Nous avons vu tout au début de cette étude comment étaient configurés les aiguillages entre les organes du Minitel (cf. fig. 1). Mais ce qu'il faut savoir, c'est que le serveur ou le périphérique connecté au terminal peut engendrer des commandes Protocole qui permettent de relier un module émetteur à plusieurs modules récepteurs. Voici les aiguillages possibles à partir d'un module émetteur. récepteur ⇒ émetteurs Ces aiguillages sont effectués en utilisant une séquence ayant cette forme : PR03, COMMANDE D'AIGUILLAGE, CODE RECEPTION DU MODULE RECEPTEUR, CODE EMISSION DU MODULE EMETTEUR.Les codes des commandes d'aiguillage sont les suivants :6/1 : ON, la liaison entre le module émetteur et le module récepteur est établie. 6/0 : OFF, la liaison est déconnectée. Ainsi, par exemple, si nous voulons mettre en relation la prise péri-informatique et le modem, nous aurons la séquence suivante : PRO3, 6/0, 5/A, 5/3.Il est également possible de bloquer temporairement les communications à destination d'un module. C'est généralement le cas lorsque le module émetteur et le module récepteur sont identiques.Tous ceux d'entre vous qui ont, peu ou prou, touché aux réseaux, savent bien qu'une des principales tâches du serveur consiste à réglementer les accès au disque. C'est un peu la même chose qui se passe ici avec les aiguillages. Chaque module peut faire une demande de status à n'importe quel moment afin de savoir soit î'état d'un module en tant qu'émetteur ou récepteur, soit l'état général des aiguillages. Bien évidemment, toute demande obtient réponse. Pour connaître l'état d'un module récep-ieur ou émetteur, on emploie la séquence : PR02, 6/2 (TO), CODE RECEPTION OU EMISSIONLa réponse (encore baptisée séquence d'acquittement) se présente sous la forme suivante :PR03, 6/3 (FROM), CODE RECEPTION OU EMISSION DU MODULE, SUIVI DE L'OCTET DU STATUS D'AIGUILLAGE RECEPTEUR OU EMETTEUR DU MODULE.Admettons que le module écran veuille connaître l'état du clavier, il enverra :PR02, TO, 5/1.Ce dernier, une fois sollicité, lui expédiera son acquittement sous cette forme :PR03, FROM, 5/1, 11000010.Tout comme l'octet de status terminal, l'octet de status associé à un module véhicule une foule d'informations.Le bit de poids fort (bit 7) est le bit de parité, le suivant est à 1, les bits 4 et 5 ne servent pas et sont maintenus à 0, le bit 3 nous renseigne sur une possible liaison avec la prise péri-informatique (1,'la liaison est établie), le 2 nous renseigne sur le modem, le 1 sur le clavier, et le 0 sur l'écran. Lorsqu'il reçoit une instruction d'aiguillage, le Protocole l'exécute et répond par un acquittement, c'est-à-dire qu'il fournit le nouveau status récepteur du module récepteur concerné après l'exécution de la commande. Le format de l'acquittement est : PR03, FROM, CODE RECEPTION DU MODULE RECEPTEUR, STATUS D'AIGUILLAGE DU MODULE RECEPTEUR CONCERNE.Cet acquittement est systématiquement envoyé au module initiateur de la commande d'aiguillage.Mais est-il possible d'envoyer ces acquittements à d'autres modules qui désireraient savoir ce qui se passe ? Tout à fait ! On utilise pour ce faire des commandes de diffusion. Le format de celles-ci est le suivant : DIFFUSION (6/5) : le module, désigné par le code réception, recevra toutes les séquences d'acquittement quel que soit le module initiateur ; NON DIFFUSION (6/4: le module, désigné par le code réception, ne recevra que les séquences d'acquittement dont il est l'initiateur. Donc, il faut non pas prendre cet ordre comme une pure et simple non diffusion mais plutôt comme un ordre de diffusion restreinte. Quand nous retrouvons-nous en diffusion restreinte ? Dans plusieurs cas. Tout d'abord à la mise sous tension du terminal, ensuite lors d'une connexion ou d'une déconnexion du modem, ou encore lors d'une fin de session sur la prise en mode local. Là encore, on a un octet de statut Protocole ; seuls les deux premiers bits de poids faible sont ici importants. Si le premier bit est à 0, c'est que les acquittements sont diffusés vers le modem. Si le second bit est à 0, c'est que les acquittements sont envoyés vers la prise. Nous allons passer dans quelques instants à l'étude de la prise péri-informatique, ce qui nous permettra de vous proposer un petit montage, très simple à réaliser, et qui vous autorisera de faire communiquer votre Minitel avec la sortie RS 232 C de votre ordinateur. Pour toutes les autres commandes Protocole, reportez-vous à la figure 10. La prise péri-informatique Cette fameuse prise péri-informatique est, à notre sens, un des organes essentiels pour une bonne exploitation des possibilités de votre terminal Minitel. Elle se présente sous la forme d'une prise DIN à 5 broches. Sur celle-ci, les signaux suivants sont disponibles :
Le signal PT indique l'occupation du réseau des périphériques raccordés au Minitel. Le signal TP n'a guère d'importance dans la mesure où il est activé sur toutes les versions du Minitel. Guère d'importance pour l'instant, mais nous savons de source sûre que ce fil sera employé sur les prochaines versions pour alimenter des périphériques à faible consommation (quelques watts sous 5 V). La vitesse des échanges est également programmable grâce aux signaux RX et TX. On peut aussi changer la vitesse et passer en 1200-1200 et 300-300. Pour ce faire, on utilise la séquence suivante : ESC, 3/A, 6/B, OCTET VITESSE Cet octet a cette configuration : PT-1-E2-EI-E0-R2-R1-R0 On remarque tout de suite deux champs de trois bits, l'un dénommé E (pour émission), l'autre R (pour réception). Voici les valeurs que prennent ces champs : 001 = 75 bauds 010 = 300 bauds 100 = 1 200 bauds Toutefois, ces échanges ne sont validés que lorsque la prise a reçu une séquence d'acquittement de ce type : ESC, 3/A, 7/5. Encore un mot du signal PT. Celui-ci conserve les aiguillages et les vitesses d'échanges entre les périphériques lorsqu'il passe à 0. Lorsqu'il passe à 1, le Minitel revient en mode standard. Il y aurait encore bien d'autres choses à dire sur le Minitel, mais nous vous laissons pour l'instant le soin de les découvrir par vous-même. Voici donc, en guise de « dessert », le montage promis. Conclusion : un adapteur Minitel RS232 Ce circuit, très simple à réaliser, permet de relier la fiche péri-informatique du Minitel à la prise RS 232 de n'importe quel micro-ordinateur. Nous ne sommes pas encore en mesure de vous fournir le logiciel permettant d'exploiter cette liaison. Espérons que des lecteurs actifs nous apporteront rapidement une solution (langage machine Forth ou tout langage relativement « rapide »). M.ROUSSEAU , Micro-Systemes - Novembre 1985
|