にがMSX

〜MSX用FDDのREADY信号についての考察と検証〜


Panasonic 2DD FloppyDiskDrive

FS-FD1A、各種FDD

 MSX実機を保守する上で避けて通れないのがFDDのトラブルである。多くのMSX内蔵FDDは駆動ベルトの劣化により数年に1回のベルト交換が必要になるが、ベルトは使わなくても経年劣化するので買い置きはあまり意味がなく、交換の都度新しいものを入手しなければならない。近年メーカーが保守用ベルトをエンドユーザーに販売しなくなったとの情報もあり、オリジナルのFDDを保守・運用して行くのも困難になってきた。

そこで、ベルトレスドライブに換装する手段が浮上するわけだが、その際ネックになるのがREADY信号の処理である。現在でも比較的手に入りやすいAT互換機用のFDDではREADY信号をコネクタピンに出力しておらず、MSX用FDDとして流用するには、適当なREADY信号をデッチあげる必要がある。今回手持ちのFDDでいくつかの検証をしてみた。

ちなみにAT互換機用スリムタイプのFDDは何故かREADY信号を出力しており、コネクタを変換してしまえば電気的には問題なく接続できるようだ。同人製の変換アダプタが家電のケンちゃんやネットオークションを通して頒布されているようなのでポン付けで使いたい人は探してみると良いだろう。


READY信号とは何なのか?

 YE-DATAのYD-702D 6639Dのデータシートより、READY信号に関わる部分を抜粋してみた。なお、YD-702はバリエーション豊富でそれぞれ仕様が異なるので注意。末尾のアルファベットが異なるだけで全く別物だったりする。

データシートを読み解くと、READY信号の要点としては以下のように解釈できる。

(1) メディアが挿入されている
(2) スピンドルモーターが回っている
(3) ドライブが選択されている
(4) 上記(1)〜(3)すべて満たす時にLowレベルを出力
(5) 出力信号はオープンドレイン

信号の立下りのタイミングについては「最大500ms後」と書かれているだけで、モーターの回転が安定しているかどうかについては明示されていない。

実際にディスクが回っているかどうかはINDEX信号で知ることができる。データシートには、1回転ごとに1パルスが送出され、最大500ms間出力されないと書かれていることから、MOTOR ON後のINDEX信号の立下りエッジをREADY信号立下りのトリガーにする、というロジックも考えられる。

ベルトドライブのFDDでは、モーターが回転していてもベルトが滑ってディスクが回らない事態が想定され、MSX実機ではそのような時にDisk offlineエラーになることから、READY信号の生成にINDEX信号が関わっているというのは確からしい。

とはいえ、ベルトレスドライブを使う場合は MOTOR ON=ディスク回転とみなしてもほぼ問題なく、INDEX信号の監視まではしなくても良さそう。

MOTOR ON後の最大時間が示されているのはタイムアウト処理のためだろう。これによりシステムはFDDにMOTOR ONを指示して500ms以上経過してもREADYを返さない場合はエラーとみなすことができる。

実際のディスクアクセスは、(1)スピンドルモーターを回す→(2)ドライブを選択→(3)READY信号がLowレベルであることを確認→(4)データの読み書きといった手順で行われると考えられるが、MSXのシステムではREADY信号がLowレベルの時は、アクセスに成功するまで無限にリトライを繰り返すようである。そのため、READY信号をGNDに直結してLowレベルに固定してしまっても、正しくディスクが挿入されていれば読み書きやフォーマットは問題なくできるが、ディスクを抜いてしまうと無限リトライのループから抜け出せなくなり、Disk offlineエラーを吐けずにフリーズしてしまう。

過去のFS-FD1Aのドライブ換装記事で使ったMITSUMIのAT互換機用FDD D353M3Dではディスク挿入センサーが物理的なスイッチになっており、メディア挿入でGNDに接続される仕様であった。これをオープンドレイン信号とみなし、READY端子(FDD 34p)に直結することで問題を回避した。要するにメディアが挿入されていればアクセス可能、メディアを抜けばアクセス不能とする単純なロジックである。

