TI BASIC READY

10 CALL CLEAR
20 PRINT "LE TI-99/4A VOUS PRESENTE SON BASIC !"
30 PRINT


 


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
(avec Mini Memory, E/A
& Extended Basic)

CALL HCHAR
ou
CALL VCHAR

 

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  
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:
1 Transparent 9 Rouge
2 Noir 10 Rouge clair
3 Vert 11 Jaune foncé
4 Vert clair 12 Jaune clair
5 Bleu foncé 13 Vert foncé
6 Bleu clair 14 Magenta
7 Rouge foncé 15 Gris
8 Cyan 16 Blanc
                  Groupes de caractères ASCII:
1:   32 à 39       9:    96 à 103
2: 40 à 47 10: 104 à 111
3: 48 à 55 11: 112 à 119
4: 56 à 63 12: 120 à 127
5: 64 à 71 13: 128 à 135
6: 72 à 79 14: 136 à 143
7: 80 à 87 15: 144 à 151
8: 88 à 95 16: 152 à 159


Codes ASCII:

32  
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 -
46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
62 >
63 ?
64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ^
95 _
96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 y
123 {
124 |
125 }
126 ~
127 DEL
128  
129 SOH
130 STX
131 ETX
132 EOT
133 ENQ
134 ACQ
135 BEL
136 BS
137 HT
138 LF
139 VTT
140 FF
141 CR
142 SO
143 SI
144 DLE
145 DC1
146 DC2
147 DC3
148 DC4
149 NAK
150 SYN
151 ETB
152 CAN
153 EM
154 SUB
155 ESC
156 FS
157 GS
158 RS
159 US


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)

 

0        
1        
2        
3        
4        
5        
6        
7        
8        
9        
A        
B        
C        
D        
E        
F        
 

Codage hexadécimal:
Un caractère ASCII est formé de 8 X 8 points. Chaque ligne est divisée en 2 blocs de 4 points qui seront codés en hexadécimal selon la codification réprésentée dans le tableau de gauche. Le code d'un caractère est donc composé de 16 valeurs. Si le code d'un caractère contient une valeur inférieure, les valeurs omises correspondent à 0 (zéro).

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
OPEN #1: FICHIER$,INTERNAL

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$
PRINT #15, REC 32:OCT

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$
INPUT #15, REC 32:OCT

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