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
|
|
|
|
Programmation : C - passer MSH de la version 1.5 à la 1.6
(Article écrit par Squonk et extrait d'Amiga News - février 1991)
|
|
MessyFileSystem, alias MSH, est un programme
qui permet le reconnaître des disquettes PC. Il se trouve sur la disquette
Fred Fish 327.
Comment fonctionne donc ce programme ?
Eh bien, comme devraient l'être tous les programmes de transfert, il est pratiquement transparent pour
l'utilisateur. Oui, oui, vous insérez une disquette MS-DOS dans un lecteur de l'Amiga et c'est tout.
Bon, il faut quand même taper dans un Shell "mount MSH:" avant et préciser que vous écrivez sur le volume
"MSH:".
Mais vous pouvez continuer à utiliser la commande "copy" ou "dir" d'AmigaOS, ou bien votre éditeur
favoris pour lire ou écrire un fichier sur cette disquette. Impossible ! Mais si, toujours grâce a l'Amiga.
En fait, comme vous l'avez sûrement déjà remarqué, l'Amiga est une machine entièrement configurable,
l'imprimante, les disques durs, etc. tout est paramétrable. Vous êtes-vous posés déjà la question de
savoir comment faisait votre bécane pour exécuter une commande du type "copy toto df0:" ?
Le CLI (c'est aussi valable pour le Workbench) commence par analyser votre commande, qui est reconnue
à l'aide de mots-clés ou par rapport à la position de l'icône sur l'écran, commande qui est traduite en
un message DOS indépendant du périphérique sur lequel vous travaillez. Il peut s'agir à ce niveau
d'une fenêtre CON:, de l'imprimante PRT:, d'un modem sur SER:, d'un disque dur DH0:...
Le message DOS est transmis à une tâche appelée "file system" (système de fichiers) qui elle dépend du type de périphérique.
Sur des supports de stockage de masse comme un disque dur ou une disquette, c'est cette couche qui est chargée
de gérer l'organisation du support en fichiers, répertoires, etc.
Si on continue à explorer le fonctionnement, on s'aperçoit que la commande envoyée plus haut est transformée
en une série de messages d'entrée-sortie (IORequests) qui sont des ordres de commandes à exécuter.
Ces requêtes d'assez bas niveau ("écrire le tampon fourni de l'adresse 300000 à 310000 du périphérique")
sont alors prises en compte par un gestionnaire de périphérique (pilote) qui va enfin aller "titiller"
les octets sur le disque.
En fait, il peut encore y avoir une autre couche dite de "ressource" qui est encore une autre tâche chargée
de régler les contentieux d'accès à des ressources matérielles unique (le CIA A par exemple). En résumé il y a :
- AmigaOS (CLI ou Workbench) qui analyse la commande.
- Le système de fichiers qui gère l'organisation en fichiers.
- Le périphérique logique qui gère un groupe de périphériques donné.
- La ressource ("resource") qui empêche l'accès simultané au même registre matériel.
Ce qui est remarquable, c'est que le passage d'une couche à l'autre est réalisé par des messages et
rend donc les divers éléments complètement indépendants l'un de l'autre (pas d'appel direct comme sur
les bons vieux PC). Ensuite, on s'aperçoit que le choix des divers éléments (système de fichiers et périphérique logique)
est fixé par l'utilisateur à l'aide de la fameuse liste de montage ("Mountlist") !
Après cette explication, je peux dire que MSH est en fait un ensemble de programmes comprenant :
- Un système de fichiers (MessyFileSystem) qui émule MS-DOS.
- Un périphérique logique (messydisk.device) qui écrit des secteurs au format IBM.
- Divers utilitaires qui facilitent la vie (commande de formatage "messyfmt", d'inhibition des erreurs de
contrôle "ignore", d'assassinat de MSH "die").
- D'une entrée pour liste de montage à installer chez vous.
Comme précisé ci-dessus, il est possible de mélanger les couches purement Amiga et les divers programmes MSH
pour obtenir un système de fichiers Amiga avec formatage MS-DOS, une gestion MS-DOS avec un formatage Amiga,
voire une gestion MS-DOS avec un formatage MS-DOS...
Pour installer MSH, il faut :
- Copier "MessyFileSystem" dans votre répertoire "L".
- Copier "messydisk.device" dans votre répertoire "Devs".
- Copier les utilitaires "messyfmt", "ignore" et "die" dans votre répertoire "C".
- Recopier l'entrée "MSH:" (ou "MSI", ou autre) dans votre liste de montage "Mountlist".
- Insérer "mount MSH:" dans votre "startup-sequence" si vous désirez avoir MSH: en permanence.
Version 1.6
Si vous disposez des fichiers exécutables, tout va bien, Si comme moi, vous disposez de deux versions,
la 1.5 qui est complète avec les sources, les docs et les exécutables, et la version 1.6 où là je
ne dispose que d'un fichier source qui indique les modifications à effectuer dans la version 1.5 pour
obtenir la version 1.6 (format "RCS"), y'a du boulot !
Premier problème, la génération des sources 1.6. Comme ce n'est pas franchement rigolo de faire les correctifs ("patches" en
anglais) à la main surtout quand on a un poil dedans, j'ai écrit un bout de code qui fait le maximum. Il suffit de
l'appeler "patch" et de le nourrir avec :
patch <répertoire version 1.5> <fichier de patch> <répertoire 1.6>
|
Deuxième problème, la compilation. Un fichier "makefile" pour Aztec 3.6 est fourni. Question dans l'assistance :
c'est quoi un "mecfile" ? Réponse de l'intervenant : il s'agit d'un fichier ASCII décrivant la manière de mettre
à jour un fichier qui dépend d'autre fichiers. Typiquement, un programme, constitué de modules objets liés ensemble,
provenant eux-mêmes de fichiers source après compilation, les sources pouvant eux aussi dépendre de fichiers inclus.
La méthode consiste à décrire les dépendances en donnant pour chaque fichier les fichiers qui, s'ils sont modifiés,
doivent entraîner la regénération de ce fichier. Le procédé de reconstruction est décrit par la ligne suivante qui
commence par un <tab>. Ajouter de l'accastillage comme les macros-variables. Salez. Poivrez. Servez chaud.
Attention toutefois au ficher "makefile" car il y a deux macro-variables qui sont utilisées sans être définies
(DB et WACK). Il faut donc placer au début du "makefile", pour les déclarer au préalable :
DB =<return>
WACK =<return>
|
Le listing
Voilà donc un programme utile, d'autant plus que maintenant, même les Macintosh arrivent à lire les disquettes MS-DOS.
|