Les commandes secrètes de la HP48GX

Vous trouverez sur cette page consacrée à la calculatrice HP-48GX des dizaines de Syseval, d'objets, ou encore d'adresses d'External.

Les logiciels pour transférer les objets de votre HP vers votre PC sont également disponibles en libre téléchargement, ainsi que des programmes RPL prêts à l'emploi pour explorer la mémoire de votre HP et les objets qui y sont présents en ROM.

De plus je vous livre ici toutes les commandes secrètes de la HP (c'est-à-dire les commandes non documentées) que j'ai découvertes en décompilant les librairies internes de ma HP48GX.

Enfin, en bas de cette page, vous trouverez un programme vous permettant d'utiliser votre HP48 comme une télécommande infrarouge, ainsi que les schémas électroniques pour vous réaliser une alimentation ou un câble de transfert.

Bonne découverte ! :-)

Logiciels PC pour HP48GX :

Description du téléchargement
Nom du fichier
Type
Taille
Kit de connexion : permet de sauvegarder et de restaurer les objets de la HP sur votre PC
Fonctionne sous Windows 98 et Windows XP
1,6 Mo
Link48 : permet de sauvegarder et de restaurer les objets de la HP sur votre PC
Fonctionne sous Windows 3.1 (ça existe encore ??) et Windows 95
224 ko
Emulateur de HP48GX : retrouver sous Windows toutes les fonctionnalités de votre HP48GX
320 ko

 

 

Les instructions secrètes de la HP48GX :

J'appelle "instructions secrètes" les commandes ou opérateurs non documentés, qui ne sont pas accessibles depuis les menus de la HP. Pour utiliser ces commandes, il faut les taper en toutes lettres. En voici 19, dont certaines que j'ai personnellement découvertes en décompilant les librairies intégrées n°2, n°171 et n°1792 de ma HP48GX :

Commande
Description
SYSEVAL
Évalue un objet à l'adresse mémoire donnée sous forme d'un entier binaire au niveau 1 de la pile. Faites attention avec cette commande, car les adresses de mémoire aléatoires altéreront certainement la mémoire et bloqueront la calculatrice.
LIBEVAL
Évalue un Nom XLib dont l'adresse est au niveau 1 de la pile sous forme d'un entier binaire. Faites attention avec cette commande, car les adresses aléatoires altéreront certainement la mémoire et bloqueront la calculatrice.
XLIB
Qui connaît la syntaxe exacte de la commande XLIB ???
RULES
Renvoie sous forme de mots-croisés les prénoms des concepteurs du code de la HP48
TEACH
Crée le répertoire EXAMPLES dans Home, contenant des programmes d'exemple
CLTEACH
Supprime le répertoire EXAMPLES dans Home, contenant des programmes d'exemple
VERSION
Renvoie la version exacte de la HP (HP48-A, HP48-B, etc.. HP48-Z)
WSLOG
Renvoie 4 chaînes décrivant les 4 dernières interruptions
DIR
Crée un objet répertoire (type 15) et le place sur la pile. La syntaxe de DIR est : DIR nom1 contenu1 nom2 contenu2 ... où nom1 et nom2 sont les noms des variables contenues dans le répertoire à créer.
CLVAR
Supprime toutes les variables dans le répertoire courant
CLUSR
Supprime toutes les variables dans le répertoire courant
RATIO
Forme littérale de la fonction division (dont la forme algébrique est /)
MERGE
Fusionne la mémoire RAM de port avec la mémoire RAM principale
FREE
Libère la mémoire RAM fusionnée
GROB
Crée un objet graphique vide : GROB x y
PREDV
Renvoie la valeur de la variable dépendante en fonction de la valeur de la variable indépendante (x)
C$
Permet d'extraire sous forme de chaîne de caractères un morceau d'un objet
C#
Permet de créer des entiers binaires longs
@
Permet d'intégrer un commentaire dans un programme. Tous les caractères compris entre 2 @ sont ignorés par la HP. Le caractère @ s'obtient par : touche alpha + touche shift droit + touche enter

Exemple d'utilisation de la commande LIBEVAL :

