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: 949
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 - 04 - Test Drive (SOS Programmeurs)
» Coding » FDC - 26 - Sub Routines Pour le FDC (SOS Programmeurs)
» Coding » Fdc - 12 - la Routine d'Ecriture de Secteurs (SOS Programmeurs)
» Coding » Fdc - 24 - Reproduction (SOS Programmeurs)
» Coding » Fdc - 22 - Analyse de la Piste (SOS Programmeurs)
» Coding » Fdc - 07 - Routines Annexe (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.7-desktop
Page créée en 278 millisecondes et consultée 1658 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.