Image non trouvée !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)

Voir aussi COS, SIN, TAN

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

Voir aussi END, STOP

 

COS

Fonction COSINUS (Valeur en radian).

Syntaxe :

COS(n)

Voir aussi ATN, SIN, TAN

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"

Voir aussi READ, RESTORE

 

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

Fin du programme.

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

Voir aussi GOSUB, RETURN, ON

 

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)

Voir aussi MID$, RIGTH$

 

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)

Voir aussi LEFT$, RIGTH$

 

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.

Voir aussi DATA, RESTORE

 

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.)

Voir aussi READ, DATA

 

RETURN

Fin de la sous procédure, retour à la procédure appelante.

Voir aussi GOSUB, GOTO

 

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)

Voir aussi LEFT$, MID$

 

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)

Voir aussi COS, ATN, TAN

 

SPC

Utilisée avec la fonction PRINT pour afficher un certain nombre d'espace.

Syntaxe:

SPC(n)

Voir aussi PRINT, TAB

 

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.

Voir aussi CONT, END

 

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)

Voir aussi SPC, PRINT

 

TAN

Fonction tangente.

Syntaxe :

TAN(x)

Voir aussi ATN, COS, SIN

 

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]