/// Inicializar o sistema de disco \\\
for(i=0; i<3; i++)
{
regs.h.ah = 0x00; /* Restaurar o sistema de disco */
regs.h.dl = 0x00; /* Disco flexívela: */
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 movimentação para A: */
dinfo.head = head; /* número principal do disco*/
dinfo.track = track; /* número da trilha */
dinfo.sector = sector;/* número do setor */
dinfo.nsectors = 1; /* contagem de setor*/
dinfo.buffer = dbuf; /* amortecedor dos dados */
result= _bios_disk(_DISK_WRITE, &dinfo);
if ((result & 0xff00) == 0)
printf("Bem sucedido escrever na trilha = %d, Head = %d,
Sector = %d.\n", track, head, sector);
else
printf("Não pode ler a movimentação A, status = 0x%02x\n",
result);
}
}
}
}
Comentários no coding do programa:
No coding do programa dado mais cedo, bàsicamente nós estamos proseguindo executar step-by-step as seguintes tarefas:
- O nome de arquivo da disposição de caráter [80] prende o trajeto e a lima - nome da lima em que nós armazenamos os dados da superfície do disco flexível ilegível temporariamente.
- o dinfo aponta à estrutura do diskinfo_t que contem a informação dos parâmetros requeridos pela operação executada pela função do _bios_disk.
- Inicializar o sistema de disco usando a interrupção 13H (função 00h) onde regs.h.ah = 0x00 apontam à função 00 H e regs.h.dl = 0x00 são usados para a: flexível. E int86 (0x13, ®s, ®s) invoca o serviço 13 INTERNOS H. da interrupção do MS-DOS.
- Porque nós estamos indo escrever a informação diretamente aos setores da superfície do disco, os parâmetros do _bios_disk serão como segue:
|