Le LOGIC STATE SEQUENCER (LSS) appel� aussi SEQUENCER est l'une des pi�ces maitresse du syst�me de lecture et d'�criture des disquettes. C'est la compr�hension parfaite de son fonctionnement qui permet la compr�hension parfaite des syst�mes de protection et leur reconstitution. Le LSS contient un code particulier que nous allons examiner. Ce code se trouve sur la PROM P6 de la carte contr�leur. Il est normalement INACCESSIBLE mais...



L'astuce consiste � remplacer la P5 par une P6... donc cette fois c'est accessible par le tr�s classique Cx00 avec X =N� de slot. Il y a cependant une difficult� de taille : Le brochage est diff�rent, donc c'est inexploitable! Arghhh !!! Heureusement dans "UNDERSTANDING APPLE II" Jim Sather (encore lui!) a realis� un programme BASIC pour remettre ce code en ordre. Ne vous fatiguez pas il est dans cette rubrique et d'autres qui seront indiqu�es plus loin.
La compr�hension du LSS est assez loin de l'�vidence biblique que nous avons parfois rencontr�e... ne d�sesp�rons pas pour autant on va y arriver mais pr�parez les aspirines, le papier et les crayons.

Si ce n'est pas facile � comprendre, dites vous qu'� expliquer ce n'est pas de la tarte non plus !

