/// ディスクシステムを初期設定しなさい \\\
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++)
{
count =0;
while(count<512 )
{
fscanf(fp,"%c",&dbuf[count]);
count++;
}
dinfo.drive = 0x00; /* aのためのドライブ数: */
dinfo.head = head; /* ディスクヘッド数*/
dinfo.track = track; /* トラック数 */
dinfo.sector = sector;/* セクター数 */
dinfo.nsectors = 1; /* セクター計算 */
dinfo.buffer = dbuf; /* データバッファ*/
result= _bios_disk(_DISK_WRITE, &dinfo);
if ((result & 0xff00) == 0)
printf("成功したトラックで書きなさい = %d, Head = %d,
Sector = %d.\n", track, head, sector);
else
printf("ドライブaの状態を読むことができない= 0x%02x\n",
result);
}
}
}
}
プログラムコーディングのコメント:
先に与えられるプログラムコーディングでは基本的に私達は次の仕事を一歩ずつ行うことを進んでいる:
- 文字配列のファイル名[80]私達が判読不可能なフロッピィの表面のデータを一時的に貯えたファイルの道およびファイル名前を保持する。
- dinfoは_bios_disk機能によって行われる操作によって必要な変数の情報を含んでいるdiskinfo_tの構造を指す。
- regs.h.ah = 0x00が機能00 hを指し、regs.h.dl = 0x00がaのために使用されるところ割り込み13H (機能00h)を使用してディスクシステムを初期設定しなさい: だらしない。 そしてint86 (0x13の®s、®s)はMS-DOS割り込みサービスINT 13 h.を実施する。
- 私達がディスクの表面のセクターに情報を直接書こうと思っているので_bios_diskの変数は次の通りある:
|