HDFORMAT.EXEを改造して、65MB〜128MBの領域における問題を解消する

 Modify HDFORMAT

 MODHDFMT Version 2.00

Copyright(C) 2020 まりも (DOSsoft)

※ 本ツールでパッチをあてたHDFORMATを使用するのでなく、MS-DOS 6.20をお持ちならDBLTRANS.EXEを実行して問題を解消するほうをお薦めします。

【1.問題の所在と本ツールの意義】

 MS-DOS バージョン5.00〜6.20のFORMAT(内部的にはHDFORMAT.EXE)でハードディスクドライブに 容量65〜128MBのパーティションを作ると、 「MS-DOS論理セクタ長」(※ MS-DOSが1セクタとして扱う対象でBIOSや物理的セクタ長はまた別です)が 2048バイトという特殊なサイズとなります。通常はDOS論理セクタ長は、物理あるいはBIOSセクタ長と同じ512バイトか、それを倍長にした1024バイトです。

 この仕様は、MS-DOS Version 3.30でセクタの総数を16bit(65535個以内、実際には65528程度)に収まるようにするため、さらにDOS論理セクタを倍長化するという苦肉の策をとった名残です。これにより16bitセクタ数のままMS-DOS 3.xxではおよそ128MBまでのパーティションを利用できるようになりました。

 しかしこの仕組みは、DOS論理セクタの数が32bitに引き上げられたMS-DOS バージョン5.00では無用の事となりました。MS-DOSのバージョン3と5の最大の違いはここにあります。

 セクタ長が2048バイトのときは、ディスクアクセスのスピードは、物理/BIOSセクタを連結し論理セクタを倍加するためのオーバーヘッドが馬鹿になりません。特にWindowsでは速度の低下ははっきりします。

 また2048バイト論理セクタのままでは、buffers=で指定されるバッファ数も半減してしまいます。したがって、いくらMS-DOSバージョン3.xxと互換性が取れるといっても、65〜128MBのパーティションを一切作らないことが望ましいということになります。しかしドライブ総容量の関係でそうもいかないこともあるでしょう。とくに総容量上限が544MBの機種ではかなり困ることになります。

 そこで65〜128MBのときも、それ以上のときと同様に、DOS論理セクタ長が512バイトとなるよう、HDFORMAT.EXE自体を改造してしまおうというのが本ツールです。この容量帯での「クラスタサイズ」は、本ツールによる改造によっても4096バイトで変わらないので、ディスクスペースの無駄が増えることはなく、よいことづくめです。唯一の問題点は、MS-DOS version 3.30でアクセスできなくなることだけです。

 改造版HDFORMATを25年使用してきましたが、MS-DOS 5.00〜Windows 98に至るまでとくに問題は起こっていません。機能改造のヒントは、技術評論社刊行の雑誌「The BASIC」の1991年頃だったかに掲載されていた、MS-DOS 3.3xのFORMAT.EXE へのパッチについての記事です(号・巻・著者名などを失念)。MS-DOS 5.00〜6.20でもそのまま参考にしていますが、プログラムの基本的なところは当時から変わっていなかったとみられます。

 なおMS-DOS 6.20には「DBLTRANS.EXE」というあまり知られていないツールがあります。これは既存の65-128MB領域の上記の問題を解消するように領域の諸元のパラメータブロック(BPB)を書き換えるというものです。本ツールは「これからフォーマットする際にそのようにする」という点が異なりますが、フォーマット結果も微妙に異なります。基本的には、オリジナル状態のHDFORMATでフォーマットした直後にDBLTRANSを適用することを推奨します(逆変換が原理的に可能であるため)。

