書式作成の「トラック0悪い」フロッピィ
このプログラムがトラック0の不良セクターを備えている時dosか窓とフォーマットされているそれらのフロッピィ、「トラック0悪い状態」のような表示エラーメッセージを書式作成するのに使用され。 但しまた正常なフロッピィを書式作成するのにそれを使用できる。
プログラムのコーディングは名前「TTFORMAT.C」のこの本と含まれているディスクで与えられた。 プログラムの働く論理は2003年2月の版のPCQUESTコンピュータ雑誌で、出版されるプログラムと同じである。
このプログラムでは、私達はそれらの書式作成によって再使用可能にフロッピィのこのタイプをすることを試みる。 それのある不良セクターとのフロッピー・ディスクを扱うことができることプログラム音。 但し、ディスクの最初のセクターが悪ければ、フロッピィはフォーマットしていることができない。
プログラムはすべてのDBR、脂肪およびルートディレクトリ情報を書直す。 ディスクの表面に不良セクターがあれば、それらは脂肪の悪い状態として印が付いている。
プログラムのコーディングでは、構造BPBは作家にDBRのbios変数ブロック使用される。 構造のboot_sectorがディスクのDBRを書くのに使用されている。 構造のaddress_fieldはトラックごとのそしてセクターのサイズのシリンダー、頭部およびセクターの多くと相互作用のために使用される。
プログラムおよび記述のコーディングで使用される異なった機能は次に与えられるテーブルで与えられた。
機能 |
記述 |
Random_VolumeID () |
この機能はディスクの容積IDを提供する。 dosがいかに発生するか(フロッピィの通し番号はこのテーブルの隣で論議された) |
mark_bad () |
セクターを確認するINT 13Hの機能04Hを使用して印の不良セクター。 |
sector_no_to_physical () |
この機能がトラック、頭部およびセクターにセクターの数を変えるのに使用されている |
format_term () |
書式作成を終え、プログラムを出るため |
write_boot_info () |
ディスクのブート・セクタを書く |
set_media_type_for_format () |
機能がINT 13Hの機能18Hを使用してフォーマットのためのメディアタイプを置くのに使用されている |
volume_label () |
機能はボリュームラベルをディスクのボリュームラベルを書くために得る |
フォーマット() |
不良セクターの計算の処理と同様、書式作成の間にディスクの表面を拭く。 |
get_drive_parameters () |
機能はドライブ変数を得るのにINT 13Hの機能08Hを使用する。 |
mark_bad () |
悪い集りの情報を脂肪で印が付くために保持する |
ask_for_continue () |
ディスクを書式作成する前に確認するべき機能 |
check_bad () |
戻された状態が不良セクターのためのエラー・コードであるかどうか確認する機能 |
間違い() |
この機能は対応するエラー・コードのためのエラーメッセージを表示する |
lock_volume () |
機能がINT 21H、機能44Hおよび補助的な機能0DHを使用してドライブを締めるのに使用されている |
unlock_volume () |
機能がINT 21H、機能44Hおよび補助的な機能0DHを使用してドライブの鍵を開けるのに使用されている |
physical_to_sector_no () |
機能がトラック、頭部およびセクター数からのセクターの数を計算するのに使用されている |
フロッピー・ディスクのボリューム通し番号はシステムクロックの本日そして時間に従ってdosによって計算される。
通し番号の最初の部分は時間(秒の秒そして第百)および日付の合計計算される(月および日)。 通し番号の第2部分は時間(時間および分)および日付(年)の合計と等しい。
すべての計算は16進法システムで行われる。 例えば11:16でdosの環境のフロッピィを書式作成したと、私達を仮定する許可しなさい: 28: 10/23/2003の65。 今私達を計算するディスクの通し番号を許可しなさい。
The time in (seconds and Hundredths of seconds) format is
= (28 and 65)
= (1CH and 41H)
Write it as 1C41
Similarly, date in (month and day) format is
= (10 and 23)
= (0AH and 17H)
Write it as 0A17
Similarly, time in (hours and minutes) format is,
= (11 and 16)
= (0BH and 10H)
Write it as 0B10
And the year will be
= 2003
= 07D3
今、私達を計算する前に与えられる記述に従ってフロッピー・ディスクの通し番号を、許可しなさい。 通し番号の井戸の最初の部分は(1C41 + 0A17) = 2658であり、通し番号の第2部分は(0B10 + 07D3) = 12E3ある。
|
page 1 | 2 | 3 | 4 | 5 | 6 |
|
|
|