lundi 25 septembre 2017

Elle est libre la WP-34S

Au rythme où je publie les articles dans ce blog, je risque d'avoir du mal à couvrir l'ensemble de ma collection ; même si elle s'agrandit plutôt lentement. La calculatrice que je teste aujourd'hui, bien que très proche des productions HP, n'a jamais été commercialisée officiellement par la marque. Il s'agit de la fameuse WP-34S, que j'ai acquise en 2013. Mon exemplaire est basé sur le hardware de la HP-30b ; mais la HP-20b (à ne pas confondre avec la HP-20S) conviendrait également. La principale différence entre la HP-30b (calculette financière) et la WP-34S (scientifique) provient du firmware de cette dernière, diffusé sous licence GPLv3. Ce logiciel a été développé par deux allemands et un australien, tous trois probablement nostalgiques des calculettes RPN : Walter Bonin, Marcus von Cube, et Paul Dale. Mais d'autres contributions au projet sont également notables. Par exemple, celles des américains Eric Rechlin et Gene Wright, qui ont respectivement réalisé les overlays en vinyl, et diffusé des câbles de programmation spécifiques. Dans la genèse de la WP-34S, on peut aussi mentionner le rôle important de Cyrille De Brébisson (HP) qui, dès 2008, avait mis à disposition l'indispensable kit de développement (SDK). Celui-ci était initialement prévu pour la création par les équipes HP du firmware officiel de la HP-20b. Cette démarche, louable, reste exceptionnelle chez les fabricants de calculettes. Et elle ne devrait pas se développer outre mesure dans les années à venir ; peut-être à cause des nouvelles règles aux examens, qui tendent à verrouiller de plus en plus les calculatrices autorisées.

La HP-30b originale a été fabriquée en Chine entre 2010 et 2012 environ. Cependant, grâce aux stocks des distributeurs, il a été possible d'en acheter des neuves au moins jusqu'en 2014. En 2017, on trouve assez facilement des produits reconditionnés à partir de 30€ environ. Cette calculatrice est l'une des rares sur lesquelles on peut flasher un firmware personnalisé, non contrôlé par le constructeur. En sus, quelques améliorations hardware sont possibles. Par exemple, sur la mienne, un cristal de quartz 32,768 kHz et deux condensateurs ont été soudés sur la carte mère. Cette modification permet au firmware de la WP-34S d'accéder à une horloge interne précise. La fonction chronomètre n'est pas si courante sur les calculatrices. Ici, elle est facilement accessible en deux touches : [CPX] puis [R/S]. Dans le même style, certains utilisateurs de la WP-34S ont ajouté un port infrarouge pour pouvoir connecter une imprimante. Il existe aussi un adaptateur USB interne pour la WP-34S, développé par Harald Pott. Il permet de se passer du câble série d'origine, à la connectique très spécifique. Je possède un exemplaire de ce fameux câble HP, équipé d'un bouton "Reset" et d'un bouton "Erase". Comme il n'est plus fabriqué, il pourrait dorénavant être difficile de s'en procurer un. On s'en rend compte rapidement : la WP-34S n'est pas vraiment prédisposée à l'échange régulier de données avec un ordinateur. Cela dit, ce câble m'a permis de mettre à jour sans encombre le firmware de ma WP-34S en version 3.3. L'ouverture du boîtier de la calculette par l'arrière ne nécessite pas d'outil, et le branchement du câble se fait ensuite sur une prise perpendiculaire à la machine, moyennement pratique, comme on peut le constater sur la photo ci-dessous.

Câble WP-34S (RS-232 prise DB9)

Les piles sont de banales CR2032 montées en parallèle. Lorsqu'elles sont en fin de vie, cette connectique permet de les changer une par une sans effacer l'espace des 2 Ko de RAM sauvegardés par piles. L'afficheur LCD sur deux lignes, malgré une bonne lisibilité, reste quelque peu décevant de nos jours. En effet, la petite matrice graphique, en haut, ne fait malheureusement que de 43 x 6 pixels. Les nombres sont affichés la plupart du temps sur la ligne du bas à segments classiques (12 chiffres de mantisse + 3 chiffres d'exposant).

L'afficheur LCD de la WP-34S