Le jeu du démineur (commande MINEHUNT) est en fait l'objet n°51 de la librairie n°231.
Pour lancer le démineur, il suffit donc de lancer le XLib 231 51.
Mais comment lancer le XLib 231 51 à partir de la commande LIBEVAL, sachant que LIBEVAL attend sur la pile un seul entier binaire ? Pour cela il faut convertir en hexadécimal le numéro de la librairie (ici 231) et le numéro de l'objet (ici 51) :
231 donne #E7h en hexa, et 51 donne #33h en hexa. On multiplie ensuite le numéro de la librairie par #1000h (ce qui revient à lui ajouter 3 zéros), puis on lui ajoute le numéro de l'objet visé : #E7h x #1000h + #33h = #E7033h

Voilà, c'est fini ! Il n'y a plus qu'à mettre l'entier binaire #E7033h sur la pile, puis à taper la commande LIBEVAL : le démineur se lancera !

Autre exemple : la commande TEACH qui crée le répertoire EXAMPLE fait appel au XLib 232 45 :

232 s'écrit #E8h en hexa, avec 3 zéros il devient #E8000h
45 s'écrit #2Dh en hexa, qu'il suffit d'additionner à #E8000h

Pour lancer la commande TEACH en utilisant l'instruction LIBEVAL, on pourra faire #E802Dh LIBEVAL

 

Exemple d'utilisation de la commande DIR :

Pour créer un objet répertoire (type 15) vide sur la pile, tapez DIR suivi de Enter. Pour enregistrer ce répertoire sous le nom de TOTO, mettez le nom 'TOTO' sur la pile puis appuyez sur STO. La commande DIR sans paramètres permet donc de créer un répertoire vide. Mais comment créer un répertoire contenant 2 variables A et B ? Pour cela, tapez DIR A 25 B "Bonjour" puis validez par Enter : vous venez de créer sur la pile un répertoire contenant 2 objets : un nombre entier A (de type 0) et une chaîne de caractères B (de type 2). Pour enregistrer ce répertoire sous le nom de TOTO, mettez le nom 'TOTO' sur la pile puis appuyez sur STO. Remarquez que dans la syntaxe de la commande DIR, le nom des variables (ici A et B), à créer dans le nouveau répertoire, ne sont pas entre guillemets.

 

Exemple d'utilisation de la commande C$ :

Pour créer un objet chaîne de caractère à partir des 3 premiers caractères du réel 123456 tapez C$ 3 123456 : on obtient alors 2 objets sur la pile : la chaîne "123" au niveau 2 et le réel 456 au niveau 1.

Autre exemple : C$ 4 "ABCDEF" crée une chaîne contenant "ABC (les 4 premiers caractères dont le caractère double quote) puis "dépose le reste" sur la pile. On obtient alors 3 objets sur la pile :

3: ""ABC"
2: 'DEF'
1: ""

Un dernier exemple : C$ 12 Linked Array donne la chaîne "Linked Array" (12 caractères)

Remarque : le caractère $ s'obtient par la touche alpha + touche shift gauche + touche 4

 

Les autres "commandes secrètes" :

Pour utiliser les commandes RULES, TEACH, CLTEACH, VERSION ou WSLOG, il suffit de taper leur nom suivi de Enter, sans leur passer de paramètres. Ces commandes se contentent d'afficher une information à l'écran, à l'exception de TEACH qui crée le répertoire EXAMPLES dans le répertoire Home, et de CLTEACH qui l'efface. Ce répertoire EXAMPLES contient plusieurs exemples de programmes RPL, de courbes prêtes à être tracées (courbes paramétriques, fonctions y=f(x), courbes surfaciques, etc.), ou encore d'expressions algébriques.

 

Quant à la commande SYSEVAL, qu'on ne présente plus, il s'agit de loin de la commande la plus intéressante des 7 "commandes secrètes", puisque c'est elle qui va nous permettre de nous plonger au coeur de la HP, pour retrouver toutes sortes d'objets dans la ROM, mais aussi pour programmer la HP en RPL-Système. La commande SYSEVAL attend au niveau 1 de la pile un entier binaire représentant une adresse mémoire, et va évaluer l'objet se trouvant à cette adresse, c'est-à-dire :

