lundi 12 avril 2021

Le Falcon030 d'Atari : l'économie à tout prix.

La couverture de l'excellent ST Magazine numéro 53, de juillet 1991, est illustrée avec un Macintosh IIci fissuré qui affiche le bureau du TOS. Ce luxueux micro-ordinateur se vend six briques (60 000 Francs) à l'époque ; soit environ cinq fois le prix de l'Atari TT ! Et même si ce dernier est un peu moins bien équipé, il soutient sans problème la comparaison avec l'Apple pour certains usages, comme le traitement de texte, la mise en page en noir et blanc ou l'impression laser, entre autres. 


ST Magazine numéro 53


La barre des 10 000 Francs correspond grosso-modo à deux fois le SMIC mensuel en 1991. Pour le modeste étudiant que je suis, c'est déjà plus que le budget maximum acceptable pour l'achat éventuel d'un ordinateur. A l'époque, les PC à base d'Intel 386 SX sous MS-DOS, comme ceux qui équipent la Fac des sciences de Montpellier, sont encore un peu au dessus de cette barre, mais plus pour longtemps. Leur prix va en effet littéralement s'effondrer au cours des années suivantes ; comme on peut déjà le constater dans le magazine Science&Vie Micro numéro 95 de juin 1992. Cette évolution du marché, avec une forte élasticité de la demande par rapport au prix (les volumes de ventes sur les machines d'entrée de gamme sont très importants), va progressivement entraîner la raréfaction des machines à base de Motorola 68030 et 68040, plutôt haut de gamme et dorénavant moins compétitives. Des entreprises comme Apple, Commodore et NeXT, sont donc en sursis avant la crise. De plus, à une époque où le logiciel libre est peu connu du grand public, l'accès au code source est rarissime. Les logiciels, souvent très optimisés, restent très liées à une architecture machine. Les portages coûtent cher et sont soumis à la bonne volonté des éditeurs. Parfois, l'émulation hardware (avec CPU secondaire sur une carte d'extension) constitue une solution acceptable pour avoir accès aux logiciels d'un autre univers.

Dans ce contexte, les constructeurs se comparent aux PC dit "clonés" et à leurs prix de plus en plus agressifs. Atari travaille discrètement sur les évolutions de sa gamme ST et soutien la croissance de son parc de plus de 400 000 utilisateurs en France. Pour rappel, le 130 ST, devenu le 520 ST à sa sortie commerciale, a été conçu en 1984, en un temps record, par le génialissime Shiraz Shivji accompagné de six ingénieurs seulement sous sa direction. Les ST, STF, STE et STacy sont des micro-ordinateurs polyvalents. Ils rencontreront un franc succès parmi les musiciens professionnels grâce à des logiciels fiables et performants comme Pro 24, Cubase ou Notator. Mais voilà, il faut bien assurer la succession du STE et plusieurs projets secrets sont en concurrence au sein d'Atari Corporation. La filiale israélienne marque de gros points en cette fin d'année 1991 avec le document de spécifications de l'Atari Sparrow. Il s'agit d'une ultime évolution pour un "compatible ST" qui comprime au maximum les coûts de développement. Cet argument a toujours fait mouche dans la famille Tramiel. Moshe Segal et Eran Dariel, co-signent ce document. Le premier nom est assez répandu sur Google, mais reste difficile à associer à Atari. Le deuxième possède bien un profil Linkedin. Mais il ne serait resté que deux ans en tant que chef de projet pour Atari en Israël. À l'époque, Atari Corporation compte encore environ 500 employés.

Après avoir été dévoilé par ST Mag dès le mois de mai 1992, le Falcon 030 est annoncé officiellement le 21 août à l'Atari Messe de Düsseldorf. Malheureusement, sa distribution en France ne débutera qu'à partir du mois d'avril 1993 ; au prix de 7990 Francs pour la version équipée de 4 Mo de RAM et d'un disque dur interne de 65 Mo. Ce tarif était encore acceptable, car aligné sur celui des PC comparables, mais plus pour longtemps. En parallèle, Atari Corp. continue ses restructurations. Le nombre de salariés est déjà descendu à 270 environ. 



Mon Falcon 030 de 1993, dans son jus.


