TI BASIC READY
10 CALL CLEAR
|
Avant que Microsoft impose son MSBasic sur le marché de l'informatique familiale, chaque constructeur développait tout autour du Basic standard une série d'instructions propres à leur micro-ordinateur. Ces instructions étaient principalement graphiques et sonores. La société Texas Instruments n'a pas échappé pas à la règle, elle a créé un Basic vraiment original et très reconnaissable par l'usage abondant qu'il fait de l'instruction « CALL »
Exemples:
Basic Standard |
CLS |
LOAD "" |
COLOR |
PEEK |
LOCATE & PRINT |
TI Basic |
CALL CLEAR |
OLD "CS1" |
CALL COLOR |
CALL PEEK |
CALL HCHAR |
Un programme écrit en TI Extended Basic est présenté ici
Le TI-Basic, situé en mémoire GROM, suffisait largement pour les besoins éducatifs et ludiques mais, non standard, il était inadapté à la programmation d'applications sérieuses. Un manque rapidement corrigé par T.I et Myarc à l'arrivée de langages Basic plus évolués: 'Extended Basic' et 'Super Extended Basic'. Ces deux langages offrent une quantité non négligeable de fonctions supplémentaires (comme les Sprites). Avec quelques manques toutefois: Extended Basic ne dispose pas de la fonction POKE pourtant bien pratique. Cette fonction n'étant disponible qu'avec les cartouches Mini-Memory ou Editor/Assembler.
Afin d'exploiter la puissance du processeur TMS9900, les programmeurs chevronnés pouvaient se procurer le module Mini-Memory , la disquette d'Assembleur-Editeur ou bien l' USCD Pascal. Pour les deux derniers langages, l'extension 32 Ko RAM est obligatoire. Un Forth a été développé très tôt mais il n'a jamais été réellement terminé par les programmeurs de T.I. (beaucoup de bugs ont été trouvés plus tard).
La taille maximale d'un programme écrit en Ti-Basic est d'environ 14,8 Ko. Logé en mémoire vidéo, le programme ne peut disposer de la totalité des 16 Ko de mémoire embarquée car une partie est réservée à l'affichage, à la table de numéros de ligne et des symboles, à l'allocation des variables et chaînes de caractères..
Lorsque Extended Basic est utilisé, la mémoire utilisateur n'est plus que de 13938 octets car une partie de la RAM est utilisée pour la gestion du module. Sur le TI-99/4, la mémoire disponible sous TI-Basic est moins importante de 256 octets par rapport au TI-99/4A.
Les performances du TI-Basic testées par Hebdogiciel :
Un test amusant avait été fait sur l'hebdomadaire Hebdogiciel, n°61 de décembre 1984, dans l'article "20 ordinateurs sur le grill".
Voici le listing du programme de test:
10 A=2 20 FOR N=1 TO 20 30 A=SQR(A) 40 NEXT N 50 FOR N=1 TO 20 60 A=A^2 70 NEXT N 80 PRINT A RUN |
Le résultat doit normalement être 2 mais nos chères machines donnaient généralement un résultat faux. Un classement des micro-ordinateurs fût fait, du plus approchant au plus éloigné. Le TI-99/4A, et l'EXL-100 arrivent en tête avec un résultat de 1.999999924. La raison en est simple: les calculs arithmétiques sont faits avec une précision de 14 chiffres sur le TI-99/4A, contre 8 chiffres pour la plupart des autres micro-ordinateurs de la même époque.
Les résultats du test:
Texas Instruments TI-99/4A |
1.999999924 |
Exelvision EXL-100 |
1.999999924 |
Canon X-07 |
19999997741097 |
Canon V20 |
1.99999977 |
Yashica (MSX) |
1.99999977 |
Amstrad 464/6128 |
1.999433 |
Atari 800XL |
1.99765243 |
Sinclair ZX-81 |
2.000446 |
Sinclair Spectrum |
2.000446 |
Apple //e |
2.00232917 |
Apple //c |
2.0023291 |
Commodore C64 |
2.00232917 |
Oric Atmos |
2.00232917 |
Commodore Vic-20 |
2.00232917 |
Thomson MO5 |
2.00232917 |
Thomson TO7 |
2.16828 |
Thomson TO7/70 |
2.16828 |
Tandy TRS80 |
2.16828 |
Hector HRX |
2.16927 |
Suivait à ce test un second, axé sur la rapidité du système, le TI-99/4A fait pâle figure...
Amstrad 6128 |
0.80s |
Hector HRX |
1.30s |
Thomson MO5 |
1.90s |
Thomson TO7 |
2.10s |
Thomson TO7/70 |
2.10s |
Commodore Vic20 |
2.10s |
Apple //c |
2.20s |
Apple //e |
2.20s |
Tandy TRS80 |
2.20s |
Commodore 64 |
2.40s |
Texas Instruments TI-99/4A (BE) |
2.50s |
Oric Atmos |
2.60s |
Canon V20 |
2.80s |
Yashica |
2.80s |
Exelvision EXL-100 |
3.80s |
Texas Instruments TI-99/4A (BS) |
4.60s |
Sinclair ZX-Spectrum |
5.30s |
Canon X-07 |
5.90s |
Atari 800 XL |
7.25s |
Sinclair ZX-81 |
19.90s |
Les instructions et commandes de programmation en TI-Basic:
TI-Basic | |
TI-Extended Basic |
Les commandes:
BREAK | Place un point d'arrêt. Exemple: BREAK 110 Arrete l'éxection du programme à la ligne 110. |
BYE | Ferme les fichiers ouverts et quitte TI-Basic |
CONTINUE | reprend l'exécution du programme après le déclenchement d'un BREAK |
DELETE | Efface un programme ou un fichier de données |
EDIT | Edite une ligne |
LIST | Liste le programme |
MERGE | Permet de lier un programmes à un autre. |
NEW | Efface le programme |
NUMBER | numérotation auto des lignes. Exemple: NUM 100,10 numérote de 10 en 10 en partant de la ligne 100. |
OLD | charge un programme |
RESEQUENCE | Remumérote la séquence de lignes |
RUN | Exécute le programme.Exemple: RUN 100 exécute le programme à partir de la ligne 100 |
SAVE | Sauve le programme |
SIZE | Informe sur la taille mémoire disponible |
TRACE | Affiche les numéro des lignes pendant l'éxecution du programme |
UNBREAK | Retire tous le ou les points d'arrêt |
UNTRACE | Annule la commande TRACE |
Les Fonctions:
Une raison supplémentaire de la lenteur du TI-Basic: Les calculs sont faits avec une précision de 14 chiffres. A l'époque, les langages Basic concurrents n'utilisaient qu'une précision sur 8 chiffres.
ABS(n) | Renvoie la valeur absolue de l'argument n |
ASC(n$) | Renvoie e code ASCII du premier caractère de n$ |
ATN(n) | Renvoie la valeur de l'arc-tangente de l'argument n . n est exprimé en radians |
CHR$(n) | Renvoie le caractère du code ASCII n |
COS | Renvoie la valeur du cosinus de n |
EOF(n) | Indique la condition de fin de fichier. si n=0 alors la fin de fichier n'est pas atteinte, si n=1 la fin de fichier est atteinte, si n=-1 le support de stockage est plein. |
EXP(n) | La valeur de la Fonction exponentielle de n. |
INT(n) | Renvoie le nombre entier inférieur ou égal à n. |
LEN(n$) | Renvoie le nombre de caractères dans la chaîne de caractère n. |
LOG(n) | Renvoie la valeur du logarithme népérien de n. |
MAX(n1,n2) | Compare n1 et n2 et renvoie celui qui à la plus grande valeur. |
MIN(n1,n2) | Compare n1 et n2 et renvoie celui qui à la plus petite valeur. |
PI | Constante égale à la valeur de PI, soit 3,14159265359 |
POS(n1$,n2$,n) | Recherche la présence de la chaîne de caractères n2$ dans la chaîne de caractères n1$ en commençant à la position n. En cas de réussite, retourne la position sinon retourne la valeur 0. |
REC(n) | Retourne le numéro n d'un enregistrement qui sera accédé par les instructions PRINT, INPUT et LINPUT. |
RND | Renvoie un nombre aléatoire compris supérieur ou égal à 0 et inférieur à 1. |
RPT$(n$,n) | Répétition de n fois la chaîne de caractères n$. Exemple: N$=RPT$("ABC",3) .N$ prend la valeur "ABCABCABC". |
SEG$(n$,p,l) | Renvoie une partie de la chaîne de caractère n$ débutant à la position p et de longueur l. |
SGN(n) | Indique le signe de n: la valeur=0 si n est nul, 1 si n est positif et -1 si n est négatif |
SIN(n) | La valeur du sinus de n |
SQR(n) | La racine carrée de n |
STR$(n) | Retourne la chaîne de caractère équivalente au nombre n. Exemple: N$=STR$ (123). N$ prend la valeur "123". |
TAB(n) | Positionne le curseur à la position n de l'écran. Exemple: PRINT "BONNE" ;TAB(7);"JOURNEE !" |
TAN(n) | La valeur de la tangente de n. |
VAL(n$) | Retourne le nombre équivalent à la chaîne de caractère n$. Exemple: N=VAL ("123"). N prend la valeur 123. |
Opérateurs numériques:
+, -, *, / et ^
Opérateurs relationnels:
=, >, <, >=, <= et <>
Opérateurs logiques:
AND, OR, NOR | Curieusement les opérateurs logiques n'étaient disponibles qu'en TI-Extended Basic. Les programmeurs contournaient ce vide en utilisant les fonctions bouléennes : ex: if A * B + C=0 then ... |
Les Instructions:
ACCEPT | |
CALL | |
CALL CHAR(ca,Hn$) | Modifie la forme du caractère ASCII ca grâce à la chaîne de caractères Hn$ composée de 16 valeurs hexadécimales |
CALL CHARPAT | |
CALL CHARSET | |
CALL CLEAR | Efface l'écran en remplissant l'écran d'espaces (code ASCII 32) |
CLOSE | |
CALL COINC | |
CALL COLOR(gc,cc,cf) | Définit la couleur d'avant et d'arrière plan (cc et cf) des caractères qui appartiennent au groupe de caractères gc. |
DATA | |
DEF | |
CALL DELSPRITE | |
DIM | |
DISPLAY | |
DISPLAY USING | |
CALL DISTANCE | |
END | Termine l'exécution du programme. |
CALL ERR | |
FOR | |
CALL GCHAR(x,y,ca) | Retourne le code ASCII ca du caractère positionné aux coordonnées x et y de l'écran. |
GOSUB | |
GOTO | Saute l'exécution du programme à un ligne spécifiée. Exemple: GOTO 550 |
CALL HCHAR(x,y,ca,n) | Affiche le caractère ASCII ca aux coordonées x , y de l'écran et le répète horizontalement n fois , si précisé, |
IF...THEN...ELSE... | |
IMAGE | |
CALL INIT | |
INPUT | |
CALL JOYST(t,x,y) | Retourne les directions x et/ou y prises par la télécommande t. x et y peuvent prendre les valeurs -4,0,+4. Le numéro t de la télécommande est 1,2,3 ou 4. |
CALL KEY(tc,t,e) |
Retourne l'état e d'une touche t du clavier. Il existe 6 organisations différentes du clavier, tc spécifie ce choix (0 à 5). e peut prendre les valeurs 0,+1 et -1 (0: aucune touche appuyée, +1: une nouvelle touche est appuyée, -1: même touche appuyée) |
LET | Affecte une valeur à une variable. |
CALL LINK | |
LINPUT | |
CALL LOAD | |
CALL LOCATE | |
CALL MAGNIFY | |
CALL MOTION | |
NEXT | |
ON BREAK | |
ON ERROR | |
ON GOSUB | |
ON GOTO | |
ON WARNING | |
OPEN | |
OPTION BASE | |
CALL PATTERN | |
CALL PEEK | |
CALL POSITION | |
PRINT USING | |
RANDOMIZE | |
READ | |
REM | Commente un programme. Cette instruction est ignorée à l'exécution. Exemple:: REM Le 99/4A vit pour toujours! |
RESTORE | |
RETURN | |
CALL SAY | |
CALL SCREEN(c) | Change la couleur de fond d'écran. c prend la valeur 1 à 16. |
CALL SOUND | |
CALL SPGET | |
CALL SPRITE | |
STOP | |
SUB | |
SUBEND | |
SUBEXIT | |
CALL VCHAR | Affiche le caractère ASCII ca aux coordonées x , y de l'écran et le répète verticalement n fois , si précisé, |
CALL VERSION |
Note: Si un Sprite (#n) est positionné à la ligne 208 (Dead Zone de l'écran), il deviendra invisible ainsi que tous les autres Sprites dont le numéro sera supérieur à n. Il seront tous à nouveau visibles dès que le Sprite (#n) quittera la ligne 208.
Codes de couleur:
|
Groupes de caractères ASCII:
|
Codes ASCII:
|
|
|
|
|
|
|
|
Code des touches de fonction:
FCTN 1 | DEL (effacer) | FCTN 9 | BACK (en arrière) |
FCTN 2 | INS (insèrer) | FCTN = | QUIT (quitter) |
FCTN 3 | ERASE (effacer) | FCTN S | LEFT (gauche) |
FCTN 4 | CLEAR (supprimer) | FCTN D | RIGHT (droite) |
FCTN 5 | BEGIN (commencer) | FCTN E | UP (haut) |
FCTN 6 | PROC'D (continuer) | FCTN X | DOWN (bas) |
FCTN 7 | AID (aider) | ENTER | ENTER (entrer) |
FCTN 8 | REDO (refaire) |
|
Codage hexadécimal: Par exemple, le motif ci-dessous correspond au hexadécimal "387CD6FEBAC6FE54'
|
Gestion du lecteur de disquettes sous Basic:
OLD PERIF.NOMDUPROGRAMME |
PERIF prend la valeur DSK1, DSK2 ou DSK3. NOMDUPROGRAMME est le nom en majuscule du programme à exécuter |
SAVE PERIF.NOMDUPROGRAMME |
PERIF prend la valeur DSK1, DSK2 ou DSK3. NOMDUPROGRAMME est le nom en majuscule du programme à sauvegarder. Il ne doit pas dépasser 10 caractères, ni inclure un espace ou un point. |
OPEN #N:"PERIF.FIC" [,OF][,TF][,MO][,TE] |
N est le numéro ou expression numérique compris entre 1 et 255 du fichier à ouvrir. #0 correspond au clavier et à l'écran. PERIF prend la valeur DSK1, DSK2 ou DSK3. FIC est le nom en majuscule du fichier à ouvrir. OF correspond à l'organisation du fichier. SEQUENTIAL (par défaut) ou RELATIVE. TF est le type de fichier. DISPLAY (données ASCII, 150 octets maxi environ) ou INTERNAL (données binaires) MO est le mode d'ouverture: INPUT, OUTPUT, UPDATE, APPEND TE est le type d'enregistrement: VARIABLE (longueur variable dans la limite de 254 octets) ou FIXED (longueur fixe dans la limite de 255 octets). La valeur par défaut est 80. En mode RELATIVE, le type d'enregistrement doit être FIXED. Exemples:
OPEN #2:"DSK2.ESSAI", RELATIVE 60,DISPLAY,OUTPUT,FIXED 20 |
CLOSE #N [:DELETE] | Ferme le fichier numéro N ouvert par la commande OPEN. DELETE détruit le fichier |
PRINT #N [,REC ENREG]:VAR |
Ecriture des données intégrées au fichier numéro N. ENREG précise le numéro de l'enregistrement à écrire (mode RELATIVE exclusivement). VAR est le liste des variables à écrire dans le fichier. Exemples:
PRINT #2: A$,B$,C$ |
INPUT#N [,REC ENREG]:VAR |
Lecture des données intégrées au fichier numéro N. ENREG précise le numéro de l'enregistrement à lire (mode RELATIVE exclusivement). VAR est le liste des variables à lire dans le fichier. Exemples:
INPUT #2: A$,B$,C$ |
RESTORE #N [,REC ENREG] | Positionne le fichier #N à la position spécifiée par ENREG. si ENREG est absent, le pointeur se place au début du fichier. |
EOF (#N) |
Fonction indiquant si la fin du fichier N est atteinte. Les valeurs retournées par EOF sont: 1 si la fin de fichier est atteinte sinon 0 . -1 indique que que la disquette est pleine et que la fin de fichier est atteinte. |
Les valeurs entre crochets sont optionelles.
Structure du catalogue d'une disquette
Enregistrment N°0: | Chaîne de caractères(max 10 caractères) | Nom du volume de la disquette |
Valeur numérique | Nombre total de secteurs | |
Valeur numérique | Nombre de secteurs disponibles | |
Enregistrement N°1 à N°127: | Chaîne de caractères(max 10 caractères) | Nom de fichier |
Valeur numérique | Type de fichier (1=DISPLAY/FIXED, 2=DISPLAY/VARIABLE, 3=INTERNAL/FIXED, 4= INTERNAL/VARIABLE, 5= Programme BASIC) | |
Valeur numérique | Nombre de secteurs alloués au fichier | |
Nombre total d'octets par enregistrement |
Contenu de ce site ©1999-2019 Fabrice Montupet