Disquette CPM: gestion de l'entrelacement des secteurs par logiciel ?
Modérateurs : Papy.G, fneck, Carl
Disquette CPM: gestion de l'entrelacement des secteurs par logiciel ?
L'entrelacement (ou interleaving) des secteurs est habituel sur les disquettes, car ça permet d'éviter des rotations inutiles (à cause de la lenteur du contrôleur et de l'ordinateur) lorsqu'on veut lire des secteurs en séquentiel.
Globalement, l'ordre des secteurs physiques sur la disquette ne correspond pas à l'ordre des secteurs logiques.
On peut avoir par exemple sur une piste des secteurs ordonnés physiquement de cette manière: 1 4 7 2 5 8 3 6 9 (le chiffre étant l'identifiant logique du secteur).
Dans les disquettes que j'avais vu jusqu'à présent, le numéro de secteur logique était mis dans l’entête du secteur. Dans ce cas, le software peut simplement ignorer l'entrelacement et demande juste au contrôleur les secteurs grâce à leur identifiant logique. Le contrôleur trouve le bon secteur grâce au header du secteur.
Ce weekend, j'ai dumpé une disquette CPM en encodage FM dont les identifiants dans le header de secteurs sont séquentiels (1 2 3 4 ... ) alors que quand je regarde le contenu (par exemple ce qui concerne la liste des fichiers), il y a manifestement de l'entrelacement de secteurs.
Ça voudrait dire que l'entrelacement des secteurs est géré en software par le BIOS, l'OS ou le soft. Par effet de bord, ca rend aussi la disquette spécifique à une machine.
Est-ce que c'est quelque chose que vous avez déjà vu ?
Globalement, l'ordre des secteurs physiques sur la disquette ne correspond pas à l'ordre des secteurs logiques.
On peut avoir par exemple sur une piste des secteurs ordonnés physiquement de cette manière: 1 4 7 2 5 8 3 6 9 (le chiffre étant l'identifiant logique du secteur).
Dans les disquettes que j'avais vu jusqu'à présent, le numéro de secteur logique était mis dans l’entête du secteur. Dans ce cas, le software peut simplement ignorer l'entrelacement et demande juste au contrôleur les secteurs grâce à leur identifiant logique. Le contrôleur trouve le bon secteur grâce au header du secteur.
Ce weekend, j'ai dumpé une disquette CPM en encodage FM dont les identifiants dans le header de secteurs sont séquentiels (1 2 3 4 ... ) alors que quand je regarde le contenu (par exemple ce qui concerne la liste des fichiers), il y a manifestement de l'entrelacement de secteurs.
Ça voudrait dire que l'entrelacement des secteurs est géré en software par le BIOS, l'OS ou le soft. Par effet de bord, ca rend aussi la disquette spécifique à une machine.
Est-ce que c'est quelque chose que vous avez déjà vu ?
Dernière modification par gotcha le 03 mars 2024 07:52, modifié 1 fois.
Amstrad CPC et Goupil power
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
- fneck
- Site Admin
- Messages : 17541
- Inscription : 01 avr. 2007 12:03
- Localisation : Drôme Provençale (26)
- Contact :
Re: Disquette: gestion de l'entrelacement des secteurs par logiciel ?
Je reviens sur ta question et en particulier je me demande comment tu fais pour lire le header des secteurs ?
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Re: Disquette: gestion de l'entrelacement des secteurs par logiciel ?
Oui, c'est pareil pour le QDD Thomson.
Mais le QDD, au contraire d'un lecteur de disquette traditionnel, est un lecteur séquentiel. Les secteurs sont mis bout à bout et ne peuvent être lus que dans l'ordre physique. Il faut donc créer un entrelacement logique, d'une part pour avoir le temps de traiter un secteur avant de lire le suivant, d'autre part pour optimiser le temps de lecture de la table d'allocation et du répertoire.
Code : Tout sélectionner
//Table des secteurs logiques en fonction des secteurs physiques du Quick Disk
//Secteur de boot: 112 en $3800 (piste 7 secteur 1)
//FAT............: 321 en $A080 (piste 20 secteur 2)
//Repertoire.....: 322 en $A100 (piste 20 secteur 3)
int qdsector[400] =
{
321, 33,225,129,322, 34,226,130,323, 35,227,131,324, 36,228,132, //pistes 20,2,14,8
325, 37,229,133,326, 38,230,134,327, 39,231,135,328, 40,232,136,
329, 41,233,137,330, 42,234,138,331, 43,235,139,332, 44,236,140,
333, 45,237,141,334, 46,238,142,335, 47,239,143,336, 48,240,144,
337,305,209,113,338,306,210,114,339,307,211,115,340,308,212,116, //pistes 21,19,13,3
341,309,213,117,342,310,214,118,343,311,215,119,344,312,216,120,
345,313,217,121,346,314,218,122,347,315,219,123,348,316,220,124,
349,317,221,125,350,318,222,126,351,319,223,127,352,320,224,128,
353,289,193, 97,354,290,194, 98,355,291,195, 99,356,292,196,100, //pistes 22,18,12,6
357,293,197,101,358,294,198,102,359,295,199,103,360,296,200,104,
361,297,201,105,362,298,202,106,363,299,203,107,364,300,204,108,
365,301,205,109,366,302,206,110,367,303,207,111,368,304,208,112,
369,273,177, 81,370,274,178, 82,371,275,179, 83,372,276,180, 84, //pistes 23,17,11,5
373,277,181, 85,374,278,182, 86,375,279,183, 87,376,280,184, 88,
377,281,185, 89,378,282,186, 90,379,283,187, 91,380,284,188, 92,
381,285,189, 93,382,286,190, 94,383,287,191, 95,384,288,192, 96,
385,257,161, 65,386,258,162, 66,387,259,163, 67,388,260,164, 68, //pistes 24,16,10,4
389,261,165, 69,390,262,166, 70,391,263,167, 71,392,264,168, 72,
393,265,169, 73,394,266,170, 74,395,267,171, 75,396,268,172, 76,
397,269,173, 77,398,270,174, 78,399,271,175, 79,400,272,176, 80,
17,241,145, 49, 18,242,146, 50, 19,243,147, 51, 20,244,148, 52, //pistes 1,15,9,3
21,245,149, 53, 22,246,150, 54, 23,247,151, 55, 24,248,152, 56,
25,249,153, 57, 26,250,154, 58, 27,251,155, 59, 28,252,156, 60,
29,253,157, 61, 30,254,158, 62, 31,255,159, 63, 32,256,160, 64,
1, 9, 5, 13, 2, 10, 6, 14, 3, 11, 7, 15, 4, 12, 8, 16 //piste 0
};
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 408
- Inscription : 22 juil. 2020 20:56
Re: Disquette: gestion de l'entrelacement des secteurs par logiciel ?
Je sais que la bible PC (en particulier la deuxième édition) traite en profondeur du problème de la lecture des disquettes. Un autre ouvrage intéressant à ce sujet et Maîtrise du BIOS et du DOS chez Marabout.
Sur PC,, de mémoire, les fonctions pour lire et écrire des disquette en RAW est la 13 en hexadécimal, mais je vais regarder cela de plus près.
https://www.gladir.com/LEXIQUE/INTR/INT13.HTM
Sur PC,, de mémoire, les fonctions pour lire et écrire des disquette en RAW est la 13 en hexadécimal, mais je vais regarder cela de plus près.
https://www.gladir.com/LEXIQUE/INTR/INT13.HTM
Re: Disquette: gestion de l'entrelacement des secteurs par logiciel ?
Dans les images au format d'image IMG (qui ne contient que des données utilisateur), les secteurs ont été remis dans l'ordre logique et on n'a aucune information liée au header.
Mais les autres formats conservent généralement certaines données des headers. Par exemple, le format IMD garde pour chaque secteur un 'secteur id' et aussi optionnellement un 'track id' et 'head id'. J'imagine que certaines protections de copie jouent avec ces infos. Ça permet aussi par exemple de permettre aux disquettes TO8 double face d'avoir les secteurs de la face 1 déclarés comme étant en face 0.
De mon coté, je fais d'abord une image 'flux' au format SCP. A partir de là, HxCFloppyEmulator a accès aux headers de secteurs et affiche le sector ID qu'il trouve. Je convertis ensuite en IMD qui va conserver des infos des headers et même aussi l'information qu'il y a une erreurs CRC dans les données.
Dernière modification par gotcha le 03 mars 2024 07:16, modifié 5 fois.
Amstrad CPC et Goupil power
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Re: Disquette: gestion de l'entrelacement des secteurs par logiciel ?
Je pense que j'ai trouvé réponse à ma question initiale ici : https://www.sydneysmith.com/wordpress/1 ... k-formats/
En fait, ce que je trouvais exotique semble être la norme pour les disquettes 8" CPM. A partir de la piste 2, le CPM gère lui même l'entrelacement (ils parlent de skew), avec un facteur 6, ce qui correspond à mes observations sur la disquette que je regardais. Cet entrelacement est géré 'en dur' par logiciel dans le code de CPM.
A partir de là, je vais pouvoir écrire un programme pour extraire les fichiers des dumps de disquettes 8" CPM que j'ai fais.
En fait, ce que je trouvais exotique semble être la norme pour les disquettes 8" CPM. A partir de la piste 2, le CPM gère lui même l'entrelacement (ils parlent de skew), avec un facteur 6, ce qui correspond à mes observations sur la disquette que je regardais. Cet entrelacement est géré 'en dur' par logiciel dans le code de CPM.
Voici par exemple une table de translation qu'on trouve dans le code de CPM pour gerer le skew.CP/M used the first two tracks (track 0 and track 1). The directory was stored in the “first” 8 sectors of Track 2, and data followed that.
I used quotes around “first” because the standard was to skew sectors from track 2 onward by a factor of 6. On the disk they were written as sector 1, 2, …, 26; but CP/M accessed them in a different order.
Code : Tout sélectionner
; sector translate vector
trans: db 1,7,13,19 ;sectors 1,2,3,4
db 25,5,11,17 ;sectors 5,6,7,8
db 23,3,9,15 ;sectors 9,10,11,12
db 21,2,8,14 ;sectors 13,14,15,16
db 20,26,6,12 ;sectors 17,18,19,20
db 18,24,4,10 ;sectors 21,22,23,24
db 16,22 ;sectors 25,26
Amstrad CPC et Goupil power
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
- fneck
- Site Admin
- Messages : 17541
- Inscription : 01 avr. 2007 12:03
- Localisation : Drôme Provençale (26)
- Contact :
Re: Disquette CPM: gestion de l'entrelacement des secteurs par logiciel ?
Bien vu, merci pour l'explication
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3