C'est sans doute ici le meilleur moyen de comprendre le fonctionnement du LSS et partant de l� de comprendre ce que les syst�mes de protection peuvent faire ou ne pas faire. En la mati�re les l�gendes urbaines ne manquent pas. Passez le temps qu'il faudra mais sinc�rement si vous comprennez cette partie la lecture sur disquette (et corr�lativement l'�criture) n'auront plus aucun secret pour vous

Voici le tableau du code pr�sent� selon la m�thode de Jim Sather et qui permet de bien comprendre comment cela fonctionne.

Avant toute chose il faut savoir que suivre le tableau seul n'est pas suffisant, il faut se repr�senter simultan�ment � cette lecture s�quence par s�quence ce que fait le circuit MC3470 (detecte un pulse ou non) et le timing du sequencer qui fait passer d'une s�quence � la suivante � chaque clock d'horloge.





Exemple de lecture :

Supposons que votre lecture ait commenc�e depuis un certain temps et que votre DATA REGISTER n'ait pas son bit 7 � 1, vous �tes donc sur l'une des deux colonnes de gauche. Si nous prenons pour exemple que vous �tes en s�quence num�ro 3 et ne recevez pas de pulse, vous lisez la colonne 2 en face du num�ro de s�quence 3 et vous voyez 48.

Comme vous ne recevez pas de pulse � ce moment, votre 48 signifie de ne rien faire (NOP) et d'aller en s�quence 4... ce que vous faites. Vous lisez en s�quence 4 un splendide 58, si vous ne recevez pas de pulse � ce moment, votre 58 signifie "ne faites rien (NOP) et allez en s�quence 5.

Maintenant vous devriez avoir compris la r�gle du jeu, cependant voici tout de m�me un exemple de sc�nario pour vous confortez : si vous ne recevez aucun pulse pendant les passages de la s�quence 5 jusqu'� la s�quence 9 comprise, vous arrivez donc � cette s�quence 9 pour laquelle le code est 29 ce qui signifie que vous devez placer un 0 dans le DATA REGISTER puis aller en s�quence 2... et ainsi de suite.

Ce jeu serait un peu simplet car vous receverez bien � un moment ou � un autre un pulse : que se passera-t-il ? Supposons que dans la suite des s�quences vues pr�c�dement vous ayez re�u un pulse en s�quence 7. D�s lors ce n'est pas le code 88 de la colonne 2 qu'il faut ex�cuter mais bien celui de la colonne 1 de cette s�quence 7, vous y trouvez D8 ce qui signifie de ne rien faire et d'aller en D mais attention une fois � la s�quence suivante D le pulse n'est plus et vous repartirez donc en colonne 2. Face � la s�quence D vous voyez 08 donc allez en 0 sans avoir rien fait puis en 1 o� l� vous placez un 1 dans le DATA REGISTER...

Ces s�quences se suivent au rythme de l'horloge du s�quencer, et ce, tant que le bit 7 du DATA REGISTER n'est pas � 1. D�s qu'il l'est vous passerez alors dans les s�quences de QA c'est � dire les colonnes 3 et 4, au num�ro pr�cis de la s�quence o� la chose arrive... donc en r�alit� apr�s un SL1 ou un SL0, mais pour bien comprendre il faut examiner en d�tail le sch�ma qui suit, repr�sentant le tableau des codes et s�quences sous la forme d'une machine � �tats.

HACKING CORNER
Pour bien comprendre je vous ai fait un dessin de la machine � �tat de ce SEQUENCER pour la partie READ. Vous en trouverez un autre de Jim Aalto dans l'excellent livre "UNDERSTANDING APPLE II" de Jim SATHER mais je le trouve plus complexe... ce n'est qu'une question de go�t.



SI CE SCHEMA VOUS PARAIT COMPLEXE CLIQUEZ ICI, EH OUI J'EN AI FAIT DEUX DIFFERENTS..."



Prenons un exemple afin de suivre la lecture d'un nibble au complet. Soit le nibble 1101.1101

D�tection bits 7 et 6      1101.1101
Les bits 7 et 6 �tant 1 et 1 on est certain que l'entr�e s'est faite par le s�quence E,F de MSB � 0.

NOTA TRES IMPORTANT : le DATA REGISTER contient la valeur 0000.0011 et non 1100.0000 car les SHIFT SL1 et SL0 se font de la droite vers la gauche.

D�tection bit 5      1101.1101
Le bit 5 �tant � 0, aucun pulse n'a pu �tre detect� en s�quence F, la suite s'est donc faite par l'entr�e en s�quence 4, normalement aucun pulse n'est detect� avant la s�quence 9 qui fait alors entrer un 0 dans le DATA REGISTER puis on continue en entrant en s�quence 2.

D�tection bit 4      1101.1101
Un pulse sera alors detect� entre cette s�quence et la 9 ce qui nous am�nera en D puis en 0 et 1. A ce moment un 1 est plac� dans le DATA REGISTER qui a la valeur 0000.1101

D�tection bit 3      1101.1101
On repasse alors dans le circuit des s�quences 2 � 9 maximum puis D, 0, 1 qui conduit � introduire un nouveau 1 dans le DATA REGISTER qui est alors 0001.1011

D�tection bit 2      1101.1101
On repasse alors dans le circuit des s�quences 2 � 9 maximum puis D, 0, 1 qui conduit � introduire un nouveau 1 dans le DATA REGISTER qui est alors 0011.0111

D�tection bit 1      1101.1101
Pour les s�quences suivantes de 2 � 9, aucun pulse ne sera d�tect�, un 0 sera alors introduit dans le DATA REGISTER qui prend alors la valeur 0110.1110

D�tection bit 0      1101.1101
Pour le dernier bit � 1, le pulse sera detect� entre 2 et 9 maximum qui conduira � D, 0 et 1 et l� un 1 sera introduit dans le DATA REGISTER devient alors 1101.1101 le MSB est � 1 ON PASSE AUTOMATIQUEMENT sur la s�quence 2 de droite qui est en boucle infinie tant que le pulse du MSB du nibble suivant n'est pas detect�.


Notons d'ors et d�j� qu'il est IMPOSSIBLE de d�compter le nombre de 0 (ceux de synchronisation en fait) lorsque l'on est dans cette s�quence N�2 de MSB1 !!! Les sch�mas de protection qui d�tectent les extra-bits proc�dent d'ailleurs d'une autre fa�on c'est � dire attendent que les bits 7 et 6 soient d�tect�s. On reverra cela plus loin avec la technique des BMI (en lieu et place des BPL) pour les desynchronisations


D�s que le pulse du bit 7 du nibble suivant sera d�tect� on continuera donc dans cette partie jusqu'� detecter la valeur du bit 6 qui pourra �tre 0 ou 1 : NOTEZ BIEN QUE LES BITS 7 ET 6 NE SONT PAS ENCORE INSERES DANS LE DATA REGISTER QUI N'A PAS ETE EFFACE ET CONTIENT TOUJOURS LA VALEUR DU PRECEDANT NIBBLE, l'objectif est de CONSERVER le PLUS LONGTEMPS possible le DATA REGISTER avec cette valeur pr�c�dente pour que le programme 6502 ait le temps de la lire.

Le DATA REGISTER sera finalement effac�, que le programme ait lu ou non la valeur ! C'est AU PROGRAMMEUR de faire la lecture en temps utile, le LSS lui laisse un d�lai suffisant.


Si le bit 6 de ce second nibble est � 1 on ira en s�quence A,B, et �ventuellement C de MSB � 0 pour remplir le DATA REGISTER avec la s�quence de bits "10"

Si le bit 6 est � 1 on ira en s�quence E, F pour remplir le DATA REGISTER avec la s�quence bits "11"


On notera que la d�tection du bit 5 � 1 (PAS A ZERO) peut se faire th�oriquement :
en s�quence A, B ou C (cas du bit 6 � 0),
en s�quence F (cas du bit 6 � 1)

Dans le cas d'un pulse re�u en s�quence E il est consid�r� comme un parasite car re�u bien trop proche du pr�c�dent, et on voit bien que sur la machine � �tat ci-dessus (tout comme sur le code PROM qui lui correspond) il est ignor�.

Vous notez ainsi imm�diatement qu'un pulse valide d�tect� tr�s t�t est consid�r� comme celui du prochain bit et non un r�sidu du pr�c�dent. Vous allez dire "Ah et alors ?" ... Eh bien cela vous explique, autrement mieux qu'une d�claration pompeuse non justifi�e, pourquoi la lecture avec un drive rapide ne pose aucun probl�me et que, par corollaire, il est pr�f�rable d'avoir un drive lent pour l'�criture plut�t que pour la lecture. Dans le cas des copies "de s�curit�" de disquettes prot�g�es c'est m�me carr�ment mieux !!!