25.02.2001

Bibliothèque n°502 : EXT49 v2.1

Auteur: Yoann DESIR
e-mail: YoannDESIR@yahoo.com
page web : http://www.multimania.com/ydesir/hp48gx/
http://www.multimania.com/hp49g

    Cette bibliothèque permet la programmation en Externals à l'aide de mnémoniques.

   Tout d'abord, les données nécessaires au fonctionnement d'EXT49 sont contenues dans le fichier "Vars1.05", que vous devez exécuter dès son transfert sur la HP. Dès lors, les données sont tranférées dans deux nouvelles variables du répertoire caché de HOME.

   Remarquez que l'entrée "Crvar" permet de créer un fichier suceptible de remplacer "Vars1.05" à partir des informations-mnémoniques que vous utilisez actuellement et qui sont stockées dans le répertoire caché de HOME.

   Mais trève de plaisanteries ...

EXT49 by Y.Désir
Version 2.1
Programmation en RPL système

Vive la HP49G!

->Prg: Crée un programme ou une liste à partir d'une chaîne de caractères contenant des mots appellés "mnémoniques".
Les programmes et sous-programmes sont délimités par "begin" au début et "end" à la fin; les listes sont délimitées par "{" et "}".
Attention, tout programme ou liste entamé doit être termié par le délimiteur adéquat, sous peine de message d'erreur.
Le programme ou la liste créé(e) est renvoyé sur la pile.

En l'absence de "begin" ou de "{" au début de la chaîne, les mnémoniques écrits sont EXECUTES après conversion en instructions en RPL système.
Les éventuelles instructions localisées après une strucutre RPL ou après une liste sont ignorées.
En cas d'erreur, le mnémonique incorrect est passé en surluminescence et le source est édité en ligne de commande.

Prg->: Réalise l'opération réciproque de ->Prg. Les listes et les RPLs sont acceptés, mais Prg-> fonctionne aussi sur un nom global dont le contenu est converti en chaîne de carctères, ou encore sur un nom XLIB, qui voit son contenu désassemblé de même.

->mn: Convertit l'objet du niveau 1 en le mnémonique qui lui correspond.

mn->: Opération réciproque. Intérêt: récupérer l'instruction système correspondant au mnémonique fourni sans l'exécuter.

TABLE DE CONVERSION DES OBJETS EN MNEMONIQUES

Réel

0

<1h>

1.25E234

"1.25E234"

Complexe

1

<2h>

(1.23548698,2E-245)

"(1.23548698,2E-245)"

Chaîne

2

<3h>

"ABC"

C$ 5 "ABC"

 

 

 

"A C"

C$ 7 &"A B"&

Tableau

3 ou 4

<4h>

[ 1 2 3 ]

"&[1 2 3]&"

Liste

5

<5h>

{ 1 A 1_kg }

"\47A20........"

Nom global

6

<6h>

'A'

"vA"

 

 

 

'A B'

"&vA B&" où "v" est ASCII 120

Nom local

7

<7h>

'A'

"ŁA"

 

 

 

'A+B'

"&ŁA+B&"

Programme

8

<8h>

<< SWAP >>

"\D9D20........"

Expression

9

<9h>

'A*X^2+B*X+C'

"'A*X^2+B*X+C'"

Binaire

10

<Bh>

# 3223h

"#3223h"

Graphique

11

<Ch>

Graphic 1 x 1

"&GROB 1 1 00&"

Taggué

12

<Dh>

:1: A

"\CFA20........"

Unité

13

<Eh>

1_kg

"'1_kg'"

Nom XLIB

14

<Fh>

XLIB 232 15

"&XLIB 22 15&"

 

 

 

HEAD

"HEAD"

Répertoire

15

<2Fh>

DIR END

"\69A20........"

Bibliothèque

15

<8Fh>

Library 502: EXT49...

"\04B20........"

Backup

17

<9Fh>

Backup A

"\26B20........"

Fonction

18

<8h>

INV

"INV"

Commande

19

<8h>

DUP

"DUP"

Entier-système

20

<1Fh>

<1h>

"<1h>"

Réel long

21

<3Fh>

Long real

"„1.23456789012345E49999"

Complexe long

22

<4Fh>

Long Complex

"„(1.E-49999,0)"

Linked Array

23

<5Fh>

Linked Array

"\A0A20........"

Character

24

<6Fh>

Character

"K_A"

 

 

 

Character

"K_\65"

Library Data

26

<AFh>

Library Data

"\88B20........"

Entier long

28

<FFh>

1234567890123

"1234567890123"

Font

30

<CFh>

Ft8_0:SYSTEM 8

"\CCB20.........."

Flash Pointer

27

<0h>

Flash Pointer

"\CA620.........."

AddM: Ajoute le mnémonique du niveau 2 défini par l'adresse en ROM au niveau 1 sous forme d'entier binaire b < # 40000h.
Le mnémonique ne doit pas être connu, mais une même adresse peut correspondre à plusieurs mnémoniques...

RnMn: Renomme le mnémonique du niveau 2 en un mnémonique au niveau 1.

ClrM: Efface le mnémonique présent au niveau 1.

IdxM: Recherche n, réel au niveau 1, mnémoniques contenant la chaîne présente au niveau 2 et de taille 1 à 20 caractères.

GetM: Génère la liste des mnémoniques connus de taille r, r réel au niveau 1 avec r

NbMn: Donne le nombre de mnémoniques connus.

KMn?: Précise si un mnémonique est connu ou non. Si oui, renvoie l'adresse à laquelle il correspond au niveau 2.

DBG: Lance le debugger RPL-système. DBG prend un programme ou un nom XLIB en entrée. Appuyyer sur "SST" pour évaluer l'instruction suivante.
Pour certains mnémoniques, vous aurez à editer le source généré par DBG puis appuyer sur Enter.

Stat: Fournit quelques informations sur les mnémoniques connus : nombre de points d'entrée en ROM, nombre de Primitive Code Objects, nombre de Programmes en RPL-Système...

Menu502: Génère un menu temporaire qui porte les principaux caracères usuels de la nomenclature de EXT49 Version 2.1.

LAinit: Correspond à la variable 'LAmnémo' dans la configuration où aucun mnémonique n'est connu. 'LAmnémo' contient les caractères des mnémoniques connus. L'autre variable du répertoire caché, 'inst', porte les adresses en ROM des points d'entrée correspondant aux mnémoniques.
En cas d'essai de recréer vos propres mnémoniques, partez de LAinit et d'une liste vide pour 'inst'.

    Il est important de noter que tout caractère de code ASCII inférieur à 33 sépare deux mnémoniques. Pour inclure des caractères de code ASCII inférieur à 33 dans un mnémonique, ajouter un caractère "&" de chaque côté du mnémonique.

Les mnémoniques inconnus rencontrés par ->Prg engendrent une erreur;
Les adresses inconnues détectées par Prg-> sont notées comme un entier binaire mais le préfixe est "$" : ainsi, si "swap" est inconnu, Prg-> peut renvoyer "$3223h".

    L'inclusion de quartets quelconques s'effectue par ajout en tête du préfixe "\" avant les quartets à insérer. L'inclusion du contenu d'un nom global s'effectue en précedant le nom du caractère d'ASCII 164.

Pour éviter des problèmes en cas d’erreur, laisser la calculatrice en mode " Last Stack " coché.