Obligement - L'Amiga au maximum

Samedi 31 mai 2025 - 16:41  

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 : GFA Basic - arp.library
(Article écrit par Dominique Lorre et extrait d'Amiga News Tech - juin 1990)


La arp.library

Qui ne connaît pas aujourd'hui la fameuse arp.library et son non moins célèbre sélectionneur de fichiers ? En tout cas cette bibliothèque de fonctions a été utilisée par de nombreux développeurs et dans des langages tels que le C, l'assembleur, le Modula II, l'AmigaBASIC, l'ARexx et aussi le HiSoft Basic. A cette liste manquait le GFA Basic. Cela est certainement dû à la relative nouveauté de ce langage qui a beaucoup de peine à s'imposer sur Amiga. Cependant, ce langage possède toutes les commandes nécessaires à l'interfaçage de la bibliothèque ARP.

L'utilisation de l'ARP en GFA Basic apporte-t-elle grand-chose à ce langage ? Oui, si l'on considère que celle-ci offre de nombreuses fonctions dont la reconnaissance des caractères génériques, l'évaluation d'une ligne de commande et bien sûr son fameux sélectionneur de fichiers.

Un sélectionneur de fichiers

Mais, me direz-vous, le GFA Basic possède son propre sélectionneur de fichiers et il est inutile d'appeler celui de l'ARP. Je répondrai que le sélectionneur de l'ARP est avantageux à plus d'un titre. Sa première qualité vient de sa renommée et de sa présence dans de nombreux programmes, qui font que ce sélectionneur est connu de beaucoup d'utilisateurs d'Amiga. En second lieu, celui-ci est âgé de plusieurs années : il descend du vieux sélectionneur de Charlie Heath visible par exemple dans le programme PerfectSound, qui l'a constamment amélioré depuis. De cette ancienneté découlent naturellement efficacité, rapidité et facilité d'emploi.

On peut affirmer sans crainte qu'il s'agit du sélectionneur de fichiers le plus efficace jamais créé sur Amiga (celui d'AZ est un concurrent valable à qui j'attribuerai la palme de l'esthétisme). Efficace car le programmeur peut y ajouter ses propres gadgets et redéfinir la fenêtre d'affichage.

Mon but n'est pas de critiquer le sélectionneur du GFA Basic, qui j'en suis sûr se bonifiera avec le temps. Le premier sélectionneur de Charlie Heath était loin d'être convivial, mais pour l'époque il était exceptionnel car la plupart des logiciels n'offraient pas encore de liste de fichiers (chargez un fichier avec NotePad, vous comprendrez). Non, le seul défaut grave de ce sélectionneur est un bogue faisant que 48 octets ne sont pas rendus au système à la fin de son appel. Ceci a entraîné de nombreuses erreurs "aléatoires" dans plusieurs programmes particulièrement gros.

C'est une raison suffisante pour utiliser la arp.library. La version utilisée ici de l'ARP est la 1.3, numéro 39.1. Il est absolument garanti que le programme ci-dessous ne fonctionnera pas avec une version inférieure. Et j'ose espérer qu'il fonctionnera avec les versions postérieures. Le fichier arp.library doit être contenu dans le répertoire Libs: et son numéro de version peut être obtenu avec la commande du CLI "version arp.library".

Au cas où vous n'auriez pas ce fichier sous la main, je vous conseillerai premièrement de faire le tour de vos disquettes, un grand nombre de logiciels utilisant la arp.library (qui est domaine public, je le rappelle), il existe une chance non négligeable pour que vous retrouviez ce fichier dans le répertoire Libs: de l'une d'entre elles. Sinon, les moyens possibles de se la procurer sont les disquettes Fish, ou d'autres collections du domaine public, et aussi la plupart des serveurs proposant du téléchargement sur Amiga. Vérifiez bien qu'il s'agit de la version 1.3.

Pour ce qui est de la documentation, celle-ci existe en plusieurs parties. Comme le projet ARP comprend également des commandes remplaçant celles du CLI, la partie de la documentation qui y fait allusion ne vous intéressera pas. Ce qu'il vous faudra, c'est le fichier arppro13.zoo qui contient l'ensemble des informations utiles aux développeurs. Ce fichier (en anglais...) compressé avec Zoo vous renseignera sur l'utilisation de chacune des fonctions de la bibliothèque, vous permettra de retrouver les décalages de ces fonctions (arp_proto.h) et contient un accord de licence obligatoire pour les développeurs voulant diffuser légalement des programmes utilisant l'ARP. Je devais au moins vous prévenir.

Pour ce qui est de la partie technique, je me suis enfin décidé à documenter correctement mes programmes, ce qui devrait vous satisfaire...

Le listing

Ce programme tente d'illustrer l'utilisation de la arp.library avec le GFA Basic.

' Ouverture de la arp.library et initialisations
@initall
' appel du sélecteur de fichiers
resultat%=@filerequest(monfilereq%,"You know what?",WINDOW(5),172,30)
' le résultat est lu, si on a zéro, l'utilisateur a sélectionné Cancel
' ou il s'est produit une erreur lors de l'appel du sélecteur
' par exemple, une position incorrecte des coordonnées haut et gauche.
IF resultat%
  ' l'utilisateur a choisi un fichier. Son chemin se trouve dans fr_dir%
  ' et son nom dans fr_file%
  file$=CHAR{fr_file%}
  chemin$=CHAR{fr_dir%}
  PRINT "ok"
  PRINT "Fichier : ";file$
  PRINT "Chemin : ";chemin$
ELSE
  PRINT "Pas de sélection"
ENDIF
PRINT "Un bouton de la souris"
PRINT "Pour quitter le programme..."
REPEAT
UNTIL MOUSEK
@freeall
PROCEDURE initall
  ' Dimensionnement du tableau de registres pour l'instruction RCALL
  DIM regs%(15)
  ' Ouverture d'un écran séparé
  OPENS 1
  ' Ouverture d'une fenêtre
  OPENW #5
  ' Ouverture de la arp.library
  arpname$="arp.library"+CHR$(0)
  arpname%=V:arpname$
  arpbase%=OpenLibrary(arpname%,0)
  IF arpbase%=0
    PRINT "Impossible d'ouvrir la arp library"
    END
  ENDIF
  ' Allocation d'une structure FileRequest
  ' Celle-ci sera libérée par le CloseLibrary
  monfilereq%=@arpallocfreq
  IF monfilereq%=0
    PRINT "Erreur d'allocation de la structure FileRequest"
    ~CloseLibrary(arpbase%)
    END
  ENDIF
RETURN
PROCEDURE freeall
  ' Fermeture de la arp.library
  ' Cet appel libère également le (ou les) sélecteur(s) de fichiers
  ~CloseLibrary(arpbase%)
  CLOSEW #5
  CLOSES 1
RETURN
' Cette procédure permet d'accéder de manière simple aux
' différents éléments de la structure FileRequest
PROCEDURE filereqstruct(filereq%)
  ABSOLUTE fr_hail%,filereq%         ! titre
  ABSOLUTE fr_file%,filereq%+4       ! nom du fichier
  ABSOLUTE fr_dir%,filereq%+8        ! chemin du fichier
  ABSOLUTE fr_window%,filereq%+12    ! fenêtre
  ABSOLUTE fr_funcflagsl,filereq%+16 ! drapeaux
  ABSOLUTE fr_flags2,filereq%+17     ! autres drapeaux
  ABSOLUTE fr_function%,filereq%+18  ! fonction externe
  ABSOLUTE fr_leftedge&,filereq%+22  ! position gauche
  ABSOLUTE fr_topedge&,filereq%+24   ! position haut
RETURN
' Allocation d'une structure FileRequest
' l'adresse de la nouvelle structure est retournée dans
' le registre D0 (regs%(0))
FUNCTION arpallocfreq
  regs%(14)=arpbase%
  RCALL arpbase%-&H294,regs%()
  RETURN regs%(0)
ENDFUNC
' Appel du FileRequest
' titre$ : chaine de caractères affichée sur le sélecteur et sur l'écran
' fenetre% : adresse de la fenêtre où le sélecteur sera affiché
FUNCTION filerequest(filereq%,titre$,fenetre%,gauche&,haut&)
  ftitre$=titre$+CHR$(0)
  filereqstruct(filereq%)
  fr_hail%=V:ftitre$
  fr_window%=fenetre%
  fr_leftedge&=gauche&
  fr_topedge&=haut&
  regs%(14)=arpbase%
  regs%(8)=filereq%
  RCALL arpbase%-&H126,regs%()
  RETURN regs%(0)
ENDFUNC

Et voici le résultat :

GFA Basic

Merci à Guillaume Guittenit pour avoir retapé le code et proposé l'image du résultat !


[Retour en haut] / [Retour aux articles]