FDX68コントローラー環境整備とディスクドライブ設定

FDX68コントローラー環境整備とディスクドライブ設定

FDX68コントローラー環境整備とディスクドライブ設定

FDX68は、GIMONSさんが個人で開発しているRaspberryPiをホストするフロッピーディスクドライブエミュレータ兼コントローラです。FDX68にはコントローラー機能があるため、PCやレトロパソコンのホストなしでフロッピーディスクの読み込み環境が構築できます。

FDX68をコントローラーとして、動作確認したフロッピーディスクを記載します。今回は、レトロパソコン本体付属のドライブではなく、PC/AT互換機やPC98向けの、現在でも中古で入手可能なディスクドライブで、いくつか動作確認をしてみました。

FDX68の環境設定

まずは、FDX68のモニターレスの環境を整備します。FDX68は、Raspberry Pi OS Liteでの利用を推奨しており、コマンドラインベースの操作となります。そのため、基本的にはSSHによるリモートアクセスが簡便なため、Raspberry Piのモニターレス・キーボードレスで運用環境を構築します。

モニターレス運用の設定

最近のRasbianでは、初期設定でmDNSが有効になっています。mDNSはZeroconfのプロトコルでマルチキャストでノードの発見が可能です。リモートアクセス運用のため、raspi-configでSSHの有効化と、覚えやすいホスト名を設定します。

項目 メニュー 備考
ホスト名 System Options -> Hostname 例: fdx68
SSH Interface Options -> SSH

mDNSはAppleのmacOSは元より、最近のWindows10でもサポートされているため、設定したホスト名(fdx68など)へSSHでのアクセスが可能になります。macOSの場合には、標準で<ホスト名>.localでアクセスが可能です

また、パスワードレスのアクセスのためにSSHの公開鍵認証設定や、scp主体の運用でない場合には、NFSサーバーの設定も便利かもしれません。その他、RaspberryPiのモニターレス運用に便利な設定は、以下の公式資料を参照して下さい。

FDX68のインストール

FDX68は、コンパイル済みのバイナリを展開してインストールします。例えば、以下のような感じで、任意のディレクトリにパッケージを展開します。

wget http://retropc.net/gimons/fdx68/fdx68_130.tar.gz
sudo mkdir bin
sudo tar xvfz fdx68_130.tar.gz -C bin

参考資料

ディスクドライブの設定 (5.25ドライブ編)

TEAC FD-55GFR

TEACのFD-55GFRは、PC/AT向けの5インチディスクドライブして鉄板的な機種だったかと思います。海外でも5インチと3.5インチが混在していた1990年台、海外の互換機メーカーでも標準的に採用されていた機種です。日本でも1990年代後半ごろまでは店頭での入手も容易で、流通量も多く現在でも国内外で中古の入手は容易かと思います。

保存状態に問題がなければ、故障は少ない機種だとは思いますが、初期の基盤は部品が多いため故障の要因になるかもしれません。今から入手するのであれば、基盤の集積が進んだ後期型の機種の方が良いでしょう。

ジャンパ設定

AT互換機用5インチドライブとして一般に出荷されてい機種のため、現在でも公式資料が入手可能です。今回のFDX68への設定は、工場出荷時のAT互換機向けの標準設定を基本として、最低限の設定を試してみました。以下の設定表のジャンパー(JUMPER)の記載は「S:ショート」「-:オープン」になります。

JUMPER 出荷時設定 FDX68 必須 説明 設定
D[0-3] D1 D1 O ドライブ番号 0, 1, 2, 3
DC S S 34ピン設定 PC/AT (DISK CHANGE)
RY 34ピン設定 PC/XT (READY)
LG O 2ピン信号入力設定 S:アサート時 高密度, -:アサート時 倍密度 (PC/AT標準)
I S O 倍密度回転速度設定 S:速度切替モード(高密度:360rpm,倍密度:300rpmy), -:速度固定(360rpm)
E2 INDEX/READパルス信号設定 S:MASKING THE INDEX設定が必要な機種 (PC/XTなど)
IU 4ピン設定 S:IN-USE信号有効, -:IN-USE信号無効
U0 ベゼルライト設定 (省略)
U1 ベゼルライト設定 (省略)

