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:
Passer en mode SELF TEST. Attention, tous programmes en mémoires seront effacés.
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 !
Sauvegarde le programme sur cassette.
Voir aussi : CLOAD, LOAD, SAVE, ENTER, LIST et RUN
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
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
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
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
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
Efface définitivement le programme BASIC présent en mémoire.
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
Reprend l'exécution d'un programme après un arrêt à partir de la touche BREAK ou d'une instruction STOP ou END.
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.
Instruction sonore:
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:
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
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
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
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
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
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.
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.
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.
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
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.
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.
Arrête le programme, ferme tous les fichiers, arrête le son, le programme peu être relancé avec CONT.
Instruction d'entrée/sortie (Voir aussi le chapitre sur le CIO)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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
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.
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