Ces limitations ont pour conséquence, par exemple, que la lecture complète de tous les chiffres significatifs nécessite de faire défiler avec la flèche jaune ou la flèche bleue. Par ailleurs, ces dernières ne sont pas en accès direct sur le clavier ; ce n'est pas très ergonomique. La forme des touches physiques de la WP-34S ressemble à celle des touches de la HP-28S, mais la machine chinoise du XXIe siècle est à cent lieues du silence et du confort de la "vraie HP" fabriquée aux USA en 1988. Et malgré des dimensions d'écrans LCD comparables, on regrette, bien entendu, de ne pas disposer d'un affichage graphique similaire à celui de la HP-28S. Enfin, pour terminer sur ma description sommaire du hardware de la WP, on peut noter que son CPU est un ARM 7 fabriqué par Atmel. Il est cadencé à une fréquence variable comprise entre 32 KHz (économie d'énergie) et 40 MHz. Cette valeur élevée est une excellente surprise sur une calculatrice positionnée plutôt en bas de gamme. Pour le logiciel embarqué, on devra toutefois se contenter des 128 Ko de la ROM "flashable" et de 6 Ko de RAM au total ; ce qui la rapproche du Sharp PC-1500 de 1984 que j'ai testé précédemment.

À l'usage, les concepts en notation RPN implémentés sur la WP-34S reprennent ceux qui avaient fait le succès de la toute première machine programmable que j'ai testée dans ce blog, à savoir la HP-25 de 1976. La programmation en mode séquence de touches est relativement simple, bien qu'elle puisse déboucher sur du code spaghettis, à partir d'une certaine complexité.

Mon packaging WP-34S de collectionneur n'aurait pas été complet si je n'avais pas commandé le gros manuel broché de Walter Bonin (version imprimée pour le firmware 3.2). Ses 244 pages en couleur au format "US letter" pourront êtres lues sans lunettes par les néo-presbytes, dont je fais partie. Et en complément, il existe un manuel aide-mémoire, d'un format plus en adéquation avec la petite taille de la WP-34S, écrit par Andrew Nikitin : http://nsg.upor.net/sys/wp34s/pocket-reference.html. Avec les retouches de zpalm, je m'en suis imprimé un exemplaire en double face sur papier classique (pliage, découpage au massicot, et deux agrafes au milieu).

Comme la bibliographie sur la WP-34S n'est pas colossale sur le net, je vous recommande le visionnage de la présentation de Marcus Von Cube au HHC 2011: "How WP 34S Came Into Existence", et également la présentation de Jake Schwartz au HHC 2012 : "The WP-34S and the HP Calculator Way" (vidéo).

Mon programme habituel, sur ce blog, de test de primalité, est à peu près identique à celui que j'avais écrit pour la HP-15C en 2012. Ici, j'ai supprimé les commentaires, mais je n'ai pas cherché à optimiser quoi que ce soit, pour ne pas fausser la comparaison. Le programme ci-dessous occupe donc également 39 pas. D'autre part, on peut utiliser des labels numériques sur la WP-34S, mais sur deux caractères :

001  ENTER
002  STO 00
003  2
004  STO 02
005  /
006  FP
007  x=0?
008  GTO 02
009  3
010  STO 02
011  ENTER
012  RCL 00
013  \/x
014  IP
015  STO 01
016  LBL 00
017  x>=? Y
018  GTO 01
019  GTO 03
020  LBL 01
021  RCL 00
022  ENTER
023  RCL 02
024  /
025  FP
026  x=0?
027  GTO 02
028  2
029  STO+ 02
030  RCL 02
031  ENTER
032  RCL 01
033  GTO 00
034  LBL 02
035  RCL 02
036  RTN
037  LBL 03
038  1
039  RTN

Dans le listing ci-dessus, j'ai représenté la touche racine carrée par "\/x".


Avec le nombre 524287 en entrée, le résultat 1 (=> nombre premier) s'affiche en à peine plus d'une seconde sur la WP-34S. Pour obtenir une mesure plus précise, j´ai ajouté quelques instructions qui permettent de faire appel à l'horloge interne de la calculette : j'obtiens une durée d'exécution comprise entre 11 et 15 ticks en mode FAST (1 tick = 0,1 seconde), et jusqu'à 17 ticks en mode SLOW. C'est la calculatrice la plus rapide que j'aie testé jusqu'à présent ! Seul l'Atari ST faisait mieux... mais il ne peut pas fonctionner sur une seule pile 3V, et sa consommation est très supérieure à 0,25 mW.

