/* 파일에 플러피 디스크의 육체적인 표면의 자료를 저장하는 프로그램 */
#include <bios.h>
#include <stdio.h>
void main(void)
{
int head,track;
union REGS regs;
int result,i,sector;
char filename[80];
struct diskinfo_t dinfo;
static char dbuf[512];
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);
}
printf("독서 대위= %d Head= %d Sector= %d\n",
track,head,sector);
}
}
}
}
|