/*잘못된 섹터의 공간을 채우는 512의 바이트의 정보 */
/// 나는 512 512의 바이트의 공간을 채우기 위하여 0를 이용했다 \\\
static char dbuf2[512] =
"00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000" "00000000000000000000000000000000";
FILE *tt;
clrscr();
printf("\n 자료를 임시적으로 저장하기 위하여 경로를 가진 파일의 이름을 입력하십시오\n");
gets(filename);
if((tt=fopen(filename,"wb"))==NULL)
{
printf("파일을 창조할 수 없고, 나가기 위하여 어떤 열쇠도 누르지 않는다");
getch();
exit(0);
}
printf("\n 초기화 플러피 디스크 체계...\n");
///디스크 체계를 초기화하십시오\\\
for(i=0; i<3; i++)
{
regs.h.ah = 0x00; /* 리셋 디스크 체계 */
regs.h.dl = 0x00; /* 플러피 디스크 a: */
int86(0x13, ®s, ®s);
}
for(track=0;track<=79;track++)
{
for(head=0;head<=1;head++)
{
for(sector=1;sector<=18;sector++)
{
dinfo.drive = 0; /* A를 위한 드라이브 수:*/
dinfo.head = head; /* 디스크 맨 위 수 */
dinfo.track = track; /* 대위 수 */
dinfo.sector = sector; /* 분야 수 */
dinfo.nsectors = 1; /* 분야 조사 */
dinfo.buffer = dbuf; /* 자료 버퍼 */
result = _bios_disk(_DISK_READ, &dinfo);
if ((result & 0xff00) == 0)
{
for(i=0;i<512;i++)
fprintf(tt,"%c",dbuf[i] & 0xff);
}
else
{
printf("드라이브 A 의 상태를 읽을 수 없다 =
0x%02x\t%d\t%d\t%d\n", result, head, track, sector);
/* 분야가 읽기 쉽지 않은 경우에, dbuf2에 의하여 512의 바이트를 점유하십시오 */
fwrite(dbuf2,512,1,tt);
}
printf("독서 대위= %d Head= %d Sector= %d\n",
track, head, sector);
}
}
}
}
|