do
{
file_no=0;
finfo.drive = 0x00; /* numero di azionamento per A: */
finfo.head = head; /* numero capo del disc */
finfo.track = track; /* numero della pista */
finfo.sector= sector; /* numero del settore*/
finfo.nsectors=1; /* conteggio di settore */
finfo.buffer = buf; /* amplificatore di dati*/
result = _bios_disk(_DISK_READ, &finfo); /*Leggere il settore */
if( (result & 0xff00) != 0) /* Se l'errore colto, visualizza il messaggio di errore e rimuove*/
{
printf("Errore colto");
getch();
exit(0); // Andare di nuovo al DOS
}
/// Disposizione dello schermo di visualizzazione delle informazioni \\\
clrscr();
gotoxy(9,1);
cprintf("ESPOSIZIONE CYLN: %u, HEAD: %u, SECTOR: %u",
track, head, sector);
gotoxy(9,2);
cprintf("FORMATO NOME DI INIZIO DI ATTRIBUTO DELL'INTERNO DI FNO");
gotoxy(7,3);
cprintf("--------------------------------------------");
/* Un settore alla volta. Ogni entrata di File/DIR prende il byte 32 */
for(i=0;i<512;i+=32)
{
for(j=0;j<8;j++)
{
/// Trovare la lima/nome di Dir \\\
root[file_no].name[j]=buf[j+i];
}
for(j=8;j<11;j++)
{
/// Trovare l'estensione \\\
root[file_no].ext[j-8]=buf[i+j];
}
j=11;
root[file_no].attribute=buf[i+j]; /// Attributo
/// Iniziare serie di ingranaggi \\\
root[file_no].start=(0xff & buf[27+i])*16*16 + (0xff & buf[26+i]);
|