Triceraprog
La programmation depuis le Crétacé

Les commandes graphiques en BASIC du VG5000µ ()

Une fois le VG5000µ, on pourrait imaginer afficher des formes à l'écran en allumant des pixels avec des couleurs prises dans une palette donnée. Au même moment, c'est ce que font d'autres ordinateurs sur le marché. Avec de grandes limitations, certes, mais des commandes en BASIC sont fournies à l'utilisateur pour afficher des points, voires même tracer des lignes.

Il n'en est rien.

Les commandes en BASIC méritent d'être étudiées avant de se lancer. La manuel d'utilisation consacre quatre pages d'explications à l'affichage graphique et auront pu, je pense, décourager tous ceux qui ne cherchaient pas un minimum à conduire quelques expériences. Par chance, avoir un ordinateur à cette époque, c'est avoir un peu l'esprit curieux.

Deux commandes, CURSORX et CURSORY, suivies d'une nombre, permettent de placer la position courante d'affichage sur l'espace à l'écran, divisé en 25 lignes de 40 colonnes. Les caractères affichés avec PRINT qui suivent une changement de coordonnée commenceront à l'endroit indiqué. Tout va bien.

La commande d'effacement d'écran, qui s'occupe aussi de choisir une couleur de fond et une couleur d'encre, se nomme INIT. C'est l'équivalent d'un CLS sur d'autres machines.

Une commande permet de geler le défilement d'écran et une autre de le reprendre (PAGE et SCROLL). L'une permet d'empêcher le rafraichissement de l'écran et l'autre de le reprendre (STORE et SCREEN). Une autre permet de contrôler le taux de rafraichissement de l'écran (DISPLAY). Ça fait beaucoup de commandes de contrôle de la surface d'affichage. Ce sont de toutes petites commandes qui ne prennent pas beaucoup de place dans le système, mais était-ce bien utile d'avoir tout ce monde ?

À vrai dire, la seule commande d'affichage est PRINT. PRINT est implémentée de manière assez simple : une fois les paramètres évalués, chaque caractère à traiter est pris un par un et affiché à l'emplacement du CURSOR. Puis le curseur est avancé d'une position.

L'implémentation vérifie au préalable passage que le caractère est bien affichable, ou bien s'il mérite un traitement spécial, ou bien si le caractère n'est pas affichable ; auquel cas ce dernier est remplacé par le caractère d'espacement.

Les caractères affichables de PRINT peuvent être séléctionnés dans quatre fontes différentes. La première contient les lettres, chiffres, ponctuations et autre caractères textuels. La seconde contient des caractères semi-graphique. Les deux autres fontes sont entièrement modifiables par l'utilisateur.

Ces caractères semi-graphiques sont une première solution pour tracer des images. Les pixels sont grossiers et arrangés sur une grille de 2 par 3, ce qui amène une résolution d'écran de 80 par 75. Pas fameux.

Caractères semi-graphiques du VG5000µ

L'utilisation des caractères programmables est la seconde manière d'afficher des pixels à ĺ'écran. Cette méthode est présentée rapidement dans le manuel et est similaire à celle que l'on retrouve sur l'Amstrad CPC par exemple. Grace à un encodage d'une grille de 8 pixels par 10, un caractère peut être redéfini, puis affiché avec PRINT, après sélection de la bonne fonte.

Ce type d'encodage sort du cadre de cet article, mais voilà ce que cela donne :

  XXXX   4+8+16+32  =  60 = 3C
 X    X  2+64       =  66 = 42
X X  X X 1+4+32+128 = 165 = A5
X      X 1+128      = 129 = 81
X  XX  X 1+8+16+128 = 153 - 99
X X  X X 1+4+32+128 = 165 = A5
X      X 1+128      = 129 = 81
 X    X  2+64       =  66 = 42
  XXXX   4+8+16+32  =  60 = 3C
         0          =   0 = 00

SETEG 65,"3C54A58199A581423C00"
EG 0,6,0:PRINT"A";

  XXXX   4+8+16+32  =  60 = 3C
 X    X  2+64       =  66 = 42
X X  X X 1+4+32+128 = 165 = A5
X      X 1+128      = 129 = 81
X X  X X 1+4+32+128 = 165 = A5
X X  X X 1+4+32+128 = 165 = A5
X  XX  X 1+8+16+128 = 153 = 99
 X    X  2+64       =  66 = 42
  XXXX   4+8+16+32  =  60 = 3C
         0          =   0 = 00

SETEG 66,"3C42A581A5A599423C00"
EG 0,6,0:PRINT"B";

Smileys avec le VG5000µ

Voilà avec quoi devait jouer un utilisateur du VG5000µ n'ayant sous les yeux que le seul manuel fourni avec l'ordinateur. Avec des caractères de 8 pixels par 10, on atteint une résolution potentielle de 320 par 250... mais avec de grosses limitations.

Est-ce qu'il serait néanmoins possible de tracer des lignes ? Oui, surement, nous verrons ça plus tard.