Page suivante - Page précédente - Table des matières

7. Quelques détails sur le fonctionnement des terminaux

Si vous ne connaissez presque rien sur les terminaux, je vous suggère de lire en premier introduction et de lire aussi survol du fonctionnement des terminaux.

7.1 Mémoire du terminal

L'écran du terminal se rafraîchit peut-être 60 fois par seconde à partir d'une image stockée dans la mémoire du terminal. Pour un PC l'image du moniteur est stockée dans la mémoire de la carte vidéo à l'intérieur de l'ordinateur mais pour un terminal, l'équivalent de la carte vidéo est à l'intérieur du terminal. Pour un terminal texte le stockage d'une image utilise peu de mémoire. Au lieu de placer chaque point (pixel) sur l'écran en mémoire, ce qui demande le stockage d'à peu près 250.000 points, on utilise une méthode de stockage bien plus efficace.

Un écran rempli de texte peut être représenté dans la mémoire du terminal par des octets ASCII, un pour chaque caractère à l'écran. Un écran entier ne prend qu'environ 2 K octets ASCII. Pour afficher ces caractères, le terminal doit aussi connaître l'image (la forme) de chacun des presque 100 caractères ASCII imprimables. L'image d'un caractère n'occupant que, disons, 15 octets, on n'a besoin que d'environ 1,5 K de mémoire pour les images de tous les caractères ASCII (la police). Ce texte ASCII et la mémoire de la police sont balayés pour que l'image résultante soit affichée à l'écran environ 60 fois par seconde. C'est une forme de mémoire partagée où l'image unique d'une lettre telle que la lettre e est partagée par toutes les nombreuses lettres e qui apparaissent sur un écran rempli de texte. Une faible demande en mémoire impliquait des coûts réduits pour produire des moniteurs au début des années 1980 quand le coût de la mémoire était plusieurs milliers de fois plus important qu'il ne l'est actuellement (ce qui représentait à l'époque plusieurs dollars par kilo-octet).

7.2 Les premiers terminaux

Les premiers terminaux ressemblaient à des machines à écrire contrôlées à distance qui ne pouvaient "afficher" (imprimer sur du papier) que le flux de caractères que leur envoyait l'ordinateur. Les premiers modèles étaient appelés télétypes. Le nom "tty" n'est que l'abréviation de "Teletype". Les premiers terminaux étaient capables de faire un saut de ligne et un retour chariot comme une machine à écrire et faire tinter une sonnette quand un caractère sonnette (bell) était reçu. À cause du manque de possibilités significatives, ce sont les premiers terminaux à avoir reçu l'appellation "simple" (dumb). Ce genre d'interface terminale (l'utilisation d'un type de terminal appelé "dumb") est quelque fois utilisé de nos jours quand l'ordinateur ne peut pas déterminer avec quelle sorte de terminal il communique.

7.3 Séquences d'échappement et codes de contrôle (introduction)

Les terminaux possèdent beaucoup de possibilités dont certaines sont toujours présentes ; pour les autres, l'ordinateur doit envoyer des commandes au terminal afin de modifier ou activer ces possibilités. Mettre en oeuvre toutes ces possibilités sous le contrôle d'un ordinateur nécessite la mise en place de codes spéciaux pour que l'ordinateur puisse dire au terminal ce qu'il doit faire. Il y a deux grandes sortes de codes : les séquences d'échappement et les code de contrôle (caractères de contrôle). Il y a bien plus de séquences d'échappement que de codes de contrôle.

Codes de contrôle

