最終更新:2020/12/31
フロッピーディスクドライブエミュレータ & コントローラ
FDX68
-Floppy Disk Drive Integration Tools for X68000-
FDX68はX68000のフロッピーディスクドライブの環境を改善するために開発されたハードウェアとソフトウェアの総称です。RaspberryPiに専用シールド(変換基板)を取り付けて当ホームページから配布するソフトウェアを導入して使用します。基本機能はHxCやGOTEK等と同様のフロッピーディスクドライブエミュレータです。X68000のイジェクト機能やディスク挿入検知等の拡張機能をサポートしています。またKryoFluxの様にフロッピーディスクのダンプやリストアを行うコントローラ機能も持っています。X68000だけでなく私の所有するFM77AV40EX,PC-8801FH/MAで利用実績があります。その他にFM TOWNSやシャープMZ/X1シリーズ、NEC PC9801シリーズ、MSXのいくつかの機種で動作したとの報告を頂いています。
物理フロッピーがカビや劣化などの脅威にさらされるなかで貴重な(市販のゲーム等の)マスターディスクをプロテクトの情報を欠損することなくバックアップして実機で活用できることを念頭に開発しました。Version1.24ではダンプとリストアの精度が大幅に向上し物理フロッピー間のバックアップが実用レベルになりました。
私が収集したソフト(カビのダメージが少なかったもの)やサポーターの方から報告いただいたソフトの一例です。これらのソフトでは問題なくダンプ、エミュレーションが可能でした。また最新の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 A,B,B+を推奨します。
Raspberry Pi 2 Model BやZero,ZeroW等はサポートしていません。
Raspberry Pi 4 Model Bは推奨しません(動作するものの不安定です)。
OS
Raspbian Busterで開発およびテストしています。
FDX68はあるがまま"AS IS"で配布されるソフトウェアです。
つまり使用者が受けたあらゆる損害に対して一切責任を持ちません。またソフトウェアに不備もしくは不具合があったとしてもそれを修正する責任もありません。FDX68を利用することでRaspberry PiやレトロPCが故障するリスクがあります。あくまで自己責任でチャレンジしてください。
XM6 TypeG同様に実験成果公開という性質上私のHP以外での配布を認めておりません。XM6のライセンス条項を継承していますので雑誌/書籍での紹介事前の許諾が必要です。
バイナリ
FDX68 version 1.28のダウンロード(TAR+GZ形式)
バイナリ(過去バージョン)
FDX68 version 1.27bのダウンロード(TAR+GZ形式)
ソースコード
FDX68はオープンソースではありませんので基本的にソースコードは提供しません。シールドを購入していただいた方にはBOOTHのおまけファイル機能から研究目的として提供しています。
BOOTHにて有償頒布しています。完成品とキットを商品登録しています。
専用シールドのピンアサインやジャンパ設定。
ディスクイメージファイルのフォーマット情報。
エミュレーションやダンプ、リストア等のコマンド。
X68000でフロッピーディスクドライブエミュレータ使う。
FM77系やPC88系でフロッピーディスクドライブエミュレータを使う。
PC98系でフロッピーディスクドライブエミュレータを使う。
X68000や他のフロッピーディスクドライブを制御してダンプやリストアを行います。
- 2020/12/31 Version1.28 ダンプおよびリストア精度の向上,ダンプ速度の高速化,ディスクドライブエミュレーションのライトタイミング修正,データ変換、補正、解析ロジックの改善,その他バグ修正多数
- 2020/11/30 Version1.27b 2D形式のFDXのRAWデータからD68(D88,D77)形式に正しく変換されないバグを修正
- 2020/11/21 Version1.27 複数ドライブイジェクト要求の応答性改善(X68000モード),ディスクドライブエミュレーションのRaw data correctionオプションの指定が無視されていたバグを修正,ディスクドライブエミュレーションのRaw data correctionオプションをデフォルトで有効化,ディスクドライブエミュレーションで書き込み時に定期的にイメージファイルに書き出す様に変更,ディスクドライブエミュレーションがディスク無しでも必要の無い信号を出力していたバグを修正,ディスクダンプでトラックの開始、終了の判断ロジックを改修,ディスクリストアのRawデータ拡縮処理に信号補正を追加,fddctlの-listコマンドが受け付けられなくなっていたバグを修正,その他いくつかのマイナーバグを修正
- 2020/10/9 Version1.26 FDI,FDD,NFD形式のFDX変換サポート、フロッピーディスクドライブエミュレーションのリファクタリング、X68000拡張機能の応答性改善、ReadyおよびIndex信号のタイミング修正、ドライブ回転位置再現の実装、PC98専用モード追加(2DDのRPMを360に固定、MODE SELECT信号による高密度時のRPM制御)
- 2020/3/31 Version1.25 RaspberryPi4で起動できるように修正。ダンプ、リストアのコンソール出力内容修正、インデックスホール位置設定修正、FM77AV40EXの内蔵ドライブでシークしない現象の回避
- 2019/9/27 Version1.24 ダンプ、リストア精度の大幅な精度向上、エミュレーションモードのハーフステップが機能していなかった問題を修正、FDXファイルのセクタ情報をダンプするコマンドの追加、その他バグ修正
- 2019/8/7 Version1.23 エンコード形式でのダンプで稀にゴミデータが混じる障害を修正
- 2019/8/4 Version1.22 RAWモード全般の改良、詰め込み型のトラックデータを正しくダンプできるように改良、その他バグ修正。
- 2019/6/15 Version1.21 不正なCHRNのセクタ解析時に不正終了する不具合の修正、FDX->D68形式への変換時にライトプロテクトを反映するように改修。
- 2019/6/2 Version1.20 リファクタリングとエミュレーションモードの改良、リストア動作の再実装、チューニング、バグ修正多数。
- 2018/12/8 Version1.14 アンフォーマット領域検出とノイズエミュレーションの調整。fddemuの安定性向上。その他バグ修正。
- 2018/11/11 Version1.13 fddemuのイベントスレッドのポリシーを下げた。
- 2018/11/10 Version1.12 アンフォーマット領域検出とノイズエミュレーションの改善。インデックス信号発生タイミング修正。ステップパルス処理優先順位の変更。その他多数のバグ修正。
- 2018/10/20 Version1.11 X68000拡張機能とモーター信号の使用を設定できるよう変更(fddemu)。FDX形式からXDF等の一部形式に逆変換できない不具合を再度修正(fdxconv)。その他のチューニグとバグ修正。
- 2018/10/13 Version1.10 1周の単位をビットレベルで制御するように変更。RAWデータ対応を含む全般的な改良。
- 2018/8/16 Version1.02 FDX形式からXDF等の一部形式に逆変換できない不具合を修正(fdxconv)
- 2018/8/13 Version1.01 モータオフ時にトラック0とオプションが動作しない不具合を修正(fddemu)
- 2018/8/10 Version1.00 新規