Plextor製40倍速CD-ROMドライブ(PX-40TSシリーズ)を繋ぐ、コネクト・コネクション ネタです。 元ネタは1999年に自分で作成した PXcon.x その他なんですが、最近でも同ドライブが売っているようなのでネタを再利用して DIY の楽しさ等をお伝えできればと思います。
このCD-ROMドライブは付属の『プレクスターマネージャ』というアプリケーションでドライブの速度、スピンダウン時間等を設定できる便利なものです。 最近のPC事情では安いCD-ROMがいくらでもあるので、どうでもいいPCには激安のATAPIでいいけど、X680x0用にはコダワリを持って使いたいという方にはオススメのドライブです。
当然ですが、ドライブに付属してくるアプリケーションはWindows用ですので、X680x0にはそのままでは使用できません。 そこで、同アプリケーションの発行しているSCSIコマンドを hack 、書き換えている SCSI mode page を解析しましたので、その詳細とその結果、出来上がったツールをソースを含め公開致します。
同様の解析と操作でコントロールできるCD-ROMドライブが他にもあるかも知れません。 また、SCSI規格に準拠した機器ならCD-ROMでなくても同様の操作が可能です。 この記事がそうした機器の解析と制御プログラム作成にお役に立てれば幸いです。
外付モデルは高い(汗 なので私は内蔵タイプの PX-40TSi というモデルを買ってみました。 1999年当時は剥き身で適当な電源装置を用いて接続していたのですが、古い外付 CD-RW YAMAHA CRW4260tx のケースを見つけたのでハメてみました。
![]()
『規格ものって便利ね〜』といった感じでキレイに収まります。 YAMAHAとPlextor(シナノケンシ)の合体成功です。
でも、一つ問題がありました。 ケース背面にある SCSI-ID スイッチをイジっても ビット0 の操作しか有効になりません。 つまり、SCSI-ID 0 と 1 しか設定できないのです。 これは、SCSI-ID 決定ジャンパ の GND. 問題です。 ジャンパ というものは、ショート(接続)とオープン(非接続)で設定をするものですが、このジャンパの上下どちらが GND. という決まりはどうやら規格化されていないようで、今回合体させた YAMAHA と Plextor では 逆 のようです。
一瞬(5msec.)どう結線しようか悩みましたが、最も単純で確実で楽な方法で回避する事にしました。
![]()
コネクタの pin を精密ドライバを用いて外し、上下を入れ替えました(笑)。 青い色の線が GND. 側ですので、もう一本の青い線と見比べて頂ければ分かりますが、上下を入れ替えてます。 GND. 側は GND. なので当然内部で結線されていて、これでバッチリです。
![]()
Mach-2の画面でも無事、認識されています。 うっしっし。
Mach-2での同期転送も可能でシーケンシャルリードはHDDと同等のパフォーマンスが期待できます。
ハード的には簡単に繋がり、デフォルトの設定のままで良ければ普通に使えますが、安いCD-Rメディアや雑誌付録CD-ROM等ではディスクが偏心していたり、何らかの原因で回転バランスが良くない場合、激しく振動したり、騒音が気になったりします。
高速な CD-ROM は有り難いのだけど、場合によっては速度を抑えて使いたい事があります。 そこで登場するのが、プレクスターマネージャのような ドライブコントロール アプリケーション です。
さてこの アプリケーション はどのようにして ドライブ を コントロール しているのでしょうか?
1999年当時、私が行った解析方法は、X68-SCSI機器-Windowsマシン のように SCSI を ディジチェーン して、Windowsからプレクスターマネージャを操作して X68 側で SCSIバス を監視する方法で解析しました。 イニシエータID は普通 7 で衝突しますので、X68側で 6 に設定する等して回避するのが簡単でしょう。
ちなみに、SCSI規格としては、イニシエータが複数ある事も違反ではありません。 理論的に言えば、上手く調停すれば、複数のホストから同じターゲットを利用する事も可能です。
さて、解析の結果、MODESENSE MODESELECT を繰り返していて、どうやら MODE PAGE を操作しているようでしたので、Windows側からプレクスターマネージャを何回か操作して MODE PAGE のどこに変更があるのか調べました。
こんな事も簡単にできちゃう X680x0 と、先人達の残してくれた環境マンセー!と思いつつ下記データ。
☆ SPEED制御 PAGE No.49 Col 14 PAGE SIZE 16Bytes ☆ SPINDOWN時間制御 PAGE No.13 Col 15 PAGE SIZE 20Bytes (10進数ですハイ)MODE PAGE の操作には、PAGE取得には MODESENSE を、PAGE設定には MODESELECT を用います。 SCSIコマンド発行は、X680x0 でも SCSI-IOCSコール で簡単ですが、私は GORRYさんの書いた AskSCSI の該当部分のソースをそのまま使っています。 美しいです。 asm文マンセー。
そして、MODE PAGE を設定する時は、PAGE No.0 に 該当ページサイズで書き込む決まりになっています。 当時、私はそんな事は知りませんでしたので、勘でやったらたまたま当たったという情けなさでした(爆笑)。
シンプルなソース付です。(ウフッ)
みんなもコネコネしよ〜ぜ〜ぃ!
他のドライブやSCSI機器を制御できたという報告をお待ちしております!!
最後まで読んで頂きありがとう御座いました。