Parmi les autres programmes que j'ai créés pour la WP-34S, le plus long, en nombre de pas, est celui que j'avais publié en avril 2014, titré "Le petit professeur sort enfin du Texas", dans la Gazette des Pocketiquaires numéro 3 (page 55). Il s'agissait d'un remake du jeu électronique bien connu "Little Professor", édité par Texas Instruments en 1976. Dans le listing que j'ai publié, attention à la saisie de la ligne 118, par exemple, que j'ai notée de la façon suivante :

118 [alpha]IP 02

Il s'agit d'une fonction qui est est bien décrite dans le manuel :

Fonction [ALPHA]IP sur WP-34S
Petite astuce : pour accéder plus rapidement dans le catalogue de la WP-34S aux fonctions commençant par une lettre grecque comme α, on peut appuyer sur la touche [g], pour l'alphabet grec, suivie des lettres voulues. Ici, on pourra donc utiliser la séquence de touche suivante pour un accès direct à cette fameuse fonction AIP :

[h][X.FCN][g][α][I]

Il faut procéder assez rapidement entre les touches [α] et [I] ; sinon on revient aux fonctions qui commencent par 'I'.

En conclusion, le projet WP-34S était une excellente idée, dont la réalisation finale est très aboutie, malgré le hardware HP un peu limité. Certes, cette machine n'est pas destinée à tous les utilisateurs, mais les plus expérimentés sauront en extraire la substantifique moelle.

samedi 28 janvier 2017

Le Sharp PC-1500, machine mythique des années 80

L'ordinateur de poche que j'ai sous les yeux aujourd'hui est un Sharp PC-1500A. Cette machine fut fabriquée entre 1984 et 1985. Avec ce 'A', la firme d'Osaka apporte au moins quatre améliorations au PC-1500 qui avait été présenté dès 1981 :
  • la quantité de RAM d'origine a été augmentée
  • la couleur est brun plus sombre en haut de la façade alu
  • la sérigraphie est légèrement différente
  • quelques corrections ont été réalisées dans la ROM 

Le microprocesseur est toujours le LH5801 CMOS, avec son jeu d'instruction proche du Z80. Il reste cadencé à 1,3 MHz. Du côté de la RAM, le PC-1500A, armé de 8,5 Ko au total, dont seulement 6144 octets pour l'utilisateur, et 5946 octets pour le Basic, bridera toute velléité de programmation trop complexe. Un module d'extension pourra même devenir rapidement indispensable.

Loin du style rébarbatif de certaines documentations, les manuels Sharp présentent un contenu très pédagogique, avec une bonne dose d'humour. Le mini clavier qwerty du PC-1500, à touches décalées, est plutôt confortable. Cependant, pour éviter la frappe fastidieuse de certaines commandes, les concepteurs ont imaginé un système d'abréviation des commandes Basic. Les mnémoniques, à 1 ou 2 caractères, sont faciles à mémoriser. Par exemple, voici quelques instructions d'usage fréquent :

G. GOTO
I. INPUT
N. NEXT
P. PRINT
R. RUN
T. THEN

L'indication discrète du niveau des piles, par un point en haut de l'écran LCD, est assez peu fréquente pour que je la signale ici. Le mode réserve, qui permet de mémoriser des mots clés, ou des phrases, est également spécifique à cette lignée de machines.

Sharp PC-1500A