MOTOR ON信号DRIVE SELECT信号には無頓着であるため、正しいREADY信号より早いタイミングでアクティブになってしまうが、リトライしているうちに読み書きはできてしまうのだろう。

一方で、メディアが入っていなければREADY信号がオープンとなり、正しくDisk offlineエラーを吐くことができる。これで事実上は問題なく運用が可能といえる。

要するにMSXのFDDシステムにおけるREADY信号は、明らかにディスクにアクセスできない状態をシステムに伝えることに意義があり、そうでなければアクセスできるとみなしても運用上問題ない。ということになる。なお、他機種の場合は不適切なREADY信号を受け取った際にどのようにリトライが発生するか分からないので、この話はMSXに限ったものと思って欲しい。

READYもどき信号?

2015年に試運転さんからピンにREADY信号を出力していないFDDでも、コントロールICからそれに近い信号を引き出して利用できるとの情報提供を頂いており、今回この手法を試してみることにした。正規のREADY信号と区別するため、ここではREADYもどき信号と呼称する。

おことわり
 試運転さんの情報はNEC PC-9800シリーズに代用FDDを接続するために検証されたものであり、他機種への転用を想定されていない。従って、同様の手法でMSXに接続した場合に期待通りに機能しなかったとしても、試運転さんの情報が誤りであると指摘するものではないので、誤解の無いようにお読み頂きたい。

試運転さんのサイトにて上記FDD D353M3Dと同型番機の情報が得られ、MITSUMI製のコントロールIC NCL039の35pが当該のREADYもどき信号であると推定した。

なお、試運転さんのサイトではICのピン番号は明示されておらず、信号取り出しポイントを画像から判断することになっている。当方所有のD353M3Dとは基板のバリエーションが異なっており、画像のパターンを追いかけて当該のICのピンを同定する必要があった。公開されている画像ではパターンが一部シルク印刷に隠れていたため、正しく判読できたかどうかは確証が持てない。でも、たぶん間違っていないと思う。

2020.1.14 追記) 試運転さんの情報にREADYもどき信号のピン番号情報が追記され(制御IC型番の下)、これによりNCL039の35pが当該のREADYもどき信号であると確定。

34p直結→部分的に失敗

今回検証のため、ディスク挿入センサーに取り付けていたワイヤーを外し、READYもどき信号に繋ぎなおしてみた。NCL039の35pからパターンを追いかけて、取り出し易いパッドから信号を引っ張っている(赤い矢印の場所)。

この状態でFS-FD1Aに入れて動作確認してみたところ、アクセス自体は問題なくできたものの、アクセスが終わってもスピンドルモーターが停止しなくなった

なお、この信号はスピンドルモーターのドライバICに接続されており、なんらかのモーター制御に関わるものと思われる。

D353M3 リビジョン違い

同じ手法でMITSUMIのD353M3(無印)を使って検証してみた。D353M3Dと似た構成で、同じコントロールIC NCL039が使われている。

READYもどき=MT信号?

NCL039の35pからパターンを追いかけると、左上のフレキケーブルのMTとシルク印刷された端子に繋がっていた。このフレキはスピンドルモーターやセンサーが実装されている基板に接続されており、MTという信号名からスピンドルモーターのトリガー信号ではないかと推定し、ここにLEDを取り付けて挙動を観察してみた。

FDD単体を適当な+5V電源に接続し、メディアを入れると数秒モーターが回転してその間MTLレベルになった。回転が止まるとHレベルとなるが、FDDコネクタ16pのMOTOR ON信号をGNDに接続するとモーターが回転すると同時にLレベルになった。メディアが入っていない場合はモーターは回らず常にHレベルである。モーターのON/OFFと連動していることから、このFDDにおけるREADYもどき信号の実体はスピンドルモーターのトリガー信号であると考えて矛盾がないだろう。

このピンをREADY(34p)に直結した場合に前述の問題が発生するとしたら、原因はNCL039が出力する信号がオープンドレインではないためではないかと考えた。本来Hレベルでモーターを停止させるところが、READY端子に接続したことで電圧降下し、モーターが止まらなくなったと推定した(実機での測定はしていない)。

