Le formattage des disquettes d'APPLE est tr�s particulier en ce sens qu'il ne fait pas appel � un syst�me externe pour signaler au programme de lecture qu'il va arriver sur une zone de donn�es. C'est un formattage EXCLUSIVEMENT LOGICIEL.

D�coupage de la disquette en pistes

Les disquettes 5'25 sont formatt�es en 35 pistes (soit $23 pistes num�rot�es de $00 � $22), la piste 0 est la plus ext�rieure et la piste 35 la plus int�rieure. Le catalogue de la disquette est plac� sur la piste 17 ($11). Il n'y a pas de variation de la vitesse du moteur pour chaque piste, la vitesse reste la m�me pour chacune.

Hacking corner

1. certaines protections utilisent ce que l'on appelle une extra-piste � savoir la piste $23 qui n'est pas accessible par le DOS normal. Ce type de protection fait partie des premiers trucs et astuces mais pr�sente l'inconv�nient de ne pas fonctionner sur tous les lecteurs de disquettes.

2. Nous verrons dans la section "d�placement de la t�te de lecture" qu'il est possible d'�crire sur ce qui est appel� les inter-pistes ou demi-pistes, voir les quarts de pistes ! En effet la r�solution magn�tique de la t�te de lecture est telle qu'elle impose une distance minimale entre deux pistes... or le moteur utilis� en pas � pas permet des d�placements tels qu'il est possible de se d�placer d'une demi-piste. Pour le quart de piste c'est un probl�me de timing qu'il convient de mettre en oeuvre. MAIS il faut TOUJOURS un espace d'une piste entre deux zones d'�criture, demi-piste ou quart de piste...

3. Il existe un bricolage simple � faire pour voir les pistes qui sont utilis�es par un programme... utile quand on ne sait pas s'il va sur la $23, fait des 1/2 des 1/4 de pistes, du track arcing etc... Pas cher, juste un feutre un programme comme locksmith bref on apprend comment rep�rer les pistes.

4. Une technique de protection consiste � ce qui s'appelle la synchronisation des pistes qui n'a STRICTEMENT RIEN A VOIR AVEC LA SYNCHRONISATION DE LECTURE telle qu'expliqu�e en rubrique "synchronisation" mais QUI A TOUT A VOIR AVEC LA RUBRIQUE "synchronisation des pistes"

D�coupage des pistes en secteurs

Les pistes sont d�coup�es artificiellement en secteurs. Il y a :
13 secteurs en DOS 3.2
16 secteurs en DOS 3.3, PASCAL et la plupart des autres OS .

La taille d'un secteur correspond � un nombre de nibbles variable selon le codage mais dont le r�sultat correspond normalement � une page de 256 octets en m�moire.

Chaque secteur est pr�c�d� et suivi par des nibbles dits de synchronisation.



Hacking corner

Evidement vous avez compris que l� encore des syst�mes de protection utilisent un nombre variable de secteurs par piste ou modifient la taille des secteurs... les combinaisons sont alors infinies. Des exemples vous sont donn�s dans la rubrique "formats exotiques"

D�coupage des secteurs en deux champs

Lors de l'initialisation de la disquette la routine de formattage �crit donc 16 secteurs sur chaque piste. Chaque secteur se d�compose en 2 parties bien distinctes s�par�es par des nibbles de synchronisation, ce sont :
Le champ adresse, qui est �crit lors de l'initialisation, il n'est plus modifi� par la suite
Le champ des donn�es, qui est �crit certes � l'initialisation mais qui lui peut �tre bien evidemment r��crit pour enregistrer les modifications de donn�es.

