HOWTO Terminal Texte pour Linux: Quelques détails sur le fonctionnement des terminaux
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.
[22 février 2002, JDNet]
|