dimanche 2 novembre 2014

La HP 48G, un monument des années 90

Après l'arrêt par HP des modèles 48S et 48SX, les 48G et 48GX sortent simultanément en 1993. Ces modèles, très aboutis, resteront en vente jusqu'en 2003 ; une longévité exceptionnelle pour un produit technologique. La compacité de la 48, sa robustesse, et sa prise en main agréable, sont inscrits dans ses gènes. Parmi les améliorations de la G, son écran LCD est cité dans de nombreux articles. Et si sa résolution reste inchangée, il est effectivement plus contrasté. Étonnamment, même l'encre du manuel de la HP 48G parait plus noire que celle du manuel de sa grande sœur ! Pour rendre la G plus moderne, HP a apporté quelques changements dans les menus, ainsi que sur la sérigraphie du clavier. Le temps d'adaptation reste court. Mais, à l'usage, il faut supporter quelques lenteurs sur les "nouveautés conviviales" de la 48G. Par exemple, on doit patienter pendant quelques secondes lors de l'appel de certains menus déroulants, comme MEMORY. Cela dit, pour les utilisateurs qui maîtrisent et apprécient la pile illimitée, les concepts de variable-objet, le langage RPL, et le contenu de sa ROM de 512 Ko, cette HP 48G est un outil diablement efficace.

Les soeurs : HP 48SX et HP 48G

Lorsque l'on surfe sur les nombreux sites internet qui concernent cette machine, on découvre que la bibliothèque de programmes de la série G est encore plus vaste que celle de la S. Néanmoins, la HP 48G, limitée à 32 Ko de RAM, est rapidement dépassée. Cette capacité non extensible est trop juste pour faire tourner les meilleures applications, les jeux les plus sophistiqués, ou encore le très impressionnant Meta Kernel (ROM de remplacement). Par conséquent, pour profiter de toute la richesse du catalogue, on comprend rapidement l'intérêt des versions GX. Cela dit, les bricoleurs pourront faire subir à la version G une opération à cœur ouvert, qui consiste à lui souder, en interne, une ou plusieurs RAM de 128 Ko .

Une autre bémol sur ces nombreux programmes que l'on peut librement copier : le code source n'est pas toujours fourni (assembleur). De plus, la documentation est parfois succincte, et la traduction souvent absente (allemand, espagnol, italien...). Avec les années, tout cela finit par rendre la réutilisation de ces logiciels un peu aléatoire et complexe ; du moins par un non spécialiste de la HP 48.

Sous GNU/Linux, le programme 'ckermit', bien qu'un peu chargé en fonctionnalités, est plutôt pratique à utiliser pour le transfert des fichiers binaires vers la calculatrice, via le câble HP spécique à 4 pinoches. En sus, un adaptateur USB-serial, à base de chipset FTDI ou Prolific par exemple, est indispensable pour le raccordement à un PC récent.

C-Kermit, sous GNU/Linux

Maintenant, intéressons-nous aux performances en RPL mode utilisateur. Que vaut la HP 48G ? Je recopie une nouvelle fois mon petit programme, identique aux versions HP 28S et 48S :

<< DUP \/ IP           
IF OVER 2 / FP 0 == THEN
 DROP2 2               
ELSE
 3
 WHILE DUP2 > REPEAT
   IF 3 PICK OVER / FP 0 == THEN
     SWAP DROP 0 SWAP
   ELSE
     2 +
   END
 END
 IF OVER 0 == THEN
  3 ROLLD DROP2
 ELSE
  3 DROPN 1
 END
END
440 0.05 BEEP
>>

Caractères spéciaux :
- les symboles '<<'et '>>' sont les délimiteurs de programme
- '\/' correspond à la racine carrée

Le test sur 524287 s’exécute ici en 10s environ, un score correct. Sans être trop exigeant sur le caractère significatif de ce mini benchmark, on constate que la victoire par rapport à la HP 48SX n'est pas écrasante. La fréquence CPU a pourtant été doublée, à 4 MHz sur la G, alors que la mémoire reste cadencée à 2 MHz sur les deux générations.

Pour finir, j'ai fait un test de primalité rapide sur 524287, avec le programme "Factor" écrit par Jurjen Bos et Klaus Kalb en 1991. Sans surprise, l'affichage du résultat est instantané sur HP 48G. Cela met en évidence, si besoin était, l'intérêt des routines en langage machine et des algorithmes avancés (Miller-Rabin, Selfridge, Pollard).

dimanche 20 avril 2014

La TI-85, elle a tout d'une plus récente.