Premier exemple d'utilisation de la commande SYSEVAL : vous connaissez la chaîne de caractères vide ? Il s'agit de "" (2 guillemets doubles, sans aucun caractère entre les deux guillemets) qu'il est très facile de créer. Mais connaissez-vous le nom vide ? Oui, en effet il s'agit de '' (2 guillemets simples, sans aucun caractère entre les deux guillemets) mais comment le créer ?? Je vous laisse 10 secondes de réflexion, et surtout de test sur votre HP ...

Cette fois-ci, comme vous pouvez le constater sur votre HP, on ne peut pas créer le nom vide aussi facilement que la chaîne vide. Pourtant le nom vide existe dans votre HP : il est situé à l'adresse #15777h de la mémoire. Pour le déposer sur la pile, tapez #15777h suivi de SYSEVAL. Mais oui, la commande SYSEVAL vient de vous donner le nom vide ! ! Ceci n'est qu'un exemple d'application de SYSEVAL parmi des milliers d'autres. Oui, j'ai bien dit des milliers d'autres : votre HP renferme dans sa ROM plusieurs milliers d'objets et de routines extraordinaires, qui deviennent enfin accessibles grâce à la commande SYSEVAL, et qui, il faut bien le dire, ne sont pas tous accessibles par les menus standards. Mais avant de passer en revue toutes les adresses intéressantes de la HP, il faut bien connaître les différents objets qu'elle sait manipuler, et c'est justement ce que nous allons voir dans les paragraphes suivants.

 

 

Une fonctionnalité intéressante de la HP :

Une possibilité intéressante et peu connue de la HP est l'application de la fonction OBJ-> à une chaîne de caractères : il en résulte "le débalage" sur la pile du contenu de la chaîne de caractères, suivi de l'évaluation des objets ainsi obtenus. Exemples :

"56" OBJ-> met le réel 56 sur la pile

"2 3 +" OBJ-> met 2 sur la pile, met 3 sur la pile puis additionne les deux nombres : on obtient le réel 5 au niveau 1 de la pile

On constate qu'une chaîne de caractères à qui on applique OBJ-> peut se comporter comme (et remplacer) un programme.

La possibilité qui vient alors tout de suite à l'esprit est de pouvoir mettre dans un programme les instructions qui se tapent directement et qui ne supportent pas d'être dans un programme RPL. Exemple :

"DIR" OBJ-> créer un répertoire vide sur le pile

"C$ 3 123456" OBJ-> convertie en chaîne de caractères les 3 premiers caractères du réel 123456.

"GROB 1 10 ABCDEF1234567890ABCD" OBJ-> crée un objet graphique de taille 1x10 dont le contenu est indiqué pixel par pixel dans la chaîne de caractères.

En utilisant ce principe de fabrication d'objets graphiques il est possible de créer des objets quelconques de la HP à partir du leur codage en hexadécimal. Par exemple, le codage d'une liste vide est A7A20B2130. Voici comment fabriquer de toute pièce une liste vide :

1 - on met la chaîne de caractères "GROB 1 5 A7A20B2130" sur la pile

2 - on applique OBJ-> ce qui donne un objet graphique de taille 1x5

3 - on extrait le 4 ème élément de l'objet graphique, en considérant qu'il s'agit d'un objet composé. Pour cela on met l'entier système <4h> sur la pile puis on applique le SYSEVAL #56B6h

4 - on efface l'External du niveau 1 et on fait un NEWOB : on obtient alors une liste vide tout à fait valide, que nous venons de fabriquer à partir de son codage en mémoire.

De la même manière il est possible de fabriquer n'importe quel objet de la HP, des objets les plus courants jusqu'aux objets les plus exotiques, simplement à partir de leur codage en mémoire (prologue+contenu+épilogue). C'est ce principe qui est utilisé dans la version RPL du programme ->OBJ disponible en téléchargement plus bas dans cette page.

 

Une dernière application de l'extraction des chaînes de caractères est la possibilité d'intégrer des commentaires dans des programme RPL de la HP. Si on met un commentaire entre deux @ dans un programme (entre << et >>) ce commentaire est immédiatement ignoré par la HP dès la validation du programme et ne sera pas enregistré dans le programme RPL. Une solution consiste à mettre le commentaire dans une chaîne de caractères et à lui appliquer OBJ->. Exemple :

<< 2 "@ceci est un commentaire@" OBJ-> 3 + >>