ダイオードを介して34pに接続→成功

仮説を実証するためMT信号のHレベルの電流がREADY信号の34p側に流れないようにダイオードを介してオープンドレインもどきにしてみた。

この状態でFS-FD1Aに入れたところ、正しくアクセスでき、その後モーターも停止した。もちろんディスクを抜けばエラーも出る。DRIVE SEL信号には無頓着であるが、これで運用上は差し支えないと思われる。

以上がMSXのFDDインターフェイスに1台のドライブを接続するときの話であるが、2ドライブ化する場合は別の問題が発生する


2ドライブ化の話

MSXでは1つのFDDインターフェイスに2台までの物理ドライブを接続することが可能になっている。個人的にはいまさら2台のリアルFDDを接続するメリットを見出せないが、近年は上画像のGOTEKのようなFDDエミュレータが安価に手に入るようになった。GOTEKはUSBメモリ内部のFDイメージファイルに対してデータの読み書きができるもので、ゲームの起動はもちろんのこと、イメージファイルをエディタで開けばPCとファイル単位のやりとりも可能である。

1つのFDDインターフェイスに2台の物理ドライブを接続すると自動的に2ドライブシミュレータは無効化されるが、メモリ使用量は変わらない。1ドライブ時にCTRL起動すると2ドライブシミュレータが無効化され、フリーエリアが少し増えるが、2ドライブ時はセカンダリFDDが無効化され、同様にフリーエリアが増える。市販ゲームが起動しない等のデメリットも考えにくく、FDD+GOTEKの2ドライブ体制はたいへん有意義だろう。なお、ソフトウエアのAUTOEXECができるのはプライマリ側のみであり、どちらからも起動できるようにするためには切り替え回路が必要となる。これについては別記事で詳述したい。

通常FDDを2ドライブ化する際はケーブルをデイジーチェーンで接続し、DRIVE SELECT信号以外のラインは両ドライブで共有される。原則MOTOR ON信号も1本のワイヤーで伝送されるが、スピンドルモーターの動作はDRIVE SELECTの影響を受けないため、リアルFDDで2ドライブ化したときには2台のスピンドルモーターが同時に回転する(おそらくそういう仕様)。なお、AT互換機の場合、フラットケーブルでMOTOR ON信号を2本伝送できる仕様になっているため、スピンドルモーターは個別に制御される。

ちなみに、松下製MSXで多く採用されている東芝のFDC TC8566はセカンダリFDD用のMOTOR ON信号を出力しており、これを利用することで2台のモーターを個別に制御することが可能である。MSX turboRでもこのFDCが採用されており、MOTOR ON信号をプライマリとセカンダリで分離しているが、これはFDCではなくS1990の機能を利用している模様。


以下2019.11.19追記

他にデイジーチェーンする際に気をつけたいのが、各信号のプルアップ抵抗。YD-702D 6639Dの データシートを読むと入出力信号ともに1kΩでプルアップすることになっているが、このあたりの仕様はFDDによって異なる。当方で確認した範囲ではプルアップ抵抗が4.7kΩであったり、入力側のみプルアップされているものや、いずれもプルアップされていないものもあった。ジャンパーピンでプルアップするかどうかの選択をするものもあるらしい。

デジタル信号のプルアップ抵抗は入力側に取り付けるのが普通だが、FDDのプルアップ抵抗にはターミネーターの役割があるため入出力信号いずれもプルアップされているものが多いようだ。ターミネーターは長いケーブルで信号を引き回す際の反射によるトラブルを回避するためのものだが、MSXに2ドライブ内蔵させる場合のケーブル長はせいぜい10センチ程度であり、あまり気にしなくても良さそう。

なお、DISKインターフェイス上のプルアップ抵抗については、松下FS-A1シリーズのすべてFS-FD1A、SONY HB-F1XD、SANYO PHC-77はいずれも入力側5本(INDEX、TRACK0、WRITE PROTECT、READ DATA、READY)のみ内部で1kΩでプルアップされているようだ。FDDの出力信号はオープンドレインなので当然と思われるが、EPSONの98互換機のように本体側でプルアップされていない機種もあるらしい(情報提供:試運転さん)。このような機種にプルアップ抵抗のないFDDを接続すると、信号が浮いてまともに動作しないだろう。ちなみにGOTEK FDD Emulatorは入出力信号ともに1kΩでプルアップされているので、プルアップ抵抗のない本体やFDDと併用しても問題なさそう。

