APPLICATIONSDISQUE ★ CRAZY v3.0 ★

Crazy v3.0 (CPC Revue)Applications Disque

Vous êtes curieux de nature, vous voulez savoir ce qu'une disquette a dans le ventre ? Mais cette disquette est "protégée" son formatage est différent, les secteurs ne sont pas standards, ont une longueur différente de 512 octets.

Ce programme est ce qu'il vous faut. Il va enfin vous permettre d'arriver à vos fins.Cliquez sur l'image pour l'agrandir
En effet ce programme dialogue avec le contrôleur de disquette, il le programme directement et affiche ses registres. Ainsi tout devient possible, dans les limites permises par celui-ci, bien sûr. Bien que certaines manipulations "pas très orthodoxes" permettent bien des choses amusantes.

LA DISQUETTE

Il faut rappeler que sur la disquette, les informations sont réparties en pistes concentriques (il y en a 40 sur chaque face) et que chaque piste est subdivisée en secteurs (théoriquement 9).

LE CONTROLEUR

Par exemple, sur l'APPLE II, qui ne possède pas de contrôleur digne de ce nom, les programmeurs ont des tas de problèmes de synchronisation, de parité, de checksums, de localisation des données...
Tandis que le contrôleur s'occupe de tout. Il suffit de lui indiquer le secteur désiré et il effectuera toutes ces tâches ingrates tout seul.
Le circuit utilisé est le µDP 765 A de NEC. Ce circuit équipe des machines comme l'ORIC ou même les IBM PC... eh oui !
Ce circuit est très convivial, c'est pourquoi on convient de distinguer 3 phases dans sa programmation : Phase instruction : c'est là qu'on lui indique ce qu'il doit faire. Par exemple se positionner en telle piste, lire tel secteur. Phase exécution : le FDC (Floppy Disk Contrôler) fait ce qu'on lui dit. Phase résultat : le FDC dit comment s'est passée la phase précédente.

LES INSTRUCTIONS

Je ne vais pas passer en revue toutes les instructions du FDC, mais pour ceux qui seraient intéressés, je leur conseille vivement de se reporter au "Livre du lecteur de disquette AMSTRAD" chez Micro-Application (n°10). Toutefois, il me semble nécessaire d'en examiner quelques unes, celles qui sont utilisées dans le programme :
"Chercher piste" : sans commentaires
"Aller en piste 0" : idem
"lire secteur" : le FDC a besoin de 7 informations

