dimanche 22 mars 2020

Précision suisse avec la DM42

La DM42 de SwissMicros est une réplique moderne de la fameuse HP-42S de 1987. Il faut savoir que cette dernière est considérée par ses aficionados comme la meilleure calculette du monde. Le composant logiciel central dans la DM42 de 2017 posée sur ma table est l'excellent Free42 de Thomas Okken.

SwissMicros DM42

Diffusé sous licence GPLv2, Free42 était déjà mon calculateur préféré sur smartphone ; notamment parce que son clavier virtuel est à la fois complet et bien espacé. En comparaison avec d'autres émulateurs, la lisibilité et l'ergonomie générale, forcément rétros, sont bonnes. Et la programmabilité est bien entendu indispensable sur une calculatrice scientifique. Mais revenons à cette SwissMicros : c'est indéniablement une belle machine à la finition impeccable. Cependant, comme j'ai l'habitude de chipoter, je vais passer en revue rapidement ses quelques défauts.

Avant de pouvoir appuyer sur [ON], ma première déception concerne son étui en simili cuir noir. Il est en effet trop serré et bien difficile à retirer. J'aurais préféré une pochette à soufflet avec un rabat magnétique, dans le style de celle de ma HP-50g par exemple. Si on poursuit le parallèle avec Free42 sur smartphone, il y n'a pas de rétro-éclairage sur la DM42, ni sous l'écran, ni sous le clavier. Son LCD Sharp, bien plus vaste que l'original, est néanmoins super bien contrasté. Un rétro-éclairage avec batterie aurait sans doute complexifié et alourdi la machine. Celle-ci pèse déjà 200g avec sa pochette. Il faut savoir que le dos en métal noir mat, qui donne sa rigidité à la calculette, pèse à lui tout seul 80g sur ma balance. D'autre part, on constate qu'il n’y a pas de batterie rechargeable dans la DM42 actuelle. Elle est alimentée par une simple pile CR2032. Donc, ne faites pas comme moi au début : il est inutile de la laisser branchée sur USB en espérant qu'elle se recharge ! Cela dit, si la pile est en fin de vie, on peut alimenter la calculette via ce port. De façon anecdotique, la fréquence du CPU monte alors à 80 MHz, au lieu de 24 MHz sur la pile interne.

Ma dernière petite critique concerne le clavier de la DM42 : il est certe fiable, meilleur que celui de ma WP-34S (sur base de HP-30b) ; mais je le trouve un peu ferme par rapport aux vraies HP. En contrepartie, il offre une rangée de touches supplémentaires qui n'existait pas sur la HP-42S. Un mode de clavier alphabétique, similaire à celui de la HP-41CV, a également été ajouté. En mode [ALPHA], un indicateur s'affiche en haut, avec la signification suivante :
  • [ ] : mode alphabétique "menu" type HP-42, grâce aux touches situées sous l'écran. Les chiffres et symboles du clavier restent accessibles en direct.
  • [a] : mode alphabétique HP-41 en minuscules 
  • [A] : mode alphabétique HP-41 en majuscules
Pour passer d'un mode à l'autre, par exemple des minuscules vers les majuscules, on utilise la séquence de touche [jaune] [flêche vers le bas] ; ou bien [jaune] [flêche vers haut] pour revenir en minuscules. C'est un peu à l'envers et contre intuitif, mais on s'y fait. Globalement, il faut bien reconnaître que la saisie est hyper laborieuse comparativement à un pocket Basic.

Un gros point fort de la DM42 c'est la précision des calculs, ainsi que sa capacité à manipuler de grands nombres. Par exemple, si on souhaite vérifier l'addition manuelle ci-dessous qui comporte des nombres entiers de 12 chiffres, c'est possible avec la DM42. Mais il n'y a là rien d'exceptionnel pour une calculatrice récente. Je précise que ce n'est pas mon écriture (ni en bleu, ni en gris) :

une addition à vérifier
Par défaut, le résultat est tronqué de deux chiffres significatifs, mais il est possible de les afficher tous temporairement avec [SHOW]. Pour un affichage permanent, la solution que j'ai trouvée utilise le programme FWIW disponible sur le site de Thomas Okken. Dernière astuce, grâce à la séquence de touche [jaune] (maintenue) puis [DISP], il est possible de créer des copies d'écran dans un format BMP en 400x240 pixels en deux couleurs :

un résultat affiché avec 13 chiffres significatifs

Pour capturer un [SHOW] "normal" il vous faudra être rapide. Les copies d'écran sont sauvegardées dans le répertoire /SCREENS qui est accessible en USB "mass storage device", avec le driver standard. La gestion des fichiers, pour les upgrades notamment, est  très bien faite sur la DM42. Ici, aucun logiciel privateur n'est obligatoire pour copier des fichiers, comme c'est malheureusement le cas sur de nombreuses machines récentes.

