Accueil/Home
Accueil/Home - Mes machines - Tous les articles - Dernières entrées - Revues - Trucs & astuces l'OI - Publicités - Nouveautés - Recherche / Echange

 
     

TI 95 PROCALC


La TI 95 PROCALC est la dernière calculatrice scientifique programmable en LMS non graphique de TI digne de ce nom. En cela elle est l'héritière de la TI 59 dont elle reprend les chiffres (est-ce un hasard ?). Mais elle en représente une grande voire très grande évolution. Elle a une mémoire constante, des capacités alphanumériques, un écran LCD de deux lignes, un langage puissant. Physiquement elle ressemble beaucoup à la TI 74 Basicalc mais la ressemblance s'arrête là. L'exemplaire que je possède date de 1986.

TI 95 PROCALC

L'écran est composé de 2 lignes. La première ligne affiche 16 caractères sur une fenêtre de 80 et la seconde permet d'afficher les mnémoniques des 5 touches de fonctions. Chaque mnémonique a au plus 3 caractères.

Par défaut, la PROCALC dispose de 1000 pas de programmes de 125 mémoires ainsi que de 5200 pas pour le système de fichiers. Toute la mémoire est partitionnable, les pas peuvent être transformés en mémoires, les mémoires en pas et celle affectée au système de fichiers en mémoires ou en pas. Le système de fichiers est une zone qui se comporte comme un disque virtuel dans laquelle des programmes peuvent être stockés et même exécutés. La partition se fait à hauteur de 8 pas de programmes pour 1 mémoire et inversement. On peut alors avoir jusqu'à 7.200 pas et 0 mémoire ce qui est très confortable.
Chaque programme est identifié par un nom de seulement 3 caractères. Cette limitation est due au fait que chaque nom est affiché automatiquement au-dessus d'une des 5 touches de fonctions et qu'il suffira d'appuyer sur la touche correspondante pour l'exécuter.

La sauvegarde dans une mémoire et le rappel se font grâce aux habituels STO et RCL. L'argument de ces fonctions peut être soit un nombre de 3 chiffres soit une lettre de A à Z pour les 26 premières. Ainsi STO A équivaut à STO 000. Comme sur les autres productions de TI, il  est possible de faire des opérations directement en mémoire (ST+, ST-, ST* et ST/). La machine dispose aussi des instructions INCR et INV INCR qui respectivement incrémente et décrémente de 1 une mémoire.

La machine est capable de stocker / rappeler des chaînes alphanumériques (majuscules et minuscules) via les commandes STA et RCA. Chaque chaîne a une capacité de 80 caractères !!! On peut se dire "waouh" mais il faut vite relativiser. Tout d'abord il n'y a pas de zone mémoire spécifique affectée aux variables alphanumériques ensuite une variable numérique prend d'autorité 10 mémoires contigües et enfin il n'y a pas d'instructions pour les manipuler.

Ainsi stocker une chaîne dans la mémoire 10 (STA 010) réserve les registres de 10 à 19. Les caractères y sont stockés selon leur code ASCII en hexadécimal et tous octets non employés sont initialisés avec un espace. Si on a entré ABCD alors RCL 010 affichera 4.142434  20 et RCL 011 affichera 2.020202  20, etc... L'utilisation des chaînes est relativement ardue et dévoreuse de mémoire donc à utiliser avec parcimonie. Plus embêtant ces mémoires ne sont pas protégées et il est possible de modifier le contenu d'une des 10 mémoires via un STO. Par contre, cela laisse une certaine liberté pour bidouiller (on verra ça plus loin). Le langage permet toutefois de fusionner à l'affichage une chaîne de caractères avec un résultat numérique via la fonction MRG. Exemple : 'X=' HLT * 2 = STO A 'Resultat=' MRG A HLT.

Son LMS ne déroutera pas ceux qui connaissent celui des TI 58/59 et écran LCD oblige, les mnémoniques sont affichées en clair et il est très puissant. L'accés au mode programme se fait grâce à la touche LEARN (et oui il y a assez de place pour mettre tout le mot).
L'entrée des commandes se fait de manière linéaire ce qui fait qu'on peut voir plusieurs instructions simultanément à l'affichage. J'aurais préféré un mode de fonctionnement comme sur les précédentes TI où on ne voyait qu'une seule instruction à la fois d'autant plus que les 16 caractères auraient permis de voir les instructions combinées sur une seule ligne (un peu comme sur la HP 41). Mais monsieur TI a bien fait les choses car sur la seconde ligne d'affichage on peut voir le numéro du pas en cours. Seul bémol, il aurait pu faire commencer la numérotation à 1 au lieu de 0. La commande PC (2ND LEARN) permet d'afficher le pas en cours si l'affichage.

