Le Basic du 800XL

 

 

Ordre de priorité des opérateurs:

Remarque, les opérations entre parenthèses sont prioritaires. De même, des opérations dans un niveau plus profond de parenthèses seront prioritaires (principe utilisé en mathématique, ou tout ce qui est scientifique).

De la priorité la plus élevée à la moins élevée:

<,>,=,<=,>=,<>

Opérateurs relationnels utilisés dans les chaînes de carctères: inférieur strict, supérieur strict, égalité, inférieur ou égal, supérieur ou égal, différent. Ils ont le même ordre de priorité et sont exécutés de gauche à droite.

Le signe - unitaire (Ex. -1)

La puissance: ^

La multiplication: * ou la division: / , même ordre de priorité et sont exécutés de gauche à droite.

L'addition: + ou la soustraction: - , même ordre de priorité et sont exécutés de gauche à droite.

<,>,=,<=,>=,<>

Opérateurs relationnels utilisés dans les expressions numériques: inférieur strict, supérieur strict, égalité, inférieur ou égal, supérieur ou égal, différent. Ils ont le même ordre de priorité et sont exécutés de gauche à droite.

NOT : non logique

AND : et logique

OR : ou logique

Commandes systèmes:

BYE (B.)

Passer en mode SELF TEST. Attention, tous programmes en mémoires seront effacés.

 

DOS (DO.)

Affiche le menu DOS. A utiliser avec une unité de disquette, sinon le système passe en mode SELF TEST (voir commande BYE). Pour gérer les disquettes (formater, copier, renommer, supprimer). Ne pas confondre avec le DOS de Microsoft qui permet bien plus !

 

CSAVE (CS.)

Sauvegarde le programme sur cassette.

Voir aussi : CLOAD, LOAD, SAVE, ENTER, LIST et RUN

 

CLOAD (CLOA.)

Chargement d'un programme sur cassette dans la mémoire de l'ordinateur.

Remarque:si un programme BASIC était présent en mémoire, celui-ci sera effacé.

Voir aussi : CSAVE, LOAD, SAVE, ENTER, LIST et RUN

 

SAVE (S.)

Sauvegarde d'un programme sur une disquette ou tout autre périphérique.

Ex.: SAVE "D:FICHIER.BAS"

Voir aussi : LOAD, CSAVE, CLOAD, ENTER, LIST et RUN

 

LOAD (LO.)

Charge un programme en mémoire à partir d'un périphérique d'entrée.

Remarque:si un programme BASIC était présent en mémoire, celui-ci sera effacé.

Ex.: LOAD "D:FICHIER.BAS"

Voir aussi : SAVE, CSAVE, CLOAD, ENTER, LIST et RUN

 

LIST (L.)

Liste un programme à l'écran ou sur un périphérique.

Ex:

Pour lister la totalité du programme:

LIST

Pour visualiser la ligne 10:

LIST 10

Pour visualiser les lignes 10 à 20:

LIST 10,20

Envoyer le programme à l'imprimante:

LIST "P:"

Envoyer les lignes 10 à 20 à l'imprimante:

LIST "P:",10,20

Envoyer un programme vers une disquette:

LIST "D:FICHIER.LST"

Envoyer les lignes 10 à 20 vers une disquette:

LIST "D:FICHIER.LST",10,20

Vers un cassette

LIST "C:"

Voir aussi : ENTER, SAVE, LOAD, CSAVE, CLOAD et RUN

 

ENTER (E.)

Charge un programme en mémoire

Remarque: contrairement aux commandes CLOAD ou LOAD, si un programme est déjà présent en mémoire, celui-ci ne sera pas effacé. Cependant, les lignes de même numéro seront remplacées/écrasées.

Ex.:

Chargement à partir d'un lecteur de cassette:

ENTER "C:"

Chargement à partir d'un disquette:

ENTER "D:FICHIER.LST"

Voir aussi : LIST, SAVE, LOAD, CSAVE, CLOAD et RUN

 

NEW

Efface définitivement le programme BASIC présent en mémoire.

 