J'ai utilisé des copies d'écran pour réaliser le montage ci-dessous. Il s'agit du code source de mon test habituel de primalité, tel qu'il est affiché sur la DM42 et légèrement adapté à partir de ma version pour HP-15C :

test de primalité sur DM42
Pour vous éviter de le retaper si vous voulez l'essayer (peu probable ?) je vous met à disposition le programme ici premier.raw (directement copiable sur la DM42). Avec ce code, la DM42 répond 37 (le premier diviseur) lorsqu'on lui donne 2701 en entrée, et 1 (nombre premier) avec 524287, presque instantanément dans les deux cas. Cette SwissMicros est donc bien une calculatrice haut de gamme de puissance "suffisante". Les sensations rétros qu'elle procure sont agréables, même pour quelqu'un qui n'est pas tombé dans le RPN quand il était petit.

dimanche 15 mars 2020

La HP-12c et le mystère de la façade dorée

Quand on évoque la HP-12C, on ne peut s'empêcher de rappeler l'exceptionnelle longévité de cette calculatrice financière sortie en 1981. Elle est en effet toujours diffusée, sans interruption depuis 39 ans au moment où j'écris ces lignes. Seuls quelques détails permettent de distinguer ses différentes évolutions matérielles. La version vendue actuellement est nommée HP-12C Platinum. Sa façade est devenue grise métallisée, et non plus dorée comme les anciennes. Cependant, ses fonctions n'ont presque pas évolué depuis quatre décennies. Par quel miracle cet objet électronique a-t-il survécu si longtemps, bien au delà de la durée initialement estimée par ses concepteurs ? Quelle est donc la vraie raison du succès planétaire de la HP-12C ? Même la durée de vie des trois piles bouton LR44 de la version originale est exceptionnelle : 12 ans ; et même parfois plus ! On sourit en apprenant que les concepteurs HP auraient souhaité doter la machine originale d'un indicateur du niveau des piles. Enfin, la robustesse de cette série HP Voyager est indéniable. Le positionnement du clavier en mode paysage aurait été choisi pour cette raison : pour une protection optimale de l'écran LCD entre les bordures plastique ; si l'on en croit Dennis Harms (le chef de projet de la première HP-12C).

HP-12C de 1982

Je n'ai jamais eu l'occasion d'utiliser intensivement une calculatrice financière, ni dans mon cursus, ni dans ma profession. Pour le moment, cette HP-12C est le seul modèle non scientifique de ma collection. En réalité, pour couper les cheveux en quatre, ma HP-30B était bien une calculette financière au départ. Mais sa modification en WP-34S scientifique est quasi définitive car l'overlay est collé sur les touches. Sinon, si je devais choisir une de mes machines pour effectuer un calcul financier en 2020, peut-être que je prendrais ma volumineuse et récente Casio fx-CP400 ? D'abord parce que la liste des fonctions financières pré-programmées dans cette Casio est plutôt longue. Ensuite, parce que son mode d'emploi est relativement intuitif. On pourrait même affirmer que ses fonctions sont auto-documentées. Mais mon choix serait de toute évidence stupide pour les calculs utilisant des fonctions directement accessibles sur la HP-12C. Je vais prendre un exemple pour illustrer mon propos : si un livre coûte 85 € HT, quel est son prix TTC ? Sur la Casio, comme sur de nombreuses machines modernes, c'est laborieux. Tout d'abord, le démarrage n'est pas instantané comme sur la HP-12C. Ensuite, on doit naviguer dans un cliquodrome, éventuellement aidé du stylet, pour configurer correctement l'affichage :

Appui sur [Settings] (à gauche)
puis [Format de base] 
Format nombre [Fixe 2] et cocher [Calcul décimal] 
[Valid]

Ensuite le calcul proprement dit :

85+(85x5.5%)[EXE]

Le problème sur la Casio, c'est qu'il n'y a pas de touche [%] physique, on doit donc aller la chercher de la façon suivante :

[Keyboard]
[abc]
[Symb.]
[%]

Pour d'autres calculs éventuels à suivre, le clavier virtuel pourra rester affiché ; en occupant la moitié inférieure de l'écran. Nous allons voir que ces petits tracas n'existent pas sur HP-12C. Tout d'abord, le format d'affichage est à deux décimales par défaut après une ré-initialisation complète. Sinon, pour passer au format monétaire, c'est deux touches :

[f] 2

Ensuite, pour effectuer le calcul décrit ci-dessus, c'est 8 touches (moitié moins que sur la Casio) :

85 [ENTER] 5.5 [%] [+]

Le résultat correctement arrondi pour le prix du livre est donc 89,68€ TTC.