Sur les TI 57/58/59 l'entrée des données se faisait avec l'instruction [R/S] (Run / Stop) qui en mode programme arrêtait le programme et en mode Run relançait l'exécution après l'arrêt permettant ainsi d'entrer des données. Sur la 95, il n'y a pas de touche équivalente. La touche RUN exécute le programme depuis le début et pour pouvoir entrer des données, il faut utiliser l'instruction BREAK. Combinée avec les capacités alphanumériques de la machine cela permet d'avoir une saisie 'user friendly'. Exemple : 'X=' BRK STO A 'Y=' BRK * RCL A = HLT
L'instruction HLT permet quant à elle d'arrêter un programme. Il est impératif qu'un programme se termine par HLT car autrement la machine continue l'exécution des instructions NOP jusqu'à ce qu'une erreur apparaisse parce que tout l'espace inutilisé est rempli avec cette instruction. 

Sont présents; les drapeaux (flags), les branchements, les sous-programmes, l'adressage indirect pour les mémoires et les branchements, les tests, l'attente de pression de touche (l'INKEY$ du Basic), le stockage de chaînes alphanumérques en mémoire, la redéfinition des touches de fonctions, la lecture ou la modification de la mémoire (comme les PEEK et POKE du Basic) et même l'appel de routines système en Langage Machine.

  • Les mots clés du langage ne peuvent pas être saisis lettre par lettre comme en Basic. Il doivent être sélectionnés à partir des touches ou des différents menus ce qui est assez lourd au final mais moins que sur une HP 41 par exemple. L'éditeur de programme permet l'insertion, la suppression ainsi que le défilement vers la gauche ou la droite.

Affichage TI 95

Détail de l'affichage. 002 correspond au 3ème pas => STO A.

  • Les instructions combinées (LBL AA, STO 000, etc) prennent 3 pas de programmes de même pour GTO (GTO 1111). Les instructions utilisant une des 26 premières mémoires (exemple STO A) n'en consomment que 2 mais celles utilisant l'adressage indirect utilisent un pas de plus. Par exemple STO IND 000 comptera pour 4 pas. La fonction INV (inverse) compte pour un pas. Notons que si INV 2ND GTL (Goto Label) se transforme en GTO mais INV IF = ne se transforme pas en IF <>. Cela aurait été sympa si ce système s'était appliqué à toutes les instructions.
  • Drapeaux : il y a 16 drapeaux utilisateurs (0 à 15) et les fonctions qui vont avec (SF - Set Flag, RF - Reset Flag, TF - Test Flag, INV TF).  Le flag 15 est utilisé pour gérer ou pas les erreurs par programme. Les autres sont réservés pour le système.
  • Les branchements peuvent être faits soit vers un pas de programme (GTO - s'obtient grâce à INV 2ND GTL) ou bien via un label (GTL). Les labels sont constitués de 2 caractères alphabétiques et/ou numériques considérés comme alphanumériques. Notons que LBL __ 1 ST+ 001 GLT __ HLT fonctionne très bien (__ = 2 espaces).
  • Même chose pour les sous-programmes avec SBR qui pointe vers un pas de programme (s'obtient grâce à INV 2ND SBL) et SBL qui pointe vers un label. Ils sont terminés par l'instruction RTN et il y a jusqu'à 8 niveaux d'appels.
  • La machine présente une instruction nommée ASM (ASseMble) qui permet d'augmenter la vitesse des programmes en remplaçant les branchements vers un label (GTL AA par exemple) en branchement absolu vers le pas de programme suivant le label (cet assemblage fonctionne aussi pour les sous-programmes et les redéfinitions des touches de fonctions). Il est à noter que le programme peut être désassemblé via INV ASM afin de revenir à l'état initial. Ceci est possible parce que la commande ASM ne supprime pas le label.
    • Le programme 1000 STO 000 LBL AA DSZ 000 GTL AA 'FIN' est exécuté en 17 secondes (ce qui n'est pas très rapide).
    • La version assemblée 1000 STO 000 LBL AA DSZ 000 GTO 0010 'FIN' 'est elle aussi exécutée en 17 secondes. Sur cet exemple le gain est nul et même si ce programme n'est pas représentatif, je ne pense pas qu'il faille s'attendre à monts et merveilles de cette commande.
  • Les TI 58/59 avaient 10 touches de fonctions de A et E et de A' à E' qui permettaient l'exécution d'un programme ou d'une fonction par simple pression de la touche correspondante. Leur signification étaient matérialisée par des caches en plastiques insérés dans la fente située juste au dessus de ces touches. La TI 95 dispose quant à elle de 5 touches de fonctions (F1 à F5) programmables grâce à l'instruction DFN. La syntaxe de la commande est DFN <touche de fonction>:<mnémonique>@<label>. Exemple : DFN F1:FAC@AA LBL AA x! HLT qui affichele mnémonique FAC au dessus de la touche F1. Notons qu'il existe la version "Assemblée" grâce à la commande DFA (le A signifiant Absolu). Exemple : DFA F1:FAC@0010 LBL AA x! HLT

  • L'adressage indirect est actif à la fois sur les mémoires et sur les branchements ou sous-programmes.
    • Pour les mémoires c'est l'habituel IND. Exemple : 100 STO IND 001. Si le registre 001 contient 15 alors le registre 015 contiendra 100. Cela fonctionne aussi avec les opérations directes sur les mémoires. Exemple : ST+ IND 001.
    • Pour les branchements vers un pas de programme ce sera GTO IND 001 qui enverra au n° de pas qui correspond à la valeur du registre 001.
    • Pour les branchements vers un label ce sera GTL IND 001 sauf que le dans ce cas là la machine considèrera la variable 001 comme alphanumérique et ne prendra que les 2 caractères à gauche. Il faut être prêts à sacrifier 78 pas de programmes pour utiliser cet adressage indirect mais comme écrit plus haut l'absence de gestion des chaînes permet la bidouille.
      Il suffit par exemple d'avoir 4.141 (équivalent hexadécimal de la chaîne 'AA') dans la mémoire 001 pour que GTL IND 001 branche le programme vers le label AA et n'utilise qu'une mémoire !!!
  • La batterie de tests est complète. Sont présents IF<, IF>, IF= et leurs inverses IF >= (INV IF<), IF<= (INV IF>) et IF<> (INV IF=). Cette batterie est complétée par DSZ et INV DSZ et par l'original Y/N.
    • La partie droite d'un test IF est obligatoirement un n° de mémoire adressée directement ou indirectement.
    • DSZ et INV DSZ sont possibles sur toutes les mémoires.
    • Y/N est un test qui fait apparaître YES et NO sur la seconde ligne de l'affichage au dessus des touches de fonctions F1 et F2. Si on presse F1 le programme passe à l'instruction suivante et F2 saute l'instruction suivante.
  • Comme indiqué précédemment la TI 95 a des instructions qui permettent de lire ou de modifier la mémoire comme le feraient les instructions PEEK et POKE du Basic. Ces instructions ne sont accessibles que si on passe la machine en mode non protégé. Le passage se fait à partir de l'option SYS du menu FUNC. Une fois le mode non protégé activé on a accès aux instructions suivantes STB, RCB et SBA (respectivement STore Byte, ReCall Byte et SubRoutineAssembler). STB et RCB permettent de modifier aussi bien la mémoire programme que les données des mémoires ou l'espace fichiers. Pour y arriver il faut calculer l'adresse à partir des formules suivantes :
    • Modification d'un octet d'une mémoire de données : Adresse = 16384 - (8 x Reg) - Octet où Reg = n° de la mémoire et octet = une valeur comprise entre 1 et 8.
    • Modification d'un octet de la mémoire programme : Adresse = 9184 + FS + Octet où FS = Taille du système de fichiers et octet le n° du pas de programme à modifier.
    • Modification d'un octet de l'espace fichier : Adresse = 9184 + Octet où Octet est compris entre 1 et FS.
  • Ces instructions acceptent uniquement un nombre héxadécimal de 4 chiffres comme paramètre et non pas une valeur quelconque convertie en héxadécimal après appel de la fonction. Par contre il est possible d'utiliser ces fonctions non pas directement à partir d'une mémoire mais à partir d'une indirection. En effet, il est possible d'entrer RCB IND 0001 et l'octet qui sera retourné dépendra de la valeur présente dans le registre 1.
  • L'activation du mode non protégé fait que les opérations sur les mémoires admettent un paramètre sur 4 chiffres au lieu de 3 en mode protégé. Si dans un programme on a les instructions STO 001 en mode protégé, on aura STO 0001 si on le quitte.
    • Le premier chiffre peut être 0, 2, 3 ou 6. Si c'est 0 alors les 3 autres chiffres correspondront à une mémoire "normale". Si c'est 2, 3 ou 6 les 3 autres chiffres pointent sur des registres systèmes.

La PROCALC peut être connectée à une imprimante (PC-324) ou bien à un lecteur de K7 via l'interface CI-7. Il est aussi possible de lui adjoindre une cartouche de RAM ou de ROM mais n'en ayant pas, je n'ai pas pu voir comment les utiliser.

En conclusion, c'est vraiment une très bonne machine. Elle est puissante, a beaucoup de mémoire. J'aime bien le système de fichiers qui permet d'avoir une bibliothèque de programmes. Mais elle est arrivée trop tard. En 1986, l'ère des calculatrices graphiques avait déjà commencé.

Les liens ci-dessous renvoient vers des scans du manuel :

 

 

 Documentation TI 95 PROCALC

 

TI 95 & TI 89

  TI 95 PROCALC et TI 89 

Texas Instruments TI 95 PROCALC

 

 Texas Instruments TI 95 PROCALC

 

Texas Instruments TI 95 PROCALC

 

Texas Instruments TI 95 PROCALC

 



 Copyright 2008 - by Badaze
Nombre de visites sur ce site 607608 depuis le 31 décembre 2009
Dernière mise à jour le 2024-03-24 18:21:51
Site optimisé pour Internet Explorer 5.5 et suivants - Résolution 1024x768