デイジーチェーンではREADY信号のラインも2台のFDDで共有することになるが、スピンドルモーターは個別制御されないため、モーターが回転するだけでREADYにLowを出力するドライブが存在すると、非ターゲットが返す偽のREADY信号に騙される状態が発生しうる。上記回路図のようにREADYもどき信号DRIVE SELECT信号を絡めて、出力をオープンドレインにすれば問題を回避できるだろうと考えた。

ほぼMSX用FDD化

試験的にMITSUMIのD353M3(無印)をデイジーチェーン対応のMSX仕様に改造してみた。元々34pはDISKCHANGE信号であったので、ここをパターンカット。DRIVE SELECT信号は12pにアサインされていたものをパターンカットして10pに接続した(セカンダリドライブとして使用する場合この処置は不要)。ここから7432のゲートに配線し、READYもどき信号(MT)とORを取ってダイオードでオープンコレクタ化し、これをREADY信号として34pに繋いでいる。

FDDコネクタ7,9,11pはGNDに接続されているものが一般的であるが、電源コネクタを省略してここに+5Vを流すドライブがある。SANYOのPHC-70FDの内蔵ドライブやFM-TOWNSの一部のモデルが該当し、今回はその仕様にするためにコネクタ側をパターンカットして赤いワイヤーで+5Vラインに接続した(カットしたGNDパターンは黒いワイヤーでジャンパ)。FS-FD1AHB-F1XDなどSONY機の換装で使う場合はこの処置をせずに普通に電源コネクタに+5Vを接続すればよい。間違って使うと電源がショートして危険なので注意。

なお、ドライブが2HDモードに切り替わるとMSXでは読み書きできなくなるため、ディスクの識別孔を読み取る2HDセンサーはパターンをショートして無効化した。2p,4pはNCL039に接続されており、モード切り替えに関わる信号と思われるが誤動作を避けるためDEN1,DEN3の0Ω抵抗を外してカットした。以上の改造により、MSX用のFDDとほぼ互換品となった。2台のFDDをデイジーチェーンした場合もアクセス可能であり、ディスクを排出すればDisk offlineエラーも出る。

FDD ピンアサイン(FDD側)

RetroPC用FDD

YD-702B 6036B D

1 (GND) 2 (MODE SELECT)
3
4 (INU)
5 GND 6 (DRIVE SELECT3)
7 (+5V) 8 INDEX
9 (+5V) 10 DRIVE SELECT0
11 (+5V) 12 (DRIVE SELECT1)
13 GND 14 (DRIVE SELECT2)
15 GND 16 MOTOR ON
17 GND 18 DIRECTION
19 GND 20 STEP
21 GND 22 WRITE DATA
23 GND 24 WRITE GATE
25 GND 26 TRACK 00
27 GND 28 WRITE PROTECT
29 GND 30 READ DATA
31 GND 32 SIDE1 SELECT
33 GND 34 (READY)

AT互換機用

2HD FDD

1 GND 2 (MODE SELECT)
3
4
5 GND 6
7 GND 8 INDEX
9 GND 10
11 GND 12 DRIVE SELECT
13 GND 14
15 GND 16 MOTOR ON
17 GND 18 DIRECTION
19 GND 20 STEP
21 GND 22 WRITE DATA
23 GND 24 WRITE GATE
25 GND 26 TRACK 00
27 GND 28 WRITE PROTECT
29 GND 30 READ DATA
31 GND 32 SIDE1 SELECT
33 GND 34 DISK CHANGE

GOTEK

FDD Emulator

