JavaScriptを有効にすると、ここにメニューを表示します。
FM TOWNS実機再稼働支援プロジェクト
Windows 10で1.23MB 2HD フロッピーディスクにイメージを書き戻す

ysflight.com

なお、以下の内容を試す場合は自己責任ということで。

なお、以下の方法は僕はFM TOWNSフォーマットの2HDディスクにイメージを書き戻すためにやったけど、PC-9801もどうやらFM TOWNSフォーマットを使っているらしいので多分同じ方法で98起動用ディスクも作れると思う。(誰だPC-9801フォーマットなんて言ってるやつは)

FM TOWNSを再稼働させようとしたとき、もしも内蔵CDドライブがダメになっていて、CMOSバックアップバッテリーも切れてCMOS内容が消滅していた場合、フロッピーディスクから起動する以外立ち上げる方法が無い。もしも押し入れに眠っているFM TOWNSを30年ぶりに起動してみようとしたらCDドライブは既に死んでたなんていうと起動可能なフロッピーディスクが無いともう手も足も出ない。

起動さえできれば、中古の外付けSCSI CDドライブを確保してCDSD.SYS, CDISK2.SYSを駆使して当時のゲームプログラムなど実行可能状態にすることができる。フリコレとかに入ってたプログラムを使うだけだったらCD無しでも結構なんとかなる。問題はどうやって起動可能なディスクを作るか。

しかし、最近Windows 10で2HDディスクを1.23MBフォーマット(日本でしか使ってなかったフォーマット)する方法があることを知った。

https://freesoft.tvbok.com/pc9801/fdd_format_on_windows10.html

http://island.geocities.jp/cklouch//column/pc98bas/win8_3mode_fdd.htm

この記事によるとWindows 10 Creator Update以後フォーマットが進んでいくようだが最後に失敗する、とある。しかし、これは物理フォーマットまで成功していて単にFile Allocation Tableの生成に失敗しているだけではないか?と、思ったそうであればあとはセクタへの書き込みさえできればディスクイメージをフロッピーディスクに書き戻すことができる。起動可能なディスクイメージはFM TOWNSエミュレータ「うんづ」などを使って作ればいい。

まずは誰か同じような問題を持ってる人がイメージ書き戻しツールを作っていないか探したが、しかし、フロッピーディスクからイメージを生成するプログラムは見つかるものの実機で使うために書き戻すプログラムが見つからない。

できればWindows上でコマンド数発でFM TOWNS実機で起動できるフロッピーディスクを生産できれば楽でいい。そういうツールが無いなら自分で書く。というわけで、書いてみた。とりあえず、手元のUSB接続のフロッピーディスクドライブで成功。そのディスクを実機FM TOWNS 2MXに持って行って起動できることも確認した。

1.23MBフォーマット

まずはディスクのフォーマットだけど、上のリンクからの抜粋で、

(1) 32bit版コマンドモードを立ち上げる。スタートメニューとかから C:\Windows\SysWOW64\cmd.exe とタイプするといい。

(2) Aドライブにフロッピーディスクを入れて (なお、手持ちのUSBフロッピーディスクドライブはディスクの入れ替えを検出できないのでディスクを入れた状態でUSBを刺さないとうまく動かなかった) コマンドモードで、

format A: /f:1.23m

とタイプ。

これで待っていると最後に「Failed」と出て失敗したかに見える。が、しかし、これで物理フォーマットはできている。単にFile Allocation Tableが作れてないだけ。

ディスクイメージの書き戻し

ここから writetownsfd.exe をダウンロードする。そして、writetownsfd.exeと書き戻したいFDイメージを同じディレクトリに置いて、アドミニストレータ・コマンドモードで、

.\writeTownsFD.exe A diskimage.xdf

のように、書き込み先ドライブレターと書き込みたいイメージファイル名を指定する。1.23MB 2HD専用。2DDディスクでこれを使ったらどうなるかわかんない。えーと、一応、アドミニストレータ・コマンドモードに入るには、スタートメニューで cmd.exe とタイプして、出てきたコマンドプロンプトのアイコンを右クリックして、「Run as Administrator」として実行を選ぶ。日本語版Windowsだと多分「アドミニストレータとして実行」とか「管理者として実行」とかなってるかもしらんけど知らない。

0〜76トラックが無事に書き込めたら成功。

なお、Windows 10はFile Allocation Table等が正しくできていれば1.23MBフロッピーディスクの読み書きが普通にできるらしい。知らなかったんだけど。FM TOWNSのフロッピーディスクイメージを書き込んでしまえばあとは普通にファイルを転送したりできる模様。Windows XPだとブートセクタを書き換えてしまうとかいうとんでもない仕様があったけど Windows 10 だと大丈夫なのかな?起動用にするディスクは書き込み終わったらすぐ取り出してライトプロテクトした方がいい鴨しれない。

例えば「うんづ」上でTowns OS V2.1を起動して、「システムの複写」をありにしてフロッピーディスクを初期化すると起動可能なディスクイメージができる。あとはwriteTownsFD.exeを使って書き戻してしまえば実機で起動が可能になるはず。

解説

最初、Win32DiskImagerを使ってやってみようと思ったのだが、Win32DiskImagerはなぜかAドライブを書き込み先に選ぶことができなかった。

ソースが公開されていたから読んでみた。しかし、同じように書いてみたところUSBドライブのデバイスIDの取得に失敗した。多分その影響でAドライブが選択できなかった。本来、デバイスIDを取得して、

\\.\PHYSICALDRIVEx

みたいなファイル名でデバイスをアクセスするものらしい(MSDN)のだが、USBフロッピードライブだとこの番号が取れない。

PHYSICALDRIVExの一覧を表示するというコマンドをStackoverflowで見つけたので、試してみた。

wmic diskdrive list brief

そしたら取得できないレベルじゃなくて本質的にフロッピードライブがPHYSICALDRIVExに割り当てられていないということがわかった。多分もうフロッピードライブなんて意地でレトロPCを維持してるようなごく少数のユーザーしか使わないと思っていい加減に扱っているらしい。だが本当のことだから仕方ない。

デバイスIDが取れないからもうだめか、と、思ったが、Disk Explorerは普通にフロッピーのセクタを読み込めるから何かのAPIでできるはず。

さらに例題を探したところ、単に

\\.\A:

で開いたデバイスからセクタが読めるという情報発見。読めるなら書けるんじゃないの?と、思ってやってみたら成功した。ただAdmin権限が必要だったけど。

実は超簡単だった。パッケージにソースも入れたので興味がある人は読めばわかると思う。ただ、これほど簡単だったということは、既に他のイメージツールでFM TOWNSフォーマットのフロッピーディスクに対応しているものはあったの鴨しれない。単に誰も試してなかっただけとか。でも数時間サーチして有効な情報が見つからなかったんで、自力で書いた方が早かろうと思って書いてしまった。まあ、そういうツールが一つ増えても別に困らないだろうし。

ただ、どうせならフォーマットまでやっちめえ、と、思ったのだがPHYSICALDRIVEが取れない影響か、IOCTL_DISK_FORMAT_TRACKS_EX は成功しなかった。検索しても例題も出てこないし、世界中で誰も成功していないのではないだろうか。

なぜ今更FM TOWNSを再稼働するかってそれはただの意地としか言いようがない。

Comments are welcome.  Send E-Mail to: 

Back to http://www.ysflight.com