CODING ★ FDC - EXEMPLES DE BIDOUILLES ★

Fdc - 30 - Fdc Exemple de Bidouilles (SOS Programmeurs)

 De même  que  pour  la  compréhension  des  listings  source  ,  ne  vous démoralisez pas si ce qui suit paraît  très  obscur  au prime abord . Vous ne  pouvez espérer comprendre en 1H  ce  qu'une  équipe  de spécialistes à mis au point pendant des mois ...

1 : UNE PISTE INCOPIABLE

 Ne pensez pas qu'une tentative de  copie  de  cette piste va provoquer un plantage du copieur et que  le  drive  recrachera l'original d'un air dégoûté ... De manière plus pacifique , la piste sera reproduite mais de façon tout à  fait incorrecte .

 L'exemple  est  commenté  point   par   point   et   même  si  vous  êtes  innexpérimenté ne devrait pas  vous  poser  trop  de  problèmes  . Tout a été  soigneusement mis au point  et  testé  ,  les  lignes  qui  suivent relues et  corrigées plusieurs fois . Si cela ne fonctionne  pas du 1er coup , une seule  certitude : VOUS VOUS ETES TROMPE ! RECOMMENCEZ PLUS ATTENTIVEMENT .

 Si vous n'avez pas  fréquement  utilisé  l'option  formatage des versions précédentes , une relecture de la notice de SOS2 sera utile .

 Protéger toute disquette précieuse en  écriture  et prendre une disquette vierge pour vos essais . Lancer  le  bidouilleur  .  Si  vous avez 2 drives , sélectionnez B  comme  drive  source  et  destination  ,  sinon  mettez votre disquette vierge dans A .

1ER MOUVEMENT

 1 : Utilisez l'option [D]  Formatage  régulier  .  Appuyez sur une touche lorsque le message placer disquette ... apparaît .

 Utilisez  les  flèches  verticales  pour  déplacer  le  curseur  sur  les paramètres et +,- ou SHIFT &+,- pour  modifier les valeurs jusqu'à obtenir le résultat suivant :

  Piste de debut : Comme vous voulez .
 Dernière piste : La même que celle de début .
 Taille secteur : 0
 Nombre secteurs: 28 (Décimal colonne le plus à droite)
 Gap  formatage : 3
 Octet remplis. : &E5 (Hexadécimal colonne gauche)
 Premier secteur: &C0 (Hexadécimal colonne gauche)

  NOTE : Les  valeurs  de  Octet  remplis  et  1er  secteur  sont  bien sur  arbitraires et peuvent être changées à votre gré .

 Appuyez sur  ENTER  :  Les  deux  fenêtres  de  droite  doivent  contenir exactement les mêmes IDS que les 2 de gauche  ! Si ce n'est pas le cas , vous avez donné un nombre  de  secteurs  ,  une  taille  ou  un  GAP  trop grand !
 Recommencez ...

 Ce 1er  formatage  a  pour  seul  objet  d'initialiser  une  liste  d'IDS et facilite l'édition des IDS pour le formatage irrégulier .

 Utilisez maintenant l'option [E] Formatage irrégulier . Donner les pistes que vous voulez (Suggestion de 0  à  41  vous  pourrez ainsi vous livrer à de multiples essais) . Ne touchez  surtout  pas  au  nombre  de  secteur et à la valeur du GAP#3 . Appuyez sur 'ENTER'  et éditez SCRUPULEUSEMENT la liste des IDS comme suit : (NP représente le  numéro  de la première piste à formater . Vous n'avez pas à  le  changer)  .  Pour  passer  d'une  fenêtre d'édition  à l'autre , appuyez sur 'COPY' .

       ; Np.Hd.Ns.Ls    Np.Hd.Ns.Ls
      ; NP 00 C0 00    NP 00 C6 02
      ; NP 00 C1 02    00 00 00 00
      ; 00 00 00 00    00 00 00 00
      ; 00 00 00 00    NP 00 C7 02
      ; NP 00 C2 02    00 00 00 00
      ; 00 00 00 00    00 00 00 00
      ; 00 00 00 00    NP 00 C8 02
      ; NP 00 C3 02    00 00 00 00
      ; 00 00 00 00    00 00 00 00
      ; 00 00 00 00    NP 00 C9 02
      ; NP 00 C4 02    00 00 00 00
      ; 00 00 00 00    00 00 00 00
      ; 00 00 00 00    FF FF FF FF =>Marque fin des IDS
      ; NP 00 C5 02    Les 3 lignes  qui  suivent  sont
      ; 00 00 00 00    indifférentes .
      ; 00 00 00 00

  Les lignes de 00  00  00  00  sont  les  IDS  qui  vont  être écrasés par  l'écriture . Le contenu de  ces  IDS  est  tout  à  fait indifférent , il est  toutefois plus clair de les mettre a 0 .
 Les IDS Ls.  sont  à  respecter  IMPERATIVEMENT  y  compris  celui du 1er  secteur #C0 qui est bien de 0 .

 Appuyez sur ENTER pour effectuer le  formatage  . Si la relecture des IDS ne donne pas un résultat identique , recommencez tout depuis le début .