1 GND 2 DISK CHANGE
3 GND 4 J5
5 GND 6
7 GND 8 INDEX
9 GND 10 S0
11 GND 12 S1
13 GND 14
15 GND 16 MO
17 GND 18 DIRECTION
19 GND 20 STEP
21 GND 22 WRITE DATA
23 GND 24 WRITE GATE
25 GND 26 TRACK 00
27 GND 28 WRITE PROTECT
29 GND 30 READ DATA
31 GND 32 SIDE1 SELECT
33 GND 34 READY

AT互換機用スリムFDD

YD-702J-6637J

1 +5V 2 INDEX
3 +5V 4 DRIVE SELECT
5 +5V 6 DISK CHANGE
7
8 READY
9 (HIGH DENSITY) 10 MOTOR ON
11
12 DIRECTION
13 (MODE SELECT) 14 STEP
15 GND 16 WRITE DATA
17 GND 18 WRITE GATE
19 GND 20 TRACK00
21 GND 22 WRITE PROTECT
23 GND 24 READ DATA
25 GND 26 SIDE1 SELECT

現 在MSX用に使うことが想定されるFDDのピンアサインをざーっと並べてみた。同じ34pコネクタでも各種微妙に違っている。仕様が定まっていないと思われるものは括弧でくくっている。空欄は概ねNCであるが、FDDによっては何らかの信号のやりとりに使っていることがある。基本的には同名信号を接続すれば動作するが、以下に注意点を列挙する。

Retoro PC用FDDの注意点

ピンアサインはYE-DATAの2HDモデル YD-702B 6036B D のものを記載した。このFDDは1pに何らかの役割があるようだが、信号名のシルクはなく、GNDに接続で問題なく動作した。

2pの扱いはドライブによってまちまちで、ジャンパーピンでMODE SELECTHIGH DENSITYDISKCHANGEに設定できるものがあるようだ。なお、2DDモデルのYD-646E 1524E Eは2pがDISKCHANGE信号となっている。仕様の異なるドライブをデイジーチェーンすると動作不良の原因となりうる。

34pコネクタ信号名シルク YE-DATA YD-702B 6036B D

4pのINUIN USEの略で、アクセスLEDのトリガー信号(Lowアクティブ)になっていた。この信号を適切に処理しないとアクセスLEDが光らないといった問題が生じる。YE-DATA社のFDDでは点灯条件をP1からP3ジャンパで設定できるらしく、DRIVE SELECTやMOTOR ONをトリガーにすることができるようだ(情報提供:試運転さん)。当方でYD-646E 1524E E(アクセス時にLEDが点灯しない)で検証したところ、P1,P2ジャンパのパターンは存在するもののピンヘッダは非実装で、ここをショートしてもLEDは光らなかった。そこでINU端子をDRIVE SELECTに直結したところ、起動後一定時間後に点灯し、そのまま消灯しなくなった。接続先のFDC(TC8566)のDRIVE SELECT信号は待機時にDuty比の低いパルス(理由不明)を出力し続けており、これを拾って点灯している模様。INUをMOTOR ON信号に直結すると光るようになったが、モーター信号は実際のアクセスが終わっても数秒間OFFにならないため通常のアクセスランプのようにチカチカ光らず違和感がある。この対策については別記事で詳述する。(2019.11.19加筆修正)

設定用ジャンパーピン YE-DATA YD-702B 6036B D

DRIVE SELECT信号が複数あるものはデイジーチェーンの際にどのDRIVE SELECT信号に応答するかジャンパーピンで設定できるが、MOTOR ON信号が共通となっているためディスクアクセス時に複数台のスピンドルモーターが同時に回ってしまう(仕様)。

34pをREADYDISKCHANGEのいずれかジャンパーピンで設定できる場合はREADYを選択する。MSX turboRにはDISKCHANGE信号が必要だが、ドライブ内部に信号は出ているので、ワイヤーで引き出して繋げばよい。

電源コネクタが省略されているドライブの例

上にも書いたが、7,9,11pは+5V電源として使われているものとGNDに接続されているものがある。基板上に0Ω抵抗などで設定する仕組みがあり、電源ピンとして設定されているものは下画像のようにコネクタが省略されているので見分けがつく。間違って使うと電源がショートして大変危険なため、素性の分からないFDDを接続する際にはテスターで確認したほうが良いだろう。(2019.11.19画像追加、加筆修正)

