Le test de protection de la disquette contre l'�criture est une op�ration OBLIGATOIRE avant d'�crire mais ce n'est pas pour v�rifier simplement qu'il y a ou non un notch, cela permet �galement deux choses importantes :
d'une part cela fait un reset de QA
d'autre part cela positionne le LSS � la s�quence 0 ce qui est la seule m�thode pour un programme 6502 de conna�tre la position du LSS et de pouvoir g�rer ensuite son timing en 32 cycles (dont l'explication suit)

Voici le tableau du code pr�sent� selon la m�thode de Jim Sather et qui permet de bien comprendre comment cela fonctionne.



Comme nous l'avons d�j� expliqu� le tableau PULSE et NO PULSE sont identiques car que le LSS re�oive ou non des PULSE, il doit les ignorer puisqu'il s'agit d'�crire sur la disquette et que l'on va r�orienter les champs magn�tiques. Concentrons nous donc sur le syst�me de l'un d'eux seulement car la navigation entre les colonnes selon la r�ception ou non des PULSES n'a ici absolument aucun int�r�t.

Ce qui a un inter�t particulier c'est la fa�on dont se passe le chargement du DATA REGISTER par rapport � l'�tat du LSS et donc comment ce dernier travaille avec les op�rations SHIFT et LOAD

L'op�ration SHIFT consiste � �crire bit par bit, le nibble contenu dans DATA REGISTER, sur la disquette, on remarque donc que le LSS proc�de simplement � des d�calages avec l'instruction SL0 faisant ainsi passer successivement tous les bits b6 � b0 par position de b7 qui correspond � QA actif si le bit est � 1 et QA inactif si le bit est � 0. Le DATA REGISTER prend donc un certain nombre de valeur jusqu'� contenir $00.

Vous n'�tes pas sans remarquer que d'une op�ration SL0 � l'autre il y a TOUJOURS et PRECISEMENT 8 s�quences. Ce n'est pas un hasard : nous avons vu que le LSS fonctionne � 2mhz, 8 s�quences correspondent donc � 4 cycles CPU soit 4�s...exactement le d�lai de la fen�tre d'�criture d'un bit ce qui pour 8 bits fera donc 4*8=32 cycles !

Maintenant vous comprenez pourquoi le programme 6502 doit maintenir 32 cycles entre deux op�rations de chargement : c'est pour laisser le temps au LSS d'�crire le nibble correctement. Mais vous comprennez �galement que si vous ne rechargez pas le DATA REGISTER d�s les 32 cycles �coul�s, celui-ci contiendra des 0 qui seront alors "shift�s" toutes les 8 s�quences donc tous les 4�s CAR ON RESTE DANS LA BOUCLE DE L'OPERATION SHIFT... c'est ainsi que sont �crits les bits de synchronisation : en ayant une routine � 36 ou 40 cycles selon que l'on veut 1 ou 2 extra-bits de synchronisation.

Pourquoi donc avoir �crit ce code en 16 s�quences ? Certes pas pour vous ennuyer mais le changement de signal se fait lors du passage de la s�quence 7 � la s�quence 8 ce qui permet donc d'�crire des 1 chaque fois que l'on passe de l'une � l'autre. Par ailleurs en liaison avec la suite des s�quences pour le chargement cela permet d'avoir un chargement du DATA REGISTER aussi bien derri�re un 1 que derri�re un 0, ce qui est assez heureux !

Voici le code d'�criture repr�sent� � nouveau sous la forme d'une machine � �tat, ce qui permet de comprendre le d�roulement des s�quences selon que le bit 7 QA soit � 1 ou � 0.



On notera :
que l'op�ration LOAD boucle en infini si le bit 7 n'est pas � 1 et n'�crit RIEN alors que normalement elle devrait bien passer par les s�quences 7/8 pour �crire le MSB � 1!.
que l'on peut parfaitement �crire les nibbles en chargeant le DATA REGISTER lors des multiples d'�criture de 4 cycles CPU (8,16, 20, 24, 28, 32). Il est clair que le DOS charge tous les 32 cycles... mais si vous deviez �crire un sch�ma de protection bien particuli�re, vous y trouveriez un grand avantage car cela permet d'ins�rer des 0 de fa�on extr�mement fiable.

Exemple d'�criture :


HACKING CORNER