Lors de l'extraction de la chaîne de caractères, le commentaire sera immédiatement ignoré sans laisser de trace sur la pile.

Bien sûr, le programme suivant aurait donné le même résultat, mais aurait été sensiblement plus lent :

<< 2 "ceci est un commentaire" DROP 3 + >>

 

 

Les objets de la HP48GX :

Il existe 28 types d'objets différents dans la HP48. Le tableau ci-dessous contient, pour chacun des types d'objets, son nom, son prologue (sur 5 quartets), et son type (le numéro renvoyé par l'instruction TYPE). Certains types d'objets vous sont déjà familiers, alors que d'autres vous paraîtront plus exotiques :

Nom du type
Prologue
Type
        Nombre réel
        #02933h
        0
        Nombre complexe
        #02977h
        1
        Chaîne de caractères
        #02A2Ch
        2
        Tableau réel
        #029E8h
        3
        Tableau complexe
        #029E8h
        4
        Liste
        #02A74h
        5
        Nom global
        #02E48h
        6
        Nom local
        #02E6Dh
        7
        Programme
        #02D9Dh
        8
        Expressions
        #02AB8h
        9
        Entier binaire
        #02A4Eh
        10
        Objet graphique
        #02B1Eh
        11
        Objet taggué
        #02AFCh
        12
        Objet unité
        #02ADAh
        13
        Nom XLib
        #02E92h
        14
        Répertoire
        #02A96h
        15
        Librairie
        #02B40h
        16
        Objet backup
        #02B62h
        17
        Fonction intégrée
        #02D9Dh
        18
        Commande intégrée
        #02D9Dh
        19
        Entier système
        #02911h
        20
        Réel long
        #02955h
        21
        Complexe long
        #0299Dh
        22
        Linked array
        #02A0Ah
        23
        Caractère
        #029BFh
        24
        Objet code
        #02DCCh
        25
        Library data
        #02B88h
        26
        Ext1
        #02BAAh
        27
        Ext2
        #02BCCh
        27
        Ext3
        #02BEEh
        27
        Ext4
        #02C10h
        27
        External
        ..................
        27

La ROM de votre HP renferme plusieurs exemplaires de chacun de ces objets. Voici une liste d'adresses contenant certains objets, du plus courant au plus exotique. Attention : les adresses entre #C0000h et #FFFFFh donnée dans le tableau ci-dessous sont en ROM non standard, et non couverte si vous n'avez pas de carte mémoire supplémentaire dans la HP. Ces objets sont donc accessibles par un simple SYSEVAL seulement si vous n'avez pas de carte mémoire supplémentaire dans votre HP (sinon la ROM est couverte ...).
De plus, je précise que j'ai trouvé expérimentalement ces adresses en fouillant la ROM de ma HP qui est une HP48GX version R.

A l'adresse
se trouve un objet de type
        #514EBh
        Nombre réel
        #D379Eh
        Nombre complexe
        #C2483h
        Chaîne de caractères
        #D3741h
        Tableau réel
        #CD7BFh
        Tableau de chaîne de caractères
        #C3207h
        Tableau de XLib
        #F44E4h
        Tableau de Nom Global
        #5EDE4h
        Tableau de External
        #C31DCh
        Liste
        #CE177h
        Nom global
        #54A2Ah
        Nom local
        #54A42h
        Expressions
        #C4B63h
        Entier binaire
        #CEECAh
        Objet graphique
        #C2479h
        Objet unité
        #CCA9Fh
        Librairie
        #71BBDh
        Objet backup
        #62136h
        Entier système
        #C7D07h
        Réel long
        #52BECh
        Complexe long
        #C0F96h
        Linked array
        #EAEABh
        Caractère
        #CB93Ch
        Objet code
        #CEFCEh
        Library data

Utilisation de ce tableau : vous voulez voir un Linked Array ? C'est très simple : vous mettez l'entier binaire #C0F96h sur la pile (l'adresse du Linked Array), puis vous tapez SYSEVAL.

Rappel : je ne peux pas garantir que toutes ces adresses fonctionnent sur toutes les HP (notamment les HP48G et les HP49). Ce sont des adresses que j'ai moi-même constatées sur ma propre HP48GX, qui ne contient aucune carte mémoire additionnelle.

 

 

Les programmes de base, en version RPL, pour explorer les objets de la HP48 :

Description du téléchargement
Nom du fichier
Type
Taille
->STRING : convertit un objet en chaîne de caractères, représentant le codage en mémoire de l'objet
Programme
RPL
148
octets
->OBJ : crée un objet à partir d'un chaîne de caractères représentant le codage en mémoire de l'objet (permet de reconvertir en objets les chaînes obtenues par le programme ->STRING, ou de créer des objets exotiques)
Programme
RPL
131
octets
->ADR : renvoie l'adresse en mémoire d'un objet
Programme
RPL
118
octets
->EXT (première version) : crée des structures RPL faisant appel à des adresses non standards de la HP (External) à partir d'une liste de points d'entrée
Programme
RPL
387
octets

Le programme ->EXT attend au niveau 1 de la pile une liste contenant des entiers binaires, chaque entiers binaires représentant l'adresse d'une routine à exécuter (un SYSEVAL). Exemple : le SYSEVAL #30794h renvoie la version exacte de la HP (HP48-A, HP48-B, etc.. HP48-Z). Si on met l'entier binaire #30794h sur la pile, puis qu'on tape SYSEVAL, on exécute la routine qui se trouve à l'adresse #30794h, et qui nous renvoie la version de la HP. Mais pour exécuter ce SYSEVAL #30794h on peut aussi utiliser le programme ->EXT : on met sur la pile une liste contenant l'adresse #30794h (la liste est { #30794h }, et elle ne contient qu'un seul élément), et on lance le programme ->EXT, qui convertit la liste en une structure RPL (type 8) représentée sur la pile par le mot External. Cet "External" fait exactement la même chose que le SYSEVAL #30794h : il renvoie la version de la HP. La structure RPL renvoyée par ->EXT est alors équivalente au programme RPL suivant (<< et >> symbolisent les guillemets sur la HP) :

<< #30794h SYSEVAL >>

Mais on peut aussi passer à ->EXT des listes bien plus grandes, contenant des dizaines d'entiers binaires, représentant chacun une adresse interne de la HP (un SYSEVAL). On obtiendra alors des structures RPL (des External) faisant appel directement aux adresses interne de la HP : c'est ce qu'on appelle des programmes en RPL-Système, un juste milieu entre le RPL standard qui se limite aux seules instructions présentent dans les menus, et l'assembleur. Les programmes du paragraphe suivant sont écrits en RPL-Système, et sont distribués sous forme de listes d'entiers binaire à passer au programme ->EXT.

 

 

Les programmes avancés en External pour programmer et explorer les objets de la HP48 :

Description du téléchargement
Nom du fichier
Type
Taille
->EXT (deuxième version) : crée des structures RPL faisant appel à des adresses non standards de la HP (External) à partir d'une liste de points d'entrée
Liste
244
octets
EXT-> : fait le contraire de ->EXT : recrée une listes de points d'entrées à partir d'un External
Liste
336
octets

Ces deux programmes sont distribués ici sous forme d'une liste d'entiers binaires à appliquer au programme ->EXT lui-même, afin d'obtenir la structure RPL correspondante (l'"External"). Mais il faut noter que :
- la deuxième version de ->EXT sera créé grâce à la première version (version RPL) de ->EXT
- le programme EXT-> sera créé grâce à la deuxième version (version External) de ->EXT
- à partir de maintenant, dès que je parlerai du programme ->EXT, il s'agira de la version External (la deuxième version) et non plus de la première version RPL

