Dictionnaire des mots-clés BASIC, C64

Commodore 64

Cette section répertorie tous les mots-clés BASIC, avec des explications et des exemples, dans un format uniforme. Les détails des messages d'erreur ne sont pas inclus ici, mais rassemblés dans une liste alphabétique après cette section.

La syntaxe de chaque commande est donnée de manière standard. Les paramètres sont généralement des expressions numériques, des expressions de chaîne ou des variables, et celles-ci sont toujours soigneusement distinguées ; par exemple, ABS (expression numérique) signifie que toute expression numérique valide est utilisable avec ABS, ce qui implique que ABS peut être utilisé avec des variables, comme dans ABS(X).

Les crochets indiquent des paramètres facultatifs ; lorsqu'un tel paramètre est omis, une valeur par défaut est prise par le système.

Les fonctions numériques causent probablement la plupart des erreurs. Tout d'abord, il y a une chance d'une simple ERREUR DE SYNTAXE, peut-être une construction arithmétiquement erronée ou une parenthèse omise.

Deuxièmement, les paramètres numériques ont un large éventail de restrictions de plage : les valeurs d'octet doivent être comprises entre 0 et 255, les adresses mémoire doivent être comprises entre 0 et 65 535, les expressions entières et logiques doivent être comprises entre —32768 et +32767, aucun nombre ne peut être en dehors d'environ — 1E38 et +1E38, les dénominateurs zéro ne sont pas valides, les racines carrées ne peuvent pas exister pour les nombres négatifs, etc.

Ces erreurs sont relativement faciles à corriger, de sorte que les erreurs ne sont mentionnées que lorsque, comme dans DATA, une caractéristique notable existe.

Voir la section guide des ROM du Commodore 64 et comprend des informations sur les mots-clés. Dans quelques cas, des informations sont fournies dans ce chapitre, où elles aident à clarifier certains aspects de BASIC, et des jetons sont répertoriés pour les programmeurs intéressés par la recherche du stockage BASIC en mémoire.

ABS

AND

ASC

ATN

CHR$

CLOSE

CLR

CMD

CONT

COS

DATA

DEF

DIM

END

EXP

FN

FOR

FRE

GET

GET#

GOSUB

GOTO

IF

INPUT

INPUT#

INT

LEFT$

LEN

LET

LIST

LOAD

LOG

MID$

NEW

NEXT

NOT

ON

OPEN

OR

PEEK

POKE

POS

PRINT

PRINT#

READ

REM

RESTORE

RETURN

RIGHT$

RND

RUN

SAVE

SGN

SIN

SPC

SQR

STATUS (short ST)

STEP

STOP

STR$

SYS

TAB

TAN

THEN

TIME (short TI)