La TI-85 a été présentée sur le marché français par Texas Instruments en septembre 1992, en réponse aux HP-48, et autres Casio de la série FX-8000. Basée sur un Zilog Z80, c'est une évolution de la TI-81, mieux pourvue en mémoire. Une autre amélioration, très importante, est la présence d'une prise jack de 2,5mm pour les transferts de données avec un câble propriétaire (en mode série, ou parallèle). Au delà de la connexion entre deux TI, anecdotique, cet accessoire ouvre un vaste champ de possibilités avec un ordinateur de bureau ; notamment la programmation en assembleur. Celle-ci est rendue possible grâce à une faille de sécurité, non intentionnelle de la part de TI. Les 32 Ko de RAM, non extensibles, correspondent à la norme de l'époque, sans plus. L'écran, un peu incliné à la mode TI (depuis la TI-57), est moyennement contrasté. Il reste néanmoins lisible, sauf lorsque la luminosité baisse trop. Effet amusant en plein soleil : avec des lunettes polarisantes, on a l'illusion d'avoir basculé en vidéo inversée sur fond bleuté ! Et, miracle de l'effet polarisant, une rotation d'un quart de tour rétablit la couleur d'origine.

La TI-85 est la première calculatrice à pouvoir représenter graphiquement des équations différentielles, sans programmation. Grâce à ses qualités techniques, à son ergonomie intuitive, et au marketing très efficace de TI, elle rencontrera un énorme succès dans les lycées. De nombreux livres dédiés à la TI-85 en témoignent. En 2014, elle reste encore facile à trouver en occasion. Mais elle est évidemment plutôt destinée à des collectionneurs... quoique ! L'exemplaire que je possède a passé le BAC 1998, entre les mains d'une personne que je connais bien. En réalité, les fonctions basiques sur calculatrice n'ont pas été révolutionnées depuis deux décennies. Texas Instruments ne s'y est pas trompé, en proposant, encore cette année, une "TI-82 Stats" dont le hardware est très proche de la vieille TI-85, avec le sempiternel Z80 et 32 Ko. Certes, cette capacité parait un peu juste aujourd'hui, par comparaison avec les calculatrices "formelles". Cependant, quelle que soit la puissance de son outil, attention à l'effet de surprise en découvrant les sujets des examens et concours : les calculatrices ne sont pas toujours autorisées.

La TI-85 et son look "carré noir".

La TI-85 est globalement commode à utiliser. Toutefois, en mode programmation, on pourrait regretter que l'écran soit un peu étroit, avec seulement 21 caractères de large. Le premier caractère consommé sur chaque ligne de programme est un [:], relativement inutile. Je vais citer un dernier inconvénient, plus grave selon moi, et qui m'aurait fait basculer vers l'achat d'une HP-48, si j'avais eu besoin d'une calculatrice à l'époque. Le rappel des derniers calculs n'est pas possible ! Il n'y a pas de système de pile, et il est inutile d'essayer d'appuyer sur les flèches pour éditer le dernier calcul, suite à une faute de frappe, comme cela était implémenté depuis des années sur les Casio. Cette facilité ne sera supportée que par sa remplaçante, la TI-86, 5 ans plus tard.

Finalement, que vaut cette TI-85 sur le plan des performances ? Voici le portage en TI-Basic de mon programme qui teste les nombres premiers :

Prompt N
int (\/N)->J
If fPart (N/2)==0
Then
Disp 2
Else
For (I,3,J,2)
 If fPart (N/I)==0
 Then
 Disp I
 Return
 End
End
Disp 1
End


Caractère spécial : \/ correspond à la touche racine carrée.

Sur le test du nombre 524 287, la TI-85, armée de son Z80 cadencé à 6 MHz, affiche la réponse "1" en 7 secondes environ. La HP-48SX est battue. Cependant, la TI-85 n'arrive pas à dépasser la Sharp PC-E500. Cette dernière est pourtant animée par un Z80 similaire, mais cadencé à seulement 2,3 MHz ! On peut donc s'autoriser à penser que le TI-Basic est moins bien optimisé que les Basics à numéros de ligne, de Casio et Sharp, plus anciens. Donc, seul l'assembleur permettra d'extraire la substantifique moelle de la TI-85.

dimanche 16 février 2014

La HP-48SX : le début d'une nouvelle ère.

À défaut d'être vraiment une révolution, cette calculatrice graphique haut de gamme est un joli coup commercial de HP en 1990. Inspirée par le format des Casio de la série FX-7000G (1985) et FX-8500G (1989), la HP-48SX a été conçue dans la continuité technique de la HP-28S. Plusieurs améliorations significatives sont apportées, mais elle perd aussi 23 touches par rapport à sa devancière. Cela dit, même avec sa façade dont la sérigraphie est devenue chargée, avec des touches supportant quatre fonctions, l'ergonomie de cette HP-48 n'en souffre pas trop. La similitude entre ces machines de première génération "RPL" provient également du fameux CPU Saturn 4 bits, dont elles sont toutes équipées. Pour la connectivité externe, elle dispose toujours du port infra-rouge et, nouveauté, d'une interface RS-232C intégrée. Cette dernière nécessite tout de même un câble spécifique. On perçoit la qualité de la HP-48 dès le premier contact avec son boitier plastique de bonne facture, et son clavier au toucher agréable. C'est peut-être la touche "ON", souvent sollicitée, qui est la plus usée. Pour des raisons évidentes, elle a un peu moins de relief que les autres. Sur une HP-48S que j'ai eue entre les mains, cette touche était en panne.

