Fabricación de la imagen del expediente del cargador del DOS de un buen disco blando
Para almacenar la imagen del expediente del cargador del disco blando fresco, la necesidad del programa hace las tres tareas siguientes:
- Exactamente leídos primeros 512 octetos del buen disco blando
- Comprobar para saber si hay la operación leída acertada (más importante)
- Almacenar éstos 512 octetos a la trayectoria especificada del nombre de fichero y de la destinación
El sector de disco blando es 512 octetos y es necesario copiar la imagen exacta del sector. Es el paso más importante y más necesario en caso de cualquier tipo de operaciones aplicadas en el disco blando al cheque si la operación era acertada o no.
Puede haber cualquier problema de la inicialización incluso con la diskette buena y fresca. Ése es porqué en la mayor parte de los casos cuando la operación se realiza en diskettes, primero de toda la inicialización de diskettes se realiza en la programación con la operación del disco del reajuste (función 00 H de 13H INTERNO).
Si incluso después de la inicialización la diskette recientemente insertada o la diskette cambiante causa cualquier error de lectura que te aconsejen funcionar el programa otra vez, puede trabajar lo más probablemente posible este vez.
El programa siguiente es realizar estas tareas especificadas. Veamos cómo procede:
/* Almacenar la imagen del cargador a un archivo de una diskette fresca */
#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; /*número de impulsión para A: */
dinfo.head = 0; /* número principal del disco */
dinfo.track = 0; /* número de la pista*/
dinfo.sector = 1; /* número del sector*/
dinfo.nsectors = 1; /* cuenta de sector*/
dinfo.buffer = dbuf; /* almacenador intermediario de los datos */
clrscr();
gotoxy(10,3);cprintf("Entrar en el nombre del archivo y la trayectoria para almacenar imagen del cargador");
gotoxy(5,5);
gets(fname);
fp=fopen(fname,"wb");
if((fp=fopen(fname,"wb"))==NULL)
{
highvideo();
gotoxy(10,10);cprintf("El archivo no podía ser creado");
getch();
exit(0);
}
|