Le Falcon 030, avec ses spécifications très proches du prototype Sparrow, est bien dans la lignée des STE. Sa compatibilité avec la gamme ST ou TT est excellente pour les applications GEM. Elle est plus délicate pour les anciens jeux, en basse résolution ST, qui nécessitent de jongler avec les patches. Pour des raisons évidentes de maîtrise des coûts, son CPU Motorola 68030 est un peu bridé. Celui-ci ne tourne en effet qu'à 16 MHz sur 16 bits pour le bus de donnée (à l'instar du Mac LC II, contre 32 MHz sur 32 bits pour le TT). Sur le Falcon, seul le coprocesseur vidéo, nommé VIDEL, accède en 32 bits à la ST-RAM partagée. Cependant, au delà des 16 Mo (14 Mo utilisables), il n'y a aucun emplacement pour insérer de la TT-RAM 32 bits (ni même de la Fast RAM en 16 bits). C'est dommage, car celle-ci n'aurait pas été ralentie par les accès du circuit vidéo. Pour rattraper ça, Atari compte sur l'exploitation du coprocesseur DSP 56001, similaire à celui qui est présent dans les stations de travail NeXT. Le nouveau système DMA autorise le montage sonore en direct-to-disk, sur 8 canaux 16 bits à 50 KHz en lecture ou écriture. Par exemple, on peut sélectionner six canaux en lecture pendant que deux autres sont en enregistrement. Cette fonctionnalité, unique à ce tarif, justifiera à elle seule l'achat d'un Falcon par de nombreux musiciens.


L'arrière de mon Falcon 030 : les prises RCA dorées ne sont pas d'origine.