ARCHITECTURE DU LOGIC STATE SEQUENCER (LSS)...
Le LSS a pour finalit�s :
de d�finir les nibbles sur la disquette � partir des pulses re�us du syt�me de d�tection MC3470.
d'�crire les nibbles en faisant faire des inversions de signal
de d�terminer si la disquette est prot�g�e en �criture (et �a lui sert d'initialisateur)

Le LSS communique avec le programme 6502 par l'interm�diaire du DATA REGISTER qui est le registre � travers lequel transitent les valeurs lues ou �crites. IL faut savoir que le LSS fonctionne 2 fois plus vite que le 6502 c'est � dire � 2 Mhz, ce qui n'est pas innocent �videment. Les deux sch�mas suivant vous expliquent le fonctionnement global du LSS.





IMPORTANT : On appelle QA le bit 7 du data register (c'est � dire le bit le plus significatif aussi �crit MSB=most signifiant bit en anglais). Quand on veut parler de son contenu, on utilise aussi QA pour d�signer la valeur 1. Pour la diff�rencier, on appelle QA' la situation o� le bit 7 = 0.

UN CODE PARTICULIER...
Le code de la PROM P6 est compos� de 256 octets. Ce n'est pas un code au sens o� on l'entend en 6502 en ce sens que chaque octet code � la fois le num�ro de s�quence suivante et l'op�ration � faire. La partie gauche correspond au num�ro de la prochaine s�quence � ex�cuter, la partie de droite correspond � l'op�ration � effectuer.


Les op�rations sont :

code 0 (0000) CLR
code 8 (1000) NOP
code 9 (1001) SL0
code D (1101) SL1
code A (1010) SR
code B (1011) LD



Efface le DATA REGISTER
Ne rien faire (le plus utilis�)
Shift un 0 dans le DATA REGISTER
Shift un 1 dans le DATA REGISTER
Lit le signal WRITE PROTECT
Charge le DATA REGISTER avec la donn�e pr�sente sur le bus de donn�es (DATA BUS)
Les mn�moniques des codes controles ont une signification proche de celle des codes utilis�s par les assembleurs � savoir:

            SLx
            SR
            CLR
            NOP
            LD
"SHIFT LEFT" (la valeur x c'est-�-dire 0 ou 1)
"SHIFT RIGHT" (toujours la valeur 1 en fait)
"CLEAR"
"NO OPERATION"
"LOAD"

Exemples :

E0 signifie : Effacer le DATA REGISTER et allez en s�quence E
68 signifie : Ne rien faire et allez en s�quence 6
A8 signifie : Ne rien faire et allez en s�quence A
2D signifie : Place un 1 dans le DATA REGISTER et allez en s�quence 2
59 signifie : Place un 0 dans le DATA REGISTER et allez en s�quence 5

TRES IMPORTANT :

La PROM P6 (tout comme la PROM P5) existe en DEUX VERSIONS TOTALEMENT DIFFERENTES :

la version 13 secteurs (la plus ancienne utilis�e de 1977 � 1980).
la version 16 secteurs (la plus r�cente et que l'on trouve pratiquement � coup s�r sur toutes les machines car elle a �t� install�e d�s ao�t 1980 sur les APPLE II. Les anciennes PROM pouvaient alors �tre remplac�es par les nouvelles PROM tr�s ais�ment mais c'�tait surtout indispensable pour pouvoir utiliser les nouveaux programmes �crit sous DOS 3.3 ou non, mais avec un secteur 0 de la piste 0 respectant les crit�res du format des 16 secteurs et d�crit plus bas.)

Les codes de base utilis�s sont les m�mes dans les deux versions. Par contre la programmation est diff�rente. Par la suite nous allons examiner la PROM P6 16 secteurs car il y a tr�s peu de chances que vous rencontriez une PROM P6 13 secteurs et de toute fa�on les principes de fonctionnement sont tr�s proches. Je d�taillerai la PROM P6 13 secteurs plus tard...

Les identifiants des PROM sont les suivants



ATTENTION : La PROM P5 13 SECTEURS ne pourra pas lire correctement les disquettes formatt�es en 16 secteurs mais PAR CONTRE la PROM P6 16 SECTEURS sait lire PARFAITEMENT les disquettes formatt�es en 13 secteurs, et ce, malgr� une modification de timing sur la carte analogique des drives sp�cifiquement pour lire les disquettes en 16 secteurs (il s'agit de la r�sistance R21 transform�e en potentiom�tre)


Si les disquettes 13 secteurs ne bootent pas sur un contr�leur de disquette qui a les PROM 16 SECTEURS ce n'est li� QU'A LA SEULE PROM P5 et non la PROM P6 !!!! Quelle que soit la version de la PROM P5 (13 ou 16 secteurs) il faut en fait comprendre que la PROM concern�e doit pouvoir lire au moins le secteur 0 de la piste 0 selon un codage et des marqueurs de champs pr�cis � savoir :

Pour la PROM P5 associ�e � la P6 13 SECTEURS :

        codage 5.3
        marqueurs du champ adresse D5 AA B5 et DE AA EB
        marqueurs du champ de donn�es D5 AA AD et DE AA EB.


Pour la PROM P5 associ�e � la P6 16 SECTEURS :
        codage 6.2
        marqueurs du champ adresse D5 AA 96 et DE AA EB
        marqueurs du champ de donn�es D5 AA AD et DE AA EB.


La PROM P5 contient du code 6502 et non un code sp�cifique comme celui de la P6. Il sera d�taill� dans la partie relative au BOOTSTRAP
UN CODE EN 16 SEQUENCES
Les 256 octets de la PROM sont organis�s pour �tre utilis�s en continu � travers une suite de 16 s�quences. Cela s'apparente � une machine � �tats. Gros malins que vous �tes vous avez compris que s'il y a 16 s�quences et que si chaque octet se suffit � lui-m�me, il va y en avoir trop !

Eh bien non, car il y a 16 groupes de 16 s�quences de 1 octet soit 256 donc la totalit�...

Il y a deux grands groupes : READ et WRITE
A l'int�rieur de chacun de ces groupes, le SEQUENCER ex�cute les s�quences � partir de la premi�re qui est num�rot�e 0. L'horloge du LSS permet de changer de s�quence en fonction du code de la s�quence en cours MAIS EGALEMENT en fonction des �venements re�us ET PRESENTS on ex�cute le code de la s�quence de la colonne qui correspond bien � la r�union de ces �venements que sont :
PULSE / NO PULSE
QA' (bit 7 � 0) / QA (bit 7 � 1)
SHIFT / LOAD

Exemple
je suis en s�quence num�ro B du mode READ, si les �venements sont :
        Etre en mode SHIFT
        Le bit 7 est � 0
        Je n'ai pas re�u de pulse
alors j'ex�cute le code 59 qui signifie "fait un SHIFT LEFT de 0 et passe en s�quence 5"

Pour la m�me s�quence num�ro B du mode READ, si les �venements sont :
        Etre en mode SHIFT
        Le bit 7 est � 0
        je re�ois un pulse
alors j'ex�cute le code D9 qui signifie "fait un SHIFT LEFT de 0 et passe en s�quence D"


Cela signifie que si un �venement arrive � un moment donn� sur une s�quence donn�e, le code ex�cut� est celui qui correspond aux dits �venements : on se balance donc en permanence d'une colonne � une autre selon ceux-ci.

Quand aucun �venement n'intervient on reste dans la m�me colonne. ATTENTION � l'�venement PULSE, d�s que l'horloge du s�quencer fait passer � la s�quence suivente, le PULSE a disparu on passera donc en NO PULSE. Tout cela sera revu en d�tail plus loin





HACKING CORNER
En examinant les codes du tableau ci-dessus on peut constater un certain nombre de choses int�ressantes :

1. Lorsque l'on est en mode �criture (WRITE) les tableaux PULSE et NO PULSE sont strictement identiques... pourquoi ? Eh bien de toute fa�on quand on �crit sur la disquette le LSS re�oit effectivement des pulses (cf. brochage du dessin pr�c�dant) ce qui est tout � fait normal mais ceux ci-doivent �tre ignor�s car on est en train d'�crire et on se fiche eperduement de ce qui pouvait �tre �crit auparavant donc cela explique le pourquoi des deux tableaux identiques. Bien �videment le d�roulement du code se passe tant�t sur l'un tant�t sur l'autre mais les op�rations sont absolument identiques.

2. Toujours en mode �criture on notera la parfaite sym�trie des op�rations LOAD et SHIFT qui impose l'�criture en 32 cycles d'un nibble de 8 bits. Nous verrons dans le mode d�taill� du fonctionnement de ces s�quences ce qui se passe d�s lors que l'on d�passe ce nombre de cycles... l'introduction d'extrabits � 0. Mais on verra aussi ce qui se passe si l'on ne respecte pas ce timing de 32 cycles (4 cycles par bit)

3. L'op�ration READ/LOAD (les 4 colonnes en bas � droite) correspond au test WRITE PROTECT. Quelle que soit la s�quence dans laquelle on entre ou quel que soit le temps que l'on mette pour lire le DATA REGISTER, ce dernier est imm�diatement positionn� � la valeur ad hoc... puisque le test est un BMI donc sur le bit 7...

Maintenant si vous �tes arriv�s jusqu'ici c'est excellent, nous allons essayer de continuer sans les aspirines. Avant de lire la suite, n'ayez pas de complexes si cela ne para�t pas simple, cela ne l'est pas m�me si j'ai vraiment essay� de faire didactique. Donc... lisez et relisez en essayant de comprendre, en cas d'insommies pendant plusieurs jours n'h�sitez pas � envoyer un mail via la rubrique "contact".

DETAIL DU FONCTIONNEMENT POUR L'OPERATION "READ"

DETAIL DU FONCTIONNEMENT POUR L'OPERATION "WRITE"