hex: nombre en hexadécimal (base 16)
dec: nombre en décimal (base 10) grob: objet graphique ![]() | |
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). | |
| |
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 'Mnf ![]() 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: 'Mnf ![]() (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 Mnf ![]() 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: Mnf ![]() 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. | |
| |
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: | |