MS-DOS 3.21のFDISK バージョン1.00を弄くり回す
Windowsをセットアップしたときに最初に立ちはだかる壁が、パーティションの編集操作。特にWin9xユーザーにとってFDISKは忌々しい記憶となっているんじゃないだろうか。そのFDISKのVersion 1.00 (?) がAX用MS-DOS 3.21に付属しているので、これをさわさわなでなでするだけの話。
FDISKの初出
FDISKが最初に登場したのは、1983年にIBM PC/XTと同時にリリースされたIBM Personal Computer DOS Version 2.0。1981年発売のオリジナルのIBM PCはハードディスク内蔵モデルがまだ無く、PC/XTでハードディスク内蔵モデルが追加されたことで、そのDOSパーティションを管理するプログラムとして登場した。MS-DOSでは英語圏で最初のリテール版となったMS-DOS 3.2で初めてFDISKが添付されたらしい(リテール版と言うよりは、小規模パソコンメーカーに供給された、今で言うDSP版らしい。うぃきぺ情報なので、出典付きではあるが本当かどうか分からない。)
日本では1988年にMS-DOS 3.2を日本語化したものがMS-DOS 3.21として各PCメーカーに供給された。しかし、バージョン番号の管理はOEM先に委ねられていたので、PCメーカーによってバージョン体系がバラバラだった。そのままバージョン3.21としてリリースしたのは、AXパソコンを作っていたマイナーなメーカーたち。メジャーだったNEC、富士通、東芝、日本IBMのいずれも、3.21というバージョンがあったという話は聞いたことがない。
日本でマイクロソフトがMS-DOSを直接販売したのはMS-DOS 6.2/Vが最初で最後であり、MS-DOS 3.21の公式なリファレンスというのは存在しない。しかし、マイクロソフトが肩入れしていた日本語PC/AT互換機もといAX用のMS-DOS 3.21が、日本語拡張部分を除けばリファレンスに最も近い存在とみて良いだろう。
今手元にある沖電気工業のAX用MS-DOS 3.21にFDISKバージョン1.00が収録されている。後のMS-DOSのFDISKではMS-DOSのバージョンに合わせていたり、バージョン表記がなかったりするので、これは沖電気側での番号付けという可能性もある。これより古い形態のFDISKがあるなら教えて欲しい。ちなみに、XCOPY.EXEのタイムスタンプが1988年4月25日なのに対し、FDISK.EXEのタイムスタンプは1989年2月26日となっているので、沖電気側で何かしら改変を加えている可能性もある。
DOS仮想環境を用意するのが大変
AX用MS-DOSがそのまま動く環境はうちにないので、やむを得ずDOS/Vと仮想マシンを用意する。まずはDOSBoxの派生のDOSVAXJ3を使ってみたのだが、FDISK自体は動くものの、FORMATコマンドでハードディスクのフォーマットを試みると失敗したというメッセージが出る。なので、Bochsを使うことにした。(IBM互換機の再現性としてはPCemuの方が上かもしれないので、そっちの方がいいかも。)
英語になれた身でもBochsのセットアップは煩わしいものがある。そのあれこれは省略して、とりあえずIBM DOS J5.02/Vの起動ディスクから起動できる状態にした。ただ、EMM386が組み込まれた途端に激重になったのと、テキストスクロールで表示が乱れるので、ディスクイメージ内ルートディレクトリのCONFIG.SYSを次のように書き換える。
BUFFERS=20
FILES=20
DOS=HIGH
COUNTRY=081,932,A:\DOS\COUNTRY.SYS
SHELL=A:\DOS\COMMAND.COM /P /E:512
DEVICE=A:\DOS\$FONT.SYS /U=0
DEVICE=A:\DOS\HIMEM.SYS
rem DEVICE=A:\DOS\EMM386.EXE 1024
DEVICE=A:\DOS\$DISP.SYS /HS=LC
rem DEVICE=A:\DOS\$IAS.SYS /R=1
rem DEVICE=A:\DOS\$IAESKK.SYS
rem DEVICE=A:\DOS\$PRNUSER.SYS
DEVICE=A:\DOS\SETVER.EXE
いくつかの行頭にremを加えてコメント化したのと、$DISP.SYSに/HS=LCを追加。操作に支障ないレベルにはなった。
FDISKを実行
FDISKをそのまま使おうとすると「DOSのバージョンが違います。」と言われるので、SETVERコマンドを使ってバージョンを3.21として偽装する。
無事FDISKが起動した。Fixed Disk Setup Program バージョン 1.00とある。「Fix」と聞くとIT屋は「修正する」の意味を思い浮かべるかもしれないが、本来は「固定する」の意味が主。Fixed Diskとはつまり「固定ディスク」のこと。ハードディスクの古風な言い回しだ。
早速、DOS領域の作成を選んでみる。
ディスクのサイズ情報も一切無しに、全領域を確保するかという問いが来る。それにしても「固定ディスク」と来たか。NECのPC-98では末期まで固定ディスクという言葉を使っていた。日本IBMはフロッピーディスクドライブをディスケット駆動機構、アプリケーションを適用業務プログラムと呼ぶなど、独特な日本語訳を作っていたことで知られるが、ハードディスクに関しては5550の発表当初から「ハード・ディスク」と呼んでいる。ちなみにFDISKは日本語DOS K3.3の時点で「ハード・ディスク区画管理プログラム」と、原題よりも内容が分かりやすい。
Enterキーを押すと、特に結果の表示もなく再起動のメッセージが出る。
なお、先の問いでNを押してEnterキーを押すと、領域サイズと先頭シリンダ番号の入力を求められる。サイズ単位はGBでもMBでもない。シリンダ。1シリンダ何KBだっけ。今回Bochsで作成したHDイメージはC/H/S=81/16/63かつ512Bytes/Sなので、512×63×16÷1024=504KB。
DOS 3.xではクラスタサイズが固定かつ扱えるFATエントリのサイズに上限があるため、パーティション1つにつき最大約32MBまでしか確保できない。FDISK全バージョンの制限として、作成できる基本パーティションの数はそのDOSで認識できるタイプが最大1つという制約がある。拡張パーティションはDOS 3.3から使えるが、このバージョンでは未実装。つまり、32MB以上のハードディスクを積んでいても、このFDISKでは32MBのパーティション1個しか作成できない。
一応フォーマットしてみる。何故か1回目ではフォーマットに失敗し、2回目では成功する。
フリーソフトのFDSKでMBRの情報を見てみる。ぱっと見何の異常も…あれ?パーティション番号が3?
実際、ディスクイメージの生データを見ても、パーティション番号3のところだけにセットされている。この状態でFDSKのパーティション作成機能を使うと、空き領域を誤認識しているため、最悪テーブルが壊れる可能性あり。
もう一つ変な挙動がある。FDSKで初期化して基本パーティションを2つ作ってから、FDISKのDOS領域削除を使ってみる。
どの領域を削除するかという問いがなく、削除するかどうかの問いのみ。削除を実行すると…
先頭の領域から消えていく。この時、MBRではパーティション番号1のエントリーが消去されただけで、残りは繰り上げされることなく残っている。
DOS 5.0で作成した32MB超のパーティションは非DOS領域と見なされ、削除できない。DOS 5.0には非DOS領域の削除というのがあるけど、このバージョンにはない。
複数パーティションの扱いが怪しい、FDISKバージョン1.00でした。以上。