L'achat de cette calculatrice m'aurait bien tenté à l'époque ; mais j'étais plus concentré sur d'autres projets autour de l'Atari ST, puis sur station Unix (HP-UX ou SunOS). J'avais des images, des graphes (au sens Dijkstra), et d'autres données complexes à traiter, qui nécessitaient des capacités de traitement importantes. En marge de ces activités "scolaires", la HP-48, malgré sa "puissance", n'aurait été qu'un violon d'Ingres. Nonosbtant ces choix du passé, ma collection actuelle de calculatrices programmables et de pockets, même assez réduite, ne pouvait pas faire l'impasse sur ce modèle mythique !

Pour tester un peu son ergonomie, on peut tenter de calculer une valeur approchée de cette expression (ci-dessous au format Casio) :

EXP(SQR(SQR(505/1491*(E^PI-PI^E)))) 

(avec E = EXP1 soit environ 2.718281828, ou INV LN1 sur TI-57)

L'enchaînement des opérations manuelles n'est pas trivial sur des calculatrices plus anciennes comme la TI-57, ou la TI-66. Sur ces machines, pourtant vendues comme supportant la notation algébrique (AOS), je préfère utiliser des STO temporaires. Sans imprimante, et en cas d'erreur, il pourrait être assez difficile de se relire. Bien entendu, sur une Casio du style FX-850P, c'est super simple. Avec la HP-48SX, comme avec la HP-28S, il y a plusieurs méthodes possibles, avec plus ou moins de RPN. Cependant, je pense que de nombreux utilisateurs privilégieront l'édition de la formule en mode algébrique. Le résulat numérique de l'expression ci-dessus est proche de 2. Si on ajoute à cette ergonomie "génétique" de la HP-48, des nouveautés, comme l'Equation Writer, ou encore le Matrix Writer, elle devient réellement performante pour le calcul.

Un calcul dans la pile de la HP-48SX.

Du coté de la programmation, on peut dire, sans exagérer outre mesure, que le langage RPL, issu de la HP-28S, était innovant pour l'époque. Ceci malgré les inconvénients de lisibilité qu'on lui connait. Les variables locales sont supportées, ainsi que la récurssivité. Avec ce dernier style de programmation, que certains n'hésitent pas à qualifier "d'élégant", il faut néanmoins faire attention aux performances, parfois catastrophiques, et à la consommation mémoire, pharaonique. Le RPL restera la règle sur le haut de gamme scientifique HP jusqu'à la HP-50G en 2006. La HP Prime propose maintenant un "HP Basic" probablement plus simple d'accès.

Au début des années 90, on assiste au décollage exponentiel du réseau internet. Et ça, ça va donner une nouvelle dimension à la HP-48. Avant l'internet, les échanges d'informations étaient limités en France par les 1200 bits/s du Minitel, sur des services comme le 3614 RTEL, par exemple. Et même le débit un peu supérieur des serveurs BBS (raccordés au RTC sans Transpac), parfois multivoie, ne changeait pas vraiment la donne. En réalité, l'audience de ces "sites" restait faible. Et plutôt que de se ruiner en factures télécoms, c'est la copie de disquettes 720 Ko qui était la règle entre geeks. Économiquement, on pourrait presque dire que ça fonctionnait comme les accords de peering internet : gratuit si l'échange était réciproque, ou bien payant dans le cas d'une trop grande dissymétrie. Pour en revenir à la HP-48, des groupes usenet populaires comme comp.sys.hp48 on joué un grand rôle dans son développement logiciel (RPL, RPL système, ou assembleur).

Pour mon test habituel de primalité, l'algorithme reste identique, mais j'ai repris le code RPL optimisé proposé par st33x. Il n'y a donc pas de STO dans la boucle (c'était une mauvaise idée), et il fait tout sur la pile :

<< DUP \/ IP            
IF OVER 2 / FP 0 == THEN
 DROP2 2                
ELSE
 3
 WHILE DUP2 > REPEAT
   IF 3 PICK OVER / FP 0 == THEN
     SWAP DROP 0 SWAP
   ELSE
     2 +
   END
 END
 IF OVER 0 == THEN
  3 ROLLD DROP2
 ELSE
  3 DROPN 1
 END
END
440 0.05 BEEP
>>

Caractères spéciaux :
- les symboles '<<'et '>>' sont les délimiteurs de programme
- '\/' correspond à la racine carrée

Le test sur 524 287 s'exécute sur HP-48SX en 16 secondes environ. Soit un score proche de celui de la HP-28S, sans overclocking, et avec un programme identique (18 secondes). On pourrait croire, d'après mes tests, que j'attache beaucoup d'importance à la performance pure des machines ? En fait il n'en est rien ! Je souhaitais seulement pouvoir identifier des ordres de grandeur, et éventuellement des "ruptures" entre les différentes générations de CPU pour calculatrices. D'autres benchmarks, comme celui de Xerxes sont bien plus complets, mais jamais exempts de défauts. Et surtout, il ne sont pas significatifs pour déterminer cette notion abstraite que l'on appelle la "puissance" d'une calculatrice.