RUN (RU.)

Lance l'exécution d'un programme BASIC. Le programme pouvant se trouver en mémoire ou alors être chargé à partir d'un périphérique d'entrée. Cette commande initialise les variables à 0 et supprime les chaînes de caractères ainsi que les tableaux.

Remarque: Cette commande ne peut pas charger un programme enregistré par la commande LIST.

Pour exécuter un programme en mémoire:

RUN

Pour exécuter un programme depuis une disquette:

RUN "D:FICHIER.BAS"

Voir aussi : LIST, SAVE, LOAD, CSAVE et CLOAD

 

CONT

Reprend l'exécution d'un programme après un arrêt à partir de la touche BREAK ou d'une instruction STOP ou END.

Image non trouvée !Les instructions non exécutées sur la ligne où a été déclenché le STOP ne seront pas exécutés après un CONT, en effet, la commande fait repartir le système sur la ligne suivante.

Voir aussi STOP, END

Instruction sonore:

SOUND (SO.)

Provoque l'émission d'un son. Le son dure jusqu'à ce qu'une autre instruction SOUND soit déclenchée sur la même voix, ou qu'une instruction END, RUN ou NEW soit exécutée. Les 4 voix sont programmées indépendamment et peuvent toutes fonctionner simultanément.

Cette instruction est suivie par 4 valeurs (nombres, variables ou expressions).

Ex.: SOUND A,B,C,D avec

  • A=numéro de canal (ou voix) (0 à 3).
  • B=période (0 à 255). Plus la période est grande, plus la fréquence est basse. Fréquence = 31960/PERIODE + 1).
  • C=distorsion (0 à 14 par valeurs paires uniquement). 10 et 14 sont des tons "purs". Les autres provoquant du bruit.
  • D=volume (0 à 15). 0: pas de son, 15: volume le plus élevé. Il se peut que le son soit très fortement distordu si le volume total des quatres voix dépasse 32.

Commandes de programme:

GOTO (G.)

L'exécution du programme se fait à la ligne indiquée en paramètre. Cette ligne pouvant être une variable ou une expression.

GOTO 10

GOTO LIGNE + 20 où ligne contient un nombre.

Voir aussi ON ... GOTO, GOSUB, RETURN, ON ... GOSUB

 

ON ... GOTO

L'exécution du programme passe à l'un des numéros de ligne spécifié après le mot GOTO. Le choix s'effectue selon la valeur de l'expression suivant ON.

Exemple: ON A GOTO 10,30,50

Si A = 1 aller en 10

Si A = 2 aller en 30

Si A = 3 aller en 50

Voir aussi GOTO, GOSUB, RETURN, ON ... GOSUB

 

GOSUB (GOS.)

L'exécution du programme continue à la ligne spécifiée. Une instruction RETURN fait revenir le programme à l'instruction qui suit le GOSUB.

Même remarque que le GOTO.

Voir aussi RETURN, ON ... GOSUB, GOTO, ON ... GOTO, POP

 

ON ... GOSUB

L'exécution d'un programme continue au numéro de ligne indiqué par une expression.

Un RETURN trouvé fera alors revenir à l'instruction qui suit le ON ... GOSUB.

Même remarque que ON ... GOTO

Voir aussi RETURN, GOSUB, ON ... GOTO, GOTO, POP

 

RETURN (RET.)

Termine un sous programme et ramène le programme à l'instruction qui suit immédiatement la dernière instruction GOSUB exécutée.

Voir aussi GOSUB, ON ... GOSUB, POP

 

FOR (F.)

Cette instruction fixe les valeurs de départ et de fin d'une variable d'index, ainsi que la valeur (le pas) qui doit lui être ajoutée à chaque boucle FOR...NEXT. Ce pas est par défaut à 1. il peut être modifié par l'instruction STEP. L'instruction NEXT fera répéter le/les instructions se trouvant en tre FOR et NEXT.

Ex.:

Pour afficher les dix premières valeurs:

10 FOR A=1 TO 10

20 PRINT A

30 NEXT A

