Le déplacement de la tête de lecture est fait par un moteur PAS A PAS qui est différent ce celui qui fait tourner la disquette. Eh oui, comme déjà dit, il y a bien deux moteurs dans un lecteur de disquette !
le "drive motor" qui permet de faire tourner la disquette à 300 tours/minute
le "stepper motor" qui permet de faire avancer la tête de lecture ne pas à pas

Pour le détail de la sélection des drives, allumage, extinction et tout ce qui concerne le "drive motor", tout est expliqué dans la rubrique VITESSE DU DRIVE . Celui qui va nous passionner ici est le "stepper motor".

Notons auparavant que lorsque l'on dit "déplacment de la tête de lecture", il faut entendre "déplacement du bloc portant la tête de lecture".



LE "STEPPER MOTOR"... le moteur PAS A PAS

Celui qui nous intéresse ici est donc le second moteur qui permet de faire avancer ou reculer la tête de lecture. Ses caractéristiques sont à la base de systèmes de protection très sophistiqués mais avant de les examiner, voyons voir comment se fait le fonctionnement normal de cette petite merveille... et pour commencer : opération démontage !

Petit démontage...

Si je l'ai fait c'est bien pour vous éviter de le faire ! mais vous pouvez toujours essayer, je ne garantis pas que votre remontage sera à la hauteur de vos espérances, je crains même que cela ne fonctionne plus du tout...



Le fonctionnement de la merveille... physiquement !




Vous noterez sur la photo ci-contre :

En "A" (au contour en cyan) le bloc qui porte la tête de lecture, ce bloc se déplace sur les bras fixes indiqués en "B" (en rouge).

Ok mais comment avance-t-il ?

Eh bien la came reperée en "C" a la gravure d'un colimaçon en "C1" dans lequel est placé un petit guide en cuivre en "G" qui est solidaire du bloc "A" et lorsque la came tourne dans un sens ou dans un autre, ce guide qui reste encastré dans le colimaçon en suit le mouvement et fait ainsi avancer ou reculer le système portant la tête de lecture. Nous avons là la transformation d'une rotation en un mouvement longitudinal.

Il suffit donc de programmer le moteur pas à pas qui fait tourner la dite came pour faire avancer ou reculer le système de lecture de la disquette. Encore une belle évidence biblique !

Du calme... pour l'instant on sait avancer et reculer mais pas se positionner sur une piste, ce qui est la suite de cette passionnante rubrique.
Avant toute chose il faut bien comprendre que le positionnement sur une piste se fait en général par rapport à la piste 0 sur laquelle on est sensé être, en se déplaçant d'un certain nombre de pas nécessaires pour aller jusqu'à la piste recherchée (donc en avançant ou en reculant) et en vérifiant PAR LA LECTURE d'un champ adresse le numéro de piste sur lequel la tête de lecture est sensée être :

On est donc dans un contrôle LOGICIEL de la position de destination.

Si cela ne donne rien de bon alors vous entendrez le merveilleux bruit du drive qui se recalibre sur la piste 0 afin de recommencer pour cette fois se positionner à partir de la piste 0 (notons que les bruits du drive, du déplacement du bras en particulier, ont été utilisés dans des logiciels pornographiques pour simuler ce que vous pouvez imaginer). Le bruit le plus fort est la frappe du système à pattes contre l'axe de la came alors que le bruit de frottement est... le frottement justement du système coulissant qui supporte la tête de lecture.





Pourquoi se recalibrer sur la piste 0 ? Eh bien c'est la seule qui est toujours au même endroit pour tous les drives car un arrêtoir physique est utilisé pour s'y positionner. Les autres pistes sont relatives à cette piste 0.

NOTA IMPORTANT :

L'axe qui sert de bloqueur n'est PAS celui de la disquette mais celui de la CAME qui sert à déplacer le bras de la tête de lecture.

Pas convaincu ?
Regardez donc un lecteur vu de dessus ici.
Allez petit pervers le dessous t'interesses ? c'est ICI

Hacking corner
a Tous les pirates de la planète ont toujours été passionnés pour voir sur quelles pistes un programme protégé va. Donc... ils ont démonté leur drive et regardé le déplacement du bras : misère ! en regardant ce système (cf "A") se déplacer ils ont constaté que la distance entre chaque piste était quasiment indétectable.

Le principe de base du piratage étant "IL Y A TOUJOURS UNE AUTRE VOIE", le mouvement de la came (Cf. "C") les a bigrement intéressé car là le déplacement de rotation entre deux pistes est LARGEMENT IMPRESSIONNANT... et cela a donné ce système de marquage qui est détaillé dans la rubrique "repérer les pistes".



Le fonctionnement de la merveille... par la programmation !

Pour déplacer la tête de lecture il faut réaliser des opérations successives d'alimentation(ON) / désalimentation(OFF) des bobines tout en laissant un délai de 20 ms entre chacune de ces opérations. C'est ce que l'on appelle enclencher les phases du moteur.