Le PC-1500A offre donc un environnement simplifié idéal pour apprendre la programmation et les concepts universels que l'on doit à John Von Neumann. Et avec toutes ces qualités, je m'étonne que les machines de poche japonaises n'aient jamais été retenues par l'Éducation Nationale française pour équiper les lycéens et les enseignants des années 80. J'ai retrouvé quelques prix pratiqués à l'époque :
  • Thomson MO5 : 2390 francs   (le choix de l'Éducation nationale, en 1985)
  • Sharp PC-1500A : 2200 francs
  • Casio PB-700 avec module OR-4 : 2090 francs

Par rapport à sa concurrente Casio, le graphisme sur l'écran LCD du PC-1500 est limité à 156x7 pixels. Ceci pourra éventuellement être compensé par l'imprimante traceur à 4 stylos de couleur ; la Sharp CE-150. Par ailleurs, pour les bidouilleurs, le PC-1500, grâce aux fameuses instructions PEEK, POKE et CALL, présente un avantage déterminant sur la très verrouillée Casio PB-700. En effet, celles-ci permettent l'accès total au système et au langage machine LH5801. Toutefois, on ne disposera pas du confort d'un assembleur intégré, comme c'est le cas sur la Casio PB-1000. Dans les années 80, le succès planétaire des machines Sharp a permis l'éclosion de nombreuses publications et livres qui leur étaient dédiés. Par exemple, j'ai sous la main "Basic, Système et Langage Machine - Voyage à l'intérieur du Sharp PC-1500/A" de Jean-Christophe Krust (1984). Ce bouquin détaille, entre autres, la structure mémoire de l'afficheur LCD, que je me suis amusé à redessiner en couleur ci-dessous. Les 156 colonnes de 7 pixels sont codées d'une façon que je qualifierais de "non triviale", répartis en deux blocs de 78 octets :
  • bloc 1 : à partir de l'adresse &7600 jusqu'à à &764E
  • bloc 2 : de &7700 à &774E

Chacun de ces blocs code simultanément deux parties non contiguës de l'afficheur :
  • le bloc 1 (en bleu et rose sur la figure) contrôle l'affichage des colonnes numérotées à partir de la gauche, de 0 à 38, et de 78 à 116. 
  • le bloc 2 (en vert et jaune) contrôle l'affichage des colonnes de 39 à 77, et de 117 à 155

Carte mémoire de l'afficheur LCD du Sharp PC-15000

Les octets pairs correspondent aux 4 pixels du haut de l'afficheur (exemple encadré en rouge). Tandis que les octets impairs contiennent l'information pour les 3 pixels du bas ; avec leur dernier bit qui n'est pas utilisé.

Enfin, un ultime effet Kiss Cool qui ne facilite pas la représentation mentale, chaque octet est coupé en deux :
  • les 4 bits de poids faible de chaque octet sont pour la partie gauche de l'afficheur 
  • les 4 bits de poids fort pour la partie droite, adressée par le même bloc

Comme on peut le visualiser sur la figure, j'ai choisi pour l'exemple 4 pixels de l'écran, qui peuvent être noircis en deux POKE :

10:POKE &7600,32
20:POKE &7703,81
30:IF INKEY$ <>" "THEN GOTO 30
40:PRINT POINT 118

L'instruction Basic "POINT" permet de connaître l'état des pixels affichés. Ici, le résultat retourné pour la colonne 118 sera 80 (soit 01010000 en binaire). Avez-vous suivi mon explication ? :-)

À l'instar de sa descendance, le Sharp PC-1500 ne dispose pas de la fonction modulo. J'ai donc adapté mon programme de test de primalité à partir de la version PC-E500 :

10:INPUT "N?",N
20:J=INT (SQR (N)):I=2
30:IF (N-2*INT (N/2))=0THEN 80
40:FOR I=3TO JSTEP 2
50:IF (N-I*INT (N/I))=0THEN 80
60:NEXT I
70:BEEP 1:PRINT "1":GOTO 10
80:PRINT I:GOTO 10

Avec 2701 en entrée, qui n'est pas un nombre premier, ce programme répond "34" très vite. Mais avec 524287, qui est premier, le programme répondra "1" (son plus petit diviseur)  au bout de 26 secondes. C'est un chrono dans le même ordre de grandeur que sa contemporaine, la Casio PB-700. Pour chipoter, on remarquera rapidement que certains espaces insérés automatiquement par l'éditeur sont parfois superflus sur cet écran de 26 caractères de large. Pour compléter mes tests sur le PC-1500A, j'ai également porté mon programme de recherche des nombres de Keith :

10:DIM N(10)
20:INPUT "N?",N1
30:L=INT (LOG N1)+1:M=N1:S=0
40:FOR I=LTO 1STEP -1
50:N(I)=M:M=INT (M/10):N(I)=N(I)-10*M:S=S+N(I):NEXT I
60:I=I+1:IF I>LTHEN LET I=1
70:M=2*S-N(I):N(I)=S:S=M:IF S<N1THEN 60
80:IF S=N1THEN BEEP 1:PRINT S;" est un Keith":END
90:N1=N1+1:GOTO 30