Pour afficher les dix premières valeurs en commençant par dix et en revenant à 1:

10 FOR A=10 TO 1 STEP -1

20 PRINT A

30 NEXT A

Remarque : On pourra utiliser des expressions pour la valeur de départ, la valeur de fin et pour le pas.

Voir aussi NEXT, STEP, POP

 

NEXT (N.)

A utiliser avec l'instruction FOR: incrémente/décrémente la valeur d'index suivant le pas (STEP). Le NEXT reprend l'exécution après FOR si la valeur final n'est pas dépassée, sinon le programme passe à l'instruction suivant NEXT.

Voir aussi FOR, STEP, POP

 

POP

Enlève l'information de retour stocké dans la pile et qui concerne la dernière instruction FOR ou GOSUB exécutée. Permettant ainsi de sortir prématurément d'une boucle FOR/NEXT ou de sortir d'un sous-programme sans exécuter RETURN.

Voir aussi FOR, GOSUB, RETURN

 

IF...THEN

L'instruction qui suit THEN est exécutée lorsque la condition qui se trouve entre IF et THEN est vraie. Sinon passe à la ligne suivante du programme.

Ex. IF A=C THEN GOTO 30 qui peut aussi s'écrire IF A=C THEN 30

 

TRAP (T.)

Lors d'une erreur, TRAP déroute l'exécution à la ligne spécifiée. TRAP reste valide jusqu'à ce qu'une ereeur se présente ou bien jusqu'à la prochaine instruction TRAP. PEEK (195) renvoie le numéro d'erreur.

Remarque : Tous les numéros de ligne plus élevés que 32767 mettent TRAP hors fonction. EX. TRAP 40000.

 

STOP

Arrête le programme. Imprime le numéro de ligne. Ne ferme pas les fichiers, n'arrête pas le son. Le programme pourra continuer son traitement par la commande CONT.

Voir aussi CONT, END

 

END

Arrête le programme, ferme tous les fichiers, arrête le son, le programme peu être relancé avec CONT.

Voir aussi CONT, STOP

 

Instruction d'entrée/sortie (Voir aussi le chapitre sur le CIO)

OPEN (O.)

Ouvre un canal et lui associe un buffer en vue d'une opération d'entrée/sortie. Les valeurs possibles des canaux vont de 1 à 7.

Suivant le type d'opération, il faudra utiliser les codes suivants:

Type Code

Opération

Lecture 4 Lecture seule
Ecriture 8 Ecriture seule
Lecture et écriture 12 Lecture et écriture
Ajout 9 Ajout en fin de fichier
Catalogue 6 Catalogue de la disquette

La syntaxe est OPEN #canel, type, 0, device

Ex.:

Ouvrir le canal 1 en lecture pour le clavier : OPEN #1,4,0,"K:"

Ouvrir le canal 2 en écriture pour l'imprimante : OPEN #2,8,0,"P:"

Ouvrir le canal 1 en lecture et écriture pour un fichier D:FICHIER.DAT : OPEN #1,12,0, "D:FICHIER.DAT"

Ouvrir le canal 1 pour lire le catalogue de la disquette : OPEN #1,6,0,"D:*.*"

Voir aussi CLOSE, PUT, GET, INPUT, PRINT, POINT, STATUS, NOTE

 

CLOSE (CL.)

Ferme un canal et libère l'IOCB associé. Peut être utilisé même si le canal n'a pas été ouvert.

Syntaxe : CLOSE #canal

Voir aussi OPEN, PUT, GET, INPUT, PRINT, POINT, STATUS, NOTE

 

INPUT (I.)

Reçoit une chaîne de caractères par un canal. La chaîne de caracère doit être terminée par un caractère "fin de ligne" (EOL).

INPUT A

Entrée d'une valeur numérique (On ne précise pas #canal, ce qui implique le clavier qui à déjà un canal réservé en BASIC. Voir CIO).

INPUT A,B,C

Entrée de trois valeurs numériques.

INPUT A$

Entrée d'une ligne de type caractères. Remarque : A$ ne contient pas le caractère EOL.

