GIMONS DEVELOPER WORKS/FDX68

最終更新:2019/6/15

フロッピーディスクドライブエミュレータ & コントローラ
FDX68

Floppy Disk Drive Integration Tools for X68000

OVERVIEW1 OVERVIEW2 OVERVIEW3

はじめに

FDX68はX68000のフロッピーディスクドライブの環境を改善するために開発されたハードウェアとソフトウェアの総称です。RaspberryPiに専用シールド(変換基板)を取り付けて当ホームページから配布するソフトウェアを導入して使用します。基本機能はHxCやGOTEK等と同様のフロッピーディスクドライブエミュレータです。X68000のイジェクト機能やディスク挿入検知等の拡張機能をサポートしています。またKryoFluxの様にフロッピーディスクのダンプやリストアを行うコントローラ機能も持っています。X68000だけでなく私の所有するFM77AV40EX,PC-8801FH/MAで利用実績があります。その他にFM TOWNSやシャープMZ/X1シリーズ、NEC PC9801シリーズ、MSXのいくつかの機種で動作したとの報告を頂いています。

物理フロッピーがカビや劣化などの脅威にさらされるなかで貴重な(市販のゲーム等の)マスターディスクをプロテクトの情報を欠損することなくバックアップして実機で活用できることを念頭に開発しました。Version1.20に到達しコード全体のリファクタリングを行い多数のバグ修正を行いました。加えて物理フロッピーへのリストアも安定したようです。

私が収集したソフト(カビのダメージが少なかったもの)やサポーターの方から報告いただいたソフトの一例です。これらのソフトでは問題なくダンプ、エミュレーションが可能です。また最新のXM6 TypeGではプロテクトがかかった状態でもこれらのソフトは起動することが可能です。全て確認できたわけではありませんがリストアも高い確率で成功するようです。

A-JAX ザ・コックピット ドラゴンバスター ワンダラーズフロムイース
Mr.DO/Mr.DOvsユニコーン サイバリオン バブルボブル 餓狼伝説
R-TYPE サンダーブレード パロディウスだ! 餓狼伝説2
TDF ジェノサイド パワーモンガー 出たな!!ツインビー
悪魔城ドラキュラ ジェノサイド2 ファイナルファイト 生中継68
アルゴスの戦士 ジオグラフシール ファランクス 大魔界村
イメージファイト スクウェア・リゾート ぶたさん 遙かなるオーガスタ
エアーコンバット スターウォーズ ぷよぷよ
エトワールプリンセス スタークルーザー プリンス・オブ・ペルシャ
オーバーテイク スターフォース ボスコニアン
キャメルトライ スターラスター ボナンザブラザーズ
クオース ストリートファイターII' ポピュラス
グラディウス2 ダンジョンマスター マーブルマッドネス
グラナダ チェルノブ ラプラスの魔
クレイジー・クライマー テラクレスタ/ムーンクレスタ リブルラブル
コットン ドラゴンスピリット ワールドプロレス/大相撲

特徴

専用シールド(変換基板)

RaspberryPiと接続するためのGPIO40ピンコネクタ(メス)、FDD I/Fである34ピンリボンケーブルコネクタ(オス)を備えています。シールドの主な役割はFDDの信号(5V)とGPIOの信号(3.3V)のレベル変換です。レベル変換は74LS641というロジックICを使用しています。その他に接続ドライブの選択を行うジャンパ(最大2つのドライブをエミュレーション可能)とアクセスLEDを装備しています。下のリンクにあるBOOTHのハードウェア・ガジェットカテゴリで有償配布しています。

X68000拡張機能を含むFDDエミュレーション

拡張子"FDX"を持つ専用のイメージファイル(以下FDX形式と呼ぶ)を使用して2台までのFDDエミュレーションが可能です。シビアなタイミングが要求されるエミュレーションですがSPIを活用することでカーネルドライバ無しで(そこそこ)安定して動作します。またX68000固有のフロッピーディスクの挿入状況のチェック、オートイジェクト、挿入検出等の拡張機能をサポートしています。一部使用頻度の低いEJECT MASK,ERR DISK,LEDはGPIOの数を理由にサポートしていません。

ディスクイメージのダンプ、リストア

マスターディスクからFDX形式のディスクイメージを生成するために物理FDDからダンプする機能をサポートしています。8MHzもしくは4MHzでサンプリングした信号を補正してFM/MFMレベルのエンコード情報にリアルタイム変換することで高速なイメージダンプを実現しています。またFDX形式のディスクイメージを物理FDDにリストアすることも可能です。回転数の微妙な違いで発生する容量の違いをデータ送出タイミングを制御することで吸収するよう制御します。とは言えリストアに関してはあまり良い成果は期待しないで下さい。

FM/MFMエンコードレベルのディスクイメージ

FDX形式のディスクイメージは磁気データから解析したFM/MFMエンコードレベルのデータを格納しています。したがって特殊なセクタ構造を持つ物理フォーマットにも対応することができます。ファイル構造は識別子、名前、シリンダ数、ヘッド数、RPM、転送レート等のヘッダー情報と各トラックデータの羅列というシンプルな形式です。サポートするフロッピーディスクの種類は2D,2DD,2HD(1.6M),2HD(2.0M)となります。2HDのアンフォーマット容量はドライブのRPMによって変化します。X68000の標準はRPMが360ですので2HD(1.6M)になります。FDX形式はクロックを含むFM/MFMレベルのエンコードですのでファイルサイズが大きくなります。

既存のディスクイメージ活用

既存のディスクイメージ(XDF/HDM/2HD/DUP/IMG),DIMディスクイメージ(DIM),D68ディスクイメージ (D68/D88/D77)をFDX形式に変換することが可能です。またFDX形式をXDFやDIM,D68形式等に逆変換することも出来ます。しかし既存のディスクイメージの殆どはセクタ情報のみを保存している(GAP等の情報は持っていない)ためFM/MFMレベルのエンコードデータを持つFDX形式から逆変換すると情報の一部が失われる、もしくは変換出来ない場合があることに注意してください。

RAWレベルのイメージダンプ

FDX形式は汎用性を持たせておりFM/MFMエンコードレベルのデータだけでなく物理FDDから読み取った信号そのものをRAWデータとして格納することができます。信号の送出間隔を微妙に(0.5%程度)制御してプロテクトを掛けたマスターディスク等はこのRAWレベルデータとしてバックアップする必要があります。FDX68ではダンプ時に指定することでRAWデータレベルでの保存を指示することができます。当然FDDエミュレーションでもサポートしています。市販のアプリケーションをバックアップする場合は全ディスクを通常モードでバックアップを行い問題がある場合に限りRAWモードを使用すると良いでしょう。というのも強力なプロテクトが施されているのは大抵の場合起動時に使用するディスク1枚であることが多いからです。

動作環境

モデル

Raspberry Pi 3 Model Bを推奨します(3B+でも動作します)。

Raspberry Pi 2 Model BやZero,ZeroW等はサポートしていません。

OS

RASPBIAN STRETCHで開発およびテストしています。

ライセンス

FDX68はあるがまま"AS IS"で配布されるソフトウェアです。

つまり使用者が受けたあらゆる損害に対して一切責任を持ちません。またソフトウェアに不備もしくは不具合があったとしてもそれを修正する責任もありません。FDX68を利用することでRaspberry PiやレトロPCが故障するリスクがあります。あくまで自己責任でチャレンジしてください。

XM6 TypeG同様に実験成果公開という性質上私のHP以外での配布を認めておりません。XM6のライセンス条項を継承していますので雑誌/書籍での紹介事前の許諾が必要です。

ダウンロード

バイナリ

FDX68 version 1.21のダウンロード(TAR+GZ形式)

ソースコード

非公開としています。但しシールドを購入していただいた方に限り提供しています(おまけファイル機能から提供)。

専用シールド頒布(BOOTHのページにリンク)

BOOTHにて有償頒布しています。完成品とキットを商品登録しています。

専用シールド仕様

専用シールドのピンアサインやジャンパ設定。

ディスクイメージ仕様

ディスクイメージファイルのフォーマット情報。

コマンド書式

エミュレーションやダンプ、リストア等のコマンド。

エミュレーターモード使用例(X68000編)

X68000でフロッピーディスクドライブエミュレータ使う。

エミュレーターモード使用例(他のレトロPC編)

FM77系やPC88系でフロッピーディスクドライブエミュレータを使う。

コントローラーモード使用例

X68000や他のフロッピーディスクドライブを制御してダンプやリストアを行います。

履歴


[EOF]