Avec 7000 en entrée, on obtient "7385 est un Keith" en un peu plus de 9 minutes. La hiérarchie établie au test précédent est respectée : malgré sa fréquence de CPU un peu plus élevée, la Sharp PC-1500 (1981) est donc un peu plus lente que la Casio FX-850P (1987).

dimanche 6 novembre 2016

La TI-89, une calculette au top pour la génération Y

La grosse TI-92 sera restée sans véritable concurrente pendant 3 ans, jusqu'à ce que Texas Instruments dévoile sa TI-89 en 1998. L'embonpoint de la TI-92 avait certainement limité sa diffusion dans les cartables. Pour lever toutes les objections, la TI-89 embarque le même logiciel, mais dans un gabarit proche de la TI-85. Cet air de famille est entretenu avec ses coloris noir/gris/bleu/jaune, et sa disposition de clavier typiquement "Texas". Avec un écran LCD dorénavant précis et bien contrasté, elle atteint parfaitement sa cible marketing : les élèves et les profs vont se l'arracher. La nouvelle TI-89 réussira même à convaincre certains clients fidèles de Texas qui possédaient déjà une TI-92 de première génération ! De nos jours, dix-huit ans plus tard, la TI-89 est encore en vente dans sa version nommée "Titanium" à un tarif assez élevé, compris entre 140 et 200 euros, en fonction des vendeurs. Cela dit, sans aller jusqu'à remettre en cause l'utilité d'une calculatrice formelle aussi chère dans l'enseignement, comme n'hésitent pas à le faire certains de ses détracteurs, force est de constater que l'adjectif "indispensable" n'est pas celui qui convient le mieux à la TI-89.

Le modèle que j'ai sous les yeux est une TI-89 avec le hardware version 2, probablement produite en 1999. Son cœur, à base de Motorola 68000, a été porté à 12 MHz. Après les premiers instants d'hésitation, classiques avec les calculettes haut de gamme, on apprécie la convivialité remarquable de l'engin. Bien entendu, la lecture du manuel, encore en version papier à l'époque, restera bien souvent obligatoire. Le TI-Basic 68k est un langage "facile". Il est néanmoins plus puissant que le TI-83 Basic qui est une variante plus répandue, grâce à son positionnement bas de gamme.

Pour parler un peu d'ergonomie, globalement bonne sur cette TI, on peut tout de même regretter que la saisie alphanumérique soit un peu laborieuse. Mais c'est comme sur toutes les calculettes graphiques à la disposition verticale. Dans le même ordre d'idée, certaines polices microbiennes manquent parfois un peu de lisibilité à l'écran, tout comme la sérigraphie du clavier, qui reste néanmoins dans la norme. Enfin, dernier détail, je trouve dommage que la séquence [Off] puis [On] ne revienne pas exactement dans le même contexte logiciel. Par exemple, on ne revient pas sur le "Program editor" après Off/On, mais directement sur l'écran "Home". Étonnamment, cette même fonctionnalité est bien active lorsqu'on laisse la mise en veille automatique agir, puis que l'on rallume la machine.

Une TI-89 hardware version 2


Comme à l'habitude, pour compléter ce test, j'utilise mon programme de test de primalité simpliste :

premier(n)
Prgm
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
  EndIf
 EndFor
Disp 1
Endif
EndPrgm


Caractères spéciaux :
\/ correspond à la touche racine carrée
-> correspond à la touche STO>

Le test sur 524287 s’exécute sur la TI-89 en un peu moins de 7 secondes ; un score un peu meilleur que la TI-92, et équivalent à la TI-85. Pour aller un peu plus loin cette fois-ci dans les tests de performance, j'ai écrit un programme de recherche des nombres de Keith. Ils sont beaucoup plus rares que les nombres premiers, et il n'existe pas de formule directe pour les trouver. La seule méthode connue actuellement reste donc la recherche exhaustive. À partir de la saisie d'un entier n1 quelconque, le programme ci-dessous teste si n1 est un nombre de Keith, ou bien affiche le nombre de Keith immédiatement suivant.

