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 : AmigaOS 1.3 - Utilisation du RAD Disk
(Article écrit par Dominique Lorre et extrait d'Amiga News Tech - juin 1990)
|
|
Le Workbench 1.3 nous a apporté une nouveauté intéressante qui est le disque RAD, un autre genre de RAM Disk.
L'intérêt du disque RAD est multiple. Premièrement, il résiste au redémarrage, ce qui est utile pour conserver
des données quand on n'a pas une disquette sous la main. En second lieu, on lui attribue une taille fixe,
l'intérêt est moins évident mais s'explique par le fait qu'on peut lui donner la taille d'une disquette.
Avec le Kickstart 1.3, il est possible de redémarrer sur le RAD, ce qui est une solution permettant d'accélérer
le redémarrage du système. En dernier lieu, on peut lui attribuer tous les avantages du RAM Disk et notamment
la rapidité.
Comment utiliser RAD sans tomber dedans ?
La réponse se trouve dans le fichier Mountlist, bien évidemment. En voici un exemple :
RAD: Device = ramdrive.device
Unit = 0
Flags = 0
Surfaces = 2
BlocksPerTrack = 11
Reserved = 2
Interleave = 0
LowCyl = 0 ; HighCyl = 79
Buffers = 5
BufMemType = 1
#
|
Comme nous le montre cette entrée du fichier Devs:Mountlist, le disque RAD est géré par le fichier ramdrive.device.
Si jamais vous l'avez retiré de votre système, le disque RAD ne sera jamais accessible.
Le numéro d'unité (Unit) sera toujours 0 avec le Workbench 1.3 (sauf que... mais j'y reviendrai). Flags est un paramètre passé à
l'ouverture de la fonction OpenDevice et ici a une valeur nulle. Surfaces est le nombre de surfaces du support utilisé.
Or, physiquement, on ne peut pas dire que la mémoire ait deux faces comme une disquette (où irait-on, je vous le demande).
On peut d'ailleurs formuler la même remarque en ce qui concerne les paramètres BlocksPerTrack, Reserved, Interleave,
LowCyl et HighCyl. Ces valeurs sont strictement les mêmes que celles d'une disquette : étonnant, non ? En fait, si
vous n'avez pas beaucoup de mémoire disponible (ici 880 ko, soit la taille d'une disquette), cette entrée risque de
ne pas passer. Il vous faudra alors réduire la valeur de HighCyl en fonction de votre mémoire disponible (par exemple
19 pour un RAD de 220 ko). Buffers est le nombre de tampons mémoire utilisés avec ce disque et BufMemType le type de
la mémoire utilisée par les tampons.
Ce premier exemple de disque RAD offre l'énorme avantage d'être compatible avec le lecteur DF0:.
Cela signifie que vous pourrez effectuer une commande du type :
DiskCopy FROM DF0: TO RAD:
|
...sans l'ombre d'un problème. Il est connu que l'instruction DiskCopy est de loin la plus rapide pour
la copie de fichiers, et cet ordre vous fera gagner beaucoup plus de temps qu'une instruction plus classique telle que :
Copy FROM DF0: TO RAM: ALL
|
Évidemment, il vous faudra dans ce cas beaucoup de mémoire disponible.
Il est encore utile d'avoir un disque RAD de la taille d'une disquette quand on utilise DiskSalv :
DiskSalv FROM DF0: TO RAD:
|
Ainsi, si une de vos disquettes est endommagée, vous pourrez essayer de la récupérer sur RAD:.
Cette manière d'utiliser RAD est une raison valable de préférer de la mémoire supplémentaire à un second lecteur
de disquette (1 Mo de mémoire est très juste pour ce genre d'opérations).
Parlons maintenant du FastFileSystem. Si vous avez choisi de l'utiliser sur RAD: (en perdant alors la compatibilité
avec les disquettes qui utilisent l'ancien système, appelé OldFileSystem), il vous faudra une entrée Mountlist de ce type :
RAD: Device = ramdrive.device
Unit = 0
Flags = 0
Surfaces = 2
BlocksPerTrack = 11
Reserved = 2
Interleave = 0
LowCyl = 0 ; HighCyl = 79
Buffers = 5
BufMemType = 1
FileSystem = L:FastFileSystem
GlobVec = -1
DosType = Ox444F5301
#
|
Je dirai tout de suite que l'utilisation de RAD en FastFileSystem n'a d'intérêt pratique que pour les développeurs
voulant tester rapidement leurs programmes. Il reste que vous pouvez choisir cette option pour gagner
quelques précieuses millisecondes ou encore pour pouvoir utiliser les protections R, W et X qui ne sont disponibles
que sous FFS.
Beaucoup plus intéressante est la particularité qu'à RAD de résister au redémarrage. Sous Kickstart 1.2, il suffit
de faire MountRAD: après la réinitialisation de la machine et, théoriquement, les données sont réutilisables immédiatement.
Parfois DiskDoctor est utile pour remettre les choses en place.
Sous Kickstart 1.3, on peut même redémarrer avec RAD.
Dans ce cas, il faut avoir utilisé l'option "r" de la commande "SetPatch" dans la startup-sequence :
Cette option, très peu documentée, corrige un bogue du système qui empêchait RAD de résister au redémarrage.
D'ailleurs, le facétieux développeur du ramdrive.device a donné le nom RAMB0 au disque RAD, lorsqu'il revient à la vie.
Multiple RAD
Et maintenant, la question qui a tourmenté plus d'un utilisateur d'Amiga : comment avoir plusieurs RAD ?
Pas si facile, évidemment. La première solution logique qui vient à l'esprit est le changement du numéro d'unité
(le paramètre "Unit" de la Mountlist). Avec un numéro 0, on aurait le premier disque, 1 pour le second, 2
pour le troisième, etc. Cette solution paraît logique car c'est ainsi que l'on procède pour les différents
lecteurs de disquette ou les disques durs. Malheureusement, le facétieux développeur du ramdrive.device
n'avait (l'usage de l'imparfait n'est pas innocent) pas envisagé cette possibilité et le ramdrive.device
ne connaît que l'unité 0.
La méthode la plus élégante étant impraticable, une autre possibilité moins satisfaisante mais néanmoins
correcte était de partitionner le disque RAD: comme on le fait pour un disque dur. En théorie, on aurait pu
le faire de la manière suivante :
RAD: Device = ramdrive.device
Unit = 0
Flags = 0
Surfaces = 2
BlocksPerTrack = 11
Reserved = 2
Interleave = 0
LowCyl = 0 ; HighCyl = 9
Buffers = 5
BufMemType = 1
#
RAD1: Device = ramdrive.device
Unit = 0
Flags = 0
Surfaces = 2
BlocksPerTrack = 11
Reserved = 2
Interleave = 0
LowCyl = 10 ; HighCyl = 79
Buffers = 5
BufMemType = 1
#
|
Malheureusement, cette solution n'est qu'un nouveau moyen de bloquer le système. La commande Format refuse d'initialiser
un disque RAD: si LowCyl ne vaut pas 0. La solution existe-t-elle ? Eh bien oui, et je le prouve ! Tout d'abord,
je citerai mes sources en disant que la ruse provient d'un message de Carolyn Scheppner du CATS (Commodore Amiga Technical
Support), envoyé sur UseNet et placé sur SgtFlam par François Rouaix. Comme je n'ai plus le texte original sous
les yeux, je me contenterai de vous résumer la chose. Pour obtenir un second RAD, il faut effectuer tout d'abord
une copie du fichier ramdrive.device qui se trouve dans Devs:. Cette copie devra se trouver également dans le
répertoire Devs: et portera par exemple le nom ramdriv1.device. Il faut ensuite se procurer un éditeur binaire
(comme NewZap, éditeur officiel pour les fichiers de personnages des jeux d'aventure), repérer la chaîne de
caractères "ramdrive.device" et la remplacer par "ramdriv1.device". D'où l'importance que le nouveau nom soit de
la même taille que l'ancien. Voici un exemple de Mountlist qui déclare deux disques RAD :
RAD: Device = ramdrive.device
Unit = 0
Flags = 0
Surfaces = 2
BlocksPerTrack = 11
Reserved = 2
Interleave = 0
LowCyl = 0 ; HighCyl = 9
Buffers = 5
BufMemType = 1
#
RAD1:
Device = ramdriv1.device
Unit = 0
Flags = 0
Surfaces = 2
BlocksPerTrack = 11
Reserved = 2
Interleave = 0
LowCyl = 0 ; HighCyl = 79
Buffers = 5
BufMemType = 1
#
|
La méthode est réapplicable à l'infini, à condition de nommer chaque fichier différemment.
Pour finir, voici les deux instructions qui vous permettront de supprimer toute trace du disque RAD :
RemRad
Assign DRIVE RAD: REMOVE
|
PS : une des particularités du Workbench 2.0 sera de gérer les multiples disques RAD. Le développeur facétieux
a donc satisfait la demande générale.
|