09.03.99

Bibliothèque n°501: EXT v2.08
Auteur: Yoann DESIR
e-mail: YoannDESIR@yahoo.com

Cette bibliothèque contient notamment un certain nombre de programmes empruntés à différents auteurs, dont Jean-Michel FERRARD.
Qu'ils en soient remerciés.

->EXT: Convertit une liste d'adresses binaires en programme en Rpl-Système exécutable. Les entiers-binaires du futur programme et les objets non modifiés doivent être taggés par un tag vide. Les sous-programmes doivent être inclus sous forme de listes d'entiers-binaires ( non-taggés bien-sûr ).

EXT->: Opération réciproque.

->ADR: Donne l'adresse de l'objet au niveau 1.

ADR->: Place au niveau 1 l'objet dont l'adresse est exprimée au niveau 1 sous forme d'entier binaire.

->Str: Convertit l'objet au niveau 1 en une chaîne composée des quartets de cet objet.

Str->: Opération réciproque.

RPL: Ôte les "<<" et ">>" d'un programme en User-Rpl ( on gagne 5 octets ).

RPL->: Rajoute les "<<" et ">>" d'un programme traité par "RPL". Permet d'éditer le programme.

<-->: "Casse" un objet-composé quelconque. Le nombre d'objets est renvoyé au niveau 1 sous forme d'entier réel.

-><-: Crée un programme à partir de ses n composants aux niveaux 2 à n+1, et de l'entier n au niveau 1.

L->H: Ajoute des adresses #14378h après toutes les adresses nécessaires dans une liste d'adresses obtenue par traitement d'un programme par EXT->. Les adresses de pift, pifte, ?:skip,... sont prises en compte. Permet après un passage ultérieur par ->EXT d'exécuter un programme en Rpl-Système en mode halté.

H->L: Opération réciproque de L->H. Permet de récupérer la liste, dépourvue des adresses #14378h qui pourraient s'y trouver.

REPLS: Programme personnel de remplacement en chaîne. Nécessite une chaîne dans laquelle s'effectuent les remplacements au niveau 3, une chaîne paterne au niveau 2, et une chaîne au niveau 1 par laquelle remplacer toutes les occurences de la chaîne niveau 2 dans la chaîne niveau 3.
Dans la chaîne niveau 2, le caractère ASCII n°127 signifie "caractère quelconque". Le nombre de remplacements est renvoyé au niveau 1, la chaîne éventuellement modifiée au niveau 2.
Comme la réservation de mémoire se fait a u début de la tâche, prévoyez une place mémoire équivalente à la chaîne-source si la patterne est plus longue que la chaîne de remplacement, ou sinon égale à la place que tiendrait une chaîne dont le contenu serait complètement remplacé.

REVS: La plus rapide et la plus compacte version que j'aie trouvée de ce programme, qui renvoie à l'envers la chaîne argument niveau 1.

PEEK: Classique, renvoie dans une chaîne les n quartets de mémoire à partir de l'adresse (a), où (a) et n sont deux entiers-binaires aux niveaux respectifs 2 et 1.

POKE: Classique aussi, écrit les quartets de la chaîne niveau 1 à l'adresse nivreau 2 présente sous forme d'entier-binaire.

SEARC: Recherche dans la mémoire n occurences de la chaîne niveau 2, avec n entier réel au niveau 1, des adresses a1 à a2, a1 et a2 étant des adresses présentes aux niveaux respectifs 4 et 3 sous forme d'entiers-binaires.
Ne s'arrête à l'adresse a2 que depuis la version 2.08.

ROM1: Recherche une occurence en ROM des quartets de la chaîne au niveau 1. C'est ainsi que j'ai découvert l'équivalent HP48G(X) de #C612h : #6F261h, qui effectue get2(cp), ce qui correspond à SysRcl(b)...

REN: Renomme la variable niveau 2 en la variable niveau 1. Nécessite que la variable niveau 2 soit connue et présente dans le répertoire courant, et que la variable niveau 1 soit inconnue. L'ordre des variables est conservé.
La variable à rennomer peut éventuellemnt être cachée.

ORDER: Version assembleur de la fonction standard de la HP.
Qualité majeure: sa rapidité ( quasi-instantanée ).
Fonctionne autant dans HOME et dans les sous-répertoires de HOME.
Il est notamment possible avec ce programme de déplacer dans HOME le répertoire caché.
Remarque: cette version présentant des avantages de poids, il est impossible d'utiliser, en la tapant au clavier, la fonction standard ORDER quand la bibliothèque EXT v2.08 est attachée.

PG: "Purge" universel : supprime toutes les variables utilisateur exposées sous forme de nom globaux au niveau 1 ( une seule variable ou une liste ).
Les répertoires ne sont pas protégés. Avantage principal: la rapidité du point d'entrée # 8C27h.