INPUT #1;A$

Entrée d'une chaîne de caractères à partir du canal 1.

Voir aussi OPEN, CLOSE, PUT, GET, PRINT, POINT, STATUS, NOTE

 

PRINT (PR. ou ?)

Envoie de données sur l'écran ou sur un périphérique.

Remarque : on peut utiliser ; qui empêche le retour chariot ou , qui empêche aussi le retour chariot, et provoque une tabulation.

Envoyer une ligne vide : PRINT

Envoyer du texte : PRINT "coucou"

Envoyer du texte et une valeur d'une variable : PRINT "coucou";A

Envoyer une variable de type chaîne de caractères vers un canal: PRINT #1,A$

Envoyer le résultat d'une opération : PRINT 1+2

LPRINT est similaire à PRINT. Sauf que le périphérique est obligatoirement l'imprimante.

Remarque : POKE 201, valeur : pour obtenir une nouvelle valeur de tabulation.

Voir aussi OPEN, CLOSE, INPUT, PUT, GET, POINT, STATUS, NOTE

 

GET

Attend un octet en provenance d'un périphérique spécifié par le numéro de canal. Place ensuite cet octet dans la variable indiquée.

Ex. : GET #1,A

Voir aussi OPEN, CLOSE, INPUT, PRINT, PUT, POINT, STATUS, NOTE

 

PUT

Envoie un octet à destination du périphérique spécifié.

PUT #1,A Pour envoyer la valeur contenue dans la variable A sur le canal 1

Voir aussi OPEN, CLOSE, INPUT, PRINT, GET, POINT, STATUS, NOTE

 

NOTE (NO.)

Utilisé avec l'unité de disquette pour déterminer la position de l'octet suivant à lire ou à écrire dans l'ensemble du buffer.

Ex. NOTE 1, SEC, BYTE : Place le numéro de secteur dans SEC et la position de l'octet dans BYTE. Se référe au fichier ouvert sur le canal 1.

Voir aussi OPEN, CLOSE, INPUT, PRINT, PUT, GET, POINT, STATUS

 

POINT (P.)

Utilisé pour informer DOS de l'endroit où la prochain octet doit être pris et lu ou doit être adressé.

Ex. POINT #1,SEC,BYTE : Positionne le pointeur sur le secteur numéro SEC, avec l'offset BYTE.

Voir aussi OPEN, CLOSE, INPUT, PRINT, PUT, GET, STATUS, NOTE

 

STATUS (ST.)

Demande l'état du périphérique.

Ex. : STATUS #1,A : Place l'état du périphérique associé au canal 1 dans la variable A.

Voir aussi OPEN, CLOSE, INPUT, PRINT, PUT, GET, POINT, NOTE

 

XIO

Voir chapitre sur le CIO

 

Instruction de traitement

LET (LE.)

Assigne des valeurs aux variables numériques ou alphanumériques.

Ces valeurs peuvent provenir d'un résultat de calcul.

Cette instructions n'est absolument pas obligatoire...

Ex.:

Charger la variable A avec le contenu de la varaible B

LET A=B

 

POKE

Place un numbre entre 0 et 255 à une adresse mémoire (entre 0 et 65535). Les valeurs décimales sont arrondies.

On notera qu'il est évidemment impossible de modifier la valeur d'une adresse en ROM !!!

Exemple POKE 710, 128 Mettre la valeur 128 dans l'adresse mémoire 710. Or Cette adresse à la particularité de changer la couleur de l'écran...

Voir aussi PEEK

 

PEEK

Retourner le contenu de l'adresse mémoire.

Exemple A=PEEK(710) : On va lire ici la couleur stockée à l'adresse 710.

Voir aussi POKE

 

DIM ou COM

Réserve de la mémoire pour une chaîne de caractères ou des tableaux numériques.

Chaque caractè occupe 1 octet dans la variable et chaque élément d'un tableau numérique occupe six octets (Voir FLOATING POINT PACKAGE).

Exemple:

DIM A$(10) : Réservation de 10 octets (ou caractères) en mémoire.

DIM B(10) : Création d'un tableau de 10 éléments numériques à une dimension.

DIM B(10,10) : Création d'un tableau de 100 éléments numériques à deux dimensions.

DIM A$(10), B(10) : On déclare sur une ligne les deux variables.

Voir aussi CLR

 

CLR

Voir aussi DIM

Efface les dimensions de n'importe quel tableau, vide toutes les variables alphanumérique et remet à 0 les variable numérique.

Ex. : CLR

 

DATA (D.)

Présente une liste de valeurs numériques et/ou alphanumériques qui seront séquentiellement lus par l'instruction READ

DATA 12,27,COUCOU

Voir aussi READ, RESTORE

 

READ (REA.)

Lit séquentiellement les données placées dans les lignes de DATA et les assigne a des varaibles.

Il va de soit qu'il doit y avoir correspondance entre la type de la variable et le type de DATA.

Exemple:

READ A : Lire un nombre et l'enregistrer dans la variable A. Le système mettre en même tant à jour son pointeur pour qu'au prochain READ, on accède à la donnée suivante de la liste.

READ A$ : Même chose, mais avec une chaine de caractères.

READ A,A$ : Lecture d'un nombre, puis d'une chaîne.

Voir aussi DATA, RESTORE

 

RESTORE:

Positionne le pointeur utilisé par le système pour lire (voir READ) des DATAs sur le début d'une ligne de DATA indiquée ou non.

Ex. RESTORE

Va positionné le pointeur sur le tout premier DATA trouvé dans le code.

RESTORE 100

La donnée qui sera lue, sera la première donnée de la ligne 100.

Voir aussi DATA, READ

 

REM (R.)

Permet l'introduction de commentaires dans le code. Il ne faut surtout pas mettre de code juste après la commande REM. Le code serait lui aussi considéré en commentaire.

Ex.

10 REM DEBUT DU CODE

20 GR. 0

est correcte

10 REM DEBUT DU CODE :GR. 0

La commande GR. 0 ne sera pas prise en compte par l'interpréteur !

 

Instruction graphique (Voir aussi CIO, Le graphisme)

GRAPHICS (GR.)

Sélectionne un mode graphique. Le fait d'ajouter 16 au mode graphique sélectionne le plein écran. En ajoutant 32, on désactive l'effacement automatique de l'écran.

Ex. : GRAPHICS 8

GRAPHICS 8 + 16

 

SETCOLOR (SE.)

Définir la couleur et la luminance d'un registre de couleur. Les registres vont de 0 à 3. La couleur de 0 à 15 et la luminances de 0 à 14 par valeur paires (Sauf pour le GTIA 0 à 15 inclus).

 

COLOR (C.)

Dans les mode graphiques (3 à 11), cette instructions sélectionne le registre (de 0 à 3) de couleur qui sera utilisé par une instruction PLOT et DRAWTO.

Ex. :

COLOR 2

 

PLOT (PL.)

Affiche un point ou un caractère à l'écran aux coordonnées X, Y

Exemple :

PLOT 3,5

Voir aussi DRAWTO

 

POSITION (POS.)

Positionne le curseur à un emplacement X, Y, mais ne trace rien...

Ex.

POSITION 3,5

 

DRAWTO (DR.)

Tire une ligne entre la dernière poisition du curseur et le point de coordonnées X, Y.

Ex. DRAWTO X,Y : Dessine la droite aux coordonnées dont les valeurs se trouvent dans les variables X, Y.

 

Les fontions arithmétiques:

ABS

Donne la valeur absolue d'un nombre.

Ex. : A=ABS(B)

 

CLOG

Donne le logarithme base 10.

Ex. : A=CLOG(B)

 

EXP

Donne la valeur de e élevé à la puissance spécifiée. (inverse de LOG)

ATTENTION: Dans certains cas, la précision ne sera que sur 6 digits.

Ex. : A=EXP(B)

 

INT

Donne la partie entière de la valeur...C'est ce qui est écrit dans la doc, mais...

