/// Μονογράψτε το σύστημα δίσκων \\\
for(i=0; i<3; i++)
{
regs.h.ah = 0x00; /* Σύστημα δίσκων αναστοιχειοθέτησης */
regs.h.dl = 0x00; /*Δισκέτα α:*/
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; /* αριθμός κίνησης για το Α: */
dinfo.head = head; /* επικεφαλής αριθμός δίσκων */
dinfo.track = track; /*αριθμός διαδρομής */
dinfo.sector = sector;/*αριθμός τομέα */
dinfo.nsectors = 1; /* αρίθμηση τομέα */
dinfo.buffer = dbuf; /* απομονωτής στοιχείων*/
result= _bios_disk(_DISK_WRITE, &dinfo);
if ((result & 0xff00) == 0)
printf("Επιτυχής γράψτε στη διαδρομή = %d, Head = %d,
Sector = %d.\n", track, head, sector);
else
printf("Μην μπορέστε να διαβάσετε να οδηγήσει το Α, θέση = 0x%02x\n",
result);
}
}
}
}
Σχόλια στην κωδικοποίηση προγράμματος:
Στην κωδικοποίηση προγράμματος που δίνεται νωρίτερα, βασικά προχωράμε να εκτελέσουμε τους ακόλουθους στόχους βαθμιαία:
- Η σειρά filename[80 χαρακτήρα ] κρατά το όνομα πορειών και αρχείων του αρχείου στο οποίο αποθηκεύσαμε τα στοιχεία της επιφάνειας της δυσανάγνωστης δισκέτας προσωρινά.
- σημεία dinfo στη δομή diskinfo_t που περιέχει τις πληροφορίες των παραμέτρων που απαιτούνται από τη λειτουργία που εκτελείται από τη _ λειτουργία bios_disk.
- Μονογράψτε τη χρησιμοποίηση συστημάτων δίσκων διακόπτει 13H (λειτουργία 00h) όπου regs.h.ah = 0x00 τα σημεία στη λειτουργία 00 χ και regs.h.dl = 0x00 χρησιμοποιούνται για το α: πλαδαρός. Και int86(0x13, ®s, ®s) επικαλούνται το MS-DOS διακόπτουν την υπηρεσία INT 13 χ.
- Δεδομένου ότι πρόκειται να γράψουμε τις πληροφορίες άμεσα στους τομείς της επιφάνειας του δίσκου, οι παράμετροι _ του bios_disk θα είναι οι ακόλουθες:
|