AT互換機用FDDの注意点

2HDドライブをMSX用として流用する場合は2DDモードに固定しておいたほうがトラブルが少ない。具体的にはFS-FD1A換装記事のように2HD識別センサーを無効化するのがお手軽。この処置によりメディアの2HD識別孔が開いたままでも2DDディスクとして使用可能であるが、これを他機種の2HDドライブに入れると正しく2DDモードに切り替わらないために認識に失敗する。他機種とファイルをやりとりする場合は、この穴を粘着テープやシールで塞いでおく(つい忘れがち)。

2pの仕様が統一されているのかどうか不明だが、MODE SELECT信号に、他の信号を接続すると2HDモードに切り替わる可能性があるので、デイジーチェーンの際は2pをカットしておいたほうが無難だろう。

AT互換機は2台のFDDをケーブルセレクトで接続する仕組みになっていて、ホスト側からは10p:MOTOR ON(A)、14p:DRIVE SEL(A)とプライマリ側の信号が割り当たっており、フラットケーブル末端のコネクタの10〜16p(7本)を反転させることで、10pと16p、12pと14pが入れ替わり、プライマリFDDの当該の端子に接続される。ホスト側の12p:DRIVE SEL(B),16p:MOTOR ON(B)はストレートにセカンダリFDDに結線される。

GOTEK FDD Emulatorの注意点

GOTEK Floppy EmulatorにファームウエアFlashFloppyをインストールすると、デフォルトで上記のアサインになる。2pと34pについてはconfigで変更できるようだが、通常はこのままでOK。ただし、デイジーチェーンする場合は2pのDISKCHANGE信号の扱いに注意が必要である。2pをMODE SELECT等別の役割で使っているFDDと並列にすると動作不良が発生することがある(YD-702B 6036B Cで経験した)。ちなみに4pはJ5に繋がっているようだが、役割は不明。

MSXではturboRのみDISKCHANGE信号を要求する。コネクタ変換時にGOTEKの2pとFDDコネクタの24pを接続しておけばOK。turboR以外では結線不要。

GOTEKはイネーブラとしてDRIVE SELECT0DRIVE SELECT1MOTOR ONいずれか1つを選択する仕様になっていて、接続先をS0/S1/MOのジャンパで設定する。GOTEKはスピンドルモーターを持たず、通常はイネーブラにDRIVE SELECT信号を使うため、MOTOR ON信号を接続する必要はない。

スリムFDDの注意点

AT互換機用スリムFDDのピンアサインはYE-DATA社のYD-702J-6637Jのデータシートより転記した。MSXに接続するために必要な信号はすべて揃っているので、コネクタを変換すれば使用可能であるらしい。

7,9,11,13pは仕様が定まっていないようで、すべてGNDであったり、11pがMODE SELECTであったり細かい違いがある模様。MSXではNCにしておけば良いだろう。

MSX FDD I/F ピンアサイン(本体側)

SONY HB-F1XD
1 GND 2 NC
3 GND 4 NC
5 GND 6 NC
7 GND 8 INDEX
9 GND 10 DRIVE SELECT0
11 GND 12 DRIVE SELECT1
13 GND 14 NC
15 GND 16 MOTOR ON
17 GND 18 DIRECTION
19 GND 20 STEP
21 GND 22 WRITE DATA
23 GND 24 WRITE GATE
25 GND 26 TRACK 00
27 GND 28 WRITE PROTECT
29 GND 30 READ DATA
31 GND 32 SIDE1 SELECT
33 GND 34 READY

Panasonic

FS-A1F/FM

1 NC 2 READY
3 +5V 4 INDEX
5 +5V 6 DRIVE SELECT
7 +5V 8 NC
9 +5V 10 SIDE1 SELECT
11 +5V 12 MOTOR ON
13 +5V 14 DIRECTION
15 GND 16 STEP
17 GND 18 WRITE DATA
19 GND 20 WRITE GATE
21 GND 22 TRACK 00
23 GND 24 WRITE PROTECT
25 GND 26 READ DATA

Panasonic

