Index HYPER-BASIC du TELESTRAT

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

ASCII             CLI                 HIRES             LORES           NMI

RESET            SEI                  TEXT

 

Les commandes et fonctions système du BASIC

'                       AIDE              CLEAR           CONT             DEGRE

DELETE          DIM                FRE                FUNCTION   GRAB

HELP              HIMEM          LIST                MERGE          NEW

RADIAN         RANDOM      RELEASE       REM               TALK

TRACE           WORD

 

Commandes et fonctions de travail sur la mémoire

CALL              DEEK             DOKE             MOVE            PEEK

POKE

 

Commandes et fonctions de Gestion de disque (STRATSED)

BACKUP        COPY             DEL                DELBAK        DIR

DNAME         DRV$              ESAVE           EXT                EXT$

INIT                LOAD             PROT              REN                SAVE

SAVEM          SAVEO           SAVEU           UNPROT

 

Les commandes et fonctions de gestion de fichiers (STRATSED)

APPEND        CLOSE          FILE                FST                JUMP

OPEN             PUT               REWIND        SPUT              STAKE

TAKE

 

Les opérateurs arithmétiques et logiques

AND               OR                  XOR               <                     >

>=                   <=                   =                     <>                   +

-                      *                      /                       ^

 

Les fonctions de travail sur chaînes

LEFT$            LEN                LO$                 LOB$              MID$

MIDDLE$       RIGHT$          SPC$              UP$

 

Les constantes et fonctions de travail sur les nombres

ABS                 ATN                COS                EXP                FALSE

INT                 LN                   LOG                NOT                PI

RAND             RND                SGN                SIN                  SQR

TAN                TRUE

 

Les fonctions de conversion

ASC                BIN$               CHR$              DEG               HEX$

RAD                STR$               VAL

 

Les commandes graphiques haute résolution

ABOX             ADRAW         BOX               CHAR             CIRCLE

CURMOV      CURSET         DRAW            FILL                HCOPY

PATTERN      SCHAR

 

Les commandes et fonctions graphiques basse résolution

CLS                CURSOR        INK                PAPER            PLOT

POS                PRINT            PRINT@         TCOPY           WIDTH

WINDOW

 

Les commandes de gestion du son

EXPLODE      MUSIC           OUPS             PING              PLAY

SHOOT          SOUND          ZAP

 

Les commandes de gestion des canaux d’entrées/sorties

CLCH             CROSS          CROSSX        GET]               OPCH

PRINT]

 

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

SSAVE           SSAVEA         SSPEED

 

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

KEY$              QWERTY

 

Les structures de contrôle

]                      COUNT          ELSE               END                FOR..TO

GOSUB          GOTO             IF..THEN        NEXT             POP

REPEAT         RETURN        RUN               STEP               STOP

UNCOUNT    UNTIL            WEND            WHILE

 

Les commandes et fonctions de gestion des erreurs

ERROFF         ERRGOTO    ERRLIST        ERRNB           ERRNL

ERROR           RESUME

 

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

 

 

ACCENT

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

 

 

ASCII

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 { | } ~

 

 

 

AZERTY

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

 

 

BIN$(a)

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.

 

 

CLI

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

 

 

CLOCKOFF

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$

 

 

CLOCKSET

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

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

 

 

CONSOLE

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

 

 

 

COPY

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.

 

 

voir  également : OPCH, CROSSX

 

 

 

 

 

 

CROSSX

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

 

 

CURSOR

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.

 

 

DEG (angle)

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

 

 

DEGRE

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

 

 

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.

 

voir également : LIST, MERGE

 

 

DIM variable (i…)

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

 

 

DIR

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"

 

 

DRV$

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"

 

 

ELSE

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

 

 

END

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

 

 

 

ERRLIST

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.

 

 

 

ERRNB

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

 

 

 

ERRNL

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

 

 

ERROFF

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

 

 

ERROR

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

 

 

ESAVE

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"

 

 

EXT

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$

 

 

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

 

 

FALSE

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

 

voir également : TRUE, NOT

 

 

FILE

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

 

 

FOR … TO… (STEP)... NEXT

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+nNEXT 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

 

 

FRE

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

 

 

FRENCH

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

 

 

FUNCTION

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 RAND(6)+1:PAPER 0

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.

 

 

GOSUB

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

 

voir également : RETURN, GOTO

 

 

GOTO ligne ou GOTO label

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

 

 

HCOPY

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.

 

voir également : TCOPY, VCOPY

 

 

HELP

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

 

 

INIT

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.

 

 

INPUT variable

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,

 

voir également : GET, KEY$

 

 

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

 

 

KEY$

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$

 

voir également : GET, INPUT

 

 

LO$ (chaîne)

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

 

voir également : LOB$, UP$

 

 

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"

 

 

LOB$ (chaîne)

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

 

voir également : LO$, UP$

 

 

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

 

 

MIDDLE$ (chaîne, longueur)

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).

 

voir également : PRINT, SPC$

 

 

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

 

 

NEXT (variable)

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

 

 

NMI

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

 

 

PI

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=RAND(30)

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

 

 

POKE adresse, n ou chaîne

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

 

 

POP

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=-5 TO 5:PRINT 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

 

 

POS

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

 

 

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,xva 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.

 

voir également : TAKE, OPEN.

 

 

QWERTY

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

 

 

RAD (angle)

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

 

 

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

 

 

RAND (limite)

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.

 

voir également : RND, RANDOM

 

 

RANDOM

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.

 

voir également : RND, RAND

 

 

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?"

 

 

REPEAT

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

 

 

RESET

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

 

 

RESUME

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

 

RETURN

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

 

voir également : GOSUB, POP

 

 

RUN

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

 

 

SAVE

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

 

voir également : LOAD, DIR

 

 

SCHAR "chaîne"

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

 

Voir également : HIRES, CHAR

 

 

SDUMP

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.

 

 

SEI

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.

 

voir également : LOAD, MLOAD

 

 

SMODE

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.

 

 

SPC$(n)

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

 

 

SPRINT        

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.

 

voir également : PUT, STAKE

 

 

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

 

 

SSAVEA

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$

 

 

STEP n

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

 

 

STOP

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.

 

 

TCOPY

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.

 

voir également : HCOPY, VCOPY

 

 

TIME

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)

 

TIME$

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 : PING

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

 

 

TRACE

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

 

TRUE

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

 

 

UNCOUNT

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.

 

 

UNPROT "fichier"

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

 

 

UNTIL

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

 

 

UP$ (chaîne)

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.

 

voir également : LO$, LOB$

 

 

WAIT t

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 

 

 

WEND

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.

 

 

WHILE

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

 

 

WIDTH largeur

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.

 

 

WORD

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.

 

 

XOR

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

 

voir également : AND, OR

 

 

 

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