TEACなどフロッピーディスクの説明書は負論理で記載されており、FDX68の説明書でのアサート(LOW)、ネゲート(HIGH)の関係性になります。以下に、今回設定したジャンパの特記事項を記載します。

D[0-3]

ドライブ番号を設定します。FDX68で指定できるドライブ0または1に設定します。今回は、ジャンパ変更なしにAT互換機に接続するため、ドライブ1に設定しています。

DC/RY

AT互換機ではディスク変更を検知する34ピン信号出力は、FDX68では制御対象ではないため標準設定(PC/AT標準)のままにしています。

LG

LGジャンパは2ピン信号入力の挙動を設定するものですが、PC/AT互換機接続にはOFF(オープン)が必須となりますので、ここは変更なしとしています。

I

工場出荷時にはOFF(オープン)になっていますが、2HD(高密度)/2DD(倍密度)の回転速度を変更させるためショートさせます。動作確認で後述するように、5インチではFDX68もメディアを自動検知してくれますが(有難い)、今回は明示的に指定できるよう設定しました。

AT互換機は9801同様に2HD(高密度)も2DD(倍密度)と同じ回転数で読み取る対策が取られているため、工場出荷時には速度固定(360rpm)になっています。9801やAT互換機で2DDメディアを利用する場合には設定を戻してください。

E2

XTなどの古いホストで必要なMASKING THE INDEX設定ですが、FDX68でも不要なようです。工場出荷時のOFF(オープン)に設定し、無効にしています。

IU

FDX68では4ピンの制御も可能ですが、今回の動作確認では利用しませんでした。工場出荷時のOFF(オープン)のままにして、IN-USE信号の制御は無効としています。

U0/U1

ベゼルライトの点灯に関する設定です。工場出荷時のOFF(オープン)のまま、ドライブ選択時に点灯するよう設定しています。

参考資料

NEC FD1155D

PC98全盛時の主流となるNEC純正ドライブで、こちらも現在でも中古であれば入手が容易な5インチドライブです。機種的には、VX以降のi386搭載のDA/RAぐらいまで標準搭載されていたドライブのようです。自分としても、最初に購入した98がVX21でしたので、世代的に馴染み深い機種です。

現在でもドライブ単体でオークションに出品されています。ただし、状態やベゼルを含めての入手まで考慮すると、VM以降の9801本体を丸ごと入手する方が簡便かもしれません。同世代のVFO回路内蔵の後継機種であるFD1157Dについても同じ設定[1]になります。

ジャンパ設定

基本的にはPC98の純正ドライブとして出荷された製品ですので、ドライブ設定用の公式資料は見当たりません。ただし、有難いことに有志による解析された資料がありますので、これらを参考に設定していきます。基本は、AT互換機にも流用できる設定で、FDX68でも動作する設定を試しています。

JUMPER FDX68 必須 説明 設定
DX 1 O ドライブ番号 0, 1, 2, 3
RD 1 O VFO回路 1:無効, 2:有効
DEN 1 O 2ピン信号入力設定 1:アサート時 倍密度, 2:アサート時 高密度, 3:高密度固定, -:倍密度固定
HDE 2 O 倍密度回転速度設定 1:360rpm(単一速度モード), 2:300rpm(速度切替モード)
MON 3 O モーターON条件設定 1:DRIVE SELECT信号, 2:HEAD LOAD信号, 3:MOTOR ON信号
USE 2 4ピン信号入力設定 1:HEAD LOAD信号, 2:IN USE信号
DCG 2 34ピン信号出力条件設定 1:READY, 2:DISK CHANGE
VC S O 信号線終端抵抗 S:ON, -:OFF

