Dernière mise à jour de la page : 23.02.13
Le contenu de cette page est sous licence : CC BY-SA 3.0

Cette page est dédiée à la calculatrice HP-48G/GX. La version G est en ma possession depuis la classe de seconde. L'acquisition de sa grande soeur, la GX, s'est faite à la rentrée en classe prépa. Ainsi, ça va faire pas loin de 20 ans qu'une HP-48 m'accompagne...

Vous trouverez ici quelques astuces pour la connecter à un PC. C'était déjà un petit casse-tête lors de sa sortie, et ça reste aujourd'hui un peu compliqué (mais pas insoluble). Il y a aussi quelques informations sur les 2 émulateurs les plus connus de cette calculatrice (Emu48 pour Windows et x48 pour les OS apparentés à UNIX).

  1. Mes machines, cartes et bouquins
  2. Connecter une HP-48G/GX à un PC
    1. C-Kermit
    2. Xmodem
  3. Émulateurs

I. Mes machines, cartes et bouquins

Ce fut en seconde que j'ai reçu ma HP-48G (ROM version M, voir la photo ci-dessous, machine de gauche). Il était préférable de se doter d'une calculatrice graphique, surtout que j'ambitionnais de suivre la filière mathématique du lycée (au collège, j'avais la vénérable Texas Instrument Galaxy 40). Je ne me souviens plus comment le choix du modèle s'est fait lors du passage en seconde. Sans doute son côté « ingénieur » (bibliothèques d'équations intégrées, constantes scientifiques...). Quoiqu'il en soit, quand je suis arrivé au lycée, nous n'étions que trois élèves dans ma classe à avoir une HP-48G, les autres élèvent possédant généralement des TI (TI-81 et TI-85 pour l'essentiel) et des Casio.

Je me souviens de mon excellent prof de physique (il se reconnaîtra s'il passe par là) qui proposait plusieurs petits programmes pour illustrer ses cours. Ceux-ci étaient tous écrits pour TI et Casio. Les trois possesseurs de HP-48G devaient se débrouiller pour reprogrammer tout ça eux-mêmes. Et c'est là que commença pour moi la grande découverte du principe de pile et du langage RPL qui l'exploite.

Il faut dire que ce mode de fonctionnement/programmation est assez déroutant au début, mais une fois adopté, on a du mal à passer à autre chose sur une calculatrice. Ainsi, au lieu de faire [2][+][3][=] pour calculer le résultat de cette simple addition, il faut saisir [2][ENTER][3][+]... Et nous pouvons fort bien nous passer de variables locales dans beaucoup de cas en manipulant correctement les résultats provisoires (ou toute autre donnée) qui se trouvent dans la pile.

Pour ceux que ça intéresse, les manuels de la HP-48G/GX sont en ligne :

                

Les deux premiers bouquins étaient fournis en français avec la calculatrice, le troisième était disponible également en français mais en librairie. Aujourd'hui, on les trouve encore en occasion sur la toile.

Puis est venu le temps de tester le RPL-Système et enfin l'assembleur grâce aux excellents ouvrages de Jean-Michel FERRARD :

        

De nombreux MEMORY CLEAR plus tard (toujours consécutifs à de beaux plantages en règle à force de faire n'importe quoi), le passage en prépa a été l'occasion d'acquérir une HP-48GX (ROM version R, voir la machine de droite de la photo plus haut). C'est la même machine que la HP-48G à deux nuances près : elle a plus de mémoire utilisateur (128 Ko contre 32 Ko) et dispose de 2 ports pour des cartes d'extension (ROM s'il s'agit des fonctionnalités étendues ou RAM s'il s'agit simplement d'espaces de stockage utilisateur supplémentaires). Le port 1 ne peut accueillir que des cartes de 128 Ko ; il est possible de fusionner cette capacité avec celle de la machine pour disposer d'un espace unique de 256 Ko. Le port 2 quant à lui peut accueillir des cartes jusqu'à 4 Mo (capacité découpée en tranches de 128 Ko). Ainsi une carte de 512 Ko dans le port 2 donne accès à 4 ports virtuels de 128 Ko (numérotés de 2 à 5). La photo suivante montre mes deux cartes (une de 128 Ko que je fusionne habituellement avec la mémoire de la machine et une de 512 Ko) :

En prépa, nous étions pas loin de la moitié de la classe à posséder une HP-48G/GX (avec quelques HP-48S/SX, la génération qui précède) alors que la majorité de l'autre moitié possédait une TI-92, le nouveau monstre à l'époque de Texas Instrument. Pour ma part, à cette période, j'ai encore ajouté un bon bouquin de Jean-Michel FERRARD à ma collection, et plus tard Voyage au centre de la HP-48G/GX de Paul COURBIS (disponible en PDF ici) :

        

II. Connecter une HP-48G/GX à un PC

J'avais acheté il y a très très très longtemps le kit de connexion proposé par Hewlett-Packard pour connecter une HP-48 (S/SX/G/GX) à un ordinateur. Autant dire que beaucoup de choses ont changé depuis. En effet, le connecteur de la HP-48 est un port 4-pins compatible RS-232 et le câble fourni est sensé être branché sur un port série d'un PC. De plus, les protocoles de transfert sont Kermit (pour S/SX/G/GX) et Xmodem (pour G/GX uniquement) pour lesquels le logiciel fourni (sur une disquette !!!) fonctionne sous DOS.

        

Bref, on fait dans l'archéologie : aujourd'hui, il n'est pas rare de n'avoir aucun port série sur son PC ni de lecteur disquette, et DOS commence un peu à se faire oublier.

Pour le câblage, il y a une solution : il existe des adapteurs ports série/USB et j'ai trouvé un modèle qui fonctionne correctement avec le kit de connexion de la HP-48. Il s'agit de l'adaptateur TRENDnet TU-S9. Lors de la connexion de cet adapteur sur un port USB d'un PC sous Linux, il est reconnu comme le périphérique /dev/ttyUSB0 (c'est celui-ci qu'il faudra spécifier pour communiquer avec la HP-48). La photo suivante montre le câble du kit de connexion de Hewlett-Packard (en noir) et l'adaptateur :

Pour l'aspect logiciel, il y aussi des solutions, notamment sous Linux : nous avons C-Kermit pour le protocole Kermit et minicom pour dialoguer en utilisant le protocole Xmodem, tous deux en ligne de commande... Mais si vous en êtes à ce stade, ça ne vous freinera pas.

II.1. C-Kermit

Ce logicel est proposé par The Columbia University Kermit Project aujourd'hui repris par The Kermit Project et distribué sous la licence BSD Revision 3. Il est compatible avec la plupart des OS apparentés UNIX (dont Linux). Pour Windows, il faudra regarder du côté de Kermit 95. Enfin, pour la distribution Archlinux, on le trouve dans le dépôt Arch User Repository (AUR) à cette adresse.

Tout d'abord, paramétrons la HP-48 ([SHIFT GAUCHE][I/O][IOPAR]) selon :

Ainsi le contenu de la variable réservée IOPAR est le suivant :

Une fois C-Kermit installé et la HP-48 connectée avec le kit de connexion et l'adapteur (périphérique /dev/ttyUSB0), nous pouvons lancer C-Kermit par la commande ckermit (dans une console) et procéder aux réglages de communication (j'ai mis la description de chaque commande derrière un caractère #) :

pulsar68@plutonx: ~ $ ckermit
C-Kermit 9.0.302 OPEN SOURCE:, 20 Aug 2011, for Linux (64-bit)
 Copyright (C) 1985, 2011,
  Trustees of Columbia University in the City of New York.
Type ? or HELP for help.
C-Kermit>set modem type direct      # connexion série directe, sans modem
C-Kermit>set line /dev/ttyUSB0      # choix du périphérique de connexion
C-Kermit>set carrier-watch off      # pas de détection de porteuse de signal
C-Kermit>set flow none              # pas de contrôle spécifique de flux
C-Kermit>set parity none            # données 8 bits et pas de parité
C-Kermit>set speed 9600             # vitesse de tranmission à 9600 baud
C-Kermit>set file type binary       # mode binaire pour les fichiers transférés

On peut vérifier que tout est bien fait. La commande status doit renvoyer SUCCESS :

C-Kermit>status
 SUCCESS
C-Kermit>

Et on place la HP-48 en attente d'instruction de C-Kermit (pour une G/GX, faites [SHIFT DROIT][->] ou exécutez la commande [SHIFT GAUCHE][I/O][SRVR][SERVER]) :

Ça y est, tout est prêt, nous pouvons transmettre des fichiers vers la HP-48 ou en récuperer de la calculatrice pour les copier sur le PC :

C-Kermit>send NOM_DU_FICHIER
C-Kermit>get NOM_DE_LA_VARIABLE
Il faut respecter la casse de NOM_DU_FICHIER et NOM_DE_LA_VARIABLE...
C-Kermit ne voit que les fichiers/variables dans le répertoire courant du PC comme de la HP-48. Il faut donc veiller à se placer au bon endroit avant de tenter un transfert.

Si d'aventure ça ne devait pas fonctionner, tentez la commande suivante dans C-Kermit qui rend la transmission plus sûre au détriment de la vitesse de transfert (ça marche pour moi) :

C-Kermit>robust

Puis recommencez les transferts voulus.

II.2. Xmodem

III. Émulateurs