Les deux programmes suivants, distribués ici sous forme de liste d'entiers binaires à appliquer à ->EXT, vous permettrons de réaliser des tableaux "exotiques". Grâce à eux, vous pourrez créer et utiliser des tableaux de type quelconques : tableau de nom, tableau de programmes RPL, tableau de chaînes de caractères, tableau d'External, etc ...

Description du téléchargement
Nom du fichier
Type
Taille
->VEC convertit une liste d'objets en tableau à une dimension
Liste
543
octets
VEC-> : fait le contraire de ->VEC : convertit un tableau à une dimension en liste
Liste
335
octets

Le programme ->VEC convertit une liste en tableau à une dimension (donc en vecteur), et le programme VEC-> reconvertit le tableau en liste. Exemple :

Remarque : pour que le programme ->VEC puisse convertir une liste en vecteur, il faut que TOUS les objets de la liste soit du même type.

Les SYSEVAL indispensables sur la HP48GX :

Conversion de types
SYSEVAL
Description
     #543F9h       Convertit un Réel en Entier binaire
     #18CD7h       Convertit un Réel en Entier système
     #5435Dh       Convertit un Entier binaire en Réel
     #5A03h       Convertit un Entier binaire en Entier système
     #18DBFh       Convertit un Entier système en Réel
     #59CCh       Convertit un Entier système en Entier binaire
     #5B15h       Convertit une chaîne (string, type 2) en Nom global (type 6)
     #57004h       Convertit un Nom global (type 6) en chaîne de caractères (type 2)
     #7E76h       Convertit une instruction (type 18 ou 19) en un Nom XLib (type 14)
     #7E99h       Convertit un Nom XLib (type 14) en instruction (type 18 ou 19) (+ VF Ext)
     #5AB3h       Convertit l'objet du niveau 2 de la pile en un objet dont le prologue est au niveau 1 sous forme       d'un entier système.
     #F075h       Convertit une chaîne de caractères (type 2) en un objet unité (type 13) de partie scalaire égale à       1 (+ VF Ext)