Le d�but de ces champs est identifi� par une s�quence de nibbles bien pr�cis (l'ent�te) qui sont :
Pour le champ adresse : D5 AA 96
Pour le champ donn�es : D5 AA AD

Pour savoir comment se fait la d�tection de ces champs, il faut aller voir la section "synchronisation"

ORDRE PHYSIQUE ET ORDRE LOGIQUE :

Il faut savoir que les secteurs ont un ordre physique 0,1,2,3,4 etc... qui ne correspond pas � l'ordre logique. Qu'est-ce qu'un ordre logique ? En fait pendant le temps mis par le syst�me d'exploitation pour d�coder les donn�es enregistr�es, la disquette continue � tourner et �videment le secteur physique qui suit celui en cours de d�codage est d�pass� depuis longtemps, donc pour optimiser le temps de lecture l'ordre logique est celui qui permet de charger les secteurs dans un ordre d�fini de fa�on telle qu'� la fin du d�codage de l'un la t�te de lecture se trouve en mesure de lire le premier secteur physique qu'elle rencontre : c'est ce qui s'appelle l'INTERLEAVING et qui est d�crit en d�tail dans la rubrique astucieusement nomm�e "Interleaving..."

Hacking corner
D'astucieux syst�mes de protection n'utilisent pas syst�matiquement des champs s�par�s adresse/donn�es. Ils se contentent de markers d'ent�te et �ventuellement d'un rep�rage simpliste de piste/secteur

Le champ adresse
Il est important de bien noter que le champ des donn�es est ECRIT UNE SEULE FOIS lors de l'initialisation. Si la disquette a �t� formatt�e il y a 20 ans le champ adresse a �t� �crit il y a 20 ans... ce qui n'est pas n�cessairement le cas du champ des donn�es qui est r��crit � chaque mise � jour.

Le champ adresse est compos� :
d'un ent�te
d'un num�ro de volume
d'un num�ro de piste
d'un num�ro de secteur
d'un checksum
d'une sequence finale


DOS 3.3

D5 AA 96
XX YY
XX YY
XX YY
XX YY
DE AA EB



2 nibbles cod�s 4.4
2 nibbles cod�s 4.4
2 nibbles cod�s 4.4
2 nibbles cod�s 4.4

DOS 3.2

D5 AA B5
XX YY
XX YY
XX YY
XX YY
DE AA EB
Le champ des donn�es
Il est important de bien noter que le champ des donn�es est SYSTEMATIQUEMENT pr�c�d� par 5 $FF de synchronisation lors de CHAQUE r��criture ce qui cause des chevauchements de champs magn�tiques de fa�on al�atoire et que nous verrons plus loin.

Le champ des donn�es est compos� :
d'un ent�te
des donn�es elles m�mes
d'un checksum
d'une sequence finale


DOS 3.3

D5 AA AD
342 nibbles cod�s 6.2
1 nibble cod� 6.2
DE AA EB


DOS 3.2

D5 AA AD
410 nibbles cod�s 5.3
1 nibble cod� 5.3
DE AA EB


Il n'est pas inutile de pr�ciser ici que les valeurs $FF de synchronisation sont �crites en 40 cycles et de ce fait vous avez sur la disquette deux 0 suppl�mentaires derri�re les 1 du $FF. On a donc un $FF �crit en 10 bits soit 1111.1111.00 (les points ne sont l� que pour la lisibilit� �videment). Les raisons sont expliqu�es dans la section "synchronisation"

Nous verrons dans l'examen attentif (enfin j'esp�re) de la routine d'�criture du champ adresse du DOS 3.3 que le $EB ne peut JAMAIS �tre �crit correctement... et que de tout fa�on il n'est pas test� en relecture !
Hacking corner

Bien s�r si vous changez les markers vous rendez non copiable par le programme standard COPYA ou les programmes non sp�cifiques votre disquette. Vous avez UNE CONTRAINTE :

le secteur 0 de la piste 0 DOIT ETRE ECRIT AVEC LES MARKERS STANDARD... sinon la disquette ne peut pas �tre charg�e.

C'est l� le talon d'achille de TOUTES LES PROTECTIONS car cela permet de mettre en oeuvre la technique du trac� de boot qui est IMPARABLE... mais cela ne signifie pas pour autant que la suite est facile ! Le d�tail de cette technique est expliqu�e plus loin dans la section "Bootstrap"

INITIALISATION ET REECRITURE

Pour initialiser une disquette vous chargez un DOS et tapez la commande :

INIT HELLO suivi de RETURN

Notas importants:
1. HELLO est le nom du programme BASIC qui sera lanc� quand votre disquette bootera sur l'APPLE II. Vous pouvez choisir tout autre nom cela n'a pas d'importance. Ce programme BASIC est celui pr�sent en m�moire lors de la commande INIT �videment, s'il n'y en a pas eh bien vous aurez quand m�me un fichier basic HELLO ... mais vide.

2. Vous pouvez remplacer le programme HELLO en l'effa�ant et en renommant par HELLO celui que vous voudrez voir lanc�. (comme dit ci-dessus, si vous avez fait l'INIT avec TARZAN alors ce sera TARZAN qu'il faudra utiliser pour le renommage.

3. Sauf avec des utilitaires sp�cifiques (COPY II PLUS par exemple) vous ne pouvez pas changer le nom de fichier choisi avec la commande INIT.
Hacking corner

Lors de l'initialisation les pistes sont formatt�es une fois pour toute en ce qui concerne les champs adresse. Pour ce qui est des champs datas ils sont �crits certes � l'initialisation mais ensuite r��crits chaque fois qu'il y a besoin... ce qui explique la pr�sence de zones magn�tiques instables entre les champs adresse et data.



Sur le dessin il est pr�cis� que l'on r�-�crit les donn�es une premi�re fois avec un drive lent puis une seconde fois avec un drive rapide mais gardez toutefois � l'esprit que c'est ce qui se passe sur un m�me lecteur.. il y a toujours de zones de recouvrement des champs magn�tiques qui sont des zones instables.

Ces zones d'instabilit� d�synchronisent la lecture c'est pourquoi on r��crit toujours le champ des donn�es en commen�ant par r��crire des $FF de synchronisation. Le probl�me ne se pose JAMAIS pour les champs adresse car ils sont �crits une fois pour toute... jusqu'� ce la disquette d�raille.