Plus exactement : le nombre entier immédiatement inférieur à celui passé en paramètre donc -0.1 ou -0.9 donneront -1 et non pas 0.

Ex. : A=INT(B)

 

LOG

Donne le logarithme naturel d'une valeur (Inverse de EXP)

Ex. : A=LOG(B)

 

RND

Donne un nombre aléatoirement. Ce nombre sera compris entre [0,1[

Il ne donnera donc jamais la valeur 1...

Si vous voulez avoir des valeurs plus grandes, il faudra le multiplier.

Ex. A = RND(0)*8

A sera donc compris entre 0 et 8. Sans jamais atteindre la valeur 8 !

 

SGN

Donne -1 si la valeur est négative, 0 si nulle et 1 si positive.

Ex. : A=SGN(B)

 

SQR

Donne la racine carré d'un nombre (forcément >=0 !!!)

Ex. : A=SQR(B)

 

Fonctions trigonométriques:

ATN

Donne l'arctangente d'une valeur, en radians et en degrés.

Ex. : A=ATN(B)

 

SIN

Donne le sinus de la valeur.

Ex.: A=SIN(B)

 

COS

Donne le cosinus de la valeur

Ex.: A=COS(B)

 

DEG

Toutes les fonctions trigonométriques seront exprimées en degrés.

Ex. : DEG

 

RAD

Toutes les fonctions trigonométriques seront exprimées en radians. Remarque, au démarrage, l'ordinateur travaille en radians.

 

Fonctions spéciales :

ADR

Donne l'adresse mémoire décimale du début d'une chaîne.

Ex.:

A=ADR(B$)

ou

A=ADR("CETTE CHAINE")

 

FRE(0)

Donne le nombre d'octets de la mémoire vive utilisateur disponible. (0) est une varaible "fictive" exigée.

 

USR

Appel de sous programmes en langage machine à partir du BASIC

Voir ici pour plus de détail...

 

Fonction de chaîne :

ASC

Donne le numéro de code ATASCII pour le premier caractère d'une chaîne.

Ex.:

A=ASC("A") A sera alors égal à 65.

A=ASC(B$) Celà marche, mais uniquement sur le premier caractère.

 

CHR$

Donne le caractère représenté par le numéro de code ATASCII qui a été spécifié.

A$=CHR(65) A$ sera alors = "A".

 

LEN

Donne la longueur d'une chaîne de caractères.

Ex. :

A=LEN(A$)

 

STR$

Convertion d'un nombre en chaîne de caractères.

Ex.:

A$=STR$(123)

A$ sera alors égale à "123"

 

VAL

Convertion d'une chaîne d'un nombre en chaîne de caractères.

Ex.:

A=VAL("123")

A sera égale à 123.

 

Manipulation de chaînes:

Pour manipuler une chaîne, il suffit d'indiquer la position de départ et d'arrivée.

Par exemple

B$=A$(4,8) Pour extraire les caractères 4,5,6,7,8 de la variable A$ et les transmettre dans B$

 

De même, pour concaténer : A$(1,5)="ESSAI" ou A$(LEN(A$)+1)="ESSAI"

 

Fonction de commande de jeu:

PADDLE

Donne la position du bouton d'une commande à molette spécifique. Les commandes sont numérotées de 0 à 3, de l'avant vers l'arrière. Le nombre donné se situe entre 1 et 228, augmentant au fur et à mesure que la molette est tournée vers la gauche.

Ex. : A=PADDLE(0) pour le paddle 0

 

PTRIG

Le résultat est 0 si l'on presse le bouton de la commande spécifiéé. Il est à 1 dans la cas contraire.

Ex. : A=PTRIG(0)

 

STICK

Donne la position du joystick 0 ou 1.

Ex. : A=STICK(0)

Voir aussi : Le joystick

 

STRIG

Permet de lire l'état du bouton d'un joystick spécifié.

Donne 0 si le bouton est préssé. 1 dans le cas contraire.

Ex. : A=STRIG(0)

Voir aussi : Le joystick