mpo39(n1)
Prgm
newList(10)->n
Loop
int(log(n1))+1->l
n1->m
0->s
For i,l,1,(-)1
mod(m,10)->n[i]
s+n[i]->s
int(m/10)->m
EndFor
Loop
i+1->i
If i>l
1->i
2*s-n[i]->m
s->n[i]
m->s
If s>=n1
Exit
EndLoop
If s=n1
Exit
n1+1->n1
EndLoop
Disp string(s)&" est un Keith"
EndPrgm


Caractères spéciaux :
-> correspond à la touche STO>
(-) correspond à la touche grise (-)

Commentaires sur les variables :
- 'l' correspond au nombre de chiffres de 'n1'
- la liste 'n' contient les chiffres de 'n1'
- 's' contient la somme des chiffres de 'n1'
- ensuite, à partir du deuxième Loop, 'n' contient les termes de la suite de Keith (une sorte de suite de Fibonacci). Pour optimiser le calcul de la somme, j'ai considéré la formule suivante :
n[i] = 2*n[i-1] - n[i-l]

Avec la commande "Disp" (avant-dernière ligne du programme), je souhaitais afficher le résultat (variable et texte) sur une ligne unique. J'ai découvert que ce n'est ni trivial, ni spécialement bien documenté dans le manuel Texas. Le symbole '&' est accessible indirectement, via un menu et la touche [CHAR].

J'avais posté ma version en Basic Casio des années 80 sur le forum Silicium.org en 2014. Elle est certes plus compacte, mais moins bien structurée :

10 DIM N(10)
20 INPUT"N?",N1
30 L=INT(LOG N1)+1:M=N1:S=0
40 FOR I=L TO 1 STEP-1
50 N(I)=M MOD10:S=S+N(I):M=INT(M/10):NEXT
60 I=I+1:IF I>L THEN I=1
70 M=2*S-N(I):N(I)=S:S=M:IF S<N1 THEN60
80 IF S=N1 THEN BEEP:PRINT S;"est un Keith":END
90 N1=N1+1:GOTO30


Enfin, pour comparaison dans la catégorie 68k, voici une version de 28 lignes en GFA Basic pour Atari ST :

DIM n%(10)
DO
  INPUT "N?",n1%
  PRINT TIME$;"  ";
  DO
    l%=INT(LOG10(n1%))+1
    m%=n1%
    s%=0
    FOR i%=l% TO 1 STEP -1
      n%(i%)=m% MOD 10
      ADD s%,n%(i%)
      DIV m%,10
    NEXT i%
    REPEAT
      INC i%
      IF i%>l%
        i%=1
      ENDIF
      m%=SHL(s%,1)
      SUB m%,n%(i%)
      n%(i%)=s%
      s%=m%
    UNTIL s%>=n1%
    EXIT IF s%=n1%
    INC n1%
  LOOP
  PRINT s%;" est un Keith.  ";TIME$
LOOP


Avec le nombre 7000 en entrée, les temps de calcul jusqu'au nombre de Keith suivant (7385) sont les suivants :

- 7min52s sur Casio FX-850P
- 3min58s sur TI-89
- 2min12s sur Casio Z-1
- 4s sur Atari 1040 STF (GFA Basic interprété)

Calcul des nombres de Keith en GFA Basic sur Atari ST


Ce résultat ne peut donc que confirmer la relative lenteur du TI-Basic. Et, malheureusement, la TI-89 d'origine n'embarque pas d'autre langage qui puisse être exploité sans faire appel à un ordinateur externe.

samedi 16 avril 2016

Le retour de Texas Instruments avec la TI-92

Au début des années 90, HP avait un temps d'avance sur ses concurrents, grâce à sa technologie, et au savoir-faire déployé sur ses calculatrices haut de gamme. Mais, en septembre 1995, Texas Instruments revient au tout premier plan avec son modèle phare, la TI-92. Pour atteindre l'objectif fixé, les ingénieurs ont mis de côté le processeur Z80 de la TI-85. Celui-ci restera néanmoins encore la norme pendant plus de vingt ans sur les modèles TI de millieu de gamme. En 1995, pour la première fois, ils choisissent de faire rentrer dans une calculette un Motorola 68000 en version HCMOS. Pour Motorola, ce succès dans les calculatrices grand public sera, en quelque sorte, une renaissance de cette famille de CPU. En effet, à l'époque, la carrière du 68k en tant que coeur de micro-ordinateur venait de s'arrêter. Les derniers Atari Falcon 030 et Macintosh 68k ont étés produits vers 1994. Et en parallèle, Commodore faisait faillite, malgré une diffusion honorable de l'Amiga 1200.