FS-A1FX/WX/WSX/ST/GT

23 INDEX 24 (DISK CHANGE)
21 NC 22 DRIVE DELECT
19 DIRECTION 20 MOTOR ON
17 GND 18 STEP
15 GND 16 WRITE DATA
13 TRACK 00 14 WRITE GATE
11 READ DATA 12 WRITE PROTECT
9 SIDE1 SELECT 10 GND
7 GND 8 GND
5 +5V 6 READY
3 NC 4 +5V
1 +5V 2 +5V

24p DISKCHANGE: tR only

SONY機のFDD用コネクタはオーソドックスな配列であるが、PanasonicのMSXのFDDは何故か変態ピンアサインを採用しており、ドライブ換装の際に何かと面倒である。以下に注意点を列挙する。

SONY HB-F1XD(おそらく同社のMSX2+機も同様)で2ドライブ化する場合は、ケーブルをデイジーチェーンで接続し、セカンダリFDDのジャンパピンをDRIVE SELECT1側に設定する。ただし、MOTOR ON信号が共用なので2ドライブのモーターは同時に回る。本体内のFDCコンパニオンIC CXD1032にMOTOR ON出力が1本しかないので(IOポートのレジスタも1ビットしかない)そういう仕様である。

FS-A1F/FM内部のFDD用フラットケーブルは26p側に 青いラインが入っているため要注意。上表のピンアサインは本体、およびFDD基板のシルク印刷のピン番号に合わせてある。フラットケーブルはコネクタの1pを示す△マークに合わせて圧着されているが、コネクタの突起がFDDの基板と干渉するため上下反転して接続せざるを得ず、このようになったと思われる。

物理的に逆挿しできないようになっているが、手配線でコネクタを変換する際にピン番号を間違えないように注意が必要。(2019.11.19加筆・画像追加)

FS-A1F/FMMOTOR ONを8pと記載しているサイトがあるようだが、これは誤り。A1Fにおいては本体側の1pと8pはどこにも接続されていない。よってこのピンにセカンダリFDDのDRIVE SELECTやMOTOR ON信号を接続し、コネクタ変換して2台のFDDをディジーチェーンすることは可能。

FS-A1FX/WX/WSXFS-A1ST/GTの内蔵ドライブは形状互換品であるが、24pのDISKCHANGEのみ異なる点に注意。MSX2+機ではDISKCHANGE信号は使われておらず24pはNCでよいが、MSX turboRでこの信号を接続しないとディスク交換を検知できず、書き込み時にFATが破壊される不具合が発生しうる。2+機の内蔵FDDは24pにDISKCHANGEを出力しないため、A1WXのFDDをA1STに移植するといったことは原則できないコチラに関連記事あり。

FS-A1ST/GTのメインボードにはセカンダリFDD用のコネクタパターンが用意されていて、20p:MOTOR ON、22p:DRIVE SELECT、24p:DISKCHANGEの3本がプライマリ側と分離されている。ここに内蔵ドライブと同じ仕様のFDDを接続するだけで増設は完了するが、今時こんな変態コネクタのFDDはまず手に入らないので、結局はコネクタ変換が必要になる。

FS-A1FA1WXシリーズで2ドライブ化する場合は、本体内のFDC TC8566からセカンダリFDD用のDRIVE SELECT信号MOTOR ON信号を引き出す必要がある。これについては別記事で詳述する。

なお、MSXで使われているディスクドライバについてはASCATさんのディスクテクガイ第5部 第3章 3.3「ディスクドライバ資料」に詳細が記されており、各機種で使われているFDCの他、メモリマップドIOのアドレスやレジスタの内容を知ることができる。例えばSONYの外付けドライブHBD-F1の場合、当該のスロットの7FF8h-7FFFhにコントロール用のIOポートが存在し、7FFDhのbit7がモーター制御に使われていると読み取れるが、このディスクドライバはモーター制御用のビットを1つしか持たないため、2ドライブ時の個別制御は不可能ということになる。(以上2019.11.19追記)

READY信号 まとめ

FDDコネクタ34p
ディスク挿入検知 モーター回転 ドライブセレクト オープンドレイン

