home *** CD-ROM | disk | FTP | other *** search
/ hackzapple.com / www.hackzapple.com.tar / www.hackzapple.com / DISKII / DISKIITECH05.HTM.orig < prev    next >
Text File  |  2010-10-06  |  12KB  |  256 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. <A NAME="DISK05"></A>
  21. <TABLE border="0" cellspacing="0" cellpadding="0" width="700">
  22. <TR> 
  23.     <TD WIDTH="200"> </TD> 
  24.     <TD WIDTH="100"> </TD> 
  25.     <TD WIDTH="200"></TD> 
  26.     <TD WIDTH="10"></TD> 
  27.     <TD WIDTH="190"></TD> 
  28. </TR>
  29.  
  30. <TR>     <TD COLSPAN="4" valign="TOP" > <img src="../THEMAS/M3/XDISK5.PNG" BORDER=0></TD>  
  31.     <TD> 
  32.     <CENTER>
  33.     <A HREF="DISKIITECH07A.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="DISKIITECH06.HTM" ><img  src="../THEMAS/DIVERS/SUITE1.PNG" BORDER=0></A>
  36.     </CENTER>
  37.     </TD>
  38. </TR>
  39. <TR> <TD COLSPAN="5" HEIGHT="10"></TD></TR>
  40. <TR>     <TD COLSPAN="5"  CLASS="TITRE3"> <FONT COLOR="RED"><B>Pourquoi un codage ?</B></FONT></TD></TR>
  41. <TR> <TD COLSPAN="5" HEIGHT="1" BGCOLOR="RED"></TD></TR>
  42. <TR>     <TD COLSPAN="5"  CLASS="PARAG1">
  43.     Nous avons vu dans la partie relative aux <A HREF="DISKIITECH02A.HTM">nibbles</A> que les valeurs qui peuvent 
  44.     Ωtre Θcrites sur la disquette    doivent respecter un certain nombre de contraintes et que consΘquent 
  45.     la plage des valeurs de $00 α $FF     ne peut physiquement pas Ωtre Θcrite (et relue) il faut donc opΘrer 
  46.     ce que l'on appelle un codage pour     translater les valeurs des octets de donnΘes en nibbles. Bien Θvidement 
  47.     on Θcrit les donnΘes par blocs de 256 octets, ce qui est la taille d'un secteur quand il est en mΘmoire... 
  48.     mais plus grand quand il est sur la disquette.
  49.     <BR><BR>
  50.     Il y a en fait trois types de codages standards:<BR><BR>
  51.               <IMG SRC="../THEMAS/DIVERS/BULLET.GIF">LE CODAGE 4.4<BR>
  52.               <IMG SRC="../THEMAS/DIVERS/BULLET.GIF">LE CODAGE 5.3<BR>
  53.               <IMG SRC="../THEMAS/DIVERS/BULLET.GIF">LE CODAGE 6.2<BR>
  54.     </TD>
  55. </TR>
  56. <TR> <TD COLSPAN="5" HEIGHT="10"></TD></TR>
  57. <TR>     <TD COLSPAN="5"  CLASS="TITRE3">  <B>LE CODAGE 4.4</B></TD></TR>
  58. <TR> <TD COLSPAN="5" HEIGHT="1" BGCOLOR="BLUE"></TD></TR>
  59. <TR>     <TD COLSPAN="5"  CLASS="PARAG1">
  60.     Nous avons vu que la contrainte gΘnΘrale est d'avoir une densitΘ de signaux suffisante et qu'en particulier 
  61.     le bit 7 doit Ωtre α 1 : le principe du codage 4.4 rΘpond α ces exigences en imposant de ne JAMAIS rencontrer 
  62.     deux 0 de suite.
  63.     <BR><BR>
  64.     Pour cela un octet donnΘ est Θcrit avec deux nibbles, chacun comportant la moitiΘ des bits de l'octet 
  65.     de donnΘe que l'on intercale entre des 1. Pour comprendre voici le mode opΘratoire :
  66.     <BR><BR>
  67.     Soit un octet de valeur xyxy.xyxy  et on se fiche que x et y reprΘsentent des 1 ou des 0<BR>
  68.     on fait d'abord une opΘration ORA avec la valeur $AA (soit 1010.1010)  
  69.     <BR><BR>
  70.     on obtiendra alors un  rΘsultat Y= 1y1y.1y1y  ce qui permet d'isoler les y 
  71.     <BR><BR>
  72.     ensuite on dΘcale les bits de xyxy.xyxy  vers la droite avec LSR le rΘsultat sera 0xyx.yxyx<BR>
  73.     puis on procΦde  α un AND entre ce rΘsultat et $AA (soit 1010.1010)  <BR>
  74.      on obtiendra alors un  rΘsultat X= 1x1x.1x1x  ce qui permet cette fois d'isoler les x.
  75.     <BR><BR>
  76.     Les deux rΘsultats Y et X sont des valeurs de nibble TOUJOURS valables car elles ont le bit 7 α 1 et 
  77.     n'auront JAMAIS deux 0 de suite c'est mathΘmatiquement impossible du fait des opΘrations logiques
  78.     qui viennent d'Ωtre effectuΘes. On constate donc que notre octet de donnΘe se trouve maintenant placΘ
  79.     au sein de deux nibbles par sΘparation de ses bits en deux groupes de 4. 
  80.     <BR><BR>
  81.     <B><U>Prenons l'exemple avec le pire des cas : $00</U> </B>
  82.     <BR><BR>
  83.     C'est bien lα le pire exemple car nous avons le maximum de 0 qui se suivent et qu'il n'est pas 
  84.     possible d'Θcrire (et surtout de relire) sur une disquette APPLE II. Pour comprendre et permettre une 
  85.     bonne visualisation de ce qui se passe avec les bits de l'octet de donnΘe, ils ont ΘtΘ colorΘs.<BR><BR>
  86.     "<FONT COLOR="RED">0</FONT>
  87.     <FONT COLOR="YELLOW">0</FONT>
  88.     <FONT COLOR="RED">0</FONT>
  89.     <FONT COLOR="YELLOW">0</FONT>
  90.     .<FONT COLOR="RED">0</FONT>
  91.     <FONT COLOR="YELLOW">0</FONT>
  92.     <FONT COLOR="RED">0</FONT>
  93.     <FONT COLOR="YELLOW">0</FONT>"  ORA "1010.1010" donnera 
  94.     "1
  95.     <FONT COLOR="YELLOW">0</FONT>
  96.     1
  97.     <FONT COLOR="YELLOW">0</FONT>
  98.     .1
  99.     <FONT COLOR="YELLOW">0</FONT>
  100.     1
  101.     <FONT COLOR="YELLOW">0</FONT>"
  102.     <BR><BR>
  103.     LSR 
  104.     "<FONT COLOR="RED">0</FONT>
  105.     <FONT COLOR="YELLOW">0</FONT>
  106.     <FONT COLOR="RED">0</FONT>
  107.     <FONT COLOR="YELLOW">0</FONT>
  108.     .<FONT COLOR="RED">0</FONT>
  109.     <FONT COLOR="YELLOW">0</FONT>
  110.     <FONT COLOR="RED">0</FONT>
  111.     <FONT COLOR="YELLOW">0</FONT> "
  112.     donnera 
  113.     "0
  114.     <FONT COLOR="RED">0</FONT>
  115.     <FONT COLOR="YELLOW">0</FONT>
  116.     <FONT COLOR="RED">0</FONT>
  117.     .<FONT COLOR="YELLOW">0</FONT>
  118.     <FONT COLOR="RED">0</FONT>
  119.     <FONT COLOR="YELLOW">0</FONT>
  120.     <FONT COLOR="RED">0</FONT>"  Le premier 0 (bit 7) vient de l'opΘration LSR elle-mΩme.
  121.     <BR><BR>
  122.     et cette derniΦre valeur ORA "1010.1010" donnera 
  123.     "1
  124.     <FONT COLOR="RED">0</FONT>
  125.     1
  126.     <FONT COLOR="RED">0</FONT>
  127.     .1
  128.     <FONT COLOR="RED">0</FONT>
  129.      1
  130.     <FONT COLOR="RED">0</FONT>" 
  131.     <BR><BR>
  132. Les deux valeurs obtenues α savoir
  133.     "1
  134.     <FONT COLOR="YELLOW">0</FONT>
  135.     1
  136.     <FONT COLOR="YELLOW">0</FONT>
  137.     .1
  138.     <FONT COLOR="YELLOW">0</FONT>
  139.     1
  140.     <FONT COLOR="YELLOW">0</FONT>"
  141. et
  142.     "1
  143.     <FONT COLOR="RED">0</FONT>
  144.     1
  145.     <FONT COLOR="RED">0</FONT>
  146.     .1
  147.     <FONT COLOR="RED">0</FONT>
  148.     1
  149.     <FONT COLOR="RED">0</FONT>" 
  150.     sont des valeurs parfaitement autorisΘes. On retrouve notre octet de donnΘe codΘ en 4.4 
  151.     car il y a 4 bits dans chaque nibble (subtile dΘsignation α l'Θvidence... qui permet de comprendre le terme "nibble" 
  152.     qui signifie "grignoter")
  153.     <BR><BR>
  154.     <CENTER><IMG SRC="CODE44.PNG"></CENTER>
  155.     <BR><BR>
  156.     Le processus inverse pour retrouver la valeur de la mΘmoire α partir des deux nibbles Θcrits sur la disquette est
  157.     aussi trΦs simple, le schΘma suivant vous montre comment cela se passe avec d'autres opΘrations boolΘennes.
  158.     <BR><BR>
  159.     <CENTER><IMG SRC="CODE44REV.PNG"></CENTER>
  160.     <BR><BR>
  161.     <B><FONT COLOR="RED">POURQUOI CE CODAGE EST-IL INTERESSANT ?</FONT></B> 
  162.     <BR><BR>
  163.     Certes l'inconvΘnient majeur de ce codage est de nΘcessiter 2 nibbles pour Θcrire un octet... 
  164.     et α ce rythme la    disquette serait remplie rapidement ! Cependant les intΘrΩts du codage 4.4 sont multiples <BR>
  165.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF">Il est s√r<BR>
  166.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF">Il ne nΘcessite pas de table de translation (voir les deux autres codages)<BR>
  167.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF">Il peut Ωtre dΘcodΘ α la volΘe en lisant la disquette.
  168.     <BR><BR>
  169.     C'est pour cette raison que le numΘro de volume, le numΘro de piste, le numΘro de secteur et le checksum 
  170.     du champ d'entΩte de secteur sont ainsi codΘs, cela Θvite de laisser passer la zone des donnΘes si le programme
  171.     devait faire un dΘcodage de ces informations par un systΦme plus lent.
  172.     <BR>
  173. </TD>
  174. </TR>
  175. <TR> <TD COLSPAN ="5" CLASS="TITRE3K"> <IMG SRC="../THEMAS/DIVERS/CRACK.BMP"> Hacking corner </TD></TR>
  176. <TR> <TD COLSPAN ="5" CLASS="PARAG1K">
  177.     <BR>  
  178.     Attention ce codage  est utilisΘ par de nombreux systΦmes de protection qui alternent joyeusement 
  179.     les dΘcalages α droite ou α gauche,  mais cela reste toujours aisΘ α comprendre. Pour les Θditeurs de jeux 
  180.     qui ne sont pas obligatoirement trΦs soucieux de la place α utiliser cela permet surtout des chargements 
  181.     rapides avec des routines parfaitement minimalistes.
  182.     <BR><BR>     
  183.     </TD>
  184. </TR>
  185. <TR> <TD COLSPAN="5" HEIGHT="10"></TD></TR>
  186. <TR>     <TD COLSPAN="5"  CLASS="TITRE3"><B>LE CODAGE 5.3</B> </TD></TR>
  187. <TR> <TD COLSPAN="5" HEIGHT="1" BGCOLOR="BLUE"></TD></TR>
  188. <TR>     <TD COLSPAN="5"  CLASS="PARAG1">
  189.     Le codage 5.3 permet au moyen de l'utilisation d'une table de translation d'Θcrire plus de valeurs possibles
  190.     sur la disquette
  191.     Nous venons de voir que le codage 4.4 malgrΘ tous ces avantages avait l'inconvΘnient majeur de consommer
  192.     de la place sur la disquette. En effet pour coder un secteur de 256 octets il faut Θcrire 512 nibbles!
  193.     En clair la table de translation si elle existait serait de 16 octets (indexation sur des valeurs α 4 bits
  194.     maximum) 
  195.     <BR><BR>
  196.     Le DOS 3.2 augmente la taille de cette table α 32 ce qui permet de stocker les 256 octets de donnΘes 
  197.     avec moins de nibbles et en l'occurence 410. Soit un gain de (512-410) /512 = 19,92% bref 20%
  198.     </TD>
  199. </TR>
  200. <TR> <TD COLSPAN="5" HEIGHT="10"></TD></TR>
  201. <TR>     <TD COLSPAN="5"  CLASS="TITRE3"><B>LE CODAGE 6.2</B></TD></TR>
  202. <TR> <TD COLSPAN="5" HEIGHT="1" BGCOLOR="BLUE"></TD></TR>
  203. <TR>     <TD COLSPAN="5"  CLASS="PARAG1">
  204.     Avec des restrictions moins grandes que le prΘcΘdent, le DOS 3.3 augmente la taille de la table α 64 valeurs
  205.     ce qui permet de stocker les 256 octets de donnΘes avec 342 nibbles soit un gain de 49,71% par rapport 
  206.     au codage 4.4 et de 24,90% par rapport au codage 5.3... pas rien tout de mΩme ! 
  207.     </TD>
  208. </TR>
  209. <TR>     <TD COLSPAN="5"  CLASS="PARAG1">
  210.     Soit BUFFER la zone o∙ se trouvent les octets de donnΘes, on utiliser deux autres buffers astucieusement nommΘs
  211.     BUF1, buffer principal de 256 octets, et BUF2, buffer secondaire de 86 octets. La technique est alors simple 
  212.     il suffit de faire glisser 2 bits de chacun des octets de donnΘe de BUFFER dans BUF2 et de placer les 6 restant
  213.     dans BUF1. C'est le r⌠le de la routine de prΘnibbilization expliquΘe par le graphique suivant. Le source 
  214.     particuliΦrement lumineux est expliquΘ ensuite.
  215.     <BR><BR>
  216.     <CENTER><IMG SRC="NIBBILIZATION33.PNG" ALT="PRENIBBILIZATION ET NIBBILIZATION"></CENTER>
  217.     </TD>
  218. </TR>
  219. <TR>     <TD COLSPAN="5"  CLASS="PARAG1">
  220.     Le source de la routine de prΘnibbilization utilisΘe par le DOS 3.3 est la suivante :<A HREF="DISKIITECH05A.HTM">PRENIB</A>
  221.     <BR><BR>
  222.     Le source de la routine de postnibbilization utilisΘe par le DOS 3.3 est la suivante :<A HREF="DISKIITECH05B.HTM">POSTNIB</A>
  223.     <BR><BR>
  224.     Attention : PRODOS utilise bien le codage 6.2, Θcrit sur la disquette EXACTEMENT la mΩme chose que ce que ferait le DOS 3.3    
  225.     pour enregistrer une page de donnΘes MAIS les routines sont TOTALEMENT DIFFERENTES, beaucoup plus rapides et plus 
  226.     flexibles au sens o∙ la page mΘmoire α Θcrire peut Ωt α cheval sur deux pages en mΘmoire. Ces routines
  227.     sont expliquΘes dans la    rubrique <A HREF="DISKIITECH06E.HTM">LA METHODE PRODOS</A>
  228.     </TD>
  229. </TR>
  230.  
  231.  
  232. <TR> <TD COLSPAN="5" height="10"></TD>  </tr>
  233. <TR>    <TD COLSPAN="5" CLASS="PARAG1"> <CENTER> 
  234.     <A HREF="DISKIITECH07A.HTM"> <img  src="../THEMAS/DIVERS/PRIOR1.PNG" BORDER=0></A>
  235.     <A HREF="DISKIITECH06.HTM"> <img  src="../THEMAS/DIVERS/SUITE1.PNG" BORDER=0></A>
  236.     </CENTER>
  237.     </TD>
  238. </TR>
  239.  
  240.  
  241.  
  242. <TR> <TD COLSPAN="5" height="10"></TD>  </tr>
  243. <TR><TD COLSPAN="5"  ><HR color="BLUE"></td>
  244. </TR>
  245. <TR> 
  246.     <TD COLSPAN="5">  
  247.     <CENTER>
  248.     <A HREF="javascript:history.back()"> <IMG SRC="../THEMAS/DIVERS/JSBACK.PNG"></A> 
  249.     <A HREF="DISKIITECH.HTM" > <IMG SRC="../THEMAS/DIVERS/HOMESITE.PNG"></A>
  250.     </CENTER></TD>
  251. </TR>
  252. </TABLE></CENTER>
  253. </BODY>
  254. </HTML>
  255.  
  256.