ジャンパー(JUMPER)設定表の記載は「S:ショート」「-:オープン」になります。有志による解析資料は食い違いもあるので、今回は実際に試して動作した設定を元にして動作確認、上記の表を作成しています。

DX

ドライブ番号を設定します。FDX68で指定できるドライブ0または1に設定します。今回は、ジャンパ変更なしにAT互換機に接続するため、ドライブ1に設定しています。

RD

AT互換機ではVFO回路はマザーボード側に実装され、FDX68でも不要となりますのでOFF(オープン)にします。9801で利用する場合には、後期のVFO不要な機種を除きONにして下さい。

DEN

DENジャンパによる2ピン信号入力の挙動は、TEAC FD-55GFR(PC/AT互換機)の標準設定に合わせ、アサート時に倍密度(2)になるよう設定します。

HDE

2DD(倍密度)を300rpmで動作させるため、速度切り替えモードに設定します。動作確認で後述するように、5インチではFDX68もメディアを自動検知してくれますが(有難い)、今回は明示的に指定できるよう設定しました。

当時の9801は2HD(高密度)/2DD(倍密度)のいずれも360rpm固定で動作しており、2DDアクセス時にはFDCクロック切替により300rpmの転送レートを模擬する特殊な対応をとります。前述のTEAC FD-55GFRと同様に、9801やAT互換機で2DDメディアを利用する場合には1ピンに設定して下さい。

MON

FDX68では、MOTOR ON信号を出力しますので、MOTOR ON信号(3)に設定します[2][3]。ただし、「1:MOTOR ON信号, 2:HEAD LOAD信号, 3:DRIVE SELECT信号」とする資料[1]もあります。

その場合、(3)はDRIVE SELECT信号の設定となります。モーターON条件としては問題ないと思いますが、一応留意してください。

USE

FDX68では4ピンの制御も可能ですが、今回の動作確認では利用しませんでした。TEAC FD-55GFRでは無効にしましたが、標準的なIN USE信号に設定しています。

DCG

TEAC FD-55GFRと同じ挙動となる設定にしています。FDX68では、34ピン信号出力は制御の対象ではないため、AT互換機用の設定(DISK CHANGE)にしています。

VC

今回はFDX68への接続は1台のみですのでターミネータを有効にしています。2台接続する場合には、末端のドライブのターミネータのみをONに設定します。

参考資料

コマンド実行例

2HD (9801/X68000など)

今回、FD-55GFRとFD1155D共に2HDを標準動作としているため、特別なオプションは必要ありません。

sudo bin/fddump -i 1 -c 80 -d high -v test.fdx
Drive              : 1
File               : test.fdx
Index period       : 166786 us
Write protect      : Writable
Recalibrate        : Success
Drive RPM          : 360(359.742432)
Cylinder range     : 0 ... 79
Track capacity     : 166786 bits 20849 bytes 10425 cells
Total tracks       : 80 cylinders x 2 heads = 160
Data format        : Encode(FM/MFM) format
Data rate          : 1000 kbps

2D (X1/8801など)

今回、FD-55GFRとFD1155D共に2HDを標準動作としているため、2ピンをアサートして倍密度に設定します。

sudo bin/fddump -i 1 -c 40 -d double -s 2 -p2 -v test.fdx
Drive              : 1
File               : test.fdx
Index period       : 200067 us
Write protect      : Writable
Recalibrate        : Success
Drive RPM          : 300(299.899536)
Cylinder range     : 0 ... 39
Track capacity     : 100033 bits 12505 bytes 6253 cells
Total tracks       : 40 cylinders x 2 heads = 80
Data format        : Encode(FM/MFM) format
Data rate          : 500 kbps

ただし、確認した限りで、FDX68は2ピンアサート指定はなくとも、メディアを自動検知をしてくれるようです。Warningは表示されますが、ダンプは正常に実行されます。

