Windows9xの FORMAT.COMを代替する,大容量対応フォーマッタ FORMATX Version 2.16
使用説明書 Copyright(C) 2001-2006,2020-2023 まりも
【1】このプログラムの目的
NEC PC-9800シリーズでハードディスクの領域を作成する際、Windows9xのフォーマッタを使う場合は、 FDISK のあと FORMAT を実行します。ところが、これらのフォーマッタは、「ある程度大容量」のハードディスクに対してはエラーが発生してしまい、使いものになりません。その他にも問題点がいろいろあります。厳重にメディアチェックするために、終了に時間が掛かかるのもその一つですし、何よりもFDISKのあと再起動してドライブレターで指定するために、間違った領域をフォーマットしてしまいやすいという問題があります。とくに再起動後にドライブレターの変動があった場合に陥りやすいでしょう。本プログラム FORMATX は、こうした点を補うべく開発されました。Windows9xのFORMATプログラムと同様に使うことができますが、下記のような特徴があります。
- SCSIで8GBを超える容量にも対応
- 内蔵IDE/UIDE-xxやSATAで32GBを超える容量にも対応(対応BIOSを導入した場合)
- 高速である(セクタチェックをしないためであり、必ずしも長所とはいえません)
- FDISKのあと再起動せずにすぐ使用できる
- ドライブレター指定でなく、装置・領域で指定するので、誤操作しにくい
- 階層の少ないメニュー方式で操作が単純
- (Version2.00)FORMAT /Hの結果に忠実なFAT16,12フォーマット(基本的にFDISKの結果に依存)
- (Version 2.10)確保領域のうちMiB単位の端数を残してフォーマットする仕様に変更(FORMAT /H完全準拠)
実行時の動作条件は、CPUが80386以上であること、MS-DOSはおそらく3.30以上(FreeDOS(98)で問題になる要素もたぶん無い)、といった程度です。エミュレータでも動作可能と考えられます。ただしDISKインターフェイスがPC-9801-07,27の本物のSASI HDDには対応せず、非常に旧い規格の「標準フォーマット」や、古い時代に存在した、ディスクのアドレスのうちセクタ番地ヘッド番地(シリンダ番号端数)を使う形式は対象外です。セクタ長が256バイトのディスクドライブも対応していません。
【2】基本的使い方
まず FDISK で領域確保を行なってあるものとします。既に使用済みの領域であっても構いませんが一旦内容は消されます。FDISKのあと、再起動する必要はありません。コマンドラインからFORMATX と打ってリターンキーを押すだけです。(コマンドライン・パラメータは必要ありません)BIOSで認識されているハードディスクがある場合、装置選択のメニューが出現します。矢印キー[↑][↓]を使って、これからフォーマットするハードディスクを選択して下さい。一台しかない場合は、そのままリターンキーを押して下さい。内蔵IDE/SATA接続の場合は、ディスクドライブのベンダー名と装置番号で表示されます。内蔵IDEとSATAなどの混在の場合でも、装置番号は「固定ディスク#」で1からの番号になります。SCSIアダプタ接続の場合は、「SCSI固定ディスクID=」となり、SCSI ID番号が表示されます。
[対象装置名]の表示がなされるとともに、このハードディスクにある領域(パーティション)一覧が現れます。領域名・順番・容量に注意して選択してください。「状態」という項目には、FDISKを行なった直後の場合は「未処理」と表示されます。いっぽう既に使用中の領域の場合は、ファイルシステムの種類に応じて「FAT 16」「FAT 32」「NTFS」「 ??? 」などと表示がなされます。
通常は、「未処理」と表示された領域に対して適用することになると思いますが、既存領域をFATでフォーマットすることもできます。ただしその際、FAT16,FAT32を変更することはできません。これはFDISKでの指定時にすでに決まっているからです。FDISKで大容量ディスクの問いにyesで答えればFAT32となります。FORMATXではそれに全面的に従います。
FAT32の場合は、「クラスタ長」の選択画面が出ますので、とくに理由が無い限り、リストの最上位の値を選んで下さい。マイクロソフト標準値にしたい方は、下記の表を参照してください。なおバージョン2.00からは小さい容量側での大きなクラスタサイズの選択ができないようにしています。選択ができることのほうが誤りですので修正しました(選択するとクラスタサイズがFAT16の場合より大きくなりFAT32である意味がない)。
表 クラスタ長の選択基準(KB,MB,GBの単位は正確にはKiB,MiB,GiB)
領域の大きさ マイクロソフト
標準クラスタ長推奨したい
クラスタ長このソフトで選択
できるクラスタ長256MB〜512MB未満 FDISKで作成不可 推奨しない 4KB強制 512MB〜1GB未満 4KB 4KB 4KB〜8KB 1GB〜2GB未満 4KB 4KB 4KB〜16KB 2GB〜4GB未満 4KB 8KB 4KB〜32KB 4GB〜8GB未満 4KB 8KB 4KB〜32KB 8GB〜16GB未満 8KB 16KB 8KB〜32KB 16GB〜32GB未満 16KB 32KB 16KB〜32KB 32GB〜64GB未満 32KB 32KB 32KBのみ 64GB〜128GB未満 32KB 32KBだが
作るべきでない32KBのみ 128GB以上〜2047GB未満 32KB 作っても
動作不良となる32KBのみ FAT16の場合のクラスタ長は、容量に対応して自動設定されます。強制指定することはできません。FAT12になるかどうかもFDISKで決定されおり、FORMATXではそれに従っています。
フォーマットはFAT12,16のときはすぐ終わります。FAT32の場合は、フォーマットにほんの少々時間が掛かります。一つの領域のフォーマットが終了すると、またもとの領域選択メニューに戻りますので、他の領域を選んで下さい。他にもうフォーマットすべき領域がない場合は、[ESC]キーを押して終了させて下さい。正常終了時には「再起動してください」という音声がbeepスピーカから流れます。
■ 再起動
FORMATX の実行後は、かならず Windowsあるいは MS-DOSをすぐに再起動させて下さい。Window9xのFORMATではフォーマットした後に再起動が必要でないことになっていますが、本プログラムFORMATX の場合は逆となります。FDISKの後に再起動が不要ですが、FORMATX実行後に再起動が必要になります。これはフォーマット先がドライブレター単位指定ではなく、新しく割り当てたドライブレターを出現させる必要がないためです。この点はMS-DOS 6.20のFORMAT の使い方に似ています。再起動後に、いまフォーマットした所のドライブレターが出現します。
なお、FDISKで「領域のブート可能指定」を忘れることが多いため、FORMATXで処理した領域は、強制的にブート可能にする仕様としました。絶対起動したくない領域がある場合は注意して下さい。「アクティブ/スリープ属性」については、一切変更しません。 領域の属性は、必要があれば、FDISKか、拙作の別のソフト "ACTVPTN" や "BOOTPTN" で変更して下さい。
DOSやWindows9x起動のためのシステム(ブートセクタのブート)の構築にはSYSコマンドを用いて下さい。本FORMATXにはブートコードのコピー機能はありません。またSYSコマンドではFDからFD、あるいはHDからHDではブートコードがコピーされても、FDからHDではコピーされない場合があるようです。ご注意下さい。
■ コマンドラインオプション
領域確保に関しては、WindowsのFDISKおよびディスク管理ツールと、MS-DOSのFORMAT /Hとでは、扱いが異なる点があります。それは(1) 11MB〜128MBのフォーマットパラメータが異なること、 (2)ルートディレクトリ数がFORMAT /Hでは3072と多いこと(FDISK仕様では512) です。本FORMATXでは、コマンドラインオプションがない場合、領域確保したプログラムの仕様に基本的には従います。
しかしコマンドラインオプション -H をつけて起動したときは、FAT16の領域に対し、FORMAT /H仕様のパラメータを強制します。パーティションテーブルに記録されるFSID(*)も変更します。FORMAT /H と同じですので覚えやすいオプション文字でしょう。
その反対に コマンドラインオプション -W をつけて起動したときは、FORMAT /H仕様で確保されているFAT16領域でも、FDISK仕様のパラメータに変更します。パーティションテーブルに記録されるFSID(*)も変更します。大容量ディスクを使うということはWindowsを主に使ことであろうと一般に考えられるため、オプションのW は Windowsに由来しています。またPC-98とPC/ATの間で変換を行って運用するときには、11MB〜128MBのFAT16領域はFORMAT /H 仕様だと相互認識できませんから、FDISK仕様にしておいたほうが無難です。
コマンドラインオプション -FAT32 までをつけると、256MB以上の場合に元のファイルシステム属性を無視して強制的にFAT32でフォーマットします。FSID(*)もFAT32にします。
コマンドラインオプション -Z をつけると、FATファイルシステムを作成せずにクリア("ゼロフォーマット")のみを行います。別のフォーマッタ(Windowsディスク管理など)を使いたいが領域の誤ったファイルシステムが残存していると次回の起動に支障を来すような場合に利用価値があります。処理後は「未処理」という表示に変わります。このモードでは 「FAT 00でフォーマットします」などというメッセージが出ますが異常ではありません。
(*)FSIDとは、そのパーティションのファイルシステムを示すID値でパーティションテーブル中の1バイトに記録される。
【3】注意事項・制限事項
■ FAT32で32GB以上の領域に関する注意事項
32GB以上の領域も扱えるようにしましたが、推奨はしません。アプリケーションソフトによっては誤動作します。FAT32の領域を確保したいときは、極力64GB以内、なるべくなら32GB未満となるように分割してください(実際Windows2000のディスクアドミニストレータからは32GBを超えるFAT領域がフォーマットできないようになっています)。128GB以上では何が起こるかわかりません。
■ FAT16での最大容量を確保する際の注意事項
32GBオーバーのハードディスク(内蔵IDE、UIDE、SATA)に対して、FDISKで2047MBのFAT16最大サイズを確保すると、FORMATXでもWindows2000のディスク管理でもで正しいフォーマットがなされません(クラスタサイズが64KBとなる)。これは、BIOS1シリンダあたりのサイズが1メガバイトを超えてしまうことからFDISKが正確には2048MB以上の領域を作ってしまうためです。FDISKでは、最大の2047MBではなく、2000MB程度の値を指定するようにしてください。 ちなみにBIOS セクタ数255:ヘッド数255の「Bigなdrive」ともなると、1シリンダが約32MBにもなってしまいますから、2047MBを超えないためには2000MB程度が安全なのです。セクタ数255:ヘッド数16となる場合は1シリンダが約2MBですから、2045MB程度にしておけば大丈夫です。
■ SSD,CF,AFTの注意事項
ディスクドライブがSSD(Solid State Drive),CF(Compact Flash)やAFT(Advenced Format Technology)ドライブの場合は、本来は物理セクタ・物理ブロック境界に合わせたフォーマットが望ましいのですが、PC-98のパーティション管理はLBA単位でなく、インターフェイスのBIOSによってさまざま異なるシリンダ管理のため、境界を合わせるのが困難です。そのためSSD,CF,AFTを考慮したフォーマットは行っていません。SCSIの場合はシリンダ境界が2の乗数であるため対応する意味はありましたが、今回見送りました。少なくともAFTドライブについては、容量的・速度的にみてPC-98で使用すべきではありません。CFも全面的に使えるなどと信じてはいけないものです。CFの使用可否や動作安定性は「モノによる」としか言いようがありません。98のオンボードIDE接続の場合、「CFリセット」という事象が発生し、フォーマットのように大量書き込みをした瞬間に動作しなくなるCFはよくあります。
■ 特定のSD-IDE変換器を使う場合の注意事項
FC1307Aというチップが使われている変換器ではそのファームウェアが作動し、98パーティション情報を消去してしまうことが知られています。ファームウェアを改修して、上記の問題を解決するという方法が公開されました。改修は必須です。 FC1307A搭載SD-IDE変換基板のおかしな挙動を直す (https://zenn.dev/mctek/articles/306d1afc153c0b)
■ 真の領域の大きさについての注意事項
バージョン2.10からは、確保領域のうちMiB単位(2の20乗バイト=1024×1024バイト)の端数を残すこととしました。Win9xのFDISKで確保される領域はシリンダ境界となるため端数が出ます。Windows9xのFORMAT.COMではその全域を使えるようにフォーマットしようとしますが、微妙な容量過大で破綻したり、BIOSのCHSパラメータで容量が変動するなど、よろしくない点もあります。いっぽうMS-DOSのFORMAT /Hではシリンダ境界の容量のうちMiB単位の端数部分を残してフォーマットされ、真の容量がCHSパラメータに影響されません。その方が合理的であるため、/H や/W オプションの使用有無にかかわらず、MiB単位の端数を切り捨てる仕様としました。
■ その他既知の制限事項
パーティションの個数が12個を超えると画面一杯にリストが表示されます。そのため他のメッセージが上書きされて見にくくなります。しかし画面が乱れているわけではなく動作の異常ではありません。
正常終了時に出る音声の再生にはbeep制御のみを使用しており、PCM音源ボードが存在する必要はありません。そのため等時性が保証できず、機種によっては再生速度が不適当でおかしな声質になる場合があります。また初代A-MATE、初代FELLOW、H98やそれより古い機種では全く音声にならずに長いbeep音となってしまいます。それを避けるにはコマンドラインオプション -M (mute) を指定してください。
■ 領域名のあとに「!」が表示される場合
シリンダ端数境界にある(セクタ、ヘッドのディスク番地が使われている)領域は、領域名のあとに「!」が表示されます。これは非常に古いDOSで領域確保したり、エプソン製DOSのFORMATで確保すると作られます。しかし本プログラムではこれに対応しませんので、!のついた領域はフォーマットしてはいけません。操作上可能でも絶対に実行しないでください。端数を無視してシリンダ先頭からフォーマットするため、ひとつ前の領域を破壊する可能性があります。
■ まぼろしのバージョン2.20
シリンダ端数境界に対応させようとして作られたバージョン2.20というものをいっとき公開致しましたが、絶対にお使いにならないでください。正常にフォーマットできないだけでなく、パーティションテーブルを破壊してしまう問題があります。
【4】なんらかのエラーが出る場合
「セクタ長が512バイト以外のディスクドライブは使用できません」と表示される場合はその通りです。内蔵IDEディスクの場合機種によって256に設定できますが、この状態ではWindowsでは非常に使用の制限の厳しいものとなり現実的ではありません。FDISK+FORMATでも正しくフォーマットできなかったり起動できません。SCSIでもセクタ長256または1024バイトのディスクドライブで大容量はありえないので、本FORMATXでも対応外としています(Microsoftのformat.comの実行結果と同様に容量が半分となります)。
ハードディスクの重要なシステム領域に不良があって読み書きできない場合は、その旨表示し、実行を中止します。ディスクドライブの不良ですから、そのディスクドライブは使用を中止したほうがよいでしょう。
「このディスクにはパーティションが一つもありません 」という表示が出る場合は、その通り、FDISKで領域を確保していない状態ですから、まず領域を確保してください。
「このドライブのマスターブートレコードは, PC-98フォーマット仕様になっていません.」という表示がなされた場合は、一度も98フォーマットで使用した痕跡がない(PC/ATなどで使用していた)ディスクドライブであることを意味します。少なくともFDISKで領域を確保していないディスクです。これもFDISKによる領域確保から始めて下さい。念のためWindows9xではDISKINIT、 MS-DOS 6.20ではFORMAT /Hにて装置初期化することをお勧めしますが、それらは時間がかかるので、「高速化ツールACCFMT」の併用をお勧めします。
「このドライブは, スーパーフロッピーフォーマットで現在使用中の可能性があります.」という表示が出た場合は、少なくとも98フォーマットになっておらず、過去にスーパーフロッピーフォーマットで使用した形跡があることを示します。内容を全部破棄してよいのであれば、これもFDISKによる領域確保から始めて下さい。
「不正な領域があります」と表示され、領域の「状態」の項目に「×不正」というのがある場合は、要注意です。FDISK直後の場合は出ることはありませんが、ハードディスクの接続環境を変更した際に、既存領域に現れることがあります。原因は、領域確保したときのハードディスクのBIOS C/H/Sパラメータが現在の接続環境時点と異なっているため、領域先頭のFATの内容が正しく読みとれないことによります。通常は、再起動後のDOS起動も困難になるはずです。下記のような場合に起こり得ます。
- PC-9801-92以前の統一されていないCHSパラメータの各社SCSIアダプタに接続していた。
- いわゆるIDE-SCSI変換接続(SDAT等)と、内蔵あるいはUIDE接続との間でディスクを交換した。
- IDE-98接続と、内蔵あるいはUIDEでの接続との間でディスクを交換した。
- 内蔵 IDEで、32GBを超えるディスクドライブを32GBまで使用していたが、新たに32GB超対応ソフトを導入した、または逆に、導入を解除した (例:拙作EXIDE32G, UIDEPATやEXIDESW を使用してCHSパラメータモード変更をした)。
このような場合は、もとの接続環境に戻して、まずデータを保全・バックアップする必要があります。そのままではどっちみち起動に支障を来します。ディスクの内容を全て破棄してよい場合でもFDISKによる全領域の解放と再確保からやりなおすのが基本です。今後使用する環境下(各ディスクインターフェイスに接続)でFDISKとFORMATXとを行なっておかなくてはなりません。ただしそれが面倒な場合に、「×不正」と出た領域に一度 "ゼロフォーマット"をかけておく手はあります(もちろん当該領域のデータは無くなります)。
【5】お約束
本ソフトの著作権は、作者である「まりも」 が有します。基本的にコピーフリーなソフトとします。しかし不特定多数の人がダウンロードできる場所への転載は禁止とします。動作の検証、特にフォーマット後のドライブのアクセス可能性のチェックはかなりの程度行なっていますが、作者は、本ソフトウェアの動作を細部に至るまで保証するものではありません。
いかなる状況下でも、本ソフトを実行・適用した場合における、損害(データの損失・機器の故障・利益の損失・精神的苦痛など)に関する一切の責任をとりませんので、予めご了承下さい。それに同意できない方には、本ソフトを使用してはいけません。
また、本ソフトは、PC-98およびWindows 9xにおけるハードディスクのフォーマットの仕方に関する一定の理解をお持ちの方を対象としています。この説明書を読んでも使い方や意義がわからなかった場合は、使用しないでください。
まりも (連絡先メールアドレスはホームページ上で) 【6】改版履歴
年月日 版 内容 2001. 4. 1 1.00 新規作成 2001. 4.14 1.01 画面表示上のバグ(IDE装置名)の修正 2001. 4.25 1.10 NTFS領域を誤検出して,「不正」と表示していたのを修正 2001. 4.26 1.11 2回目以降の領域確保時に装置名表示がおかしくなるのを修正 2001. 8.13 1.12 EXIDE32G 2.10 に対応させた 2001. 9.30 1.14 内蔵IDE装置名表示の修正 2001.12.28 1.15 FAT16で Windows2000格納用フォーマットができるようにした 2002.10.24 1.17 SC-UPCI 32GB壁またぎフォーマット機能(しかし危険なので1.19で廃止) 2002.10.25 1.17a SC-UPCI 32GB壁またぎ領域のサイズを32GBに強制制限 2002.11.11 1.18 上記機能が内蔵IDEのときに誤動作していたのを修正 2003. 4. 1 1.19 UIDEPATに関する記述追加, 実行後再起動を促す音声ガイダンスを追加 2003. 4.29 1.19b 挑戦者 「bigなdrive」に正式対応したつもり(但し5月31日まで) 2003. 6.12 1.19c-f UIDE-133/98-A発送開始のため期間延長で再掲(改良修正点なし) 2003. 7.12 1.20 A-mateハイレゾモードにも対応 2004. 9.21 1.21 MS-DOS 2.11でも動くようにした(未確認) 2006. 1.28 1.28 128GB以上の領域作成の制限を緩和 2020. 2.20 2.00 FAT32のクラスタサイズ範囲を修正、FAT16,12フォーマットの全面改定 オプション /H 、/W 、/Z 、/M、/FAT32 とそれらのモード機能の追加 2020. 2.20 2.01 オプション /H /W が正しい論理で動作しないことがあったのを修正 2020. 2.28 2.10 確保領域のうちMiB単位の端数を残してフォーマットする仕様に変更 2020. 9. 8 2.11 非アクティブ、ブート不可のFSIDの表示上の誤りを修正(動作上は正常) 2021. 1.27 2.11A セクタ長256Bのとき98フォーマットでないと表示されることだけ修正 2021. 1.29 2.11B FAT16のブートセクタのダミーなIPLコードに誤りがあったのを修正 2021. 2. 8 2.12 容量MiB表示桁数を7桁(テラバイト)に拡張した 2021. 2.20 2.20 【廃止】シリンダ境界にない領域を扱える仕様【使用不可】 2021. 3.15 2.13 シリンダ境界にない領域は扱わない仕様に戻し、警告するようにした 2021.10.12 2.15 領域名文字列にnull文字が含まれる場合でも表示が崩れないようにした 2023. 1.16 2.16 パーティション先頭セクタのシグナチャ(55h,AAh)の誤り、仮IPLコードの誤りを修正