Section courante

A propos

Section administrative du site

Introduction

L'extension «.TD0» permet d'indiquer un fichier disquette du logiciel TeleDisk de l'entreprise Sybex.

Structure du fichier

Le fichier d'image disque global a ce format :

Taille Description
12 octets Entête d'image. Si l'image a été créée en utilisant "Compression avancée", alors toutes ces lignes ci-dessous sont compressées avec l'encodage LZSS-Huffman :
10 octets Entête de commentaire facultatif
Taille variable Données de commentaire facultatives
Pour chaque piste du disque :
4 octets Entête de piste pour chaque secteur de la piste
6 octets Entête de secteur
3 octets Entête de données facultatif
Taille variable Bloc de données en option. L'image se termine par Trackheader commençant par 255 (FFh en hexadécimal)

Entête d'image

L'entête de l'image décrit des informations globales sur l'image disque. Il n'est jamais compressé et se présente sous le format suivant :

Taille Description
2 octets Ce champ contient la signature de TeleDisk. Voici les valeurs possibles :
Valeur Description
'TD' Cette valeur permet d'indiquer une compression normal.
'td' Cette valeur permet d'indiquer une compression avancé.
1 octet Ce champ contient la séquence. Commence par 00 et s'incrémente pour chaque membre d'un ensemble multi-volumes. Le TDCHECK signale "mauvais entête" si cette valeur est définie sur autre chose que 00.
1 octet Ce champ contient la séquence de contrôle. Il indique que cela doit être le même pour chaque membre d'un ensemble multi-volumes.
1 octet Ce champ contient la version de TeleDisk. Encode le numéro de version du programme Teledisk ayant créé l'image sous la forme High-nibble.low-nibble. Exemple : 15 = 1.5
1 octet Ce champ contient le débit de données. Encode le débit de données utilisé pour la disquette dans les 2 bits inférieurs :
Valeur Description
0 250 kbit/s
1 300 kbit/s
2 500 kbit/s
Le bit élevé indique une disquette à densité unique.
1 octet Ce champ contient le type d'unité de disque. Voici les encodages reconnus :
Valeur Description
1 360 Ko
2 1,2 Mo
3 720 Ko
4 1,44 Mo
1 octet Ce champ contient le saut. Encode le type de saut dans les 2 bits inférieurs :
Valeur Description
0 En un seul saut
1 Double saut
2 Pas de saut uniquement (disque 96 tpi dans l'unité de disque 48 tpi)
Le bit haut indique la présence d'un bloc de commentaire optionnel Teledisk .TD0. Le bit haut indique la présence d'un bloc de commentaire optionnel Teledisk .TD0.
1 octet Ce champ contient le drapeau d'allocation DOS. Une valeur différente de zéro signifie que le disque a été lu en utilisant la table FAT de DOS pour ignorer les secteurs non alloués.
1 octet Ce champ contient le côté de la disquette, soit l'encodage du nombre de faces lues sur le disque, soit la valeur 1 ou 2.
2 octets Ce champ contient le contrôle de redondance cyclique (CRC). Ce champ contient le contrôle de redondance cyclique de contrôle d'erreur pour l'entête calculé avec la valeur polynomiale 41111 (A097 hexadécimal) en utilisant une valeur prédéfinie d'entrée de 0. Le CRC est calculé sur les 10 premiers octets de l'entête et doit correspondre à la valeur entreposée dans ce champ.

Entête de commentaire/Bloc de données

Le bloc de commentaire encode un commentaire ASCII ainsi que la date de création. Sa présence est indiquée par le bit de poids fort du champ "Saut" dans l'entête de l'image en cours de réglage. Lorsqu'il est présent, il apparaît immédiatement après l'entête de l'image au format suivant :

Taille Description
2 octets Ce champ contient le contrôle de redondance cyclique. Ce champ de 16 bits contient le contrôle de redondance cyclique de contrôle d'erreur pour l'entête calculé avec la valeur polynomiale 41111 (A097 hexadécimal) en utilisant une valeur prédéfinie d'entrée de 0. Le CRC est calculé sur l'ensemble du bloc d'entête (commençant au déplacement 2 - juste après le CRC) et les enregistrements de données. Ce champ de 16 bits contient le contrôle de redondance cyclique de contrôle d'erreur pour l'entête calculé avec la valeur polynomiale 41111 (A097 hexadécimal) en utilisant une valeur prédéfinie d'entrée de 0. Le CRC est calculé sur l'ensemble bloc d'entête (commençant au déplacement 2 - juste après le CRC) et les enregistrements de données.
2 octets Ce champ contient la longueur des données. Il s'agit de la longueur du bloc de données de commentaire suivant l'entête de commentaire. Pour afficher les données de commentaire, lisez et affichez ce nombre d'octets après l'entête, en traduisant les octets NUL (00) en séquences de saut de ligne.
1 octet Ce champ contient l'année depuis 1900. Donne l'année de création de l'image en déplacement par rapport à 1900. Exemple : 2007 est encodé comme 2007 - 1900 = 107 (6B en hexadécimal).
1 octet Ce champ contient le mois. Donne le mois où l'image a été créée en utilisant un index zéro. C'est-à-dire : 0=janvier, 11=décembre.
1 octet Ce champ contient le jour. Donne le jour (du mois) où l'image a été créée en utilisant un intervalle de 1 à 31.
1 octet Ce champ contient l'heure. Donne l'heure de la journée à laquelle l'image a été créée sur 24 heures.
1 octet Ce champ contient les minutes.
1 octet Ce champ contient les secondes.

Après l'entête de commentaire se trouvent des enregistrements de ligne de commentaire, constitués de texte ASCII terminé par des octets NUL (00).

Entête de piste

Chaque piste de disque enregistrée dans l'image commencera par un entête de piste, ayant le format suivant :

Taille Description
1 octet Ce champ permet d'indiquer le nombre de secteurs. Ce champ indique le nombre de secteurs enregistrés pour cette piste. Cela indique également le nombre d'entêtes de secteur à attendre après l'entête de piste. Un nombre de secteurs de 255 (FF hexadécimal) indique la fin de la liste des pistes. Aucun autre champ n'apparaît dans cet enregistrement et le CRC n'est pas vérifié.
1 octet Ce champ permet d'indiquer le numéro de cylindre. Ce champ code le numéro de cylindre physique (position de la tête) pour cette piste, dans un intervalle de 0-(#pistes sur l'unité de disque-1).
1 octet Ce champ permet d'indiquer le numéro de côté/tête. Ce champ encode le côté disque (0 ou 1) sur lequel cette piste apparaît dans son bit le plus bas. Le bit de poids fort de ce champ est utilisé pour indiquer que la piste a été enregistrée en densité simple. Cela permet de représenter des disques à densité mixte (FM sur certaines pistes, et MFM sur d'autres). Les disques FM ont ce bit défini pour chaque piste, et pas le drapeau FM dans le bit 7 du champ "Débit de données" de l'entête de l'image.
1 octet Ce champ permet d'indiquer le contrôle de redondance cyclique. Ce champ de 8 bits contient l'octet inférieur d'un contrôle de redondance cyclique de contrôle d'erreurs de 16 bits pour l'entête calculé avec la valeur polynomiale 41111 (A097 en hexadécimal) en utilisant une valeur prédéfinie d'entrée de 0. Le CRC est calculé sur les trois premiers octets de l'entête et doit correspondre au quatrième octet.

