/// Initialiser le système de disque \\\
for(i=0; i<3; i++)
{
regs.h.ah = 0x00; /* Remettre à zéro le système de disque */
regs.h.dl = 0x00; /* Disquette a : */
int86(0x13, ®s, ®s);
}
for(track=0;track<=79;track++)
{
for(head=0;head<=1;head++)
{
for(sector=1;sector<=18;sector++)
{
count =0;
while(count<512 )
{
fscanf(fp,"%c",&dbuf[count]);
count++;
}
dinfo.drive = 0x00; /* nombre d'entraînement pour A :*/
dinfo.head = head; /* nombre principal de disque*/
dinfo.track = track; /* nombre de voie */
dinfo.sector = sector;/* nombre de secteur*/
dinfo.nsectors = 1; /* compte de secteur */
dinfo.buffer = dbuf; /* amortisseur de données */
result= _bios_disk(_DISK_WRITE, &dinfo);
if ((result & 0xff00) == 0)
printf("Réussi écrire sur la voie = %d, Head = %d,
Sector = %d.\n", track, head, sector);
else
printf("Ne peut pas lire le lecteur A, statut= 0x%02x\n",
result);
}
}
}
}
Commentaires sur le codage de programme :
Dans le codage de programme donné plus tôt, fondamentalement nous nous poursuivons pour exécuter le suivant charge point par point :
- Le nom de fichier d'ensemble de caractères [80] tient le chemin et le nom de fichier du dossier dans lequel nous avons stocké les données de la surface du disque souple illisible temporairement.
- le dinfo se dirige à la structure de diskinfo_t qui contient l'information des paramètres exigés par l'opération effectuée par la fonction de _bios_disk.
- Initialiser le système de disque en utilisant l'interruption 13H (fonction 00h) où regs.h.ah = 0x00 se dirige à la fonction 00 H et regs.h.dl = 0x00 est employé pour a : souple. Et int86 (0x13, ®s, ®s) appelle le service 13 INTERNES H. d'interruption de MS-DOS.
- Car nous allons écrire l'information directement aux secteurs de la surface du disque, les paramètres du _bios_disk seront comme suit :
|