INT - NOT
Dictionnaire des mots-clés BASIC, C64
Du Commodore 64
Type : Fonction numérique
Syntaxe :
INT(expression numérique)
Modes : Les modes direct et programme sont tous
deux valides.
Jeton : $B5 (181)
Entrée abrégée : Aucune
Utilisation :
La fonction INT convertit l’expression numérique en l’entier inférieur ou égal le plus proche.
Par exemple, INT(10,4) vaut 10 et INT(-2,2) vaut -3.
L’expression est supposée être comprise dans l’ensemble des valeurs numériques, entre environ -1,7 × 10³⁸ et +1,7 × 10³⁸.
Ainsi, L = INT(123456,7) est valide.
En revanche, L % = INT(123456,7) génère une erreur,
car le résultat est trop grand pour une variable entière.
Exemples :
1. 100 PRINT INT(X+.5) :REM ROUND TO NEAREST WHOLE NUMBER
L'exemple ci-dessus arrondit les nombres — y compris les nombres négatifs — à l'entier le plus proche.
2. 100 PRICE = INT(.5 + P*(1+MARKUP/100))
Ce calcul permet d'obtenir le prix au centime près à partir du pourcentage de majoration et du prix d'achat en centimes.
LEFT$
Type : Fonction de chaîne de caractères
Syntaxe : LEFT$(expression de
chaîne, expression numérique)
Modes : Les modes direct et programme sont
tous deux valides.
Jeton : $C8 (200)
Saisie abrégée : LE SHIFT-F
(incluant le $.)
Utilisation :
LEFT$ renvoie une sous-chaîne composée des premiers caractères de l’expression de chaîne d’origine.
L’expression numérique (qui doit être comprise entre 0 et 255) est comparée à
la longueur de la chaîne ; la plus petite des deux détermine la longueur de la
sous-chaîne.
Exemples :
1. FOR J=0 TO 20: PRINT LEFT$("HELLO THERE",J): NEXT
Ce programme affiche 20 chaînes de caractères : « », « H », « HE », « HEL », etc.
Plus J augmente, plus le nombre de caractères affichés augmente également.
Cependant, ce nombre ne dépasse jamais 11, la longueur de la chaîne d'origine. Ainsi, les chaînes de la onzième à la vingtième affichées seront identiques.
2. PRINT LEFT$(X$ + "-------------------",20)
Cette astuce de formatage ajoute des tirets à X$ pour qu'il ait exactement 20 caractères. Ainsi, le résultat comporte toujours 20 caractères.
3. PRINT LEFT$(X$ + "-------------------",20)-LEN(X$)); X$
Cette ligne justifie X$ à droite, en le faisant précéder de tirets.
On suppose que X$ ne dépasse pas 20 caractères. D'autres caractères, notamment les espaces, peuvent être utilisés de la même manière pour formater la sortie.
LEN
Type : Fonction numérique
Syntaxe : LEN(expression de chaîne)
Modes : Les modes direct et programme sont tous deux valides.
Jeton : $C3
(195)
Entrée abrégée : Aucune
Utilisation :
LEN détermine la longueur d'une expression de chaîne. Le résultat est
toujours compris entre 0 et 255.
Exemples :
1. 10 PRINT SPC(20-LEN(MSG$)/2);MSG$
Cette ligne permettra de centrer un court message sur l'écran de l'ordinateur en ajoutant des espaces en début de texte.
2. 50 IF LEN(IN$)<>L THEN PRINT "MUST BE" L "DIGITS": GOTO 40
L'extrait ci-dessus rejette une chaîne d'entrée de longueur incorrecte, renvoyant le programme à la ligne 40, où une autre tentative peut être effectuée.
3.
100 FOR J=1 TO LEN(W$): IF L$=MID$(W$,J,1) GOTO 200: NEXT
110 PRINT "NOT
FOUND"
Cette fonction vérifie la présence de la lettre L dans le mot W$. L'utilisation de LEN(W$) permet au programme de définir le compteur de boucle pour n'importe quelle longueur de W$.
LET
Type : Instruction
Syntaxe : [LET] variable numérique = expression
numérique ou logique
[LET] variable entière = expression numérique
comprise entre -32768 et +32767 ou expression logique
[LET] variable
chaîne = expression chaîne
Modes : Les modes Direct et Programme sont
tous deux valides.
Jeton : $88 (136)
Saisie abrégée : L + MAJ + E
Fonction :
LET assigne un nombre ou une chaîne à une variable.
L'instruction LET est généralement omise, car le 64 l'utilise par défaut.
Des variables simples ou des tableaux peuvent être utilisés.
Si une variable simple ou un tableau n'existe pas déjà, LET lui réserve de l'espace dans la zone de stockage des variables en mémoire.
LET dimensionne un tableau à la taille par défaut de 11 (éléments 0 à 10)
s'il n'a pas été préalablement dimensionné avec une instruction DIM.
Remarques :
1. Comme LET est rarement utilisé, il peut être modifié par
l'utilisateur.
2. Les variables peuvent être réassignées librement ; il
faut donc éviter d'utiliser une variable à deux fins simultanément. Cela pose
souvent problème lors de l'utilisation de sous-programmes, car il est plus
difficile de gérer les variables.
Exemples:
1. X=123456: LET X=123456
Ces deux instructions attribuent à X la valeur 123456.
2. Q%=Q/100
La ligne ci-dessus définit Q% comme étant égal à la partie entière de Q/100, donc si Q = 1234, Q% = 12.
3. LET QH%=Q/256: LET QL%=Q-QH%*256
Cela définit QH% et QL% comme étant égaux aux octets de poids fort et de poids faible du nombre Q.
LIST
Type : Commande
Syntaxe : LIST [numéro de ligne] [-] [numéro de ligne]
Modes : Les modes direct et programme sont tous deux valides.
Jeton :
$9B (155)
Saisie abrégée : L MAJ-I
Fonction :
LIST affiche une partie ou la totalité du code BASIC en mémoire à l'écran, ou
(avec CMD) sur disque, bande magnétique ou autre périphérique de sortie.
Remarques :
1. Les numéros de ligne doivent être des caractères ASCII, et
non des variables.
2. LIST utilise de nombreuses adresses mémoire ; elle
se termine toujours en mode READY si elle est utilisée dans un programme.
3. Des erreurs de chargement et d'autres erreurs peuvent apparaître dans
LIST.
Par exemple, si un programme en langage machine conçu pour une autre zone de
la mémoire est chargé dans la zone de programme BASIC, une tentative d'exécution
de LIST n'affichera que des caractères aléatoires.
De plus, une
documentation de référence sur LIST contient des programmes permettant de
modifier LIST de manière utile. (Le chapitre 8 explique la procédure.)
L'entrée REM contient des notes sur la façon dont LIST interprète les caractères d'édition à l'écran et autres. TRACE est une version modifiée de LIST qui fonctionne pendant l'exécution d'un programme.
UNLIST présente des méthodes pour protéger vos programmes.
Exemples :
1. LIST 2000-2999
La ligne ci-dessus affiche les lignes BASIC de 2000 à 2999.
2. LOAD "$",8 followed by LIST
Ceci affiche un répertoire de disque, stocké en mémoire comme s'il s'agissait d'un programme BASIC.
3. 1000 LIST -10
Cette commande liste toutes les lignes d'un programme BASIC jusqu'à la ligne 10 incluse. Comme illustré dans cet exemple, la commande LIST peut être incluse dans une ligne de programme BASIC. Cependant, son exécution interrompt le programme, et CONT ne le redémarre pas.
4. LIST 1100-
Cette commande affiche toutes les lignes du programme BASIC courant dont le numéro est supérieur ou égal à 1100.
S'il n'y a pas de ligne numérotée 1100 dans le programme courant, la liste commence par la première ligne existante dont le numéro est supérieur à 1100.
LOAD
Type : Commande
Syntaxe :
Bande :
LOAD [expression chaîne [,expression numérique^ expression numérique]]]
Tous les paramètres sont facultatifs.
La première expression numérique, si elle est utilisée, doit être égale à 1
(numéro du périphérique). La seconde est généralement égale à 0 (LOAD BASIC) ou
à 1 (LOAD forcé).
Disque : LOAD expression chaîne, expression numérique
[, expression numérique]
Un nom et une expression numérique, généralement
8 (numéro du périphérique), sont requis.
Le second paramètre numérique a la même signification que pour le LOAD sur
bande.
Voir le chapitre 15 pour plus de détails.
Modem :
La commande LOAD ne peut pas être utilisée avec un modem. Toute tentative
d’utilisation du périphérique numéro
2 entraînera donc une erreur.
Modes : Les modes Direct et Programmation sont tous deux valides. (Voir
« Remarques » ci-dessous.)
Jeton : $93 (147)
Saisie abrégée : L
SHIFT-O
Fonction :
LOAD lit des données depuis un périphérique externe et remplit la RAM avec un programme BASIC, du ML, des graphiques ou d’autres données.
Dans sa forme la plus simple, LOAD {RETOUR}, puis RUN {RETOUR} charge le
programme BASIC depuis une bande et l’exécute. (SHIFT-RUN/STOP permet également
cette opération.)
Remarques :
1. LOAD est suivi d’une série de
messages standard, tels que « APPUYEZ SUR LECTURE SUR CASSETTE », « OK » au
démarrage de la cassette, etc.
Ces messages sont détaillés dans les chapitres relatifs à l’utilisation des
bandes et des disques. Les commandes LOAD en mode programme n’affichent pas ces
messages (à l’exception de « APPUYEZ SUR LECTURE SUR CASSETTE », qui est
inévitable), ce qui permet de conserver un affichage clair à l’écran.
2.
La commande LOAD sur cassette masque l’écran du téléviseur avec la couleur de
bordure pendant toute lecture de bande. Lorsqu'un programme ou un en-tête de
fichier est trouvé, le message « TROUVÉ » s'affiche à l'écran pendant une
dizaine de secondes.
Si le nom du programme est valide, le chargement commence, puis l'écran
s'éteint temporairement. Sinon, la recherche se poursuit. Appuyer sur la touche
Commodore, ou sur une autre touche, interrompt cette pause.
3. La
commande LOAD pour un programme BASIC requiert presque toujours que son
troisième paramètre soit égal à 0. Cela permet à LOAD de relier le programme
BASIC, de sorte que n'importe quelle position de début de programme BASIC soit
acceptable.
Par exemple :
LOAD "BASIC PROG"
charge ce programme depuis une cassette vers le 64, quelle que soit la
configuration mémoire, et le prépare pour l'exécution. En fait :
POKE
43,LO : POKE 44,HI : POKE HI*256+LO,0 : NEW suivi de la disquette ou de la
cassette appropriée.
LOAD peut placer un programme BASIC où vous le souhaitez, s'il y a de la place.
4. Le chargement de ML, de définitions graphiques et d'autres données est généralement plus complexe que le chargement de programmes BASIC et nécessite une commande LOAD au format suivant :
LOAD "CHARSET",1,1
Pour garantir que les données soient replacées à leur emplacement d'origine,
la commande `.L load` de Supermon's permet de le faire. La section `Block LOAD`
permet de charger des blocs d'octets sans perturber le BASIC.
5. Les
chargements en mode programme enchaînent généralement les instructions BASIC ;
voir `CHAIN`, ainsi que `OLD`, qui explique comment enchaîner un programme long
à partir d'un programme plus court.
Exemples :
1. LOAD: LOAD "",1
Il s'agit de chargements sur bande, ayant le même effet. Chacun charge le premier programme BASIC trouvé sur la bande.
2. LOAD "PROG"
Cette opération charge le programme portant le nom de fichier PROG depuis la bande.
En réalité, en raison du système de vérification des noms de fichiers utilisé, le premier programme trouvé sur la bande et dont le nom commence par PROG (PROGRAM ou PROGDEMO, par exemple) sera chargé.
3. LOAD "PROG",8
Cette ligne ne chargera que le programme PROG depuis le disque.
Si PROG est introuvable, aucun autre programme dont le nom commence par PROG ne sera chargé ; une erreur « Fichier introuvable » sera alors signalée.
4. LOAD "PAC*",8
Ceci illustre une commande LOAD typique de correspondance de motifs de disque, qui chargera PACMAN, PACKER ou le premier programme commençant par PAC.
5. 10000 PRINT "PLEASE WAIT": LOAD "PART2"
La ligne de code ci-dessus charge puis exécute le programme audio PART2 depuis BASIC. Si la touche correspondante du magnétophone est enfoncée, aucun message ne s'affiche sur le téléviseur.
6.
10 IF X=0 THEN X=1: LOAD "GRAPHICS",1,1
20 REM THE PROGRAM CONTINUES HERE
AFTER THE LOAD
Cette commande charge les graphismes dans une zone mémoire fixe.
Une commande LOAD exécutée depuis un programme relance ce dernier depuis le début. La variable X sert d'indicateur, empêchant le chargement répété des graphismes et permettant ainsi au programme de poursuivre son exécution.
LOG
Type : Fonction numérique
Syntaxe : LOG(expression numérique)
Modes : Les modes direct et programme sont tous deux valides.
Jeton : $BC
(188)
Entrée abrégée : Aucune
Utilisation :
LOG renvoie le logarithme népérien (logarithme en base e) d'une expression
arithmétique positive. Cette fonction est l'inverse de EXP.
Les
logarithmes transforment la multiplication et la division en addition et
soustraction ; par exemple, LOG(1) vaut 0 car la multiplication par 1 est sans
effet. Les logarithmes sont principalement utilisés dans les travaux
scientifiques ; leur sensibilité aux erreurs d'arrondi les rend moins adaptés
aux applications commerciales.
Exemples :
1.
PRINT LOG(X)/LOG(10) :REM LOG TO BASE 10
PRINT LOG(X)/LOG(2) :REM LOG TO
BASE 2
PRINT EXP(LOG(A)+LOG(B)) :REM PRINTS A*B
Ce sont là des utilisations standard de la fonction LOG.
2. LF=(N+.5)*(LOG(N)-1) + 1.41894 + 1/(12*N)
Ceci définit LF, une approximation de LOG(N!), de sorte que EXP(LF) soit approximativement égal à N!. Cela illustre l'utilité du logarithme népérien lorsqu'on travaille avec de très grands nombres.
MID$
Type : Fonction de chaîne
Syntaxe : MlD$(expression de chaîne,
expression numérique ^expression numérique])
Modes : Les modes direct et
programme sont tous deux valides
Jeton : $CA (202)
Saisie
abrégée : M MAJ-I (incluant le $.)
Utilisation :
MID$ extrait la sous-chaîne souhaitée d'une expression de chaîne. Le premier paramètre numérique indique le point de départ (1 représente le premier caractère de la chaîne d'origine, 2 le deuxième, etc.).
Le dernier paramètre indique la longueur de la sous-chaîne à extraire.
Si ce paramètre n'est pas spécifié, la sous-chaîne s'étend jusqu'à la fin de
la chaîne d'origine.
Exemples :
1. N$=MID$(STR$(N),2) :REM REMOVE LEADING SPACE FROM N
Ceci est utile lorsqu'on ne souhaite pas inclure d'espaces en début de nombre. Cela fonctionne avec tous les nombres positifs compris dans la plage appropriée.
2.
10 INPUT X$: L=LEN(X$)
20 FOR J=1 TO L: PRINT MID$(X$,L-J+1,1);: NEXT
Ce programme prend une chaîne de caractères en entrée, puis l'affiche à l'envers, caractère par caractère.
NEW
Type : Commande
Syntaxe : NEW
Modes : Les modes direct et
programme sont tous deux valides.
Jeton : $A2 (162)
Entrée abrégée : Aucune
Fonction :
NEW permet de saisir un nouveau programme BASIC en ignorant tout programme précédent.
Elle corrige les pointeurs après un chargement forcé (sans relocalisation)
comme :
LOAD "ML",1,1
afin que BASIC puisse fonctionner sans erreur de mémoire insuffisante.
Remarques :
1. En réalité, la plupart des routines et données BASIC,
ainsi que toutes les routines ML, restent inchangées ; NEW place des octets nuls
au début du programme BASIC, réinitialise les pointeurs et effectue un CLR.
Entre autres, la commande interrompt la création de fichiers.
La commande OLD permet de récupérer le système BASIC après l'utilisation de
NEW, à condition qu'aucune nouvelle ligne de programme n'ait été saisie.
2. La commande NEW peut parfois générer une erreur de syntaxe (?SYNTAX ERROR).
Exemples :
1. NEW
En mode direct, NEW prépare le 64 pour un nouveau programme. (Sans NEW, le programme serait simplement ajouté à celui déjà en cours d'exécution en BASIC, sous forme de lignes supplémentaires ou de remplacement.)
2. 20000 NEW: REM PROGRAM NO LONGER WANTED
Le système passe en mode PRÊT. Le programme ne s'affiche plus et semble avoir été effacé.
NEXT
Type : Instruction
Syntaxe : NEXT [variable numérique][,variable
numérique...]
Modes : Les modes direct et programme sont tous deux
valides.
Jeton : $82 (130)
Entrée abrégée : N MAJ-E
Fonction :
NEXT marque la fin d'une boucle FOR-NEXT. Voir
FOR pour une description
détaillée du traitement des boucles.
Exemples :
1. FOR 1=1 TO 10: FOR J=1 TO 10: PRINT I*J;:NEXT J: PRINT: NEXT
Ceci affiche une table de multiplication non formatée pour les valeurs
jusqu'à 10 × 10.
Notez que NEXT:PRINT:NEXT fonctionne également.
En fait, c'est même un peu plus rapide. NEXT J: NEXT
I peut être
remplacé par NEXT J,I.
Une fois le programme débogué, les variables suivant les instructions NEXT peuvent généralement être supprimées ; cependant, elles améliorent la lisibilité.
2.
80 FOR J=1 TO 2000: GET X$: IF X$="" THEN NEXT
81 FOR J=0 TO 0: NEXT
Cela retarde d'environ dix secondes, sauf si une touche est pressée ; si c'est le cas, la ligne 81 supprime la boucle J encore active.
3.
10 FOR J=1 TO 3: GOTO 40
20 NEXT K
30 NEXT J: END
40 FOR K=1 TO 2:
GOTO 20
NEXT peut apparaître n'importe où, ce qui permet des constructions maladroites comme celle ci-dessus.
NOT
Type : Opérateur logique
Syntaxe : NOT une expression logique ou
numérique.
Les expressions numériques doivent être évaluées après troncature à —32768 à +32767.
Modes : Les modes direct et programme sont tous deux valides.
Jeton :
$A8 (168)
Saisie abrégée : N MAJ-O
Fonction :
La fonction NOT calcule le NON logique d'une expression. Les expressions logiques sont converties de faux à vrai, et inversement.
Les expressions numériques sont converties en binaire signé 16 bits, et chaque bit est inversé. Le résultat, comme l'original, est toujours compris entre -32 768 et +32 767, et est toujours égal à -1 moins la valeur d'origine.
Ainsi, la fonction NOT d'expressions arithmétiques ne convertit pas
nécessairement vrai en faux.
Remarque : La fonction NOT est prioritaire
sur les fonctions AND et OR.
Ainsi :
NOT A AND B
est identique
à :
(NOT A) AND B
Les règles logiques habituelles s'appliquent aux
fonctions NOT,
AND et OR.
Exemples :
1. 55 IF X$=CHR$(34) THEN Q=NOT Q
Cette ligne inverse un indicateur de mode citation, indiquant si le mode citation est activé ou désactivé.
2. IF NOT OK THEN GOSUB 20000: REM ERROR MESSAGE AT 20000
La ligne ci-dessus utilise le résultat de la variable OK, définie lors de tests précédents, pour détecter les erreurs.