<meta name="KEYWORDS" content="HACK Z APPLE, JPL, Cracking, Hacking, DISK II, DRIVES, DISQUETTES, Collection APPLE II, APPLE, Apple II, APPLE II Plus, 2+, Europlus, 2e, //e, enhanced, Platinium, Stealth, Cortland, GS, IIGS, WOZ, IIGS WOZ, ROM 0, ROM 1, ROM 4, IIc, IIc Plus,Apple III, LISA, MAC XL, DARK VADOR, ITT 2020, APPLE BF,APPLE REV0, REVISION 0, RFI, NON RFI">
<meta name="TITLE" content="Apple II standard">
<meta name="OWNER" content="HACKZAPPLE.COM">
<meta name="SUBJECT" content="Collection Apple II">
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 <A HREF="DISKIITECH13.HTM">"UNDERSTANDING APPLE II"</A> de Jim SATHER mais je le trouve plus complexe...
ce n'est qu'une question de go√t.
<BR><BR>
<CENTER><IMG SRC="LSS01B1.PNG"></CENTER>
<BR><BR>
Prenons un exemple afin de suivre la lecture d'un nibble au complet. Soit le nibble 1101.1101
<BR><BR>
<U>DΘtection bits 7 et 6</U> <FONT COLOR="RED">11</FONT>01.1101<BR>
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.
<BR><BR>
<FONT COLOR="RED">NOTA TRES IMPORTANT : le DATA REGISTER contient la valeur 0000.0011 <U>et non</U> 1100.0000
car les SHIFT SL1 et SL0 se font de la droite vers la gauche.</FONT>
<BR><BR>
<U>DΘtection bit 5</U> 11<FONT COLOR="RED">0</FONT>1.1101<BR>
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.
<BR><BR>
<U>DΘtection bit 4</U> 110<FONT COLOR="RED">1</FONT>.1101<BR>
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
<BR><BR>
<U>DΘtection bit 3</U> 1101.<FONT COLOR="RED">1</FONT>101<BR>
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
<BR><BR>
<U>DΘtection bit 2</U> 1101.1<FONT COLOR="RED">1</FONT>01<BR>
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
<BR><BR>
<U>DΘtection bit 1</U> 1101.11<FONT COLOR="RED">0</FONT>1<BR>
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
<BR><BR>
<U>DΘtection bit 0</U> 1101.110<FONT COLOR="RED">1</FONT><BR>
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Θ.
<BR><BR>
<IMG SRC="../THEMAS/DIVERS/RMQ01.PNG"><BR>
<B><FONT COLOR="RED">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 !!! </FONT></B> 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
<BR><BR>
<IMG SRC="../THEMAS/DIVERS/RMQ02.PNG"><BR>
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 : <B><FONT COLOR="RED">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.
<BR><BR>
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.</FONT></B>
<BR><BR>
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"
<BR><BR>
Si le bit 6 est α 1 on ira en sΘquence E, F pour remplir le DATA REGISTER avec la sΘquence bits "11"
<BR><BR>
<IMG SRC="../THEMAS/DIVERS/RMQ03.PNG"><BR>
On notera que la dΘtection du bit 5 α 1 (PAS A ZERO) peut se faire thΘoriquement :<BR>
<IMG SRC="../THEMAS/DIVERS/BULLET.GIF">en sΘquence A, B ou C (cas du bit 6 α 0),<BR>
<IMG SRC="../THEMAS/DIVERS/BULLET.GIF">en sΘquence F (cas du bit 6 α 1)
<BR> <BR>
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Θ.
<BR> <BR>
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 ?" ... <B><FONT COLOR="RED">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 !!! </FONT></B>