home *** CD-ROM | disk | FTP | other *** search
/ hackzapple.com / www.hackzapple.com.tar / www.hackzapple.com / DISKII / DISKIITECH06A.HTM.orig < prev    next >
Text File  |  2010-10-06  |  16KB  |  355 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="320"></TD>
  27.     <TD WIDTH="280"></TD> </TR>
  28.  
  29. <TR>     <TD COLSPAN="4" valign="TOP" > <img src="../THEMAS/M3/XDISK6A.PNG" BORDER=0></TD> </TR> 
  30. <TR>    <TD COLSPAN="4" CLASS="PARAG1K"> 
  31. Voici le source de la routine d'Θcriture de la zone d'entΩte, c'est α dire du champ adresse, en DOS 3.3, elle se trouve α l'adresse $BC56. 
  32. Rappelons briΘvement que ce champ adresse est Θcrit une fois pour toutes lors de l'initialisation (formattage)
  33. de la disquette et qu'il permet de savoir quel est le n░ de volume, le numΘro de piste sur laquelle on est positionnΘ,
  34. et le n░ de secteur que l'on va lire si l'on accΦde au champ de donnΘes qui suit. Voici le schΘma dΘjα bien 
  35. connu maintenant
  36. <BR><BR>
  37. <IMG SRC="SECTEUR.PNG">
  38. <BR><BR>
  39. </TD></TR>
  40.  
  41. <TR>        <TD CLASS="PARAG1K">
  42.         <BR><BR><BR><BR><BR><BR><BR><BR><BR>SYNC
  43.         <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>    
  44.         <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
  45.         <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
  46.         <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>WBYTE    
  47.         <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>WBYTE11<BR>WBYTE9<BR>
  48.         <BR><BR><BR><BR>WAIT12<BR>
  49.     </TD>
  50.      <TD CLASS="PARAG1K">
  51.     SEC <BR> 
  52.     LDA $C08D,X <BR>
  53.     LDA $C08E,X <BR>
  54.     BMI ERROR<BR>
  55.     LDA #$FF<BR>
  56.     STA $C08F,X<BR>
  57.     CMP $C08C,X<BR>
  58.     PHA<BR>
  59.     PLA<BR>
  60.     JSR WAIT12<BR>
  61.     JSR WAIT12<BR>
  62.     STA C08D,X<BR>
  63.     CMP C08C,X<BR>
  64.     NOP<BR>
  65.     DEY<BR>
  66.     BNE SYNC<BR>
  67.     LDA #$D5<BR>
  68.     JSR WBYTE9<BR>
  69.     LDA #$AA<BR>
  70.     JSR WBYTE9<BR>
  71.     LDA #$96<BR>
  72.     JSR WBYTE9 <BR>
  73.     LDA VOLUME<BR>
  74.     JSR WBYTE<BR>
  75.     LDA TRACK<BR>
  76.     JSR WBYTE<BR>
  77.     LDA SECT<BR>
  78.     JSR WBYTE<BR>
  79.     LDA VOLUME<BR>
  80.     EOR TRACK<BR>
  81.     EOR SECT<BR>
  82.     PHA<BR>
  83.     LSR<BR>
  84.     ORA SECT<BR>
  85.           STA $C08D,X<BR>
  86.           LDA $C08C,X<BR>
  87.     PLA<BR>
  88.     ORA #$AA<BR>
  89.     JSR WBYTE11<BR>
  90.     LDA #$DE<BR>
  91.     JSR WBYTE9<BR>
  92.     LDA #$AA<BR>
  93.     JSR WBYTE9<BR>
  94.     LDA #$EB<BR>
  95.     JSR WBYTE9<BR>
  96.     CLC<BR>
  97.     LDA $C08E,X<BR>
  98.     LDA $C08C,X<BR>
  99.       RTS<BR>
  100. <BR>
  101.     PHA<BR>
  102.     LSR<BR>
  103.     ORA ZBUF<BR>
  104.     STA CO8D,X<BR>
  105.     CMP CO8C,X<BR>
  106.     PLA<BR>
  107.     NOP<BR>
  108.     NOP<BR>
  109.     NOP<BR>
  110.     ORA #$AA<BR>
  111.     NOP<BR>
  112.     NOP<BR>
  113.     PHA<BR>
  114.     PLA<BR>
  115.     STA CO8D,X<BR>
  116.     CMP CO8C,X<BR>
  117.     RTS<BR>
  118.     </TD>
  119.     <TD  CLASS="PARAG1K">  
  120.     ; prΘpare le cas d'erreur<BR>
  121.     ; test WRITE PROTECT <BR>
  122.     ; et initialise le LSS<BR> 
  123.     ; Erreur, disk protΘgΘ<BR>
  124.       ; $FF valeur nibble syncro.<BR>   
  125.       ;<FONT COLOR="YELLOW"> (5 cycles) <BR>
  126.          ; (4 cycles) <BR>
  127. ; (3 cycles)<BR>
  128. ; (4 cycles) <BR>
  129. ; (6 + 6 cycles)  <BR>
  130. ; (6 + 6 cycles)</FONT><BR>
  131. <FONT COLOR="MAGENTA">; (5 cycles)<BR>
  132. ; (4 cycles)  <BR>
  133. ; (2 cycles) <BR>
  134. ; (2 cycles) <BR>
  135. ; (2 cycles / 3 cycles)</FONT><BR>
  136. <FONT COLOR="RED">; (2 cycles)  <BR>  
  137. ; (6 cycles + 9 cycles)</FONT><BR>
  138. <FONT COLOR="CYAN">; (2 cycles)<BR>
  139. ; (6 + 9 cycles)</FONT><BR>
  140. <FONT COLOR="YELLOW">; (2 cycles)  <BR>
  141. ; (6 + 9 cycles)</FONT><BR>
  142. <FONT COLOR="RED">; (3 cycles)<BR>
  143. ; (6 + 8 cycles)</FONT><BR>
  144. <FONT COLOR="MAGENTA">; (3 cycles)<BR>
  145. ; (6 + 8 cycles)</FONT><BR>
  146. <FONT COLOR="BLUE">; (3 cycles)<BR>
  147. ; (6 + 8 cycles)</FONT><BR>
  148. <FONT COLOR="CYAN">; (3 cycles)<BR>
  149. ; (3 cycles)<BR>
  150. ; (3 cycles)<BR>
  151. ; (3 cycles)<BR>
  152. ; (2 cycles)<BR>
  153. ; (3 cycles)</FONT><BR>
  154. <FONT COLOR="#40FF40">; (5 cycles)<BR>
  155. ; (4 cycles)<BR>
  156. ; (4 cycles)<BR>
  157. ; (2 cycles)<BR>
  158. ; (6 + 11 cycles)</FONT><BR>
  159. <FONT COLOR="YELLOW">; (2 cycles)<BR>
  160. ; (6 + 9 cycles)</FONT><BR>
  161. <FONT COLOR="RED">; (2 cycles)<BR>
  162. ; (6 + 9 cycles)</FONT><BR>
  163. <FONT COLOR="CYAN">; (2 cycles)<BR>
  164. ; (6 + 9 cycles)<BR>
  165. ; (2 cycles)</FONT><BR>
  166. <FONT COLOR="#40FF40">; STOP</FONT><BR>
  167.  <BR><BR>
  168.  <BR>
  169. <FONT COLOR="CYAN">
  170. ; 3 cycles<BR>
  171. ; 2 cycles<BR>
  172. ; 3 cycles</FONT><BR>
  173. <FONT COLOR="#40FF40">; 5 cycles<BR>
  174. ; 4 cycles<BR>
  175. ; 4 cycles<BR>
  176. ; 2 cycles<BR>
  177. ; 2 cycles<BR>
  178. ; 2 cycles<BR>
  179. ; 2 cycles</FONT><BR>
  180. <FONT COLOR="YELLOW">; 2 cycles  R11</FONT> <BR>
  181. <FONT COLOR="YELLOW">; 2 cycles  R11</FONT> <FONT COLOR="RED">R9</FONT> <BR>
  182. <FONT COLOR="YELLOW">; 3 cycles  R11</FONT> <FONT COLOR="RED">R9</FONT><BR>
  183. <FONT COLOR="YELLOW">; 4 cycles  R11</FONT> <FONT COLOR="RED">R9</FONT><BR>
  184. <FONT COLOR="MAGENTA">; 5 cycles <BR>
  185. ; 4 cycles<BR>
  186. ; 6 cycles<BR></FONT>
  187.     </TD>
  188.  
  189.     <TD CLASS="PARAG1K"> 
  190.     <BR><BR><BR><BR><BR><FONT COLOR="YELLOW">  Ici commence le timing  pour l'Θcriture<BR>
  191.     du premier $FF en 40 cycles<BR>
  192.     pour timing<BR>pour timing<BR>pour timing<BR>pour timing. Jusqu'ici il y a les 40 cycles</FONT><BR>
  193.     <FONT COLOR="MAGENTA"> A partir d'ici il y a la boucle d'Θcriture<BR>
  194.     des autres $FF en 40 cycles<BR>
  195.     pour timing<BR><BR>Si Boucle = 3 cycles car va sur SYNC</FONT><BR>
  196.     <FONT COLOR="RED">Ecriture dernier $FF (voir A plus bas)<BR>
  197.     Pour le $D5 voir B</FONT><BR>
  198.     <FONT COLOR="CYAN">Pour le $AA voir C</FONT><BR><BR>
  199.     <FONT COLOR="YELLOW">Pour le $96 voir D </FONT><BR><BR>
  200.     <FONT COLOR="RED">Pour le N░ de volume voir E </FONT><BR><BR>
  201.     <FONT COLOR="MAGENTA">Pour le N░ de piste voir F </FONT><BR><BR>
  202.     <FONT COLOR="BLUE">Pour le N░ de secteur voir G </FONT><BR><BR>
  203.     <FONT COLOR="CYAN">Pour le checksum voir H <BR><BR>
  204.     <BR><BR><BR> = $00 en fait</FONT><BR>
  205.     <FONT COLOR="#40FF40">Enclenche l'Θcriture du 1er nibble de checksum</FONT><BR><BR><BR><BR><BR>
  206.     <FONT COLOR="YELLOW">Pour $DE voir I</FONT><BR><BR>
  207.     <FONT COLOR="RED">Pour $AA voir J</FONT><BR><BR>
  208.     <FONT COLOR="CYAN">Pour $EB voir K<BR><BR>
  209.     Pour sortir sans erreur ... un comble nous le verrons</FONT><BR>
  210.     <FONT COLOR="#40FF40">ArrΩt du mode Θcriture</FONT>
  211.     <BR><BR>
  212.     <BR><BR> 
  213.     <FONT COLOR="CYAN">Sauve la valeur α coder en 4.4<BR>
  214.     puis calcule la valeur du 1er NIBBLE du codage 4.4<BR>Contient la valeur $00</FONT><BR> 
  215.     <FONT COLOR="#40FF40"><-- Enclenche l'Θcriture du 1er nibble codΘ 4.4<BR>
  216.      du n░volume, piste, secteur et checksum, <BR>
  217.     ET calcule la valeur de 2Θme nibble en codage 4.4<BR>
  218.     pour timing<BR>pour timing<BR>pour timing<BR>calcul 4.4<BR>pour timing<BR>pour timing<BR>PHA et PLA pour timing <BR> <-- et  jusqu'ici il y a bien 32 cycles</FONT><BR>
  219.     <FONT COLOR="MAGENTA">Ces 15 cycles jusqu'au RTS inclus comptent pour le nibble suivant... qui vient juste 
  220.     d'Ωtre calculΘ pour le 2Θme nibble codΘ 4.4 quand on entre par WBYTE</FONT>
  221.     <BR><BR>
  222.     </TD>
  223. </TR>
  224. <TR>    <TD COLSPAN="4" CLASS="PARAG1R" BGCOLOR="#202020"><B>REMARQUES GENERALES :</B></TD></TR>
  225. <TR>    <TD COLSPAN="4" CLASS="PARAG1K"> 
  226.     <BR>
  227.     Il faut bien comprendre que les instructions NOP, JSR, RTS et parfois PHA PLA marquΘes "pour timing" 
  228.     n'ont rΘellement pas d'autre raison d'Ωtre QUE DE PERMETTRE A LA ROUTINE D'ECRITURE D'AVOIR LE NOMBRE 
  229.     DE CYCLES MACHINES ADEQUAT ce qui  permet au SEQUENCER d'Θcrire correctement les nibbles ! 
  230.     C'est en cela que les routines d'Θcriture sont dites avoir un timing critique.
  231.     <BR><BR>
  232.     Vous noterez que le dΘcompte des 32 cycles est rΘalisΘ aussi bien entre deux $C08D,X que deux C08C,X.
  233.     </TD>
  234. </TR>
  235. <TR>    <TD COLSPAN="4" CLASS="PARAG1R" BGCOLOR="#202020"><B>A. ECRITURE DES $FF DE SYNCHRONISATION</B></TD></TR>
  236. <TR>    <TD> </TD><TD COLSPAN="3" CLASS="PARAG1K">
  237.     Le premier $FF Θcrit commence son dΘcompte de cycles dΦs le STA $C08F,X qui enclenche l'Θcriture, on a donc 
  238.      les cycles affichΘs en jaune dans le listing ci-dessus soit :<BR>
  239.     5 (STA) + 4 (CMP) + 3 (PHA) + 4 (PLA) + 6 (JSR) + 6 (RTS) + 6 (JSR) + 6 (RTS) = 40 cycles
  240.     <BR><BR>
  241.     Les $FF suivants sont Θcrits au sein d'une boucle qui commence au STA C08D,X (en magenta sur le listing)
  242.     jusque'au test de branchement BNE SYNC qui comptera pour 3 cycles car le branchement est bien effectuΘ 
  243.     sur SYNC et qui s'arrΩte au second JSR WAIT12 ce qui nous donne :<BR>
  244.     5 (STA) + 4 (CMP) + 2 (NOP) + 2 (DEY) + 3 (BNE) + 6 (JSR) + 6 (RTS) + 6 (JSR) + 6 (RTS) = 40 cycles
  245.     <BR><BR>
  246.     Ce dernier $FF est Θcrit en fin de boucle et commence donc son timing dΦs 
  247.     l'intruction STA $C08D,X juste derriΦre le JSR WAIT12. Cela donne 5 + 4 + 2 + 2 + 2 pour le BNE car il N'Y A PAS 
  248.     DE BRANCHEMENT... + 2 pour le LDA #$D5 + 6 pour le JSR + 9 pour la route WBYTE9 soit un total de  :<BR>
  249.     5 + 4 + 2 + 2 + 2 + 2 + 6 + 9 = <FONT COLOR="RED">32 cycles ! et non 40 ... </FONT> mais cela n'a aucune importance car on est synchronisΘ 
  250.     depuis bien longtemps (5 $FF maximum suffisent y compris le dernier en synchronisation) 
  251.     </TD></TR>
  252. <TR>    <TD COLSPAN="4" CLASS="PARAG1R" BGCOLOR="#202020"><B>B. ECRITURE DU $D5 </B></TD></TR>
  253. <TR>    <TD> </TD><TD COLSPAN="3" CLASS="PARAG1K"> Certains dΘbutants font parfois l'erreur de croire que le $D5 est Θcrit dΦs 
  254.     le JSR du JSR WBYTE ce qui est FAUX car en fait cette valeur n'est passΘe au SEQUENCER qu'au milieu  de cette routine
  255.     c'est α dire au moyen du STA C08D,X (c'est pour cela que le dΘcompte WBYTE9 donne bien 9 cycles car ce STA et la suite comptent
  256.     pour l'Θcriture du nibble suivant...$D5 en ce qui nous concerne pour l'instant.<BR>
  257.     Nous avons donc 5 + 4 + 6 (le RTS de WBYTE9) qui nous ammΘne donc au LDA #$AA pour 2 cycles puis nous avons α nouveau un 
  258.     JSR WBYTE9 ce qui donne 6 + les 9 de WBYTE9 soit un total de :<BR>
  259.     5 + 4 + 6 + 2 + 6 + 9 = 32 cycles... dΘcidΘment c'est magique !
  260.     </TD></TR>
  261. <TR>    <TD COLSPAN="4" CLASS="PARAG1R" BGCOLOR="#202020"><B>C. ECRITURE DU $AA </B></TD></TR>
  262. <TR>    <TD> </TD><TD COLSPAN="3" CLASS="PARAG1K"> Tout comme pour le $D5, le $AA est Θcrit en dΘcalΘ 
  263.     par rapport aux LDA #$AA. Le dΘcompte se fait de la mΩme faτon que pour le $D5 α savoir :<BR>
  264.     - la reprise de la fin de routine de WBYTE9 soit 5 + 4 + 6<BR>
  265.     - les 2 cycles du LDA<BR>
  266.     - les 6 du JSR WBYTE
  267.     - les 6 du JSR + les 9 de la routine WBYTE9 <BR>
  268.     soit un total de : 5 + 4 + 6 + 2 + 6 + 9 = 32 cycles.
  269.     </TD></TR>
  270. <TR>    <TD COLSPAN="4" CLASS="PARAG1R" BGCOLOR="#202020"><B>D. ECRITURE DU $96 </B></TD></TR>
  271. <TR>    <TD> </TD><TD COLSPAN="3" CLASS="PARAG1K"> Tout comme pour le $D5 et $AA, le $96 est Θcrit en dΘcalΘ 
  272.     par rapport au  LDA #$96. Le dΘcompte se fait pour partie de la mΩme faτon que pour les prΘcΘdents α savoir :<BR>
  273.     - la reprise de la fin de routine de WBYTE9 soit 5 + 4 + 6<BR>
  274.     - les 3 cycles du LDA VOLUME car il s'agit d'un chargement en page 0<BR>
  275.     - cette fois la sous routine n'est pas la mΩme (WBYTE et non WBYTE9), on a + 6 pour le JSR et + 3 + 2 + 3 
  276.     pour la partie de la sous routine concernΘe<BR>
  277.     soit un total de : 5 + 4 + 6 + 3 + 6 + 3 + 2 + 3 = 32 cycles tout de mΩme...<BR><BR>
  278.     Ce qui peut perturber dans cette partie c'est de voir l'accumulateur changer de valeur
  279.     en particulier avec l'instruction ORA de la sous-routine WBYTE. Maix cela montre en 
  280.     fait trΦs clairement que le programme 6502 est bien INDEPENDANT de ce que fait le
  281.     SEQUENCER aprΦs qu'il lui ait passΘ la valeur α Θcrire dans le DATA REGISTER. Ici 
  282.     que constate-t-on ? Le $96 a ΘtΘ passΘ au DATA REGISTER des le STA C08D,X de 
  283.     la sous-routine WBYTE9 prΘcΘdente et α partir de ce moment le SEQUENCER Θcrit bien ce 
  284.     $96 en 32 cycles pendant que le programme 6502 fait autre chose α savoir : CALCULE LA VALEUR
  285.     DU PREMIER NIBBLE DE CODAGE 4.4 DU NUMERO DE VOLUME...
  286.     </TD></TR>
  287. <TR>    <TD COLSPAN="4" CLASS="PARAG1R" BGCOLOR="#202020"><B>E. ECRITURE DU NUMERO DE VOLUME</B></TD></TR>
  288. <TR>    <TD> </TD><TD COLSPAN="3" CLASS="PARAG1K"> Nous venons de voir que la routine WBYTE 
  289.     prΘpare le calcul du premier NIBBLE POUR LE CODAGE 4.4 du NUMERO DE VOLUME, arrivΘ 
  290.     α ce stade celle-ci est passΘe au DATA REGISTER par l'instruction STA $C08D,C puis 
  291.     le programme continue α calculer le SECOND NIBBLE en prΘcisΘment 32 cycles qui sont 
  292.     ajustΘs avec des instructions de remplissage pour le timing (NOP, PHA PLA) car ce 
  293.     calcul est rΘalisΘ plus rapidement.
  294.     <BR><BR>
  295.     Cette seconde valeur est alors passΘe au DATA REGISTER par l'instruction STA C08D,X 
  296.     juste avant l'instruction SHIFT et le RTS en de routine. Les trois derniΦres instructions
  297.     compteront alors pour 15 cycles pour le dΘcompte des 32 cycles d'Θcriture du second nibble car α 
  298.     ces 15 cycles viennent s'ajouter les 3 du LDA TRACK car TRACK est une adresse en page 0, 
  299.     les 6 + 8 du JSR WBYTE ce qui fait :  
  300.     15 + 3 + 6 + 8 soit bien 32 cycles.
  301.     </TD></TR>
  302. <TR>    <TD COLSPAN="4" CLASS="PARAG1R" BGCOLOR="#202020"><B>F. ECRITURE DU NUMERO DE PISTE</B></TD></TR>
  303. <TR>    <TD> </TD><TD COLSPAN="3" CLASS="PARAG1K"> Pour le premier nibble il est Θcrit en seconde partie de la routine
  304.     WBYTE. Et pour le second cela se passe exactement comme ci-dessus, on reprend les 15 cycles de la fin de routine
  305.     WBYTE auxquels on ajoute + 3 du LDA SECT + 6 + 8 du JSR WBYTE ce qui fait : 15 + 3 + 6 + 8 = 32 cycles 
  306.     </TD></TR>
  307. <TR>    <TD COLSPAN="4" CLASS="PARAG1R" BGCOLOR="#202020"><B>G. ECRITURE DU N░ DE SECTEUR</B></TD></TR>
  308. <TR>    <TD> </TD><TD COLSPAN="3" CLASS="PARAG1K">LΦgerement diffΘrent cette fois car si on reprend les 15 cycles 
  309.     de la fin de WBYTE pour le 2Θme nibble, par contre on ajoute cette fois 
  310.     + 3 (LDA) + 3 (EOR)  + 3 (EOR) + 3 (PHA) + 2 (LSR) + 3 (ORA) ce qui donne au total : 
  311.     15 + 3 + 3  + 3 + 3 + 2 + 3 = 32 cycles. 
  312.     </TD></TR>
  313. <TR>    <TD COLSPAN="4" CLASS="PARAG1R" BGCOLOR="#202020"><B>H. ECRITURE DU CHECKSUM</B></TD></TR>
  314. <TR>    <TD> </TD><TD COLSPAN="3" CLASS="PARAG1K"> Le 1er nibble est Θcrit pendant le calcul du second 
  315.     c'est-α dire au STA $C08D,X placΘ juste aprΦs le ORA SECT ce qui donne : 5 + 4 + 4 + 2 + 6 + 11 = 32 cycles.<BR>
  316.     Le second nibble de checksum sera Θcrit α partir de la fin de la routine WBYTE11 ce qui prend les fameux 15 cycles
  317.     bien connus maintenant auxquels s'ajoutent +2 (LDA #$DE) + 6 (JSR) + 9 (WBYTE9) soit : 15 + 2 + 6 + 9 = 32 cycles.
  318.     </TD></TR>
  319. <TR>    <TD COLSPAN="4" CLASS="PARAG1R" BGCOLOR="#202020"><B>I. ECRITURE DU $DE</B></TD></TR>
  320. <TR>    <TD> </TD><TD COLSPAN="3" CLASS="PARAG1K"> On revient toujours sur du classique, le $DE est passΘ 
  321.     au SEQUENCER en fin de la routine WBYTE9 ce qui apporte les 15 cycles auxquels on ajoute + 2 (LDA #$AA)+ 6 (JSR)
  322.     + 9 (WBYTE9) ce qui donne 15 + 2 + 6 + 9 = 32 cycles
  323.     </TD></TR>
  324. <TR>    <TD COLSPAN="4" CLASS="PARAG1R" BGCOLOR="#202020"><B>J. ECRITURE DU $AA</B></TD></TR>
  325. <TR>    <TD> </TD><TD COLSPAN="3" CLASS="PARAG1K"> Toujours pareil que ci-dessus, le $AA est passΘ 
  326.     au SEQUENCER en fin de la routine WBYTE9 ce qui apporte les 15 cycles auxquels on ajoute + 2 (LDA #$EB)+ 6 (JSR)
  327.     + 9 (WBYTE9) ce qui donne 15 + 2 + 6 + 9 = 32 cycles
  328.     </TD></TR>
  329. <TR>    <TD COLSPAN="4" CLASS="PARAG1R" BGCOLOR="#202020"><B>K. ECRITURE DU $EB</B></TD></TR>
  330. <TR>    <TD> </TD><TD COLSPAN="3" CLASS="PARAG1K"> Toujours pareil que ci-dessus, le $EB est passΘ 
  331.     au SEQUENCER en fin de la routine WBYTE9 ce qui apporte les 15 cycles auxquels on ajoute + 2 cycles du CLC 
  332.     qui permet de sortir de la routine sans erreur... ET L'ECRITURE S'ARRETE !!!! <BR>
  333.     <FONT COLOR="RED">Ce qui ne permet ABSOLUMENT PAS d'avoir un $EB Θcrit correctement!</FONT> 
  334.     Eh oui le DOS 3.3 n'Θcrit pas cet $EB du champ adresse... mais heureusement il ne le vΘrifie pas non plus.<BR> 
  335.     Pourquoi ? <BR>
  336.     C'est un mystΦre car il y a pourtant un vide disponible de 33 octets derriΦre cette routine (de $BCDF α $BCFF)
  337.     donc on ne fait pas de saut de page et c'Θtait largement suffisant pour faire propre. Si vous pensiez que
  338.     la RWTS du DOS 3.3 Θtait un modΘle parfait eh bien dΘsolΘ de vous dΘcevoir...
  339.     </TD></TR>
  340.  
  341.  
  342. <TR> <TD COLSPAN="4" height="10"></TD> </tr>
  343. <TR><TD COLSPAN="4"  ><HR color="BLUE"></td>
  344. </TR>
  345. <TR> 
  346.     <TD COLSPAN="4">  
  347.     <CENTER>
  348.     <A HREF="javascript:history.back()"> <IMG SRC="../THEMAS/DIVERS/JSBACK.PNG"></A> 
  349.     <A HREF="DISKIITECH.HTM" > <IMG SRC="../THEMAS/DIVERS/HOMESITE.PNG"></A>
  350.     </CENTER></TD>
  351. </TR>
  352. </TABLE></CENTER>
  353. </BODY>
  354. </HTML>
  355.