Liste
complète des mots
clés du BASIC AMSTRAD CPC6128
(issue du manuel de l'utilisateur)
Note: les programmes d'exemples présents sur cette page peuvent
être chargés dans l'émulateur CpcAlive grâce
à la fonction copier/coller de Windows. Voir mode d'emploi
L'assimilation de la terminologie et de la notation adoptées
dans ce chapitre est indispensable. Différents types de parenthèses
expliquent l'entrée des commandes ; commencez donc par vous familiariser avec la signification de chacun.
Les commandes sans crochets doivent rester telles quelles. C'est le
cas, par exemple, de la commande:
END
...et vous devez taper le mot END en toutes lettres.
Lorsqu'un élément apparaît entre parenthèses
angulaires, < > comme:
<numéro de ligne>
...il ne faut ni taper ces parenthèses, ni ce qu'elles
renferment.
L'exemple ci-dessus indique le type de données requises pour la commande. Par exemple:
EDIT <numéro de ligne>
...signifie que vous devez taper:
EDIT 100
Les parenthèses () DOIVENT être tapées telles
quelles. Dans l'exemple:
COS(<expression numérique>)
...l'expression numérique doit se trouver entre
parenthèses. Par exemple:
PRINT COS(45)
Les crochets, pour finir, contiennent les éléments
facultatifs d'une commande ou d'une fonction. Par exemple :
RUN [<numéro de ligne>]
...signifie que vous n'êtes pas obligé de faire suivre le
mot clé RUN d'un paramètre, mais que vous pouvez, si vous le désirez, ajouter le paramètre
<numéro de ligne>. La commande peut alors être entrée de deux manières:
RUN ... ou ... RUN 100
Caractères spéciaux
& ou &H Préfixe pour un nombre
hexadécimal
&X
Préfixe pour un
nombre binaire
#
Préfixe pour un canal
d'entrées-sorties
Types de données
Les chaînes peuvent avoir de 0 à 255 caractères et sont
désignées par <chaîne alphanumérique>.
On peut adjoindre une chaîne à une autre avec
le signe + et à condition que la chaîne qui en
résulte ne dépasse pas 255
caractères.
Les entiers varient de -32768 à + 32767 et les nombres
réels de -1.7E+38 à +1.7E+38, le plus petit nombre au dessus de zéro étant 2.9E-39 et
chaque nombre ayant 9 à 10 chiffres significatifs.
Une <expression numérique> est une expression qui aboutit
à une valeur numérique.
Cela peut être des nombres, ou une variable numérique, ou
des nombres opérant avec des variables numériques, à peu près tout ce qui n'est
pas <chaîne alphanumérique>.
Un <numéro de canal> se rapporte à une
<expression numérique> pour désigner une fenêtre d'écran, une imprimante, une cassette ou une
disquette vers laquelle le texte doit être acheminé.
Une <liste d'élément> décrit un
paramètre comprenant une liste d'éléments
séparés par des virgules. Cette liste, pouvant contenir un ou plusieurs
éléments, est limitée par la longueur de ligne.
Nous allons donner les mots clés du BASIC AMSTRAD sous la forme
suivante:
MOT CLE
Syntaxe
Exemple
Description
Mots clés associés
Les mots clés sont:
DES COMMANDES : opérations exécutées directement
DES FONCTIONS : opérations
intervenant dans
une expression
DES OPERATEURS : agissent sur des arguments
mathématiques
Lors du listage d'un programme, le BASIC transforme en MAJUSCULES tous
les mots clés tapés en minuscules. Les exemples de ce chapitre
sont en MAJUSCULES tels qu'ils apparaissent après un LISTing. Il sera toutefois
préférable que vous les tapiez en minuscule car les mots clés contenant une erreur resteront
LISTés en minuscules, vous révélant ainsi vos erreurs de frappe.
Pour plus de détails sur le BASIC AMSTRAD 6128, consultez les
spécifications SOFT967.
Mots clés...
ABS
ABS(<expression
numérique>)
PRINT ABS(-67,98)
67.98
FONCTION: Donne la valeur ABSolue de l'expression entre
parenthèses. Les nombres négatifs perdent donc leur signe moins.
AFTER <délai du
chronomètre>[,<numéro de chronomètre>]
GOSUB <numéro de ligne>
10 AFTER 250 GOSUB 60:CLS
20 PRINT"Devine une lettre en 5 secondes"
30 a$=INKEY$:IF flag=1 THEN END
40 IF a$<>CHR$(INT(RND*26+97)) THEN 30
50 PRINT a$;" est exacte,tu as gagne !"
55 SOUND 1,478:SOUND 1,358:END
60 PRINT "Trop tard.J'ai gagne !"
70 SOUND 1,2000:flag=1:RETURN
run
COMMANDE: Appelle un sous-programme après (AFTER en anglais) un
certain délai. Le <délai du chronomètre> indique la
durée de l'attente en multiples de 0,02 seconde. Le <numéro de chronomètre> (qui peut
être 0,1,2 ou 3) précise lequel des quatre chronomètres d'attente il faut utiliser.
Chacun des 4 chronomètres peut être associé
à un sous-programme. Pour plus de détails concernant les interruptions, reportez vous à la partie 2 du
chapitre "A vos heures de loisir...".
FONCTION: Calcule l'Arc TaNgente (réduisant l' <expression
numérique> à un nombre réel en radians compris entre -PI/2 et + PI/2) de la valeur
donnée.
A noter : les commandes DEG et RAD peuvent êtres utilisées
pour spécifier explicitement que le résultat sera exprimé respectivement en
degrés ou radians.
COMMANDE: Génère AUTOmatiquement les numéros de
ligne. Le paramètre facultatif <numéro de ligne>
donne le premier numéro de
ligne à générer. Si vous ne le précisez
pas, les lignes sont générées à partir de
10.
L'<incrément>, également facultatif, fixe
l'intervalle entre les numéros de ligne. En l'abscence de spécification, il sera égal à 10. Si
un numéro de ligne déjà utilisé est
généré, le contenu de cette ligne apparaît à l'écran et
peut éventuellement être modifié. La ligne affichée est ensuite remplacée en mémoire
après activation de la touche [RETURN]. Pour arrêter la numérotation automatique des lignes, appuyez
sur [ESC].
Mots clés associés: Aucun
BIN$
BIN$ ( <nombre entier sans
signe>[,<nombre entier>] )
PRINT BIN$(64,8)
01000000
FONCTION: Produit une chaîne de chiffres BINaires
représentant la valeur du <nombre entier sans signe>, à l'aide du nombre de chiffres
binaires indiqué par le deuxième <nombre entier> (entre 0 et 16). Si ce nombre est trop grand, le
résultat commence par autant de zéros que nécessaire. S'il est trop petit, le
résultat n'est pas tronqué mais converti en autant de chiffres que nécessaire.
Le <nombre entier sans signe> à convertir en binaire doit
être compris entre -32768 et 65535.
10 REM 729 combinaisons de bordure
20 SPEED INK 5,5
30 FOR a=0 TO 26
40 FOR b=0 TO 26
50 BORDER a,b:CLS:LOCATE 14,13
60 PRINT"border";a;",";b
70 FOR t=1 TO 500
80 NEXT t,b,a
run
COMMANDE: Pour changer de couleur de la bordure d'écran. Si deux
couleurs sont indiquées, elles alternent à la vitesse
déterminée par la commande SPEED INK, le cas échéant. Les valeurs vont de 0 à 26.
COMMANDE: Demande au BASIC de lire le CATalogue de la disquette.
Affiche en ordre alphanumérique les noms de tous les fichiers
présents ainsi que leur longueur (en arrondissant au Koctet supérieur). Le nombre d'octets
disponibles s'affiche également.
Cette commande n'a pas d'effet sur le programme en cours.
COMMANDE: Charger un programme en mémoire à partir d'une
disquette, remplaçant le programme existant. Le nouveau programme commence au début ou
à partir de la ligne spécifiée par <numéro de ligne>.
Les fichiers protégés (sauvegardés par la commande
SAVE,p) peuvent être
chargés et lancés par CHAIN.
CHAIN MERGE
<nomfich>[,<numéro de ligne>]
[,DELETE <ensemble de lignes>]
CHAIN MERGE "partie2.bas",750,DELETE 400-680
COMMANDE: Charge en mémoire un programme sur disquette en le
fusionnant au programme existant, puis lance le programme résultant, depuis le
début ou à partir de la ligne spécifiée par le paramètre en option,
<numéro de ligne>. Si vous désirez effacer une
partie du programme initial avant d'utiliser cette commande, vous
pouvez spécifier le paramètre <ensemble de lignes> de la commande DELETE. Les
numéros de ligne du programme initial identiques à ceux du programme à
fusionner seront écrasées sur les nouvelles lignes. Les fichiers protégés
(sauvegardés par la commande SAVE,p)
ne peuvent PAS être fusionnés puis lancés par cette
commande.
10 FOR x=32 TO 255
20 PRINT x;CHR$(x),
30 NEXT
run
FONCTION: Convertit un <nombre entier> compris entre 0 et 255 en
une chaîne de caractères équivalente à l'aide du jeu de
caractères de l'AMSTRAD 6128, décrit dans la partie 3 du chapitre "Pour information... ". Les caractères 0
à 31 sont des caractères de contrôle. C'est pourquoi l'exemple ci-dessus affiche le
entiers compris entre 32 et 255.
COMMANDE: Efface toutes les variables, fichiers ouverts, tableaux et
fonctions utilisateur, le mode de calcul en BASIC s'effectue en radians.
Mots clés associés: Aucun
CLEAR INPUT
CLEAR INPUT
10 CLS
20 PRINT" tapez plusieurs lettres maintenant !"
30 FOR T=1 TO 50000
40 NEXT
50 CLEAR INPUT
run
COMMANDE: Efface toutes les données entrées à
partir du clavier, se trouvant dans le tampon.
Pour expérimenter cette commande, lancez le programme ci-dessus
et tapez les lettres lorsque vous y êtes invités. Supprimez ensuite la ligne 50
du programme, relancez-le et voyez la différence.
COMMANDE: Efface la fenêtre d'écran
spécifiée par le <numéro de canal> et lui
donne sa couleur de papier. En l'absence de <numéro de
canal>, 0 est pris par défaut.
COMMANDE: CONTinue
l'exécution du programme après un STOP, ou deux activations de la touche [ESC], si le programme n'a été ni
modifié ni protégé. Des commandes directes peuvent êtres tapées avant reprise du programme.
FONCTION: Copie un caractère à partir de la position du
curseur dans le canal (qui DOIT être spécifié). Le programme ci-dessus copie
un caractère de l'emplacement 1,1 (angle supérieur gauche) et le reproduit en 1,20. Si le
caractère lu n'est pas reconnu, une chaîne nulle est renvoyée.
10 CURSOR 1
20 PRINT "question ?";
30 a$=INKEY$:IF a$="" THEN 30
40 PRINT a$
50 CURSOR 0
run
COMMANDE: Active ou désactive l'indicateur système ou utilisateur. Les paramètres <indicateur système> et <indicateur utilisateur> doivent être sur 0 (inactif) ou 1 (actif). Dans la commande INKEY$ ci-dessus, le curseur a été rendu visible par fixation de l'indicateur système sur 1 (à la ligne 10).
Le curseur s'affiche lorsque les deux indicateurs sont sur 1. Le curseur système est automatiquement activé pour la commande INPUT et désactivé pour INKEY$.
Il est préférable de désactiver le curseur pour l'affichage d'un texte à l'écran.
Vous pouvez omettre l'un des indicateurs mais pas les deux. Si un
paramètre est omis, son état est inchangé.
10 FOR x=1 TO 4
20 READ nom$,prenom$
30 PRINT "Mr. ";nom$;" ";prenom$
40 NEXT
50 DATA DUPONT,Olivier,DURAND,François
60 DATA LAMIE,Frederic,MOULIN,Daniel
run
COMMANDE: Déclare des données constantes à
l'intérieur d'un programme. Ces données peuvent
être affectées à une variable par la commande READ, après quoi le pointeur passe à l'élément suivant de la liste DATA. La commande RESTORE peut servir à déplacer le pointeur sur une position spécifiée de DATA.
COMMANDE: Le BASIC permet au programme de DEFinir une FoNction
retournant une valeur unique et de l'utiliser. DEF
FN est la partie définition du mécanisme de création d'une fonction spécifique, travaillant d'une
manière similaire aux fonctions existantes du BASIC (COS, SIN, ATN, etc.).
Dans l'exemple ci-dessus la valeur de la fonction FNchrono est constamment mise
à jour, même si le programme est suspendu par [ESC] ou
arrêté par double [ESC], puis relancé avec CONT.
Mots clés associés: Aucun
DEFINT
DEFINT <liste de:
<lettres concernées>
10 DEFINT n
20 nombre=123.456
30 PRINT nombre
run
123
COMMANDE: Définit le type de variable par DEFaut, le type étant entier.
Lorsqu'une variable intervient sans marqueur (! % $), le type par défaut
est automatiquement mis en oeuvre. Cette commande définit le type par défaut des
variables selon la première lettre du nom de la variable. Elle peut être suivie d'une liste
d'initiales. Par exemple:
COMMANDE: Définit le type de variable par DEFaut, le type étant
réel. Lorsqu'une variable intervient sans marqueur (! % $), le type par défaut
est automatiquement mis en oeuvre. Cette commande définit le type par défaut des
variables selon la première lettre du nom de la variable. Elle peut être suivie d'une liste
d'initiales. Par exemple:
10 DEFSTR n
20 nom="Amstrad"
30 PRINT nom
run
Amstrad
COMMANDE: Définit le type de variable par DEFaut, le type étant une
chaîne. Lorsqu'une variable intervient sans marqueur (! % $), le type par défaut
est automatiquement mis en oeuvre. Cette commande définit le type par défaut des
variables selon la première lettre du nom de la variable. Elle peut être suivie d'une liste
d'initiales:
COMMANDE: Etablit le mode de calcul en DEGrés.
Par défaut, les fonctions SIN, COS, TAN et ATN considèrent que
l'argument qui leur est transmis est exprimé en radians. La commande reste valable jusqu'à ce qu'on utilise les
commandes RAD ou NEW, CLEAR, LOAD, RUN, etc.
LOAD "xyz.abc"
XYZ .ABC not found
Ready
PRINT DERR
146
FONCTION: Rapporte le dernier code d'
ERReur envoyé par le système de gestion de la Disquette. La valeur de DERR
peut servir à confirmer l'erreur détectée.
Consultez la liste des erreurs de disquettes pour plus d'informations.
10 CLS:TAG:EVERY 10 GOSUB 90
20 x1=RND*320:x2=RND*320
30 y=200+RND*200:c$=CHR$(RND*255)
40 FOR x=320-x1 TO 320*x2 STEP 4
50 DI
60 MOVE 320,0,1:MOVE x-2,y:MOVE x,y
70 PRINT" ";c$:FRAME
80 EI:NEXT:GOTO 20
90 MOVE 320,0:DRAW x+8,y-16,1:RETURN
run
COMMANDE: Désactive une interruption (autre que [ESC]
jusqu'à ce qu'elle soit réactivée directement par une commande EI ou indirectement par un [RETURN]
à la fin d'un sous-programme d'interruption GOSUB.
L'entrée dans un sous-programme d'interruption désactive
automatiquement les interruptions de priorité égale ou inférieure.
On l'utilise quand le programme doit s'exécuter sans
interruption, par exemple quand deux sous-programmes sont en compétition pour utiliser les
ressources de l'ordinateur (les ressources graphiques dans le programme ci-dessus, par exemple).
Pour de plus amples informations sur les interruptions consultez la
partie 2 du chapitre "A vos heures de loisir..."
10 CLS
20 DIM ami$(5),tel$(5)
30 FOR n=1 TO 5
40 PRINT "telephone No";n
50 INPUT"entrez le nom";ami$(n)
60 INPUT"entrez le numero de tel.";tel$(n)
70 PRINT
80 NEXT
90 FOR n=1 TO 5
100 PRINT n;ami$(n),tel$(n)
110 NEXT
run
COMMANDE: DIMensionne un
tableau. Cette commande alloue l'espace requis aux tableaux et spécifie le valeurs d'indices maximales. Le BASIC
doit connaître l'espace réservé pour un tableau, en l'absence de
spécification il prend 10 comme valeur par défaut.
Un tableau est identifié par une <variable
indicée>, à savoir un nom de variable accompagné d'un ensemble d'indices afin que chaque
"élément" du tableau ait sa propre valeur d'indice.
Une boucle FOR NEXT peut
servir à contrôler le tableau en traitant chaque
élément du tableau à tour de rôle.
La valeur minimale d'un indice est zéro (c'est le premier
élément du tableau).
Les tableaux peuvent être multi-dimensionnels et chaque
élément est référencé par sa position. Par exemple, dans un tableau dimensionné par:
DIM position$(20,20,20)
...un élément du tableau sera
référencé de la façon suivante:
COMMANDE: Trace une ligne sur l'écran entre la position du
curseur graphique et une position absolue spécifiée par les coordonnées x
et y. L' <encre> de traçage peut être spécifiée (entre 0 et 15)
Le <mode d'encre> facultatif détermine l'interaction de
l'encre sur l'affichage présent à l'écran. Les quatre <modes d'encres> sont les suivants:
0: Normal
1: XOR (OU exclusif)
2: AND (ET)
3: OR (OU)
10 CLS:PRINT"tu montes au premier !?"
20 MOVE 0,350:FOR n=1 to 8
30 DRAWR 50,0
40 DRAWR 0,-50
50 NEXT:MOVE 348,0:FILL 3
60 GOTO 60
run
COMMANDE: Trace une ligne sur l'écran entre la
position du curseur graphique jusqu'à la position spécifiée par les
<décalages> x et y. L' <encre> de traçage peut
être spécifiée (entre 0 et 15)
Le <mode d'encre> facultatif détermine l'interaction de
l'encre sur l'affichage présent à l'écran. Les quatre <modes d'encres> sont les suivants:
0: Normal
1: XOR (OU exclusif)
2: AND (ET)
3: OR (OU)
COMMANDE: Met fin à l'exécution d'un programme et
rétablit le mode direct. Un programme peut contenir un nombre quelconque de commandes END (elle est implicite à la fin de tout programme BASIC AMSTRAD).
10 ENT 1,10,-50,10,10,50,10
20 SOUND 1,500,200,10,,1
run
COMMANDE: Définit l'ENveloppe
de Tonalité spécifiée par le <numéro
d'enveloppe> (entre 1 et 15) utilisée avec la commande SOUND. Si le
<numéro d'enveloppe> est négatif (entre -1 et -15) l'enveloppe se
répète jusqu'à la fin de la durée du son
fixée par la commande SOUND.
Chaque <section d'enveloppe> peut contenir 2 ou 3
paramètres:
Dans le cas de trois paramètres, ceux-ci sont:
<nombre de pas> , <amplitude du pas> , <durée du
pas>.
Paramètre 1: <nombre
de pas>
Spécifie le <nombre
de pas> de variation de
tonalité à l'intérieur de la section d'enveloppe.
Par exemple, dans une section de note durant 10 secondes, vous
pouvez fixer 10 pas de 1 seconde chacun. Dans ce cas, le <nombre de
pas> sera 10.
Le <nombre de pas> peut varier de 0 à 239.
Paramètre 2:
<amplitude du pas>
Doit être compris entre -128 et +127. Les pas négatifs
augmentent la hauteur de la note, les pas positifs l'abaissent. La période sonore minimale est de
0. Toutes les périodes sonores disponibles sont présentées au chapitre "Pour
information...".
Paramètre 3:
<durée du pas>
Spécifie la durée d'un pas, par unités de 0.01
seconde. Elle peut varier de 0 à 255 (0 a la valeur 256), la durée maximale d'un pas est donc de 2,56
secondes. Si vous n'utilisez que deux paramètres, ce sont:
<période sonore>,<durée du pas>
Paramètre 1: <période sonore>
Donne la nouvelle valeur de la période. (Voir le
paramètre 2 de la commande SOUND)
Paramètre 2: <durée
du pas>
Spécifie la durée du pas unique en unités de 0,01
secondes. Peut varier entre 0 et 255 (0 ayant la valeur 256), soit 2,56 secondes.
GÉNÉRALITÉS
La durée totale des pas ne doit pas dépasser le
paramètre <durée> de la commande SOUND,
car le son se termine
alors avant d'avoir traversé la totalité des pas. (Le
reste de l'enveloppe de tonalité est alors ignoré). De
même, si la <durée> de la commande SOUND dépasse la
durée totale des pas, le son se poursuit après avoir
traversé tous les pas et demeure constant à la tonalité finale.
La commande ENT
peut
s'accompagner de 5 <sections d'enveloppe> différentes
(chacune constituée des 2 ou 3 paramètres ci-dessus).
Le premier pas d'une enveloppe de tonalité
s'exécute immédiatement.
Chaque fois qu'une nouvelle enveloppe est attribuée à un
numéro d'enveloppe déterminé, la définition précédente est perdue.
Un <numéro d'enveloppe> sans <section
d'enveloppe> annule toutes les spécifications précédentes.
Pour de plus amples informations, consultez la partie 2 du
chapitre
"A vos heures de loisirs..."
10 ENV 1,15,-1,10,15,,10
20 SOUND 1,200,300,15,1
run
COMMANDE: Définit l'ENveloppe
de Volume correspondant au
<numéro d'enveloppe> (entre 1 et 15), utilisé avec la commande SOUND.
Elle peut contenir 2 ou 3 paramètres:
Pour 3 paramètres:
<nombre de pas>,<amplitude du pas>,<durée du
pas>.
Paramètre 1: <nombre
de pas>
Spécifie le <nombre de pas> de volume qu'un
son doit traverser dans la section d'enveloppe. Par exemple, dans une section de 10 secondes, vous pouvez fixer
10 pas de volume d'une seconde. Dans ce cas, le <nombre de pas> est
égal à 10.
Le <nombre de pas> peut varier de 0 à 127.
Paramètre 2:
<amplitude du pas>
Peut faire varier le volume de 0 à 15 par rapport au pas
précédent. Les 16 volumes différents sont les mêmes que ceux de la commande SOUND. Le paramètre <amplitude
du pas> peut cependant varier de -128 à +127. Le volume revenant
à 0 après avoir atteint 15.
Paramètre 3:
<durée du pas>
Spécifie la durée d'un pas, par unités de 0.01
seconde. Peut varier de 0 à 255 (0 a la valeur 256), soit 2,56 secondes.
Pour 2 paramètres:
<enveloppe matérielle>,<période de
l'enveloppe>
Paramètre 1: <enveloppe
matérielle>
Spécifie la valeur à envoyer au registre d'enveloppe
contenu dans le générateur sonore.
Paramètre 2: <période
de l'enveloppe>
Spécifie la valeur à envoyer aux registres de
période d'enveloppe contenus dans le générateur sonore.
L'utilisation d'enveloppes matérielles suppose la connaissance
du matériel. Si vous ne l'avez pas, il vaut mieux utiliser une enveloppe logicielle
intégrant un paramètre <durée du pas> adéquat.
GÉNÉRALITÉS
La durée totale des pas ne doit pas dépasser le
paramètre <durée> de la commande SOUND, le son se termine alors
avant d'avoir traversé tous les pas de volume (le reste de l'enveloppe est ignoré).
De même, si le paramètre de <durée> de
la commande SOUND
dépasse la durée totale des pas, le son se poursuit après avoir traversé tous les
pas de volume et demeure constant au volume final.
La commande ENV peut contenir
5 <sections d'enveloppe> différentes (constituées
des 2 ou 3 paramètres ci-dessus).
Le premier pas d'une enveloppe de tonalité
s'exécute immédiatement.
Chaque fois qu'une nouvelle enveloppe est attribuée à un
numéro d'enveloppe déterminé, la définition précédente est perdue.
La spécification d'un <numéro
d'enveloppe> sans <section d'enveloppe> annule
toutes les valeurs précédentes.
Pour de plus amples informations, consultez la partie 2 du
chapitre
"A vos heures de loisirs..."
10 OPENIN"ex1.bas"
20 WHILE NOT EOF
30 LINE INPUT,#9,a$
40 PRINT a$
50 WEND
60 CLOSEIN
run
FONCTION: Pour tester l'état d'un fichier ouvert. Donne -1
(vrai) si l'on est en fin de fichier (End Of File)
ou si aucun fichier n'est ouvert, sinon donne 0 (faux).
10 ON ERROR GOTO 30
20 GOTO 1000
30 PRINT"L'erreur est en ligne";ERL
40 END
run
FONCTION: Donne le numéro de la ligne de la dernière
erreur rencontrée. Dans l'exemple ci-dessus, l'ERreur de la ligne
20 est indiquée par la fonction ERL.
FONCTION: Donne le numéro de la dernière ERReur
détectée. Voir la liste des messages d'erreur. Dans l'exemple
ci-dessus, le numéro d'erreur 8 correspond à
"Line does not exist" (Ligne non existante).
COMMANDE: Décide une action consécutive à une
erreur numérotée. Voir liste des messages d'erreur 1 à 32.
L'action est la même que celle prévue par le BASIC en cas d'erreur réelle, faisant
appel à un sous programme de traitement d'erreur, le cas èchéant, et rapportant le
valeurs appropriées d'ERR
et ERL.
ERROR accompagné d'un <nombre entier> compris entre 33 et
255 peut servir à créer des messages d'erreur personnalisés tels que:
10 ON ERROR GOTO 100
20 INPUT"entrez un caractere ";a$
30 IF LEN(a$)<>1 THEN ERROR 100
40 GOTO 20
100 IF ERR=100 THEN 110 ELSE 130
110 PRINT CHR$(7)
120 PRINT"j'ai dit UN caractere !"
130 RESUME 20
run
EVERY <période du
chronomètre>[,<numéro du chronomètre>] GOSUB <numéro de ligne>
10 EVERY 50,1 GOSUB 30
20 GOTO 20
30 SOUND 1,20
40 RETURN
run
COMMANDE: Appelle un sous-programme du BASIC à intervalles
réguliers. La <période du chronomètre>
spécifie
l'intervalle par unités de 0,02 seconde. Le <numéro de
chronomètre> (compris entre 0 et 3) spécifie lequel
des quatre chronomètres utiliser.
Le chronomètre 3 correspond à la priorité
supérieure et le 0 à la priorité
inférieure. Chaque chronomètre peut être associé à un
sous-programme.
Pour de plus amples informations, consultez la partie 2 du
chapitre
"A vos heures de loisirs..."
FONCTION: Calcule "e" à la puissance donnée par
l'<expression numérique> où "e" est égal à 2,7182818 environ, le nombre dont le
logarithme naturel est 1.
10 MODE 0
20 FOR n=1 TO 500
30 PRINT "O";
40 NEXT
50 coulstylo=2+RND*13
60 FILL coulstylo
70 GOTO 50
run
COMMANDE: Remplit une zone arbitraire de l'écran graphique. Les
bords de la zone sont délimités par les lignes dessinées avec
l'encre du stylo en cours ou avec l'encre du fond (comprise entre 0 et 15). Le remplissage part de la position du
curseur graphique. Si celui-ci se trouve sur un bord, rien n'est remli.
FOR <variable
simple>=<début> TO
<fin> [STEP
<incrément>]
10 FOR n=2 TO 8 STEP 2
20 PRINT n;
30 NEXT n
40 PRINT",qui va augmenter !"
run
COMMANDE: Exécute la partie du programme se trouvant entre les
mots clés FOR et NEXT, autant de fois que l'on
peut ajouter l' <incrément> à la <variable
simple> en partant du <début> jusqu'à la <fin>. Si l'
<incrément> est omis, il prend implicitement la valeur 1.
La valeur de l' <incrément> peut être
négative. Dans ce cas la valeur du paramètre <début> doit être supérieure à celle
du paramètre <fin>, faute de quoi la variable ne peut être incrémentée.
Les boucles FOR NEXT peuvent
être imbriquées.
L'affectation du nom de variable à la commande NEXT est
facultative car le BASIC détermine automatiquement la commande NEXT à laquelle est
associée une commande FOR.
10 MODE 0
20 PRINT "sans FRAME"
30 TAG
40 MOVE 0,200
50 FOR x=0 TO 500 STEP 4
60 IF f=1 THEN FRAME
70 MOVE x,200
80 PRINT" ";CHR$(143);
90 NEXT
100 IF f=1 THEN RUN
110 CLS
120 TAGOFF
130 PRINT"avec FRAME"
140 f=1
150 GOTO 30
run
COMMANDE: Synchronise l'écriture des graphiques avec les trames
vidéo. Il en résulte un mouvement plus harmonieux des caractères ou des graphiques
à l'écran sans distorsion et sans scintillement.
FONCTION: Indique l'espace disponible en mémoire. La forme FRE (" ") force l'ordinateur à mettre de l'ordre avant de donner la valeur de l'espace
disponible.
REMARQUE: Le BASIC n'exploite que le bloc 0 de la mémoire.
COMMANDE: Appelle un sous-programme BASIC en se branchant sur la ligne
indiquée. La fin du sous-programme est marquée par la
commande RETURN renvoyant le programme à l'instruction suivant la commande GOSUB.
COMMANDE: Se branche sur le numéro de ligne indiqué.
Mots clés associés: Aucun
GRAPHICS PAPER
GRAPHICS PAPER
<encre>
10 MODE 0
20 MASK 15
30 GRAPHICS PAPER 3
40 DRAW 640,0
run
COMMANDE: Détermine l' <encre> du fond graphique. Lors du
traçage de lignes, le fond n'est pas visible. Dans l'exemple ci-dessus, la commande MASK permet le traçage d'une ligne en tirets et la visualisation du fond graphique.
L'encre du fond (entre 0 et 15) sert à la zone "paper" sur
laquelle s'affichent les caractères, lorsque TAG fonctionne,
et fait office de valeur par défaut lors de l'effacement des fenêtres graphiques à l'aide de CLG.
HEX$ (<nombre entier sans
signe>[,<largeur de zone>])
PRINT HEX$(255,4)
00FF
FONCTION: Change un nombre entier en un nombre HEXadécimal équivalent
en accord avec le nombre de chiffres hexadécimaux indiqué
par la <largeur de zone> (entre 0 et 16). Si ce nombre est trop grand, l'expression finale est
complétée par des zéros à gauche du nombre. S'il est trop petit, elle ne sera PAS tronquée
mais le nombre de chiffres produit sera égal au nombre requis.
Le <nombre entier sans signe> à convertir sous forme
hexadécimale doit produire une valeur comprise entre -32768 et 65535.
IF
(<expression logique>) THEN
<option> [ELSE
<option>]
10 MODE 1
20 x=CINT(RND*100)
30 PRINT"devinez un chiffre (0 a 100)"
40 INPUT n
50 IF n<x THEN PRINT n;" est trop petit..."
60 IF n>x THEN PRINT n;" est
trop grand..."
70 IF n=x THEN 80 ELSE c=c+1:GOTO 40
80 PRINT"Bien vu! Trouve en";c+1;"fois !"
run
COMMANDE: Détermine si l' <expression logique> est vraie
pour exécuter, le cas échéant, la première <option>. Si l'
<expression logique> est fausse, l' <option> placée après ELSE
s'exécute. En absense de deuxième <option>,
le BASIC passe à la ligne suivante.
Les commandes IF THEN peuvent
être imbriquées mais se terminent à la fin de la
ligne. On ne peut donc PAS avoir de déclarations indépendantes
de IF THEN sur la même ligne. Lorsque le résultat de l' <expression logique>
nécessite un saut de ligne, la commande peut, par exemple, se formuler:
INK
<encre>,<numéro de couleur> [,<numéro de
couleur>]
10 MODE 1:PAPER 0:PEN 1
20 FOR p=0 TO 1
30 FOR i=0 TO 26
40 INK p,i
50 LOCATE 16,12:PRINT"INK";p;",";i
60 FOR t=1 TO 400:NEXT t,i,p
70 INK 0,1:INK 1,24:CLS
run
COMMANDE: Affecte la ou les couleurs à une encre donnée.
Le paramètre <encre> fournit la référence de l'encre (par un entier compris
entre 0 et 15), à l'intention des commandes PEN ou PAPER correspondantes. Le premier
paramètre <numéro de couleur> (entier) donne une valeur de couleur comprise entre 0 et 26. Si le
second paramètre de couleur facultatif est spécifié, l'encre passe d'une
couleur à l'autre selon une vitesse définie par la commande SPEED INK.
10 IF INKEY(55)<>32 THEN 10
20 PRINT"vous venez d'appuyer [SHIFT] et V"
30 CLEAR INPUT
run
FONCTION: Interroge le clavier pour indiquer le touches
pressées. Le clavier est analysé tous les cinquantièmes de seconde. Cette fonction
sert à détecter la position haute ou basse d'une touche par détection de la valeur -1
(indépendante de l'état des touches [SHIFT] et [CONTROL]).
Dans l'exemple ci-dessus, le système détecte
l'actionnement simultané de [SHIFT] et V (numéro de touche 55) avant d'arrêter le programme. Les
numéros de touche sont donnés dans le diagramme situé en haut à droite du boitier de
l'ordinateur (voir également le chapitre "Pour information...".
[SHIFT] et [CONTROL] sont identifiés par les valeurs suivantes:
10 CLS
20 PRINT"choisissez OUI ou NON (O/N)"
30 a$=INKEY$
40 IF a$="" THEN 30
50 IF a$="o" OR a$="O" THEN 80
60 IF a$="n" OR a$="N" THEN 90
70 GOTO 30
80 PRINT"Vous avez choisi OUI":END
90 PRINT"Vous avez choisi NON"
run
FONCTION: Interroge le clavier pour introduire dans le programme toute
chaîne de caractères entrée. Si aucune touche de clavier n'est
actionnée, INKEY$
renvoie une chaîne vide. Dans l'exemple ci-dessus les lignes 40 et 70
commandent au programme de revenir à la ligne 30
après interrogation du clavier par la fonction INKEY$.
INPUT [#<numéro de
canal>,][;][<chaîne> <séparateur>]
<liste de:<variable>
10 MODE 1
20 INPUT "donnez-moi deux nombres a multiplier
(separes par une virgule)";a,b
30 PRINT a;"fois";b;"font";a*b
40 GOTO 20
run
COMMANDE: Reçoit les données en provenance du canal
précisé (canal #0 en l'absence de spécification).
Un point-virgule après INPUT supprime le passage à la
ligne après exécution de la commande.
Le <sépararateur> peut être un point-virgule ou une
virgule. Un point-virgule placé après la chaîne fait apparaître un point d'interrogation; une
virgule le supprime.
Si une entrée erronnée est effectuée, un O pour un
0 par exemple, le BASIC répond:
?Redo from start
...ou tout autre message d'erreur programmé par vos soins.
Toute réponse au clavier doit se terminer par [RETURN].
INSTR ( [<position de
départ>,]<chaîne contenante>,<chaîne
contenue> )
10 CLS:FOR n=1 TO 26
20 alphabet$=alphabet$+CHR$(n+64)
30 NEXT
40 INPUT "entrez une lettre";a$
50 b$=UPPER$(a$)
60 PRINT b$;" est en position";
70 PRINT INSTR(alphabet$,b$);
80 PRINT"dans l'alphabet.":PRINT
90 GOTO 40
run
FONCTION: Cherche dans la <chaîne contenante> l'occurence
de la <chaîne contenue> et indique la position de la première occurence de la
chaîne recherchée. En son absence, la fonction indique la valeur 0.
La position du début de la recherche est facultative, elle est
spécifiée par le paramètre <position de départ> sous la forme d'un entier compris
entre 1 et 255.
Mots clés associés: Aucun
INT
INT
(<expression numérique>)
PRINT INT(-1.995)
-2
FONCTION: Arrondit au premier entier inférieur, enlevant la
partie fractionnaire. Identique à FIX pour les
nombres positifs, il donne 1 de moins que FIX pour les nombres négatifs qui ne sont pas entiers.
Ainsi, lorsque vous appuyez sur le bouton de "tir" (Tir 2) de la
première manette en déplaçant celle-ci vers la gauche, la fonction JOY(0) envoie une valeur
décimale égale à 20, soit 16 (Tir 2) + 4 (Gauche).
Pour de plus amples informations, consultez le chapitre
"Pour information..."
COMMANDE: Associe une chaîne à la touche (KEY) correspondant au
<numéro logique de touche> spécifiée. Il existe 32 numéros
logiques de touche (de 0 à 31) occupant les touches 128 à 159. Les touches 128 (0 sur le clavier
numérique) à 140 ([CONTROL][ENTER] sur le clavier numérique) sont associées par
défaut aux chiffres 0 à 9, au point décimal,
à [RETURN] et à RUN"[RETURN] - (pour la
cassette), mais peuvent être associées à d'autres
chaînes si nécessaire. Les
numéros logiques de touche 13 à 31 (touches 141 à
159) sont affectées à des chaînes vides
par défaut mais peuvent être étendus et
associés à des touches, à l'aide de la commande KEY DEF.
Le <numéro logique de touche> fourni dans la commande KEY
doit être compris entre 0 et 31 ou entre 128 et 159 pour correspondre aux numéros
physiques des touches du clavier numérique. (Voir la représentation des touches au
chapitre "Pour information...").
La chaîne spécifiée ne doit pas dépasser 120
caractères au total. Le dépassement de cette limite entraîne une erreur (5) "Improper argument" (argument
incorrect)
KEY DEF <numéro de
touche>,<répétition>[,<normal>[,<avec
shift>[,avec control]]]
KEY 159,"c'est la touche TAB"
KEY DEF 68,1,159
Appuyez sur la petite touche [TAB]
COMMANDE: Définit la valeur logique d'une touche (KEY) DEFinie par son numéro physique, compris entre 0 et 79 (voir l'illustration des numéros
de touche en haut à droite de l'ordinateur ou au chapitre "Pour information..."). Les
paramètres <normal>, <avec shift> et <avec control> doivent contenir les valeurs
à envoyer lorsque la touche est enfoncée, seule, avec [SHIFT] ou avec [CONTROL]. Ces
paramètres sont facultatifs.
Le paramètre <répétition> permet d'activer
et de désactiver la fonction d'auto-répétition (1
ou 0). La vitesse de celle-ci est réglable par la commande SPEED KEY.
Dans l'exemple ci-dessus, la touche 159 (correspondant au numéro
logique 31) est d'abord associé à une chaîne. La commande KEY DEF définit ensuite la
touche 68 (touche [TAB]) pour activer l'auto-répétition (1) et
envoyer la valeur <normal> 159 lorsque la touche est enfoncée.
10 CLS
20 a$="AMSTRAD"
30 FOR n=1 TO 7
40 PRINT LEFT$(a$,n)
50 NEXT
run
FONCTION: Extrait un certain nombre de caractères (entre 0 et
255) à gauche d'une <chaîne alphanumérique>. Si la
chaîne est plus courte que la longueur requise, elle est utilisée entièrement.
10 LINE INPUT "entrez une phrase";a$
20 PRINT"la phrase est longue de";
30 PRINT LEN(a$);"caractères."
run
FONCTION: Donne le nombre de caractères de la <chaîne
alphanumérique>, les espaces compris.
Mots clés associés: Aucun
LET
LET <variable>=<expression>
LET x=100
COMMANDE: Un reste des BASICS historiques, pour lesquels on devait
annoncer ses variables. Seulement utile pour la compatibilité avec des
programmes antérieurs. En AMSTRAD BASIC, il suffit d'écrire:
x=100
Mots clés associés: Aucun
LINE INPUT
LINE INPUT [#<numéro de canal>,][;][<chaîne>
<séparateur>] <variable en chaîne>
10 LINE INPUT "tapez une ligne de texte
ponctuée. ";a$
20 CLS
30 PRINT"la variable a$ est bien egale a :"
40 PRINT a$
run
COMMANDE: Reçoit une ligne entière en provenance du canal
indiqué (# 0 en l'absence de spécification). Le premier [;] point-virgule
facultatif supprime le retour chariot/saut de ligne qui intervient normalement après
exécution de la commande.
Le <séparateur> peut être un point-virgule ou une
virgule. Le point-virgule entraîne l'affichage d'un point d'interrogation; la virgule le supprime.
L'entrée de LINE INPUT
au clavier se termine par l'activation de la touche [RETURN].
LINE INPUT en provenance du canal #9 de la disquette (ou de la
cassette) se termine par un retour chariot ou par l'affectation de plus de 255 caractères
à la <variable en chaîne>.
COMMANDE: Liste le programme sur le canal désiré. #0 est
l'écran, #8 est l'imprimante. Le LISTage peut
être provisoirement interrompu si vous appuyez une fois sur la touche [ESC], pour être ensuite repris avec la barre
d'espacement. Si vous appuyez deux fois sur [ESC], vous arrêtez le listage et revenez au mode
direct.
Vous pouvez omettre le premier ou le dernier numéro du
paramètre <ensemble de lignes> pour lister le programme depuis le début, ou
jusqu'à la fin.
Exemples:
LIST -200
...ou:
LIST 50-
...liste la totalité du programme.
LIST
Mots clés associés: Aucun
LOAD
LOAD <nomfich>[,<adresse>]
LOAD"fichdisc.xyz",&2AF8
COMMANDE: Charge en mémoire un programme BASIC se trouvant sur
disquette, en écrasant tout programme en place. Avec l'option de l'adresse,
charge un fichier binaire à l'adresse indiquée au lieu de l'adresse à laquelle il se
trouvait au moment de la sauvegarde.
Un programme protégé ne peut PAS être chargé
par la commande LOAD car il est alors immédiatement effacé de la mémoire. Dans ce cas,
utilisez RUN ou CHAIN.
LOCATE [#<numéro de canal>,]<coordonnée x>,<coordonnée
y>
10 MODE 1
20 FOR n=1 TO 20
30 LOCATE n,n
40 PRINT CHR$(143);"position";
50 PRINT n;",";n
60 NEXT
run
COMMANDE: Déplace le curseur de texte vers une nouvelle position
relative au coin supérieur gauche de la fenêtre (WINDOW). #0
représente le canal par défaut.
10 a$="REGARDEZ COMMENT LES LETTRES SONT CHANGEES "
20 PRINT LOWER$(a$+"EN TYPE MINUSCULE")
run
FONCTION: Change toutes les majuscules d'une chaîne
alphanumérique en minuscules. Utile quand on attend des réponses composées d'un
mélange de majuscules et de minuscules.
10 MODE 0:INK 5,21:INK 8,16
20 MOVE -100*RND,400*RND
30 WHILE XPOS<640
40 FOR x=1 TO 8
50 MASK 2^ (8-x)
60 DRAWR 32,0,x,1:MOVER -32,0
70 NEXT
80 MOVER 34,0
90 WEND:GOTO 20
run
COMMANDE: Définit le modèle à utiliser pour le
tracé des lignes. La valeur binaire du <nombre entier> comprise entre 0 et 255 active (1) ou
désactive (0) les bits dans chaque groupe adjacent de 8 pixels.
Le paramètre <tracé du premier point>
détermine si le premier point de la ligne doit être tracé (1) ou non (0).
Vous pouvez mettre l'un des paramètres mais pas les deux. Si
vous en omettez un, sa spécification demeure inchangée.
MID$ (<chaîne
alphanumérique>,<position de
départ>[,<longueur de la sous chaîne>])
10 MODE 1:ZONE 3
20 a$="ENCYCLOPEDIE"
30 PRINT"Regardez comment epeler ";a$
40 PRINT
50 FOR n=1 TO LEN(a$)
60 PRINT MID$(a$,n,1),
70 FOR t=1 TO 700:NEXT t,n
80 PRINT:PRINT
90 INPUT "entrez un nouveau mot";a$
100 GOTO 50
run
FONCTION: Renvoie une nouvelle sous-chaîne
commençant à la <position de départ> de
la <chaîne alphanumérique> et
contenant le nombre de caractères correspondant à la
<longueur de la sous-chaîne>. Si le paramètre
<longueur de la sous-chaîne> n'est pas spécifié, la fonction renvoie le reste de la
<chaîne alphanumérique> à partir de la
<position de départ>.
Si la <position de départ> est supérieure à
la longueur totale de la <chaîne
alphanumérique>, une chaine vide est renvoyée. La <position de
départ> est comprise entre 1 et 255, la <longueur de la sous-chaîne> entre 0 et 255.
MID$ (<variable chaîne>,<position
d'insertion>[,<longueur de la nouvelle chaîne>])
= <nouvelle
chaîne alphanumérique>
10 a$="bonjour"
20 MID$(a$,3,2)="XX"
30 PRINT a$
run
boXXour
COMMANDE: Insère dans la chaîne spécifiée
une <nouvelle chaîne alphanumérique> d'un nombre de caractères donné, à la <position
d'insertion>.
Lorsque vous utilisez MID$ en
tant que COMMANDE, vous devez faire appel à une <variable chaîne>, tel que A$ et non PAS à une
constante comme "bonjour".
OPERATEUR: Donne le reste de la division entière de
l'<argument 1> par l'<argument 2> (on dit <argument 1> MODulo <argument 2>.
Mots clés associés: Aucun
MODE
MODE <nombre entier>
10 m=m+1: IF m>2 THEN m=0
20 MODE m
30 PRINT"Ceci est le mode";m
40 PRINT"Pressez une touche"
50 IF INKEY$="" THEN GOTO 50 ELSE 10
run
COMMANDE: Modifie le mode d'écran (0,1 ou 2) et rétablit
sur l'écran l'encre 0, même si l'encre actuellement utilisée par le papier est
différente. Toutes les fenêtres et curseurs sont réinitialisés.
10 MODE 1:TAG
20 x=RND*800-100:y=RND*430
30 MOVE x,y
40 PRINT"je suis ici";
50 GOTO 20
run
COMMANDE: Positionne le curseur graphique au point absolu
spécifié. Le paramètre facultatif <encre> (compris entre 0 et 15) permet de changer la
couleur du stylo graphique.
Le paramètre facultatif <mode d'encre> détermine
l'interaction de l'encre sur l'affichage en place à l'écran. Il existe 4 <modes d'encre>:
10 MODE 1:TAG:MOVE 0,16
20 PRINT"la vie a ses";
30 FOR n=1 TO 10
40 MOVER -45,16
50 PRINT"hauts";:NEXT:PRINT" et";
60 FOR n=1 TO 10
70 MOVER -64,-16
80 PRINT"bas";:NEXT
run
COMMANDE: Positionne le curseur graphique en coordonnées
relatives (par rapport à la position actuelle). Le paramètre facultatif
<encre> (compris entre 0 et 15) permet de changer la couleur du stylo graphique.
Le paramètre facultatif <mode d'encre>
détermine l'interaction de l'encre sur l'affichage en place à l'écran. Il existe 4 <modes d'encre>:
COMMANDE: Efface le programme et les variables en mémoire. Les
définitions de touches ne sont pas effacées et l'affichage reste ce qu'il était
(MODE, PEN, PAPER, INK etc.).
Mots clés associés: Aucun
NEXT
NEXT [<liste de: <variable>]
10 FOR a=1 TO 3
20 FOR b=0 TO 26
30 MODE 1
40 PEN a:BORDER b
50 PRINT"PEN";a;"BORDER";b
60 FOR c=1 TO 500
70 NEXT c,b,a
run
COMMANDE: Marque la fin d'une boucle commencée avec FOR. La
commande NEXT peut être anonyme ou peut se rapporter au FOR
concerné. Dans l'exemple ci-dessus, la <liste de variable> doit apparaître en sens
inverse de la spécification des commandes FOR, affin d'éviter le chevauchement des boucles
imbriquées.
IF NOT "alain" < "bernard" THEN PRINT
"vrai" ELSE PRINT "faux"
faux
IF NOT "chat" > "chien" THEN PRINT "vrai"
ELSE PRINT "faux"
vrai
......
PRINT NOT -1
0
PRINT NOT 0
-1
OPERATEUR: Exécute des opérations par bit sur des
entiers. Inverse chaque bit de l'argument. Pour de plus amples informations, consultez la partie 2 du
chapitre "A vos heures de loisirs...".
10 ON BREAK CONT
20 PRINT"Le programme CONTinuera si vous essayez"
25 PRINT "de faire *Break* avec la touche [ESC]":PRINT
30 FOR t=1 TO 10000:NEXT:GOTO 20
run
COMMANDE: Annule l'action de la touche [ESC], empêchant
l'arrêt du programme. Cette commande est à utiliser avec précaution car le
programme ne peut alors être interrompu que par réinitialisation complète de l'ordinateur
(vous devez donc sauvegarder le programme avant de le lancer).
Vous pouvez désactiver ON BREAK CONT par ON BREAK STOP à
l'intérieur d'un programme.
10 ON BREAK GOSUB 40
20 PRINT"le programme tourne"
30 GOTO 20
40 CLS::PRINT"Appuyer 2 fois [ESC],";
50 PRINT"appelle le sous-programme"
60 FOR t=1 TO 20000:NEXT
70 RETURN
run
COMMANDE: Demande au BASIC de passer au sous-programme
spécifié par le <numéro de ligne> lorsque vous appuyez deux
fois sur [ESC].
10 ON BREAK GOSUB 40
20 PRINT"le programme tourne"
30 GOTO 20
40 CLS:PRINT"Appuyer 2 fois [ESC],";
50 PRINT"appelle le sous-programme"
60 FOR t=1 TO 20000:NEXT
65 ON BREAK STOP
70 RETURN
run
COMMANDE: Désactive les commandes ON BREAK CONT et ON BREAK
GOSUB pour permettre l'arrêt du programme sur activation de la
touche [ESC]. Dans l'exemple ci-dessus, la commande ON BREAK GOSUB ne
fonctionne qu'une
seule fois car elle est désactivée à la ligne 65 dans le
sous-programme ON BREAK.
10 ON ERROR GOTO 60
20 CLS:PRINT"Si une erreur est trouvee, ";
30 PRINT"alors LISTer le programme"
40 FOR t=1 TO 4000:NEXT
50 GOTO 100
60 PRINT"Erreur detectee a la ligne";
70 PRINT ERL:PRINT:LIST
run
COMMANDE: Passe à la ligne spécifiée
aussitôt qu'une erreur est détectée.
La commande ON ERREUR GOTO 0
désactive le déroutement du programme sur erreur et rétablit le traitement normal des erreurs par le BASIC.
10 PAPER 0:PEN 1:INK 0,1
20 CLS:PRINT" MENU":PRINT
30 PRINT"1 - Changer le cadre":PRINT
40 PRINT"2 - Changer le stylo":PRINT
50 PRINT"3 - Changer de
mode":PRINT
60 INPUT"Votre choix";x
70 ON x GOSUB 90,110,130
80 GOTO 20
90 b=b-1:IF b<0 THEN b=26
100 BORDER b:RETURN
110 p=p-1:IF p<2 THEN p=26
120 INK 1,p:RETURN
130 m=m-1:IF m<0 THEN m=2
140 MODE m:RETURN
run
COMMANDE: Sélectionne une ligne de sous-programme en fonction de
la valeur du <sélecteur> (nombre entier compris entre 0 et 255).
L'ordre des valeurs des <sélecteurs> détermine le numéro de ligne à extraire de la <liste
de:
<numéro de ligne>. Dans l'exemple ci-dessus:
1 provoque le passage à la ligne 90
2 provoque le passage à la ligne 110
3 provoque le passage à la ligne 130
Si cette expression est égale à zéro, ou si elle
est supérieure au nombre de lignes de la liste spécifiée dans la commande, la sélection n'a pas
lieu.
10 CLS:PRINT" MENU":PRINT
20 PRINT"1 - LISTe le programme":PRINT
30 PRINT"2 - EDITe pour corriger":PRINT
40 PRINT"3 - Fait le CATalogue":PRINT
50 INPUT"Votre choix";n
60 ON n GOTO 80,90,100
80 LIST
90 AUTO
100 CAT
run
COMMANDE: Sélectionne une ligne à laquelle le
programme doit sauter en fonction de la valeur du <sélecteur> (nombre entier compris entre 0 et
255).
L'ordre des valeurs des <sélecteurs>
détermine le numéro de ligne à extraire de la <liste
de:
<numéro de ligne>.
Dans l'exemple ci-dessus:
1 provoque le passage à la ligne 80
2 provoque le passage à la ligne 90
3 provoque le passage à la ligne 100
Si cette expression est égale à zéro, ou si elle
est supérieure au nombre de lignes de la liste spécifiée dans la commande, la sélection n'a pas
lieu.
Mots clés associés: Aucun
ON SQ GOSUB
ON SQ (<numéro de canal>) GOSUB
<numéro de ligne>
10 ENV 1,15,-1,1
20 ON SQ(1) GOSUB 60
30 MODE 0:ORIGIN 0,0,200,440,100,300
40 FOR x=1 TO 13:FRAME:MOVE 330,200,x
50 FILL x::NEXT:GOTO 40
60 READ s:IF s=0 THEN RESTORE:GOTO 60
70 SOUND 1,s,25,15,1
80 ON SQ(1) GOSUB 60:RETURN
90 DATA 50,60,90,100,35,200,24,500,0
run
COMMANDE: Provoque un déroutement en cas de place dans une file
sonore (Sound Queue). Le <numéro de canal> est un nombre
entier indiquant une des valeurs:
1: pour canal A
2: pour canal B
4: pour canal C
Pour de plus amples informations concernant la logique sonore,
consultez la partie 2 du chapitre
"A vos heures de loisirs..."
10 REM Ouvre et Recoit le fichier en provenance de
la disquette
20 OPENIN "NOMFICH":INPUT#9,a,a$
30 CLOSEIN:PRINT"les 2 valeurs sont:"
40 PRINT:PRINT a,a$
run
COMMANDE: Ouvre un fichier existant sur la disquette afin d'y lire des
données destinées au programme en mémoire. Le fichier à ouvrir
doit être un fichier ASCII. Cet exemple ne fonctionne que si vous avez créé le fichier selon
l'exemple de la commande OPENOUT.
10 REM Ouvre et Sort le fichier sur la disquette
20 INPUT"Donnez moi un nombre";a
30 INPUT"Donnez moi un mot";a$
40 OPENOUT "NOMFICH"
50 WRITE#9,a,a$
60 CLOSEOUT:PRINT"Les donnees sont sauvees sur
disquette"
run
COMMANDE: Ouvre sur la disquette un fichier de sortie utilisable par le
programme en mémoire.
IF "alain" < "bernard" OR "chien" > "chat"
THEN PRINT "vrai" ELSE PRINT "faux"
vrai
IF "bernard" < "alain" OR "chat" > "chien"
THEN PRINT "vrai" ELSE PRINT "faux"
faux
IF "alain" < "bernard" OR "chat" > "chien"
THEN PRINT "vrai" ELSE PRINT "faux"
vrai
.....
PRINT 1 OR 1
1
PRINT 0 OR 0
0
PRINT 1 OR 0
1
OPERATEUR: Exécute en langage machine des opérations
booléennes sur des entiers. Donne 1 dans tous les cas sauf si les deux arguments sont égaux
à 0. Pour de plus amples informations sur la
logique, consultez la partie 2 du
chapitre
"A vos heures de loisirs...".
10 MODE 1:BORDER 13:TAG
20 ORIGIN 0,0,100,540,300,100
30 GRAPHICS PAPER 3:CLG
40 FOR x=550 TO -340 STEP -10
50 MOVE x,206
60 PRINT"Voici une fenetre graphique";
70 FRAME:NEXT:GOTO 40
run
COMMANDE: Etablit le point d'origine du curseur fraphique aux
coordonnées <x>, <y> spécifiées. Vous pouvez également fixer
les dimensions de la fenêtre graphique par spécification des quatres derniers paramètres
facultatifs. Si les coordonnées spécifiées pour la fenêtre graphique se trouvent en dehors de
l'écran, les bord de l'écran sont alors considérés comme les limites de la fenêtre.
10 MODE 0:PEN 0:INK 0,13
20 FOR p=1 TO 15
30 PAPER p:CLS
40 LOCATE 7,12:PRINT"PAPER";p
50 FOR t=1 TO 5000:NEXT t,p
60 PAPER 5:CLS
run
COMMANDE: Etablit la couleur du fond pour le caractères. Lors de
l'affichage des caractères sur l'écran, sa matrice (la grille) est
remplie par l'<encre> correspondant au papier (PAPER INK) avant qu'il ne soit lui-même affiché
(sauf en cas de mode transparent).
Si le <numéro de canal> n'est pas
spécifié, le canal #0 est pris par défaut.
Le nombre de couleurs disponibles dépend du mode choisi.
10 MODE 1:ZONE 7
20 WINDOW 1,40,1,2:WINDOW#1,1,40,3,25
30 PRINT"Adresse memoire"
40 LOCATE 20,1:PRINT"Contenu memoire"
50 FOR n=0 TO 65535
60 p=PEEK(n)
70 PRINT#1,n,"(&";HEX$(n);")";
80 PRINT#1,TAB(20);p,"(&";HEX$(p);")"
90 NEXT
run
FONCTION: Lit le contenu de la case mémoire Z80 dont
l'<adresse> est indiquée entre parenthèses. Cette adresse doit être comprise entre
&0000 et &FFFF (0 et 65535). PEEK n'opère que sur la mémoire vive (RAM),
jamais sur la mémoire morte (ROM), et fournit des valeurs comprises entre &00 et &FF (0 et
255).
PEN [#<numéro de
canal>,][<encre>][,<mode du fond>]
10 MODE 0:PAPER 0:INK 0,13
20 FOR p=1 TO 15
30 PEN p:PRINT SPACE$(47);"PEN";p
40 FOR t=1 TO 5000:NEXT t,p:GOTO 20
run
COMMANDE: Sélectionne l'<encre> à utiliser (de 0
à 15) pour écrire sur le canal indiqué (par défaut #0). Le paramètre <mode du
fond> peut être soit transparent (1), soit opaque (0).
Au moins un des deux derniers paramètres doit figurer. Si l'un
d'eux est omis, sa valeur antérieure reste inchangée.
COMMANDE: Affiche, en mode graphique, le point de coordonnées x
et y. On définit l' <encre> de ce point sur une échelle de 0 à 15.
Le paramètre facultatif <mode d'encre> détermine le
mode d'interaction entre la couleur utilisée et celle de l'écran. Voici les quatres modes
possibles:
0: Normal
1: XOR (OU exclusif)
2: AND (ET)
3: OR (OU)
20 BORDER 0:GRAPHICS PEN 1
30 MODE 1:PLOT 320,200
35 PRINT "utilisez le pave curseur pour dessiner"
40 IF INKEY(0)=0 THEN PLOTR 0,1
50 IF INKEY(1)=0 THEN PLOTR 1,0
60 IF INKEY(2)=0 THEN PLOTR 0,-1
70 IF INKEY(8)=0 THEN PLOTR -1,0
80 IF INKEY(9)=0 THEN 30:REM [COPY]=CLS
90 GOTO 40
run
COMMANDE: En mode graphique, affiche à l'écran le point
de coordonnées x et y relatives à la position du curseur à ce moment. On
définit l'<encre> de ce point sur une échelle de 0 à 15.
Le paramètre facultatif <mode d'encre>
détermine le mode d'interaction entre la couleur utilisée et celle de l'écran. Voici les quatres modes
possibles:
0: Normal
1: XOR (OU exclusif)
2: AND (ET)
3: OR (OU)
COMMANDE: Inscrit la valeur correspondant au <nombre entier>
(compris entre 0 et 255) directement dans la case de la mémoire vive (RAM) du Z80
dont l'<adresse> est indiquée.
10 MODE 1:BORDER 0:LOCATE 8,2
20 PRINT"utilisez les fleches droite/gauche "
30 WINDOW#1,1,40,12,12:CURSOR 1,1
40 FOR n=1 TO 19:PRINT CHR$(9);:NEXT
50 IF INKEY(1)<>-1 THEN PRINT
CHR$(9);
60 IF INKEY(8)<>-1 THEN PRINT
CHR$(8);
70 LOCATE #1,2,24
80 PRINT #1,"curseur texte,";
90 PRINT #1,"position horizontale=";
100 PRINT #1,POS(#0):GOTO 50
run
FONCTION: Calcule la POSition
du curseur de texte sur l'axe horizontal, à partir du bord
gauche de la fenêtre. Le <numéro de canal> doit
obligatoirement être précisé; il ne prend pas la
valeur #0 par défaut.
POS(#8) calcule la position horizontale du chariot de l'imprimante par
rapport à la marge gauche (de coordonée 1).
POS(#9) calcule la position logique du canal d'unité
de disquettes, c'est-à-dire le nombre de caractères transmis depuis le dernier «retour
chariot».
PRINT [#<numéro de canal>,][<liste de:
<article à imprimer>]
10 a$="petite"
20 b$="Ceci est une longue chaine de caracteres"
30 PRINT a$;a$
40 PRINT a$,a$
50 PRINT
60 PRINT b$;b$
70 PRINT b$,b$
run
COMMANDE: Transmet la <liste de: <article à imprimer>
ou à afficher sur le canal indiqué, (#0 par défaut).
Le point-virgule indique à l'ordinateur qu'un article doit
être imprimé immédiatement à la suite du précédent. Toutefois, s'il est trop long pour
tenir sur la même ligne, l'ordinateur passe tout de même à la ligne.
La virgule indique qu'un article doit être positionné
à la tabulation suivante. Toutefois, si l'impression ou l'affichage de l'article précédent
déborde sur la tabulation indiquée, l'ordinateur décale le nouvel article d'une tabulation
supplémentaire.
PRINT SPC PRINT TAB
PRINT [#<numéro de
canal>,][<liste de: <article à imprimer>][;]
[SPC(<nombre entier>)][<liste de: <article
à imprimer>]
PRINT [#<numéro de canal>,][<liste de:
<article à imprimer>][;]
[TAB(<nombre entier>)][<liste de: <article
à imprimer>]
10 PRINT"Ceci est l'instruction SPC"
20 FOR x=6 TO 15
30 PRINT SPC(5) "a";SPC(x);"b"
40 NEXT
50 PRINT"Ceci est l'instruction TAB"
60 FOR x=6 TO 15
70 PRINT TAB(5) "a";TAB(x);"b"
80 NEXT
run
SPC ménage le nombre
d'espaces vides indiqué par le <nombre entier> avant
d'imprimer ou d'afficher l'article indiqué, à condition que ce
dernier tienne intégralement sur la ligne. Il est donc inutile d'utiliser le point-virgule avec la commande
SPC.
TAB ménage, à partir de la marge gauche, le
nombre d'espaces vides indiqué avant avant d'imprimer ou d'afficher l'article indiqué, à
condition que ce dernier tienne sur la ligne. Le point-virgule est donc inutile après TAB. Si le curseur a déjà
dépassé la position demandée, un changement de ligne est effectué avant la
tabulation.
PRINT USING
PRINT [#<numéro de canal>][<liste
de:<article à imprimer>][;]
[USING<modèle de format>][<séparateur>
<expression>]
10 FOR x=1 TO 10
20 n=100000*(RND^ 5)
30 PRINT"marchandise";USING"########,##";n
40 NEXT
run
PRINT USING permet de définir le format d'impression ou
d'affichage d'une expression transmise par la commande PRINT. On définit pour cela le
<modèle de format> sous lequel on désire voir apparaître l'expression. On utilise
comme <séparateur> soit une virgule, soit un point-virgule. Le <modèle de format> est
une chaîne de caractères composée des « indicateurs de champ
» suivants:
Formats numériques
Dans un nombre:
# Chaque signe # indique l'emplacement d'un chiffre.
Exemple: ######
. Indique
l'emplacement du point décimal (équivalent à notre
virgule).
Exemple:######.##
, (Réserve
un espace). Ce signe, ne pouvant figurer qu'immédiatement avant
le point décimal, indique que les chiffres
situés à gauche du point décimal seront
disposés par groupes de trois (correspondant aux milliers)
séparés entre eux par une virgule
Exemple:######,.##
Encadrement d'un nombre:
££ (Réserve deux espaces). Indique que
le signe £ apparaîtra immédiatement avant le premier chiffre ou le point
décimal, c'est à dire sur l'un des emplacements
réservés aux chiffres.
Exemple: ££######,.##
** (Réserve deux espaces). Indique que tous
les espaces vides situés avant le nombre seront comblés par les
astérisques.
Exemple: **######,.##
**£ (Réserve trois espaces).
Additionne les options ** et ££, c'est à dire les
astérisques en tête et le signe
£ précédent immédiatement le nombre.
Exemple: **£######,.##
$$ (Réserve deux espaces). Indique
que le signe $ apparaîtra immédiatement à gauche du premier
chiffre ou du point décimal, c'est-à-dire sur des emplacements
réservés aux chiffres.
Exemple:$$######,.##
**$ (Réserve trois espaces). Additionne les
options ** et $$, c'est-à-dire les astérisques en tête et le signe
$ précédant immédiatement le nombre.
Exemple: **$######,.##
+ Indique qu'on désire voir figurer le
signe du nombre. Ce signe apparaîtra avant le nombre si le + est
situé au début du <modèle de format> et
après le nombre s'il est situé
à la fin.
Exemple: +####.####
- Le signe - ne peut figurer qu' A LA
FIN du masque. Il demande la présence du signe - après tout
nombre ou tout exposant négatifs. En l'absence de cette spécification, le
signe - apparaît par défaut avant le nombre négatif.
Exemple:####.####-
^^^^ Indique que le nombre doit apparaître en exposant. Les
signes ^^^^ se placent APRES le dernier
emplacement des chiffres, mais AVANT tout signe + ou - final.
Exemple: #.####^^^^+
La longueur maximale du <modèle de format> d'un nombre est
de 20 caractères. Les nombres sont arrondis au nombre de signes indiqué.
Si un format est trop petit pour contenir l'expression saisie:
PRINT USING "####";12345678
... celle-ci n'est pas tronquée, mais apparaît dans son
intégralité, précédée du signe %
indiquant un «format erroné».
Format dune chaîne
alphanumérique
10 CLS:a$="abcdefghijklmnopqrst"
20 PRINT"chaine alphanum.= ";a$
30 PRINT:PRINT"Avec ! = ";
40 PRINT USING "!";a$
50 PRINT:PRINT"Avec \espaces\ = ";
60 PRINT USING
"\ \";a$
70 PRINT:PRINT"Avec &
= ";
80 PRINT USING "&";a$
90 GOTO 90
run
! indique que seul le premier caractère de la
chaîne doit apparaître.
Exemple: !
\<espaces>\
Indique que seuls les x premiers caractères
de la chaîne doivent apparaître, x étant égal à la longueur du format (barres
comprises).
Exemple:\
\
& Indique que la chaîne doit apparaître «telle
quelle».
Exemple: &
Le <modèle de format> d'une chaîne ne peut
excéder 255 caractères.
Tout <modèle de format> peut être
représenté par une variable alphanumérique, comme le montre l'exemple suivant:
10 a$="FF######,.##"
20 b$="!"
30 PRINT USING a$;12345.6789;
40 PRINT USING b$;"centimes"
run
Pour plus de détails concernant les formats, voir la
deuxième partie du
chapitre intitulé «A vos heures de loisirs...»
COMMANDE: Donne une valeur aléatoire calculée à
partir de l'<expression
numérique> indiquée. Le générateur de
nombres
aléatoires fournit une séquence pseudo-aléatoire
dans laquelle chaque nombre dépend du
précédent. La séquence elle-même est
prédéterminée. Si la valeur initiale n'est pas
précisée dans la commande, c'est l'utilisateur qui
l'entrera en cours d'exécution. RANDOMIZE TIME fournit une
séquence pratiquement imprévisible.
10 FOR n=1 TO 8
20 READ a$,c
30 PRINT a$;" ";:SOUND 1,c:NEXT
40 DATA voici,478,les,426,8,379,notes
50 DATA 358,de,319,la,284,gamme,253,.,239
run
COMMANDE: Lit les données contenues dans une instruction DATA et
les assigne à des variables. READ passe
automatiquement d'une donnée à la suivante. La commande RESTORE permet de revenir
à une commande DATA antérieure.
Pour plus de détails, voir la deuxième partie
du
chapitre intitulé «A vos heures de
loisirs...»
10 SOUND 65,1000,100
20 PRINT"appuyez [R] pour liberer la note"
30 IF INKEY(50)=-1 THEN 30
40 RELEASE 1
run
COMMANDE: Libère les canaux sonores bloqués par la
commande SOUND.
Le paramètre <canaux sonores> prend les valeurs suivantes:
1: Libère le canal A
2: Libère le canal B
3: Libère les canaux A et B
4: Libère le canal C
5: Libère les canaux A et C
6: Libère les canaux B et C
7: Libère les canaux A,B et C
10 REM CHASSE AUX ENVAHISSEURS DANS L'HYPERESPACE INTERGALACTIQUE
20 REM
COPYRIGHT by AMSOFT
COMMANDE: Insère une REMarque
dans le programme. BASIC ne tient pas compte du <texte> situé sur la ligne à droite de REM, même si celui-ci comprend
un séparateur d'instructions ":" ou tout autre code.
On peut remplacer REM par une
apostrophe ' dans tous les cas, SAUF à l'intérieur d'une instruction DATA.
Mots clés associés: Aucun
REMAIN
REMAIN (<numéro de chronomètre>)
10 AFTER 500,1 GOSUB 40
20 AFTER 100,2 GOSUB 50
30 PRINT"Le programme tourne":GOTO 30
40 REM ce sous programme ne sera plus appele dans la
mesure
45 REM ou il a ete rendu inoperant en ligne 70
50 PRINT:PRINT "Le chronometre 1 va ";
60 PRINT"etre supprime par REMAIN."
70 PRINT"il restait";REMAIN(1);"unites de temps au
chrono 1"
run
FONCTION: Lit le temps restant à décompter par le
chronomètre indiqué (de 0 à 3), avant de le désactiver. Pour plus de détail concernant le
interruptions, consultez la deuxième partie du
chapitre intitulé «A vos heures de
loisirs...».
RENUM [<nouveau numéro de ligne>][,[<ancien
numéro de ligne>][,<incrément>]]
10 CLS
20 REM cette ligne deviendra: ligne 123
30 REM cette ligne deviendra: ligne 124
40 REM cette ligne deviendra: ligne 125
RENUM 123,20,1
LIST
COMMANDE: RENUMérote
les lignes d'un programme.
L'<ancien numéro de ligne> est un paramètre
indiquant la ligne du programme à laquelle on désire commencer la numérotation. En
l'absence de ce paramètre, toutes les lignes du programme seront renumérotées. Le <nouveau
numéro de ligne> indique le nouveau numéro de la première ligne
renumérotée (10 par défaut).
L'<incrément> indique l'espacement désiré entre deux lignes (10 par
défaut). RENUM
opère les réajustements nécessaires à l'intérieur des instructions
d'appels telles que GOTO et GOSUB. En revanche, il laisse inchangé les numéros de lignes
contenus dans le chaînes de caractères apparaîssant dans les commandes KEY,
REM, CHAIN et CHAIN MERGE. Les numéros de lignes doivent être compris entre 1 et 65535.
10 READ a$:PRINT a$;" ";
20 RESTORE 50
30 FOR t=1 TO 500:NEXT:GOTO 10
40 DATA les data recuperes peuvent etre lus encore
50 DATA et encore
run
COMMANDE: Ramène le pointeur sur l'instruction DATA indiquée. En l'absence de paramètre, le pointeur retourne à la première
instruction DATA du programme.
Pour plus de détails, consultez la deuxième
partie du
chapitre intitulé «A vos heures de
loisirs...».
10 ON ERROR GOTO 60
20 FOR x=10 TO 0 STEP-1:PRINT 1/x:NEXT
30 END
40 PRINT"je viens ici en cas d'erreur"
50 END
60 PRINT"erreur No.";ERR;"a la ligne";ERL
70 RESUME 40
run
COMMANDE: Reprend l'exécution d'un programme après
la détection et le traitement d'une erreur par la commande ON ERROR GOTO. Si aucun
<numéro de ligne> n'est indiqué, l'exécution du programme reprend à
la ligne contenant l'erreur détectée. Supprimez ce paramètre dans l'exemple ci-dessus, puis faites tourner
le programme.
10 ON ERROR GOTO 90
20 PRINT"tapez [ENTER] a chaque fois"
30 INPUT "1";a
40 INPUT "2";a
50 inpot "3";a:REM erreur de syntaxe
60 INPUT "4";a
70 INPUT "5";a
80 END
90 PRINT"erreur No.";ERR;"a la ligne";ERL
100 RESUME NEXT
run
COMMANDE: Reprend l'exécution d'un programme après
la détection et le traitement d'une erreur par la commande ON ERROR GOTO.
L'exécution du programme reprend à partir de la
ligne suivant immédiatement la ligne erronée.
10 GOSUB 50:PRINT "Apres le GOSUB":END
50 FOR n=1 TO 20
60 PRINT"sous-programme"
70 NEXT:PRINT
80 RETURN
run
COMMANDE: Indique la fin d'un sous-programme. Après
l'exécution d'un sous-programme, BASIC retourne à l'instruction suivant
immédiatement l'appel GOSUB correspondant.
10 MODE 1:a$="ordinateur CPC 6128"
20 FOR n=1 TO 16:LOCATE 41-n,n
30 PRINT RIGHT$(a$,n)
40 NEXT
run
FONCTION: Extrait un certain nombre de caractères (entre 0 et
255) à gauche d'une <chaîne alphanumérique>. Si la
chaîne est plus courte que la <longueur requise>, elle est utilisée entièrement.
10 RANDOMIZE
20 FOR x=1 TO -1 STEP-1
30 PRINT"parametre RND=";x
40 FOR n=1 TO 6
50 PRINT RND(x)
60 NEXT n,x
run
FONCTION: Fournit le prochain nombre de la séquence pseudo
aléatoire en cours lorsque l'<expression numérique> est positive ou
lorsqu'elle ne figure pas dans la commande.
Lorsque l'<expression numérique> est nulle, RND renvoie le dernier nombre
généré.
Une valeur négative de l'<expression
numérique> lance une nouvelle séquence
aléatoire, dont RND fournit le premier
élément.
ROUND
(<expression numérique>[,<nombre de
décimales>])
10 FOR n=4 TO -4 STEP -1
20 PRINT ROUND(1234.5678,n),
30 PRINT "arrondi a";n;"decimales"
40 NEXT
run
FONCTION: Arrondit l'<expression numérique> au
nombre de chiffres après la virgule ou de puissances de dix indiqué par le paramètre <nombre
de décimales>. Si ce paramètre est négatif, l'expression est arrondie à
un entier absolu, suivi d'un nombre de zéros égal à sa valeur absolue.
COMMANDE: Charge et exécute un programme BASIC ou un
programme-objet situé sur la disquette. Tout programme déjà présent en
mémoire est automatiquement écrasé.
Cette commande permet d'accéder directement aux programmes BASIC
protégés.
COMMANDE: Exécute le programme BASIC présent en
mémoire, en commençant au <numéro de ligne> indiqué ou, à
défaut, au début du programme. RUN réinitialise
toutes les variables.
Cette commande peut ne pas donner accès aux programmes
protégés chargés en mémoire.
SAVE <nomfich>[,<type de fichier>][,<paramètres
binaires>]
SAVE "fichdisc.xyz"
...sauvegarde le fichier en mode BASIC non protégé.
SAVE "fichdisc.xyz",P
...sauvegarde le fichier en mode BASIC Protégé.
SAVE "fichdisc.xyz",A
...sauvegarde le fichier en mode ASCII.
SAVE "fichdisc.xyz",B,8000,3000,8001
...sauvegarde le fichier en mode Binaire. Dans notre exemple, le
programme sera stocké en mémoire à partir de l'adresse 8000 et occupera 3000 octets. L'adresse (facultative) du point d'entrée est 8001.
COMMANDE: Sauvegarde sur disquette le programme se trouvant
actuellement en mémoire. Une zone mémoire chargée sur disquette
s'appelle un fichier Binaire. Voici quels sont les différents paramètres Binaires:
<adresse du début>,<taille du fichier>[,<point
d'entrée>]
Il est possible de sauvegarder la mémoire d'écran sous
forme de fichier Binaire. Cette opération, appelée «vidage
d'écran », s'effectue au moyen de la commande suivante:
SAVE "ecran",B ,&C000,&4000
On obtient ensuite son rechargement à l'écran en entrant
la commande:
10 FOR n=200 TO -200 STEP -20
20 PRINT" SGN renvoi";
30 PRINT SGN(n);"pour une valeur de:";n
40 NEXT
run
FONCTION: Etablit le SiGNe de l'<expression
numérique>. SGN
renvoie les valeurs:-1 (si l'expression est négative), 0
(si elle est nulle) et 1 (si elle est positive).
SOUND <état de canal>,<période
sonore>[,<durée>[,<volume>[,<enveloppe de
volume>,[<enveloppe de tonalité>[,<période du
bruit>]]]]]
10 FOR z=0 TO 4095
20 SOUND 1,z,1,12
30 NEXT
run
COMMANDE: Permet la programmation d'un son, à l'aide des
paramètres suivants:
Paramètre 1: <état de
canal>
L'<état de canal> admet pour valeur des entiers
compris entre 1 et 255. La conversion en binaire de ce paramètre donne la signification de chaque bit
selon la table de correspondance suivante:
Bit 0 (1 en décimale): sortir le son sur le canal A (Bit de poid
faible)
Bit 1 (2 en décimale): sortir le son sur le canal B
Bit 2 (4 en décimale): sortir le son sur le canal C
Bit 3 (8 en décimale): rendez-vous avec le canal A
Bit 4 (16 en décimale): rendez-vous avec le canal B
Bit 5 (32 en décimale): rendez-vous avec le canal C
Bit 6 (64 en décimale): bloquer un canal sonore
Bit 7 (128 en décimale): vider un canal sonore (Bit
de poid fort)
L'<état de canal> 68, par exemple, aura l'effet
suivant:
Sortie sur le canal C (4), à l'état bloqué (64).
Paramètre 2: <période
sonore>
Ce paramètre établit la hauteur du son,
c'est-à-dire la «note» produite
(par exemple Do, Ré, Mi, Fa, Sol). Chaque note se définit par une valeur
numérique représentant sa <période sonore> (Voir le chapitre «Pour
information... »).
Paramètre 3:
<durée>
Ce paramètre établit la longueur, ou «durée»,
du son. Une unité correspond à un centième de seconde. La <durée> du son prend par
défaut la valeur 20, c'est-à-dire un cinquième de seconde.
En cas de paramètre de <durée> nul, la longueur du
son sera celle de l'enveloppe de volume indiquée.
Si le paramètre de <durée> est négatif,
l'enveloppe de volume sera répétée pendant un nombre de fois égal à la valeur absolue du
paramètre.
Paramètre 4: <volume>
Ce paramètre établit le volume sonore initial d'une note.
Il peut prendre une valeur entre 0 (volume nul) et 15 (volume maximal). L'ordinateur choisit par
défaut la valeur 12.
Paramètre 5: <enveloppe de volume>
Il est possible de moduler le volume d'une note durant son exécution à l'aide de la commande ENV.
Cette commande vous
permet de définir à l'avance un maximum de quinze
enveloppes différentes, codées de 1 à 15. Le
paramètre <enveloppe de volume> de la commande SOUND permet ensuite
de sélectionner une de ces enveloppes prédéfinies.
Voir commande ENV
Paramètre 6: <enveloppe de tonalité>
Des variations de période, donc de hauteur, peuvent être
obtenues durant l'exécution d'une note par l'intermédiaire de la commande ENT. Cette commande vous permet de définir à l'avance un maximum de 15 enveloppes de
tonalités différentes, codées de 1 à 15. Le paramètre <enveloppe de
tonalité> de la commande SOUND
permet ensuite de sélectionner une de ces enveloppes prédéfinies.
Si, dans la commande ENT, vous
avez utilisé un numéro d'enveloppe négatif, la valeur
absolue de ce nombre devra alors être prise comme paramètre de la commande SOUND.
Voir commande ENT
Paramètre 7: <période de bruit>
Vous disposez d'un choix de bruits blancs pouvant être
ajoutés ou supprimés du signal sonore à l'aide du paramètre <période
de bruit> (valeur comprise entre 0 et 31).
Pour en savoir plus sur le mode sonore, lire la
deuxième partie du
chapitre intitulé «A vos heures de loisirs...»
10 BORDER 7,18
20 FOR i=30 TO 1 STEP -1
30 SPEED INK i,i
40 FOR t=1 TO 700:NEXT t,i
run
COMMANDE: Permet d'établir la période d'alternance
lorsqu'une instruction INK ou BORDER prescrit l'utilisation
de deux couleurs intermittentes. Les durées respectives d'utilisation de la première et de la seconde couleur sont
indiquées en cinquantièmes de secondes par les paramètres <période 1>
et <période 2>.
Lors du choix des paramètres, pensez aux risques d'effets
secondaires hypnotiques !!!
10 CLS:FOR K=7 TO 1 STEP -2
20 PRINT"Entrez votre nom , puis [RETURN]"
30 SPEED KEY k,k
40 LINE INPUT a$:NEXT
50 PRINT"quel drole de nom !"
run
COMMANDE: Etablit la vitesse de répétition automatique du
clavier. Le paramètre <délai initial> fixe le temps de
réaction (mesuré en cinquantièmes de secondes)
entre l'enfoncement de la touche et le début de la
répétition automatique. L'<intervalle
inter-répétitions> établit le laps de temps séparant les
répétitions.
La commande SPEED KEY
ne
concerne que les touches pour lesquelles la répétition
automatique existe implicitement ou celles pour lesquelles cette
fonction a été programmée au moyen de la commande KEY
DEF.
Avant de définir une répétition automatique
à très faible <délai initial>,
il est prudent de programmer une des touches numériques afin de pouvoir
rétablir les paramètres par défaut de la fonction SPEED KEY
(30,2). Voici comment procéder:
KEY 0,"SPEED KEY 30,2"+CHR$(13)
Il suffira, pour revenir à l'état initial, d'actionner la
touche 0 du pavé numérique.
COMMANDE: Indique la vitesse de transmission des données de
l'ordinateur vers un lecteur de cassettes, le cas échéant. Cette vitesse est
soit de 2000 bauds (bits par secondes) si le paramètre est égal à 1, soit, par
défaut, de 1000 bauds si celui-ci est égal à 0.
Lors du chargement d'un fichier enregistré sur cassette, l'ordinateur
choisit automatiquement la bonne vitesse de lecture.
SPEED WRITE 0 est le débit assurant la meilleure
fiabilité de transfert.
La commande SPEED WRITE ne s'applique pas aux unités
de disquettes.
FONCTION: Indique l'état de la file d'attente (Sound Queue)
dans un canal sonore donné. Le <numéro de canal> doit être une
expression numérique entière prenant les valeurs:
1: canal A
2: canal B
4: canal C
Cette fonction fournit un entier correspondant aux bits de
signification suivants:
Bits 0, 1 et 2 : nombres d'entrées libres dans la file
Bits 3, 4 et 5 : état du rendez-vous au début
de la file
Bit 6 : la tête de la file est bloquée
Bit 7 : le canal est en activité
... où le Bit 0 représente le bit de poid faible, et le
Bit 7 celui de poid fort.
On peut constater que si le Bit 6 est à 1, Le Bit 7 ne peut pas
l'être. De même si les Bits 3,
4 ou 5 sont à 1, les Bits 6 et 7 ne peuvent pas l'être.
Pour plus de détails, voir la deuxième partie du
chapitre intitulé «A vos heures de
loisirs...»
10 FOR n=1 TO 30:PRINT n:NEXT
20 STOP
30 FOR n=31 TO 60:PRINT n:NEXT
run
cont
COMMANDE: Interrompt un programme, tout en laissant à
l'utilisateur la possibilité d'en reprendre l'exécution au moyen de la commande CONT. STOP permet ainsi d'interrompre un programme à un endroit donné afin
d'effectuer une mise au point.