Réalisé par
Fabrice BROCHE et
Georges EL ANDALOUSSI
(Ressaisi et corrigé par Fabrice Francès
v0.2 : pratiquement tout ce qui est nouveau ou différent du Basic de l’Atmos, hormis la gestion imprimante et Minitel)
GENERALITES
Ceux qui connaissent déjà la programmation en BASIC – particulièrement celle de l’ORIC-1 ou de l’ORIC ATMOS – reconnaîtront des instructions communes à de nombreux micro-ordinateurs, mais aussi de nouvelles commandes extrêmement puissantes, spécifiques au BASIC compilé du TELESTRAT. Les autres pourront suivre le manuel d’utilisation qui est construit de façon plus pédagogique, les commandes étant groupées par centres d’intérêt, accompagnés d’exemples simples.
Pour permettre un repérage plus rapide des instructions dans cet index, nous les avons classées par ordre alphabétique. En voici aussi une liste par « nature » :
Commandes système
Les commandes et fonctions système du BASIC
RADIAN RANDOM RELEASE REM TALK
Commandes et fonctions de travail sur la mémoire
CALL DEEK DOKE MOVE PEEK
Commandes et fonctions de Gestion de disque
(STRATSED)
Les commandes et fonctions de gestion de fichiers
(STRATSED)
Les opérateurs arithmétiques et logiques
AND OR XOR < >
>= <= = <> +
- * / ^
Les fonctions de travail sur chaînes
Les constantes et fonctions de travail sur les
nombres
ABS ATN COS EXP FALSE
RAND RND SGN SIN SQR
TAN TRUE
Les fonctions de conversion
RAD STR$ VAL
Les commandes graphiques haute résolution
CURMOV CURSET DRAW FILL HCOPY
PATTERN SCHAR
Les commandes et fonctions graphiques basse résolution
CLS CURSOR INK PAPER PLOT
Les commandes de gestion du son
EXPLODE MUSIC OUPS
SHOOT SOUND ZAP
Les commandes de gestion des canaux d’entrées/sorties
Les commandes de gestion de l’imprimante
LBUF LDIR LFEED LLIST LOUT
LPR LPRINT LWIDTH
Les commandes de gestion de la RS232
CONSOLE SDUMP SEBUF SLIST SLOAD
SLOADA SMODE SOUT SPRINT SRBUF
Les commandes et fonctions de gestion de l’Horloge
CLOCKOFF CLOCKSET TIME TIME$ WAIT
Les commandes et fonctions de gestion du clavier
ACCENT AZERTY FRENCH GET INPUT
Les structures de contrôle
Les commandes et fonctions de gestion des erreurs
ERROFF ERRGOTO ERRLIST ERRNB ERRNL
Les commandes télématiques
APLIC MINITEL PAGE$ SERVEUR TINPUT
Les commandes de gestion du Minitel
CONNECT MLIST MLOAD MLOADA MOUT
MPRINT MSAVE MSAVEA RING VCOPY
UNCONNECT WCXFIN
CONVENTIONS ET NOTATIONS
Afin d’en faciliter la lecture, les mêmes notations seront employées tout au long de ce chapitre. Toutes les commandes auront donc la même présentation :
NOM DE COMMANDE en gros caractères gras et SYNTAXE GENERALE en gros caractères maigres.
- Les descriptifs de la commande et les remarques sont précédés de tirets.
Les options facultatives sont entre parenthèses. Si elles ne sont pas précisées, elles prennent des valeurs par défaut, expliquées dans le texte.
Tous les exemples sont en ITALIQUES s’il s’agit d’un exemple d’une seule commande, ou en caractères d’imprimante s’il s’agit d’un exemple de programme complet.
Quelques abréviations seront fréquemment utilisées :
- EN : désigne un Expression Numérique.
Exemple : PRINT EN
- EA : désigne une Expression Alphanumérique (chaîne de caractères).
Exemple : SEARCH EA
- VN ou Variable Numérique : représente un nom de variable numérique, à ne pas confondre avec une expression numérique.
Exemple : INPUT (EA ;) VN
- VA ou Variable Alphanumérique : même remarque que pour les variables numériques.
Exemple : TKEN VA
Pour plus de clarté, nous serons souvent amenés à donner 2 notations pour les paramètres d’une fonction, l’une à titre d’exemple pour faciliter la compréhension et l’autre pour préciser la syntaxe. Par exemple :
CURSET x, y, p
CURSET EN,EN,EN
La première ligne précise que CURSET doit être suivi de 2 paramètres x et y précisant les coordonnées (hauteur et largeur) du point recherché sur l’écran, et d’un paramètre p précisant l’attrivut de couleur du fond (voir chapitre sur les graphiques).
La deuxième ligne indique que les 3 paramètres doivent obligatoirement être des expressions numériques (nombres, variables ou formules complexes).
A ce titre, nous pourrons utiliser les abréviations suivantes :
x et y désignerons des coordonnées absolues d’un point sur l’écran.
h et v désigneront les coordonnées relatives (ou déplacement horizontal et vertical)
p sera le paramètre premier plan / fond.
c désignera une expression conditionnelle logique (A>B etc…)
nl désignera un numéro de ligne
adr désignera une adresse mémoire.
Si la syntaxe n’est pas expliquée, c’est que la commande s’utilise seule, telle qu’elle est dans le titre.
Nous avons également indiqué la nature de la commande.
SYNTAXE DES CONSTANTES
1- Les constantes alphanumériques
Elles doivent être entourées de guillemets (ou plus techniquement de doubles quotes).
Ex :
"IL FAIT BEAU A TOULON"
2- Les constantes numériques
Elles sont de quatre types :
-
décimales
sans identificateurs éventuellement suivi d’un exposant en puissance de 10
Ex : 12, -535, 9E5
-
binaires
précédées d’un %
Ex : %100110
-
hexadécimales
précédées d’un #
Ex : #A, #A09
-
ascii
entourées de simples quotes
Ex : '1', 'P'
Ceci précisé, entrons dans l’index de référence du BASIC
du TELESTRAT…
syntaxe : ] LABEL : …
nature : structure de contrôle
Cette commande ] (bracket droit) permet de poser des « pancartes » au début de sous-programmes en leur donnant un nom (label) et de s’y rendre ensuite avec l’instruction LABEL.
Cela fonctionne exactement comme GOSUB 1000 si le sous-programme concerné commence en ligne 1000. Ici, il suffira d’écrire :
1000 ]
TITRE : ….
si le sous-programme commençant en ligne 1000 sert à afficher un écran de titre par exemple. Pour appeler le sous-programme, il suffira de taper au lieu de GOSUB 1000 :
GOSUB TITRE
ou simplement
TITRE
Le fonctionnement est identique, mais la clarté est plus grande : il est plus facile en écrivant un programme d’appeler un sous-programme par un nom explicite (masque de saisie, écran, en-tête etc.) que par un numéro de ligne.
] sert également à préciser le numéro de canal avec les instructions du type GET, PRINT etc.
voir également : GOSUB
ABOX
X1,
Y1,
X2,
Y2,
p
syntaxe : ABOX EN,EN,EN,EN,EN
nature : commande graphique haute résolution
S’utilise pour tracer un rectangle à l’écran, comme BOX. Différence : le rectangle tracé avec BOX démarre en un point dont les coordonnées sont relatives (déplacement calculé d’après les coordonnées précédentes), et dont les paramètres fixent longueur et largeur. Pour ABOX, les paramètres donnent les coordonnées absolues des extrémités de la diagonale : les sommets du rectangle auront donc pour coordonnées X1Y1, X1Y2, X2Y2 et X2Y1. X est donc compris entre 0 et 239 et Y entre 0 et 199. La couleur sera déterminée par le paramètre p.
Note : après l’exécution d’un ABOX, la position courante du curseur ne change pas, elle reste en X1Y1.
50 HIRES:PAPER
3:INK 4
100 ABOX 20,20,120,80,1
150 ABOX 50,30,140,100,2
voir également : BOX
syntaxe : ACCENT SET ou ACCENT OFF
nature : commande de gestion du clavier
Cette commande redéfinit un certain nombre de caractères, permettant d’avoir à l’écran les caractères typiques de l’écriture française sans pour cela quitter le clavier QWERTY.
Les caractères ainsi redéfinis ont été choisis pour avoir des codes ASCII correspondant aux codes des caractères français dans la plupart des imprimantes.
Les caractères sont ainsi redéfinis :
ASCII NORMAL ACCENTUÉ
40 @ à
5C \ ç
7B { é
7C | ù
7D } è
7E FUNCT+ = ê
L’accent circonflexe ne peut être obtenu seul, l’action sur les touches FUNCT et = donne directement le e accentué.
ACCENT SET établit les caractères accentués et ACCENT OFF rétablit le jeu de caractères normaux. ATTENTION : ACCENT OFF rétablit tous les caractères normaux (y compris ceux modifiés par CHRDEF ou POKE), alors que ACCENT SET ne touche qu’aux caractères redéfinis.
Cette instruction fonctionne en mode HIRES.
804 CLS
806 ACCENT
SET : PRINT "ACCENT SET \|@{}~"
808 WAIT
20
810 ACCENT
OFF : PRINT "ACCENT OFF \|@{}~"
voir également : QWERTY, AZERTY, FRENCH
ADRAW X1, Y1,
X2, Y2, p
syntaxe : ADRAW EN,EN,EN,EN,EN
nature : commande graphique haute résolution
Comme DRAW, cette commande trace une ligne droite entre 2 points dont les coordonnées sont ici définies explicitement. Le paramètre p fixe toujours le rapport couleur de fond/couleur de premier plan.
Comparez l’exemple ci-dessous avec celui de DRAW : le résultat graphique est le même, mais obtenu avec 1 ligne de programme de moins, le retour par CURSET n’étant pas nécessaire.
Après l’exécution d’un ADRAW, la nouvelle position du curseur est en X2Y2.
900 HIRES:PAPER 0:INK 3
950 FOR I=0 TO 180 STEP 5
1000 ADRAW 20,I,I,180,1
1050 NEXT
voir également : DRAW
AIDE
nature : Commande système du BASIC
Correspond à l’instruction HELP en version française ! Cette commande provoque l’apparition à l’écran du message :
Liste
des commandes : WORD
Liste
des fonctions : FUNCTION
Liste
des erreurs : ERRLIST
voir également : HELP
APPEND NL
syntaxe : APPEND EN
nature : commande de
gestion de fichier (STRATSED)
La commande APPEND place le pointeur de fichier à la fin du fichier auquel on a affecté le n° logique NL. Cette opération est assez lente. Elle permet d’ajouter des fiches supplémentaires à la fin d’un fichier séquentiel.
Exemple : APPEND 2 place le pointeur à la fin du fichier de numéro logique 2.
1475 FILE 1
1480 OPEN 0,1,"ESSAISEQ"
1485 FOR I=1 TO 5
1490 SPUT 1,I*100
1495 NEXT
1500 REWIND 1
1510 STAKE 1,A:PRINT
"Premiere valeur:"A
1520 APPEND 1
1521
'
1525
' ecriture en fin de fichier
1526 '
1530 FOR I=6 TO 10
1535 SPUT 1,I*1000
1540 NEXT
1542 CLOSE 1
nature : commande système
ASCII est une commande qui permet d’afficher à l’écran le tableau complet des codes ASCII de #20 à #7F, donc avec leurs numéros affichés en hexadécimal.
Pour connaître le code ASCII d’un caractère, on peut toujours taper en commande directe
PRINT ASC("caractère")…
qui affiche le code ASCII en décimal, ou
PRINT 'caractère'
En mettant un caractère entre simples quotes, on obtient directement son code ASCII en décimal.
Si on recherche plusieurs, ASCII est plus rapide et plus pratique, mais il indique les codes ASCII en hexadécimal.
0 1 2 3 4 5 6 7 8 9 A B C D E F
20 ! " # $ % & ' ( ) * + , - . /
30 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
40 @ A B C D E F G H
I J K L M N O
50 P Q R S T U V W X
Y Z [ \ ] ^ _
60 ` a b c d e f g h
I j k l m n o
70 p q r s t u v w x
y z { | } ~
nature : commande de gestion du clavier
Elle transforme le clavier QWERTY d’origine en clavier AZERTY (clavier français semblable à celui des machines à écrire), c'est-à-dire que :
Q devient A
W " Z
A " Q
Z " W
M
" ;
; " M
Pour une plus grande commodité, les chiffres restent accessibles sans SHIFT.
- Effectue automatiquement un ACCENT SET (voir cette commande), c'est-à-dire que l’on dispose également du jeu de caractères accentués.
- Attention : Les fonctions CTRL… suivent la touche considérée en AZERTY car elles se réfèrent au code ASCII de la lettre et non à la touche du clavier.
Le jeu de petites étiquettes livrées avec le TELESTRAT permet de modifier de façon permanente la présentation des touches si on désire utiliser toujours le clavier en AZERTY.
voir également : QWERTY, FRENCH, ACCENT et les tables de claviers en annexe 2.
BACKUP
syntaxe : BACKUP
nature : commande de gestion de disque (STRATSED)
Effectue la copie intégrale d’une disquette (la source) sur une autre disquette (la cible). Si vous possédez seulement un lecteur, la copie se fera du lecteur A vers le lecteur A. Si deux lecteurs sont présents, la copie s’effectuera du lecteur A vers le lecteur B.
La disquette cible sera éventuellement formatée, avec évidemment le même type de formatage que la disquette source. Si l’on effectue la copie avec un seul lecteur (source identique à cible), il y aura des manipulations de disquettes (8 maximum).
Le DOS reconnaît automatiquement le type de disquette (nombre de faces, de pistes, de secteurs). Il faut veiller à ce que la cible ait le même type de formatage que la source, autrement un message « erreur d’E/S » sera généré. Il est recommandé de formater la disquette cible à chaque fois pour avoir un formatage cohérent et pour des raisons de fiabilité.
Quel que soit le nombre de secteurs de la disquette, le BACKUP sera fait en aussi peu de manipulations que possible. En effet, ne sont copiés que les secteurs réellement utilisés de la disquette.
Un BACKUP affecte la zone mémoire #800 à #B4FF. Attention, tous les programmes présents sur la disquette et en mémoire seront donc détruits (NEW).
Pour éviter les fausses manipulations, il est recommandé de protéger la disquette source contre l’écriture (abaisser le taquet au coin).
Si un défaut se trouve sur la disquette source, la copie se fera quand même si vous répondez « Ignorer » (avec d’autres ordinateurs, le backup est alors impossible), mais un programme pourra être abîmé du fait d’un secteur probablement mal copié ou pas copié.
Exemple :
BACKUP
voir également : LOAD, SAVE, COPY
syntaxe : BIN$(EN)
nature : fonction de conversion
Les applications où l’on a besoin de convertir en binaire un nombre décimal sont nombreuses. Si vous n’êtes pas un virtuose de ce type de conversion, utilisez l’instruction BIN$.
Par exemple,
PRINT
BIN$(49)
va afficher
0011
0001
Toujours un « plus » de l’HYPER-BASIC, taper %0011 0001 produira 49 et vérifiera donc l’exemple ci-dessus, % annonçant une valeur binaire.
Bien qu’étant une fonction de travail sur les nombres, BIN est suivi de $, qui est généralement le signe d’une fonction de travail sur les chaînes. Pourquoi ? Simplement parce que la valeur retournée par BIN$ doit être lue et interprétée comme une chaîne, et n’est pas une expression numérique, ne pouvant ainsi entrer dans aucun calcul.
2530
CLS:PRINT :PRINT "ENTREZ UNE VALEUR " ;:INPUT VA
2531
PRINT
"CE QUI DONNE "BIN$(VA)" EN BINAIRE !"
voir également : HEX$
BOX h,v,p
syntaxe : BOX EN,EN,EN
nature : commande graphique haute résolution
BOX permet, en mode HIRES de tracer des rectangles comme ABOX, mais, au contraire de cette commande, elle permet de tracer ces rectangles en dimensions (h et v) à partir de la position courante du curseur et non en coordonnées absolues des sommets. La position du rectangle est donnée par son sommet supérieur gauche qui se trouve à la position du curseur, et sa taille par les paramètres h et v qui indiquent respectivement la largeur et la longueur du rectangle exprimées en nombre de points. Le paramètre p indique comme d’habitude la couleur de premier plan ou d’arrière plan.
Attention, les couleurs de fond et d’encre étant données par les attributs situés dans les 2 premières colonnes, il faudra tracer le rectangle en dehors de ces 2 colonnes, soit une abscisse du curseur égale au moins à 12. Si le curseur est à une abscisse inférieure à 12 points, il n’y aura pas d’attribut couleur et les points ne seront pas tracés dans les 2 colonnes de gauche.
Après l’exécution d’un BOX, le curseur se trouve toujours à la même position.
2650 HIRES:PAPER 7:INK 0
2700 CURSET
12,40,0
2750 BOX 50,120,1
voir également : ABOX, FILL, HIRES, CURSET
CHAR n,s,p
syntaxe : CHAR EN,EN,EN
nature : commande graphique haute résolution
C’est la commande qui permet d’inclure des textes dans une page de graphiques haute résolution, en plaçant des caractères en n’importe quel point de l’écran haute résolution.
On se déplace en un point de l’écran par CURMOV ou CURSET, et on place le caractère dont le code ASCII est n. Ce caractère appartiendra au jeu de caractères standard (s = 0) ou alterné (s = 1) et sera affiché dans la couleur du fond ou du premier plan selon la valeur du paramètre p (de 0 à 3).
Pour les codes de 0 à 31, les caractères ayant leur définition dans la zone écran de #9800 à #98FF sont affichés, alors que cette zone habituellement ne comporte rien.
Même chose pour la zone #9C00 à #9CFF pour les jeux de caractères alternés.
Le curseur est automatiquement
déplacé de 6 pixels vers la droite (prêt pour l’affichage du caractère suivant).
Si l’on sort de l’écran à droite, le curseur passe à la position du caractère
suivant, soit 8 lignes Hires plus bas et à gauche de
l’écran mais en conservant le décalage : les caractères étant
positionnables au pixel près, on pourra les mettre dans une position qui ne
soit pas un multiple entier de 6, soit avec un décalage de 0 à 5 pixels par
rapport à la position normale des colonnes. Quand on « passe à la ligne »
avec la sortie à droite de l’écran comme indiqué ci-dessus, la nouvelle ligne
commence à gauche avec le même décalage de 0 à 5 pixels, et elle est donc
alignée avec la ligne supérieure.
Si l’on sort de l’écran par le bas, le curseur est placé en haut de l’écran en conservant la même abscisse (X ne change pas) et en gardant le même décalage (de 0 à 7 pixels) en hauteur.
3300 HIRES :C=0
3350 PAPER 2 :INK 0
3400 FOR A=0 TO 150 STEP 50
3450 CURSET 40+A,90,3
3500 DRAW 20,0,2:DRAW 0,20,2
3550 DRAW -20,0,2:DRAW 0,-20,2
3600 CURMOV 7,6,3
3650 CHAR 49+C,0,2
3700 C=C+1
3750 NEXT
voir
également : HIRES, CURMOV, CURSET, PLOT, SCHAR
CLCH n°, e/s
syntaxe : CLCH (EN,EN)
nature : commande de gestion des canaux d’entrées/sorties.
Comme vous pourrez le savoir en lisant les caractéristiques du TELESTRAT ou le chapitre approprié, votre ORIC gère ses entrées/sorties selon un certain nombre nombre de canaux qui peuvent gérer chacun 4 entrées-sorties. Chaque canal se voit affecter un numéro (n) et il peut commander 4 entrées/sorties. Ces entrées/sorties portent un numéro spécifique de 0 à 7 pour les entrées et de 8 à 16 pour les sorties. Par exemple, 0 correspond au clavier, 7 à la fenêtre d’écran n° 0.
Les canaux seront ouverts avec OPCH puis fermés avec CLCH. Cette commande est l’abréviation de CLOSE CHANNEL n°, en anglais « fermer le canal n° ».
Exemple :
CLCH 1,12 va fermer la sortie 12 sur le canal 1.
4953 CLCH 0,0
4954 PRINT "Trop tard ! Plus de
clavier."
4955 PRINT "et hop, reset !"
voir : OPCH , CROSS , CROSSX et la table des entrées/sorties en annexe 4.
syntaxe : CLI
nature : commande système
CLI sert à rétablir les interruptions du microprocesseur 6502, ce qui a pour effet de rétablir la scrutation du clavier, des entrées RS232, MINITEL et imprimante, et de l’horloge.
Avantage de l’interruption, on accélère considérablement l’exécution du programme, le microprocesseur ne perdant pas de temps à interroger l’état des entrées/sorties à chaque cycle d’opérations.
Inconvénient, on perd la main, le clavier n’étant plus scruté. Inutile de mettre un INPUT ou un GET dans une portion de programme commençant par SEI. Même CTRL C ne peut arrêter le déroulement du programme.
Il faut donc utiliser le couple SEI (interdiction des interruptions) et CLI (rétablissement des interruptions) pour « encadrer » une portion de programme ne demandant aucune communication de l’ordinateur avec l’extérieur : boucle, phase de calcul ou de tri, exécution graphique, etc.
Placer donc le SEI au début de la phase et CLI à la fin de la phase pour récupérer la main, sinon… rendez-vous au bouton de RESET !
voir également : SEI
syntaxe : CLOCKOFF
nature : commande de gestion de l’horloge
CLOCKOFF sert à éliminer de l’écran l’affichage de l’horloge (voir instruction suivante)
L’heure n’est pas effacée de l’écran mais elle est figée au moment où le CLOCKOFF a été tapé. L’horloge, elle, n’a pas été arrêtée : seule une instruction SEI peut arrêter l’horloge. Un second CLOCKSET réaffichera l’heure correcte, l’horloge ayant continué de tourner.
Pour effacer l’heure de l’écran, il faudra « poker » à l’adresse-écran correspondante 8 espaces vides. Dans le cas de l’exemple suivant, ce sera :
POKE
#BBA0, " "
(8 espaces vides)
4964
TIME 12,34
4965
CLOCKSET #BB80
4966
WAIT 30
4967
CLOCKOFF
4968
POKE #BB80,"
"
voir
également : CLOCKSET, TIME,
TIME$
syntaxe : CLOCKSET EN
nature : commande de gestion de l’horloge
Affiche l’horloge toutes les secondes sous la forme HH:MM:SS. Cette valeur d’horloge ne sera bien sûr exacte que si l’horloge a été mise à l’heure avec la commande TIME.
EN représente l’adresse de la mémoire d’écran où elle doit être affichée.
Exemple :
CLOCKSET #BBA0
Attention : si l’on change de mode graphique, il est plus prudent auparavant d’effacer l’affichage de l’heure sous peine de trouver des traces indésirables sur l’écran, les adresses écran ayant été modifiées.
voir
également : CLOCKOFF, TIME,
TIME$
CLOSE n°
syntaxe : CLOSE NL
nature : commande de gestion de fichier (STRATSED)
CLOSE libère le tampon réservé en mémoire par OPEN et ferme le ou les fichiers ouverts. On ne peut fermer qu’un fichier par instruction CLOSE, sauf avec CLOSE 0 qui ferme tous les fichiers ouverts. Le fichier NL fermé par CLOSE NL peut ensuite être réutilisé sans l’apparition du message d’erreur « fichier déjà ouvert ».
Attention : en accès séquentiel, CLOSE est indispensable, sous peine de perdre les derniers enregistrements ! Par contre, en accès direct, on ne perd rien du tout.
Exemple :
CLOSE 1 ferme le fichier 1
CLOSE 0 ferme tous les fichiers ouverts
voir également : OPEN
nature : Commande de gestion de la RS232
Fait travailler le TELESTRAT en console via la ligne série : les caractères frappés au clavier apparaissent à la sortie RS232, et les caractères reçus par la prise RS232 sont affichés à l’écran. Il faut bien sûr que les paramètres de la transmission série soient corrects (voir les instructions SMODE, SSPEED etc.).
Pour revenir au fonctionnement normal, au BASIC et rendre la main au clavier, taper CTRL C.
Correspond également à CROSSX 0,16,3,8
voir également : SSPEED, SMODE, CROSSX
syntaxe : COPY
NFA TO NFA
COPYM "
COPYO "
nature : commande de gestion de disque
Comme son nom l’indique, cette commande copie des fichiers. M et O agissent comme les suffixes de SAVE :
COPY vérifie que le nom du fichier cible (la copie créée) n’existe pas déjà sur la disquette cible. Dans le cas contraire, le message « fichier existant » apparaît.
COPYO efface sur la disquette cible le fichier cible NF s’il existait auparavant. Dans le cas contraire, cette commande se comporte comme COPY.
COPYM permet de « merger » (coller bout à bout) des fichiers, grâce notamment à l’utilisation des Jokers dans les noms de fichier source. Si le fichier cible existait déjà sur la disquette cible, les fichiers désignés par le nom source lui seront « mergés » (ajoutés à la suite). Sinon, le fichier cible sera créé et sera composé de l’ensemble des fichiers désignés par le nom source.
Exemple :
COPYM "A-*.COM" TO
"B-PROG"
copie tous les fichiers de la disquette A, d’extension COM en un seul fichier de nom PROG sur la disquette B.
Pour utiliser les Jokers avec COPY, 2 cas se présentent en général :
- avec COPY et COPYO, le nom source peut comporter des Jokers ou ne comporter que le nom de lecteur. Quand on place un Joker dans le nom source, on doit le remettre à l’emplacement correspondant dans le nom cible. Les différents fichiers ainsi désignés seront copiés avec le même nom que chaque fichier source copié. Seule exception, on peut mettre un Joker dans le nom source, et omettre le nom cible en n’indiquant que le nom du lecteur cible, ou composer le nom cible que de Jokers ("*.*").
- Avec COPYM, le nom source peut comporter des Jokers, mais pas le nom cible, qui ne doit désigner qu’un seul fichier.
Exemple :
COPY "A-TOTO" TO "B-RIRI" copie le fichier TOTO de la disquette A sur la disquette B et le rebaptise RIRI.
COPY "B-*.COM" TO "C-*.CDE" copie sur la disquette C tous les fichiers d’extension ".COM", en leur donnant la nouvelle extension ".CDE".
voir également : LOAD, SAVE, BACKUP, DEL
COUNT
n
syntaxe : COUNT EN
nature : structure de contrôle
Comme son nom l’indique, COUNT permet de compter, c’est donc une instruction qui crée un boucle. Elle est plus simple que FOR..TO..NEXT car elle ne nécessite pas de création de variable. On l’utilisera donc chaque fois que l’on voudra créer une boucle de comptage sans avoir besoin d’incrémenter une variable. La boucle commence par COUNT n et se termine par UNCOUNT, toutes les opérations devant être répétées n fois étant comprises entre ces 2 instructions.
A l’écran, chaque boucle est décalée d’une tabulation, c'est-à-dire que les instructions comprises entre le début et la fin d’une boucle sont décalées d’un espace dès que l’on « liste » le programme. Si plusieurs boucles sont imbriquées, elles sont décalées d’autant d’espaces que leur niveau d’imbrication.
Pour une indentation correcte, COUNT doit impérativement être en début de ligne.
10 CLS
20 COUNT 12
30 PING : WAIT 10
40 UNCOUNT
50 PRINT "IL EST MINUIT DOCTEUR SCHWEITZER
!"
voir également :
FOR…TO…NEXT… , UNCOUNT, WHILE etc.
CROSS entrée,sortie
syntaxe : CROSS EN,EN
nature : Commande de gestion des canaux d’entrées/sorties
De façon schématique, CROSS permet de transférer des informations entre une entrée et une sortie du TELESTRAT.
Tous les signaux pris sur le périphérique ouvert en entrée sont retransmis sur le périphérique ouvert en sortie. On pourrait obtenir le même résultat en utilisant 2 OPCH, et une série de GET, INPUT etc. mais CROSS, c’est tellement plus facile !
Une application typique : CROSS 3,14 transforme le TELESTRAT en interface SERIE/PARALLELE !
On sort de ce mode de communication par CTRL C.
syntaxe : CROSSX ENe,ENs,ENe,ENs
nature : commande de gestion des canaux d’entrées/sorties
CROSSX consiste en deux instructions CROSS croisées et simultanées : la communication d’une entrée à une sortie est ici doublée d’une deuxième entrée à une deuxième sortie pour une communication en « FULL DUPLEX ». Généralement, une entrée et une sortie sont des organes du « système » TELESTRAT.
Par exemple, CROSSX 3,8,0,16 va ouvrir le TELESTRAT en terminal de saisie d’un ordinateur auquel il est relié par la prise RS-232.
On explique :
CROSSX 3,8,0,16 va prendre les signaux venant de la prise RS-232 (3) et les afficher sur la fenêtre n° 0 de l’écran (8) et les données tapées au clavier (0) et les envoyer vers la sortie série (16).
Un bon tuyau : ce n’est qu’un exemple pédagogique, car on peut obtenir exactement le même résultat en tapant l’instruction… CONSOLE !
On sort de ce mode de communication par CTRL C.
voir également : CROSS, CONSOLE, OPCH
syntaxe : CURSOR SET ou CURSOR OFF
nature : commande graphique basse resolution
Permet de supprimer l’affichage du curseur (CURSOR OFF) ou de le rétablir (CURSOR SET). Cette instruction sert en mode graphique, ou en saisie de donnée pour supprimer le curseur, et éventuellement le remplacer par un signe (flèche, etc.).
CURSOR n’agit que sur la fenêtre d’écran n° 0.
syntaxe : DEG (EN)
nature : fonction de conversion
Fonction bien utile en calcul ou en graphismes, DEG renvoie la valeur en degrés d’un angle exprimé en radians. On l’utilise ainsi que RAD, sa fonction inverse, comme « interface » entre les fonctions trigonométriques (ATN, COS, SIN, etc.) qui utilisent des valeurs d’angles en radians et les fonctions graphiques (LINE, BOX…) qui utilisent des valeurs d’angles en degrés. Ceci n’est valable bien sûr que si le changement d’unité n’affecte qu’une faible proportion des calculs du programme ou de l’affichage des données. Si tous les calculs et tous les affichages d’une phase se font dans la même unité, on a intérêt à changer carrément de mode en utilisant les instructions DEGRE ou RADIAN.
Exemple :
10
CLS
20 PRINT "ENTREZ UNE VALEUR D’ANGLE
EN RADIANS";:INPUT AN
30 PRINT "CELA FAIT " ; DEG(AN);"
DEGRES"
40 GOTO 20
voir également : RAD et les fonctions trigonométriques
syntaxe : DEGRE
nature : commande système
du Basic
DEGRE est, comme RADIAN, une bascule de mode : si on tape DEGRE puis RETURN, l’ordinateur est en mode « degré », c'est-à-dire que toutes les fonctions utilisant des angles (fonctions trigonométriques et fonctions graphiques) interpréteront les expressions numériques comme étant exprimées en degrés. Si on tape RADIAN puis RETURN, l’ordinateur est en mode « radian », c'est-à-dire que toutes les fonctions utilisant des angles interpréteront les expressions numériques comme étant exprimées en radians.
Exemple :
10 DEGRE
20 PRINT SIN(45)
30 RADIAN
40 PRINT SIN(45)
Dans le premier cas, l’ordinateur affichera 0.70710 (racine de 2 divisée par 2), dans le deuxième 0.850903524.
De même, si l’on tape PRINT PI, on obtient en mode « radian » 3.145926 etc., et en mode « degré » 180 (en effet, PI radians = 180°).
voir également : RADIAN
DEL "fichier"
syntaxe : DEL "NF"
nature : commande de gestion de disque (STRATSED)
Cette commande efface un fichier de nom NF.
Lorsque des caractères « Jokers » sont indiqués, il est demandé une confirmation pour chaque fichier. Taper alors O pour le détruire, N pour le conserver et ESC pour sortir de la procédure. Si le fichier est protégé en écriture, il ne pourra en aucun cas être effacé.
Vous constaterez parfois un temps mort après la destruction d’un fichier. En fait, le DOS réorganise le catalogue pour qu’il occupe le moins de place possible sur la disquette. Il y a 15 fichiers par secteur de catalogue. Il y aura donc réorganisation si on passe d’un nombre total de fichiers de 16 à 15, de 31 à 30, etc.
Exemple :
DEL "*.BAS" détruit tous les fichiers qui ont pour extension .BAS.
DEL "ESSAI.COM" détruit le fichier ESSAI.
DEL efface (en demandant confirmation) tous les fichiers de la disquette
DEL "B efface (en demandant confirmation) tous les fichiers de la disquette B
voir également : DELBAK
syntaxe : DELBAK
nature : commande de gestion de disque (STRATSED)
Cette commande détruit tous les fichiers d’extension .BAK dans le lecteur de disquette indiqué en option. On l’utilise généralement quand on a fini la mise au point d’un ou plusieurs programmes, que l’on a sauvegardés sur la disquette avec SAVEU, c'est-à-dire en conservant à chaque fois en « backup » la version précédente du programme. Quand tout est au point, on peut ainsi « nettoyer » la disquette et libérer de la place. Elle correspond à un DEL "*.BAK
Exemple :
DELBAK (si un seul lecteur est utilisé)
DELBAK "B
voir également : DEL
DELETE ((LIGNE début)(,LIGNE fin))
syntaxe : DELETE NL,NL
nature : commande système du Basic
Cette commande sert à effacer des blocs entiers de programmes. La virgule au milieu sépare les numéros de la première et de la dernière ligne du bloc à effacer. Si l’on omet de spécifier le numéro de fin de bloc, le programme sera détruit depuis la ligne dont le numéro sera spécifié, jusqu’à la fin.
Un exemple sera plus clair :
DELETE 150,180 détruira les lignes 150 à 180
DELETE 0,180 détruira le programme du début jusqu’à la ligne 180
DELETE 150 détruira toutes les lignes du programme de la ligne 150 jusqu’à la fin.
Attention, DELETE correspond à NEW puisqu’il efface toutes les lignes.
On ne peut utiliser DELETE en mode programme.
syntaxe : DIM VN(constante numérique)
DIM VA(constante numérique)
se place obligatoirement en début de ligne
nature : commande système du Basic.
L’instruction DIM (paa pa-pa-pa-pa-paaa…. comprenne qui peut…) sert à dimensionner des tableaux, afin que l’ordinateur ne réserve en mémoire que la place qui est nécessaire au tableau en fonction du nombre de variables prévues.
Un tableau permet de stocker des variables numériques ou des variables chaînes, dont le nom est généralement suivi d’un indice.
Une simple liste de variables A, désignant 6 entiers (A(0), A(1) … A(5)) aura un espace adéquat réservé en mémoire avec l’instruction DIM A(5).
Le tableau mono-indicé A(J) a 6 éléments numérotés de 0 à 5, auxquels on peut affecter des valeurs avec des instructions telles que A(3) = 350.
Les variables numériques seront exprimées par une ou plusieurs lettres (PRO ou A…), et les variables chaînes par une ou plusieurs lettres suivies de $ (B$ ou NOM$). Dans un tableau, le nom de la variable sera suivi d’un indice.
Les variables indicées et non indicées sont différentes : TOTO, TOTO(3) et TOTO$ peuvent coexister dans un programme en étant distinctes l’une de l’autre.
Le TELESTRAT permet d’utiliser un tableau comportant jusqu’à 11 éléments sans que l’instruction DIM soit indispensable : dès que l’on déclare une variable d’indice inférieur à 10, par exemple avec N(5) = 48, l’ordinateur réserve un tableau N(10) et affecte la valeur 48 à la 6e variable. Pour un plus grand nombre d’éléments, il est obligatoire de dimensionner le tableau.
Les tableaux sont généralement dimensionnés en début de programme, ou au moins avant l’utilisation de la première variable du tableau. Si plusieurs DIM affectent la même variable, le dernier seul est pris en compte.
On ne peut utiliser des tableaux de plus d’une dimension. Il est cependant facile de le remplacer avec un tableau mono-indicé de la façon suivante : il suffit de dimensionner la variable d’une constante égale au produit (Dx+1)*(Dy+1) des deux dimensions voulues (Dx et Dy) (les +1 proviennent toujours de la présence de l’indice 0).
L’illustration ci-après fera mieux comprendre cette substitution.
Tableau classique à 2 dimensions (variable V(x,y))
x = y = |
0 |
1 |
2 |
… |
Dx |
0 |
V(0,0) |
V(1,0) |
V(2,0) |
… |
V(Dx,0) |
1 |
V(0,1) |
V(1,1) |
V(2,1) |
… |
V(Dx,1) |
… |
… |
… |
… |
… |
… |
Dy |
V(0,Dy) |
V(1,Dy) |
V(2,Dy) |
… |
V(Dx,Dy) |
Tableau à 1 dimension (variable V(a))
x = y = |
0 |
1 |
2 |
… |
Dx |
0 |
V(0) |
V(1) |
V(2) |
… |
V(Dx) |
1 |
V(Dx+1) |
V(Dx+2) |
V(Dx+3) |
… |
V(Dx+1+Dx) |
… |
… |
… |
… |
… |
… |
Dy |
V([(Dx+1)*Dy]+1) |
V([(Dx+1)*Dy]+2) |
V([(Dx+1)*Dy]+3) |
… |
V([(Dx+1)*Dy]+Dx) |
En regardant la 2e
ligne, on remarquera que, quelle que soit la case du tableau, la formule de
l’indice est en réalité
pour la première case [(Dx+1)*1]+0
pour la deuxième case [(Dx+1)*1]+1
pour la première case de la 3e
ligne [(Dx+1)*2]+0, etc.
la formule générale étant [(Dx+1)*y] + x
Les tableaux de chaînes, de même que les variables simples, admettent pour chaque élément une longueur maximale de 255 caractères. Rappelez-vous que les tableaux consomment de la mémoire (5 octets par élément pour un tableau numérique, 3 octets plus la longueur de la chaîne pour un élément de tableau chaîne), aussi, dimensionnez-les judicieusement et ne les utilisez que si nécessaire.
8000 CLS
8050 DIM
N(40)' N(3,9)
8100 FOR
A=0 TO 3
8150
FOR B=0 TO 9
8200 N(4*A+B)=A*10+B
8250
NEXT
8300 NEXT
8350 FOR
K=0 TO 9
8400
FOR J=0 TO 3
8450 PRINT N(4*J+K),
8500
NEXT
8550
PRINT
8600 NEXT
syntaxe : DIR (NFA)
nature : commande de gestion du disque (STRATSED)
Cette instruction donne le catalogue de la disquette.
Le catalogue peut être interrompu par la pression de n’importe quelle touche :
provisoirement (pour continuer, taper SPACE ou n’importe quelle touche)
ou définitivement : taper ESC ou CTRL C.
Chaque nom de fichier (ou de programme) est donné avec le nombre de secteurs qu’il occupe. Si ce nombre est suivi de la lettre « P », cela signifie que le fichier en question est protégé en écriture.
Le nombre de fichiers n’est
limité que par le nombre de secteurs d’une disquette (1400 environ pour un
lecteur 40 pistes double face).
On peut préciser en argument un nom de fichier aléatoire (contenant un ou
plusieurs jokers) pour n’obtenir que le catalogue d’un certain type de fichiers
(2e exemple), ou d’une lettre pour obtenir le catalogue de la
disquette située dans un lecteur donné (3e exemple).
Exemple :
DIR
DIR "*.BAK"
DIR "C
voir également : LDIR
DNAME "nom de disquette"
syntaxe : DNAME EA
nature : commande de gestion du disque (STRATSED)
Modifie le nom de la disquette contenue dans le lecteur courant. Il suffit de le saisir au clavier.
Le nom de disquette fait toujours 20 caractères maximum. Si on en utilise moins, le nom est complété à droite avec des espaces. On peut utiliser des caractères de couleurs pour un nom de disquette plus joli quand on tape DIR, mais attention alors si on fait LDIR, car certaines imprimantes s’affolent quand elles rencontrent les codes de couleurs !
Exemple :
DNAME "MASTER 1.0"
syntaxe : DRV$
nature : fonction de gestion du disque (STRATSED)
Quand on ne précise pas le nom de l’unité de disque (A, B, C ou D) après une instruction d’accès disque (LOAD, DIR, etc.) , le système d’exploitation adresse le lecteur par défaut. Ce lecteur est à l’allumage le lecteur A, mais cette affectation peut être modifiée en commande directe comme par programme. Pour connaître le lecteur par défaut courant, il suffit de taper ?DRV$ et l’écran renvoie le nom du drive par défaut. Pour modifier cette valeur, il faut taper A- ou B- etc., le drive ainsi désigné devenant le lecteur par défaut, en mode direct comme en mode programme.
Exemple :
PRINT
DRV$
LOAD
DRV$+"-TOTO"
syntaxe : IF (condition) THEN (instruction)
ELSE (instruction)
nature : structure de contrôle
ELSE est une partie de l’instruction de branchement conditionnel IF… THEN … ELSE…
Traduisez : SI… ALORS …. SINON …
Ces instructions, parmi les plus utilisées en programmation BASIC, servent à définir des branchements conditionnels. Vous trouverez plus de détails sur l’utilisation de cette commande en consultant le paragraphe sur IF.
ELSE définit l’instruction qui sera exécutée si la condition exprimée par IF n’est pas remplie.
voir : IF
nature : structure de contrôle
Cette commande sert à arrêter un programme en évitant le message de fin « exécution arrêtée ligne … » que l’on obtient avec la commande STOP. On peut la placer en cours de programme si l’on a une routine accessible par GOSUB en fin de programme afin que le programme n’y accède que par GOSUB et non en dépassant la fin.
Le programme ci-dessous montre comment utiliser END pour stopper le programme si une condition (ici NB<0) n’est pas remplie.
13300 REPEAT
13350 PRINT "NOMBRE" ;:INPUT
NB
13400 IF NB<0 THEN END
13450 PRINT :PRINT
"LE LOGARITHME NEPERIEN DE "NB" EST "LN(NB)
13500 UNTIL FALSE
voir également : STOP
ERRGOTO ligne ou label
syntaxe : ERRGOTO LN ou N° de ligne
nature : commande de gestion des erreurs.
ERRGOTO permet d’envoyer le programme continuer son déroulement à une ligne particulière en cas d’erreur. Elle spécifie le numéro de la ligne où sera traitée l’erreur, dans le cas où un ERROFF a été tapé. Rappelons pour mémoire que ERRGOTO annule l’action de ERROFF.
On peut désigner également la ligne d’erreur par un label, et donc taper ERRGOTO LABEL.
Il est possible de mettre plusieurs ERRGOTO avec plusieurs numéros de lignes correspondant à des traitements différents des différentes erreurs. Cela permet de faire un traitement centralisé des erreurs.
Exemple :
1000 ERRGOTO 10000
…
10000 PRINT"TAPEZ UNE VARIABLE
NUMERIQUE !"
10010 GOTO 990
voir également : ERROFF
syntaxe : ERRLIST
nature : commande de gestion des erreurs
Comme WORD affiche les commandes ou FUNCTION les fonctions, ERRLIST provoque l’affichage à l’écran de tous les messages d’erreurs avec leur numéro et leur signification. Cette fonction ne liste que les messages d’erreurs d’exécution.
Ce listing dépassant une page-écran, on s’y déplace comme dans le catalogue de disquette : une touche quelconque pour stopper le défilement, une touche pour le reprendre, ESC pour sortir du listing et revenir au BASIC.
syntaxe : ERRNB
nature : fonction de gestion des erreurs
ERRNB renvoie le numéro d’erreur quand une erreur s’est produite. Elle sert à faciliter le traitement des erreurs si l’on veut afficher des messages plus explicites que les messages d’erreurs habituels, ou à déclencher des traitements d’erreurs particuliers.
Exemple :
100 ERRGOTO 800
…
800 PRINT "ERREUR N°" ;ERRNB
810 PRINT "VOUS AVEZ TAPE UN NOMBRE TROP GRAND"
ERRNB permet de définir également des erreurs « maison », c'est-à-dire des erreurs qui ne sont ni des erreurs système, ni des erreurs du DOS, en leur affectant des numéros supérieurs à 27, pour les traiter spécialement.
voir
également : ERRNL, ERROR, ERRLIST
syntaxe : ERRNL
nature : fonction de gestion des erreurs
ERRNL est une fonction qui à la suite d’une interruption renvoie le numéro de la ligne où s’est produite une erreur. On peut donc l’utiliser pour afficher le n° de ligne (PRINT ERRNL) ou pour provoquer un détournement (IF ERRNL = … THEN GOTO …)
voir également : ERRNB, ERROR, ERRLIST
syntaxe : ERROFF
nature : commande de gestion des erreurs
Cette commande interdit l’interruption du programme par une erreur du BASIC ou du DOS. Lors de l’initialisation, l’interruption est autorisée et les erreurs sont affichées selon les messages d’erreurs normaux du BASIC ou du DOS, dont la liste est en annexe, ou que l’on peut connaître en tapant ERRLIST.
Lorsque le programme rencontre une erreur, il continue et exécute la ligne spécifiée par ERRGOTO, ou s’arrête si aucune instruction de gestion d’erreur n’est prévue.
Quelle que soit l’erreur, il sera possible d’en connaître la nature en affichant à la ligne spécifiée dans un ERRGOTO le contenu de 2 variables ERRNB et ERRNL donnant la nature de l’erreur en fonction d’un numéro et le n° de ligne où l’erreur est survenue.
ERRGOTO annule le ERROFF et rétablit automatiquement l’interruption par une erreur.
Il faut noter que le CTRL C se comporte comme une erreur pour arrêter le programme (erreur n° 19). Si on a inclus un ERRGOTO dans le programme pour détourner les erreurs, on détournera également le CTRL C et il ne sera plus possible d’arrêter le programme en cours, sauf si on a inclus également un ERROFF au début.
…
500 ERRGOTO 1000
…
1000 PRINT "ERREUR EN LIGNE " ;ERRNL
1010 IF ERRNL = 40 THEN PRINT "Nom de fichier
inexistant"
…
voir également : ERRGOTO, RESUME
syntaxe : ERROR EN
nature : commande de gestion des erreurs.
Cette instruction permet de déclencher volontairement une erreur de numéro spécifié, en dehors des conditions où c’est le système qui affiche un message d’erreur. Cela permet également de centraliser toutes les erreurs de même type sur une ligne, y compris celles générées par l’utilisateur (du type Texte trop long etc.) et d’afficher des messages d’erreur en clair. La nature de l’erreur est signalée par la valeur d’une variable ERRNB, les valeurs réservées à l’utilisateur étant comprises entre 28 et 255, les autres étant réservées aux erreurs du DOS et du BASIC.
13700 ERRGOTO GEREERR
13750 PRINT "MOIS";:INPUT
MOIS
13800 IF MOIS=0 OR MOIS>12 THEN ERROR 50
13850 PRINT :PRINT
"JOUR";:INPUT JOUR
13900 IF JOUR=0 OR JOUR>31 THEN ERROR 50
13950 END
13960
]GEREERR
14000 IF ERRNB=50 THEN PRINT
:PRINT "Entrée illegale":PRINT :GOTO
13750
voir également : ERROFF, ERRGOTO, ERRNB
syntaxe : ESAVE NF
nature : commande de
gestion de disque (STRATSED)
ESAVE est une instruction qui permet de sauvegarder sur la disquette un écran en mode courant, c'est-à-dire TEXT, LORES ou HIRES.
Il est recommandé de donner un nom de fichier avec une extension particulière afin de les reconnaître dans le catalogue.
Si l’on sauvegarde un écran, il est obligatoire de passer dans le mode correspondant avant de le charger (par exemple être en mode HIRES avant de faire un LOAD "IMAGE.SCR" si IMAGE est un écran haute résolution).
Exemple :
ESAVE
"IMAGE.SCR"
syntaxe : EXT EA
nature : commande de
gestion du disque (STRATSED)
EXT permet de modifier le nom de l’extension par défaut (voir instruction suivante).
EA sera donc une chaîne de 3 caractères, introduite sous la forme EXT"ECR" si l’on veut que l’extension par défaut soit ECR.
voir également : EXT$
syntaxe : EXT$
nature : fonction de gestion de fichiers (STRATSED)
Quand on appelle le catalogue de la disquette avec DIR, celui-ci se présente sous la forme d’une liste de noms de fichiers, chaque nom étant suivi d’une extension permettant de connaître facilement sa nature (.BAS pour un fichier BASIC, .BAK pour un duplicata de fichier, .COM pour un fichier en langage machine, etc.). Cette extension peut être précisée par l’utilisateur, ou attribuée par défaut si elle n’est pas précisée.
PRINT EXT$ permet de connaître l’extension par défaut en renvoyant l’extension sous forme d’une chaîne de 3 caractères.
voir également : DIR
syntaxe : FALSE
nature : constante de
travail sur les nombres
Si vous utilisez votre TELESTRAT pour traiter des données, il y aura certaines circonstances où vous devrez ordonner des actions en fonction d’une proposition vraie ou fausse. Vous utiliserez pour cela TRUE (vrai ou 1) ou FALSE (faux ou 0 ) qui agiront comme des constantes (par exemple UNTIL FALSE comme dans l’exemple ci-dessous, ou PRINT TRUE qui affiche 1.
Bien que d’aspect un peu complexe, l’utilisation de ces 2 constantes peut souvent clarifier un listing.
Dans l’exemple ci-dessous, la ligne 15700 affiche 1 tant que A>B (la condition A>B étant vraie), puis, dès que B=A, affiche 0.
15600 A=10 :B=1
15650 REPEAT
15700 PRINT (A>B),A,B;:B=B+1
15750 UNTIL FALSE
syntaxe : FILE EN
nature : commande de gestion de fichiers
En HYPER-BASIC, on peut ouvrir jusqu’à 16 fichiers en même temps, à condition d’avoir auparavant déclaré le nombre de fichiers que l’on veut ouvrir, un peu comme on déclare le nombre de variables que l’on veut ouvrir dans un tableau avec DIM.
C’est le rôle de FILE, EN étant une expression numérique donnant le nombre de fichiers que l’on veut ouvrir.
ATTENTION : un FILE efface toutes les variables comme un CLEAR. Attention donc si on l’utilise en mode direct et, en mode programme, le placer au début…
FILE est obligatoire avant toute ouverture de fichier (OPEN etc.) sauf pour un programme qui doit fonctionner avec l’application TELEMATIC, où un FILE 2 est exécuté automatiquement dans le mode serveur.
Exemple :
FILE
8
syntaxe : FOR VN=EN TO EN (STEP EN) NEXT (VN)
nature : structure de contrôle
L’activité la plus fréquente d’un
ordinateur est la répétition de tâches simples. Il existe plusieurs moyens
d’effectuer ces répétitions en BASIC, que l’on appelle BOUCLES. FOR … TO… NEXT est l’un d’eux.
Une boucle FOR variable = A TO A+n … NEXT va obliger l’ordinateur à répéter n fois l’action correspondant à l’instruction ou aux instructions comprises entre FOR et NEXT. Par exemple :
10 FOR A = 1 TO 3
20 PRINT A
30 NEXT A
La boucle ci-dessus affichera : 1 puis 2 puis 3. Examinons comment elle fonctionne :
Tout d’abord, l’ordinateur prend la variable A et lui attribue la valeur 1. Il exécute ensuite la ligne 20 et affiche donc 1 et va à la ligne. En ligne 30, il rencontre NEXT qui vérifie la valeur de A et lui indique de revenir en début de la boucle donc à la ligne 10. Il attribue alors à A la valeur 2 et recommence le processus. Au 3e passage, A prend la valeur 3, qui est imprimée. NEXT teste ensuite si A est arrivée à la dernière valeur spécifiée après TO. Puisque c’est le cas, il ne renvoie pas à la première ligne de la boucle, et déroule la suite du programme s’il y en a une, ou s’arrête s’il n’y en a pas, ce qui est le cas dans notre exemple.
La boucle compte en incrémentant de 1 la variable de comptage (ici A) si aucun pas n’est spécifié. On peut obtenir un comptage de 2 en 2 ou de 10 en 10 en précisant un pas avec l’option STEP. On peut avoir par exemple :
10
FOR A = 5 TO 20 STEP 5
20
PRINT A
30 NEXT
La boucle ci-dessus écrira : 5, 10, 15, 20. On peut remarque que nous avons supprimé le A après le NEXT dans la ligne 30, car il n’est pas indispensable de préciser la variable après le NEXT. Cependant, quand on utilise plusieurs boucles, cela devient utile, et si en plus ces boucles sont imbriquées, c’est indispensable !
Un pas peut avoir des valeurs négatives pour décompter :
10
FOR A = 20 TO 5 STEP -5
20
PRINT A
30
NEXT
L’algorithme de FOR .. TO .. NEXT est différent selon que STEP est precisé ou non, la boucle sans STEP étant 4 fois plus rapide.
Dans un listing HYPER-BASIC, les boucles sont indentées, c'est-à-dire que toutes les instructions contenues dans la boucle sont tabulées d’un espace vers la droite. Si deux boucles sont imbriquées, la 2e boucle est décalée de 2 espaces, etc.
Les valeurs du pas, de la valeur initiale et de la valeur finale peuvent également être des variables, ou des valeurs non entières, ou des expressions calculées, afin de réutiliser cette variable à l’intérieur de la boucle.
voir également : REPEAT … UNTIL, COUNT
syntaxe : FRE
nature : fonction système du Basic
FRE affichera le nombre d’octets encore disponibles en mémoire à un moment donné
Exemple :
PRINT
FRE
voir également : HIMEM, GRAB, RELEASE
nature : commande de gestion du clavier
Cette commande convertit le clavier du TELESTRAT au standard des claviers de machines à écrire françaises : le clavier est bien un clavier AZERTY (comme avec la commande AZERTY), mais on a les lettres majuscules et minuscules, les chiffres sont obtenus avec SHIFT, et les signes sont disposés comme sur un clavier de machine à écrire français.
Seule différence, le tréma et l’accent circonflexe ne sont pas disponibles seuls, pour des raisons techniques de superposition de caractères. Les principaux caractères accentués sont donc au clavier.
Les caractères obtenus ne correspondent pas au tableau standard des codes ASCII, les textes frappés avec un clavier FRENCH ne pourront être imprimés correctement.
Cette instruction est également utilisable en mode HIRES.
voir également : AZERTY, QWERTY et l’annexe 2.
FST (NL)
syntaxe : FST (EN)
nature : fonction de gestion de fichier
FST est un indicateur d’état de l’enregistrement pour un fichier séquentiel : selon la valeur retournée par FST (NL) on sait si le pointeur se trouve en fin de fichier (renvoie 0), s’il est une variable numérique (retourne 1) ou sur une variable alphanumérique (renvoie 2).
Pour un fichier à accès direct, FST retourne le nombre d’enregistrements contenus dans le fichier.
Exemple (rajouter une fiche à la fin d’un fichier à accès direct) :
10
PUT 1,FST(1)+1
syntaxe : FUNCTION
nature : commande système du Basic
Généralement utilisée en mode direct, cette commande provoque l’affichage à l’écran de la liste de toutes les fonctions (attention, pas les commandes, dont la liste est obtenue avec WORD !), puis des constantes du BASIC (PI etc.), puis des opérateurs logiques et arithmétiques disponibles.
L’utilisateur conserve la main en BASIC, c'est-à-dire que, dès que l’affichage est complété, toute frappe au clavier donne accès à l’éditeur de page.
voir également : WORD, AIDE, HELP
GET v$
syntaxe : GET VA
GET ] EN;VA
nature : commande de gestion des canaux d’entrées/sorties
commande de gestion du clavier
GET est une instruction qui ressemble à INPUT en ce sens qu’elle permet de saisir des données au clavier, avec quelques différences notoires par rapport à INPUT :
- GET ne permet de saisir qu’un seul caractère à la fois ; si l’on tape plusieurs caractères, seul le premier sera affecté à la variable (lettre si la variable est une variable chaîne, chiffre si c’est une variable numérique).
- GET ne nécessite pas d’appuyer sur RETURN après la saisie de v : dès le premier caractère, elle passe à la suite des opérations.
GET est donc utile quand
il faut saisir une variable d’un seul caractère, ou simplement arrêter un
programme, avec la mention « TAPEZ SUR N’IMPORTE
QUELLE TOUCHE POUR CONTINUER ». L’exemple ci-dessous l’illustre :
17600 HIRES:INK
17650 FOR A=10 TO 50 STEP 5
17700 CURSET 50+(A*2)-(A/5),96,3
17750 CIRCLE 10+A,1
17800 NEXT
17850 PRINT "FRAPPEZ UNE TOUCHE POUR
RECOMMENCER"
17900 GET A$
17950 GOTO 17600
18000
RETURN
GET diffère également de la commande KEY$ car le programme s’arrête jusqu’à ce que l’on ait tapé un caractère au clavier. KEY$ scrute effectivement une entrée au clavier, mais passe à l’exécution de la ligne de programme suivante même s’il n’y a pas eu action sur le clavier.
GET ] permet de saisir un caractère à partir d’une entrée autre que le clavier : en jouant sur les canaux d’entrée/sortie, on peut ainsi saisir un caractère depuis le MINITEL, ou depuis un ordinateur extérieur RS232 : il suffit pour cela d’ouvrir un canal c, de lui affecter les entrées correspondantes (n° d’E/S entre 0 et 7) et de l’utiliser ensuite avec GET]c; VA.
voir également : INPUT, KEY$, OPCH etc.
syntaxe : GOSUB LN
ou GOSUB LABEL
nature : structure de contrôle
GOSUB, comme GOTO, est une instruction de branchement, c'est-à-dire qu’elle oblige le programme à se diriger vers une ligne LN donnée et non à se dérouler dans l’ordre croissant des numéros de lignes. Contrairement à GOTO, cette instruction conserve dans la pile de mémoire une adresse de retour après exécution du sous-programme. En effet, quand il rencontre à la ligne LND un GOSUB LNS, le programme saute à la ligne LNS où il continuera son déroulement jusqu’à ce qu’il rencontre l’instruction RETURN à la ligne LNR ; à ce moment, le programme revient à l’instruction qui immédiatement la ligne LND.
La partie du programme comprise entre la ligne LNS et la ligne LNR s’appelle sous-programme ou en anglais Sub-routine. Elle pourra être répétée autant de fois que l’on mettra de GOSUB dans le programme.
Le numéro de ligne d’un GOSUB peut être remplacé par un label (GOSUB CALCUL ou GOSUB TITRE…) en plaçant un ] suivi du label à la première ligne du sous-programme. Dans ce cas, GOSUB pourra même être omis (dans l’exemple ci-dessus, CALCUL ou TITRE suffisent à appeler un sous-programme commençant par ]CALCUL ou ]TITRE).
Une utilisation rationnelle de GOSUB peut augmenter la clarté d’un programme, et diminuer sensiblement son encombrement. L’utilisation de labels augmente encore cette clarté.
On s’en sert pour définir une procédure répétitive de calcul, d’affichage ou d’impression, etc.
N.B. : 10 imbrications environ sont possibles !
18100 CLS :C=0
18150 PRINT "DONNEZ UN NOMBRE <22"
18200 INPUT N
18250 IF N>22 THEN GOSUB 19050
18300 IF C=1 THEN 18100
18350 GOSUB 18500
18400 PRINT "FACTORIELLE DE";N;"=";F
18450 GOTO 19350
18500 ' SOUS
PROGRAMME 1
18550 IF N<>1 THEN 18700
18600 F=1
18650 GOTO 18900
18700 N=N-1
18750 GOSUB 18500
18800 F=F*(N+1)
18850 N=N+1
18900
RETURN' FIN DU SOUS-PROGRAMME
1
19050
' SOUS PROGRAMME 2
19100 CLS:C=1
19150 PRINT "SUIVEZ LES INSTRUCTIONS !
RECOMMENCEZ"
19200 WAIT 30
19250
RETURN' FIN DU SOUS-PROGRAMME
2
19350
END
syntaxe : GOTO LN ou
GOTO label
nature : structure de contrôle
L’utilisation de GOTO LN permet d’installer un « détour » dans le déroulement d’un programme : cela renvoie la suite du programme à la ligne LN.
L’instruction GOTO est très puissante et doit être maniée avec précaution : plus les GOTO se multiplient et plus le programme devient difficile à suivre. La prolifération des GOTO est généralement l’indice d’un programme mal structuré.
Enfin, GOTO peut être utilisé en mode direct pour lancer un programme en son milieu : GOTO 280 va dérouler le programme à partir de la ligne 280, en conservant les variables, alors que RUN 280 reprend le programme à la ligne 280, mais après avoir remis toutes les variables à zéro.
19600 GOTO 20150
19650 PRINT "UN PROGRAMME ";
19700 GOTO 19850
19750 PRINT "UNE PIETRE ";
19800 GOTO UTIL
19850 PRINT "QUI MONTRE ";
19900 GOTO 19750
19910 ]UTIL
19950 PRINT "UTILISATION ";
20000 GOTO 20250
20050 PRINT "GOTO !"
20100 END
20150 PRINT :PRINT :PRINT
"QUE VOILA ";
20200 GOTO 19650
20250 PRINT "DE ";
20300 GOTO 20050
voir également : GOSUB
syntaxe : HCOPY
nature : commande graphique haute résolution
HCOPY provoque la « hard-copy » d’écran haute résolution, c'est-à-dire que toute l’image qui se trouve à l’écran est recopiée sur l’imprimante point par point. Le format d’impression correspond à celui le plus généralement utilisé pour des imprimantes parallèles, c'est-à-dire le mode « bit image » de l’EPSON FX80.
Cette commande ne fonctionne qu’en mode HIRES, et recopie l’écran haute résolution mais pas les 3 lignes de texte du bas de l’écran HIRES. Pour recopier un écran de texte, on utilise TCOPY.
syntaxe : mode direct ou programme
nature : commande système du Basic
En cas de problème, HELP (ou son homologue en français AIDE) provoque l’apparition à l’écran du message :
Liste des commandes :
WORD
Liste des fonctions :
FUNCTION
Liste des erreurs :
ERRLIST
on peut l’inclure dans un programme à la suite d’une instruction d’erreur, ou le taper en commande directe sur un break imprévu.
voir également :
AIDE, FUNCTION, WORD
IF expression THEN instruction (ELSE instruction)
syntaxe : IF … THEN … (ELSE)
nature : structure de contrôle
Traduction mot à mot : SI … ALORS … SINON … C’est l’instruction type d’une structure de décision, utilisée pour tester une condition, et ordonner une action ou une autre selon le résultat. Le ELSE est ici entre parenthèses car il est facultatif, mais s’écrit bien sûr sans parenthèse. Il existe plusieurs façons de présenter cette instructino.
Les instructions peuvent être une suite d’instructions BASIC si elles tiennent sur une ligne. Si la condition exprimée (égalité, comparaison, condition logique, etc.) est remplie, les instructions suivant THEN sont exécutées. Le contrôle passe alors à la ligne suivante, sauf si l’on a utilisé ELSE, auquel cas les instructions suivant ELSE sont exécutées.
Cette structure de contrôle est très puissante et également très simple, tel que c’est illustré ci-dessous. THEN est souvent suivi de GOTO, GOSUB ou d’un label (si la condition est remplie, on se dirige à un sous-programme, sinon on continue). Si on l’utilise avec THEN GOTO n° de ligne, on peut omettre GOTO et n’écrire que THEN NL.
Attention à la manipulation des labels, THEN TOTO signifiera THEN GOTO TOTO et non THEN GOSUB TOTO.
24950 CLS
25000 PRINT "DONNEZ VOTRE NOM ";:INPUT Z$
25050 CLS
25100 PRINT :PRINT
"ETES-VOUS UN HOMME OU UNE FEMME (H/F) ";:INPUT
S$
25150 IF S$="F" THEN PRINT
"ETES-VOUS MARIE(E) (O/N) ";:INPUT S$
25200 CLS:PRINT @10,5;""
25250 PRINT "BONJOUR ";
25300 H$="MONSIEUR "
25350 O$="MADAME "
25400 N$="MADEMOISELLE
"
25450 IF S$="H" THEN PRINT H$; ELSE IF
S$="O" THEN PRINT O$; ELSE PRINT N$;
25500 PRINT Z$
IF peut également être
suivi d’une expression qui teste un état logique (0 ou 1, FALSE ou TRUE)
et exécute l’action après THEN si l’expression est vraie ou passe à la
ligne suivante ou exécute le ELSE si l’expression est fausse. On peut donc écrire :
IF
TRUE THEN …
ou
IF
A THEN …
qui exécutera l’action indiquée après THEN si A est non nul ou passera à la ligne suivante si A=0 ou
IF
A$ THEN …
Pour l’HYPER BASIC, est faux un nombre nul, ou une chaîne vide et vrai tout nombre non nul ou toute chaîne contenant au moins un caractère.
voir également :
OR, AND, NOT, GOTO, GOSUB
syntaxe : INIT
nature : commande de gestion du disque (STRATSED)
Permet d’initialiser et de formater des disquettes sur le lecteur courant.
L’écran affiche les indications à suivre. ESC permet de sortir prématurément de la procédure d’initialisation.
On peut éventuellement préciser le nombre de pistes par face et le caractère simple ou double face (en ajoutant 128 au nombre de pistes). Ces paramètres prennent les valeurs par défaut suivantes :
Nombre de pistes : 42 pistes par face
Nombre de faces : 2 faces
Pour modifier le nombre de pistes (np) d’un lecteur (d) : POKE #208+d,np
la valeur np vaut le nombre de pistes, augmentée de 128 si on désire un double face.
Ex : POKE #209,128+80 pour initialiser sur le B un lecteur 80 pistes double face.
- Les contraintes de formatage sont les suivantes :
Au moins 21 pistes par face, et au plus 99 pistes.
Le nombre total de secteurs que peut gérer le STRATSED sur un lecteur (Nbre de secteurs par piste x Nbre de pistes x éventuellement 2 si la disquette est double face) ne peut excéder 3840 soit 960 ko formatés.
Si l’une de ces contraintes n’est pas respectée, un message « valeur incorrecte » apparaîtra à l’affichage.
L’ordinateur commencera par afficher les données courantes : nom du lecteur, SF ou DF pour les faces, nbre de pistes et nbre de secteurs par piste courants.
Plusieurs renseignements seront demandés :
- Nom vous demande quel nom vous voulez donner à la disquette.
- Formater (O/N) : si oui, la disquette sera préalablement formatée.
ATTENTION passé le OUI, le formatage est irréversible et tous les fichiers se trouvant précédemment sur la disquette seront effacés.
Toutes les disquettes initialisées sont des disquettes MASTER, c'est-à-dire qu’elles contiennent le STRATSED.
Une fois l’initialisation terminée, le STRATSED vous demande :
« voulez-vous recommencer (O/N) » pour le cas où vous auriez d’autres disquettes à effacer…
Attention : le HIMEM doit être en #9800 (faire éventuellement RELEASE)
La commande INIT affecte la zone mémoire #9800-#B0FF s’il y a formatage et n’affecte rien s’il n’y en a pas. Il est donc recommandé d’effectuer une sauvegarde de son application en cours avant d’initialiser une disquette.
syntaxe : INPUT VN
INPUT VA
nature : commande de gestion du clavier
Cette instruction permet à l’utilisateur de « rentrer » des données dans l’ordinateur en affectant une valeur à une variable numérique ou alphanumérique. Elle interrompt le déroulement du programme tant que l’on n’a pas tapé au clavier un mot (variable alphanumérique) ou un nombre (variable numérique). Il existe plusieurs présentations possibles. Par exemple :
INPUT N$ interrompt le programme en affichant un point d’interrogation. Pour continuer, l’utilisateur doit taper des caractères au clavier puis RETURN pour valider l’entrée. La chaîne tapée au clavier est donc affectée en tant que valeur de la variable N$. Pour préciser ce que l’ordinateur attend, on peut afficher un message de la façon suivante :
10 PRINT "QUEL EST
VOTRE NOM"
20 INPUT N$
30 PRINT "BONJOUR
";N$
Pour une variable numérique, on tapera par exemple :
10 FOR I=1 TO 10
20 PRINT "TAPEZ UN NOMBRE ENTRE 0 ET
20"
25
INPUT N
30 IF
N>20 THEN 20
40 NEXT I
50 PRINT N,
JUMP n° logique, nombre d’enregistrements.
syntaxe : JUMP NL,EN
nature : commande de gestion de fichier (STRATSED)
Déplace le pointeur de fichier du nombre d’enregistrements précisé.
Si ce nombre est trop grand, le pointeur est placé à la fin du fichier, comme c’est le cas pour APPEND.
Cette instruction est en fait assez lente, puisqu’elle agit de manière séquentielle.
Exemple :
JUMP 2,
200
JUMP 12,
A*12
syntaxe : V$ = KEY$
nature : fonction de
gestion du clavier
Cette instruction est, avec INPUT et GET, un moyen d’entrer des données dans l’ordinateur via le clavier. Elle enregistre la pression d’une touche sur le clavier, mais déroule la suite du programme si aucune touche n’est enfoncée.
Comme KEY$ reçoit la valeur de la touche frappée, quelle qu’elle soit, c’est une instruction utile pour les jeux d’arcade ou les applications graphiques pour contrôler des mouvements du curseur à l’écran.
22550 CLS :X=2
22600 PRINT "POUR ALLER A DROITE,...M"
22650 PRINT "POUR ALLER A
GAUCHE,...Z"
22700 PRINT "POUR ARRETER :
........S"
22750 REPEAT
22800 V$=KEY$
22850 IF V$="M" THEN X=X+1
22900 IF V$="Z" THEN X=X-1
22950 IF X<2 THEN X=2
23000 IF X>35 THEN X=35
23050 PLOT X,10," <*>
"
23100 UNTIL V$="S"
23150 PRINT @20,10;"EXEMPLE TERMINE"
Une utilisation classique de KEY$ est l’utilisation comme état logique pour un branchement conditionnel, ici pour attendre une saisie au clavier :
IF KEY$ THEN GET A$
syntaxe : LO$(EA)
nature : fonction de travail sur les chaînes
Une fonction très intéressante dans la mesure où elle permet de transformer un affichage en majuscules en affichage en minuscules.
PRINT LO$("BONJOUR") donnera : bonjour
LOAD "fichier"
syntaxe : LOAD NF
nature : commande de gestion du disque (STRATSED)
LOAD est l’instruction qui sert à charger en mémoire centrale un fichier situé sur la disquette. Ce fichier peut être un programme BASIC ou en langage machine, un écran graphique, etc. Le fichier qui peut être chargé aura bien sur été créé sur la disquette avec SAVE ou ESAVE. Si le fichier est créé avec OPEN, le message d’erreur « mauvais type de fichier » sera déclenché. Si le fichier n’est pas trouvé sur la disquette, on aura le message « fichier absent ».
Le statut d’un fichier est un code qui indique sa nature et son état. Il se présente comme une suite de valeurs exprimées en hexadécimal de la forme DDDD FFFF SS EEEE qui représentent :
- DDDD l’adresse de début de fichier
- FFFF l’adresse de fin de fichier. Pour un fichier à accès direct, c’est le nombre de fiches.
- SS est le code d’état du fichier, qui a une signification bien particulière donnée dans la liste ci-dessous. Par exemple, 80 indique un fichier BASIC, 81 un fichier BASIC AUTO, etc. Ce code peut être interprété sous sa forme binaire, chaque bit ayant alors une fonction précise (l’octet étant présenté sous sa forme habituelle b7…b1,b0 :
- b0 exécution automatique
- b1 inutilisé
- b2 inutilisé
- b3 direct
- b4 séquentiel
- b5 inutilisé
- b6 bloc de données
- b7 Basic
- EEEE est l’adresse d’exécution s’il s’agit d’un fichier en langage machine, elle est de 0 par défaut.
Après un LOAD, chaque partie du code peut être connue en appelant son adresse mémoire :
DDDD avec DEEK(#52D)
FFFF avec DEEK(#52F)
SS avec PEEK(#52C)
EEEE avec DEEK(#531)
Avec le STRATSED, l’instruction LOAD n’est indispensable que si le nom de fichier est une variable alphanumérique (LOAD A$). Pour les autres, taper le nom de fichier suffit pour que l’ordinateur l’interprète comme un nom de fichier à charger. Cette particularité fait qu’il ne faut pas utiliser un mot-clé BASIC comme nom de fichier…
Exemple :
LOAD
"B-ROUTINE"
LOAD
A$+".TXT"
syntaxe : LOB$(EA)
nature : fonction de
travail sur les chaînes
Exactement la même fonction que LO$, à ceci près que la première lettre de la chaîne reste en majuscules. Pour reprendre l’exemple précédent,
PRINT LOB$("BONJOUR") donnera : Bonjour
MERGE "programme"
syntaxe : MERGE NF
nature : commande système du
Basic
Cette commande permet de mélanger un programme en mémoire avec un autre chargé depuis la disquette. MERGE constitue un nouveau programme en mélangeant les 2 programmes et en imbriquant les lignes, à condition que les numéros de lignes soient cohérents dans l’un et l’autre programme. Si le même numéro de ligne se retrouve dans les 2 programmes, priorité sera donnée à la ligne du programme « mergé ».
Si le programme résultant est trop long, un message « pas de place en mémoire » est généré. Bien sûr, le nom de fichier précisé après MERGE est celui du programme sur la disquette qui devra être chargé.
Précautions :
- MERGE effectuant un CLEAR implicite, les variables sont effacées.
Exemple :
MERGE
"ESSAI"
voir également : LOAD
syntaxe : MIDDLE (EA,EN)
nature : fonction de travail sur les chaînes
MIDDLE$ est une fonction de formatage d’affichage, qui permet à la fois de déclarer pour une chaîne un espace d’affichage donné, et de centrer la chaîne dans cet espace.
Bien sûr, la longueur de l’espace réservé doit être supérieure à la longueur de la chaîne, sinon aucun espace supplémentaire ne sera affiché. Si le nombre d’espaces restant est impair, il sera bien sûr réparti en 2 espaces inégaux de part et d’autre de la chaîne.
Exemple :
PRINT MIDDLE$("BONJOUR",13) donnera _ _ _ BONJOUR _ _ _ (les traits bas indiquent les espaces).
MOVE début, fin, adresse cible
syntaxe : MOVE EN,EN,EN
nature : commande de travail sur la mémoire
MOVE permet de déplacer un bloc mémoire d’un endroit à un autre. On précise donc l’adresse de début et de fin de bloc que l’on veut déplacer afin d’identifier celui-ci, puis l’adresse de début du bloc où on veut le loger.
Les adresses, généralement exprimées en hexadécimal, devront être cohérentes avec la « géographie » de la mémoire. Attention aux décalages hasardeux, et aux adresses qui feraient déborder un bloc en RAM overlay !
Exemple :
MOVE #A000, #BF40, #1000 va déplacer l’écran HIRES en #1000
MOVE #1000, #2F40, #A000 va le ramener à sa place d’origine
syntaxe : FOR … TO … NEXT
nature : structure de contrôle
NEXT est l’instruction qui provoque le comptage, c'est-à-dire l’incrémentation de la variable dans une boucle FOR.. TO. Des instructions plus détaillées sont fournies donc au paragraphe sur FOR (voir cette commande).
La variable de comptage précisée après NEXT peut être indiquée ou omise s’il n’y a pas beaucoup de boucles imbriquées. S’il y en a beaucoup, indiquer la variable après NEXT rendra la lecture du programme plus facile.
Exemple :
FOR
I = …
…
NEXT
I
ou
NEXT
Voir : FOR
nature : commande système
Cette commande provoque un « RESET à chaud », c'est-à-dire un déblocage du microprocesseur sans la perte du contenu des mémoires. Elle est comparable à l’action du bouton RESET situé sur le côté droit du TELESTRAT quand il est utilisé seul. On l’utilise en mode direct, à condition bien sûr « d’avoir la main », c'est-à-dire que le clavier accepte encore des commandes. Sinon, il est nécessaire de faire un « RESET à froid », c'est-à-dire de réinitialiser l’appareil en appuyant à la fois sur DEL et sur le bouton de RESET, mais cette fois on perd le contenu de la mémoire et on revient au premier menu d’initialisation.
voir également : RESET
OPCH n° canal, n° E/S
syntaxe : OPCH EN1,EN2
nature : commande de gestion des canaux d’entrées/sorties.
Dans la gestion des entrées/sorties du TELESTRAT, OPCH sert à ouvrir un canal de communication de même que CLCH sert à les fermer. Son nom vient de OPEN CHANNEL.
EN1 devra être compris entre 0 et 3 et sera le numéro de canal ouvert.
EN2 sera le numéro d’entrée ou de sortie activé sur le canal. Les numéros d’entrées/sorties sont données sur le tableau de l’annexe 4. On ne peut ouvrir plus de 4 entrées ou sorties à la fois sur un même canal.
Le ou les canaux ouverts seront accessibles pour les instructions d’entrées/sorties telles que PRINT, GET, INPUT etc. qui choisiront dans les entrées/sorties activées l’entrée ou la sortie qui convient à leur nature.
Un exemple sera plus clair :
OPCH 0,10 : OPCH 0,15 va ouvrir sur le canal 0 les entrées/sorties n° 10 et 15, c'est-à-dire fenêtre écran n° 2 en sortie et MINITEL en sortie.
OPCH 1,3 : OPCH 1,9 : OPCH 1,14 va ouvrir les entrées/sorties 3, 9 et 14 sur le canal 1.
Ces instructions étant tapées (en mode direct ou au début du programme), chaque fois que l’on appellera le canal 0, on agira sur les entrées/sorties 10 et 15. Par exemple,
PRINT ]0 produira l’affichage sur l’écran normal (0 par défaut), sur la fenêtre écran n°2 et sur le MINITEL.
PRINT ]1 produira l’affichage sur la fenêtre n°1 (E/S n°9) et sur l’imprimante Centronics (E/S n°14)
GET ]1 prendra une entrée venant de la prise RS232 (E/S n°3)
Les valeurs pour le canal 0 sont par défaut 8 pour la sortie (l’écran) et 0 pour l’entrée (clavier). Un PRINT… correspond à PRINT ]0… Si l’on ouvre des E/S sur le canal 0, elles sont ouvertes en plus des E/S par défaut, c'est-à-dire l’écran, le clavier, et la prise pour le joystick ou la souris. Si l’on est en mode « terminal MINITEL » (en appuyant sur SHIFT à l’allumage), le canal 15 (sortie MINITEL) est ouvert sur le canal 0.
voir également : CLCH et le chapitre sur les entrées/sorties.
OPEN 0 ou 1, n° de fichier, D
syntaxe : OPEN 0, NF, NL (accès séquentiel)
OPEN 1,NF,NL (accès direct)
nature : commande de gestion de fichier (STRATSED)
OPEN a 2 fonctions selon le suffixe qui le suit :
OPEN 1 ouvre un fichier à accès direct.
OPEN 0 ouvre un fichier à accès séquentiel.
Si ce fichier n’existe pas encore sur la disquette, il est automatiquement créé.
Un tampon est réservé dans la mémoire et un pointeur est placé au début du fichier.
Exemple :
OPEN 0, 2, "DISQUES" ouvre un fichier séquentiel appelé DISQUES avec le numéro logique 2.
voir également :
PUT, TAKE, SPUT, STAKE, CLOSE
nature : constante de travail sur les nombres
Si l’on est en mode RADIAN (voir cette instruction), PI renvoie 3.1415925.
Si l’on est en mode DEGRE (voir cette instruction), PI renvoie 180.
Pour toutes les applications où ce nombre est utilisé, ce sera plus pratique que d’avoir à taper le nombre en entier. Dans le programme ci-dessous, on l’utilise pour calculer la surface d’un cercle.
29300 CLS
29350 FOR V=1 TO 5
29400 R=
29450 A=PI*(R^2)
29500 PRINT "SI LE RAYON DU DISQUE
EST"R
29550 PRINT "SON AIRE EST"A
29600 PRINT :PRINT
29650 NEXT
syntaxe : POKE EN,EN ou
POKE EN,EA
nature : commande de travail sur la mémoire
A l’inverse de PEEK qui permet de lire ce qui se trouve dans une casse mémoire, POKE permet d’écrire dans cette case mémoire, c'est-à-dire d’y loger un nombre pour assurer une fonction particulière, ou pour pouvoir le retrouver plus tard avec PEEK. Une case mémoire contenant un octet, c'est-à-dire un nombre de 8 bits, le nombre le plus grand que l’on puisse représenter en binaire avec 8 chiffres étant 255 (1111 1111), n devra être compris entre 0 et 255. Pour loger des nombres plus grands, il faudra 2 octets, donc soit 2 POKE avec une conversion, soit un DOKE (voir cette instruction).
Les valeurs de n comme l’adresse peuvent être données en Décimal ou en Hexadécimal (précédées de #).
Avec POKE, vous pouvez entrer des programmes en langage machine, et commencer à « bricoler » les variables systèmes de votre Oric. Attention cependant, un POKE inconsidéré, avec une erreur d’adresse par exemple, peut avoir des conséquences imprévisibles. Le programme ci-dessous fait en principe pour modifier la ligne d’état, va avoir des conséquences imprévues… rendez-vous au bouton de RESET !
32050 FOR A=16 TO 23
32100 POKE #BB80+A,A
32150 WAIT 10
32200 NEXT
Caractéristique intéressante de l’Hyper-Basic, vous pouvez « poker » directement une chaîne en mémoire sans passer par les codes ASCII des caractères un par un :
POKE
#BB80,"BONJOUR"
va coller un BONJOUR aux adresses BB80, BB81, BB82, etc.
voir également : PEEK, DOKE, DEEK
nature : structure de contrôle
Cette instruction est à considérer comme un dernier recours dans la mesure où elle n’est d’aucune utilité dans un programme bien structuré. Elle sert en effet à sortir d’un sous-programme imbriqué. Normalement, quand un programme appelle un sous-programme 1 qui lui appelle un sous programme 2, les adresses de retour sont stockées dans la pile en mémoire dans l’ordre inverse des boucles : adresse de retour après le 2e RETURN puis adresse après le premier RETURN. POP, généralement utilisé en relation avec une condition, va permettre de quitter le sous programme sans revenir à la ligne suivant le GOSUB.
L’exemple ci-dessous l’illustre plus clairement : le logarithme d’un nombre négatif est un imaginaire. On a donc prévu une condition en ligne 32800 qui permette de revenir directement en ligne 32550, c'est-à-dire après le 1er GOSUB, et non en ligne 32700 comme cela se ferait normalement, l’exécution de la ligne 32700 provoquant alors un message d’erreur.
32450 FOR I=-
32500 GOSUB 32650
32550 PRINT: NEXT
32600 END
32650 GOSUB 32800
32700 PRINT LOG(I)
32750 RETURN
32800 IF I<=0 THEN POP
32850
RETURN
voir
également : GOSUB
syntaxe : POS (EN)
nature : fonction graphique
basse résolution
Utilisée pour détecter la position horizontale (tabulation) du curseur résultant d’une instruction PRINT. Elle ne fonction pas avec PLOT. POS(0) donnera la position horizontale du curseur sur l’écran, POS(1), (2) ou (3) donnera la position du curseur dans la fenêtre d’écran 1, 2 ou 3, alors que POS(4) donnera la position de la tête d’imprimante lors de l’exécution d’un LPRINT.
32970 CLS
33000 PRINT "0";
33050 REPEAT:PRINT ".";:UNTIL
POS(0)=15
33100 PRINT "*ICI 15"
voir également : PRINT
syntaxe : PRINT (@y,x ;) EN
PRINT (@y,x ;) EA
nature : commande graphique basse résolution
PRINT est l’une des instructions les plus utilisées en BASIC dans la mesure où c’est elle qui permet à l’utilisateur dans de nombreux cas de prendre connaissance de ce qui se trouve dans l’ordinateur. PRINT est la commande d’affichage ou d’impression de données, de résultats, de lecture de variables, etc.
PRINT peut être remplacé, quand on tape un programme ou en mode direct, par « ? » (il réapparaît sous la forme de PRINT quand on liste le programme).
Diverses présentations de PRINT sont possibles :
PRINT @y,x … va afficher la variable ou la chaîne en commençant à la position de l’écran dont les coordonnées sont x (comprise entre 0 et 39) et y (comprise entre 0 et 27). On peut mettre plusieurs instructions PRINT @ sur la même ligne avec des coordonnées différentes.
PRINT peut être affiché seul. Dans ce cas, il affiche une ligne vide.
PRINT peut être suivi d’une liste de nombres, de chaînes, de variables, séparées par divers signes de ponctuation selon la présentation que l’on veut donner à l’affichage :
- tout ce qui figure entre guillemets sera affiché tel quel. Pour afficher des guillemets, on utilisera la fonction CHR$(34)
- si 2 instructions PRINT se trouvent sur des lignes différentes sans aucune ponctuation, les caractères affichés le seront chaque fois sur une nouvelle ligne
- si l’on sépare 2 instructions PRINT par un point virgule, le curseur ne se déplacera pas entre les 2 affichages, c'est-à-dire que les caractères affichés seront sur la même ligne, et qu’aucun espace ne les séparera. Attention toutefois, quand l’ORIC affiche une variable numérique, il inclut d’office un espace devant et un espace derrière
- si l’on sépare 2 instructions PRINT par une virgule, le curseur ira se positionner après le premier affichage à la position de tabulation suivante : l’écran texte est séparé en 5 zones de tabulation qui comportent 8 colonnes, une virgule renvoie donc à la première case de la zone suivante.
Tapez par exemple :
PRINT "BONJOUR" : PRINT "AU REVOIR" (RETURN) puis
PRINT "BONJOUR";: PRINT "AU REVOIR" puis
PRINT "BONJOUR",: PRINT "AU REVOIR" et enfin
PRINT "AU REVOIR",: PRINT "BONJOUR" pour voir les effets des ponctuations
- si 2 instructions PRINT sont consécutives, on peut omettre la suivante et faire suivre un seul PRINT de plusieurs « messages » à afficher. Par exemple :
PRINT "3*";:PRINT A;:PRINT"=",:PRINT 3*A
peut s’écrire :
PRINT "3*";A;"=",3*A
- à condition qu’aucune confusion ne soit possible, on peut supprimer les points-virgules entre 2 affichages de nature différente, ou où les guillemets sont bien placés. Par exemple :
PRINT
T ; "HEURES" ; M ;"MINUTES"
peut s’écrire
PRINT T"HEURES"M"MINUTES"
Par contre, PRINT AX12 ne pourra convenir pour afficher le contenu d’une variable AX suivi de 12. En effet, l’ORIC le considérera comme l’ordre d’afficher la variable dénommée AX12, qui n’existe peut-être pas.
- on peut faire suivre PRINT d’une fonction SPC$ qui permet d’insérer des espaces. Voir cette fonction pour plus de détail.
- de nombreux mots-clés de cet index sont appelés fonctions car, utilisés seuls, ils ne produisent aucune commande. On utilisera souvent PRINT pour les faire « fonctionner », par exemple
PRINT PI ou PRINT SIN(X) etc.
L’exemple ci-dessous montre quelques possibilités d’affichage avec PRINT. Examinez bien chaque ligne en essayant de prévoir quel sera l’affichage résultant.
33300 B=2
33350 A$="C'EST LA VIE"
33400 PRINT 1,2,3
33450 PRINT A$
33500 PRINT 2*B OR NOT(2*B)
33550 PRINT
33600 PRINT
1;2;3
Si l’on fait suivre PRINT de @ et y,x, on doit calculer x et y pour que l’affichage reste à l’intérieur de l’écran (y<27 et x<39). Autrement, on risque l’affichage d’un message d’erreur du type « ILLEGAL QUANTITY ERROR ». Si elles résultent d’un calcul, les valeurs de x et y sont tronquées (arrondies à la valeur inférieure).
L’exemple ci-dessous dessine un cercle en utilisant les fonctions SIN et COS pour calculer la position d’affichage d’un caractère.
33750 R=12 :XC=20 :YC=13 :CLS
33760 DEGRE
33770 CURSOR OFF
33800 FOR A=0 TO 380 STEP 5
33850 X=XC+COS(A)*R
33900
Y=YC+SIN(A)*R
33950
PRINT @Y,X;"O";
34000 NEXT
34010 RADIAN
D’autres instructions ont la même fonction (LPRINT, SPRINT, MPRINT …) et surtout la même syntaxe, mais avec des destinations différentes : LPRINT va imprimer sur l’imprimante, MPRINT va afficher à l’écran du MINITEL, SPRINT va afficher ou imprimer sur le périphérique relié à la sortie série, etc. (voir ces instructions).
Une restriction toutefois : un PRINT @ envoie une série de codes correspondant au code ASCII 31 (US), puis à y+64 puis à x+64 pour assurer le positionnement du premier caractère. Cela fonctionne sur l’écran, sur le MINITEL, mais sur les imprimantes, cela produit parfois des résultats inattendus ! Donc… éviter les LPRINT @ …
voir également : SPRINT, LPRINT, MPRINT, SPC$
PRINT ]canal ;…
nature : commande de gestion des canaux d’entrées/sorties
Toutes les applications de PRINT décrites ci-dessus fonctionnent sur le canal habituel de sortie, c'est-à-dire l’écran. Comme on a pu le voir avec l’instruction OPCH, le TELESTRAT peut gérer 4 canaux d’entrée/sortie, les entrées/sorties n°0 étant celles par défaut. Ainsi,
PRINT "ESSAI" correspond à PRINT ]0 ;"ESSAI"
et affiche
ESSAI à l’écran, celui-ci étant la sortie par défaut.
Si l’on écrit PRINT]2 ;"DEUXIEME ESSAI", la chaîne "DEUXIEME ESSAI" va être dirigée vers la ou les sorties qui sont ouvertes sur le canal 2.
Si l’on a auparavant ouvert le canal 2 avec l’imprimante par exemple (en tapant OPCH2,14), DEUXIEME ESSAI sera affiché à l’imprimante. Cela correspondra donc à un LPRINT, avec une plus grande souplesse d’utilisation, une seule impression (PRINT) pouvant, selon les canaux ouverts, diriger des données vers la sortie série, vers telle ou telle fenêtre de l’écran, vers le MINITEL etc.
PROT fichier
syntaxe : PROT NFA
nature : commande de gestion du disque (STRATSED)
La commande PROT protège les fichiers contre l’écriture et donc contre l’effacement explicite (DEL) ou implicite (SAVEO). Un P apparaît dans le catalogue à côté du nom des fichiers protégés. Cette commande admettant les noms de fichiers ambigus, il est possible de protéger plusieurs fichiers de caractéristique commune en utilisant un joker (*). Pour faire « sauter » la protection d’un fichier, utiliser l’instruction UNPROT.
Si l’on tente d’écrire sur un fichier protégé, un message « (nom de fichier) est protégé » apparaît.
Exemple :
PROT
"ESSAI"
PROT "*.COM"
voir également : UNPROT
PUT n°, n° de fiche
syntaxe : PUT NL,EN, …
nature : commande de gestion de fichier (STRATSED)
PUT écrit une fiche sous le numéro considéré. Si le numéro est supérieur au nombre de fiches créées, il y a création de toutes les fiches.
Il est recommandé d’ajouter les fiches par blocs et non une par une, pour 2 raisons :
- gain de temps : écrire une ou 100 fiches le même temps (2 secondes environ)
- homogénéité du fichier qui sera écrit en un seul bloc sur la disquette, d’où une plus grande rapidité en lecture comme en écriture
- si l’on crée un numéro de fiche élevé, les fiches intermédiaires inutilisées contiennent n’importe quoi !
Si une variable correspond à un nom de champ, sa valeur est mise dans la fiche. Si le nom de champ ne correspond à aucune variable, le STRATSED met un 0 ou une chaîne vide dans le champ selon le type de champ.
Exemple : PUT 2, 12 écrit dans le fichier de NL 2, la fiche n° 12.
nature : commande de gestion de clavier
Généralement utilisée en mode direct, QWERTY annule l’action des commandes AZERTY ou ACCENT SET. Elle rétablit donc tous les caractères standard du clavier.
voir également : AZERTY, ACCENT
syntaxe : RAD (EN)
nature : fonction de conversion
RAD renvoie la valeur en degrés d’un angle exprimé en radians. On l’utilise ainsi que DEG, sa fonction inverse, pour des calculs de conversion comme « interface » entre les fonctions qui utilisent des valeurs d’angles en radians et celles qui utilisent des valeurs d’angles en degrés. On peut aussi utiliser les modes « DEGRE » ou « RADIAN » qui rendent inutiles ces conversions (voir instruction suivante).
10 CLS
20 PRINT "ENTREZ UNE
VALEUR D’ANGLE EN DEGRES" ;:INPUT AN
30 PRINT "CELA FAIT
" ;RAD(AN);" RADIANS"
40 GOTO 20
voir
également : DEG, DEGRE et RADIAN
syntaxe : RADIAN
nature : commande système du Basic
L’instruction RADIAN est une « bascule » qui commute entre le mode « degré » et le mode « radian ». En mode « radian », toutes les instructions faisant appel à des valeurs d’angles calculent sur une valeur exprimée en radian (pour mémoire, PI radians = 180°).
Ce mode est celui à l’allumage (par défaut) et se maintient tant que l’on n’est pas passé en mode « degré » en tapant l’instruction DEGRE.
En mode « radian », PRINT PI donne 3.1415926535 etc.
voir également : DEGRE
syntaxe : RAND (EN)
nature : fonction de travail sur les nombres
Pour générer un nombre aléatoire compris par exemple entre 1 et 49 avec une fonction RND traditionnelle, il faut taper :
N = INT ((RND(1)*49)+1)
Avec RAND, il suffit de taper :
N = RAND(49)+1
Avis aux amateurs de LOTO : RAND génère directement un nombre entier aléatoire compris entre 0 et la limite précisée.
syntaxe : RANDOM
nature : commande système du Basic
Quand on utilise la fonction RND pour générer des nombres aléatoires, l’ordinateur ne les choisit pas « au hasard », mais d’après une racine qui produit des tables de nombres aléatoires : la même racine produira les mêmes suites de nombres, qui sont aléatoires dans la mesure où ils n’ont aucun rapport entre eux. L’instruction RANDOM va servir à réinitialiser le générateur aléatoire qui produit des valeurs notamment grâce aux timers du VIA.
REN ancien nom TO nouveau nom
syntaxe : REN NFA TO NFA
nature : commande de gestion de disque (STRATSED)
REN permet le changement d’un nom de fichier. Le nouveau nom et l’ancien sont affichés. Si le nouveau existe déjà, un message « fichier existant » est affiché.
Le nom de fichier est ambigu, c'est-à-dire que les Jokers sont acceptés. Ils doivent alors être à la même place dans l’ancien et dans le nouveau nom, sous peine de déclencher le message d’erreur « nom de fichier incorrect ».
Exemple :
REN "TOULON.DAT" TO "MARSEILLE.COM"
REN "*.COM" TO "*.BAS" changera par exemple TOTO.COM en TOTO.BAS, ainsi que tous les autres fichiers d’extension .COM en fichiers d’extension .BAS.
REN "PROG?" TO
"TEST?"
syntaxe : REPEAT … UNTIL
nature : structure de contrôle
REPEAT est, avec l’instruction UNTIL qui lui est associée, une des façons de faire répéter à l’ordinateur une séquence d’opérations.
COUNT n … UNCOUNT va faire répéter la boucle un nombre n de fois
FOR C=1 TO n … NEXT va faire la même chose, mais on pourra utiliser la valeur de C pour des opérations à l’intérieur de la boucle.
REPEAT … UNTIL servira à répéter la boucle jusqu’à ce qu’une condition soit remplie. Cette condition pourra être une condition logique (UNTIL TRUE), une égalité (UNTIL A>B) etc., précisée après UNTIL.
Pour sortir prématurément d’une boucle REPEAT … UNTIL, interdiction d’utiliser un GOTO, sous peine de laisser dans la pile une adresse ou une valeur de comptage inemployée, qui faussera le déroulement de votre prochaine boucle.
35600 HIRES :PAPER 0
35650 A=1
35700 REPEAT
35750 CURSET 55+A,110-A,3
35800 DRAW 2+A,0,1:DRAW
0,A*2,1
35850 A=A+1
35900 UNTIL A>60
voir également
: UNTIL, FOR, NEXT
nature : commande système
A la différence de NMI qui effectue un « RESET à chaud », RESET effectue un « RESET à froid ».
Quelle différence ? Un RESET à chaud réinitialise le microprocesseur sans vider la mémoire, c'est-à-dire que les programmes et les variables sont conservées.
Un RESET à froid ramène l’ordinateur dans l’état où il est quand on l’allume, c'est-à-dire mémoire centrale vierge de tout programme, variable ou donnée. Le clavier est ramené en mode QWERTY, les canaux d’entrées/sorties à leur valeur par défaut, etc.
Si l’on appuie sur le bouton de RESET (sur le côté droit de l’appareil), on ne vide pas la mémoire. Pour obtenir « manuellement » un Reset à froid, il faut en même temps appuyer sur DEL et sur le bouton de Reset.
Pour obtenir le même résultat par une méthode « hard »,
- appuyer sur le bouton de RESET pour un RESET à chaud (NMI)
- appuyer sur RESET + DEL pour un RESET à froid (RESET)
voir également : NMI
nature : commande de gestion des erreurs
Quand on utilise des boucles comprenant des instructions de traitement des erreurs comme ERRGOTO etc., il est parfois nécessaire de revenir à l’endroit du programme où l’erreur s’est produite. C’est le rôle de RESUME qui ramène à la ligne où est survenue l’erreur (une fois la variable modifiée etc.) pour réexécuter cette ligne et continuer.
voir également : ERROFF, ERRGOTO
REWIND n° de fichier
syntaxe : REWIND NL
nature : commande de gestion de fichier (STRATSED)
Place le pointeur de fichier au début du fichier précisé.
Exemple :
REWIND
3
nature : structure de contrôle
Cette instruction doit se trouver à la fin de tout sous-programme. C’est en effet elle qui indique à l’ORIC qu’il a atteint la fin du sous-programme, et qu’il doit revenir au programme principal en continuant son déroulement à la ligne ou l’instruction suivant l’instruction GOSUB qui a appelé le sous-programme en question.
RETURN fonctionne également avec les routines définies par un label.
On ne peut modifier la destination d’un RETURN qu’en utilisant l’instruction POP.
36950 PRINT "TAPEZ LE RAYON DU CERCLE"
37000 INPUT R
37050 C=2*PI*R :Z=C
37100 ARRONDI
37150 CLS
37200 PRINT "LA LONGUEUR DU CERCLE EST"Z
37250 A=PI*(R^2) :Z=A
37300 GOSUB 37450
37350 PRINT "L’AIRE
DU DISQUE EST"Z
37400 END
37450 ' S.P d’arrondi a 2 decimales
37460 ]ARRONDI
37500 Z=INT(100*(Z+.005))
37550 Z=Z/100
37600
RETURN' fin du sous-programme
syntaxe : RUN (LN) ou LABEL
nature : structure de contrôle
Utilisé seul en mode direct, RUN déclenche l’exécution du programme BASIC qui se trouve en mémoire. On peut décider du lancement du programme en un point particulier en précisant après RUN le numéro de la ligne où l’on veut faire démarrer le programme, RUN 250 par exemple ou le LABEL se trouvant à ce numéro de ligne.
Une instruction RUN remet toutes les variables à zéro. SI l’on veut reprendre l’exécution d’un programme sans perdre les variables après une interruption par exemple, il faudra taper en mode direct GOTO n° de ligne et non RUN n° de ligne.
RUN peut également être inclus dans un programme.
voir également : CONT, END, STOP
syntaxe : SAVE NF (,A EN) (,E EN) (,T EN) (, AUTO)
SAVEO NF " " " "
SAVEM NF " " " "
SAVEU NF " " " "
nature : commande de gestion du disque (STRATSED)
La commande SAVE sauvegarde un fichier de nom NF sur la disquette. Si la disquette est protégée en écriture par la languette, la sauvegarde est arrêtée par un message d’erreur « disquette protégée ».
Ces 4 instructions SAVE ne diffèrent en fait que par leur comportement si un fichier de nom NF existe déjà sur la disquette.
Si aucune option n’est précisée, le fichier sauvegardé sera le programme BASIC courant.
Si ,A ou ,E sont précisés, il s’agira d’un bloc mémoire commençant à l’adresse A et finissant à l’adresse E.
C’est l’état donné à la sauvegarde qui déterminera si le fichier doit être ou non exécuté. Cet état peut facilement être modifié.
,T (EN) permet de spécifier une adresse d’exécution différente du début du programme. Bien sûr, cette option ne sert à rien pour un programme BASIC.
Voici la différence entre ces diverses instructions de sauvegarde : si le fichier n’existe pas, tous ces ordres sont équivalents et le fichier choisi est sauvegardé sous le nom choisi. S’il existe déjà un nom de fichier identique sur la disquette, voici ce qui se passe :
- dans le cas d’un SAVE, un message d’erreur « fichier existant » apparaît et la sauvegarde est arrêtée.
- dans le cas d’un SAVEO, le fichier existant est effacé et remplacé par le nouveau, sauf s’il était protégé en écriture, auquel cas la sauvegarde est arrêtée et le message « fichier protégé » apparaît.
- dans le cas d’un SAVEM, le fichier sauvegardé est ajouté à la suite du fichier existant pour n’en former qu’un.
ATTENTION : cette « fusion » n’est qu’une juxtaposition : simplement, les 2 fichiers sont stockés sous le même nom et seront chargés ensemble.
Exemple :
SAVE "ESSAI",
AUTO
SAVEM "DESSIN.SCR",A#9800,E#BFDF
- dans le cas d’un SAVEU, le fichier existant prend une extension ".BAK" (pour Backup) et devient une ancienne version. Attention : si un .BAK existait déjà (version antérieure), c’est celui-ci qui sera effacé, de façon à ne pas avoir 2 fichiers de même nom sur la disquette. C’est toujours la dernière version et la version précédente (extension .BAK) qui se trouvent sur la disquette après un SAVEU. Cette instruction permet donc une mise à jour rapide et en toute sécurité d’un programme en cours d’élaboration. En conséquence, il est interdit de sauver avec SAVEU un nom d’extension .BAK.
Attention : le SAVEU commence d’abord par détruire l’éventuel .BAK puis fait le changement de nom, et sauve enfin le fichier. S’il n’y a pas assez de place sur la disquette pour sauvegarder le nouveau fichier, la dernière sauvegarde aura pour extension .BAK.
Exemple : mise au point du fichier Basic "TEST"
Instruction Catalogue N° de la version
SAVEU "TEST" TEST.COM 1
SAVEU "TEST" TEST.BAK 1
TEST.COM 2
SAVEU "TEST" TEST.BAK 2
TEST.COM 3
Auto-Boot : le TELESTRAT est capable de charger automatiquement un programme quand on l’allume: il suffit de le sauvegarder sous le nom de "BONJOUR.COM". Lors de l’allumage, le TELESTRAT va chercher sur la disquette si un programme BONJOUR s’y trouve, et le charger s’il le trouve. Il va également effectuer un RUN si le programme a été sauvegardé avec le suffixe ,AUTO. Par exemple, un programme qui relance automatiquement l’arborescence "DEMO" du serveur après une coupure de courant :
10 LOAD "DEMO.SRV"
20 SERVEUR 0
Sauvegarder ensuite ce programme en tapant
SAVE
"BONJOUR.COM",AUTO
syntaxe : SCHAR EA
nature : commande graphique haute résolution
De même que CHAR permet de placer un ou plusieurs caractères sur un écran haute résolution, SCHAR, abréviation de String CHAR permet de placer une chaîne entière, débutant à la position courante du curseur. Cela évite, pour afficher une chaîne, d’avoir à la décomposer en caractères, puis d’afficher ces caractères 1 par 1 par leur code ASCII avec CHAR. L’affichage débute à la position courante du curseur, fixée par CURMOV ou CURSET, et qui doit être cohérente avec la longueur de la chaîne. La chaîne sera affichée dans la couleur du premier plan, le paramètre p étant forcé à 1.
La nouvelle position du curseur se trouve décalée vers la droite de 6 pixels pour chaque caractère affiché : pour une chaîne de 4 caractères comme dans l’exemple ci-dessous, la nouvelle position du curseur sera en x = 124 (100+(6*4)).
Exemple :
HIRES :
CURSET 100,50,3 : SCHAR "ORIC"
Pour obtenir des caractères alternés ou en vidéo inverse, passer par CHAR et ajouter 128 au code du caractère. Ainsi, en utilisant la facilité de l’HyperBasic 'c' pour le code ASCII de c, on pourra écrire indifféremment : SCHAR "A" ou CHAR 'A',0,1
nature : Commande de gestion de la RS232
SDUMP visualise à l’écran les caractères reçus via la prise RS232.
Les codes de 0 à #1F et de #80 à #FF apparaissent en hexadécimal et sont visualisés en rouge.
Si des erreurs de transmission sont détectées, un chiffre de #B0 à #B7 apparaît à l’écran en vidéo inverse :
B1 s’il y a une erreur de parité
B2 s’il manque un bit de stop. Si l’erreur est systématique, vérifier un problème de bit de parité ou de stop (sur les caractéristiques de la transmission).
B4 indique qu’un ou plusieurs caractères ont été perdus dans la transmission. Les erreurs de vitesse sont possibles en réception à 19200 Bauds, cette vitesse étant parfaitement admise à l’émission.
SEBUF adr.début,
adr.fin
syntaxe : SEBUF EN,EN
nature : commande de la RS232
Quand on donne à l’ORIC une instruction d’impression (généralement LPRINT ou LLIST), il transfère le contenu de ce que l’on veut imprimer dans une partie de la mémoire qui fonctionne en mémoire-tampon, généralement appelée « BUFFER d’imprimante ». Quand on utilise la sortie Série (RS232), pour une imprimante série ou un autre périphérique de stockage, 2 buffers sont également réservés comme mémoire tampon, l’un pour le stockage de données à l’émission, l’autre pour la réception. A l’origine, la taille mémoire de ce buffer est de ½ k octets, mais selon les configurations, on peut être amené à diminuer cette taille de buffer pour récupérer de la place mémoire, ou à l’augmenter pour les besoins d’une transmission. SEBUF permet de fixer la taille du buffer série en émission (Série Emission BUFfer). Pour retrouver la valeur par défaut, taper simplement SEBUF sans paramètre.
Ces valeurs par défaut sont :
début : #C800
fin : #CA00 (adresse de fin exclue)
voir également : SRBUF, LBUF etc.
syntaxe : SEI
nature : commande système
SEI est une commande qui sert à gérer les interruptions. Elle fonctionne à l’inverse de CLI, c'est-à-dire que SEI interdit la scrutation des entrées/sorties, accélérant la vitesse d’exécution du programme, alors que CLI la rétablit.
On met donc SEI en début du programme ou de la portion de programme où l’on veut interdire les interruptions et CLI à la fin pour les rétablir et « récupérer » la main.
voir également : CLI
SLIST (ligne,ligne)
syntaxe : SLIST (EN,EN)
nature : commande d’édition de programme.
SLIST a la même fonction que LIST et exactement la même syntaxe, mais l’affichage du listing du programme se fait non pas à l’écran (LIST) ni à l’imprimante parallèle (LLIST) mais à l’imprimante ou au périphérique relié à la sortie Série. Les paramètres de la communication série devront avoir été fixés auparavant : si un SPRINT fonctionne, SLIST se fera sans accroc !
Toutefois, si le périphérique relié à la sortie série est une imprimante, il faudra se méfier des caractères de contrôle inclus dans le programme qui pourront parfois être ignorés, donner n’importe quoi ou « planter » l’impression, selon les capacités de « compréhension » de l’imprimante.
voir également : LIST, LLIST, MLIST
SLOAD "fichier"
syntaxe : SLOAD NF
SLOADA NF
nature : commande de gestion de la RS232
SLOAD a exactement la même fonction et la même syntaxe que LOAD mais, au lieu de charger un fichier depuis la disquette, il le charge depuis le périphérique (disque, MODEM…) relié à la sortie série. Voir donc tous les détails à LOAD.
Comme SSAVEA, SLOADA charge un fichier sans en-tête. Cela est particulièrement utile quand on utilise le port série pour charger un fichier depuis un ordinateur différent, donc possédant un en-tête différent et non reconnaissable par le TELESTRAT.
Là encore, les paramètres de la transmission série doivent être correctement réglés.
syntaxe : SMODE "EA"
nature : commande de gestion de la RS232
Cette commande est destinée à fixer les paramètres de la transmission série.
SMODE est suivi d’une chaîne composée de caractères indiquant chacun un paramètre :
1/ Le nombre de bits (5, 6, 7 ou 8)
2/ Le bit de stop 0 => 1 bit de stop,
1 => 2, selon la vitesse
3/ L’horloge utilisée B = horloge interne
C = horloge externe
4/ La gestion de parité P = parité autorisée
N = parité non autorisée
5/ Le type de parité O = imparité
E = parité
M = Mark
S = Space
Exemple :
SMODE "71BPO" correspond à une transmission en 7 bits, avec 1 bit de stop, parité autorisée, parité impaire et pilotée par l’horloge interne.
La vitesse de transmission est gérée par l’instruction SSPEED.
Les valeurs par défaut sont : 8 bits, pas de parité et horloge interne, soit :
SMODE
"80BN"
voir également : SSPEED
SOUT caractère
syntaxe : SOUT EN
nature : commande de gestion de la RS232
Cette commande permet d’envoyer vers l’imprimante série ou vers un périphérique relié à la sortie série des caractères de contrôle. Elle agit exactement comme LOUT, mais à destination de la sortie RS232. Mêmes relations entre LOUT et LPRINT que entre SOUT et SPRINT.
voir également : SPRINT, LOUT.
syntaxe : SPC$(EN)
nature : fonction de travail sur les chaînes
SPC$ génère une chaîne « vide » de n espaces lors d’un affichage avec PRINT. Elle est d’utilisation très simple et l’exemple ci-dessous vous en montrera le fonctionnement :
10 FOR I = 1 TO 10
20 PRINT "ORIC" ;SPC$(I) ;"TELESTRAT"
30 NEXT I
voir également : PRINT
syntaxe : SPRINT EN
SPRINT EA
nature : commande de gestion de la RS232
Cette commande a la même utilisation et la même syntaxe que LPRINT et donc que PRINT, mais elle affiche ou imprime sur le périphérique (imprimante par exemple) relié à la sortie Série. Cela suppose pour fonctionner correctement que les paramètres de la transmission série ont été réglés au préalable.
voir également : PRINT, LPRINT
SRBUF adr.debut,
adr.fin
syntaxe : SRBUF EN,EN
nature : commande de gestion de la RS232
Si SEBUF permet de modifier à volonté la taille du buffer affecté à l’émission à l’interface série, SRBUF sert à modifier la taille de celui réservé à la réception des données. A l’origine, la taille mémoire de ce buffer est de 0.5 koctets, mais selon les applications, il peut être intéressant d’augmenter ou de diminuer cette taille. On utilisera pour cela SRBUF en précisant en argument l’adresse de début et l’adresse de fin de la zone que l’on veut réserver. Pour retrouver la taille d’origine du buffer, il suffit de taper SRBUF (#C680,#C800) qui est la valeur par défaut.
Exemple : SRBUF (#C680,#C9F0)
SPUT n°, expression
syntaxe : SPUT NL, EA ou EN
nature : commande de gestion de fichier accès séquentiel (STRATSED)
Comme PUT en accès direct, SPUT permet d’écrire une valeur dans un fichier en accès séquentiel.
Si l’écriture se fait en fin de fichier, il n’y a aucune contrainte. Si elle se fait en milieu de fichier :
- il faut que la valeur écrite soit du même type
- les chaînes seront tronquées ou complétées par des espaces selon leur valeur et la longueur du champ
Une valeur numérique occupe toujours 7 octets.
Une chaîne occupe sa longueur + 2 octets.
Cette instruction est compatible avec le système d’exploitation SEDORIC.
SSAVE "fichier"
syntaxe : SSAVE NF
SSAVEA NF
nature : commande de gestion de la RS232
Comme SAVE, SSAVE permet de sauvegarder un fichier (ou un programme) mais sur le périphérique connecté à la sortie série. On s’en servira pour imprimer sur une table traçante ou une imprimante série, ou pour transmettre par MODEM des tableaux, des pages-écrans, des fichiers, des programmes etc.
Elle admet les options ,A ,E ,T et AUTO mais, contrairement à SAVE, n’admet pas les suffixes O, U et M. En effet, SAVEO, SAVEU et SAVEM sont des instructions de gestion du disque et le BASIC de l’ORIC ne peut intégrer les instructions de gestion de tous les périphériques connectables à une sortie série ! Celles-ci devront être gérées par le périphérique lui-même.
voir également : SAVE
syntaxe : SSAVEA NF
nature : commande de gestion de la RS232
Quand elle envoie un fichier via l’interface série, l’instruction SSAVE le fait précéder d’un en-tête, c'est-à-dire de toutes les informations qui permettent de stocker ce fichier sous le standard du TELESTRAT. Si ce fichier est destiné à un autre appareil, et si donc l’en-tête n’est pas nécessaire, et parfois même indésirable, il suffit d’utiliser la commande SSAVEA NF, qui sauvegarde via la sortie série le fichier de nom NF sans en-tête.
voir également : SSAVE
SSPEED v
syntaxe : SSPEED EN
nature : commande de gestion de la RS232
SSPEED est une des instructions faisant partie du protocole de réglage de la sortie Série. C’est elle qui permet de définir la vitesse de transmission (en Bauds). Elle est donc exprimée en valeurs entières parmi les valeurs standard : 75, 150, 300, 600, 1200, 2400, 4800, 9600 ou 19200 Bauds. Cette donnée sera conservée jusqu’à la prochaine instruction de modification, ou jusqu’à l’extinction de l’appareil. Par défaut (à l’allumage), elle est de 9600 Bauds.
Exemple :
SSPEED
2400
voir également : SMODE
STAKE n°, variable
syntaxe : STAKE NL, VA ou VN
nature : commande de gestion de fichier (STRATSED)
STAKE permet la lecture d’une valeur dans un fichier et son affectation à une variable numérique ou alphanumérique selon la valeur lue.
Si l’on est en fin de fichier, l’ordinateur renvoie un message « FIN DE FICHIER ».
Exemple : STAKE 2, A$
nature : structure de contrôle
STEP, utilisé avec FOR .. TO .. permet de fixer un pas de comptage, c'est-à-dire que FOR I = 0 TO 100 STEP 5 va compter de 1 à 100 de 5 en 5 donc va produire 20 boucles. Des instructions plus précises sur l’utilisation de STEP et des boucles sont données avec l’instruction FOR .. TO ..
voir : FOR
nature : structure de contrôle
L’instruction STOP interrompt l’exécution d’un programme et provoque l’affichage d’un message « exécution arrêtée en ligne LN », LN étant le numéro de la ligne où figure l’instruction STOP. Pour faire repartir le programme, on utilise l’instruction CONT. END est similaire à STOP, mais on ne peut repartir après END qu’en relançant le programme avec RUN, alors qu’avec STOP, on peut repartir à l’endroit où l’on s’est arrêté, comme le montre le programme ci-dessous :
42810 FOR X=1 TO 3
42820 PRINT "X=";X
42830 PRINT "PROGRAMME ARRETE PAR L’INSTRUCTION STOP"
42840
STOP
42850 NEXT X
voir également : CONT, RUN, END
TAKE n°, n° de fiche
syntaxe : TAKE NL,EN
nature : commande de
gestion de fichier (STRATSED)
Lit dans la fiche portant le n° EN dans le fichier portant le n° NL.
Si une variable correspond à un nom de champ, la variable est chargée avec la valeur correspondante.
Si le numéro de fiche est plus grand que le nombre de fiches créées, un message d’erreur « valeur illégale » sera affiché.
voir également :
PUT.
TALK
OFF/TALK SET
syntaxe : TALK OFF ou
TALK SET
nature : commande système du Basic
TALK SET permet d’avoir l’affichage des messages de compilation pendant la compilation d’un programme.
Par défaut, c'est-à-dire à l’allumage de l’appareil, on est en mode TALK OFF, c'est-à-dire que les messages ne s’affichent pas.
syntaxe : TCOPY
nature : commande graphique basse résolution
Permet de recopier sur l’imprimante reliée à la prise parallèle Centronics la fenêtre de texte courant. Si l’on est en mode TEXT ou LORES, tout l’écran sera recopié (Hard-copy). Si l’on est en mode HIRES, seule la fenêtre de texte (les 3 lignes en bas de l’écran) sera recopiée.
syntaxe : TIME EN,EN
nature : commande de gestion de l’horloge
Cette instruction permet de mettre à l’heure l’horloge en temps réel, qui bien sûr se remet à zéro dès que l’on éteint le TELESTRAT. On l’utilise généralement en commande directe, en tapant les heures puis les minutes, les secondes et dixièmes sont remis à zéro au moment où l’on exécute la commande (frappe de RETURN).
Exemple :
TIME
9,43 (RETURN)
syntaxe : TIME$
nature : fonction de gestion de l’horloge
Cette commande retourne ou affiche (avec PRINT) la valeur de l’horloge sous la forme
HH:MM:SS:D
soit dans l’ordre heure, minutes, secondes et dixièmes.
On peut à partir de là déclencher une opération à une heure donnée, ici par exemple un réveil :
10 IF TIME$="10:45:00:0" THEN 30
20 GOTO 10
30 COUNT 20 :
30 UNCOUNT
La variable TIME$ peut être exploitée par ailleurs comme une variable alphanumérique normale, c’est à dire que l’on peut isoler les minutes ou secondes avec MID$, LEFT$, etc.
voir également : CLOCKSET, TIME
syntaxe : TRACE SET / TRACE OFF
nature : commande système du Basic
Le mode TRACE permet, lors de la mise au point d’un programme, de repérer les erreurs en suivant “à la trace” le déroulement du programme : en effet, en mode TRACE, les numéros des lignes de programme s’affichent au fur et à mesure de leur exécution. On entre en mode TRACE en tapant (généralement en commande directe) TRACE SET, et on en sort (pour retour à l’exécution normale) en tapant TRACE OFF.
L’affichage se fait normalement (par défaut) dans les 2 lignes du bas de l’écran. Il existe un moyen plus pratique pour déplacer cet affichage dans un coin de l’écran par exemple : il suffit, avec WINDOW 3, d’ouvrir la fenêtre n° 3 en lui donnant l’emplacement et la dimension convenables, et ce après l’instruction TRACE SET.
L’exemple ci-dessous montre une boucle sans fin, dont l’affichage en mode TRACE permet de retrouver le « bug ».
43610 CLS
43620 TRACE SET
43625 WINDOW 3,30,39,1,27
43630 FOR A=1 TO 10
43640 PRINT A
43650 IF A=6 THEN A=1
43660 NEXT
43665 TRACE OFF
nature : constante de travail sur les nombres
Mot qui signifie VRAI en anglais, TRUE est une constante système de l’ORIC qui restitue 1 pour signifier que le résultat de l’évaluation d’une expression conditionnelle est vrai. L’indicateur correspondant à FAUX est FALSE, qui renvoie la valeur 0.
L’association de ces 2 constantes permet de rendre plus clair un programme comprenant des opérations logiques ou des branchements conditionnels liés à l’état de « drapeaux ».
Attention à l’utilisation de TRUE avec NOT : si NOT TRUE = FALSE et NOT FALSE = TRUE, on peut arriver à des résultats différents avec des tests conditionnels : IF AB THEN … sera évalué comme vrai (TRUE) si AB<>0.
Par contre, si AB = 34 par exemple, NOT AB donnera 35 et non 0, ce qui n’a rien à voir avec FALSE !
Le programme ci-dessous donne un exemple d’utilisation de TRUE et FALSE pour vérifier une boucle WHILE … WEND.
43710 FLAG=FALSE
43720 PRINT "TAPEZ UN MOT DE DEUX
LETTRES"
43730 WHILE FLAG<>TRUE
43740 INPUT A$:FLAG=(LEN(A$)=2)
43750 WEND
voir également
: FALSE, NOT, AND
syntaxe : COUNT … UNCOUNT
nature : structure de contrôle
UNCOUNT est l’instruction qui délimite la fin d’une boucle de comptage commencée par COUNT.
Ces boucles sont affichées en retrait sur le listing de programme, les boucles imbriquées étant décalées d’un espace supplémentaire par rang d’imbrication.
voir également : COUNT, FOR…NEXT etc.
syntaxe : UNPROT NFA
nature : commande de
gestion de disque (STRATSED)
UNPROT permet de déverrouiller la protection d’un ou plusieurs fichiers obtenue avec PROT.
Le P en face du nom de fichier dans le catalogue disparaît.
On peut déverrouiller un fichier à la fois en tapant son nom, ou plusieurs en utilisant l’étoile comme caractère « joker ».
Exemple :
UNPROT
"ESSAI.BAS"
UNPROT ".COM"
voir également : PROT
syntaxe : REPEAT … UNTIL …
nature : structure de
contrôle
UNTIL est l’instruction qui détermine la condition dans une boucle définie par REPEAT.
La structure habituelle est
REPEAT
… (action) …
UNTIL (condition)
Tant que la condition énoncée n’est pas remplie (égalité, flag, TRUE ou FALSE, etc.), le contenu de la boucle s’exécute. Dès qu’elle est remplie, le programme sort de la boucle et exécute les instructions suivantes.
voir également : REPEAT
syntaxe : UP$(EA)
nature : fonction de travail sur les chaînes
A l’inverse de LO$ ou LOB$ qui transforment une chaîne en caractères majuscules en minuscules, UP$ va transformer toutes les lettres minuscules d’une chaîne en majuscules. Bien sûr, les chiffres et signes ne seront pas affectés et les lettres déjà en majuscules le resteront.
Exemple :
B$="bonjour" :PRINT UP$(B$)
donnera BONJOUR.
syntaxe : WAIT EN
nature : commande de gestion de l’horloge
En utilisant cette instruction, on obtient une temporisation de t dixièmes de seconde avant que l’exécution du programme se poursuive. Il est indispensable d’utiliser WAIT si l’on répète des instructions sonores comme MUSIC, PLAY, SOUND, SHOOT etc., afin de définir des durées de notes, ou laisser s’écouler le temps d’enveloppe des sons pré-programmés.
On peut également l’utiliser pour introduire des pauses dans le déroulement d’un programme ou d’un affichage, dans une boucle, mais une entrée au clavier ne peut interrompre la période d’attente (affichages cycliques). Si l’on veut introduire une pause que l’on puisse interrompre par une action au clavier, il faut utiliser GET ou INPUT.
Attention : si l’on a mis un SEI en début de programme, cette instruction déconnecte l’horloge, et rend donc l’instruction WAIT inopérante, et le programme se bloque.
voir également :
MUSIC, SOUND, PLAY …
syntaxe : WHILE … (condition)
../..
WEND
nature : structure de contrôle
WEND marque la fin d’une boucle conditionnelle WHILE .. WEND. Voir donc les détails de la commande suivante.
syntaxe : WHILE … CONDITION
nature : structure de contrôle
WHILE définit une boucle qui est liée à la réalisation d’une condition :
WHILE A = -1 : PRINT "EN ATTENTE DE
RECEPTION"
RING : A = 1 : WCXFIN
par exemple peut être utilisé pour mettre le programme en attente d’un signal sur une prise d’entrée MIDI ou RS232, pour attendre la détection d’un caractère en affichant un message d’attente, etc.
Les instructions comprises dans la boucle entre WHILE et WEND s’exécutent tant que la condition suivant WHILE est remplie et ce, dès la première boucle. Dès qu’elle ne l’est plus, le système sort de la boucle et défile la suite du programme à partir de la ligne suivant WEND.
Une différence par rapport à la boucle REPEAT…UNTIL, la condition étant testée en début de boucle, la boucle peut être « sautée » si la condition n’est pas vérifiée.
voir également : REPEAT..UNTIL, WEND
syntaxe : WIDTH (EN)
nature : commande graphique basse résolution
Précise la largeur utile de l’affichage à l’écran (WIDTH). EN représente le nombre de caractères au bout duquel un retour chariot (CR) et un saut de ligne (LF) seront exécutés automatiquement.
La valeur par défaut est de 40 caractères.
Exemple :
WIDTH 20 provoquera un affichage de 20 caractères de large.
voir également : LWIDTH
WINDOW n° de fenêtre, Dx, Fx, Dy, Fy
syntaxe : WINDOW EN, EN,EN,EN,EN
nature : commande graphique basse résolution
WINDOW permet de définir une fenêtre d’affichage particulière à l’écran.
On peut définir 4 fenêtres différentes à l’écran, numérotées de 0 à 3. La fenêtre 0 est celle affichée par défaut, c'est-à-dire si l’on n’ouvre aucune fenêtre avec WINDOW ou si l’on ne précise aucun canal avec ]. La fenêtre 0 couvre la totalité de l’écran.
La taille d’une fenêtre et sa position sont déterminées par les extrémités de la diagonale, dont les coordonnées sont Dx, Dy et Fx,Fy.
L’affichage dans les fenêtres fonctionne donc avec TRACE SET, PRINT ] etc.
Les coordonnées doivent bien sûr être compatibles avec la taille de l’écran basse résolution.
nature : commande système du Basic
Généralement utilisée en mode direct, WORD est une commande qui provoque l’affichage à l’écran de la liste de toutes les commandes du TELESTRAT. C’est bien pratique quand on ne se souvient plus de la commande qui affiche les variables, ou si UNTIL prend un ou 2 « L », et qu’on a oublié son Index BASIC à la campagne !
Rappelons que les commandes sont les mots-clés qui provoquent directement une action de l’ordinateur, alors que les fonctions renvoient une valeur, et doivent être utilisées conjointement avec une commande (PRINT, IF, affectation, etc.). La liste des fonctions est fournie par … FUNCTION.
voir également : FUNCTION, AIDE, HELP.
nature : opérateur logique
OR vérifie si 2 conditions sont vraies, et affecte la valeur VRAI au résultat si l’une ou l’autre condition ou les deux sont remplies. XOR donnera la valeur VRAI au résultat si l’une ou l’autre condition sont remplies, mais la valeur FAUX si aucune ou si les deux conditions sont remplies.
En algèbre logique, XOR
est le OU EXCLUSIF (eXclusive OR en anglais).
On pourra, comme avec OR, l’appliquer à des opérations sur les nombres
binaires, mais en observant la table de vérité suivante :
valeurs de a valeurs de b |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
Annexe 4
Tableau des Entrées/Sorties du TELESTRAT
0 à 7 = Entrées :
0 Clavier, Joystick et souris.
1 Joystick
2 MINITEL en entrée
3 RS232 en entrée
4
5
6
7
8 à 20 = Sorties
8 Ecran fenêtre n°0
9 Ecran fenêtre n°1
10 Ecran fenêtre n°2
11 Ecran fenêtre n°3
12
13
14 Sortie Parallèle CENTRONICS
15 MINITEL en sortie
16 RS232 en sortie
17 Ecran en mode émulation VIDEOTEX
18
19
20