Sommaire







Abréviations utilisées
 

hex: nombre en hexadécimal (base 16)
dec: nombre en décimal (base 10)
grob: objet graphique
: flèche vers la droite (au cas ou votre navigateur ne l'affiche pas correctement)

Sommaire



Quelques notions
 

Le RPL-système est dangereux: il faut faire attention aux objets manipulés pour éviter les plantages (plus ou moins grave) car il n'y a aucun test effectué (pour plus de rapidité) avant l'exécution d'une instruction (exemple: le SWAP en User RPL: vérifie s'il y a un objet aux niveaux 1 et 2 et appelle le SWAP du RPL-Système)

# : désigne un nombre binaire (valeur en hexadécimal), ex: #10 (s'affiche: ¤10h)
CHR : caractère (différent de la chaîne de caractère), ex: A (s'affiche: A et non "A" ou 'A')
$ : chaîne de caractère, ex: "A" ou "ABCDEF"
% : entier, ex: 5 (s'affiche: 5 sur la 48 et 5. sur la 49). La 49 différencie un nombre entier (interger, celui avec le point) et le nombre réel (pas de point)
HXS : chaîne hexadécimal , ex: HXS 2 01 (s'affiche #10h)
sa forme est HXS <longueur> <valeur> (HXS 3 CBA donne #ABCh)
LAM : variable locale (variable interne au programme)
ID : variable (variable dans le répertoire HOME)

Les sources sont à compiler sous MASD (librairie 257).

Sommaire



Programme pour visualiser les caractères MINIFONT (uniquement pour la HP49)
 

Extrait de Viewmnf
Ce programme fonctionne normalement sans problème (une instruction oubliée peut entraîner la perte de données, un redémarrage, ...)

Le code est à compiler sous MASD.
Attention: si vous utilisez "Text Editor" vous n'avez pas les guillemets "" au début et à la fin, il faut donc mettre "text" à la place de "text"
"!NO CODE
!RPL
::
#0 #0
{ LAM Cnt1 LAM Cnt2}
BIND
ClrDA1IsStat
RECLAIMDISP
"Création de la table"
DISPROW2
"de caractères en cours"
DISPROW3
"(~ 20_s)"
DISPROW4
#88 #83 MAKEGROB
en-têtes avec MASD

début du programme

Déclaration des 2 variables locales Cnt1 et Cnt2
(Cnt1 et Cnt2 contiennent la valeur #0)
Préparation affichage


affiche le texte sur la ligne 2

affiche le texte sur la ligne 3

ligne 4
création d'un grob (objet graphique) vierge de 131*136 (83hex= 131dec; 88hex=136dec)
#10 #0
DO
INDEX@
' LAM Cnt1 STO
#10 #0
DO
INDEX@
' LAM Cnt2 STO
LAM Cnt1
#10 #*
LAM Cnt2
#+DUP
Boucle de 0 à 16 (10hex=16dec)

récupère la valeur du compteur (nombre binaire)
sauve cette valeur dans une variable locale sous Cnt1
Boucle de 0 à 16 (10hex=16dec)

récupère la valeur du compteur (nombre binaire)
sauve cette valeur dans une variable locale sous Cnt2
appelle la variable Cnt1 (retourne la valeur enregistrée)
#*: multiplication (de 2 nombres binaires) par 16 (10hexl=16dec)
appelle la valeur sauvé dans Cnt2
#+DUP: (sans espace entre le + et DUP) additionne deux nombres binaires et fait un DUP (duplique l'objet du niveau 1)
#>$
"caractère "
SWAP&$
Transforme un binaire en chaîne de caractères (ex: #10 donne "16")

Fait un SWAP puis une concaténation de 2 chaîne de caractères
"/255"
&$
DISPROW1
#>CHR
CHR>$
$>grob
LAM Cnt2
#8 #* #2 #+

concaténation de 2 chaînes de caractères
Affiche la chaîne de caractères sur la 1ère ligne
Transforme un binaire en caractère (équivalant du CHR de l'User-RPL)
Transforme le caractère en chaîne de caractères (ex: A donne "A")
chaîne de caractères en grob de taille 1 (minifont) ($>GROB: taille 2)
Rappelle le contenu de Cnt2
opération en binaire: Cnt2*8+2
LAM Cnt1
#8 #* #2 #+
Repl
LOOP
LOOP
ABND
ClrDAsOK
;
@"


Repl équivalent de REPL du User-RPL (pour les grobs)
incrémente le compteur (le 2ème) si la valeur n-1 n'est pas atteinte (ici n=15)
incrémente le compteur (le 1er) si la valeur n-1 n'est pas atteinte (ici n=15)
détruit les variables locales.
fin du programme
marque de fin pour MASD
Maintenant tapez:
DUP
'Mnfgrob.S' STO

Pour compiler le programme tapez: 257 ATTACH (si la librairie 257 n'est pas déjà attachée)
Puis faites: [Shift droite]; [2] (Lib); [A] (MASD) (Le programme est alors compilé, s'il y a un message d'erreur, vérifiez qu'il n'y ait aucune faute).
Tapez: 'Mnfgrob' STO
(Conseil : recopier le contenu port 0 et du répertoire HOME dans le port 1 ou 2 pour sauvegarder au cas ou une instruction aurait été oublié)
Tapez: [A] (CRTAB) ou CRTABMNF (le programme s'exécute!)
S'il ne s'exécute pas comme il faut, vérifiez le code source (sauvé sous Mnfgrob.S) ou télécharger le code source.

Je décline toutes responsabilités en cas de perte de données, plantages...
Vous trouverez l'équivalant de ce programme en User RPL dans la section RPL.
Télécharger la version compilé et le code source: Mnfgrob

J'ai essayé d'être clair et rapide, si vous avez quelques difficultés sur le programme précédent n'hésitez pas à envoyer un e-mail

(Il existe de la documentation en anglais sur http://www.hpcalc.org dans la section programmation)
Si vous souhaitez participer à la construction de cette page vous pouvez poster vos exemples sur le forum.

Sommaire



Commande DoInputForm (équivalent de la commande INFORM du RPL, mais en mieux ;) )
 


La commande DoInputForm est plus complexe à utiliser que son équivalent du RPL, mais elle permet de créer des formulaires plus complexe et plus rapide. En RPL il n'y a que le champ texte, alors qu'en RPL système il y a 4 types de champs différents.
En exemple nous verrons le code source d'un convertisseur euro/franc

Bon accrochez vous bien, c'est parti...



La commande DoInputForm nécessite les arguments suivants :
Label1
...
Labeln
Champ1
...
Champn
#nombre de labels
#nombre de Champs
MessageHandler
"titre"
paramètres du label


paramètres du champ




Normalement 'DROPFALSE
Titre affiché

Paramètres du Label

Il y a 3 arguments pour chaque label qui sont :
"Label"
#position_x : coordonné en x
#position_y : coordonné en y

la position 0,0 correspond au coin en haut à gauche de l'écran.


Paramètres du champ

Il y 13 arguments pour définir chaque champ :
MessageHandler Normalement 'DROPFALSE
#position_x : coordonné en x
#position_y : coordonné en y (normalement position_y du label + 2)
#Longueur : longueur du champ
#Hauteur : hauteur du champ
#Type_de_champ : nombre indiquant le type (listes, case à cocher, champ texte...)
#Types_autorisés : Listes des types autorisés
Decompile
"Message d'aide" : texte d'aide apparaissant en bas
Donnée de la liste de choix
ChooseDecompile
ResetValue
InitValue

MessageHandler : Le gestionnaire de messages est normalement à 'DROPFALSE, ce qui signifie que le programme ne manipule pas ce que l'utilisateur entre.
[ en cours ...]

Type de champ

il y a quatre genres de champs:
Champ de donnée : l'utilisateur entre du texte,
Champ de donnée étendu : qui autorise l'utilisateur à écrire ou à choisir une variable,
Liste de choix : ensemble prédéterminé de valeurs,
Case à cocher :

1 texte : DF (Data Field) ou EDF (Extended Data Field)
3 Algébrique:
12 Liste de choix (LF : List Field)
32 Case à cocher (CF : Check Field)

Exemple:
"!NO CODE
!RPL
::
;
@"
Enregistrer le code source (EuroFr.s par exemple, je mets un .s pour faire la différence entre version compilé ou non, le programme exécutable sera appelé EuroFr)

Pour compiler le programme tapez: 257 ATTACH (si la librairie 257 n'est pas déjà attachée)
Puis faites: [Shift droite]; [2] (Lib); [A] (MASD) (Le programme est alors compilé, s'il y a un message d'erreur, vérifiez qu'il n'y ait aucune faute).
Tapez: 'EuroFr' STO
(Conseil : recopier le contenu port 0 et du répertoire HOME dans le port 1 ou 2 pour sauvegarder au cas ou une instruction aurait été oublié)
Tapez: Lancer le programme EuroFr.
S'il ne s'exécute pas comme il faut, vérifiez le code source (sauvé sous EuroFr.s ou télécharger le code source).

Je décline toutes responsabilités en cas de perte de données, plantages...
Télécharger la version compilé et le code source:

Sommaire