Les codes de contrôle (ou caractères de contrôle) sont constitués des 32 premiers octets de l'alphabet ASCII. Ils comprennent les codes suivants : retour chariot (curseur à l'extrémité gauche), saut de ligne (curseur une ligne vers le bas), retour en arrière, caractère d'échappement, tabulation et sonnette. Ils ne s'impriment normalement pas sur l'écran. Il y a souvent une commande que vous pouvez envoyer à votre terminal qui fera qu'ils seront affichés quand le terminal les recevra. On l'appelle parfois "Contrôles d'affichage" ou "Moniteur". Si vous faites ceci, l'affichage aura l'air légèrement dans le désordre puisque les séquences d'échappement, qui commencent toutes par le caractère de contrôle ESC (escape, échappement), ne seront plus exécutées. Les mots qui devraient apparaître en haut ou en bas de l'écran apparaîtront à d'autres endroits. Les séquences d'échappement pour repositionner le curseur s'afficheront sur l'écran mais le curseur ne se déplacera pas vers la destination indiquée par la séquence d'échappement.

Séquences d'échappement

Puisque qu'il n'y pas assez de codes de contrôle pour tout faire (et pour une raison ou pour une autre, ils ne sont pas tous utilisés), on utilise de nombreuses séquences d'échappement. Elles sont constituées du caractère de contrôle d'échappement (ESC) suivi d'une séquence de caractères ordinaires. En recevant un caractère d'échappement, le terminal examine les caractères suivants pour interpréter la séquence et exécuter la commande voulue par l'ordinateur. Une fois que la fin d'une séquence valide est reconnue, les caractères suivants s'affichent simplement à l'écran (sauf s'il s'agit de codes de contrôle ou de séquences d'échappement supplémentaires). Certaines séquences d'échappement peuvent prendre des paramètres (ou arguments) comme les coordonnées écran pour déplacer le curseur. Les paramètres font partie de la séquence d'échappement. Une liste des séquences d'échappement se trouve sur le Web pour certains terminaux, mais c'est un peu brutal.

Une liste des séquences d'échappement pour votre terminal devrait se trouver dans le "manuel du programmeur" de votre terminal. À part pour de très vieux terminaux, il devrait y avoir deux ou trois cents séquences. Si vous n'avez pas de manuel, ce n'est pas facile de les trouver. Certaines séquences sont disponibles sur Internet. Un lien possible est liste des séquences d'échappement. En cherchant une séquence sur Internet (comme ESC[5m) vous pouvez tomber sur une longue liste.

Une autre façon de déterminer certaines séquences est de trouver la section termcap (terminfo) du terminal et de la décoder mentalement. Voyez terminfo et termcap (détails) dans ce document et/ou le manuel termcap sur Internet. Malheureusement, la section termcap (terminfo) d'un terminal ne liste souvent pas toutes les séquences d'échappement disponibles sur le terminal, mais heureusement, les plus importantes sont en général présentes.

7.4 Attributs d'affichage et cookies magiques

Les terminaux possèdent diverses méthodes pour générer des attributs de caractères tels que gras, vidéo inverse, soulignement, etc. L'utilisateur ne devrait pas s'inquiéter de la manière dont c'est géré, sauf que cela peut poser des problèmes pour certains vieux terminaux et il y a quelquefois une option à ce sujet dans le menu de configuration des terminaux plus récents.

La méthode des cookies magiques (magic cookie) est dépassée. C'est la méthode la plus simple (et la pire) pour définir des attributs : l'utilisation d'un octet particulier pour démarrer un attribut et un autre pour indiquer la fin de cet attribut. Par exemple, un octet magique "démarrer le soulignement" est placé juste devant le premier mot à souligner. Ces octets supplémentaires sont placés dans la mémoire de la page écran, comme les octets pour les caractères qui s'affichent normalement. Ceci peut cependant fausser le décompte du nombre de caractères par ligne puisque les caractères de cookies magiques non imprimables sont mélangés avec les autres caractères imprimables. Ceci peut dans certains cas poser des problèmes.

Une méthode plus efficace, qui utilise plus de mémoire, est d'associer un caractère d'attribut (ou un demi-caractère, etc.) à chaque caractère affiché. Cette méthode est utilisée par les cartes vidéo PC (pour le texte) pour les moniteurs PC courants.


Page suivante - Page précédente - Table des matières