home *** CD-ROM | disk | FTP | other *** search
/ hackzapple.com / www.hackzapple.com.tar / www.hackzapple.com / DISKII / DISKIITECH07A.HTM.orig < prev    next >
Text File  |  2010-10-06  |  16KB  |  313 lines

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
  2. <HTML>
  3. <HEAD>
  4. <TITLE>HACK Z APPLE, Collection Apple II</TITLE>
  5.   <link rel="shortcut icon" type="image/x-icon" href="http://www.hackzapple.com/favicon.ico">
  6.   <meta http-equiv="imagetoolbar" content="no">
  7.   <meta name="author" content="JPL">
  8.  <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">
  9.   <meta name="TITLE"     content="Apple II standard">
  10.   <meta name="OWNER"     content="HACKZAPPLE.COM">
  11.   <meta name="SUBJECT"     content="Collection Apple II">
  12.   <meta name="REVISIT-AFTER"     content="10 DAYS">
  13.   <meta name="LANGUAGE" content="FR">
  14.   <meta name="ROBOTS"     content="All">   
  15. <link href="../BASIC.CSS" rel="stylesheet" type="text/css"> 
  16. </HEAD>
  17.  
  18. <BODY>
  19. <CENTER>
  20.  
  21.  
  22. <A NAME="DISK07"></A>
  23. <TABLE border="0" cellspacing="0" cellpadding="0" width="700">
  24. <TR>     <TD WIDTH="150"></TD> 
  25.     <TD WIDTH="100"></TD> 
  26.     <TD WIDTH="210"></TD>
  27.     <TD WIDTH="10"></TD>
  28.     <TD WIDTH="220"></TD>
  29. </TR>
  30. <TR>     <TD COLSPAN="3" valign="TOP" > <img src="../THEMAS/M3/XDISK7A.PNG" BORDER=0></TD>  
  31.     <TD COLSPAN="2" > 
  32.     <CENTER>
  33.     <A HREF="DISKIITECH04A.HTM"> <img  src="../THEMAS/DIVERS/PRIOR1.PNG" BORDER=0></A>
  34.     <A HREF="DISKIITECH.HTM"> <img  src="../THEMAS/DIVERS/HOME1.PNG" BORDER=0></A>  
  35.     <A HREF="DISKIITECH05.HTM"> <img  src="../THEMAS/DIVERS/SUITE1.PNG" BORDER=0></A>
  36.     </CENTER>
  37.     </TD>
  38. </TR>
  39. <TR> <TD COLSPAN="5" CLASS="PARAG1">
  40.     Le LOGIC STATE SEQUENCER (LSS) appelΘ aussi SEQUENCER est l'une des piΦces maitresse du systΦme de lecture et 
  41.     d'Θcriture des disquettes. C'est la comprΘhension parfaite de son fonctionnement qui permet la comprΘhension parfaite
  42.     des systΦmes de protection et leur reconstitution. Le LSS contient un code particulier que nous allons examiner.
  43.     Ce code se trouve sur la PROM P6 de la carte contr⌠leur. Il est normalement INACCESSIBLE mais...
  44.      </TD>
  45. </TR>
  46. <TR> <TD COLSPAN="2" CLASS="PARAG1">
  47.     <BR><IMG SRC="PROMP5P6.PNG">
  48.     </TD>
  49.     <TD COLSPAN="3" CLASS="PARAG1">
  50.     
  51.     <BR><BR>
  52.     <IMG SRC="../THEMAS/DIVERS/CRACK.BMP"> <FONT COLOR="#40FF40"> L'astuce consiste α remplacer la P5 par une P6... donc 
  53.     cette fois c'est accessible par le trΦs classique Cx00 avec
  54.     X =N░ de slot. Il y a cependant une difficultΘ de taille : Le brochage est diffΘrent, donc c'est inexploitable! 
  55.     Arghhh !!! 
  56.     Heureusement dans    <A HREF="DISKIITECH13.HTM">"UNDERSTANDING APPLE II"</A> Jim Sather (encore lui!) a realisΘ un 
  57.     programme BASIC pour remettre ce code en ordre.  Ne vous fatiguez pas il est dans cette rubrique et d'autres qui 
  58.     seront indiquΘes plus loin.</FONT>
  59.     </TD>
  60. </TR>
  61. <TR> <TD COLSPAN="5" CLASS="PARAG1">
  62.     La comprΘhension du LSS est assez loin de l'Θvidence biblique que nous avons parfois rencontrΘe... ne dΘsespΘrons pas 
  63.     pour autant on va y arriver mais prΘparez les aspirines, le papier et les crayons. 
  64.     <BR><BR>
  65.     Si ce n'est pas facile α comprendre, dites vous qu'α expliquer ce n'est pas de la tarte non plus !
  66.     <BR><BR>
  67.     </TD>
  68. </TR>
  69. <TR> <TD COLSPAN="5" CLASS="TITRE3">ARCHITECTURE DU LOGIC STATE SEQUENCER (LSS)...</TD></TR>
  70. <TR> <TD COLSPAN="5" CLASS="PARAG1">
  71.     Le LSS a pour finalitΘs :<BR>
  72.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF"> de dΘfinir les nibbles sur la disquette α partir des pulses reτus 
  73.     du sytΦme de dΘtection MC3470.<BR>
  74.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF"> d'Θcrire les nibbles en faisant faire des inversions de signal<BR>
  75.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF"> de dΘterminer si la disquette est protΘgΘe en Θcriture (et τa lui sert d'initialisateur)
  76.     <BR><BR>
  77.     Le LSS communique avec le programme 6502 par l'intermΘdiaire du DATA REGISTER qui est le registre α travers lequel
  78.     transitent les valeurs lues ou Θcrites. IL faut savoir que <B> <FONT COLOR="RED">le LSS fonctionne 2 fois plus vite que le 6502 
  79.     c'est α dire α 2 Mhz</FONT></B>, ce qui n'est pas innocent Θvidement. 
  80.     Les deux schΘmas suivant vous expliquent le fonctionnement global du LSS.
  81.     <BR><BR>
  82.     <IMG SRC="LSS.PNG">
  83.     <BR><BR>
  84.     <IMG SRC="LSS1.PNG">
  85.     <BR><BR>
  86.     <FONT COLOR="RED"> IMPORTANT : On appelle QA le bit 7 du data register (c'est α dire le bit le plus significatif aussi Θcrit MSB=most signifiant 
  87.     bit en anglais). Quand on veut parler de son contenu, on utilise aussi QA pour dΘsigner la valeur 1.
  88.     Pour la diffΘrencier, on appelle QA' la situation o∙ le bit 7 = 0.</FONT>
  89.     <BR><BR>
  90.     </TD>
  91. </TR>
  92. <TR> <TD COLSPAN="5" CLASS="TITRE3">UN CODE PARTICULIER...</TD></TR>
  93. <TR> <TD COLSPAN="5" CLASS="PARAG1">
  94.     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 
  95.     que<FONT COLOR="RED"> chaque octet code α la fois le numΘro de sΘquence suivante et l'opΘration α faire.</FONT> La partie gauche correspond 
  96.     au numΘro de la prochaine sΘquence α exΘcuter, la partie de droite correspond α l'opΘration α effectuer.
  97.     </TD>
  98. </TR>
  99. <TR><TD ROWSPAN="2"><BR><IMG SRC="LSSCODE.PNG"  ></TD></TR>
  100. <TR> <TD  CLASS="PARAG1K" >
  101.     <BR>
  102.     Les opΘrations sont :
  103.     <BR><BR>  
  104.      code  0 (0000) CLR<BR>
  105.      code  8 (1000) NOP<BR>
  106.      code  9 (1001) SL0<BR>
  107.      code  D (1101) SL1<BR>
  108.      code  A (1010) SR<BR>
  109.      code  B (1011) LD<BR>
  110.     </TD>
  111.     <TD COLSPAN="3" CLASS="PARAG1K">
  112.     <BR><BR> <BR>
  113.      Efface le DATA REGISTER<BR>
  114.      Ne rien faire (le plus utilisΘ)<BR>
  115.      Shift un 0 dans le DATA REGISTER<BR>
  116.      Shift un 1 dans le DATA REGISTER<BR>
  117.      Lit le signal WRITE PROTECT<BR>
  118.      Charge le DATA REGISTER avec la donnΘe prΘsente sur le bus de donnΘes (DATA BUS)<BR>
  119.     </TD>
  120. </TR>
  121. <TR> <TD></TD>
  122.     <TD  COLSPAN="4" CLASS="PARAG1" BGCOLOR="BLUE" >
  123.     Les mnΘmoniques des codes controles ont une signification proche de celle des codes 
  124.     utilisΘs par les assembleurs α savoir:
  125.     <BR><BR>
  126.     </TD>
  127. </TR>
  128. <TR> <TD></TD> 
  129.     <TD   CLASS="PARAG1" BGCOLOR="BLUE" >
  130.                   SLx <BR>
  131.                   SR <BR>
  132.                   CLR <BR>
  133.                   NOP <BR>
  134.                   LD <BR>
  135.     </TD>
  136.     <TD  COLSPAN="3" CLASS="PARAG1" BGCOLOR="BLUE" >
  137.     "SHIFT LEFT" (la valeur x c'est-α-dire 0 ou 1) <BR>
  138.     "SHIFT RIGHT" (toujours la valeur 1 en fait) <BR>
  139.     "CLEAR"<BR>
  140.     "NO OPERATION"<BR>
  141.     "LOAD"<BR><BR>
  142.     </TD>
  143. </TR>
  144. <TR> <TD  COLSPAN="5" CLASS="PARAG1" >
  145.     Exemples :<BR><BR>
  146.     E0  signifie : Effacer le DATA REGISTER et allez en sΘquence E<BR>
  147.     68  signifie : Ne rien faire et allez en sΘquence 6<BR>
  148.     A8  signifie : Ne rien faire et allez en sΘquence A<BR>
  149.     2D  signifie : Place un 1 dans le DATA REGISTER et allez en sΘquence 2<BR>
  150.     59  signifie : Place un 0 dans le DATA REGISTER et allez en sΘquence 5
  151.     <BR><BR>
  152.     </TD>
  153. </TR>
  154. <TR> <TD  COLSPAN="5" CLASS="PARAG1" BGCOLOR="#303030" >
  155.     <FONT COLOR="RED"><B>TRES IMPORTANT :</B></FONT>
  156.     </TD>
  157. </TR>  
  158. <TR> <TD  COLSPAN="5" CLASS="PARAG1" >
  159.     <IMG SRC="../THEMAS/DIVERS/RMQ01.PNG"><BR>
  160.     La PROM P6 (tout comme la PROM P5) existe en DEUX VERSIONS TOTALEMENT DIFFERENTES :<BR><BR>
  161.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF">la version 13 secteurs (la plus ancienne utilisΘe de 1977 α 1980).<BR>
  162.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF">la version 16 secteurs (la plus rΘcente et que l'on trouve pratiquement α 
  163.     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 
  164.     pouvaient alors Ωtre remplacΘes par les nouvelles PROM trΦs aisΘment mais c'Θtait surtout indispensable pour pouvoir 
  165.     utiliser les nouveaux programmes Θcrit sous DOS 3.3 ou non, mais avec un secteur 0 de la piste 0 respectant les 
  166.     critΦres du format des 16 secteurs et dΘcrit plus bas.)
  167.     <BR><BR>
  168.     Les codes de base utilisΘs sont les mΩmes dans les deux versions. Par contre la programmation est diffΘrente. 
  169.     Par la suite nous allons examiner la PROM P6 16 secteurs car il y a trΦs peu de chances que vous rencontriez une
  170.     PROM P6 13 secteurs et de toute faτon les principes de fonctionnement sont trΦs proches. 
  171.     Je dΘtaillerai la PROM P6 13 secteurs plus tard...
  172.     <BR><BR>
  173.     Les identifiants des PROM sont les suivants
  174.     <BR><BR>
  175.     <IMG SRC="CODESPROM.PNG">
  176.     <BR><BR>
  177.     ATTENTION : La PROM P5 13 SECTEURS ne pourra pas lire correctement les disquettes formattΘes en 16 secteurs mais 
  178.     PAR CONTRE la PROM P6 16 SECTEURS sait lire  PARFAITEMENT les disquettes formattΘes en 13 secteurs, et ce, malgrΘ
  179.     une modification de timing sur la carte analogique des drives spΘcifiquement pour lire les disquettes 
  180.     en 16 secteurs (il s'agit de la rΘsistance R21 transformΘe en potentiomΦtre)
  181.     <BR><BR>
  182.     </TD>
  183. </TR>
  184. <TR> <TD  COLSPAN="5" CLASS="PARAG1" >
  185.     <IMG SRC="../THEMAS/DIVERS/RMQ02.PNG"><BR>
  186.     Si les disquettes 13 secteurs ne bootent pas sur un contr⌠leur de disquette qui a les PROM 16 SECTEURS ce n'est liΘ 
  187.     <B><FONT COLOR="RED">QU'A LA SEULE PROM P5</FONT></B> et non la PROM P6 !!!! Quelle que soit la version de la 
  188.     PROM P5 (13 ou 16 secteurs) il faut    en fait comprendre que la PROM concernΘe doit pouvoir lire  au moins le 
  189.     secteur 0 de la piste 0 selon un codage et des marqueurs de champs prΘcis α savoir :
  190.     <BR><BR>
  191.     Pour la PROM P5 associΘe α la P6 13 SECTEURS : 
  192.     <BR><BR>
  193.             codage 5.3 <BR>
  194.             marqueurs du champ adresse D5 AA B5 et DE AA EB<BR>
  195.             marqueurs du champ de donnΘes D5 AA AD et DE AA EB.<BR>
  196.      <BR><BR>
  197.     Pour la PROM P5 associΘe α la P6 16 SECTEURS : <BR>
  198.             codage 6.2<BR>
  199.             marqueurs du champ adresse D5 AA 96 et DE  AA EB <BR>
  200.             marqueurs du champ de donnΘes D5 AA AD et DE AA EB.<BR>
  201.     <BR><BR>
  202.     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 
  203.     relative au <A HREF="DISKIITECH08.HTM">BOOTSTRAP</A>
  204.     </TD>
  205. </TR>
  206. <TR> <TD  COLSPAN="5" CLASS="PARAG1" HEIGHT="10" ></TD></TR>
  207. <TR> <TD COLSPAN="5" CLASS="TITRE3">UN CODE EN 16 SEQUENCES</TD></TR>
  208. <TR> <TD COLSPAN="5" CLASS="PARAG1">
  209.     Les 256 octets de la PROM sont organisΘs pour Ωtre utilisΘs en continu α travers une suite de 16 sΘquences. 
  210.     Cela s'apparente α une machine α Θtats. Gros malins que vous Ωtes vous avez compris que s'il y a 16 sΘquences
  211.     et que si chaque octet se suffit α lui-mΩme, il va y en avoir trop !
  212.     <BR><BR>
  213.     Eh bien non, car  il y a 16 groupes de 16 sΘquences de 1 octet soit 256 donc la totalitΘ...
  214.     <BR><BR>
  215.     Il y a deux grands groupes : READ et WRITE<BR>
  216.     A l'intΘrieur de chacun de ces groupes, le SEQUENCER exΘcute les sΘquences α partir de la premiΦre qui est 
  217.     numΘrotΘe 0. L'horloge du LSS permet de changer de sΘquence en fonction du code de la sΘquence en cours
  218.     MAIS EGALEMENT en fonction des Θvenements reτus ET PRESENTS on exΘcute le code de la sΘquence de la 
  219.     colonne qui correspond bien α la rΘunion de ces Θvenements que sont : <BR>
  220.     PULSE / NO PULSE <BR>
  221.     QA' (bit 7 α 0) / QA (bit 7 α 1) <BR>
  222.     SHIFT / LOAD 
  223.     <BR><BR>
  224.     Exemple <BR>
  225.     je suis en sΘquence numΘro B du mode READ, si les Θvenements sont :<BR>
  226.             Etre en mode SHIFT<BR>
  227.             Le bit 7 est α 0<BR>
  228.             Je n'ai pas reτu de pulse<BR>
  229.     alors j'exΘcute le code 59 qui signifie "fait un SHIFT LEFT de 0 et passe en sΘquence 5"
  230.     <BR><BR>
  231.     Pour la mΩme sΘquence numΘro B du mode READ, si les Θvenements sont :<BR>
  232.             Etre en mode SHIFT<BR>
  233.             Le bit 7 est α 0<BR>
  234.             je reτois un pulse<BR>
  235.     alors j'exΘcute le code D9 qui signifie "fait un SHIFT LEFT de 0 et passe en sΘquence D"<BR>
  236.  
  237.     <BR><BR>
  238.     Cela signifie que si un Θvenement arrive α un moment donnΘ sur une sΘquence donnΘe, 
  239.     le code exΘcutΘ est celui qui correspond aux dits Θvenements : on se balance donc en permanence d'une colonne α 
  240.     une autre selon ceux-ci. 
  241.     <BR><BR>
  242.     Quand aucun Θvenement n'intervient on reste dans la mΩme colonne. ATTENTION α l'Θvenement PULSE, dΦs que 
  243.     l'horloge du sΘquencer fait passer α la sΘquence suivente, le PULSE a disparu on passera donc en NO PULSE. 
  244.     Tout cela sera revu en dΘtail plus loin
  245.     <BR><BR>
  246.     <IMG SRC="LSS2.PNG">
  247.     <BR><BR>
  248.     <BR><BR>
  249.     </TD>
  250. </TR>
  251. <TR>     <TD COLSPAN="5"  CLASS="TITRE3K"><IMG SRC="../THEMAS/DIVERS/CRACK.BMP"> HACKING CORNER </TD></TR>
  252. <TR> <TD COLSPAN="5" CLASS="PARAG1K">
  253.     En examinant les codes du tableau ci-dessus on peut constater un certain nombre de choses intΘressantes :
  254.     <BR><BR>
  255.     1. Lorsque l'on est en mode Θcriture (WRITE) les tableaux PULSE et NO PULSE sont strictement identiques... pourquoi ?
  256.     Eh bien de toute faτon quand on Θcrit sur la disquette le LSS reτoit effectivement des pulses 
  257.     (cf. brochage du dessin prΘcΘdant) ce qui est tout α fait normal mais ceux ci-doivent Ωtre ignorΘs car on est en 
  258.     train d'Θcrire et on se fiche eperduement de ce qui pouvait Ωtre Θcrit auparavant donc cela explique
  259.     le pourquoi des deux tableaux identiques. Bien Θvidement le dΘroulement du code se passe tant⌠t sur l'un tant⌠t 
  260.     sur l'autre mais les opΘrations sont absolument identiques.    
  261.     <BR><BR>
  262.     2. Toujours en mode Θcriture on notera la parfaite symΘtrie des opΘrations LOAD et SHIFT qui impose l'Θcriture 
  263.     en 32 cycles d'un nibble de 8 bits. Nous verrons dans le mode dΘtaillΘ du fonctionnement de ces sΘquences ce qui
  264.     se passe dΦs lors que l'on dΘpasse ce nombre de cycles... l'introduction d'extrabits α 0. Mais on verra aussi ce 
  265.     qui se passe si l'on ne respecte pas ce timing de 32 cycles (4 cycles par bit)
  266.     <BR><BR>
  267.     3. L'opΘration READ/LOAD (les 4 colonnes en bas α droite) correspond au test WRITE PROTECT. Quelle que soit
  268.     la sΘquence dans laquelle on entre ou quel que soit le temps que l'on mette pour lire le DATA REGISTER, ce dernier 
  269.     est immΘdiatement positionnΘ α la valeur ad hoc... puisque le test est un BMI donc sur le bit 7...
  270.     <BR><BR>
  271.     Maintenant si vous Ωtes arrivΘs jusqu'ici c'est excellent, nous allons essayer de continuer sans les aspirines. 
  272.     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 
  273.     vraiment essayΘ de faire didactique. Donc... lisez et relisez en essayant de comprendre, en cas d'insommies 
  274.     pendant plusieurs jours n'hΘsitez pas α envoyer un mail via la rubrique "contact".
  275.     <BR><BR>
  276.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF"><A HREF="DISKIITECH07B.HTM">DETAIL DU FONCTIONNEMENT POUR L'OPERATION "READ"</A>
  277.     <BR><BR>
  278.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF"><A HREF="DISKIITECH07C.HTM">DETAIL DU FONCTIONNEMENT POUR L'OPERATION "WRITE"</A><BR>
  279.     </TD>
  280. </TR>
  281. </TABLE>
  282.  
  283.  
  284.  
  285.  
  286. <TABLE border="0" cellspacing="0" cellpadding="0" width="700">
  287. <TR>     <TD WIDTH="150"></TD> 
  288.     <TD WIDTH="100"></TD> 
  289.     <TD WIDTH="250"></TD>
  290.     <TD WIDTH="10"></TD>
  291.     <TD WIDTH="190"></TD>
  292. </TR>
  293. <TR> <TD COLSPAN="5" height="10"> </TD>  </tr>
  294. <TR>    <TD COLSPAN="5" CLASS="PARAG1"> <CENTER> 
  295.     <A HREF="DISKIITECH04A.HTM"> <img  src="../THEMAS/DIVERS/PRIOR1.PNG" BORDER=0></A>
  296.     <A HREF="DISKIITECH05.HTM"> <img  src="../THEMAS/DIVERS/SUITE1.PNG" BORDER=0></A>
  297.     </CENTER>
  298.     </TD>
  299. </TR>
  300. <TR> <TD COLSPAN="5" height="10"> </TD>  </tr>
  301. <TR><TD COLSPAN="5"  ><HR color="BLUE"></td>
  302. </TR>
  303. <TR> 
  304.     <TD COLSPAN="5">  
  305.     <CENTER>
  306.     <A HREF="javascript:history.back()"> <IMG SRC="../THEMAS/DIVERS/JSBACK.PNG"></A> 
  307.     <A HREF="DISKIITECH.HTM" > <IMG SRC="../THEMAS/DIVERS/HOMESITE.PNG"></A>
  308.     </CENTER></TD>
  309. </TR>
  310. </TABLE></CENTER>
  311. </BODY>
  312. </HTML>
  313.