ATTENTION : pour pouvoir écrire dès que vous êtes sur la piste recherchée, les phases doivent être OFF... en réalité c'est surtout pour la phase 1 car celle-ci est également connectée sur le système de détection de la protection contre l'écriture. APPLE a sans doute imposé cela pour éviter que le bras de déplacement de la tête de lecture ne bouge pendant une opération d'écriture ou lecture.

Pour ce faire vous disposez de 4 phases, chacune pouvant être ON ou OFF. Ce sont là encore des softswitchs qui permettent ces opérations, ils sont donnés dans le tableau suivant et leur utilisation la plus simple reste l'adressage indexé en ayant le numéro de slot * 16 en index X.



Un déplacement des phases dans le sens ASCENDANT (de $C080 vers $C087) déplace le bras VERS l'INTERIEUR (donc vers la piste 35). Un déplacement des phases dans le sens DESCENDANT (de $C087 vers $C080) déplace le bras VERS l'EXTERIEUR (donc vers la piste 0)

Normalement le déplacement du bras d'une phase place la tête sur la piste suivante MAIS le problème du disk II d'APPLE est la résolution de la tête de lecture qui N'EST PAS ASSEZ FINE POUR PERMETTRE CELA... ce qui implique en fait un déplacement de deux phases pour passer d'une piste à une autre... et là vous comprenez tout de suite qu'en utilisant une seule de ces phases vous êtes sur les fameuses demi-pistes !

EXEMPLES

Admettons que je sois positionné sur une piste et aligné sur la phase 0, si je fais :
Phase 1 ON / délai / Phase 1 OFF je me déplace d'un pas DONC je SUIS SUR UNE DEMI-PISTE (les fameuses X,5) et aligné sur la phase 1

Pour me déplacer d'une piste je dois faire :
Phase 1 ON / délai / Phase 1 OFF /délai /Phase 2 ON / délai / Phase 2 OFF

Le délai qui est de 20 ms laisse le temps au moteur de bouger effectivement le bras ... En jouant sur ce délai on peut alors écrire sur les non moins fameuses 1/4 de pistes !

EN SAVOIR PLUS SUR LE ROTOR ET CES PHASES : VOIR ICI

Source d'une routine de déplacement

L'entrée de la routine se fait par TRKMOVE avec le numéro de piste qui sera multiplié par deux pour avoir la correspondance en nombre de phases.

Si vous voulez utiliser cette routine pour réaliser des déplacements sur des demi-pistes, il suffit d'entrer par TRKMOVE1 avec A qui contient le numéro de phase de la demi piste cherchée. Exemple : Pour la piste 1.5 alors A contient 3


PHASE0
WAIT

TRKMOVE
TRKMOVE1








IN1
IN2

OUT1
STEP














DONE

CURPH
SLOT

EQU $C080
EQU $FCA8

ASL
STX SLOT
SEC
SBC CURPH
BEQ DONE
BCS IN1
EOR #$FF
TAY
INY
BCC OUT1
TAY
INC CURPH
BCS STEP
DEC CURPH
PHP
LDA CURPH
AND #3
ASL
ORA SLOT
TAX
LDA PHASE0+1,X
LDA #$56
JSR WAIT
LDA PHASE0,X
PLP
DEY
BEQ DONE
BCS IN2
BCC OUT1
RTS

DS 1
DS 1


; La phase 0 sert de base
; Routine moniteur de délai
;
; 1 piste = 2 phases
; Sauve numero de slot

; Compare avec la position actuelle (théorique)
; On est arrivé donc on sort
; Il faut se déplacer vers l'intérieur
; Non donc complement à 2 pour difference
; ... et sauve en Y =

; Branchement systématique
; Sauve la différence entre les pistes dans Y
; Déplacement d'un track vers l'intérieur
; Branchement systématique
; Déplacement d'un track vers l'extérieur
; Sauve le pas de la direction (dans C)

; Conversion piste / phase
;


; Phase ON

; Petit délai
; Phase OFF
; Reprend P car C donne la direction
; Encore un pas?
; Non, donc on sort
; Oui et c'est vers l'intérieur
; Oui et c'est vers l'extérieur


; Numero de piste actuelle
; Numéro de slot
;
; RECALIB : cette routine sert pour recalibrer la tête sur la piste 0, on l'appelle quand on est perdu ...
; Entrée : X = numéro de slot * 16 et ne pas oublier d'avoir le drive en ON
; Cette routine fait faire au drive un bruit un peu inquiétant mais c'est normal car on lui fait croire qu'on est
; en piste 40 (donc à 80 demi pistes [soit $50 en hexadécimal] de la piste 0) et qu'on veut justement aller sur la piste 0...
; qui n'est physiquement jamais aussi loin !
;
RECALIB LDA #$50
STA CURPH
LDA #0
JMP TRKMOVE1