Obligement - L'Amiga au maximum

Lundi 24 juillet 2017 - 18:40  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

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

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


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


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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : ARexx - un afficheur d'images
(Article écrit par Réginald Bales et extrait d'Amiga News - novembre 1993)


Depuis l'arrivée du système 2.0, le langage interprété ARexx est fourni avec les machines, sans qu'il ne soit rien expliqué dans les docs. Ce langage n'en est pas moins intéressant, et l'apig.library lui ajoute une dimension nouvelle : l'accès direct aux fonctions d'Intuition, de la graphics.library, de l'asl.library, ainsi qu'à d'autres fonctions, comme l'utilisation aisée de l'iff.library...

A ce "BASIC orienté Shell", capable d'être un pont entre les applications munies d'un port ARexx, s'ajoutent maintenant des possibilités digne du C et de l'assembleur, toutes proportions gardées bien évidemment...

L'apig.library permet d'appeler la plupart des fonctions des bibliothèques citées précédemment, et retourne ainsi des pointeurs, manipule les structures du système avec une facilité magique. Bien évidemment, cela suppose de fournir des paramètres censés lors de l'utilisation des fonctions, et pour cela il vous faudra faire appel à des docs comme les différentes bibles/livres de l'Amiga, ou comme le préconise l'auteur, munissez-vous du ROM Kernel Manual. Mais à vouloir jouer à l'apprenti sorcier avec sa machine, ou plutôt l'apprenti programmeur, on risque de rencontrer quelques Gurus, eh oui, comme en assembleur... D'où l'intérêt de savoir ce que l'on fait. Mais quelle joie de donner quelques coups de Blitter dans des images chargées en l'espace de quelques lignes.

APIG est là, que ce soit pour un besoin pressant de diaporama spécifique à une application, ou bien pour commander un utilitaire ayant de nombreuses fonctions (LZ, compilateurs ou autres...) par une interface Intuition élaborée. Après ce tour d'horizon des possibilités du programme, passons à la pratique.

La pratique dans la joie d'APIG, ou comment jeter des sorts à son Amiga. La bibliothèque s'appelle comme ses consoeurs, à savoir par la commande Addlib(). Ensuite, une liste impressionnante de fonctions nouvelles sont disponibles : elles portent le même nom que les fonctions des bibliothèques, et admettent les mêmes paramètres, avec les restrictions précisées plus haut. Un exemple simple et classique :

a= OPENSCREEN (0,0,640,512,4,4,5, LACE+HIRES, CUSTOMSCREEN, scrtitle)

Cette fonction ouvre un écran haute résolution entrelacé (Hires Interlace) et renvoie dans la variable "a" le pointeur de l'écran, qui servira notamment à le fermer avec CLOSE-SCREEN(a). Le programmeur que vous êtes réagit vivement en demandant si des constantes telles que LACE, HIRES ou CUSTOMSCREEN doivent être définies avant de lancer la fonction. Que nenni ! Il suffit de faire un petit CALL SET_APIG_GLOBALS() pour initialiser toutes les constantes classiques du genre les drapeaux IDCMP, les LACE, PUBLICSCREEN, et autres MENUTOGGLE, dont regorgent les structures de données de l'Amiga. Voilà que vous considérez ARexx d'un tout autre oeil... Où l'on tombe dans la facilité, en créant un script qui n'a rien à envier aux autres afficheurs d'images IFF...

Afficheur d'images IFF

Voici un petit listing qui vous demande à l'aide d'une fenêtre de requête le nom du fichier graphique IFF que vous désirez afficher. Une fois la dite image chargée, on attend de votre part que vous cliquiez le bouton gauche de votre souris. Après quoi on rendra la main au Shell. Et ce en quelques lignes...

Listing ASCII nommé MontreIFF.rexx

/* The ANews ARexxoïde IFF Shower Copyright (c) 2024 */

addlib("apig.library",0,-30,0)
addlib("rexxsupport.library",0,-30,0)
ifeq= ALLOCFILEREQUEST()
  /* En deux lignes une requête, résultat*/
file=REQUESTFILE(freq)  /* dans la variable file */
if file='0000 0000'x then
  exit
else
scr=0
picture=loadiff(file)
  if picture='0000 0000'x then
    do
      say "Fichier introuvable ou non IFF."
      exit
    end
  larg=iffwidth(picture)
  haut=iffheight(picture)
  prof=iffdepth(picture)
  view=iffviewmode(picture)
  ncol=iffcolors(picture)
  ctab=iffeolortab(picture)
CUSTOM=c2d('000F'x)
scr=openscreen(0,0,larg,haut,prof,1,0,view,CUSTOM,0)  /* écran adapté à l'IFF */
scrrp=getscreenrastport(scr)
useiffcolor(picture,scr)
bltbitmaprastport(picture,0,0,scrrp,0,0,larg,haut,c2d('00c0'x))
  /* On blitte l'image par le RastPort obtenu plus haut et mIraCle ! */
address command(lmb)
  /* Exécute un test du bouton gauche de la souris, ce programme "lmb" étant dans C: (voir plus loin). */
freebitmap(picture)
closescreen(scr)
  /* Formalités d'adieu que chacun connait.*/
call FREEFILEREQUEST(freq)
exit

Pour le test souris, j'ai préféré utiliser une commande Shell personnelle, LMB, placée dans le répertoire C, et qui ne me prend que 96 octets. Il vous suffit d'assembler le programme suivant :

loop:   btst #6,$bfe001
        bey end
        jmploop
end:    rts

Muni de ce LMB dans le répertoire C, vous disposez d'un script d'une quarantaine de lignes aussi efficace qu'un programme de 8 ko. Vous pouvez très facilement le rendre compatible avec les IFF compactés avec PowerPacker, en vous servant de la commande CLI Decrunch fournie avec le programme.

Moralité : c'est un PPShow modulable selon vos besoins... Ceci n'est qu'un exemple des possibilités offertes par l'apig.library, et vous lui trouverez un nouvel usage à chaque script ARexx que vous créerez.

A noter qu'une incompatibilité existe avec certaines fonctions de la rexxarp.library, donc si vous utilisez cette dernière dans un programme, mieux vaudra faire un REMLIB avec l'apig.library avant d'appeler vos fonctions RexxARP. Où la chronique de l'apig.library touche à sa fin, avec l'inévitable et impitoyable verdict. Certes, ce n'est pas un utilitaire pour les débutants, mais il simplifie bien des choses.

Le paquetage est un véritable égout : y sont déversés des listings, des docs, des IFF, des bibliothèques, le tout en un seul répertoire, où il est difficile de se repérer parmi pas moins de 77 fichiers...

Fort heureusement, les listings sont bien commentés, et les docs en anglais (évidemment), se laissent lire sans trop avoir besoin du dico anglais/français.

L'auteur, Ronnie E. Kelly, qui a le mérite d'avoir codé son oeuvre en assembleur, n'a pas pour autant fait gaffe à un détail : la plupart des listings utilisent des fonctions de la rexxsupport.library bien que cette dernière n'y soit pas appelée... D'où le message d'erreur qui vous parvient quand vous voulez interpréter ces listings. L'auteur a sûrement lancé dans sa Startup-Sequence un script utilisant la rexxsupport.library, ce qui lui cachait cette défaillance (nul n'est parfait). Une fois cette bibliothèque "Addlibée" par un petit script, vous pourrez vous servir des programmes exemples. Mises à part ces quelques peccadilles, APIG y'a bon ! Je ne saurai trop vous conseiller de vous procurer la chose (disquette CAM 624h ou Fish 634).


[Retour en haut] / [Retour aux articles]