/// Inizializzare il sistema di disc \\\
for(i=0; i<3; i++)
{
regs.h.ah = 0x00; /* Ripristinare il sistema di disc */
regs.h.dl = 0x00; /* Dischetto 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; /* numero di azionamento per A: */
dinfo.head = head; /* numero capo del disc */
dinfo.track = track; /* numero della pista */
dinfo.sector = sector;/* numero del settore */
dinfo.nsectors = 1; /* conteggio di settore*/
dinfo.buffer = dbuf; /* amplificatore di dati*/
result= _bios_disk(_DISK_WRITE, &dinfo);
if ((result & 0xff00) == 0)
printf("Riuscito scrivere sulla pista= %d, Head = %d,
Sector = %d.\n", track, head, sector);
else
printf("Non può leggere l'azionamento A, condizione = 0x%02x\n",
result);
}
}
}
}
Osservazioni su codificazione di programma:
Nella codificazione di programma data più presto, stiamo continuando basicamente effettuare le seguenti mansioni per gradi:
- Il nome di schedario di allineamento di carattere [80] tiene il percorso ed il nome di archivio della lima in cui abbiamo memorizzato temporaneamente i dati della superficie del disco magnetico illeggibile.
- il dinfo indica alla struttura del diskinfo_t che contiene le informazioni dei parametri richiesti tramite il funzionamento realizzato dalla funzione del _bios_disk.
- Inizializzare il sistema di disc usando l'interruzione 13H (funzione 00h) dove regs.h.ah = 0x00 indica alla funzione 00 H e regs.h.dl = 0x00 è usato per la a: floscio. E int86 (0x13, ®s, ®s) invoca il servizio 13 INTERNI H. di interruzione di MS-DOS.
- Poichè stiamo andando redigere le informazioni direttamente ai settori della superficie del disc, i parametri di _bios_disk saranno come segue:
|