TIME$ (short (TI$)

TO

USR

VAL

VERIFY

WAIT

 

ABS

Type : Fonction numérique
Syntaxe : ABS(expression numérique)
Modes : les modes direct et programme sont tous deux valides.
Jeton : $B6 (182)
Entrée abrégée : A SHIFT-B

ABS renvoie la valeur absolue de l'expression numérique entre parenthèses. En d'autres termes, ABS rend un nombre négatif ou une expression positive.

Exemples:

1. 50 IF ABS(TARGET-X) <.01 THEN PRINT "DONE": END

Ceci montre comment vérifier l'égalité approximative; lorsque TARGET vaut 6, le programme ne se termine que si X est compris entre 5,99 et 6,01. Ce type de texte est généralement utilisé dans les calculs itératifs dans lesquels une valeur calculée est censée converger vers une valeur donnée.

2. 100 IF ABS(X1-X2)<3 AND ABS(Y1-Y2)<3 GOTO 90

À partir d'un programme de jeu, cela recalcule les positions de départ à l'écran pour deux joueurs si les positions de départ générées aléatoirement sont trop proches.

10 REM 'ABS' PROGRAMME DE TEST D'OPERATION MATHEMATIQUE
20 A=18
30 B=58
40 PRINT "LA VALEUR ABSOLUE DE ";(A-B)/2;" EST ";ABS((A-B)/2)
99 END

il peut être facilement simulé par le sous-programme suivant :

10 REM 'ABS' PROGRAMME DE TEST DE SOUS-ROUTINE
20 PRINT "ENTRER UN NOMBRE NEGATIF ";
30 INPUT X
40 GOSUB 30010
50 PRINT "LA VALEUR ABSOLUE DE ";X;" est ";Y
60 PRINT "ENTRER O POUR UN AUTRE NOMBRE ";
70 INPUT R$
80 IF R$ = "O" THEN GOTO 20
90 END
30010 REM * ABS(X) SOUS-ROUTINE * INPUT X, OUTPUT Y
30012 Y=X
30014 IF X>=0 THEN 30018
30016 Y=-X
30018 RETURN
30993 END

AND

Type : Opérateur logique
Syntaxe : Expression logique ou numérique AND expression logique ou numérique
Modes : les modes direct et programme sont tous deux valides.
Jeton : $ AF (175)
Entrée abrégée : A SHIFT-N

AND applique l'opérateur AND logique à deux expressions. Pour les besoins de la comparaison AND, les expressions numériques sont évaluées comme des entiers signés 16 bits, de sorte que chaque opérande doit être compris entre -32768 et 32767. Les valeurs en dehors de cette plage entraînent une erreur ILLEGAL QUANTITY ERROR.

Chacun des 16 bits du premier opérande est combiné avec le bit correspondant du deuxième opérande, ce qui donne un entier de 16 bits sur deux octets. Les quatre combinaisons possibles de bits individuels correspondants sont :

0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1

Le résultat devient 1 uniquement si les deux bits sont à 1.

ET a deux utilisations distinctes en BASIC. Premièrement, il permet de calculer ensemble la valeur de vérité de plusieurs expressions logiques, comme dans :

IF X>2 AND X<3

où X doit être compris entre 2 et 3 pour que la condition soit vraie. Deuxièmement, AND désactive les bits sélectionnés, comme dans :

POKE 1, PEEK(l) AND 254

Cela force le bit 1 de l'emplacement 1 à 0, quelle que soit sa valeur précédente (qui bascule dans la RAM à la place de la ROM BASIC).

Bien que ces utilisations semblent différentes, AND se comporte de manière identique dans chacune. Une expression logique est considérée comme fausse lorsque 0 (tous les bits du résultat sont nuls) et est considérée comme vraie lorsque — 1 (tous les bits du résultat sont 1) ou non nuls.

Exemples:

1. 100 IF PEEK(J) AND 128=128 GOTO 200

La ligne 200 sera exécutée si le bit 7 de l'emplacement PEEKed est activé ; les autres valeurs de bit sont ignorées.

2. X=X AND 248

Cela convertit X en X moins son reste lors de la division par 8, donc 0-7 devient 0, 8-15 devient 8, et ainsi de suite. C'est nettement plus rapide que X= INT(X/8)*8. Cela fonctionne (pour X jusqu'à 256) car 248 = %11111000. Par conséquent, X AND 248 efface les trois bits les plus à droite à 0.

3.  OK= YR>84 AND YR<90 AND MN>0 AND MN<13 AND OK

Partie d'une routine de validation de date, cela utilise OK comme variable pour valider plusieurs entrées sur plusieurs lignes de BASIC.

Utilisation:

IF NOT OK THEN numéro de ligne à brancher pour une nouvelle saisie si les données étaient inacceptables.

10 REM PROGRAMME DE TEST LOGIQUE 'AND'
20 A = 8
30 B = 6
40 IF A=8 AND B=6 THEN 70
50 PRINT "AND A ECHOUER LE TEST EN TANT QU'OPERATEUR LOGIQUE"
B0 GOTO 99
70 PRINT "AND A PASSER LE TEST EN TANT QU'OPERATEUR LOGIQUE"
99 END

ASC

31