2EME MOUVEMENT

 Sélectionnez l'option créer piste et donner comme numéro l'une des pistes  formatées précédement . Ne vous impatientez  pas  ,  il faut un certain temps pour l'analyse .

 Ne chargez aucun buffer , vous n'en avez pas besoin .

 A l'affichage de la page buffer ,  le  bas de l'écran doit montrer ce qui suit :

C000 C102 0000 0000 C202 0000 0000 C302 0000 0000 C402 0000 0000 C502 0000 0000
 C602 0000 0000 C702 0000 0000 C802 0000 0000 C902 0000 0000
 ERREUR OK             ; LONGUEUR 0   POSITION 1   OCTETS 0

    Le contenu du buffer est sans intérêt pour cet exemple .

 Avec SHIFT + Flèche droite  ,  placez  vous  sur  le secteur C102 (ERREUR affichera CR/DD LONGUEUR 2 et POSITION  2)  et appuyez sur CTRL+W . Confirmez  l'écrasement et répondez 'N' à CM ? et  'N'  à Changer GAP RW . L'écriture se fait et l'analyse qui suit vous montre que les IDS entre C1 et C2 ont disparu . (Appuyez sur une touche pour  continuer  à  chaque arrêt du programme) . En fin d'écriture le bas d'écran sera :

C000 C102 C202 0000 0000 C302 0000 0000 C402 0000 0000 C502 0000 0000 C602 0000
 0000 C702 0000 0000 C802 0000 0000 C902 0000 0000

   Renouveler l'opération sur tous les secteurs  de taille 2 jusqu'à obtenir le bas d'écran suivant :

C0 00 C1 02 C2 02 C3 02 C4 02 C5 02 C6 02 C7 02 C8 02 C9 02

   En principe , le défilement  du  curseur par SHIFT+flèches latérales doit révéler que tous les états d'erreur sont OK . Si le secteur #C0 montre un MAM  c'est que vous l'avez écrit  par  mégarde  ,  ce  n'est  pas grave . Seule la disparition de tous  les  secteurs  intercalaires  et  l'affichage du message 'SECTEURS ECRASES' lors de l'analyse compte !

 Appuyez sur CTRL+Q et  notez  que  l'analyse  finale  donne 0 comme vraie taille de secteurs et 2 comme fausse taille .

3EME MOUVEMENT

 Confiez cette piste à votre copieur favori et observez le résultat de son  analyse . Réutilisez le bidouilleur  et  analysez  la  copie de votre piste .
 Surprenant non ? Le secteur #C0  est  maintenant  en  CR/DD , les secteurs ne sont plus écrasés et la taille du  format  est  de 2 ! (Pour les copieurs les plus connus DISCOLOGY - COPYLOCK - HERCULE) .

 Pour établir une protection simple , il suffit de lire le premier secteur de la piste spéciale . Si il  est en CR/DD c'est obligatoirement une mauvaise copie .

 Une  protection  plus  sophistiquée  découle  de  l'emploi  de  SOLUTION3 pour lire les GAPS . Il va  de  soit  que  pour fonctionner , les routines et variables dont les labels figurent ici doivent être ajoutées au listing .

 