sudo bin/fddump -i 1 -c 40 -d double -s 2 -v test.fdx
Drive              : 1
File               : test.fdx
Index period       : 166751 us
Write protect      : Writable
Recalibrate        : Success
Drive RPM          : 360(359.817932)
Warning : 360rpm / 300kbps mode.
Cylinder range     : 0 ... 39
Track capacity     : 100050 bits 12507 bytes 6254 cells
Total tracks       : 40 cylinders x 2 heads = 80
Data format        : Encode(FM/MFM) format
Data rate          : 600 kbps

「Warning : 360rpm / 300kbps mode.」と表示されるもの、自動認識され正常にダンプが実行されるようです。有難い。

ディスクドライブの設定 (3.5ドライブ編)

TEAC FD-235HG

最近は若干厳しくなってきましたが、3.5インチについては現在でも新品が入手です。日本特有のレトロPCを考慮した状況としては「2モード」切り替えのある機種を選びます。今回は、仕様が確認できるフロッピーディスクドライブとして、TEAC FD-235HGを選びました。

日本で一般に流通していた経緯のあるフロッピーディスクであれば、ほぼ「3モード」対応品かと思いますが、当初は各社フロッピー付属の専用ドライバを組み込んで動作していました。特にPCメーカ純正のディスクドライブなどは、独自のピンアサインの可能性もあり、入手には注意が必要になるかと思います。

設定は固定 (ジャンパ設定なし)

準備したTEAC FD-235HGは、簡素化された後期型で設定可能なジャンパは見当たりませんでした。設定は固定でドライブ番号は1番となります。以下に、販売メーカに記載のあった、TEAC FD-235HGの仕様を示します。

動作確認の結果、2D/2DDの単密度/倍密度時は2ピン状態の依らず300rpm固定で、2HDの時には、アサート(LOW)時に360rpmで1.2M対応、ネゲート(HIGH)時に300rpmで1.44MB対応となるようです。

参考資料

コマンド例

2HD (TOWNS/9801など)

FD-235HGは2HDを標準動作としていますが、1.2MBフォーマットのディスクを読み込むため2ピンをアサートしRPMを300rpmに設定します。

sudo bin/fddump -i 1 -c 80 -d high -p2 -v test.fdx
Drive              : 1
File               : test.fdx
Index period       : 165892 us
Write protect      : Protected
Recalibrate        : Success
Drive RPM          : 360(361.681091)
Cylinder range     : 0 ... 79
Track capacity     : 165892 bits 20737 bytes 10369 cells
Total tracks       : 80 cylinders x 2 heads = 160
Data format        : Encode(FM/MFM) format
Data rate          : 1000 kbps

2ピンをアサートしない状態、RPMが360rpmとなり、正常に読み込めません。5インチの時とは違い、自動認識されず、明確な指定が必要なようです。

sudo bin/fddump -i 1 -c 80 -d high -v test.fdx
Drive              : 1
File               : test.fdx
Index period       : 199057 us
Write protect      : Protected
Recalibrate        : Success
Drive RPM          : 300(301.421204)
Cylinder range     : 0 ... 79
Track capacity     : 199057 bits 24883 bytes 12442 cells
Total tracks       : 80 cylinders x 2 heads = 160
Data format        : Encode(FM/MFM) format
Data rate          : 1000 kbps
Processing         :   0%(T  0 C 0 H0) -> 191703 bits(missing start and end) / unformated
 Warning : Damaged or unformated(no sector)
Processing         :   1%(T  1 C 0 H1) -> 192706 bits(missing start and end) / unformated
 Warning : Damaged or unformated(no sector)
Processing         :   1%(T  2 C 1 H0) -> 189563 bits(missing start and end) / unformated

2DD (MSX/FM-77AVなど)

FD-235HGは、2DDの倍密度時はRPMは300rpm固定のため、特別なオプションは必要ありません。