Un dernier petit avantage de la HP, c'est qu'elle a affiché le montant de la TVA en résultat intermédiaire (4,68€). L'affichage explicite de cette valeur nécessiterait de manipuler encore le clavier et l'écran tactile de la fx-CP400... ou bien, de changer de méthode ? L'usage du tableur intégré à la Casio serait sans doute une alternative viable. Mais sans contestation possible, sur cette épreuve, c'est une victoire pour la HP-12C.

En tant que collectionneur, je m'intéresse parfois à la provenance et à l'histoire des machines que je manipule. La HP-12C que je tiens entre mes mains a été vendue dans la région Lyonnaise, dans un magasin nommé "DOM" (fermé depuis longtemps). Elle porte le numéro de série 2201A02826, que l'on peut décoder grâce aux informations fournies par le HP Museum. Les numéros de série des HP anciennes sont en effet au format YYWWC##### dans lequel :
  • 'YY' est le nombre d'années qui se sont écoulées depuis 1960
  • 'WW' correspond approximativement à la semaine de fabrication
  • 'C' est la première lettre du pays en anglais : A pour "America" (USA), B pour "Brazil", G pour "Germany", J pour "Japan", S pour "Singapore" et M pour "Malaysia" ou "Indonesia".
  • '#####' est enfin un numéro unique dans l'année et la semaine de fabrication du pays concerné
Ma HP-12C est donc la 2826e machine à être sortie d'une usine américaine la semaine 01 en janvier 1982. Toutes les calculettes HP actuelles sont bien entendu produites en Chine. En ces temps de Covid-19, on pointe du doigt, à juste titre, le résultat de certaines politiques industrielles. Pour la production des objets électroniques en Europe, notre dépendance vis à vis de la Chine est sans doute devenue bien trop élevée. Quant aux très beaux clones de calculatrices HP produits par la société SwissMicro (DM12L par exemple) avec leurs composants STMicroelectronics, il n'est pas évident de comprendre le rôle précis de chaque site (design, fabrication, assemblage).

Clairement, les performances sont secondaires une machine comme la HP-12C. Je dirais même plus :  certains financiers, obnubilés par la justesse du résultat, seraient même rassurés par un temps d'attente substantiel sur les calculs complexes. Cela dit, par rapport à mes autres machines, de quoi est réellement capable ce CPU de la série "HP Nut" . Celui-ci est cadencé à la modeste fréquence de 220 kHz et associé à une puce nommée avec humour "R2D2" (RAM/ROM/Display Driver). Pour évaluer sa relative lenteur, je vais faire tourner mon programme habituel de test de primalité naïf, dans une version strictement identique à celle de la HP-25 :

Test de primalité pour HP-12C

Le calcul sur le nombre 524287 prend environ 5 minutes sur la HP-12C qui est donc étonnamment plus rapide que la HP-15C au CPU identique. Il est vrai que ma version pour la HP-12C est légèrement différente ; car les labels numérotés ne sont pas disponibles.

Pour conclure, voici ci-dessous un autre programme, un peu plus complexe, que j'ai converti pour la HP-12C. Il permet de compter le nombre de façons différentes d'obtenir 1€ (ou 100 centimes) en utilisant les pièces existantes (1 centime, 2 centimes, 5 centimes, 10 centimes, 20 centimes, 50 centimes et 1 €). On suppose qu'on dispose d'autant de pièces de chaque sorte que nécessaire. Mon algorithme en Basic pour Casio PB-1000 est le suivant :

10 INPUT N:T=1
20 FOR A=0 TO N STEP 50
30 FOR B=A TO N STEP 20
40 FOR C=B TO N STEP 10
50 FOR D=C TO N STEP 5
60 T=T+INT((N+2-D)/2)
70 NEXT D:NEXT C:NEXT B:NEXT A
80 PRINT T

On peut lancer ce programme sur la Casio après avoir tapé si nécessaire la commande CLEAR 5000,900,7000 (par exemple) pour obtenir une partition mémoire suffisante. Le même programme porté sur la HP-12C, en programmation par séquence de touches et en RPN, est évidemment un peu moins lisible :


Malgré son côté un peu rebutant, la saisie de ce listing est relativement rapide sur la HP-12C. Attention toutefois aux erreurs, car son "éditeur" est ultra rudimentaire : l'insertion entre deux pas de programme n'est pas possible comme sur la TI-57. Attention également à la saisie des GTO après un test (par exemple au pas 27) : il faut s'y reprendre à deux fois avec un BST. Mais, au final, avec 100 (centimes) en entrée, puis [R/S], le résultat est bien le même que sur la Casio : 4563 combinaisons possibles... après presque 6 minutes de calcul. Cela prend moins de 20s sur la PB-1000 de 1986.