Particularités de l’Atari BASIC

LES BRANCHEMENTS ET LA GESTION DES ERREURS

Sauts et subroutines

Pas de surprise ici, les commandes GOTO, GOSUB, ON...GOTO et ON...GOSUB sont bien présentes. Une particularité intéressante cependant ; les numéros de lignes peuvent être contenus dans des variables. Ceci permet d’améliorer la lisibilité du code et de le rendre plus évolutif.

Dans l’exemple suivant, la sous-routine d’effacement de l’écran est placée à la ligne 10000, et cette valeur est mémorisée dans une variable CLS. L’appel à la sous-routine se fait par GOSUB CLS.

10 CLS=10000
100 GOSUB CLS
110 PRINT "DEBUT DE L'AVENTURE"
150 END
9999 REM --- EFFACE ECRAN ---
10000 PRINT CHR$(125)
10010 RETURN

Si par la suite vous déplacez cette sous-routine à la ligne 20000, les modifications nécessaires se limiteront à la variable CLS. L’impact sur le code est donc mieux maîtrisé.

Gestion des erreurs

Il est possible de traiter les exceptions grâce à la commande TRAP. En cas d’erreur, l’exécution du programme est déroutée vers la ligne spécifiée après TRAP.

10 TRAP 10000 : REM En cas d'erreur, saute à la ligne 10000
...
...
...
10000 REM Traitement des erreurs
10010 ERR = PEEK(195) : REM numéro d'erreur
10020 ERL = PEEK(187)*256+ PEEK(186) : REM ligne de l'erreur
...

Le numéro d’erreur est récupéré par PEEK(195), tandis que le numéro de ligne où s’est produite l’erreur est obtenu par PEEK(187)*256+ PEEK(186). Il est ensuite possible de procéder au traitement spécifique de l’erreur.

TRAP reste valide jusqu’à ce qu’une erreur apparaisse. Il faudra donc penser à redéclarer une instruction TRAP avant de reprendre le cours normal du programme (si ceci est nécessaire).

Enfin, spécifier un numéro de ligne supérieur à 32767 après TRAP permet de désactiver la commande.