– le numéro de piste ;
– l'adresse de tête (0 = face A) ;
– le numéro du secteur ;
– la taille du secteur (sa longueur divisée par 256 ; 2 pour 512 par exemple) ;
– le numéro du dernier secteur de la piste (généralement on indique celui du secteur voulu à cause d'un compromis au niveau du matériel) ;
– GAP # 3 (c'est le nombre d'octets qui séparent les secteurs. Cela évite de réécrire sur le secteur suivant, on ne sait jamais, imaginez que le moteur tourne plus vite...) ;
– 0Fh (255) est généralement le dernier paramètre. Théoriquement il a une signification si la longueur fournie est nulle. (Il semblerait pourtant que... Un conseil n'y touchez pas). Les 4 premiers
octets constituent ce qu'on appelle l'ID (entifiateur) du secteur REM : L'ID n'est qu'indicatif et n'a pas toujours la signification à laquelle on pourrait s'attendre : on reviendra dessus plus loin. Les données pour l'écriture sont les mêmes.
Il existe un autre type de secteurs reconnus par le FDC, ce sont les secteur dits "effacés", les informations à fournir sont les mêmes que pour la lecture normale, seul le Data Adress Mark sera différent. REM : l'AMSDOS ne s'en préoccupe pas.
"formatage" : cette instruction ne nécessite que 4 informations.
– la taille des secteurs ;
– le nombre de secteurs ;
– le GAP #3 (l'AMSDOS utilise une valeur de 50h (80) et la valeur à la lecture et à l'écriture est de 2Ah (42) ;
– le modèle de donnée pour le remplissage (l'AMSDOS et CPM utilisent tous deux la valeur 05h (245).
Il faut aussi remplir un buffer où seront stockées les ID des secteurs. REM : les ID peuvent n'avoir aucune signification, les secteurs seront malgré tout accessibles, à condition de fournir au FDC les données adéquates.

STRUCTURES D'UNE PISTE

CRC : somme de test ;
IAM : ID adress mark ;
IAM : index adress mark ;
DAM : data adress mark.
Théoriquement tous ces octets ne sont pas disponibles pour l'utilisateur, mais il existe un moyen d'y avoir accès.

LE TRUC

Il faut pour cela réaliser un formatage un peu "spécial", mais rassurez-vous, c'est sans danger.
Prenez une disquette normale, analysez une piste, initialisez les données pour le formatage, allez modifier le 3e octet en partant du haut à gauche de la fenêtre "analyse de la piste" : il doit être à 2, remplacez le par 6, formatez la piste. (Attention prenez une disquette qui ne contient aucune information importante car elle serait perdue). Il suffit maintenant d'initialiser les données du FDC et de lire le secteur. Si vous avez suivi ces instructions à la lettre, en passant au dump, vous devriez devoir découvrir tous les octets précités.

LA MISE EN ROUTE DU PROGRAMME

– tapez la partie en BASIC ;
– sauvez la ;
– tapez le programme contenant les datas du langage machine ;
– exécutez ce second programme ;
– il vous faut aussi sauver un moniteur désassembleur sur cette même disquette. Il faut que ce programme soit situé très haut dans la mémoire (30000 ou plus). MONA31 de HISOFT ou D.A.M.S. de Micro-Application conviennent, mais vous pouvez aussi bien utiliser le "Mini-moniteur" de Denis BOUR-QUIN paru dans CPC n° 11. Selon le programme utilisé il faut modifier en conséquence la ligne 60.
MISE EN GARDE

Protégez vos disquettes contre l'écriture, une fausse manipulation est si vite arrivée. Ne retirez cette protection que quand c'est nécessaire-

LE PROGRAMME

  • Démarrage moteur : à faire avant toute chose
  • Arrêt moteur : utile !
  • Arrêt : fin du programme (dont arrêt moteur)
  • Passage au dump ; sans commentaires (dépend du moniteur utilisé)
  • Aller piste i : de 0 à 42, mais oui, on peut avoir 3 pistes supplémentaires, mais attention certains lecteurs risquent peut-être de ne pas apprécier
  • Piste suivante : no comment
  • Piste précédente : idem Ecrire/normal :
  • Lire/efface : les données du FDC doivent avoir été initialisées correctement. Dans une fenêtre située en bas est indiqué le nombre d'octets effectivement transférés
  • Formater : dernière étape du formatage. C'est là que le contrôleur formate la piste
  • Analyse piste : affiche tous les ID se trouvant sur la piste. L'ID en haut à gauche est le premier secteur dont le numéro est le plus faible comme le donne Odd-job ou Master Disc)
  • Changer le formatage : permet de changer les ID,ENTER permet de passer à la donnée suivante sans modifier celle sous le curseur
  • Init donnée format : initialise les valeurs standards du GAP#3 à 50H et la donnée à ESH
  • Changer donnée format : demande les 4 données nécessaires au contrôleur pour le formatage. ENTER pour ne pas modifier une donnée
  • Changer nombre secteurs : de 0 à 20, permet de vérifier si le nombre de secteurs trouvés est valable
  • Ordre des secteurs : permet de changer l'ordre. Le premier devient le dernier. Vu que lorsqu'on initialise les données du FDC c'est l'ID du premier secteur qui est prise en compte, c'est utile, surtout pour parcourir une piste.
  • Attention la rotation ne s'effectue que sur les secteurs affichés, donc attention aux surprises si après on augmente le nombre de secteurs
  • Init données FDC : initialise les données pour la lecture ou l'écriture. L'ID est celui du premier secteur du cadre en haut à gauche
  • Changer données FDC : cf changer données format.
PHASE RESULTAT

Cadre de droite pour les FLAGS du contrôleur
Cadre à droite du premier et en haut pour l'ID.

FLAGS

  • Interrupt code : normalement à 1 en fin d'instruction
  • Seek end : mis à 1 en fin d'instruction (de comparaison)
  • Equipment check : erreur de lecteur
  • Non ready : lecteur non prêt si à 1
  • Head adress : toujours à 0 (sur un lecteur n'ayant qu'une tête)
  • Unit sélect : toujours à 1 End of track : sur l'AMSTRAD toujours à 1
  • Data error 1 : erreur de checksum si à 1
  • Over run : le transfert de données s'est fait trop rapidement, des données ont été perdues
  • No data : l'ID demandée n'existe pas sur la piste
  • Non writable : la disquette est protégée contre l'écriture
  • Missing AM 1 : 'signifie généralement que la piste n'est pas formatée
  • Control mark : mis à 1 si un secteur "efface" est rencontré
  • Data error 2 : erreur de checksum (celui avant le GAP#3)
  • Wrong cylinder : mis à 1 si la piste indiquée dans l'ID est différente de la piste physique
  • Scan equal hit : non utilisé
  • Scan not satisfied : non utilisé
  • Bad cylinder : formatage incorrect
  • Missing DAM 2 : généralement mis à 1 quand la piste n'est pas formatée ou ne l'est pas correctement.


CONCLUSION

Voilà, j'espère que ça n'a pas été trop ardu et que tout le monde est arrivé sans casse au bout de cet article. Mais surtout ne vous désespérez pas, si vous n'avez pas compris quelque chose, essayez le donc.
Rien de tel que l'expérience, mais attention avant de jouer à l'apprenti sorcier, protégez les disquettes importantes... Bonne expérimentation : faites nous part de vos problèmes et de vos trouvailles (par écrit).
Une prochaine fois, je vous expliquerai comment déformater une disquette, comment on détermine quel secteur est le premier sur la piste, comment introduire des décalages de bits sur la disquette...

BELLONCLE Pascal

Documentation :
Livre numéro 10 de Micro-Application
IBM Hardware Technical Référence

Remarques complémentaires :
– Le buffer "secteurs" est implanté à partir de l'adresse &4000. C'est donc cette zone que vous listerez au moyen de votre moniteur.
– La ligne 60 sera à modifier en fonction du moniteur que vous utiliserez. Attention ! certains moniteurs (tels que ZEN) qui s'implantent trop bas dans la mémoire ne peuvent pas être utilisés avec ce programme.
– Le CALL à la ligne 33010 devra être adapté en fonction du moniteur utilisé.

CPC n°17

★ EDITEUR: CPC Revue
★ ANNÉE: 1986
★ CONFIG: ???
★ LANGAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC REVUE 1986
★ AUTEUR: Pascal BELLONCLE
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Crazy  v3.0    FRENCHDATE: 2013-05-04
DL: 267
TYPE: ZIP
SiZE: 8Ko
NOTE: Extended DSK/40 Cyls
.HFE: Χ

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

Lien(s):
» Applications » Disc Cataloguer (The Amstrad User)
» Applications » Disksort Star (CPC Amstrad International)
» Applications » Amiga to CPC v2
» Applications » Disc Encoder v2
» Applications » Dirprint v42 (Amstrad Action)
» Applications » Amstrad Disc-Editor (AMDED)
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 801 millisecondes et consultée 1716 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.