Παραγωγή της εικόνας του αρχείου μποτών DOS μιας καλής δισκέτας
Για να αποθηκεύσει την εικόνα του αρχείου μποτών της φρέσκιας δισκέτας, το πρόγραμμα πρέπει να κάνει τους ακόλουθους τρεις στόχους:
- Διαβάστε ακριβώς πρώτα 512 ψηφιολέξεις της καλής δισκέτας
- Διαβάστε ακριβώς πρώτα 512 ψηφιολέξεις του καλού floppyaCheck για την επιτυχή διαβασμένη λειτουργία (την σημαντικότερη)
- Αποθηκεύστε αυτές τις 512 ψηφιολέξεις στη διευκρινισμένη πορεία ονομάτων αρχείου και προορισμού
Ο τομέας της δισκέτας είναι 512 ψηφιολέξεις και είναι απαραίτητο να αντιγραφεί η ακριβής εικόνα του τομέα. Είναι σημαντικότερο και απαραίτητο βήμα σε περίπτωση οποιουδήποτε τύπου διαδικασιών που εφαρμόζονται στη δισκέτα στον έλεγχο εάν η λειτουργία ήταν επιτυχής ή όχι.
Μπορεί να υπάρξει οποιοδήποτε πρόβλημα έναρξης ακόμη και με την καλή και φρέσκια δισκέτα. Γίαυτό σοι περισσότερες από τις περιπτώσεις όταν εκτελείται η λειτουργία σε δισκέτες, καταρχήν η έναρξη των δισκετών εκτελείται στον προγραμματισμό με τη λειτουργία δίσκων αναστοιχειοθέτησης (λειτουργία 00 χ του INT 13H).
Εάν ακόμα και μετά από την έναρξη η πρόσφατα δισκέτα ή η αλλαγμένη δισκέτα προκαλεί οποιοδήποτε λάθος ανάγνωσης ενθαρρύνεστε για να τρέξετε το πρόγραμμα πάλι, πιθανότατα μπορεί να λειτουργήσει αυτή τη φορά.
Το ακόλουθο πρόγραμμα πρόκειται να εκτελέσει αυτούς τους διευκρινισμένους στόχους. Δείτε πώς προχωρά:
/* Αποθηκεύστε την εικόνα μποτών σε ένα αρχείο από μια φρέσκια δισκέτα */
#include <bios.h>
#include <stdio.h>
int main(void)
{
struct diskinfo_t dinfo;
union REGS regs;
int result;
int count=0, i;
char fname[80];
static char dbuf[512];
FILE *fp;
dinfo.drive = 0x00; /* αριθμός κίνησης για το Α:*/
dinfo.head = 0; /* επικεφαλής αριθμός δίσκων */
dinfo.track = 0; /* αριθμός διαδρομής */
dinfo.sector = 1; /* αριθμός τομέα*/
dinfo.nsectors = 1; /* αρίθμηση τομέα */
dinfo.buffer = dbuf; /* απομονωτής στοιχείων */
clrscr();
gotoxy(10,3);cprintf("Εισάγετε το όνομα αρχείων και την πορεία για να αποθηκεύσετε την εικόνα μποτών");
gotoxy(5,5);
gets(fname);
fp=fopen(fname,"wb");
if((fp=fopen(fname,"wb"))==NULL)
{
highvideo();
gotoxy(10,10);cprintf("Το αρχείο δεν θα μπορούσε να δημιουργηθεί");
getch();
exit(0);
}
|