Graphiques Tektronix4014 en BASIC
Graphiques Tektronix4014 en BASIC
Cette page explique comment produire des graphiques sur un système de type Unix en émettant des caractères dans une fenêtre XTerm. Elle utilise le langage BASIC pour les exemples. Ils ont été testés avec les interpréteurs Bywater Basic, bas et blassic mentionnés dans le billet précédent. La méthode est adaptable à d'autres langages de programmation pourvu qu'on puisse émettre des caractères de code ASCII donné.Xterm
Dans l'environnement graphique X Window System, le programme xterm permet l'émulation des terminaux DEC VT100 (texte) et Tektronix 4014 (graphique). La commande xterm fait démarrer le programme xterm en mode VT100, et la commande xterm -t en mode Tektronix 4014. Il est possible de passer d'un mode à l'autre en envoyant des caractères de contrôle: en envoyant la séquence ESC[38?h on bascule du mode VT100 au mode Tektronix4014, et en envoyant la séquence ESC ETX on repasse du mode Tektronix4014 au mode VT100.Tektronix4104
Les terminaux Tektronix4014 étaient des terminaux graphiques vectoriels à tube cathodique. Ils étaient commandés au moyen de séquences de caractères de contrôle. Le manuel (fichier PDF de 7Mo) décrit ces séquences en détail. La séquence pour effacer l'écran est ESC FF. Le caractère de contrôle ESC a la code ASCII 27, et le caractère FF le code ASCII 12. En Basic on émet ces caractères avecChangement de la taille des fontes
Sequence | Taille de fonte | Nombre de caractères par ligne | Nombre de lignes |
ESC 8 | Grands caractères | 74 | 35 |
ESC 9 | Caractères moyens | 81 | 38 |
ESC : | Caractères petits | 121 | 58 |
ESC ; | Caractères très petits | 133 | 64 |
Tracé de points
L'écran du Tektronix 4010 a une résolution de 1024x768, avec l'origine des coordonnées située au coin inférieur gauche de la fenêtre. Les coordonnées d'un point sont donc encodées au moyen de deux entiers de 10 bits, le premier, x, représentant l'abcisse et second, y l'ordonnée. Pout tracer un point aux coordonnées (x,y) il faut envoyer une séquence formée de:- FS (Code ascii 28)
- un caractère de code ASCII (32 + les 5 bits les plus significatifs de y)
- un caractère de code ASCII (96 + les 5 bits les moins significatifs de y)
- un caractère de code ASCII (32 + les 5 bits les plus significatifs de x)
- un caractère de code ASCII (64 + les 5 bits les moins significatifs de x)
Tracé de segments
Le tracé de segments s'effectue de manière analogue au tracé de points. Pour tracer un segment allant du point (x1,y1) au point (x2,y2) on doit d'abord indiquer l'origine du segment (x1,y1) en envoyant la séquence:- GS (Code ASCII 29)
- un caractère de code ASCII 32 + les 5 bits les plus significatifs de y1
- un caractère de code ASCII 96+ les 5 bits les moins significatifs de y1
- un caractère de code ASCII 32 + les 5 bits les plus significatifs de x1
- un caractère de code ASCII 64+ les 5 bits les moins significatifs de x1
- un caractère de code ASCII 32 + les 5 bits les plus significatifs de y2
- un caractère de code ASCII 96+ les 5 bits les moins significatifs de y2
- un caractère de code ASCII 32 + les 5 bits les plus significatifs de x2
- un caractère de code ASCII 64+ les 5 bits les moins significatifs de x2
- un caractère de code ASCII 32 + les 5 bits les plus significatifs de y3
- un caractère de code ASCII 96+ les 5 bits les moins significatifs de y3
- un caractère de code ASCII 32 + les 5 bits les plus significatifs de x3
- un caractère de code ASCII 64+ les 5 bits les moins significatifs de x3
- GS (Code ASCII 29)
- un caractère de code ASCII 32 + les 5 bits les plus significatifs de y1
- un caractère de code ASCII 96+ les 5 bits les moins significatifs de y1
- un caractère de code ASCII 32 + les 5 bits les plus significatifs de x1
- un caractère de code ASCII 64+ les 5 bits les moins significatifs de x1
type de traits | séquence |
Traits pleins (solid) | ESC h ou ESC ` ou ESC p |
Pointillés (dotted) | ESC a ou ESC i ou ESC q |
traits mixtes (dash-dotted) | ESC b ou ESC j ou ESC r |
traits interrompus courts (short-dashed) | ESC c ou ESC k ou ESC s |
traits interrompus longs (long-dashed) | ESC dou ESC l ou ESC t |
Coordonnées relatives (Incremental plot mode)
Pour dessiner en coordonnées relatives dans la fenêtre Textronix 4014, il faut envoyer une séquence:- caractère spécial RS (code ASCII 30)
- caractère P (beam on) pour afficher un point ou caratère espace( beam off) pour déplacer le curseur sans rien tracer.
- une suite de caractères A,B,D,E,F,H,I,J représentant les déplacements relatifs (voir la figure pour les déplacements)
mode GIN (Graphical INput)
Dans ce mode, le pointeur de souris prend dans le fenêtre Tektronix la forme d'une croix ("crosshair" = collimateur). Lorsqu'on clique ou presse une touche à l'intérieur de la fenêtre Tektronix, une chaîne de caractère est émise qui contient un premier caractère indiquant la touche ou le bouton de la souris qui a été pressé et quatre autres caractères qui indiquent quelle était la position du pointeur de souris lorsqu'on a cliqué ou pressé une touche.
On entre dans le mode GIN en envoyant la séquence ESC+SUB (chr$(27)+chr$(26) voire ligne 90). Le premier caractère contient la touche enfoncée. Si on a cliqué sur un bouton de la souris, le premier caractère a le code ASCII = 128 + ASC("l") si on a cliqué avec le bouton de gauche (Left), le code ASCII=128+ASC("m") si on a cliqué avec le bouton du milieu (Middle) et le code ASCII=128+ASC("r") si on a cliqué avec le bouton de droite (Right). En Bywater BASIC, un code ASCII supérieur à 128 devient un code ASCII négatif, ce qui explique la ligne 140. La formule donnant les coordonnées correspond aux lignes 150-190.
Références
- 4010 and 4010-1 Computer Display Terminal User's Manual Tektronix Inc. (1981)
- 4014 and 4014-1 Computer Display Terminal User's Manual Tektronix Inc. (1979)
- Roger Till, General purpose graphical output routines in Basic for use with the Tektronix 4010 Geological reports / University of Reading -- no. 7 (1976) ISBN 070490277X
Commentaires
Enregistrer un commentaire
Les commentaires seront rejetés.