Obligement - L'Amiga au maximum

Vendredi 06 juin 2025 - 12:27  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in English


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : Assembleur - XPK et ARexx : l'interrogation d'ARexx
(Article écrit par Frédéric Delacroix et extrait d'Amiga News - janvier 1997)


Dans notre exemple d'écriture d'une bibliothèque ARexx, nous en sommes arrivés à la disposition de la fonction d'interrogation d'ARexx. Je vais maintenant vous décrire dans les détails le travail de cette fonction, et nous aborderons également la programmation de XPK.

En avant !

Nous en étions au point où ARexx appelle la fonction d'interrogation à la recherche d'une fonction qu'il cherche à localiser. Le registre A0 contient alors une structure RexxMsg telle qu'on l'a vue le mois dernier. Dans cette structure (qui n'est pas à considérer comme une structure Message : surtout pas de GetMsg()), le champ le plus important dans notre cas est le premier argument : rm_Args (aussi appelé Arg0). Il contient le nom de la fonction qu'ARexx recherche, sous forme d'une ArgString. Notre fonction doit donc comparer cet argument avec les noms de fonctions de notre bibliothèque.

A partir de là, de deux choses l'une : ou la fonction est connue, ou elle ne l'est pas. Dans les deux cas, il ne faudra surtout pas modifier la structure RexxMsg ni les Argstrings associés : elles serviront à d'autres appels de bibliothèques de la part d'ARexx. Si la fonction demandée est inconnue, on doit retourner 1 en D0 (ce qui correspond à l'erreur "Program not found"). ARexx sait alors qu'il doit continuer sa recherche. Si, par contre, la fonction est connue, il nous faut d'exécuter. Pour cela, les différents arguments passés à la fonction se trouve dans les autres champs du tableau d'Argstrings rm_Args, le nombre d'arguments donnés étant dans l'octet de poids faible de rm_Action (soit dans l'octet rm_Action+3). Ce nombre inclut les arguments passés en tant que valeurs par défaut, auquel cas le pointeur correspondant est nul, mais n'inclut pas Arg0 (le nom de la fonction).

Une fois la fonction exécutée, on doit retourner 0 en D0 (ce qui indique l'absence d'erreur) et le résultat sous forme d'ArgString en A1. C'est du moins ce que dit la doc officielle, il semble que ce soit plutôt en A0. Soyons prudent : à la fois en A0 et A1. La création d'une telle ArgString se fait très simplement grâce à la fonction CreateArgsting() de la rexxsyslib.library et consorts.

Si une erreur s'est produite, le code de l'erreur est à retourner en D0 (par exemple : 17=nombre d'arguments incorrects), mais il ne faut pas renvoyer de résultat. N'oubliez pas non plus que le code 1 est réservé à un usage particulier.

L'exemple

Dans notre exemple, tout ceci est accompli en scrutant une table, de façon à rendre le programme très extensible, même si dans la version que je vous présente ici, seules les fonctions PackFile() et UnpackFile() sont présentes. La documentation est au format "autodoc", de sorte que vous pourrez, grâce à l'utilitaire "autodoc" (fourni sur le CD Developer Kit), extraire la dite documentation du source, et éventuellement la convertir au format AmigaGuide grâce à AD2AG :

autodoc -t8 -s -l RexxXPK.s >rexxxpk.doc
ad2ag rexxxpk.doc

Je vous laisse donc avec la fin du programme entamé le mois dernier qu'il suffit de taper à la suite. Examinez également les prochaines disquettes de la collection DPAT, dans lesquelles vous retrouverez cette bibliothèque rexxxpk.library (ou une version améliorée) et quelques scripts ARexx utiles (comme un script permettant d'ouvrir et sauvegarder des fichiers compressés avec XPK dans l'éditeur CygnusEd 3.5).

En attendant, cet exemple-ci devrait vous permettre de tester la bibliothèque. Le mois prochain, programmation de XPK avec un autre exemple.

Assembleur
Assembleur
Assembleur
Assembleur


[Retour en haut] / [Retour aux articles] [Article précédent] / [Article suivant]