Image: Windows 2000以降で利用できるフロッピーフォーマット

生DOSについては過去の記事→DOSで利用できるフロッピーフォーマット [PC/AT +5]を参照。

バックエンド(ドライバーレイヤー)

Windows NT系標準ではKernel32.dllが持つDeviceIoControl 関数IOCTL_DISK_GET_MEDIA_TYPESコントロールコードを送ることで、デバイスドライバーと通信し、あるドライブで利用可能なディスクフォーマットのジオメトリー情報を知ることができる。

そこで、Windows標準ドライバーで動作する内蔵5.25インチFDDと3.5インチFDD、一般的なスリムサイズのUSB外付け3.5インチFDD(デバイスマネージャーでの表示名はY-E DATA USB-FDU USB Device)について調べてみた。

Windows 2000での内蔵5.25インチFDD

5.25インチFDDについては、私が持っているPCの中ではWindows 2000でしか動作しないため、XP以降については調べていない。PC/AT互換機で使用できる5.25インチFDDにはDSDD(360 KB、両面倍密度)とDSHD(1.2 MB、両面高密度)の2タイプがあり、ここではDSHDドライブを使用している。

Cylinder Track Sector Bytes Disk size
      40     1      8   512    163840 (Bytes) = 160 (KiB)
      40     1      9   512    184320 (Bytes) = 180 (KiB)
      40     2      8   512    327680 (Bytes) = 320 (KiB)
      40     2      4  1024    327680 (Bytes) = 320 (KiB)
      40     2      9   512    368640 (Bytes) = 360 (KiB)
      80     2     15   512   1228800 (Bytes) = 1200 (KiB)

Windows 2000での内蔵3.5インチFDD

PC/AT互換機で使用できる3.5インチFDDにはDD(720 KB、倍密度)とHD(1.44 MB、高密度)の2タイプがあり、ここではHDドライブを使用している。

Cylinder Track Sector Bytes Disk size
      80     2      9   512    737280 (Bytes) = 720 (KiB)
      80     2     18   512   1474560 (Bytes) = 1440 (KiB)

Windows 2000でのUSB外付け3.5インチFDD

USB外付け3.5インチFDDの場合、挿入しているフロッピーディスクがDD(720 KB、倍密度)かHD(1.44 MB、高密度)かによって利用可能なジオメトリー情報が変わる。

次はDD(720 KB、倍密度)ディスクの場合。

Cylinder Track Sector Bytes Disk size
      80     2      9   512    737280 (Bytes) = 720 (KiB)

次はHD(1.44 MB、高密度)ディスクの場合。

Cylinder Track Sector Bytes Disk size
      80     2     15   512 1228800 (Bytes) = 1200 (KiB)
      77     2      8  1024 1261568 (Bytes) = 1232 (KiB)
      80     2     18   512 1474560 (Bytes) = 1440 (KiB)

内蔵ドライブに比べて、2つのジオメトリー情報が追加されている。1番目は5.25インチ2HCディスクと同じジオメトリーであり、東芝J-3100の初期モデルで使われていたフォーマットだろうか。2番目はそれ以外の日本のPC(NEC PC-98、富士通FMRなど)で使われていたフォーマットだろう。

Windows XP以降でのUSB外付け3.5インチFDD

Windows XP以降ではUSB外付け3.5インチFDDがDD(倍密度)ディスクの8セクター/トラック (640 KB) フォーマットに対応している点でWindows 2000と異なる。

Cylinder Track Sector Bytes Disk size
      80     2      8   512    655360 (Bytes) = 640 (KiB)
      80     2      9   512    737280 (Bytes) = 720 (KiB)

他はWindows 2000と同じ。

上記にないジオメトリーのディスクを読むには

DOSではIMD、WindowsではSAMdiskなどの独自のドライバーを持つディスクイメージ化ソフトで読める可能性がある。これらのソフトウェアでディスクデータをイメージ化し、エミュレーターで使用する方法がある。

バックエンド(ファイルシステムレイヤー)

ドライバーレイヤーの条件を満たしたとしても、ファイルシステムを認識できるかどうかは別問題である。DOSの場合はメディアディスクリプタさえ読めれば問題ないが、Windows NT系ではBPB (BIOS Parameter Block)や署名 (55 AA)も正しく記録されている必要がある。初期のMS-DOS (Ver.1.xx) でフォーマットされたディスクや市販ソフトウェアのディスクはファイルを読めない可能性がある。もしファイルを読めなくても、ディスク自体にアクセスすることは可能なので、ディスクイメージ化してエミュレーターで運用できる可能性はある。

フロントエンド(エクスプローラー)

上記の2つの条件をパスしていれば、既存のフォーマット済みディスクを読み書きすることはできる。しかし、ディスクを新たにフォーマットするにはドライバーがその種類のディスクに対してIOCTLのフォーマットコマンドをサポートしているだけでなく、フロントエンドたる「フォーマッター」も必要。

Windows標準ではshell32.dllにSHFormatDrive 関数としてGUIでのフォーマット機能が用意されている。これは、エクスプローラーでドライブを右クリック→フォーマット をクリックして表示されるダイアログと同じ。この機能はWindowsのバージョンによって微妙に違いがある。

Windows 98

内蔵、外付けにかかわらず、3.5インチは720KB、1.44MB、120MB(LS-120ディスク用?)、5.25インチは360KB、1.2MBしか選べない。

Image: Windows 98 format dialogue

Windows 2000

1番目は内蔵5.25インチFDD、2番目は外付け3.5インチFDD(HDディスクをセット)。J-3100やPC-98のフォーマットも選択可能。

Image: SHFormatDrive Image: SHFormatDrive

Windows XP

Windows 2000との違いは、3.5インチ1.44MBフォーマットしか選べないことと、MS-DOS起動ディスクの作成が可能になったこと。3.5インチDDディスクをセットしてこのダイアログを開くと、容量やファイルシステム欄は空欄になって何も選べなくなる(後のWindowsバージョンではこの代わりにエラーメッセージが表示される)。

Image: SHFormatDrive

KB302113: Windows XP で 720 KB のフロッピーディスクをフォーマットできない - Microsoft サポート技術情報

公式にはコマンドプロンプトのFORMATコマンドでも720KBフォーマットは対応していないことになっているが、実際は/Tスイッチと/Nスイッチを組み合わせてフォーマットすることができる。また、Windows 7では/Fスイッチでのサイズ指定も復活している。

Windows - Formatting a 720K Diskette in a 1.44M Drive - minuszerodegrees.net

Windows 11

Windows 8.1まではMS-DOS起動ディスクを作成できたが、Windows 10ではこの機能が削除された。次はWindows 11のスクリーンショット。

Image: SHFormatDrive


※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!