Le Basic du Commodore 64
Définition des variables
Il existe 3 types de variables:
- Décimale (var), plus exactement un nombre à virgule flottante…
- Entière (var%)
- Caractère (var$)
Pour définir des tableaux de variables, on indiquera simplement entres parenthèses la taille de la variable.
Note:
- Pour les tableaux pour lesquels il y a plus de 11 éléments, il faudra passer par la commande DIM
- Pour les tableaux à 2 dimensions, il suffit d'indiquer var(n,m)
Il y a 3 variables réservées:
- ST - Information sur l'état (Status) en input/output.
- TI - Horloge interne, maj tous les 1/60ième de seconde (démarre à 0 lors de la mise sous tension de la machine).
- TI$ - Le temps (Time), au format HHMMSS, est à 0 à l'allumage de la machine.
Les différents périphériques (device)
Numéro |
Périphérique |
Commandes |
0 |
Ecran |
|
1 |
Cassette |
0 - read, 1 - write, 2 - write et fermeture du fichier |
4 |
Imprimante |
Commandes spécifiques imprimantes |
8 |
Disquette |
Référence buffer |
Les opérateurs
Arithmetiques
+ addition
- subtraction
* multiplication
/ division
^ exponentiel.
Comparateurs
= égal à
< inférieur à
> supérieur à
<= inférieur ou égal à
>= supérieur ou égal à
<> différent de
Logiques
AND pour et, OR pour ou et NOT pour NON
Commandes
ABS
Retourne la valeur absolue d'un nombre.
Syntaxe :
ABS(n)
Eemple :
PRINT ABS (-3)
ASC
Retourne le code ASCII du premier caractère d'une chaine de caractères.
Syntaxe :
ASC("Mon texte")
Exemple :
PRINT ASC("A")
donne 65 en résultat
Voir aussi CHR$
ATN
Retourne l'arc tangente en radian
Syntaxe :
ATN(n)
CHR$
Retourne le caractère correspondant au code ASCII passé en paramètre.
Syntaxe :
CHR$(n)
Exemple :
PRINT CHR$(65)
Voir aussi ASC
CLOSE
Fermeture de fichier ouvert sur un périphérique. N et le numéro de canal (équivalent au "handle" sur les autres systèmes).
Syntaxe :
CLOSE n
Voir aussi OPEN
CLR
Effacement des variables, tableaux, fonctions, …
Syntaxe :
10 CLR
CMD
Permet de rediriger la sortie standard (l'écran) vers un autre périphérique. Cette commande ne fonctionne qu'avec les commandes d'affichage du BASIC.
Syntaxe :
CMD n ou n est le numéro du channel (handle pour les autres machines).
Exemple :
Rediriger la sortie standard vers l'imprimante pour imprimer le programme:
OPEN 1,4
CMD 1
LIST
CLOSE 1
CONT
Continuer l'exécution d'un programme suite à un arrêt par la touche STOP, ou par les commandes END ou STOP.
Syntaxe :
CONT
COS
Fonction COSINUS (Valeur en radian).
Syntaxe :
COS(n)
DATA
Liste de données qui peuvent être de type entier, décimal ou caractère. Le séparateur est la virgule. Utilisez la commande READ pour relire ces données (Lecture séquentielle).
Syntaxe :
10 DATA val[,val[,val[,...]]]
Exemple :
10 DATA 1,10,13,12
ou
10 DATA "COUCOU","BONJOUR"
ou
10 DATA 10,"COUCOU"
DEF FN
Définir une fonction.
Syntaxe :
DEF FN xy = formule
Avec le xy le nom de la fonction, x est un caractère, y qui peut être non renseigné est soit un caractère ou un nombre.
Exemple:
10 DEF FN CARRE(X) = X * X
20 PRINT FN CARRE(2)
Voir aussi FNxx.
DIM
Dimensionner un tableau. (Obligatoire pour tous tableaux de plus de 11 éléments), il n'est pas nécessaire sinon, le système dimensionnant automatiquement un tableau à une taille de 10 (qui fait 11 éléments de 0 à 10).
Remarque : DIM A(40) va créer 41 éléments dans le tableau.
Syntaxe :
DIM var(n)
DIM var%(n)
DIM var$(n)
Exemple :
DIM A(50)
DIM B(30,10), C(50)
END
Voir aussi STOP
EXP
Fonction exponentielle
Syntaxe :
EXP (n)
Voir aussi LOG
FN xx
Retourne la valeur d'une fonction définie par l'utilisateur.
Syntaxe :
FN xx(x)
Voir aussi DEF FN
FOR
Boucler de x à y avec un pas de p (qui peut-être signé)
Syntaxe :
FOR I = X TO Y [STEP P]
Exemple:
FOR I=0 TO 10 STEP 2
PRINT I
END
Ou
FOR I=10 TO 0 STEP -2
PRINT I
END
FRE
Retourne le nombre d'octets disponibles. Le paramètre ne sert à rien.
Syntaxe :
FRE(n)
GET, GET #
Lecture d'un caractère en provenance du clavier ou lecture d'un caractère en provenance d'un périphérique.
Syntaxe :
GET var$ pour la lecture clavier
GET #n,var$ pour la lecture d'un caractère en provenance d'un périphérique
Exemple:
10 GET X$
20 PRINT X$
Voir aussi OPEN, CLOSE, INPUT, INPUT#
GOSUB
Appel de sous procédure. N étant le numéro de ligne. La fonction RETURN dans cette sous procédure permettra de reprendre après la commande gosub.
Syntaxe :
GOSUB n
Exemple :
10 GOSUB 100
20 PRINT "LIGNE 20"
30 END
100 PRINT "LIGNE 100"
110 RETURN
Voir aussi RETURN, GOTO, GO TO, ON
GOTO
Aller à la ligne n.
Syntaxe :
GOTO n
Ou
GO TO n
Exemple:
10 GOTO 40
20 PRINT "LIGNE 20"
30 END
40 PRINT "LIGNE 40"
50 GOTO 20
IF THEN
Si la condition est vérifiée, alors exécution de la commande.
Syntaxe:
IF condition THEN commande.
Exemple :
10 A=1
20 IF A=1 THEN GOTO 40
30 END
40 PRINT "COUCOU"
Remarque :
La ligne 20 aurait pu être écrite de la manière suivante:
20 IF A=1 THEN 40
Voir aussi ON
INPUT, INPUT #
Permettre la saisie d'une chaîne de caractères ou plusieurs chaînes de caractères.
Syntaxe :
INPUT "Texte";variable[,variable[…]]
INPUT#device,variable
Exemple :
INPUT "NOM";A$
Ou
10 INPUT "NOM, PRENOM";A$,C$
Ou pour lire une chaîne de caractères en provenance d'un device
10 INPUT #1,A
Voir aussi OPEN, CLOSE, GET, GET #
INT
Retourne le nombre entier immédiatement inférieur à celui passé en paramètre.
Donc : 0.9 donnera 0, de même que 0.1, et -0.9 donnera -1 (-1 est bien inférieur à -0.9).
Syntaxe :
INT(n)
Exemple :
PRINT INT(0.9)
LEFT$
Retourne les n caractères qui se trouvent le plus à gauche dans la chaîne de caractères passée en paramètre (cette chaîne pouvant être une variable ou du texte).
Syntaxe :
LEFT$(var$,n)
Exemple :
PRINT LEFT$("COUCOU TOUT LE MONDE",6)
LEN
Retourne la longueur d'une chaîne de caractères.
Syntaxe :
LEN(var$)
Exemple:
PRINT LEN("COUCOU TOUT LE MONDE")
LET
Affecter une valeur à une variable. Ca ne sert à rien (c'est pour cela que je met LET entre crochet !), sauf rendre le code plus lisible (du moins, c'est ce que l'on prétendait à l'époque).
Syntaxe:
[LET] var = valeur ou formule
Exemple :
LET A=1
LIST
Affiche les lignes d'un programme en mémoire
Syntaxe:
LIST [n][-][m]
Exemple:
LIST pour afficher toutes les lignes du programme
LIST 10 pour afficher la ligne 10
LIST 100- pour afficher à partir de la ligne 100 jusqu'à la fin du programme
LIST -100 pour afficher du début à la ligne 100
LIST 100-200 pour afficher les lignes de 100 à 200.
LOAD
Charger un programme en mémoire (en provenance d'une cassette ou d'une disquette).
Syntaxe :
LOAD ["nom du fichier"][,device[,option]]
Exemple :
Charger le prochain programme d'une cassette:
LOAD
Charger le premier programme d'une cassette, et le recharge en mémoire au même endroit qu'à l'origine (utile pour du code machine qui n'est pas relogeable (pb. d'adresse non en relatif).
LOAD "",1,1
Charger un programme nommé ESSAI d'une cassette:
LOAD "ESSAI"
Le même programme sur une disquette:
LOAD "ESSAI",8
Le premier programme sur disquette:
LOAD "*",8
Voir aussi SAVE
LOG
Fonction logarithme.
Syntaxe :
LOG (n)
Voir aussi EXP
MID$
Retourne la chaîne de caractères contenue dans var$, à la position n, pour une longueur m.
Syntaxe :
MID$(var$,n,m)
NEXT
A utiliser avec une commande FOR, permet de boucler sur le FOR en incrémentant, décrémentant la variable utilisée pour la boucle tant que la valeur indiquée après le TO n'est pas dépassée.
Syntaxe:
NEXT [var1,[var2[,…]]]
Exemple:
FOR T=1 TO 10
PRINT T
NEXT
FOR T=1 TO 10
PRINT T
NEXT T
FOR I=1 TO 10
FOR T=1 TO 10
PRINT T*I
NEXT
NEXT
FOR I=1 TO 10
FOR T=1 TO 10
PRINT T*I
NEXT T
NEXT I
Voir aussi FOR
NEW
Effacer un programme de la mémoire.
Syntaxe :
NEW
ON
Suivant la valeur, aller à la procédure (ou sous procédure).
Remarque:
Si la valeur testée = 0 ou est plus grand que le nombre de GOTO ou GOSUB, le système passe à la ligne suivante.
Si la valeur est négative, alors erreur.
Sinon, pour X = 1, alors le système va "sauter ou aller" à la ligne correspondant au premier paramètre, X = 2, alors deuxième paramètre, …
Syntaxe:
ON var GOTO ligne[,ligne[,ligne[,...]]]
ON var GOSUB ligne[,ligne[,ligne[,...]]]
Voir aussi IF
OPEN
Ouverture permettant l'accès à un device (périphérique)
Syntaxe :
OPEN channel,device[,paramètre[,paramètre]]
Exemple : Cf. Les différents périphériques pour l'explication sur les valeurs passées
Ouvrir l'accès à l'écran:
OPEN 1,0
Ouvrir l'accès en lecture sur le lecteur de cassette sur le fichier "essai":
OPEN 1,1,0,"ESSAI"
Ouvrir l'accès à l'imprimante:
OPEN 1,4
Enfin sur une disquette:
OPEN 1,8,15
Voir aussi : GET#,PRINT#,CLOSE,STATUS
PEEK
Retourne la valeur stockée à l'adresse n.
Syntaxe:
PEEK (n)
Voir aussi POKE
POKE
Stocker une valeur (8bits) à une adresse
Syntaxe:
POKE addresse, valeur
Voir aussi : PEEK
POS
Retourne la position d'affichage du prochain caractère en abscisse.
Syntaxe :
POS (x)
PRINT,PRINT#
Afficher un texte, le contenu d'une variable ou d'une adresse, un résultat de calcul, un nombre.
Deux caractères spéciaux peuvent être utilisés : la virgule , ou le point virgule.
Ces caractères servant lors de l'affichage de deux variables par exemple.
La virgule permet de faire des tabulations entre deux affichages.
Le point virgule affiche le caractère après celui qui vient d'être affiché.
Exemple:
10 A=10
20 B=20
30 PRINT "COUCOU"
40 PRINT "A=";A
50 PRINT "LES VALEURS DE A ET B SONT",A,B
60 PRINT A+B
70 PRINT A;
80 PRINT B
Envoyer un texte "ESSAI" sur le canal 1
PRINT#1, "ESSAI"
READ
Lecture de données séquentiellement. Ces données proviennent des lignes avec la commande DATA.
Remarque : READY. Ressemble à READ Y, voilà pourquoi il y a une erreur si on valide sur l'écran la ligne READY.
REM
Les remarques dans un code. Ne sert qu'aux développeurs.
Exemple :
10 REM CECI EST UN COMMENTAIRE
RESTORE
Utilisée avec une commande READ, cette commande permet de réinitialiser le pointeur de lecture des datas au début.
(Dommage, on ne peut pas y indiquer un numéro de ligne.)
RETURN
Fin de la sous procédure, retour à la procédure appelante.
RIGHT$
Retourne les n caractères le plus à droite de la chaîne de caractères passée en paramètre.
Syntaxe:
RIGHT$(var$,n)
RND
Retourne un nombre aléatoire. Ce nombre étant compris entre 0 et 1. Une valeur négative passée en paramètre va réinitialiser le générateur. Les autres valeurs sont sans effet.
Syntaxe :
RND(x)
Exemple :
PRINT RND(0)
RUN
Exécute les instructions d'un programme BASIC. On peut indiquer un numéro de ligne pour ipréciser la ligne où l'on veut effectivement démarrer le programme.
Syntaxe :
RUN [n]
SAVE
Sauver des données sur cassette (par défaut) ou disquette.
Cf. les différents périphériques
Syntaxe :
SAVE [nom du fichier[,device,[options]]]
Exemple:
Sauver le programme sans nom sur une cassette:
SAVE
Avec un nom:
SAVE "ESSAI"
Avec un nom qui se trouve dans une variable:
SAVE A$
Avec un nom sur disquette:
SAVE "ESSAI",8
Avec l'option end of tape sur cassette:
SAVE "ESSAI",1,1
Voir aussi LOAD
SGN
Permet de déterminer le signe d'un nombre…en retournant un nombre signé !
-1 si négatif, 1 si positif, 0 si nul.
Syntaxe :
SGN(n)
Exemple :
PRINT SGN(-3)
PRINT SGN(3)
SIN
Fonction sinus, valeur en radian
Syntaxe :
SIN(x)
SPC
Utilisée avec la fonction PRINT pour afficher un certain nombre d'espace.
Syntaxe:
SPC(n)
SQR
Fonction racine carré
Syntaxe:
SQR(n)
STATUS
Retourne l'état du dernier périphérique utilisé
Tableau des valeurs possibles:
Bit n° |
Cassette R |
Serial Bus R/W |
Cassette Verify + Load |
0 |
time out en écriture |
||
1 |
time out en lecture |
||
2 |
Bloque trop court |
Bloque trop court |
|
3 |
Bloque trop long |
Bloque trop long |
|
4 |
Erreur en lecture |
Erreur |
|
5 |
Erreur checksum |
Erreur checksum |
|
6 |
Fin du fichier |
EOI |
|
7 |
Fin de la cassette |
Périphérique absent |
Fin de la cassette |
Pour une fin de fichier atteinte, le code retour sera 64 (bit 6 positionné).
Que vous coderez de la manière suivante:
IF STATUS AND 64 THEN ...
STOP
Similaire à la commande END, celle-ci stop temporairement le programme, ce qui permet de visualiser le contenu de variables par exemple. La commande CONT permettant de continuer le programme après le STOP.
STR$
Conversion d'un nombre en chaîne de caractères.
Syntaxe :
STR$(n)
Voir aussi VAL
SYS
Exécute le code machine à partir d'une adresse.
Syntaxe :
SYS n
Voir aussi USR
TAB
A utiliser avec la commande PRINT. Tabulation…
Syntaxe :
TAB(n)
TAN
Fonction tangente.
Syntaxe :
TAN(x)
USR
Exécution d'un code machine en lui passant un paramètre numérique.
Désolé, mais je ne l'ai jamais utilisé…
Le programme machine exécuté est celui dont l'adresse est indiqué dans le vecteur 785 et 786 (16 bits oblige…). N'oubliez pas : partie basse puis partie haute. La valeur numérique est un nombre flottant passé dans une zone mémoire qui commence à l'adresse 97.
Syntaxe:
USR(n)
Voir aussi SYS
VAL
Retourne la valeur d'une expression passée en paramètre.
Syntaxe:
VAL(var$)
Voir aussi STR$
VERIFY
Cette commande permet de vérifier un programme en mémoire avec celui enregistré. Très utile surtout après avoir fait un save, afin de vérifier que l'enregistrement a bien fonctionné.
Syntaxe :
VERIFY ["Nom du fichier"][,device]
Exemple :
Pour vérifier sur une cassette:
VERIFY"ESSAI"
Pour vérifier sur une disquette:
VERIFY"ESSAI",8
WAIT
Trois paramètres: Valaur1 pour la mémoire, valeur2 pour le ET logique, et (non obligatoire) valeur3 pour un ou exclusive:
Le contenu de la mémoire passé en paramètre (valeur1) subit quelques opérations logiques:
(contenu mémoire ou exclusive valeur2) et valeur1
Si le résultat est nul, alors attendre. Sinon, exécution de la ligne suivante.
Syntaxe:
WAIT X,Y[,Z]