+ VF Ext signifie : Renvoie en plus VRAI ou FAUX sous forme d'un External au niveau 1 de la pile.

Renvoie d'une information
SYSEVAL
Description
     #15777h       Renvoie le caractère nul
     #15CBBh       Renvoie le type d'un objet sous forme de chaîne : "Program"
     #3C64h       Renvoie le prologue d'un objet sous forme d'un entier système
      Exemple : <2D9Dh>, ou renvoie <0h> si l'objet n'est pas reconnu
     #219E0h       Renvoie le numéro d'une librairie
     #30794h       Renvoie la version de la HP : "HPHP48-R" (différent de l'instruction secrète VERSION)
     #D2A3h       Renvoie 4 chaînes décrivant les 4 dernières interruptions (instruction secrète WSLOG)
     #20A7Dh       Renvoie sous forme de mots-croisés les prénoms des concepteurs du
      code de la HP48 (instruction secrète RULES)

 

 

Comment utiliser votre HP48 comme une télécommande infrarouge, pour commander votre télévision ou votre magnétoscope (ou les 2 ! ) ?

Votre HP possède un émetteur et un récepteur infrarouge. Elle a donc tout pour se transformer en super-télécommande infrarouge, qui pourra enregistrer, mémoriser, et restituer les commandes de plusieurs appareils différents, telle une télécommande universelle ! Pour cela vous avez besoin de 2 objets CODE (type 25) que j'appellerai REC.IR et PLAY.IR

Les 2 programmes REC.IR et PLAY.IR sont téléchargeables ici sous forme de chaînes de caractères qu'il faudra appliquer au programme ->OBJ pour construire réellement les objets CODE.

Description du téléchargement
Nom du fichier
Type
Taille
REC.IR : permet d'enregistrer une séquence infrarouge
Chaîne
195
octets
PLAY.IR : permet d'émettre une séquence infrarouge
Chaîne
175
octets

Vérification et construction des objets CODE :

Vous pouvez vérifier la somme de contrôle et la taille de tout objet sur la HP grâce à la commande BYTES du menu MEMORY.

Vérification des chaînes de caractères après le transfert sur votre HP :

Construction des objets CODE :

Pour construire l'objet CODE REC.IR, vous devez appliquer la chaîne REC.CH au programme ->OBJ.
Pour construire l'objet CODE PLAY.IR, vous devez appliquer la chaîne PLAY.CH au programme ->OBJ.

Dernière vérification des objets CODE avant de les lancer :

Utilisation des objets CODE REC.IR et PLAY.IR :

  1. Mettre sur la pile une chaîne de caractères contenant environ 1000 espaces. Le programme suivant construit une chaîne de 1024 espaces : << " " 1 10 START DUP + NEXT >>
  2. Lancer le programme (le CODE) REC.IR
  3. Mettre la télécommande bien en face de la HP, et appuyer sur une touche de la télécommande JUSQU'A CE QUE LE SABLIER DE LA HP SOIT ETEIND
  4. Sauvegarder la chaîne de caractères ainsi obtenue dans une variable
  5. Pour émettre une commande infrarouge : mettre le chaîne créée par REC.IR sur la pile, puis lancer PLAY.IR

