Suivez-nous sur Mastodon

|
|
|
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 : Conseils d'utilisation d'un lecteur de disquette Amiga
(Article écrit par Bryce Nesbitt et extrait de ZINE - octobre 1990)
|
|
Lecteurs de disquette - ce que vous faites mal !
Note : Voici encore quelques règles du gourou de l'Amiga, Bryce Nesbitt. Il s'agit d'utiliser
les lecteurs de disquette comme il se doit. N'hésitez pas à relire cet article et essayez de suivre ces
règles, et vous serez certain que votre programme (jeu, mégadémo) fonctionnera sur tous les Amiga.
Droit d'auteur 1988 Commodore-Amiga, Inc.
Ces informations sont fournies "en l'état" ; aucune garantie n'est donnée.
Toute utilisation se fait à vos risques et périls. Aucune responsabilité n'est assumée.
La reproduction est autorisée, à condition que cette notice soit conservée.
|
Un nombre inquiétant de nos développeurs de matériel et de logiciels tiers ont utilisé les lecteurs
de disquette de manière incorrecte. Si vous utilisez le périphérique logique trackdisk.device, vous
ne risquez rien. Si vous accédez directement au matériel, ou si vous construisez du matériel, alors
cet article est pour vous.
Pour le matériel
1. Le voyant du lecteur de disquette ne doit pas s'allumer et s'éteindre pendant l'accès.
Le voyant d'activité de notre lecteur reflète l'état du moteur. En général, le signal diode est piloté
par "IN_USE" (broche 4).
2. Pour des raisons de compatibilité avec les systèmes futurs, nous exigeons que les lecteurs
refusent de dépasser la piste zéro. En d'autres termes, si la tête est déjà à zéro et qu'un pas
vers l'extérieur est reçu, il ne doit pas déplacer la tête. Le lecteur doit néanmoins réinitialiser
son verrou "DISKCHANGE".
3. Les spécifications critiques pour nos lecteurs de 90 mm (3,5") sont les suivantes :
- Temps de 3 ms d'une piste à l'autre.
- Temps de stabilisation de 15 ms.
- >80% d'alignement radial à l'aide d'une disquette d'alignement Dysan.
- 500 ms pour le démarrage du moteur.
- Délai maximum de mise sous tension de 800 ms.
Du côté logiciel
Cette partie s'adresse principalement aux personnes qui écrivent des chargeurs de démarrage
personnalisés pour les jeux. À cause de chargeurs défectueux, des milliers de propriétaires
d'Amiga ne peuvent pas charger certains jeux et ne pourront jamais les acheter.
La source ultime d'information sur la synchronisation des lecteurs provient des spécifications
du fabricant. Cet article met simplement en évidence les points les plus mal utilisés.
1. Ne faites pas de mauvaises suppositions. Par exemple, si vous dépendez de la mise en marche
du moteur, mettez-le en marche avant l'utilisation. Ne supposez pas que votre code d'amorçage sera
saisi alors que le lecteur de disquette ou le système est dans un état fiable.
2. N'utilisez jamais une boucle comme celle-ci pour la synchronisation :
move.w #$1000,d0
busy_wait:
dbra d0,busy_wait
|
Cette méthode ne permet pas d'obtenir une synchronisation précise dans un grand nombre de circonstances.
La vitesse de la boucle ci-dessus dépend du processeur installé dans le système, du mode vidéo sélectionné,
du type de mémoire dans lequel se trouve le programme, de la relation avec le blanc vertical dans
laquelle le code s'exécute, de ce que fait le Blitter, des interruptions activées et de bien d'autres
facteurs auxquels il n'est pas utile de penser.
La puce 8520 permet une synchronisation rapide et facile.
3. La ligne "STEP" doit être utilisée comme une impulsion basse. La direction doit être
configurée en premier, avec une écriture séparée dans le registre. Une utilisation typique serait :
or.b #%00000010,$bfd100
;Définir la direction
and.b #%11111110,$bfd100
;Impulsion basse
nop
nop
or.b #%00000001,$bfd100
;Remettre le niveau haut
;-- attendez maintenant 3 millisecondes pour que
;-- la tête passe à la piste suivante
|
Nous spécifions que nos lecteurs de disquette doivent passer à la piste suivante en moins de 3
millisecondes. Certains lecteurs fonctionnent beaucoup plus vite, d'autres échouent à 2,8 millisecondes
ou avant. Lorsque la direction du pas est modifiée, le temps de stabilisation doit également être
ajouté (un délai minimum total de 18 millisecondes).
Notez que le capteur "TRACK ZERO" ne sera pas valide tant que la tête n'aura pas atteint la piste.
4. Lors de la mise en marche du moteur, attendez que le signal "READY" passe au niveau bas avant
de lire ou d'écrire (les pas sont acceptables avant ce moment). Notez que le signal "READY"
n'est valide que lorsque le signal du moteur est activé.
5. Pour déterminer si une disquette se trouve dans le lecteur, observez le signal "DISKCHANGE".
S'il est bas, la disquette a été retirée (et éventuellement réinsérée) depuis la dernière vérification.
Actionnez la tête pour réinitialiser le verrou et examiner l'état actuel.
6. Certains codes utilisent une ou deux pistes supplémentaires pour le stockage ou la protection
contre la copie. Nous ne garantissons pas que nos lecteurs de disquette auront plus que les 80 pistes
normales. Nous dirons que l'utilisation d'une piste supplémentaire est plutôt sûre, que deux pistes
sont probablement correctes et que trois pistes sont une très mauvaise idée.
7. Après la fin d'un DMA d'écriture sur la disquette, un délai de 1,2 milliseconde est nécessaire
avant toute autre opération (sélection du lecteur, pas, changement de tête, etc.). Le type de lecteur
de disquette que nous utilisons comporte un espace entre la tête d'effacement et la tête de lecture-écriture.
L'unité de disquette maintient la tête d'effacement activée après la porte de fin d'écriture pour compenser
l'écart. Si ce délai n'est pas respecté, des données innocentes risquent d'être écrasées sur d'autres
pistes ou d'autres côtés.
|