Obligement - L'Amiga au maximum

Dimanche 19 novembre 2017 - 05:46  

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 - cours n°1 (recommendations et modifications de commandes AmigaDOS)
(Article écrit par Johan Gerday - janvier 2000)


Cours n°1

Recommendations (importants).
Modifications de commandes AmigaDOS.

Recommendations

Pour pouvoir utiliser les scripts ARexx, vous devez obligatoirement lancer l'interpréteur RexxMast, même si le script est compilé.

Deux solutions existent :

1) Déplacez le programme RexxMast et son icône dans le répertoire WBStartup.
2) Éditez le fichier s:startup-sequence et s:user-startup

Pour la solution 2) procédez comme suit :

Après la commande "Resident >nil: Execute PURE" ajoutez "Resident >nil: Sys:System/RexxMast PURE".
Créez un nouveau répertoire, par exemple "sources-ARexx" dans votre disquette ou partition système et remplacez "assign >nil: rexx: sys:s" par "assign >nil: rexx: sys:arexx-sources" pour éviter que le répertoire s: où se trouvent certaines configurations de logiciels et sauvegardes de scores pour certains jeux ne deviennent un vrai foutoir. Sauvez le fichier.

Dans le fichier s:user-startup, ajoutez : "Run <>nil: RexxMast" qui est plus rapide (réside en mémoire) et est lancé à chaque démarrage de l'Amiga.

ARexx possède des bibliothèques de fonctions très utiles (l'équivalent des includes pour d'autres langages). Celles-ci peuvent être chargées à chaque lancement de l'Amiga. C'est un gain de temps lors de l'exécution des programmes. Pour les charger, éditez votre fichier user-startup et insérez ce qui suit à la fin du fichier.

RXLib >nil: rexxsupport.library 0,-30 ; (0=priorité -30=offset) l'offset varie avec certaines bibliothèques

RXLib >nil: rexxreqtools.library -5,-30 ; Passerelle pour l'utilisation de reqtools.library © Nico François (un Belge) rexxreqtools.library © Rafaël d'Halleyweyn (encore un Belge).

Les bibliothèques doivent obligatoirement se trouver dans votre répertoire Libs:.

J'ai utilisé ceci car j'utilise fréquement ce langage, ce n'est pas le meilleur, ce n'est pas hyper rapide, mais c'est utile. On en a marre de taper des lignes de commandes dans un Shell ? Solution : on prend un éditeur de texte et on crée un programme ARexx qui le fait pour nous.

Attention : un programme ARexx doit toujours commencer par une ligne de commentaire munie d'un slach et d'un astérisque, en voici un exemple :

/* Commentaire */

Assez de recommendations, utilisons donc ce langage.

Modifications de commandes AmigaDOS

On va utiliser la commande List all.

ARexx possède la commande
  • address command "commande à exécuter". /* Lance une commande AmigaDOS */
  • arg variable. /* Récupération d'argument dans un Shell */
  • parse arg variable /* Place l'argument dans la variable */
Version n°1 :

/* Full dir */
arg argument_utilisateur
parse var argument_utilisateur
address command "list all "argument_utilisateur
/* Fin du programme (petit mais ça fonctionne) */
exit

Sauvez ce script dans (c:fdir), ouvrez un Shell et tapez "protect c:fdir +es"
(exécutable et script)

Ensuite, tapez :
fdir (listage complet du répertoire courant)
fdir c: (listage complet du répertoire c:)

Quittez le Shell, allez dans le répertoire c: et double-cliquez fdir, vous remarquerez qu'une fenêtre de type Shell s'ouvre pour inscrire les données fournies par la commande AmigaDOS List.

Nous allons à présent utiliser plusieurs options de la commande List à l'aide d'un menu, vous allez voir que ce n'est pas plus compliqué que le Basic, c'est même plus simple.

Version n°2 :

/***************************************************************
 Full dir 2
 (On reprend les deux première lignes du programme précédent)
****************************************************************/

arg argument_utilisateur
parse var argument_utilisateur

