ok,
Je viens juste d'ajouter a mon soft la possibilité de créer un fichier contenant les tracks mfm à partir des images disques chargées dans le soft :
Atari : ST / MSA
Amiga: ADF / DMS / IPF (sur ce format le résultat n'est pas encore garanti ;-)
PC : CopyQM (DSK), IMG.
CPC : (E)DSK
Tu peux télécharger le soft ici :
http://hxc2001.free.fr/floppy_drive_emulator/HxCFloppyEmulator_soft.zip
Tu dézippes, démarres l’application. Tu peux ensuite faire un drag and drop de ton fichier image puis aller dans Disk-> "Write MFM file" pour créer le fichier MFM. (Tu peux ignorer le message d ‘erreur concernant le driver FTDI ou la non présence de l’interface).
Voici le format du fichier crée:
Il s'agit bien sur d'un format expérimental et minimaliste qui aura besoin d'être étoffé:
Au début du fichier on trouve cet en-tête :
typedef struct MFMIMGHEADER_
{
byte headername [ 7 ]; // Chaîne de caractère contenant HXCMFM\0
word number_of_track; // nombre de piste dans le fichier
byte number_of_side; // nombre de face par piste
word floppyRPM; // rotation par minute
word floppyBitRate; // bitrate (en milliers de bit /s )
byte floppyiftype; // mode de l’interface floppy : 1=shuggart 2=ibm pc
dword mfmtracklistoffset; // offset dans le fichier de la liste des descripteurs des pistes.
} MFMIMGHEADER;
mfmtracklistoffset pointe sur un tableau de structure contenant les informations permettant de retrouver le flux mfm dans le fichier :
ce tableau contient number_of_track* number_of_side elements.
typedef struct MFMTRACKIMG_
{
word track_number; // numéro de la piste
byte side_number; // face
dword mfmtracksize; // taille du flux mfm de la piste en octet
dword mfmtrackoffset; // position dans le fichier du flux mfm
}MFMTRACKIMG;
La suite du fichier contient les tracks pré-encodées prêtes à être sérialisées.
Comme tu peux t’en douter chaque bit mfm est encodé sur 2 bits : les patterns possibles sont : 10 , 01 , 00. le 1 représentant la position du pulse dans le temps d’un bit mfm. Nous avons donc 4 bits mfm par octet.
Voila