Conseil : si vous n'arrivez pas à émettre correctement une séquence infrarouge, vous pouvez augmenter la taille de la chaîne de 1000 espaces que vous avez utilisée pour l'enregistrement avec REC.IR : vous pouvez par exemple utiliser une chaîne de 2000 espaces. Mais n'oubliez pas que plus cette chaîne de caractères est longue, plus fidèle sera la reproduction de la séquence infrarouge, mais en même temps l'émission de la commande durera plus longtemps, et donc, usera plus de piles ... Inversement, avec certaines télécommandes une chaîne de 500 caractères (voire moins) peut suffire, ce qui sera plus économique en énergie lors de l'émission. La longueur de la chaîne de caractères dans laquelle vous enregistrez votre séquence infrarouge dépend aussi de la distance à laquelle vous voudrez émettre la commande plus tard.

 

 

Génération automatique de tous les programmes de base présentés ci-dessus :

Le programme RPL creer.rpl permet de générer automatiquement les 10 programmes de base présentés ci-dessus (7 programmes pour explorer les objets de la HP, et 3 programmes pour utiliser la HP comme une télécommande infrarouge universelle).

Ce programme creer.rpl recrée un par un chaque programme de base, et ce :

Description du téléchargement
Nom du fichier
Type
Taille
CREER : génère dans le répertoire courant les 10 programmes de base
Programme
RPL
3 100
octets

L'algorythme de ce programme CREER est le suivant :

  1. met sur la pile le code source RPL du programme ->OBJ puis l'enregistre sous le nom ->OBJ
  2. met sur le pile la chaîne de caractères représentant le programme ->STRING, applique ->OBJ, puis enregistre le résultat sous le nom ->STRING
  3. met sur le pile la chaîne de caractères représentant le programme ->ADR, applique ->OBJ, puis enregistre le résultat sous le nom ->ADR
  4. met sur le pile la chaîne de caractères représentant le programme ->EXT de base (version RPL), applique ->OBJ, puis enregistre le résultat sous le nom ->EXT : il s'agit de la version RPL provisoire du programme ->EXT
  5. met sur la pile la liste représentant la version external du programme ->EXT, applique ->EXT (en utilisant la version de base en RPL), puis enregistre la résultat sous le nom ->EXT : la version de base provisoire de ->EXT (en RPL) viens d'être remplacée par la version définitive (en external)
  6. met sur la pile la liste représentant la version external du programme EXT->, applique ->EXT, puis enregistre la résultat sous le nom EXT->
  7. met sur la pile la liste représentant la version external du programme ->VEC, applique ->EXT, puis enregistre la résultat sous le nom ->VEC
  8. met sur la pile la liste représentant la version external du programme VEC->, applique ->EXT, puis enregistre la résultat sous le nom VEC->
  9. met sur le pile la chaîne de caractères représentant le programme REC.IR, applique ->OBJ, puis enregistre l'objet code obtenu sous le nom REC
  10. met sur le pile la chaîne de caractères représentant le programme PLAY.IR, applique ->OBJ, puis enregistre l'objet code obtenu sous le nom PLAY
  11. crée un programme RPL permettant de créer une chaîne vide de 1024 caractères, puis enregistre ce programme RPL sous le nom CHVID
  12. ordonne les fichiers du répertoire courant dans l'ordre suivant : ->STRING ->OBJ ->EXT EXT-> ->VEC VEC-> ->ADR CHVID REC PLAY CREER

Le programme CREER a généré automatiquement les 10 programme suivants, tous placés dans le répertoire courant :

 

Alimentation et câble pour la HP48 :

Et voici pour terminer tous les schémas électroniques nécessaires pour vous réaliser une alimentation et un câble de transfert pour votre calculatrice HP :

Description du téléchargement
Nom du fichier
Type
Taille
Schéma électronique pour réaliser une alimentation secteur permettant d'alimenter la HP en permanence :
fini le fameux message Warning: LowBat ( )
!
73 ko
Schéma pour réaliser tous les câbles pour transférer des fichiers entre votre HP et votre PC, ou des objets entre 2 HP
35 ko