Les entêtes de piste et les listes de blocs de secteurs apparaissent jusqu'à ce que toutes les pistes du disque aient été prises en compte. Lorsque le dernier enregistrement de piste et la liste de blocs de secteur ont été lus, un octet 255 (FF hexadécimal) indique la fin de l'image.

Entête de secteur

Après l'entête de piste, il y aura un certain nombre de blocs de secteur constitués d'un entête de secteur et d'un entête de données/bloc de données facultatif. Le nombre de blocs de secteurs est indiqué par le champ "Nombre de secteurs" dans l'entête de piste. Chaque entête de secteur a le format suivant :

Taille Description
1 octet Ce champ permet d'indiquer le numéro de cylindre. Ce champ indique le numéro de cylindre logique étant écrit dans le champ d'identificateur du secteur de disque. Pour la plupart des formats de disque, il correspond au numéro de cylindre indiqué dans l'entête de piste, mais cela n'est pas obligatoirement le cas - certains formats codent des numéros de cylindre non physiques.
1 octet Ce champ permet d'indiquer le côté/tête. Ce champ indique l'indicateur logique côté/tête étant écrit dans le champ d'identificateur du secteur de disque. Pour la plupart des formats de disque, il correspond au numéro côté/tête indiqué dans l'entête de la piste, mais ce n'est pas obligatoirement le cas - certains formats codent des numéros côté/tête non physiques.
1 octet Ce champ permet d'indiquer le numéro de secteur. Ce champ indique le numéro de secteur logique étant écrit dans le champ d'identificateur du secteur de disque. Les numéros de secteur ne doivent pas nécessairement être dans un ordre particulier (l'ordre des secteurs détermine le facteur d'entrelacement de la piste), ne commencent pas nécessairement à 0 ou 1 et ne sont pas nécessairement une série ininterrompue de numéros. Certains formats codent des numéros de secteur apparemment arbitraires. Le logiciel Teledisk crée parfois de faux entêtes de secteurs pour décrire des données ne se trouvant pas dans un secteur correctement formaté. Ces secteurs supplémentaires semblent être créés avec des numéros de secteur commençant à 100.
1 octet Ce champ permet d'indiquer la taille du secteur. Les valeurs suivantes correspondant au taille indiqués :
Valeur Description
0 128 octets
1 256 octets
2 512 octets
3 1024 octets
4 2048 octets
5 4096 octets
6 8192 octets
Notez qu'il existe des formats de disque qui ont des tailles de secteur différentes au sein d'une même piste, et Teledisk les encode de cette façon, cependant le contrôleur de disquette PC 765 ne peut pas formater de telles pistes et le disque ne peut pas être recréé.
1 octet Ce champ permet d'indiquer les drapeaux. Il s'agit d'un champ de bits indiquant les caractéristiques que Teledisk a notées sur le secteur lorsqu'il a été enregistré. Le champ contient le «Ou binaire» des valeurs d'octet suivantes :
Valeur Description
01 Le secteur a été dupliqué dans une piste.
02 Le secteur a été lu avec une erreur CRC.
04 Le secteur a une marque d'adresse "données supprimées".
10 Les données sectorielles ont été ignorées en fonction de l'allocation DOS.
20 Le secteur avait un champ d'identificateur mais pas de données.
40 Le secteur avait des données mais pas de champ d'identificateur (faux entête).
Les valeurs de bit 20 ou 10 indiquent qu'aucun bloc de données de secteur ne suit.
1 octet Ce champ permet d'indiquer le contrôle de redondance cyclique. Ce champ de 8 bits contient l'octet inférieur d'un contrôle de redondance cyclique de contrôle d'erreurs de 16 bits pour l'entête de secteur, l'en-tête de données et les données de secteur calculés avec la valeur polynomiale 41111 (A097 hex) en utilisant une valeur prédéfinie d'entrée de 0. Le CRC est calculé sur les cinq premiers octets de l'en-tête de secteur, l'entête de données de secteur entier et le bloc de données de secteur. Le CRC calculé doit correspondre à la valeur stockée dans le quatrième octet de l'entête de secteur.