En cette année 1993, après plusieurs mois à compulser les articles de ST Mag et de Start Micro (nouveau nom d'Atari Mag), j'espérais encore que le Falcon 030 sortirait dans une version avec boitier "desktop", comme le Mega STE, et aussi avec le même clavier séparé de qualité. Mais, les mois passant, cet espoir s'est transformé en déception. En décembre 1993, on constate que le Falcon 040 a disparu des projets Atari, qui se concentre dorénavant sur la console Jaguar. La production du 030 est stoppée brutalement. Le nombre d'employés Atari dans le monde est descendu à 133. Début 1994, Atari France S.A. annonce avoir vendu 6000 Falcon 030 sur l'année précédente ; avant de fermer définitivement ses portes en mars. La gamme ST et ses évolutions aura donc été produite et commercialisée officiellement pendant une assez courte période de neuf années.

Heureusement, j'ai acheté mon Falcon 030 entre temps, et c'est devenu mon ordinateur favori principal ; avec les Sun SparcStation de mon école. Entre 1993 et 1996, sa logithèque me convient parfaitement et ma facture d'électricité reste modérée grâce à son alimentation de 37 Watts. Je ne peux pas en dire autant de ma facture de téléphone ; car l'accès via modem aux services Minitel et BBS sur le RTC est facturé à la minute. La prise compatible LocalTalk du Falcon 030 était censée permettre une connexion à un réseau local, mais je ne l'ai jamais utilisée. A l'instar de Sun, NeXT et Apple, peut-être que si Atari avait investi très tôt dans l'Ethernet en natif, cela aurait pu contribuer à sauver la marque ? A la tête d'Atari, Jack Tramiel, puis Sam Tramiel, laisseront dans l'histoire plutôt des souvenirs de "costs killers", sans réussir véritablement à pousser la mêlée par l'innovation.


Les prises MIDI, cartouche et joystick 3 et 4 avec pavé numérique (compatible STE et Jaguar).


Revenons en 1993, à Nîmes : mes deux anciens moniteurs Atari (monochrome 12 pouces et couleur), avec interrupteur mécanique pour passer de l'un à l'autre, deviennent encombrants. J'investis donc dans un écran VGA multi-synchro de 15 pouces, associé à une ScreenBlaster II, qui me permet d'afficher la résolution que j'utilise le plus souvent : 800x600 (ou un peu plus) non entrelacée, en 256 couleurs. Cette fois, et contrairement à son habitude, Atari n'a pas conçu de moniteur dédié au Falcon. 


Le lecteur de disquettes HD 1,44 Mo au standard PC.


Dès le début, je deviens membre de l'association FAUCONtact. Avec mes lectures de ST Mag, leur fanzine me permet de ne pas trop me sentir isolé ; même si certaines de leurs réflexions sont surprenantes. Par exemple, la rédaction ne souhaitait pas la sortie d'une version 32 MHz du Falcon 030. Pourquoi ? Eh bien, pour éviter la surenchère et le gaspillage technologique... Mais bien sûr ! FAUCONtact était donc une publication écolo ? Pourtant, même si la version multitâche en mode préemptif du TOS (MultiTOS, 1993) a le bon goût de tourner à 16 MHz, elle est peu utilisable avec les vraies applications. On se rend compte très vite que, sous MultiTOS, le Falcon bascule en mode escargot et la consommation mémoire explose ! Dans cette configuration, le logiciel Outside (gestion de la mémoire swap sur disque) devient presque indispensable avec 4 Mo de RAM. Clairement, pour un usage classique, le multitâche de base dit "coopératif" avec le TOS en ROM (à travers les accessoires de bureau ou bien, pour gérer les impressions en tâche de fond) suffit largement et ne dégrade pas les performances.

Au début des années 90, le kit développeur Atari, facturé 2000 Francs, était présenté comme le moins cher du marché. Autant dire que pour moi, pauvre étudiant, l'incitation à la copie illicite était forte. Mais de nombreuses informations et documentations restaient plus ou moins confidentielles ; car soumises à l'attribution des licences développeurs. Les choses ont bien changé en 2021 pour les amateurs de rétro-programmation. Toute la documentation Atari est dorénavant téléchargeable ici : https://docs.dev-docs.org. Tant que je suis dans les liens, pour plus d'information sur l'histoire du Falcon 030 dans le contexte des années 1990, voici une vidéo très complète en anglais : https://www.youtube.com/watch?v=cBTXGgb__y4&t.

En 2021, on ne retrouve malheureusement pas toutes les sensations du Falcon physique et de ses circuits son avec un émulateur. Celui que j'utilise le plus souvent est Hatari (sous GNU/Linux), pour sa fidélité avec les machines originales. L'émulation du disque dur est simple à mettre en oeuvre (en mode GEMDOS par exemple). Cependant, le problème principal auquel on est confronté, quand on veut éditer du texte et programmer, c'est l'émulation du clavier Atari. Comme la sérigraphie des ST est spécifique, une correspondance avec les touches du clavier PC en mode Azerty doit être établie. Plusieurs solutions existent, en fonctions des logiciels que l'on souhaite faire revivre. Cependant, la plus simple que j'ai trouvée, et la plus rapide à reproduire quand on lance Hatari "from scratch", c'est de passer l'émulateur en mode "Scancode" (et non "Symbolic"), de sélectionner un TOS en français (si on possède un clavier PC Azerty), puis de conserver dans un coin la table ci-dessous :

La voici ici au format OpenOffice, avec quelques correspondances de touches en plus et prête à imprimer.
 
Sur le clavier PC, il s'agit bien de la touche [Alt] et non [Alt Gr]. Les autres caractères, y compris les lettres accentuées, sont à leur emplacement habituel. Au final, le tableau ci-dessus n'est peut-être pas évident à mémoriser, mais il me permet d'utiliser sans difficulté les éditeurs GFA Basic, Basic 1000D, Pure C, Devpac ou même Le Rédacteur (qui possède, si besoin, son propre mapping clavier). J'ai encerclé en vert ci-dessous les huit principales touches qui ne correspondent pas au clavier PC : 

Le clavier du Falcon 030 est un peu mou, mais ergonomique.


Pour mon test habituel de primalité, sans grand intérêt technique (rappelons que ce n'est pas un benchmark satisfaisant), j'ai repris mon programme en Basic 1000D. Sur Falcon 030, cet interpréteur entièrement écrit en assembleur ne tourne malheureusement qu'en résolution compatible ST :


Toujours avec le même nombre premier 524287 en entrée, le temps d'exécution reproductible sur mon Falcon physique (14 Mo) est compris entre 1,7s et 1,8s. Si on fait l'impasse sur les optimisations possibles et sur les coprocesseurs (Motorola 68882, Blitter et surtout DSP 56001), ce score positionne donc cette version du 68030 comme étant deux fois plus rapide que le 68000 sur 1040 STF que j'avais testé précédemment. Au final, ce n'est pas totalement déconnant par rapport à la perception que l'on peut en avoir à l'usage. Pour être tout à fait honnête, les différences par rapport au ST relevées sous GEMBench sont bien plus importantes : 300 % pour les accès RAM, 580 % pour les divisions entières, et même 4060 % en calcul flottant avec le 68882, optionnel, que j'ai inséré bien plus tard dans la machine.

En conclusion, 28 ans plus tard, j'adore toujours mon Falcon 030. Avec le recul, ce n'était évidemment  pas l'architecture qui avait le plus d'avenir commercial en 1993. Mais je lui dois beaucoup dans mon cursus d'ingénieur, et je ne suis pas prêt à le vendre ; même si certaines enchères atteignent parfois des sommets déraisonnables. J'ai encore des tonnes de choses à explorer que j'essaierai de partager au fil du temps sur ce blog.

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.

dimanche 26 janvier 2020

Trappe et batterie neuves pour TI-57

Dans mon article précédent, qui date de l'année dernière (déjà !), j'avais décrit les quelques difficultés auxquelles on peut être confronté lorsque l'on souhaite rallumer en 2020 une TI-57 de 40 ans d'âge. Malgré la vieillesse de l'objet, une utilisation presque confortable reste possible, sans avoir de fil raccordé en permanence à une alimentation de labo. Pour atteindre cet objectif, on mettra de côté le chargeur original spécifique (courant alternatif en sortie), les anciennes batteries Ni-Cd hors d'usage, ainsi que le circuit redresseur intégré dans la trappe originale, parfois fatigué. On remplacera avantageusement tous ces composants par un accumulateur moderne, au format 6F22, tension 9 volts, en technologie Li-Po (très résistante aux fuites d'électrolytes) et rechargeable par un port micro USB. J'ai trouvé le mien sur banggood.com.

Accumulateur pour remplacer ceux de la TI-57

Pour les collectionneurs exigeants, l'adaptation dans la TI-57 sera sans trace et totalement réversible : ça rentre sans trou, sans couper et sans modification du connecteur original. À l'usage, l'impact sur le réalisme historique et sur les sensations un peu "cheap" procurées par cette calculette rétro est négligeable. En réalité, je n'ai rien inventé : l'astuce qui consistait à remplacer la batterie d'origine par une pile 9 volts, était connue et documentée depuis les années 80.

Adaptation trappe imprimée en 3D et pile 9V sur TI-57

Avant la soudure des broches 2,54 mm sur les fils rouge et noir (à inverser par rapport aux couleur des fils de la calculette), je vous recommande de sortir complètement deux broches de la partie en plastique noir de la réglette (coupée à trois unités). Sinon, à cause de l'élargissement du plastique par la chaleur du fer à souder, elles ne tiendront plus très bien par la suite. Pour compléter ce montage, j'ai trouvé un modèle prêt à imprimer en 3D d'une trappe compatible avec les TI de la série Majestic sur thingiverse.com. Mais comme je n'ai pas d'imprimante 3D, je l'ai commandé à un graveur professionnel grâce à une redirection sur treatstock.com. J'ai choisi "SEB Création 3D" à Phalsbourg en Moselle. La livraison a été rapide, avec deux pièces livrées pour le prix d'une : une trappe en PETG, et la même en ABS telle que je l'avais commandée. Malheureusement, la pièce en PETG s'est cassée dès la première utilisation. Le modèle 3D de la languette est donc trop fin ; exactement comme me l'avait fait remarquer "SEB Création 3D" avant de lancer la gravure. En ABS c'est un peu plus rigide, donc c'est ok. Cette adaptation, presque invisible de l'extérieur, permettra de profiter de la TI-57 pendant encore de longues années. Le seul inconvénient au final, c'est qu'il faut sortir la batterie 9V de son logement pour la recharger. Pour faciliter encore l'usage, le repositionnement de celle-ci dans le boitier de la TI-57 et le rangement des fils, avant de fermer la trappe, pourraient sans doute être améliorés.

Dos de la trappe pour TI-57 imprimée en ABS 

Pour aller plus loin avec cette calculatrice, je vous recommande de télécharger en PDF le bouquin suivant paru en 1982, environ 4 ans après la TI-57 : Mathématiques appliquées et calculatrices programmables notation algébrique directe TI 57, 58, 59 (ou bien ici) par Liviu Solomon et Marcel Hocquemiller. On y retrouve tous les programmes indispensables en calcul numérique : calcul matriciel, recherche de zéros, intégration, équations différentielles, etc. Les nombreuses astuces utilisées, pour faire rentrer ces programmes dans la mémoire très restreinte des TI, sont tout bonnement excellentes. Même si la mise en page est rudimentaire (probablement tapé à la machine à écrire mécanique), la qualité pédagogique de l'ouvrage n'en est pas moins épatante.


En conclusion, après avoir résolu le problème de l'énergie, on réalise que cette calculette scientifique programmable pas chère de la fin des années 70 est toujours capable de rendre bien des services. Dans le cadre d'un usage pédagogique, elle n'a pas grand chose à envier aux plus luxueuses calculatrices modernes.

dimanche 31 mars 2019

Le best-seller des années 80 : la TI-57

Texas Instruments présenta sa fameuse TI-57 en 1977. Elle a tant marqué sa génération qu'elle en est aujourd'hui devenue incontournable pour tout collectionneur qui se respecte. Son succès durera une bonne dizaine d'années grâce à son prix plancher sur le segment des scientifiques programmables. La TI-57 que j'ai sous les yeux a été fabriquée en Italie. Quatre chiffres dans son numéro de série, gravé au dos, représentent la semaine et l'année de production. La mienne est donc sortie de l'usine la semaine 17 de 1981. Elle aura probablement été vendue en France dans la foulée, pour la modique somme de 205 Francs ; soit moins de la moitié du prix de la Casio FX-502P ou de la HP-33 (source : l'Ordinateur de poche numéro 1). Les autres calculatrices de la même génération, avec plus de mémoire, parfois non volatile, étaient en effet beaucoup plus chères ; voire inaccessibles. Une HP-41C, par exemple, valait 1430 Francs en 1981.

TI-57 versus HP-25

Avec quelques touches en plus, la TI-57 est légèrement plus grande qu'une HP-25, mais son ergonomie n'est pas déroutante. Le principe de l'inclinaison de son écran vers l'utilisateur sera repris sur plusieurs modèles TI ultérieurs. La sérigraphie est bien contrastée, plus aérée que sur les Casio. On peut avoir jusqu'à trois fonctions par touches avec les combinaisons de [2nd] et de [INV]. Mais si on évoque le confort d'utilisation, il faut bien avouer que le clavier de la Texane est raide. J'ai mesuré plus de 270 grammes de pression en moyenne sur les touches avec ma balance de cuisine. Pour comparer avec la pression à exercer sur une machine récente, on se rapproche de la fermeté du clavier de la DM42, avec le bruit du plastique dur en plus sur la TI. Par ailleurs, l'interrupteur à glissière de la TI-57 est épouvantable.

En 2019, la TI-57 se trouve encore facilement sur les sites d'annonces. Bien entendu, en quarante ans, de l'eau a coulé sous les ponts ; et il arrive donc fréquemment qu'elle soit incomplète (sans manuel, sans chargeur, ou sans housse). Quant à ses accumulateurs Ni-Cd originaux, ils sont en général bons pour le recyclage. Le problème s'aggrave lorsque l'électrolyte des accus, à l'hydroxyde de potassium corrosif, fuit dans le boitier. Le premier module à souffrir est le redresseur intégré dans le compartiment batterie. Avec peu de composants, ce circuit possède deux fonctions :
  1. transformer le courant 8,5 V alternatif en sortie du chargeur Texas (120 mA), en courant continu pour la recharge des deux batteries Ni-Cd
  2. transformer le 2,4 V issu des batteries en 9 V pour alimenter la machine
circuit redresseur intégré dans le compartiment batterie de la TI-57

Attention, dans le connecteur qui relie le pack de batteries à la carte mère, les couleurs des fils ont été inversées : le fil rouge est relié à la borne négative, et le fil noir à la borne positive. Qu'est-ce qui a bien pu passer par la tête des ingénieur Texas Instruments ? Est-ce une erreur ? Heureusement, si on alimente la calculatrice en 9 V à l'envers pendant une courte période, il ne se passe pas grand chose, mais cela ne la détruit pas.

L'autonomie de la TI-57 est limitée, principalement à cause de son affichage à LED rouges. Mais que valent ses performances par rapport aux machines de sa génération ? Pour les mesurer, j'ai repris mon programme de test de primalité, dans une version proche de la première que j'avais écrite pour la TI-66. Sans chercher l'optimisation, la syntaxe condensée de la TI-57 permet de faire rentrer le même algorithme dans 42 pas (au lieu de 62) :


Avec 2701 en entrée, mon programme retourne 37. Il s'agit du plus petit diviseur de 2701, qui n'est donc pas premier. Avec 524287 en entrée, il affiche 1 après un peu plus de 8 minutes de calcul. C'est un temps correct, sans plus ; la HP-25 que j'avais testée précédemment faisait mieux.

Une machine aussi rudimentaire que la TI-57, armée de 8 mémoires et de 50 pas de programme seulement, est-elle capable de résoudre un problème plus complexe ? Par exemple, la recherche des zéros de la fonction ci-dessous est-elle à sa portée ?


f(x) = 1 - (x+4)^2*cos(sqrt(x))*e^((-x)/5) 

Celle-ci est formulée ci-dessus au format de la barre de recherche Google. Voici son graphe :

f(x) = 1 - (x+4)^2*cos(sqrt(x))*e^((-x)/5)

Eh bien oui, la TI-57 relève ce défi avec brio ! Je suis arrivé à faire rentrer au chausse pied dans la calculette une adaptation de mon programme de recherche de zéros par la méthode de la sécante. L'algorithme est identique à celui que j'avais implémenté dans mes articles précédents pour la PB-1000 et la FX-602P.  L'équivalence avec les variables du programme en Basic sera la suivante :

Basic --- TI-57
    X --- 00
    A --- 01
    Z --- 02
    I --- 07

Voici donc ce code, en 26 pas :


La fonction f(x) dont on recherche les zéros est codée à partir du pas 27 :


Ouf, ça rentre juste, au pas près ! Mode d'emploi de ce programme :
  1. modifier si besoin f(x) à partir du pas 28. Les mémoires 3 à 6 ne sont pas utilisées dans le reste du programme.
  2. stocker le X initial dans la mémoire 0. Par exemple avec [2] [STO] [0]
  3. stocker la précision dans la mémoire 7. Par exemple [1] [EE] [8] [+/-] [STO] [7]
  4. n'oubliez pas de passer en mode radian, si f(x) contient de la trigonométrie
  5. vous pouvez éventuellement calculer quelques valeurs de f(x) pour avoir une idée de la forme de la courbe : stocker X dans la mémoire 0, puis lancer [SBR] [1].
  6. [RST] puis [R/S] pour lancer la recherche d'un zéro
  7. le résultat s'affiche à l'écran
Pour terminer, voici une petite démonstration en vidéo, dans laquelle je recherche trois zéros de l'équation f(x) décrite ci-dessus :


Les trois solutions de f(x) = 0 trouvées par la TI-57 sont donc :
  • 2,3442043
  • 23,626136
  • 37,051386

dimanche 3 février 2019

Un solveur pour la FX-602P

Dans mon article précédent, je vous avais proposé de développer un solveur numérique pour la Casio FX-602P. Ce programme lui permet en effet de combler une de ses lacunes par rapport à la HP-15C qui possède la fonction [solve] d'origine. Il n'y a probablement pas de grand secret mais, malgré les explications données en annexe D du manuel de la 15C, je ne sais pas exactement quel est l'algorithme implémenté dans la HP. Alors j'ai choisi la méthode numérique de la sécante. Elle est proche de la méthode de Newton, mais plus facile à programmer, car on n'aura pas à calculer de dérivée. On obtiendra néanmoins une bonne approximation d'un zéro de f(x) en quelques itérations seulement.

Recherche d'un zéro de f(x) = x^3 - 2x -5

J'ai repris le vieux programme en Basic pour PB-1000 qui m'avait rendu de bons et loyaux services dans les années 90. Pour la toute première version, je m'étais inspiré d'un algorithme nommé "Newton" donné dans un vieux bouquin d'analyse numérique dont j'ai oublié le titre, et que j'avais emprunté à la bibliothèque de la Fac des Sciences Montpellier II. Andreas Wichmann avait publié mon programme pour PB-1000 sur son site quelques années plus tard, avec mon accord. Le voici de retour en 2019 dans une version écrémée :

10 ANGLE1:GOTO40
20 Y=X^3-2*X-5
30 RETURN
40 PRINT"X initial="X;:INPUTX:I=1E-8
50 A=X:GOSUB20:Z=Y:X=X+I:GOSUB20
60 X=A-Z*I/(Y-Z):PRINTA;X:IFABS(X-A)>I THEN50
70 PRINT"F(X)="Z;"X="X

Usage :
  1. éditer le programme pour entrer la fonction sous la forme Y=F(X) à la ligne 20
  2. si besoin, modifier la précision qui est codée en dur à la fin de la ligne 40 (variable I)
  3. lancer le programme
  4. répondre à la question "X initial= ... ?" par exemple avec la valeur 1.
  5. le programme pour PB-1000 affiche les valeurs de A et X à chaque itération
  6. affichage du résultat à la fin (contrôle avec F(X) qui doit être proche de zéro). Attention, dans certains cas particuliers, il se pourrait qu'il n'y ait pas convergence. Dans ce cas, on utilisera la touche [BRK] pour interrompre le programme. 
Pour illustrer le déroulement de ce programme, j'ai créé l'image ci-dessous avec un montage Gimp de trois copies d'écran PB-1000 :

Convergence de l'algorithme de la sécante sur PB-1000 (montage)

Pour le portage sur la FX-602P qui nous intéresse plus particulièrement dans cet article, j'utiliserai les quatre mémoires listées ci-dessous avec les variables équivalentes dans le listing en Basic :

Basic --- FX-602P
    X --- 00
    A --- 01
    Z --- 02
    I --- F

Ce qui nous donne le programme en 38 pas ci-dessous. Il est moyennement lisible, je vous l'accorde ! Vous pouvez le saisir par exemple en P1, toujours en une seule ligne de programme sur la 602P :

Min00 1 EXP 8 +/- MinF 
LBL0 MR00 Min01 GSBP0 Min02 MR00 + MRF = 
GSBP0 - MR02 = 1/x * MRF * MR02 = +/- + MR01 = PAUSE 
Min00 - MR01 = ABS x>=F GOTO0 MR00

Ce programme fait appel au sous-programme P0 ci-dessous, qui doit contenir la fonction f(x) ; ici [ x^3 - 2x - 5 ] en 10 pas :

Min00 x^y 3 - 2 * MR00 - 5 =

Usage :
  1. entrer la fonction f(x) dans P0
  2. si besoin, modifier la précision, codée en dur au pas 4 (variable F)
  3. taper le X initial, par exemple 1
  4. lancer le programme P1
  5. pause et affichage de la valeur de X à chaque itération ; le résultat à la fin
Sur la HP-15C, pour comparer les performances de son solveur intégré, j'ai utilisé le programme suivant :

001-42,21,11   LBL A
002-      36   ENTER
003-      36   ENTER
004-       3   3
005-      14   y^x
006-      34   x<>y
007-       2   2
008-      20   *
009-      30   -
010-       5   5
011-      30   -
012-   43 32   RTN

Je vous rétrocède ci-dessous les vitesses d’exécution que j'ai mesurées sur les trois machines avec le calcul donné en exemple. Sur les versions Casio, l'affichage intermédiaire permet de suivre la convergence, mais prend évidemment du temps :

- Casio PB-1000 : environ 5 secondes pour afficher le résultat (calcul à partir de X=1)
- Casio FX-602P avec [pause] à chaque itération : 16 secondes (calcul à partir de X=1)
- HP-15C avec la fonction [solve] intégrée : temps très variables, qui dépassent parfois la minute, en fonction de l'intervalle de recherche initial (registres X et Y).

Pour conclure, j'ai réalisé une petite vidéo, à visionner de préférence en 1080p, qui permet de revivre les sensations vintage procurées par la FX-602P et la HP-15C en les faisant tourner en parallèle :  


La calcul est super long sur la HP-15C parce que l'intervalle de recherche est arbitrairement fixé à [1, 51] dans la vidéo. Pour plus d'équité dans la comparaison, j'aurais pu fixer une valeur de Y plus basse. Par exemple, en fixant l'intervalle initial à [2, 3] le temps de calcul peut être réduit à 38 secondes environ. Parmi les autres optimisations possibles, on peut désactiver le mode de calcul complexe (merci C.Ret) via la séquence de touche peu intuitive [g] [CF] [8]. Il est également intéressant de retirer les deux [ENTER] superflus en début de programme. L'inconvénient de cette méthode, c'est qui ne faudra pas oublier le double [ENTER] manuel préalable si on utilise le programme pour un calcul direct (par exemple : f(1) = -6). Enfin, on peut factoriser la formule via la méthode de Horner ; comme cela a été suggéré dans le premier commentaire à cet article (ci-dessous). Voici un nouveau programme qui prend en compte ces remarques :

001-42,21,11   LBL A
002-      20   *
003-       2   2
004-      30   -
005-      20   *
006-       5   5
007-      30   -
008-   43 32   RTN

Dernier truc : un [ENTER] de trop, quand on saisit l'intervalle de recherche initial, a également une influence sur la performance ! Par conséquent, il vaut mieux taper [2] [ENTER] [3] sans deuxième [ENTER], et directement [f] [SOLVE] [f] [A]. Grâce à ces optimisations, le temps de calcul pour afficher le résultat 2,094551481 est ramené à 12 secondes pour la HP-15C. La différence avec les calculs précédents est substantielle. Cependant, elle ne suffit pas à faire la différence face à une FX-602P bien plus réactive.

dimanche 27 janvier 2019

La Casio FX-602P : petite mais ultra-efficace

La Casio FX-602P est une calculatrice parmi les plus anciennes de ma collection. En réalité, je ne l'ai pas connue pendant mes années lycée. J'ignorais même son existence jusqu'à récemment, où j'ai souhaité l'acquérir. Je trouve en effet plaisant de manipuler la maman de la FX-4000P qui reste l'une de mes machines préférées. La FX-602P est sortie au Japon en septembre 1982, à la même époque que la HP-15C, donc deux ans avant la HP-71B que je testais dans mon article précédent. La 15C, d'un gabarit comparable à la 602P, est certainement sa concurrente de la même période la plus sérieuse. Le positionnement tarifaire de la Casio, autour de 900 Francs en 1982, puis à 600 Francs en 1984 (source : Micro Systèmes numéro 45), la situait dans une fourchette de prix basse. Et même si la HP-15C était possédée, voire encensée, par une de mes connaissances, j'aurais eu beaucoup de mal à choisir entre ces deux machines à l'époque. Pour bien situer le niveau technique de la FX-602P, on la compare parfois à la HP-41C qui était beaucoup plus chère. Au sommet de cette gamme de prix, le Sharp PC-1500 était vraiment plus encombrant que les trois machines citées précédemment ; sans pour autant se démarquer fondamentalement pour un usage type calculette, en math ou en physique. Quant aux Texas Instruments de l'époque, elles étaient vraiment dépassées. La TI-66 par exemple pouvait faire valoir l'argument de sa simplicité d'accès et de son large clavier très lisible, mais elle était larguée sur tout le reste.

Une Casio FX-602P dans son jus ; quelques touches sont un peu effacées.

Parmi les nombreux avantages de la Casio, on apprécie immédiatement :
  • son clavier compact, sa robustesse (même 35 ans plus tard), sa légèreté, sa finesse
  • le connecteur d'extension qui permet de la raccorder sur une interface Casio FA-1 ou FA-2, pour les sauvegardes sur cassettes, ou sur l'imprimante FP-10 à "film métallique", vendue 450 Francs à l'époque (à ne pas confondre avec le traceur FA-10 du PB-700).
  • sa logique de calcul dite "algébrique" avec 11 niveaux de parenthèses ;  même si cette logique ne s'applique qu'aux opérations arithmétiques, et non aux fonctions trigonométriques par exemple.
  • son ensemble de fonctions mathématiques complet, son langage machine "Turing-complet"
  • son afficheur LCD lisible et évolué pour l'époque, à 10 caractères alphanumériques, plus deux chiffres d'exposant, et 11 petits indicateurs de mode (en haut).
Cet afficheur simplifie grandement la programmation, notamment pendant les phases le débogage. Autre cas d'usage de l'afficheur alphanumérique : il est ici facile d'écrire un programme de conversion décimal vers hexadécimal. Cet exemple est donné dans le manuel qui, en 68 pages seulement, est à l'image de la simplicité globale de la machine. D'autre part, même si la précision interne de la FX-602P inclut deux chiffres de plus que la 15C, elle reste limitée au calcul de 69! (grands nombres). Cependant, à la fin de ce dernier calcul, la Casio exhibe directement trois chiffres significatifs de plus que la HP. Si les fonctions classiques sont bien présentes sur la 602P, on regrette l'absence des nombres complexes, des matrices, de la résolution d'équations et de l'intégration numérique. Ces programmes intégrés avancés resteront pendant longtemps l'exclusivité des HP. Cependant, force est de constater que la relative lenteur de la 15C entraîne de sacrés limitations sur le calcul numérique. Je dévoile déjà ma conclusion, mais nous verrons ci-dessous que la Casio se démarque nettement sur la vitesse de calcul.

Mon programme habituel de test de primalité a été rapide à porter sur la FX-602P. Bien que très différent en apparence de la version HP-15C, je l'ai écrit d'une façon aussi compacte, en 39 pas. Et je vous le livre donc ci-dessous dans un tableau Gnumeric commenté. Cette représentation ne me plaît pas beaucoup car elle n'est pas fidèle à la sérigraphie des touches. J'essaierai de faire mieux, un jour...

"Ce nombre est-il premier ?" pour Casio FX-602P

Vu l'intérêt limité du truc, je ne crois pas que l'un de mes rares lecteurs souhaitera recopier ce programme. Néanmoins, j'écris ici vite fait un mode d'emploi résumé :


  1. passer en [MODE][2] (WRT), puis [P0] par exemple, pour saisir le programme ci-dessus
  2. revenir en [MODE][1] (RUN)
  3. saisir le nombre 'n' à tester, puis lancer le programme par [P0]. Pendant le calcul, vous observerez un mini segment horizontal à l'extrême droite du LCD.
  4. affichage du premier diviseur de n, ou bien 1, si n est premier


Le test sur le nombre 524287 s’exécute sur la FX-602P en un peu moins d'une minute. Cette jolie Casio au corps bardé d'aluminium est donc, à la louche, huit fois plus rapide que la HP-15C. Ce bon score me donne envie de re-programmer une version de l'algorithme de Newton pour la 602P, pour compenser l'absence de solveur numérique. Je vous propose donc une suite au prochain numéro !