;
   LD B,5    ;5 Tentatives par prudence .
   LD HL,LITFDC2
   CALL COMLIPI
   LD HL,128    ;Taille 0 d'origine .
   LD (LONGSEC),HL
  ;
  NEXTLO1 PUSH BC
   LD A,#FF
   LD (BUFGAPS),A
   LD A,7     ;Lire piste sur LEN 7
   LD (QUATRID+3),A
   CALL INSTRU9  ;Aller tester le GAP
   LD A,(BUFGAPS)
   POP BC
   CP #4E
   JR Z,FIND#4E  ;Il est bon , c'est fini
   DJNZ NEXTLO1
 ;
 COLERE   Planter le programme à votre convenance .
 ;
 FIND#4E  CALL FINDGAP ;Si la longueur du GAP n'est pas correcte le  copieur
   JR NC,COLERE ;a essayé  de  ruser  en  formatant  avec un octet de
   RET      ;formatage de #4E
;

4EME MOUVEMENT

Faites un essai de copie avec le  copieur UTIL-SOFT ... Il faudra trouver  autre chose pour le ruser ... (C'est possible mais pas évident) .

Même si la piste est reproduite convenablement  , les valeurs de FAUX GAP auront sans doute changé .  Ce  que  l'on  y-trouve dépend d'une multitude de facteurs et sans doute aussi de la  vitesse de rotation du disque . N'essayez pas d'établir votre protection sur ces valeurs ...

ATTENTION ! Toute piste  utilisant  l'écrasement  de  secteurs ET FAISANT APPARAITRE UN NOMBRE DE SECTEURS TROP GRAND POUR LA FAUSSE TAILLE (Exemple 11 secteurs de taille 2 ou  10  Secteurs  de  taille  2  +  1  de taille 0) sera reproduite correctement par tout copieur .

EXERCICES

A l'aide du tableau d'écrasement  donné  dans  la section théorie , créez  des pistes dont l'analyse finale donne les résultats suivants :

Taille format : 0   Taille Format : 1  Taille Format : 0
  NP 00 C1 01 OK     NP 00 C1 01 OK   ;NP 00 C0 02 OK
  NP 00 C2 02 OK     NP 00 C2 02 OK   ;NP 00 C1 00 MAM
  NP 00 C3 02 OK     NP 00 C3 01 OK   ;NP 00 C2 01 OK
  NP 00 C4 02 OK     NP 00 C4 02 OK   ;NP 00 C3 00 OK
  NP 00 C5 02 OK     NP 00 C5 01 OK   ;NP 00 C4 01 CR/DD
  NP 00 C6 02 OK     NP 00 C6 02 OK   ;NP 00 C5 02 OK
  NP 00 C7 02 OK     NP 00 C7 01 OK   ;NP 00 C6 00 OK
  NP 00 C8 02 OK     NP 00 C8 02 OK   ;NP 00 C7 01 OK
  NP 00 C9 02 OK     NP 00 C9 01 OK   ;NP 00 C8 02 OK
  NP 00 CA 02 OK             ; NP 00 C9 00 MAM
  NP 00 C1 01 OK
  Plante tout copieur  Plante tout copieur Plante tout copieur
  sauf DISCOLOGY et U.S. sauf U.S    ; sauf U.S.

Lorsque  vous  aurez  réussi  à  recréer   fidèlement  ces  3  formats  , l'écrasement de secteurs n'aura plus de secrets pour vous .

2 : UN FAUX GAP POUR RUSER UNE PROTECTION NUNUCHE

Cette astuce à été étudiée pour des  pistes  à  9 secteurs avec GAP #F7 , peut-être fonctionnera t-elle sur d'autres pistes  mais ce n'est pas prouvé . Pour tester ce qui suit , il  faut  que  vous disposiez d'une disquette de ce genre .

Faites une copie intégrale de 0 à 41  avec le copieur et noter les pistes signalées avec un GAP non conforme à la fin des opérations .

Utilisez l'analyseur et imprimez l'analyse  de  ces pistes pour conserver les numéros de secteurs et la valeur du GAP .

Utilisez l'option 'Reproduire secteurs'.  Si  les secteurs sont écrits , avec des données , remplissez le buffer en conséquence . Si ils sont vides ou contiennent le même octet vous gagnerez  du  temps  , dans le cas contraire , sauvegardez le buffer après création (PAS SUR VOTRE ORIGINAL N.D.D.!) .

Placez maintenant la copie effectuée et formatez en format régulier la ou les pistes portant un GAP <> de #4E avec 32 secteurs de taille 0 et un GAP de 1 (J'ai bien dit UN) . Cette base de départ est valable dans tous les cas .

L'exemple qui suit est donné pour une piste avec GAP #F7 de 9 secteurs de #C1 à #C9 et de  taille  2  .  Pour  des  valeurs  différentes , modifiez les paramètres en conséquence , le principe est le même .

Utilisez format irrégulier . 32 secteurs de  taille  0 avec un GAP#3 de 1 et METTEZ LA VALEUR DE L'OCTET FILL A  LA  VALEUR  DU GAP A IMITER . Soit #F7 pour notre exemple .

Ensuite créer les IDS suivants :

       ; Np.Hd.Ns.Ls    Np.Hd.Ns.Ls
 CES 5 LIGNES SONT  NP 00 C0 02    00 00 00 00
 5 FAUX SECTEURS EN NP 00 C0 02    NP 00 C3 02
 CR/DD OU L'OCTET DE   NP 00 C0 02    00 00 00 00
 FORMATAGE EST #F7 OU  NP 00 C0 02    00 00 00 00
 LA VALEUR DU GAP . NP 00 C0 02    NP 00 C8 02
      ; NP 00 C1 02    00 00 00 00
      ; 00 00 00 00    00 00 00 00
      ; 00 00 00 00    NP 00 C4 02
      ; NP 00 C6 02    00 00 00 00
      ; 00 00 00 00    00 00 00 00
      ; 00 00 00 00    NP 00 C9 02
      ; NP 00 C2 02    00 00 00 00
      ; 00 00 00 00    00 00 00 00
      ; 00 00 00 00    NP 00 C5 02
      ; NP 00 C7 02    00 00 00 00
      ; 00 00 00 00    00 00 00 00

Formatez et utilisez la commande créer  piste  .  Si il y-à des octets de données à reproduire , chargez le buffer . Sinon utilisez CTRL+F pour remplir le buffer de 17000 à 17512 avec l'octet contenu par les secteurs (En principe c'est #E5) .
Ecrivez tous les secteurs de #C1 à  #C9  comme dans l'exemple 1 . SI VOUS ECRIVEZ PAR ERREUR L'UN DES 5 SECTEURS #C0 , C'EST RATE , RECOMMENCEZ TOUT !

Vous devez arriver au résultat suivant :

Np.Hd.Ns.Ls
NP 00 C0 02 CR/DD
NP 00 C0 02 CR/DD
NP 00 C0 02 CR/DD
NP 00 C0 02 CR/DD
NP 00 C0 02 CR/DD
NP 00 C1 02 OK
NP 00 C6 02 OK
NP 00 C2 02 OK
NP 00 C7 02 OK
NP 00 C3 02 OK
NP 00 C8 02 OK
NP 00 C4 02 OK
NP 00 C9 02 OK
NP 00 C5 02 OK

Si la piste d'origine était bien une piste  à 9 secteurs avec GAP à #F7 , la copie doit obligatoirement fonctionner ! C'est plutôt douteux pour d'autre pistes ...

Et comment se fait t-il qu'une piste aussi différente de l'originale soit acceptée ??? Très simple . Seule  la  valeur  du  GAP #F7 est testée et comme les 5 1ers secteurs de la piste contiennent #F7 le tour est joué !

Conclusion : Une  piste  bizarre  n'assure  pas  nécéssairement une bonne protection contre la copie , il faut  encore savoir établir un test sérieux ! Dans ce cas précis , un test sur le  nombre de secteurs ou sur les IDS (Mieux sur les 2) aurait rendu ces  pistes  vraiment incopiables . Ne travaillez pas comme des gamins ...

SOS Programmeurs n°4

★ ANNÉE: ???
★ AUTEUR: MICHEL MAIGROT

Page précédente : FDC - 26 - Sub Routines Pour le FDC
★ AMSTRAD CPC ★ DOWNLOAD ★

Dump disquette:
» SOS  Programmeurs  4    FRENCHDATE: 2003-03-28
DL: 1187
TYPE: ZIP
SiZE: 128Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Fdc - 01 - Fonctionnement Fdc (SOS Programmeurs)
» Coding » Fdc - 23 - Ecraser les Secteurs (SOS Programmeurs)
» Coding » Fdc - 08 - Test Interrupt (SOS Programmeurs)
» Coding » Fdc - 13 - Edition du Buffer (SOS Programmeurs)
» Coding » Fdc - 10 - Affichages Causes d'Interruptions Secondaires du Fdc (SOS Programmeurs)
» Coding » Fdc - 25 - Formatage et Ecriture Piste (SOS Programmeurs)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 201 millisecondes et consultée 2157 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.