Entête de données sectorielles

L'entête de données de secteur se produit après l'entête de secteur uniquement lorsque des données de secteur sont présentes. Ceci est indiqué par les bits 10 et 20 de la valeur de drapeau non positionnés. Lorsqu'il est présent, il a le format suivant :

Taille Description
2 octets Ce champ permet d'indiquer la taille du bloc de données. Ceci indique la taille du bloc de données du secteur, y compris la méthode de codage (c'est-à-dire : taille du bloc de données + 1).
1 octet Ce champ permet d'indiquer la méthode d'encodage. Ce champ décrit comment les données du secteur sont codées. Il peut avoir trois valeurs possibles :
Valeur Description
0 Cette valeur permet d'indiquer les données secteurs brutes. La méthode d'encodage = 0 indique que les octets de "taille du secteur" des données brutes du secteur suivent. Il s'agit du contenu réel des données pour le secteur.
1 Cette valeur permet d'indiquer le modèle de 2 octets répété. La méthode de codage = 1 indique qu'un modèle répété de 2 octets est utilisé. Notez que cela peut se produire plusieurs fois jusqu'à ce que le secteur entier ait été recréé, comme déterminé par la "taille du secteur" dans l'en-tête du secteur. Chaque entrée se compose de deux valeurs de 16 bits. La première est une valeur de comptage indiquant combien de fois la seconde (la valeur des données) est répétée.
2 Cette valeur permet d'indiquer les données encodées de longueur d'exécution. La méthode de codage = 2 indique qu'un bloc de données RLE se produit. Notez que cela peut se produire plusieurs fois jusqu'à ce que le secteur entier ait été recréé, comme déterminé par la "taille du secteur" dans l'en-tête du secteur. Chaque entrée commence par une valeur de 1 octet ou 00. Si 00, alors cette entrée est pour un bloc littéral. L'octet suivant indique une longueur 'n', et les 'n' octets suivants sont copiés dans les données du secteur sous forme d'octets bruts (similaire à la méthode d'encodage = 0 sauf pour une partie seulement du secteur). Si ce n'est pas 00, alors la longueur 'l' est déterminée comme la valeur * 2 (c'est-à-dire : 2-510). L'octet suivant indique un nombre de répétitions «r». Un bloc de «l» octets est ensuite lu une fois à partir du fichier et répété dans les données du secteur «r» fois.

Les entêtes de secteur et les blocs de données se produisent jusqu'à ce que tous les secteurs de la piste aient été pris en compte.



Dernière mise à jour : Mardi, le 24 juin 2014