Traducteur d’instructions graphiques du langage BASIC

Dans les années 80, le langage BASIC a donné lieu à d’innombrables dialectes, chaque machine étant livrée avec son propre « BASIC » et ses particularités. Les instructions les plus courantes sont en général standardisées (PRINT, INPUT, LET, IF…THEN, FOR…NEXT, GOTO, GOSUB) mais il en va tout autrement pour les instructions graphiques. Les modes graphiques sont également très variables d’une machine à l’autre, que ce soit le nombre de couleurs ou la définition de l’image.

Présentation de l’outil conv_bas_graphics.py

Cet article propose un outil écrit en Python qui va traduire les instructions graphiques d’un BASIC à l’autre. Il convertit également les coordonnées des points et des segments affichés, en tenant compte de la définition en x et y, et de la position de l’origine de l’axe des ordonnées (en haut ou en bas de l’écran).

Par exemple, ce programme peut convertir une instruction du BASIC Amstrad CPC 464 en mode 640×400 en instruction équivalente pour Apple II en mode haute résolution 280×192. Il faut entrer la commande suivante dans un shell (Linux, Unix ou Windows) :

./conv_bas_graphics.py -i cpc/locomotive/640x400 -o appleII/applesoft/hres -t ex1-cpc.bas > ex1-a2.bas

conv_bas_graphics.py est le nom du programme de conversion.
L’option -i permet de spécifier la plate-forme du BASIC source, sous la forme d’une chaîne de caractères « nom_ordinateur/nom_BASIC/mode_graphique » (ici l’ordinateur est cpc, utilisant le locomotive BASIC en mode 640×400).
L’option -o spécifie la plateforme de sortie suivant la même syntaxe (il s’agit ici d’un Apple II, BASIC Applesoft et mode haute résolution).
L’option -t permet de tronquer l’image de sortie en limitant les coordonnées des points aux valeurs min et max en x ou y.

Voici le résultat de cette conversion avec un programme très simple. La commande du CPC 464 PLOT affiche un point aux coordonnées spécifiées, et correspond à la commande HPLOT du BASIC Applesoft en mode HRES. La commande DRAW trace un segment depuis le dernier point affiché.

10 PLOT 50,100   ->   10 HPLOT 22,144
20 DRAW 500,250  ->   20 HPLOT TO 219,72

Voici le lien pour télécharger l’utilitaire de conversion :

Exemple de conversion d’une image d’intro

Voici un dernier exemple tiré de l’introduction du château enchanté. Le fichier source (BASIC du CPC464) est img-chateau-cpc.txt.

Après avoir converti ce fichier source en fichier compatible Applesoft en HGR, voici l’image que l’on obtient :

Image convertie pour Apple II
Comment ajouter de nouvelles plate-formes ?

Dans conv_bas_graphics.py, il suffit de compléter le dictionnaire PLATFORM_GRAPHIC_PARAM avec comme clé la plate-forme définie par une chaîne de caractères « nom_ordinateur/nom_basic/mode_graphique » et les paramètres requis sous la forme d’une liste (voir le commentaire dans le fichier python).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *