GIMONS DEVELOPER WORKS/FDX68

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

X68000 PROの内蔵FDDを制御する(他のX68000も同様です)

準備

X68000のソフトウェアの殆どは5インチフロッピーで供給されていたのでX68000 PROでフロッピーのダンプとリストアを行ってみる。

FDDエミュレーションで説明したように内蔵FDDをドライブ2,3に割り当てたPROがあるのでドライブ2を制御することにする。FDDエミュレーション用にFDX68のジャンパはDRV0,1を使用するようになっているがDRV2,3を外部から制御するため一時的にジャンパを変更する。

FDX23

PROにフロッピーもSASI,SCSIディスクを何も接続しない状態で電源を入れる。当然「ディスクから起動できません」の白帯が出てくる。ここでINTERRUPTボタンを押して「エラーが発生しました。リセットしてください。」と出て止めておく。これでダンプ、リストアの準備が完了。

PRO_CNT_1

ダンプ

X68000の場合は1.25Mの2HDが標準なので余り悩むことは無い。PRO本体のドライブにダンプするフロッピーを挿入しておく。使用するコマンドはfddump。引数無しで起動すると簡単なHELPが出てくる。ドライブ番号、シリンダ数、密度の設定だけで後はデフォルトでOK。Human3.02の入ったシステムディスクをダンプする。

2HDのダンプ(アンフォーマット時1.6M)
sudo ./fddump -i 0 -c 80 -d high HUMAN.FDX

全てのトラックがダンプできたら終了。シリンダ77以降に警告が出ているのは通常はオーバートラック領域なのでアンフォーマットだからでしょう。正しいセクタ構造を持たないレコードに対してはこの様な警告がでてきます。プロテクト等がかかったディスクでも同様の警告が出るかもしれません。それが経年劣化等でダンプに失敗しものなのか人為的なプロテクトなのかは判断できません。セクタ構造に不整合があった場合には3回再試行します。リトライ回数は"-r"オプションで指定できます。"-f raw"オプションを指定するとRAWレベルのデータ、つまりFDDから読み取った信号そのものを記録できます。X68000の場合RAWレベルでダンプするケースは非常に少ないでしょう。

リストア

使用するコマンドはfdrestore。引数無しで起動すると簡単なHELPが出てくる。ドライブ番号、シリンダ数だけで後はデフォルトでOK。先ほどのHuman3.02のFDXイメージをリストアする。密度はイメージファイルの情報から判断。

2HDのリストア(アンフォーマット時1.6M)
sudo ./fdrestore -i 0 -c 80 HUMAN.FDX

PC-8801FHの内蔵FDDを制御する

準備

PC-8801FHの内蔵FDDは2D専用の5インチFDDです。

FDDエミュレーションで説明したように内蔵FDDを使用するにはカバーを空けてカードエッジコネクタとFDX68を接続する必要があります。FHの場合本体に既にカードエッジコネクタを備えたケーブルがあるのでそれでFDX68と接続できます。

内蔵FDDを手前に引き出して既存のケーブルを引き出してFDX68と接続します。写真ではドライブ1のケーブルを背面に引き出してカバーを明けなくても接続できるようにしたものです。

FH_CNT_1 FH_CNT_2

DRV0を使用しますのでジャンパ設定も合わせます。

FDX01

FHの電源を入れて準備完了です(FDDに電源を供給するだけ)。

制御方向の確認

FHのFDDは特殊な制御信号を使用していません(奇数ピンは全てGNDなので省略)。

PIN SIGNAL NOTES DIR
2 NC
4 NC
6 NC
8 INDEX OUT
10 DRIVE SELECT IN
12 NC
14 NC
16 MOTOR ON IN
18 DIRECTION IN
20 STEP IN
22 WRITE DATA IN
24 WRITE GATE IN
26 TRACK 00 OUT
28 WRITE PROTECT OUT
30 READ DATA OUT
32 SIDE SELECT IN
34 READY OUT

ダンプ

2Dのダンプ
sudo ./fddump -i 0 -c 40 -d double IMAGE_2D.FDX

ドライブ番号、シリンダ数、密度を設定。2Dなのでシリンダ数は40,密度はdoubleを指定します。"-f raw"オプションを指定するとRAWレベルのデータ、つまりFDDから読み取った信号そのものを記録できます。PC88系の後期のゲームはウェーブプロテクトという書き込み周波数を微妙に変化させたものがあります。そのようなプロテクトは信号のタイミングまで正確に記録したRAWレベルデータであればバックアップが取れるかもしれません。通常このような強力なプロテクトがかかったディスクは起動時に使用する1枚のみであることがほとんどなのでRAWレベルで起動ディスクをダンプしておいて残りは通常モードでも良いでしょう。

リストア

2Dのリストア
sudo ./fdrestore -i 0 -c 40 IMAGE_2D.FDX

ドライブ番号、シリンダ数を設定します。2Dなのでシリンダ数は40。密度はイメージファイルの情報から判断。


PC-8801MAの内蔵FDDを制御する

PC-8801の2HD機で2Dフロッピーを扱う時の注意点 MR,MH,MA,MA2等の2HD機は2Dのディスクを扱えますがあまりお勧めしません。試行錯誤の結果2Dディスクのダンプ、リストアは内周に行くほど不安定です。2Dフロッピーは2D機で操作した方が良いでしょう。

準備

PC-8801MAの内蔵FDDは2HDをサポートする5インチFDDです。2HDだけでなくPC-8801でデファクトの2Dもサポートしています。

FDDエミュレーションで説明したように内蔵FDDを使用するにはカバーを空けてカードエッジコネクタとFDX68を接続する必要があります。カードエッジコネクタを備えたケーブルを持っていれば便利です。

MA_CNT_1 MA_CNT_2

内蔵FDDを手前に引き出してFDX68と接続して下さい。

MA_CNT_3 MA_CNT_4

DRV0を使用しますのでジャンパ設定も合わせます。

FDX01

MAの電源を入れて準備完了です(FDDに電源を供給するだけ)。

制御方向の確認

MAの2HDドライブは2Dもサポートできるというのは前述の通りです。具体的にはFDD I/FのPIN2(MODE SELECT)、PIN4(TPI SELECT)を最適な組み合わせで制御しなければなりません。またFHのドライブと違ってPIN12(HEAD LOAD)をアサートしないとヘッドがディスク面に降りないのでこちらは必ずアサートする必要があります。信号線のおさらいです(奇数ピンは全てGNDなので省略)。

PIN SIGNAL NOTES DIR
2 MODE SELECT NEGATE:360rpm ASSERT:300rpm IN
4 TPI SELECT NEGATE:96tpi ASSERT:48tpi IN
6 NC
8 INDEX OUT
10 DRIVE SELECT IN
12 HEAD LOAD IN
14 NC
16 MOTOR ON IN
18 DIRECTION IN
20 STEP IN
22 WRITE DATA IN
24 WRITE GATE IN
26 TRACK 00 OUT
28 WRITE PROTECT OUT
30 READ DATA OUT
32 SIDE SELECT IN
34 READY OUT

PIN2,PIN4,PIN12の制御方法は次の通り。信号線の組み合わせによっては2DDもサポートしてます。5インチフロッピーに規格は無いですがアンフォーマット2.0Mの2HDのディスクも作れそうです。

MODE PIN2(MODE SELECT) PIN4(TPI SELECT) PIN12(HEAD LOAD)
2HD NEGATE NEGATE ASSERT
2DD ASSERT NEGATE ASSERT
2D ASSERT ASSERT ASSERT

ダンプ

PIN2,4,12を制御してダンプするコマンドラインの例です。"-f raw"オプションでRAWレベルでダンプすることも可能です。

2HDのダンプ
sudo ./fddump -i 0 -c 80 -d high -p12 IMAGE_2HD.FDX

ドライブ番号、シリンダ数、密度の設定に加えPIN12を-p12でアサート。


2DDのダンプ
sudo ./fddump -i 0 -c 80 -d double -p2 -p12 IMAGE_2DD.FDX

ドライブ番号、シリンダ数、密度の設定に加えPIN2,12をそれぞれ-p2,-p12でアサート。密度はdoubleを指定します。


2Dのダンプ
sudo ./fddump -i 0 -c 40 -d double -p2 -p4 -p12 IMAGE_2D.FDX

ドライブ番号、シリンダ数、密度の設定に加えPIN2,4,12をそれぞれ-p2,-p4,-p12でアサート。2Dなのでシリンダ数は40,密度はdoubleを指定します。

リストア

PIN2,4,12を制御してリストアするコマンドラインの例です。

2HDのリストア
sudo ./fdrestore -i 0 -c 80 -p12 IMAGE_2HD.FDX

ドライブ番号、シリンダ数の設定の設定に加えPIN12を-p12でアサート。密度はイメージファイルの情報から判断。


2DDのリストア
sudo ./fdrestore -i 0 -c 80 -p2 -p12 IMAGE_2DD.FDX

ドライブ番号、シリンダ数の設定に加えPIN2,12をそれぞれ-p2,-p12でアサート。密度はイメージファイルの情報から判断。


2Dのリストア
sudo ./fdrestore -i 0 -c 40 -p2 -p4 -p12 IMAGE_2D.FDX

ドライブ番号、シリンダ数の設定に加えPIN2,4,12をそれぞれ-p2,-p4,-p12でアサート。2Dなのでシリンダ数は40。密度はイメージファイルの情報から判断。


AT互換機用の3.5インチ 3モードFDDを制御する

準備

3.5インチ 3モードのドライブを制御すればFM77AV等の3.5インチフロッピーをダンプ、リストアできます。実機を使うより便利かもしれません。もちろん2Dと2DD(2HD)ではヘッドの幅が違うので2Dイメージを扱う場合は2D専用ドライブを使った方が良いでしょう。

これはオークションで手に入れたYD-702D 6238Dです。似たようなものも多く出品されているので一つ二つ手に入れといても良いと思います。コネクタは34ピンのリボンケーブルコネクタなのでFDX68と同じです。またフラットケーブルで接続は簡単ですが互換機用の”ねじれ”が入ったケーブルは使えませんので注意。FDDへの電源供給は適当に・・・5Vなので比較的簡単に供給できます。写真はMAから分岐ケーブルで電源を拝借している様子。

AT_CNT_1 AT_CNT_2

DRV1を使用しますのでジャンパ設定も合わせます(何故DRV1かは後述)。

FDX01

制御方向の確認

ネットから見つかったYD-702D 6238Dの信号線の情報です(奇数ピンは全てGNDなので省略)。AT互換機で使用するためにDRIVE SELECT1側が有効にされているようです。

PIN SIGNAL NOTES DIR
2 MODE SELECT NEGATE:300rpm ASSERT:360rpm IN
4 NC
6 NC
8 INDEX OUT
10 NC
12 DRIVE SELECT 1 OPTION IN
14 NC
16 MOTOR ON IN
18 DIRECTION SELECT IN
20 STEP IN
22 WRITE DATA IN
24 WRITE GATE IN
26 TRACK 00 OUT
28 WRITE PROTECT OUT
30 READ DATA OUT
32 SIDE ONE SELECT IN
34 DISK CHANGE OPTION OUT

3.5インチフロッピーの場合はメディア自体に2DD(2D)と2HDの違いを判別する穴があるのでドライブの動作はメディア検出によって変わるようです。2DDの時はRPMは必ず300です。2HDの時にはPIN2(MODE SELECT)によってRPMが変更されます。信号が"HIGH"(ネゲート)時は300rpm、"LOW"(アサート)時は360rpmという仕様です。これはあくまでYD-702D 6238Dの仕様です。恐らく流通している3モードのFDDは同様の仕様である可能性が高いです。とはいえジャンパで設定を変更可能なFDDもありますから個別に調べるしかありません。

ダンプ

"-f raw"オプションでRAWレベルでダンプすることも可能です。

2HDのダンプ(アンフォーマット時1.6M)
sudo ./fddump -i 1 -c 80 -d high -p2 IMAGE_2HD_16.FDX

ドライブ番号、シリンダ数、密度の設定を行う。PIN2(MODE SELECT)をアサートしてRPMを360に変更します。実容量が約1.2MのレトロPCで一般的なものです。


2HDのダンプ(アンフォーマット時2.0M)
sudo ./fddump -i 1 -c 80 -d high IMAGE_2HD_20.FDX

ドライブ番号、シリンダ数、密度の設定を行う。実容量が約1.4MになるAT互換機で一般的なものです。


2DDのダンプ
sudo ./fddump -i 1 -c 80 -d double IMAGE_2DD.FDX

ドライブ番号、シリンダ数、密度の設定を行う。


2Dのダンプ
sudo ./fddump -i 1 -c 40 -d double -s 2 IMAGE_2D.FDX

ドライブ番号、シリンダ数、密度の設定を行う。2Dなのでシリンダ数は40。ドライブ自体が2DD仕様なのでダブルステップでダンプするために"-s 2"を指定します。

リストア

2HDのリストア(アンフォーマット時1.6M)
sudo ./fdrestore -i 1 -c 80 -p2 IMAGE_2HD_16.FDX

ドライブ番号、シリンダ数の設定を行う。密度はイメージファイルの情報から判断。PIN2(MODE SELECT)をアサートしてRPMを360に変更します。


2HDのリストア(アンフォーマット時2.0M)
sudo ./fdrestore -i 1 -c 80 IMAGE_2HD_20.FDX

ドライブ番号、シリンダ数の設定を行う。密度はイメージファイルの情報から判断。


2DDのリストア
sudo ./fdrestore -i 1 -c 80 IMAGE_2DD.FDX

ドライブ番号、シリンダ数の設定を行う。密度はイメージファイルの情報から判断。


2Dのリストア
sudo ./fdrestore -i 1 -c 40 -s 2 IMAGE_2D.FDX

ドライブ番号、シリンダ数の設定を行う。2Dなのでシリンダ数は40。密度はイメージファイルの情報から判断。ドライブ自体が2DD仕様なのでダブルステップでリストアするために"-s 2"を指定します。



[EOF]