メリット

デメリット
GND直結

-

-

-

-

超簡単
ディスク挿入しないとフリーズ
ディスク挿入センサー直結

-

-

超簡単
デイジーチェーンに非対応
READYもどき直結

(-)

(-)

簡単
組み合わせによっては不具合あり
READYもどき+ダイオード

(-)

簡単
デイジーチェーンで不都合が起こりうる
READYもどき+ORゲート+ダイオード

正しいREADY信号にかなり近い
部品点数やや多め

当方で検証したREADY信号生成手段しては上の表の通りとなった。ドライブによって仕様が変わる可能性のあるものについては括弧をつけている。

今回の実験結果から、MSXで使用する場合一番下のORゲートを使う手法で一通りのトラブルを回避できると考えているが、1台のドライブしか接続しないのであれば、ディスク挿入センサー(挿入でGNDに接続される物理スイッチ)直結でも特に問題はないと思われる。

試運転さんのサイトで公開されているREADYもどき信号については、当方ではコントロールICにNCL039を使用したMITSUMIドライブで検証し、その実体がFDD内部のスピンドルモーターのトリガー信号であると推定したが、他のFDDのコントロールICが出しているREADYもどき信号がどういった性質のものかは当方では検証していない。今回この信号を34p直結でモーターが止まらなくなる不具合が発生したが、たまたまFS-FD1Aと相性の悪いドライブを選んだだけかも知れない。

なお、試運転さんのサイトには今回使ったD353M3(D)の類似型番D353T5の情報も記載されていて、基板画像を見ると0Ω抵抗を移動することでコネクタ34pをDISKCHANGEからREADYに変更できるようだ。READY信号は、コントロールIC NCL032の32pに接続されているとのことで、おそらくNCL032の32pはモーターのトリガー信号ではなく「正しい」READY信号を出力していると思われる。NCL032NCL039はピン数も44p/48pで異なっており、全くの別物のようだ。


今回の記事では検証していないが、MOTOR ON信号とINDEX信号からREADY信号を生成する手法についてK-ichi氏が2011年のblogで 記事を書いている。PIC版のソースを拝見したところ、READY出力はオープンドレインになっていて、モーターONになってからINDEXパルスを1回検出した時点でREADYにLowを出力。モーターOFFになった時、または約1秒以上(0.5ms間隔で2000回チェック)INDEXパルスが検出されなければREADY出力をオープンとしている模様。実際にディスクが回転しているかをチェックしているため、ディスクを抜いた時だけでなく、ベルトドライブのスリップ時にもDisk offlineを出すことができそうだ。

74HC4538版もほぼ同様で、モーターON時にINDEXパルスを検出したらREADYにLowを出力。モーターOFF、または0.7秒以内に次のINDEXパルスが検出されなければREADYをオープンとしている模様。

これらの手法はMSX本体やFDDの改造を必要とせず、外付回路のみで実現する際に有効と思われる。FDDのINDEX信号はドライブが選択されているときのみ出力されるため、2ドライブ化にも対応できるように思うが、信号の遷移にタイムラグが発生するため交互に連続したアクセスが発生した際に正しく機能するかどうかは検証が必要かも知れない。


おわりに

 今回の一連の検証結果に基づき、FS-A1FXをリアルFDD+GOTEKの2ドライブシステムに改修中である。GOTEKの実体は基板1枚であるから、レイアウトを工夫してFDDの下の隙間に潜り込ませることができた。欠品していたFDDマウンタは1Tアルミを板金して作成。GOTEK基板やロータリーエンコーダも同様にアルミのステーでFDDマウンタに固定している。これについてはまた別の機会に。

検証には、試運転さんの調査データを活用させていただき、れふてぃさんに情報提供を頂きました。K-ichiさんのblog記事も参考にさせていただきました。ありがとうございました。

 お約束ですが、この記事を見て改造などを行い故障やその他問題が発生しても責任は負えません。各自の責任において情報を広く集めて行うことをおすすめします。


ご意見、ご感想、ご質問はにがBBSまで!

Top pageへ戻る

copyright (C) 2019 Niga.