L'interface homme-machine de la TI-92, ainsi que l'ensemble logiciel embarqué en ROM, sont totalement nouveaux et, pour tout dire, révolutionnaires ! Pour preuve, la TI-92 est évoquée dans "L'encyclopédie de la Web culture" en page 84, dans la définition du mot Geek, à côté d'autres "formidables progrès technologiques" comme Atari, Internet et Linux. Sa prise en main est globalement très intuitive ; et la courbe d'apprentissage probablement plus rapide que sur les HP. La collaboration de Texas Instruments avec l'Université Joseph Fourrier a permis d'inclure des fonctions intéressantes pour l'enseignement de la géométrie. D'autre part, le calcul formel est intégré avec un portage 68k du fameux logiciel Derive. Quelques années auparavant, vers 1991, je me souviens qu'une version de Derive pour MS-DOS était installée sur les PC 386 du centre de calcul de l'Université Montpellier II, lorsque je fréquentais cet établissement. Cela dit, je n'ai jamais réellement exploité à fond ce logiciel. J'ai passé plus de temps à programmer en Turbo Pascal 5.0, et en Basic (GFA, 1000D, C61). En 1998, Texas Instrument mettra sur le marché un module d'extension nommé "Plus", pour accroître encore la puissance de la TI-92. C'est le modèle original, avec cette extension optionnelle, que j'ai actuellement sous les yeux. Sa ROM est restée en version 1.01. La TI-92 Plus "complète d'origine" ne sortira qu'en 1999, avec un écran LCD au contraste amélioré.

Étonnamment, cette TI-92 partage plusieurs points communs avec ma vieille PB-1000 :
- ses dimensions respectables, à la limite de la règlementation ; même si celle-ci ne fera plus mention des 21x15 cm à partir de 1999.
- son poids élevé. Avec les piles et le module d'extension, elle atteint 629g sur ma balance, un record !
- sa disposition générale, en mode paysage
- son clavier qwerty très ergonomique ; bien que la virgule, quand on la cherche avec les autres symboles, près du point virgule, soit un peu difficile à trouver
- le faible contraste et la sensibilité aux reflets de son écran (pourtant non tactile)

En fait, la médiocrité de cet écran LCD, n'est pas très surprenante pour l'époque. La HP-48SX et la TI-85, ne font pas mieux en contraste, par exemple. Cela dit, sa résolution de 240×128 pixels, plus que doublée par rapport aux meilleurs pockets de la génération précédente, est plutôt confortable.

Les facteurs de la fonction factor() ne sont plus limités à 65521 sur la TI-92 Plus.  

Mon petit programme de test ci-dessous, en TI-Basic, est quasi identique à celui que j'avais écrit pour la TI-85, à quelques détails de syntaxe près. Par exemple, le symbole double égal '==' disparait. D'autre part, pour plus de rigueur, les boucles "for" doivent dorénavant se terminer par un "endfor", et les "if" par un "endif".

prime(n)
Prgm
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
EndIf
EndFor
Disp 1
EndIf
EndPrgm

Caractères spéciaux :
\/ correspond à la touche racine carrée
-> correspond à la touche STO>

Par comparaison avec les Basics modernes, on peut regretter que l'indentation du programme ne soit pas automatique. A contrario, d'une façon assez inhabituelle, on remarque que des majuscules sont positionnées automatiquement sur les mots clés du Basic, et que le nom des variables est converti en minuscules.

Pour afficher le résultat du test sur le nombre 524 287, il faut 9 secondes environ sur ma TI-92 armée de son 68000 à 10 MHz. S'il s'agit d'un score équivalent à ses contemporaines, comme la HP 48G, on note qu'elle est à peine plus rapide que la PB-1000 de 1986 ! Pour exploiter pleinement cette TI-92, il faudra donc abandonner le TI-Basic.

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.