【2.使い方】

 MS-DOSのバージョン5.00またはバージョン6.20に含まれる HDFORMAT.EXEが対象です。HDFORMAT.EXEが存在するディレクトリをカレントディレクトリにしておきます。そこに本ツールMODHDFMT.EXEをコピーし、コマンドラインで実行してください。汎用DOSプログラムですのでWindowsのコマンドプロンプトでも問題ありません。

 【注意】本ツールはHDFORMAT.EXEをpathに従って探すということはしませんので、必ずカレントディレクトリをHDFORMAT.EXEの存在場所に設定してからMODHDFMTを実行してください。

 正常に実行されると処理完了というメッセージが出ます。もとのHDFORMAT.EXEは拡張子が .ORGという名前に変更されて保存されています。本ツールでパッチをあてたものは、タイムスタンプがもとのHDFORMAT.EXEより1分進んだものとなっています。パッチあてを行ったものであることを識別するためにそうしています。

 対象となるHDFORMAT.EXEにはさまざまなマイナーバージョンがあると思いますが、本ツールではパターン検索でほぼ全てに対応しています。ただし固定ディスク起動メニューのバージョンによっては大容量ディスクドライブのブートに支障を来すことが知られていますので、次の最終バージョンにアップデートしておくことを強くお薦めします。
MS-DOS 5.00  HDFORMAT.EXE 5.70 94/12/28
MS-DOS 6.20  HDFORMAT.EXE 6.30 94/12/08 以降

【3.HDFORMATの実行】

 ハードディスクのフォーマットですから、format /hから実行します。パッチをあてたHDFORMATが使用されていれば、画面2行目の罫線の色がもとのシアン色から緑色に変更されているはずです。

 本ツールの結果を確認するのであれば領域確保時に65〜128MBの間の容量を指定してフォーマットしてください。システム転送は必要があれば行ってください。

 再起動後の当該のDOSドライブは、DOS論理セクタ長512バイト、FATのクラスタ長4096バイト(セクタ8個ぶん)となります。2048バイトセクタの領域が存在しなくなれば、DOS起動後に config.sysのbuffers=の指定で確保されるバッファの肥大化は起こらなくなります。

 その他の改造点として、11MB〜40MBの容量のSASI HDDで拡張フォーマットをしたときに、16bit FATとしてクラスタサイズを2048バイトに抑えるという変更も加えてあります。この容量帯ではFAT12が使われていましたが、クラスタサイズが16KB〜32KBと大きくなり、クラスタ未満の端数セクタの数の無駄が無視できないレベルでした。この改造版でフォーマットすることで、ただでさえ狭い領域を有効に活用できるようになります。しかしFAT12でなくなることから、「ATOK6が使えない」などの何らかの不都合が発生する可能性があります。その点は留意しておいてください。もとのHDFORMAT.ORGは残っているわけですから、そちらを復活させるなどして使い分けてください。なお10MB以下のときはFAT12のままです。

 これで作られた領域はWindowsでも問題なくアクセスできますし、むしろ WindowsのFDISKとFORMAT.COMでは65-128MBの領域はDOS論理セクタ長512バイトで作られますので、こちらの方が真っ当であるとも言えます(DOS 3.3との互換性は切り捨てられますが)。

【4.お約束】(無保証・無責任)

 本ソフトの著作権は、作者である「まりも」 が有します。基本的にコピーフリーなソフトとします。しかし不特定多数の人がダウンロードできる場所への転載は禁止とします。

 動作の検証はある程度行なっていますが、作者は、本ソフトウェアの動作を細部に至るまで保証するものではありません。対応していない未知のHDFORMATもありえます。

 いかなる状況下でも、本ソフトを実行・適用した場合における、損害(データの損失・機器の故障・利益の損失・精神的苦痛など)に関する一切の責任をとりませんので、予めご了承下さい。それに同意できない方は、本ソフトを使用してはいけません。

[同意の上ダウンロードする]

【改版履歴】

版  日付     内容
1.xx 1994年頃に作成
2.00 2020- 1-11  新規公開
   2020- 1-12  本ツールよりも、普通にHDFORMATを使ったあとDBLTRANSを使った方がよいことを明記
※ 今後このツールの改良はおこないません。サイトの容量不足が生じた場合には予告なく削除します。

[戻る]