sudo bin/fddump -i 1 -c 80 -d double -v test.fdx
Drive              : 1
File               : test.fdx
Index period       : 199078 us
Write protect      : Protected
Recalibrate        : Success
Drive RPM          : 300(301.389404)
Cylinder range     : 0 ... 79
Track capacity     : 99539 bits 12443 bytes 6222 cells
Total tracks       : 80 cylinders x 2 heads = 160
Data format        : Encode(FM/MFM) format
Data rate          : 500 kbps

2D (MSX/FM-77など)

FD-235HGは、2Dの単密度時はRPMは300rpm固定ですが、FD-235HGではドライブ側にはシーク幅の制御はありませんのでステップスを2に設定します。また、シリンダ数は40に、MSXや6601などの1Dメディアの場合にはHEADS(-h)オプションに1を設定します。

sudo bin/fddump -i 1 -c 40 -d double -s 2 -v test.fdx
Drive              : 1
File               : test.fdx
Index period       : 199081 us
Write protect      : Protected
Recalibrate        : Success
Drive RPM          : 300(301.384857)
Cylinder range     : 0 ... 39
Track capacity     : 99540 bits 12443 bytes 6222 cells
Total tracks       : 40 cylinders x 2 heads = 80
Data format        : Encode(FM/MFM) format
Data rate          : 500 kbps

その他、補足事項

接続ケーブルの準備

FDX68と接続するケーブルには、34ピンのストレートケーブルを準備します。フロッピーケーブルとしては流通してはいませんが、既製品としては現在でも簡単に入手できます

逆に、AT互換機用に流通していた2ドライブ用のフロッピーケーブルは、クロス側は利用できないので注意が必要です。利用するには、FDX68で制御が可能なように、ドライブB側となるストレート部のコネクタとの接続となります。

これは、FDX68が制御しているドライブ番号(10,12,14ピン)や、モーター(16ピン)の結線がクロスしてしまうためです。

参考資料

電源の準備

また、フロッピーディスクドライブの動作には、外部電源の準備が必要です。今回試験したフロッピーディスクドライブ動作時の各社記載のある平均消費電流は、以下となります。

Maker Product +5V(AVG) +12V(AVG)
TEAC FD-235HG 0.28A
TEAC FD-55GFR 0.38A 0.54A
NEC FD1155C 0.40A 0.25A

3.5インチドライブについては、TEAC機種に限らず、現行の製品は+5V電源のみで動作し、消費電力も多くありません。HxCのようなフロッピーディスクシュミレーターでの電源確保と合わせて、USB電源ケーブルを加工して準備するのも簡便です。

ただし、5インチドライブについては、+5Vと+12Vの2電源が必要となりますので、専用の外部電源を準備します。ATX電源を単独で起動できるよう流用する方法もありますが、現実的には、汎用の+5V/+12V出力のあるスイッチング電源の入手がコンパクトで簡便かと思います。

ただし、TEACのFD-55GFRの技術資料には、+12Vの最大電力がモーター起動時に1.0A近く消費する(Peak: Less than 1.0A)との記載もありますので、安定的な動作のためには、余裕のある(上記写真だと+12V/1.5A)電源を準備するのが無難でしょう。

参考資料

書き込みは、本体付属FDDが推奨

今回は、FDX68コントローラーモードの読み込みを、主な対象とし動作確認をしたものです。2HDの機種をメインに紹介しましたが、レトロ機種の2D/2DDドライブとはヘッダ幅が異なるので、書き込みには注意が必要です。レトロ機種実機で読み込むフロッピーディスクの作成には、2D/2DDドライブを準備してください。

その当時、8bit機で2HDと2DDドライブの混在した時期にも問題になりましたが、基本的には、2DDドライブで読み込むフロッピーディスク作成には2DDドライブで書き込むのが安全、FDD機種固有の特性や機種間の相性を考えると、本体付属の同一のFDDで読み書きするのが安全な点を補足しておきます。

参考資料 (一覧)