home *** CD-ROM | disk | FTP | other *** search
/ hackzapple.com / www.hackzapple.com.tar / www.hackzapple.com / DISKII / DISKIITECH06C.HTM.orig < prev    next >
Text File  |  2010-10-06  |  9KB  |  168 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="DISK06"></A>
  23. <TABLE border="0" cellspacing="0" cellpadding="0" width="700">
  24. <TR>     <TD WIDTH="40"></TD> 
  25.     <TD WIDTH="120"></TD> 
  26.     <TD WIDTH="340"></TD>
  27.     <TD WIDTH="200"></TD> </TR>
  28.  
  29. <TR>     <TD COLSPAN="4" valign="TOP" > <img src="../THEMAS/M3/XDISK6C.PNG" BORDER=0></TD></TR>  
  30. <TR>    <TD COLSPAN="4" CLASS="PARAG1K"> 
  31.     Une table de translation sert, comme le nom l'indique, α translater une valeur en un nibble 
  32.     pouvant Ωtre Θcrit sur la disquette.  Les nibbles ont ΘtΘ dΘtaillΘs dans la rubrique trΦs astucieusement nommΘe 
  33.     <A HREF="DISKIITECH02A.HTM">Les "nibbles"</A>. Rubrique qui expliquait comment et pourquoi on obtient ce tableau
  34.     des nibbles valides en DOS 3.3.
  35.     <BR><BR>
  36.     <IMG SRC="NIBBLES33A.PNG">
  37.     <BR><BR></TD>
  38.     </TR>
  39. <TR>    <TD COLSPAN="4" CLASS="PARAG1" BGCOLOR="BLUE"> 
  40.     <B>Mais ATTENTION en DOS 3.3 il y a DEUX TABLES DE TRANSLATION :<BR>
  41.               < une table de translation pour l'Θcriture en $BA29<BR>
  42.               < une table de translation pour la lecture en $BA96</B>
  43.     <BR><BR>
  44.     </TD>
  45. </TR>
  46. <TR>    <TD COLSPAN="4" HEIGHT="10"> </TD></TR>
  47. <TR>    <TD COLSPAN="4" CLASS="TITRE1">LA TABLE DE TRANSLATION POUR L'ECRITURE</TD></TR> 
  48. <TR>    <TD COLSPAN="4" CLASS="PARAG1K"> 
  49.     La mΘthode de l'Θcriture des donnΘes en DOS 3.3 peut Ωtre dΘcomposΘe en 4 phases.
  50.     <BR><BR>
  51.     <FONT COLOR="RED"><B>1. Transformation d'une page de 256 octets en deux buffers NBUF1 et NBUF2</B></FONT> 
  52.     <BR><BR>
  53.     Cette opΘration permet de transformer des octets en valeurs de la forme 00xx.xxxx donc avec une valeur maximale = $3F 
  54.     (Voir la rubrique : <A HREF="DISKIITECH05A.HTM">PRENIBBILIZATION</A>)
  55.     <BR><BR>
  56.     <FONT COLOR="RED"><B>2. Effectuer un EOR entre deux valeurs successives de donnΘes </B></FONT> 
  57.     <BR><BR>
  58.     On prend chaque valeur (de NBUF2 puis NBUF1) et on opΦre  un calcul EOR entre la dite valeur et la prΘcΘdante de
  59.     faτon α obtenir une valeur rΘsultante. Pour la premiΦre valeur on fait l'EOR avec la valeur $00. <BR>
  60.     La valeur sera toujours de la forme 00xx.xxxx. Elle donc varie de $00 α $3F ce qui est prΘcisΘment la taille 
  61.     de la table de translation en Θcriture (NIBL) qui sera utilisΘe.   
  62.     (Voir la rubrique : <A HREF="DISKIITECH06D.HTM">EORING DU CHAMP DE DONNEES</A>) A noter que ce calcul
  63.     permet de dΘfinir la valeur du checksum qui sera Θcrit comme dernier nibble du secteur juste avant les 
  64.     marqueurs de fin (DE AA EB)
  65.     <BR><BR>
  66.     <FONT COLOR="RED"><B>3. RΘcupΘration du nibble en table NIBL</B></FONT>
  67.     <BR><BR>
  68.     La valeur calculΘe de la faτon dΘcrite ci-dessus sera placΘe dans le registre d'index X qui contiendra 
  69.     alors une valeur comprise entre $00 et $3F.  On se sert de X comme index pour charger dans A la valeur 
  70.     du nibble α Θcrire  par la ligne d'instructions LDA NIBL,X <BR>
  71.     Cela permet de prendre dans la  table de translation NIBL la valeur du nibble indexΘ par X. 
  72.     qui correspondra de fait α la valeur cet index. 
  73.     <BR><BR>
  74.     La table de translation pour Θcrire se situe α l'adresse $BA29. Elle contient donc les valeurs suivantes dans 
  75.     cet ordre<BR><BR>
  76.     96 97 9A 9B 9D 9E 9F A6 A7 AB AC AD AE AF B2 B3 B4 B5 B6 B7 B9 BA BB BC BD BE BF CB CD CE CF D3<BR> 
  77.     D6 D7 D9 DA DB DC DD DE DF E5 E6 E7 E9 EA EB EC ED EE EF F2 F3 F4 F5 F6 F7 F9 FA FB FC FD FE FF<BR>
  78.     <BR><BR>
  79.     Ainsi quand X = 0 l'opΘration LDA NIBL,X     charge A avec la valeur $96 qui est un nibble valide devant Ωtre Θcrit sur la
  80.     disquette. Avec X = 1 ce sera le nibble $98, avec X = 3 ce sera le nibble $9A, avec X = 4 ce sera le nibble $9B et ainsi
  81.     de suite. 
  82.     <BR><BR>
  83.     <IMG SRC="TRANSDOS33.PNG">
  84.     <BR><BR>
  85.     <FONT COLOR="RED"><B>4. Ecriture du nibble contenu dans A sur la disquette.</B></FONT>
  86.     <BR><BR>
  87.     Le source de la routine d'Θcriture en DOS 3.3 est dΘtaillΘe dans les deux rubriques :
  88.     <BR><BR>
  89.               < <A HREF="DISKIITECH06A.HTM">ECRITURE DE L'ENTETE ADRESSE</A> 
  90.     <BR><BR>
  91.               < <A HREF="DISKIITECH06B.HTM">ECRITURE DU CHAMP DES DONNEES</A> 
  92.     <BR><BR>
  93.     <IMG SRC="TRANSLATE33.PNG">
  94.     </TD>
  95. </TR>
  96. <TR>    <TD COLSPAN="4" HEIGHT="10"> </TD></TR>
  97. <TR>    <TD COLSPAN="4" CLASS="TITRE1">LA TABLE DE TRANSLATION POUR LA LECTURE</TD></TR> 
  98. <TR>    <TD COLSPAN="4" CLASS="PARAG1K"> 
  99.     Cette table se trouve α l'adresse $BA96 pour le DOS 3.3. Pour des raisons de simplicitΘ, il y a un IMPERATIF de 
  100.     positionnement de cette table.  En effet on opΘre exactement α l'inverse de l'Θcriture mais cette fois les valeurs 
  101.     qui seront dans l'index seront des nibbles et par consΘquent la plage des valeurs varie de $96 α $FF ... 
  102.     avec des impossiblitΘs (exemple $98, $A8     etc... bref regardez le tableau ci-dessous pour les voir.)
  103.     <BR><BR>
  104.     Si la table est placΘe de $BA96 α $BAFF ce n'est donc pas neutre, cela permet de rΘcupΘrer la valeur correspondant 
  105.     α un nibble lu par une simple instruction d'indexation sur la base $BA00. Voilα la raison de l'impΘratif de 
  106.     positionnement, mais on notera qu'elle pourrait tout aussi bien Ωtre α un autre endroit de la forme XX96.
  107.     <BR><BR>
  108.     Cependant si vous envisagiez de ne pas prendre une adresse de stockage de la forme XX96 vous allez 
  109.     certainement faire un changement de page de temps α autre lors de l'opΘration d'indexation, ce qui augmente 
  110.     d'un cycle  chaque opΘration...pas gravissime en lecture mais pas nΘcessairement gΘnial !
  111.     <BR><BR>
  112.     Voici la table en mΘmoire α partir de $BA96
  113.     <BR><BR>
  114.     <IMG SRC="TRANSLATE33A.PNG">
  115.     <BR><BR>
  116.     Le fonctionnement pour la lecture est expliquΘ sur le schΘma suivant
  117.     <BR><BR>
  118.     <IMG SRC="TRANSLATE33B.PNG">
  119.     <BR><BR>
  120.     Notez bien que si par un mystΦre le nibble lu n'est pas un nibble valide, l'opΘration EOR se fera avec cette valeur
  121.     elle-mΩme. En examinant bien la table de translation de lecture, vous noterez que les valeurs d'index qui Θtaient 
  122.     utilisΘes pour l'Θcriture sont les valeurs que l'on retrouve positionnΘes exactement α la place du nibble qui leur 
  123.     correspondait (ce qui est assez heureux...) 
  124.     </TD>
  125. </TR>
  126. <TR>    <TD COLSPAN="4" HEIGHT="10"> </TD></TR>
  127. <TR>    <TD COLSPAN="4" CLASS="TITRE1">EXEMPLES EN ECRITURE ET LECTURE</TD></TR> 
  128. <TR>    <TD COLSPAN="4" CLASS="PARAG1K"> 
  129.     <BR><BR>
  130.     L'index $3F de la table de translation pour l'Θcriture renvoit le nibble $FF qui est alors Θcrit sur la disquette<BR>
  131.     Le nibble $FF lu sur la disquette et utilisΘ comme index pour l'opΘration EOR renvoit la valeur de l'adresse $BAFF 
  132.     dans la table de translation utilisΘe en lecture soit $3F... ce qui est parfaitement symΘtrique. 
  133.      <BR><BR>
  134.      <IMG SRC="TRANSLATE33C.PNG">
  135.     <BR><BR>
  136.     Si vous tripotez la table de translation, pensez bien α le faire sur 
  137.     les deux (ecriture et lecture) de faτon SYMETRIQUE.  Votre DOS modifiΘ ne pourra pas lire les disquettes normales
  138.     mais le DOS 3.3 ne pourra pas lire vos disquettes...
  139.      <BR><BR>
  140.     L'exemple le plus visible reste celui de la valeur $00 qui donne le nibble $96. Lorsque vous regardez une piste 
  141.     d'une disquette vierge initialisΘe en DOS 3.3 (au delα de la 2 si possible) avec
  142.     un utilitaire qui vous affiche les pistes en format brut (BAG OF TRICK, CIA etc...) vous voyez de grandes zones 
  143.     de $96. C'est parce que le buffer des donnΘes α Θcrire Θtant rempli de 0, l'opΘration EOR $00 avec $00 donne toujours $00
  144.     et vous avez tous ces $96. Notez au passage que si vous voyez sur une disquette protΘgΘe des grandes zones avec une autre
  145.     valeur, il n'est pas improbable que le malin ait modifiΘ les tables de translation : pas une certitude, juse un indice.
  146.     <BR><BR>
  147.     </TD>
  148. </TR>
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155. <TR> <TD COLSPAN="4" height="10"></TD>  </tr>
  156. <TR><TD COLSPAN="4"><HR color="BLUE"></td>
  157. </TR>
  158. <TR> 
  159.     <TD COLSPAN="4">  
  160.     <CENTER>
  161.     <A HREF="javascript:history.back()"> <IMG SRC="../THEMAS/DIVERS/JSBACK.PNG"></A> 
  162.     <A HREF="DISKIITECH.HTM" > <IMG SRC="../THEMAS/DIVERS/HOMESITE.PNG"></A>
  163.     </CENTER></TD>
  164. </TR>
  165. </TABLE></CENTER>
  166. </BODY>
  167. </HTML>
  168.