home *** CD-ROM | disk | FTP | other *** search
/ hackzapple.com / www.hackzapple.com.tar / www.hackzapple.com / DISKII / DISKIITECH06.HTM.orig < prev    next >
Text File  |  2010-10-06  |  9KB  |  199 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="150"> </TD> <TD WIDTH="200"> </TD> <TD WIDTH="200"></TD> <TD WIDTH="10"></TD> <TD WIDTH="190"></TD> </TR>
  25.  
  26. <TR>     <TD COLSPAN="4" valign="TOP" > <img src="../THEMAS/M3/XDISK6.PNG" BORDER=0></TD>  
  27.     <TD> 
  28.     <CENTER>
  29.     <A HREF="DISKIITECH05.HTM" > <img  src="../THEMAS/DIVERS/PRIOR1.PNG" BORDER=0></A>
  30.     <A HREF="DISKIITECH.HTM" > <img  src="../THEMAS/DIVERS/HOME1.PNG" BORDER=0></A>  
  31.     <A HREF="DISKIITECH07.HTM" ><img  src="../THEMAS/DIVERS/SUITE1.PNG" BORDER=0></A>
  32.     </CENTER>
  33.     </TD>
  34. </TR>
  35. <TR>    <TD COLSPAN="5" CLASS="PARAG1">
  36.     Pour pouvoir Θcrire sur une disquette vous devez absolument faire trois choses indispensables :
  37.     <BR><BR>
  38.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF">Inhiber les interruptions
  39.     <BR><BR>
  40.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF">Tester si la disquette est protΘgΘe contre l'Θcriture, ce n'est pas 
  41.     seulement pour ne pas faire de bΩtises mais bien une nΘcessitΘ pour que le SEQUENCER fonctionne correctement. 
  42.     Donc toutes les routines d'Θcritures commencent par ce test.
  43.     <BR><BR>
  44.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF">Respecter le timing d'Θcriture de 32 cycles.
  45.     Les routines d'Θcriture sur la disquette sont CRITIQUES en ce qui concerne le timing. Entre le moment ou 
  46.     vous avez chargΘ le DATA REGISTER pour Θcrire un nibble et le moment ou vous le rechargerez pour Θcrire le
  47.     suivant, il doit IMPERATIVEMENT y avoir 32 cycles machines du CPU.
  48.     </TD>
  49. </TR>
  50. <TR>    <TD></TD><TD COLSPAN="4" CLASS="PARAG1">
  51.     Ah oui ? Et pourquoi ?
  52.     <BR>
  53.     Nous avons vu que l'Θcriture d'un bit sur la disquette se fait en 4╡s ... et comme il y a 8 bits α Θcrire il 
  54.     faut donner au SEQUENCER 4 * 8 = 32╡s ce qui correspond α 32 cycles machine. (trop fort non ? mais si vous
  55.     voulez plus fort : <A HREF="DISKIITECH07C.HTM"> Le pourquoi ici !</A> mais n'oubliez pas de revoir avant
  56.     <A HREF="DISKIITECH07A.HTM"> le fonctionnement du LSS</A>)</TD>
  57. </TR>
  58. <TR>    <TD COLSPAN="5" CLASS="PARAG1K">
  59.     Voici un exemple d'Θcriture sur la disquette de quelques nibbles qui montre le dΘcompte. Vous noterez qu'entre 
  60.     deux manipulations de $C08C ou de $C08D il y a TOUJOURS 32 cycles. Le premier nibble est Θcrit dΦs l'accΦs $C08F,X
  61.     alors que les suivants le sont par les accΦs $C08D,X
  62.     </TD>
  63. </TR>
  64. </TABLE>
  65.  
  66.  
  67. <TABLE border="0" cellspacing="0" cellpadding="0" width="700">
  68. <TR>     <TD WIDTH="100"></TD> 
  69.     <TD WIDTH="100"></TD> 
  70.     <TD WIDTH="100"></TD>
  71.     <TD WIDTH="400"></TD> </TR>
  72.  
  73. <TR>    <TD></TD>
  74.     <TD CLASS="PARAG1K">
  75.         <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>DELAY    
  76.     </TD>
  77.      <TD CLASS="PARAG1K">  
  78.           LDA $C08D,X <BR>
  79.           LDA $C08E,X <BR>
  80.           BMI ERROR<BR>
  81.           LDA DATA1<BR>
  82.           STA $C08F,X<BR>
  83.           ORA $C08C,X<BR>
  84.           JSR DELAY<BR>
  85.           LDA DATA2<BR>
  86.           STA $C08D,X<BR>
  87.           ORA $C08C,X<BR>
  88.           JSR DELAY<BR>
  89.           LDA DATAFIN<BR>
  90.           STA $C08D,X<BR>
  91.           ORA $C08C,X<BR>
  92.           JSR DELAY<BR>
  93.           NOP<BR>
  94.           NOP<BR>
  95.           ORA $C08E,X<BR>
  96.           RTS<BR>
  97.         <BR>
  98.         PHA<BR>
  99.           PLA<BR>
  100.           RTS<BR>
  101.     </TD>
  102.     <TD CLASS="PARAG1K">  
  103.  
  104.           <BR><BR>; Erreur, la disquette est protΘgΘe contre l'Θcriture<BR>
  105.           ;(4 cycles) On supposera des load absolus ici et pour la suite<BR>   
  106.           ;<FONT COLOR="YELLOW">(5 cycles) c'est parti pour l'Θcriture, comptons les cycles<BR>
  107.           ;(4 cycles) <BR>
  108. ;(6 cycles)  + les 13 de la routine DELAY α ne pas oublier <BR>
  109. ;(4 cycles) <--- jusque lα... il y a 32 cycles exactement<BR></FONT>
  110. ;<FONT COLOR="MAGENTA">(5 cycles) <--- Puis d'ici cette fois<BR>
  111. ;(4 cycles)<BR>
  112. ;(6 cycles) + les 13 de la routine DELAY α ne pas oublier <BR>
  113. ;(4 cycles) <--- jusque lα, il y a encore 32 cycles exactement<BR></FONT>
  114. ;<FONT COLOR="RED">(5 cycles) <--- Puis d'ici c'est le dernier dΘcompte<BR>
  115. ;(4 cycles)<BR>
  116. ;(6 cycles) + les 13 de la routine DELAY α ne pas oublier <BR>
  117. ;(2 cycles)<BR>
  118. ;(2 cycles) <--- jusque lα, il y a encore 32 cycles exactement<BR></FONT>
  119. ;(4 cycles) Ici on arrΩte le mode "Θcriture"<BR>
  120. <BR><BR>
  121. ;(3 cycles) <FONT COLOR="YELLOW">Le total des cycles est de 13 pour la routine</FONT><BR>
  122. ;(4 cycles)<BR>
  123. ;(6 cycles)<BR>
  124. <BR><BR>
  125.     </TD>
  126. </TR>
  127. <TR>    <TD COLSPAN="4" CLASS="PARAG1K"> Il faut bien comprendre que les instructions NOP, PHA PLA JSR et RTS n'ont pas 
  128. d'autre raison d'Ωtre QUE DE PERMETTRE A LA ROUTINE D'ECRITURE D'AVOIR LE NOMBRE DE CYCLES MACHINES ADEQUAT ce
  129. qui  permet au SEQUENCER d'Θcrire correctement les nibbles ! C'est en cela que les routines d'Θcriture sont dites 
  130. avoir un timing critique.
  131. <BR><BR>
  132.     </TD>
  133. </TR>
  134. </TABLE>
  135.  
  136.  
  137. <TABLE border="0" cellspacing="0" cellpadding="0" width="700">
  138. <TR> <TD WIDTH="200"> </TD> <TD WIDTH="100"> </TD> <TD WIDTH="200"></TD> <TD WIDTH="10"></TD> <TD WIDTH="190"></TD> </TR>
  139.  
  140. <TR>    <TD COLSPAN="5" CLASS="TITRE3R">S'il n'y avait pas 32 cycles que se passerait-il ?</TD></TR>
  141. <TR> <TD COLSPAN="5" height="1" BGCOLOR="RED"></TD></TR>
  142.  
  143. <TR>    <TD COLSPAN="5" CLASS="TITRE3"><BR>CAS 1 : je laisse moins de cycles</TD></TR>
  144. <TR>    <TD COLSPAN="5" CLASS="PARAG1 ">    
  145.     Cela signifie que votre DATA REGISTER est rechargΘ alors que tous les bits n'ont pas ΘtΘ Θcrits sur la disquette, 
  146.     la rΘponse est d'une Θvidence biblique : le NIBBLE est Θcrit incomplΘtement si vous interrompez sur des multiples de 4╡s
  147.     et  de faτon totalement illisible pour les autres coupures.
  148. </TD></TR>
  149. <TR>    <TD COLSPAN="5" CLASS="TITRE3"><BR>CAS 2 : je laisse plus de cycles </TD></TR>
  150. <TR>    <TD COLSPAN="5" CLASS="PARAG1 ">    
  151.     Eh bien votre DATA REGISTER Θtant rempli de 0 le SEQUENCER se fait un joie d'Θcrire un 0 tous les 4╡s... ce qui est 
  152.     prΘcisement la mΘthode pour Θcrire des nibbles de synchronisation (revoir ici <A HREF="DISKIITECH04.HTM">la rubrique 
  153.     ad hoc</A>). Mais attention... vous savez qu'au delα de deux 0 votre relecture sera alΘatoire car il y aura 
  154.     sans doute dΘsynchronisation rapide, mais Θvidement si vous faites un systΦme de protection c'est autre chose !
  155.     <BR><BR>
  156.     </TD>
  157. </TR>
  158.  
  159. <TR>    <TD COLSPAN="5" CLASS="TITRE1">LES ROUTINES D'ECRITURE DU DOS 3.3</TD></TR>
  160. <TR>    <TD COLSPAN="5" CLASS="PARAG1 ">    
  161.     <BR>
  162.     La routine dΘcrite ci-dessus est bien gentille mais on ne peut pas se laisser aller α dΘrouler un tel code 
  163.     pour Θcrire un entΩte, 342 nibbles et un checksum, etc... admirons donc la routine d'Θcriture de la RWTS avec 
  164.     toutes ses subtilitΘs lorsqu'il y a des branchements qui sont rΘalisΘs ou non rΘalisΘs, des dΘlais diffΘrents
  165.     selon le besoin etc ... curieusement cela devient un peu plus sportif !
  166.     <BR><BR>
  167.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF"> La routine d'Θcriture du champ adresse d'un secteur 
  168.     <A HREF="DISKIITECH06A.HTM">C'EST ICI</A><BR>
  169.     <IMG SRC="../THEMAS/DIVERS/BULLET.GIF"> La routine d'Θcriture du champ des donnΘes d'un secteur 
  170.     <A HREF="DISKIITECH06B.HTM">C'EST ICI</A> 
  171.     <BR><BR>
  172.  
  173.     </TD>
  174. </TR>
  175.  
  176.  
  177.  
  178.  
  179. <TR> <TD COLSPAN="5" height="10"></TD>  </tr>
  180. <TR>    <TD COLSPAN="5" CLASS="PARAG1"> <CENTER> 
  181.     <A HREF="DISKIITECH05.HTM"> <img  src="../THEMAS/DIVERS/PRIOR1.PNG" BORDER=0></A>
  182.     <A HREF="DISKIITECH07.HTM"> <img  src="../THEMAS/DIVERS/SUITE1.PNG" BORDER=0></A>
  183.     </CENTER>
  184.     </TD>
  185. </TR>
  186. <TR> <TD COLSPAN="5" height="10"></TD>  </tr>
  187. <TR><TD COLSPAN="5"  ><HR color="BLUE"></td>
  188. </TR>
  189. <TR> 
  190.     <TD COLSPAN="5">  
  191.     <CENTER>
  192.     <A HREF="javascript:history.back()"> <IMG SRC="../THEMAS/DIVERS/JSBACK.PNG"></A> 
  193.     <A HREF="DISKIITECH.HTM" > <IMG SRC="../THEMAS/DIVERS/HOMESITE.PNG"></A>
  194.     </CENTER></TD>
  195. </TR>
  196. </TABLE></CENTER>
  197. </BODY>
  198. </HTML>
  199.