///Inicializar el sistema de disco \\\
for(i=0; i<3; i++)
{
regs.h.ah = 0x00; /*Reajustar el sistema de disco */
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; /* número de impulsión para A:*/
dinfo.head = head; /* número principal del disco */
dinfo.track = track; /* número de la pista */
dinfo.sector = sector;/* número del sector*/
dinfo.nsectors = 1; /* cuenta de sector*/
dinfo.buffer = dbuf; /*almacenador intermediario de los datos*/
result= _bios_disk(_DISK_WRITE, &dinfo);
if ((result & 0xff00) == 0)
printf("Acertado escribir en pista= %d, Head = %d,
Sector = %d.\n", track, head, sector);
else
printf("No puede leer la impulsión A, estado = 0x%02x\n",
result);
}
}
}
}
Comentarios sobre la codificación del programa:
En la codificación del programa dada anterior, estamos procediendo básicamente a realizar las tareas siguientes gradualmente:
- El nombre de fichero de la matriz de caracteres [80] lleva a cabo la trayectoria y el nombre del archivo del archivo en el cual almacenamos los datos de la superficie del disco blando ilegible temporalmente.
- el dinfo señala a la estructura del diskinfo_t que contiene la información de los parámetros requeridos por la operación realizada por la función del _bios_disk.
- Inicializar el sistema de disco usando la interrupción 13H (función 00h) donde regs.h.ah = 0x00 señala a la función 00 H y regs.h.dl = 0x00 se utiliza para a: flojo. E int86 (0x13, ®s, ®s) invoca el servicio 13 INTERNOS H. de la interrupción del MS-DOS.
- Pues vamos a escribir la información directamente a los sectores de la superficie del disco, los parámetros del _bios_disk serán como sigue:
|