Particularités de l’Atari BASIC

LES VARIABLES

Noms et types

Les noms de variables peuvent être longs, voire très longs (je ne connais pas la limite) :

VARIABLEAVECUNNOMSUPERLONG = 5

READY
PRINT VARIABLEAVECUNNOMSUPERLONG
5

Seuls deux types de variables sont gérés :

  1. Type numérique : les variables peuvent prendre des valeurs entières ou décimales ;
  2. Type chaînes de caractères.

Il n’y a pas de type « entier » comme en BASIC Applesoft (où les noms de variables entières finissent par %).

X = 10.32    : REM Type Numérique avec valeur décimale
Y = 4        : REM Type Numérique avec valeur entière
A$ = "TEXT"  : REM type chaine

Chaines de caractères

La gestion des chaînes de caractères diffère fortement du BASIC Microsoft. En Atari BASIC, il est nécessaire de déclarer la taille d’une variable de type chaîne, grâce à la commande DIM :

DIM A$(5)    : REM définition d'un variable de type "chaine" de 5 caractères
A$ = "ATARI" : REM affectation d'une chaine de 5 caractères

Si vous tentez d’affecter une chaîne de caractère plus longue que la taille déclarée par DIM, les caractères en excès seront ignorés :

DIM A$(5)
A$ = "ATARI800XL" : PRINT A$
ATARI

Pour manipuler les chaînes de caractères, les commandes MID$, LEFT$ et RIGHT$ n’existent pas et sont inutiles.

En effet, en BASIC Atari, A$(I,J) désigne la portion de la chaine comprise entre le Ième et le Jème caractère (inclus), et non pas un élément d’un tableau de chaînes de caractères à 2 dimensions comme c’est le cas en BASIC Microsoft.

Il n’est pas possible d’utiliser des tableaux de chaînes de caractères en BASIC Atari, ce qui est une limitation (mais qui peut être contournée).

DIM A$(10)
A$ = "ATARI800XL"

PRINT A$
ATARI800XL

PRINT A$(6,6) : REM Affiche le caractère en 6ème position : 8
8

PRINT A$(1,1) : REM Affiche le premier caractère : A
A

PRINT A$(6)   : REM affiche du 6ème caractère jusqu'à la fin
800XL

PRINT A$(4,7)  : REM du 4ème au 7ème caractère
RI80

Lorsque vous utilisez la syntaxe A$(I,J) veillez à ce que I et J restent compris entre 1 et LEN(A$), sinon l’interpréteur BASIC générera une erreur 5.

Il est également possible d’utiliser cette syntaxe pour l’affectation :

DIM A$(15) : A$ = "ATARI800" : PRINT A$
ATARI800

A$(6,8)=" ST" : PRINT A$
ATARI ST

La commande LEN donne la longueur de la chaîne (et pas l’espace mémoire réservé par DIM) :

DIM A$(15) : A$ = "APPLE"
PRINT LEN(A$) : REM affiche 5 et pas 15
5

Enfin, pour concaténer deux chaînes de caractères :

DIM A$(20) : A$ = "ATARI" : PRINT A$
ATARI

REM Concaténation :
A$(LEN(A$)+1)=" 800XL"

PRINT A$
ATARI 800XL

Il faut prendre garde à ce que la variable A$ ait l’espace mémoire suffisant pour pouvoir mémoriser les caractères supplémentaires.