|
///Das Plattensystem initialisieren \\\
for(i=0; i<3; i++)
{
regs.h.ah = 0x00; /*Plattensystem zurückstellen */
regs.h.dl = 0x00; /* Diskette 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; /* Laufwerknummer für A: */
dinfo.head = head; /*Scheibe Spurnummer*/
dinfo.track = track; /*Schiene Zahl*/
dinfo.sector = sector;/* Sektorzahl */
dinfo.nsectors = 1; /* Sektoranzahl */
dinfo.buffer = dbuf; /* Datenpuffer*/
result= _bios_disk(_DISK_WRITE, &dinfo);
if ((result & 0xff00) == 0)
printf("Successful write on Track = %d, Head = %d,
Sector = %d.\n", track, head, sector);
else
printf("Kann nicht Antrieb A lesen, status = 0x%02x\n",
result);
}
}
}
}
Anmerkungen zur Programmkodierung:
In der Programmkodierung, die früh, im Allgemeinen fahren wir gegeben wird, fort, die folgenden Aufgaben Schritt für Schritt durchzuführen:
- Buchstabe Reihe Dateiname [80] hält den Weg und Dateinamen der Akte, in der wir die Daten der Oberfläche des unlesbaren Floppy-Discs vorübergehend speicherten.
- dinfo zeigt auf die diskinfo_t Struktur, die die Informationen der Parameter enthält, die durch den Betrieb erfordert werden, der durch die _bios_disk Funktion durchgeführt wird.
- Das Plattensystem mit der Unterbrechung 13H (Funktion 00h) initialisieren wo regs.h.ah = 0x00 auf die Funktion 00 H zeigt und regs.h.dl = 0x00 für a verwendet wird: schlaff. Und int86 (0x13, ®s, ®s) ruft MS-DOSunterbrechung Service INTERNE 13 H. hervor.
- Wie wir zu gehen die Informationen direkt zu den Sektoren der Oberfläche der Scheibe schreiben, Die Parameter von _bios_disk sind, wie folgt:
|
|