INVI: Cache la ou les variables présente(s) au niveau 1 ( si plusieurs variables, incluses dans une liste ) par ajout d'une variable "nom global vide" dans le répertoire courant. Dorénavant, ce programme classique est fonctionnel dans HOME, où cacher des variables devient possible. Simplement, aucune variable "nom global vide" n'est alors ajoutée, c'est le répertoire caché qui est déplacé.

VISI: Rend visible(s) la ou les variables niveau 1 ( si plusieurs variables, incluses dans une liste ) du répertoire courant par déplacement ou supression d'une variable "nom global vide". De même, cette opération est dorénavant possible dans HOME, contrairement à la version classique du même utilitaire.

TVIS: Semblable à VISI, mais rend cette fois visibles toutes les variables du répertoire courant. Fonctionne aussi, ici encore, dans HOME.

->XL: Convertit les entiers réels des niveaux 1 et 2 en le nom XLIB qui leur correspond.
Ex.: 2: 232 1: 15 => 1: XLIB 232 15

XL->: Opération réciproque de ->XL.

RCXL: Rappelle le contenu d'un nom XLIB. Nécessite en entrée le nom XLIB dont on veut obtenir le contenu, ou bien les deux entiers réels correspondant au numéro de la bibliothèque et au numéro du nom XLIB.

 Exemple: 
  1: XLIB 232 15 ==(RCXL)==> 1: External External ... 
  ou bien: 
  2:  232 
  1:  15         ==(RCXL)==> 1: External External ... 

REPLA: Remplace dans l'objet-composé au niveau 3 toutes les occurences du ou des objets ( si plusieurs objets, inclus dans une liste ) présents au niveau 2 par le ou les objets ( si plusieurs objets, inclus dans une liste ) du niveau 1.
Les objets taggués (par exemple, :A: B ) de l'objet-composé du niveau 3 sont reconnus comme formés du nom global 'A' et de l'objet B.

CPB: "Compresse" l'entier-binaire tapé au clavier du niveau 1, à condition que celui-ci ne compte que 5 chiffres. Gain de mémoire: 5.5 octets par binaire. Les entiers-binaires renvoyés par ->ADR et donc par EXT-> sont écrits dans ce format "compressé". L'utilisation de binaires compressés dans la paterne sera donc nécessaire en cas d'emploi de REPLA sur une liste obtenue par EXT->.

STCRC: Calcule le Code de Redondance Cyclique des quartets CONTENUS dans la chaîne au niveau 1. Ex.: C2A20 F0000 11920 50000 au niveau 1 => <4AD7h>, Crc des quartets <11920 50000>. Essayez par exemple d'effectuer BYTES sur l'entier-système <5h>, dont les quartets sont justement <11920 50000>...

ON-C: Effectue un redemmarage à chaud de la HP48. Tous les programmes courants sont interrompus.

D.OFF: Eteint l'écran. Les programmes en cours sont exécutés avec un gain de temps d'environ 13%. A utiliser de préférence dans un programme.

D.ON: Rallume l'écran. A utiliser de préférence dans un programme.

TIME: N.B. Lorsque la bibliothèque n°501 est attachée, on ne peut utiliser en la tapant au clavier la fonction standard "TIME" .
Le nom XLIB 501 32, qui remplace cette fonction standard, prend un argument à exécuter ( typiquement, un programme ) au niveau 1, avec éventuellement les éléments nécessaires aux niveaux supérieurs, et donne au niveau 1 le temps d'exécution de l'objet évalué exprimé en secondes.

ÎCST: (avec une flèche vers le haut comme premier caractère)
Affiche comme menu temporaire le menu CST du répertoire parent.

Time: Idem TIME, mais exprime le temps d'exécution en ticks d'horloge ( 1 tick d'horloge équivaut à 1/8192 sec ).

hCST: Affiche comme menu temporaire le menu CST de HOME.

OutHP: Effectue un Shutdown de la HP. Nombreux avantages: silencieux, contrairement à la séquence de touches [ON] [SPC], et conserve en particulier LAST CMD, LASTARG, LAST STACK, la pile et PICT.
Peut être comparé à la fonction standard OFF, mais coupe l'horloge et économise les piles.

Outre ces entrées standard de la bibliothèque, apprenez ( éventuellement ) qu'il est possible dans les bibliothèques de créer des noms XLIBs absents du menu de la bibliothèque, mais qu'on peut toutefois taper dans la ligne de commande.
Cette originalité a été pratiquée pour des raisons d'élégance dans EXT v2.08, où l'on trouve, outre les 38 noms XLIBs visibles dans le menu, deux noms XLIB cachés mais néanmoins tapables :

Menu501 , qui crée dans le répertoire courant une variable CST de menu utilisateur correspondant au menu de la bibliothèque n°501.

AllVars , équivalent de la fonction standard VARS, mais qui renvoie les noms éventuellement cachés et le nom global vide inclus dans le répertoire courant.

Joyeuse programmation, et n'oubliez pas de m'envoyer de nombreux mails...!