Suivez-nous sur X

|
|
|
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
|
|
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
|
|
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
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
En pratique : AmigaDOS - Créer un fichier script
(Article écrit par Xavier Leclercq et extrait d'Amiga News - décembre 1993)
|
|
Qu'est donc au juste un fichier script ?
La plupart d'entre vous, qui êtes des familiers de l'Amiga, savent qu'un fichier script est exécuté
à chaque initialisation ("reset") ou mise sous tension de votre Amiga. En effet, dans votre répertoire S:
se trouve un fichier script très important et qui se nomme "startup-sequence". Des versions du Workbench
récentes (2.0 et 3.0) peuvent contenir un fichier script additionnel qui porte le nom de "shell-startup".
On retrouve ce genre de fichier sous d'autres environnements tel que, par exemple. le fichier script
"autoexec.bat" sous MS-DOS.
Techniquement, un fichier script est un fichier texte contenant une ou plusieurs commandes AmigaDOS qui
sont exécutées en séquence, les unes après les autres. Ceci est surtout très utile pour répéter des tâches courantes.
Laissez-moi vous donnez un exemple :
Je suis, par exemple, un professeur. L'ordinateur que j'utilise à l'école doit me servir pour calculer les points
de mes élèves. Le programme est installé sur le disque dur. Mais je ne suis pas le seul à employer cet ordinateur car
mes étudiants travaillent également dessus. Il y a donc un mot de passe qui protège le programme. Mais par mesure
de précaution, et au cas où ce mot de passe ne serait plus secret, je copie régulièrement le fichier contenant les
points de chaque semaine sur disquette. Pour ce faire, il me suffit de taper la commande AmigaDOS suivante :
copy dh0:LivrePoints/DeuxSem df0:PointsSemaines
|
Je peux ainsi mettre la disquette de sauvegarde en sécurité dans mon bureau. Mais comme il s'agit d'une procédure
semestrielle et donc répétitive, il est plus agréable de taper quelque chose comme "SauvePoints" plutôt que la ligne
complète comme déjà présentée ci-dessus... D'où bien entendu la création d'un fichier script contenant :
copy dh0:LivrePoints/DeuxSem df0:PointsSemaines
|
...comme seule et unique ligne. Le nom du script est "SauvePoints". Pour être directement exécuté, il suffit de
lui fixer l'attribut "S" signifiant "fichier script" en tapant la ligne suivante dans le Shell :
Protect dh0:c/SauvePoints S
|
Cet exemple, très simple, démontre l'avantage d'un fichier script par rapport à l'encodage direct de commandes AmigaDOS.
Maintenant, comment écrire un fichier script ?
En réalité ce n'est vraiment pas difficile. Un fichier script comme expliqué ci-dessus est une suite de commandes
AmigaDOS qui seront exécutées en séquence. On peut en éditer un avec un simple éditeur de texte.
Voici un exemple de fichier script, c'est-à-dire tout bêtement une partie de ma startup-sequence :
VDC o p v
; $VER: startup-sequence 39.9 (9.8.92)
C:SetPatch QUIET
C:Version >NIL:
C:AddBuffers >NIL: DF0: 15
FailAt 21
C:MakeDir RAM:T RAM:Clipboards RAM:ENV RAM:ENV/Sys
C:Copy >NIL: ENVARC: RAM:ENV ALL NOREQ
Resident >NIL: C:Assign PURE
Resident >NIL: C:Execute PURE
Assign >NIL: ENV: RAM:ENV
Assign >NIL: T: RAM:T
Assign >NIL: CLIPS: RAM:Clipboards
BindDrivers
C:Mount >NIL: DEVS:DOSDrivers/?(#?.info)
SetEnv Workbench $Workbench
SetEnv Kickstart $Kickstart
UnSet Workbench
UnSet Kickstart
C:IPrefs
C:ConClip
Path >NIL: RAM: C: SYS:Utilities SYS:Rexxc SYS:System S: SYS:WBStartup SYS:Tools SYS:Tools/Commodities
IF EXISTS S:User-Startup
Execute S:User-Startup
EndIF
Resident Execute REMOVE
Resident Assign REMOVE
C:LoadWB
EndCli >NIL:
|
Le premier mot de chaque ligne est une commande AmigaDOS (excepté la ligne de commentaires débutant par un point
virgule "; $VER: startup-sequence 39.9 (9.8.92)"). Il y en a plusieurs qui sont très courantes :
- Makedir (pour créer un répertoire).
- Copy (pour copier un fichier).
- LoadWB (pour charger le Workbench).
Nous pouvons aussi distinguer des commandes qui sont spécifiques au fichier script. Ces commandes sont
Failat, If et Endif. Nous y reviendrons dans un prochain article. A ce stade il faut bien vous dire qu'il
n'y a rien de plus facile que d'écrire un fichier script si vous maîtrisez chaque commande ligne à
ligne par encodage direct.
Lorsque vous démarrez votre Amiga, ce dernier cherchera automatiquement la
startup-sequence. Il lit le fichier script et l'exécute, ligne par ligne. Si une ligne est incorrectement écrite
ou la commande n'existe pas, l'ordinateur arrête sa lecture et vous fait connaître la nature du problème à l'aide
d'un message d'erreur. S'il s'agit d'une "requête"(boîte de dialogue entre l'Amiga et vous) et si vous
parvenez à résoudre le problème, la lecture reprendra son cours là où elle avait posé problème.
Voyons la ligne "Resident >NIL: C:Assign PURE". Ce qui ne provoque en fait aucune action "sur le champ".
AmigaDOS à chaque commande recherche où celle-ci se trouve. Il peut la connaître d'office, c'est-à-dire
quand elle est en mémoire et donc toujours à la disposition de l'Amiga. Il s'agit du rôle de la commande
Resident. "Assign" est maintenant une commande connue qui peut être exécutée de suite dès la prochaine
sollicitation.
Un mot sur ">NIL". Le caractère ">" signifie que les messages de sorties que vous pouvez voir
sur l'écran de votre moniteur sont "dirigées vers...". L'endroit où les informations sont
dirigées est spécifié directement après le caractère ">" et il s'agit dans ce cas de "NIL:".
"NIL:" agit comme quelque chose qui aspire tout sans rien rejeter. Les sorties sont redirigées sur
un périphérique logique qui ne rend rien, qui ne fait rien. Si vous supprimez le "EndCli >NIL:" vous
ne pourrez jamais terminer le processus courant, c'est-à-dire la fenêtre Shell actuelle et donc voir
s'afficher l'écran du Workbench (qui avait été chargé par LoadWB).
Bref, pour revenir à la commande "Resident", pourquoi gaspiller de la mémoire pour charger des
commandes AmigaDOS ? La réponse est toute simple : pour accélérer la procédure de recherche et d'exécution.
|