/*DBRの変数を変える機能*/
Recover_with_values()
{
int val =0;
/* フロッピィのための3バイトのジャンプコード */
b.code[0] = 0xEB;
b.code[1]= 0x3E;
b.code[2]= 0x90 ;
/* 8バイトのシステムID */
strcpy(b.system_id, "+05PSIHC");
/* セクターごとのバイト= 512 */
b.bytes_per_sec = 512;
/* 1.44M 3.5のための集りごとのセクター"フロッピィ= 1 */
b.sec_per_clus = 1;
/* 予約セクターの数= 1 */
b.res_sec =1;
/* 脂肪質のコピーの数= 2 */
b.fat_copies =2;
/* ルートディレクトリの記入項目の数= 224 */
b.root_dir_entry =224;
/* ディスクのセクターの数= 2880 */
b.no_sects =2880;
/* フロッピィ= F0 (h)のための媒体のディスクリプターバイト */
b.format_id =0xF0;
/* 脂肪ごとのセクター= 9 */
b.sec_per_fat =9;
/* トラックごとのセクター= 18 */
b.sec_per_trk =18;
/* 側面の数= 2 */
b.no_sides =2;
/* 特別な予約セクター(または隠されたセクター)の数= 0 */
b.no_sp_res_sect =0;
/* フロッピー・ディスクのための使用*/
val = abswrite ( 0, 1, 0, &b ) ;
if ( val == -1 )
{
printf ( "\n Disk Write Error...bad sector\n" ) ;
printf ( " Disk was not Recovered." ) ;
exit ( 1 ) ;
}
return 0;
}
display_info()
{
printf ( "\n Jump Code (Hex) = %X%X%X (H)\n",
b.code[0],b.code[1],b.code[2]);
printf ( " System ID = %s\n",
b.system_id ) ;
printf ( " Bytes per sector = %d\n",
b.bytes_per_sec ) ;
printf ( " Sectors per cluster = %d\n",
b.sec_per_clus ) ;
printf ( " Reserved sectors = %d\n",
b.res_sec ) ;
printf ( " FAT copies = %d\n",
b.fat_copies ) ;
printf ( " Root directory entries = %d\n",
b.root_dir_entry ) ;
printf ( " No. of sectors on disk = %u\n",
b.no_sects ) ;
printf ( " Media Descriptor Byte = %X\n",
b.format_id ) ;
printf ( " Sectors per FAT = %d\n",
b.sec_per_fat ) ;
printf ( " Sectors per track = %d\n",
b.sec_per_trk ) ;
printf ( " No. of sides = %d\n",
b.no_sides ) ;
printf ( " No. of reserved sectors = %d\n",
b.no_sp_res_sect ) ;
return 0;
}
コーディングのコメント:
構造のブーツが読み書きにDBRに、アクセスするのにディスクの変数使用されている。 機能display_info ()、表示DBRから読むディスクの様々な変数。 機能Recover_with_valuesが()フロッピィのDBRの変数を変更し、回復するのに使用されている。
機能Recover_with_valuesによって使用される価値は1.44MBの変数、3つの½のインチフロッピー・ディスクDBRのため()、である。 これらの価値の記述は次に与えられるテーブルで与えられた:
価値 |
記述 |
b.code [0] = 0xEB;
b.code [1] = 0x3E;
b.code [2] = 0x90; |
指定フロッピィのための3バイトのジャンプコードは、与えられたeb 3E 90 (h)を |
strcpy (b.system_id、「+05PSIHC」); |
8バイトのシステムID。 それはシステムの本日そして時間とほとんど何でも働くどんなに、計算される。 |
b.bytes_per_sec = 512; |
セクターごとのバイト= 512 |
b.sec_per_clus = 1; |
1.44M 3.5のための集りごとのセクターの数は"フロッピィ1である |
b.res_sec = 1; |
予約セクターの数= 1 |
b.fat_copies = 2; |
脂肪質のコピーの数= 2 |
b.root_dir_entry = 224; |
指定フロッピー・ディスク= 224のためのルートディレクトリの記入項目の数 |
b.no_sects = 2880; |
ディスクのセクターの数= 2880 |
b.format_id = 0xF0; |
指定フロッピィ= F0 (h)のための媒体のディスクリプターバイト |
b.sec_per_fat = 9; |
脂肪ごとのセクターの数= 9 |
b.sec_per_trk = 18; |
トラックごとのセクターの数= 18 |
b.no_sides = 2; |
側面の数= 2 |
b.no_sp_res_sect = 0; |
特別な予約セクター(または隠されたセクター)の数= 0 |
|