/**************************************************************************
 Création du menu :
 - On utilise call open() (ouverture d'une fenêtre ou d'un fichier).
 - select, when, otherwise, return (If Then Else, en plus fiable, eh oui, If
    Then Else est aussi dans le langage ARexx).
 - writeln() (Que vois-je !, ne serait-ce point une fonction utilisée en
    Pascal ?, Ah que Houi comme dirait l'autre).
 - readch() (et de deux - fonction Pascal).
 - call (Appel d'une fonction).
 - close() (fermeture d'une fenêtre ou d'un fichier).
 - une virgule indique que l'on continue sur la ligne suivante.
****************************************************************************/

call open(stdout,"con:0/14/640/128/ Fdir 2 :, version du fanzine Obligement/Close/Wait")

/****************************************************************************
 Explications :
 stdout         - variable (standard Output), stderr = console d'erreur ARexx.
 con:           - Type de fenêtre (type Shell - Raw: peut aussi être utilisé).
 0/14/640/128   -   0 bord gauche de la fenêtre, si on met 20 on déplace le
  bord gauche de 20 pixels vers la droite ; 14 descend la fenêtre de 14 pixels ;
  640 Longueur de la fenêtre en pixels ; 128 Largeur de la fenêtre en pixels.
 Fdir 2 : version du fanzine Obligement - Titre de la fenêtre.
 L'option Close - Ajoute un gadget de fermeture à la fenêtre.
 L'option Wait  - Ne ferme la fenêtre que lorsque l'utilisateur clique le gadget
  de fermeture.
****************************************************************************/

call writeln(stdout,"1. All - Toutes les options")
call writeln(stdout,"2. NoDates - Pas de date")
call writeln(stdout,"3. NoHead - Pas d'entête")
call writeln(stdout,"4. Quick - Uniquements les noms de fichiers")
call writeln(stdout,"5. Block - Taille en block pas en octets")

/****************************************************************************
 Explication :
 writeln(stdout,"Texte")
 stdout - variable utilisée lors de l'ouverture de notre fenêtre (call
  open(variable,"etc.").
 "Texte" - texte à afficher dans la fenêtre.
****************************************************************************/

esc="1b"x       /* "1b"x =  caractère 1b en hexadécimal */
cls=esc||"63"x 

/*************************************************************
  cls=esc||"63"x
  Efface le contenu d'une fenêtre (|| = concaténation) donc "1b"x et "63"x
**************************************************************/

call open(stderr,"con:0/175/250/56/ Tapez le chiffre de l'option désirée : ")
option=readch(stderr,1) /* Lire un caractère dans la fenêtre stderr */
call close(stderr)      /* Fermer la fenêtre stderr - on en a plus besoin */

/**************************************
 Routines menu :
 nous allons devoir créer des sous-routines (type goto en basic) vous allez voir
  c'est simple.
***************************************/
select              /* Activation de la sélection */
when option=1 then
call list1          /* Si on à choisi l'option 1 goto list1 */
when option=2 then
call list2
when option=3 then
call list3
when option=4 then
call list4
when option=5 then
call list5
otherwise
call erreur         /* Option inconnue, faute de frappe (une lettre) */
return              /* Retourne le résultat option                     */
/* Les sous-routines (n'oubliez pas les :) */
list1:
call writeln(stdout,cls)
address command "c:list all "argument_utilisateur
exit
list2:
call writeln(stdout,cls)
address command "c:list nodates "argument_utilisateur
exit
list3:
call writeln(stdout,cls)
address command "c:list nohead "argument_utilisateur
exit
list4:
call writeln(stdout,cls)
address command "c:list Quick "argument_utilisateur
exit
list5:
call writeln(stdout,cls)
address command "c:list block "argument_utilisateur
exit

Dans la finale nous utiliserons la bibliothèque de fonction ARexx rexxreqtools.library pour une requête d'information, une interface graphique et la sélection du répertoire (du tout à la souris de Mister Miga).

Et voilà, la modification de commandes AmigaDOS n'est pas plus compliquée que ça. De plus, le script est court et efficace on peut mettre dir aux oubliettes.

Votre première leçon s'achève ici, Oh non ! Ben si !


[Retour en haut] / [Retour aux articles] [Article suivant]