SASIインタフェース

ACE-HDには、もともと20MBのHDDが付いていましたが、故障し、既に撤去しています。
そのインタフェースであるSASIの外付け用コネクタについても、
今となってはそこにつなぐような機器はありませんので、FDD端子ごと本体から撤去しました。

この状態にすると、左タワーの黒ねじ3本のうち、一番下のものは締められません。

そうなると、底面基板に残るSASIケーブル用コネクタが露出してきます。
これをファイル交換用コネクタとして再活用するために、SASIインタフェースについて、
調査してみました。

SASI-20ピンコネクタのピン配置

まずは、ハードウェアに関する調査結果です。
外付けHDD端子のピン配置は、ACEの取扱説明書に記載がありますので、それを参考に、
底面基板のSASIコネクタのピン配置を調べてみました。

底面信号の内容制御する側内蔵SASI外付け
1:茶D0双方向 226
2:赤D1双方向 427
3:橙GND- 5GND
4:黄D2双方向 628
5:緑D3双方向 829
6:青D4双方向1030
7:紫GND-11GND
8:灰D5双方向1231
9:白D6双方向1432
10:黒D7双方向1633
11:茶GND-17GND
12:赤HD LEDHDD34-
13:橙BUSYHDD3643
14:黄ACKX680003844
15:緑RESETX680004045
16:青MSGHDD4246
17:紫SELX680004447
18:灰C/DHDD4648
19:白REQHDD4849
20:黒I/OHDD5050

「底面」のところに書いた色は、本体内で内蔵HDDおよび外付けコネクタ基板に
つながっていたケーブルの色です。

外付け端子のGNDは、1〜25ピンすべてが共通です。

SASIの制御信号

パソコン入門期のころの管理人には、取扱説明書の技術資料は全く意味がわかりませんでしたが、
今なら、その意味も少し理解できるようになりました。

そこで、SASI端子の可能性について検討してみるため、制御信号の意味について整理してみます。

なお、参考文献としてこちらを参照しました。
・トランジスタ技術SPECIAL No.27 特集 ハードディスクとSCSI 活用技術のすべて(CQ出版社)
・Inside X68000(桑野雅彦、ソフトバンク)

15:RESET[X68000]

本体側が制御するリセット信号です。
通常はHレベルに保たれていて、本体起動時に記憶装置側をリセットするためLレベルにされます。

20:I/O[HDD]とデータバス

8本のデータバスをどちら側が操作するかを決める信号です。
X68000が操作するときはHレベル、HDDの場合はLレベルにします。

データバスの信号についても、負論理ですので、データビットが0ならHレベル、
1ならLレベルということになります。

17:SEL[X68000]と13:BUSY[HDD]

SELは、バスが使われていない状態から「さて、これから通信を」というときに、
本体側が通信相手を指定するために使う信号です。
各信号は普段はHレベルに保たれていて、
・通信したいHDDのIDに対応する番号のDBをLにする
・(I/O信号はHレベルのまま)
・X68000がSEL信号をLに落とす
という選択動作が行われます。

指定されたIDに対応するHDDがSASIバス上に存在するなら、
・HDDがBUSY信号をLに落とす
・X68000はSEL信号をHに戻す
という操作によって、機器の選択が完了します。
このとき、BUSY信号は選択されたHDDが責任を持って、一連の処理が完了するまでLに保っておきます。

18:C/D[HDD]

選択されたHDDは、その用件をX68000に問い合わせるために、この信号をLにします。
この信号は、用件の内容(6バイト)を受け取る間Lに保っておきます。

また、データ転送を終えた後、HDDからX68000にステータスバイトを送るときや、
メッセージフェイズにもこの信号をLにします。

19:REQ[HDD]と14:ACK[X68000]

データバス(D0〜D7)にデータを載せて転送するときに、X68000とHDDの息を合わせるための信号です。
「ハンドシェイク」とも言います。

先ほどの用件問い合わせを含め、X68000からHDDにデータを送るときには、
1. HDDが、REQ信号をLにする
2. X68000はそれを確認してから、D0-7にデータをセットし、さらにACKをLにする
3. HDDは、ACK=Lを確認したら、D0-7を参照し、REQをHにもどす
4. X68000は、それを受けてACKをHに戻す
という順番で信号を操作します。
ACK信号がLのときは、データバスの内容は変えてはいけません。

逆に、データ読み込みなど、HDDからX68000へ転送するときには、
0. HDDが、I/O信号をLレベルにする。 1. HDDは、(ACKがHを確認の上で)D0-7に送信データを乗せ、さらにREQをLにする
2. X68000は、REQ=Lを確認したら、D0-7を参照し、ACLをLにする
3. HDDは、ACK=Lを確認したら、REQをHに戻す 4. X68000は、それを受けてACKをHに戻す
X. HDDはすべての転送が完了したらI/O信号をHにもどす
となります。

16:MSG[HDD]

通信の最後に、HDDから正常終了を意味する「0」を送信するときにLにします。
実際の1バイト送信にはREQ/ACKを使ったハンドシェイクを使います。

1. HDDが、MSG, I/O, C/D をともにLにする。
2. HDDはさらに、D0-7に0を送出(負論理なので、全ビットH)し、それからREQをLにする。
3. X68000は、REQ=Lを見て、メッセージバイトを確認し、ACKをLにする
4. HDDは、ACK=Lを見てから、REQをHにもどす
5. X68000も、ACKをHにもどす
6. HDDは、MSG, I/O, C/D をHに戻す。
7. メッセージフェイズで処理終了なので、BUSY信号もHに戻す
というような扱いです。

12:HD LED

これは、SASIの信号ではなく、本体に付いている「HD BUSY」の赤色LEDの制御信号です。
Hレベルにすると点灯します。BUSY信号などは負論理ですが、この線は逆のようです。

外付けHDDコネクタには出ていない信号なので、このピンを「不明」扱いされている
情報サイトもありますが、実機でLEDの点灯を制御できることを確認しています。


なお、X68000の端子電圧をテスタで計測したところ、Hレベルは2.54V前後でした。
従って、5V系のマイコン等とつなぐときは要注意です。

SASI信号を観測する

ピン配置を確認したところで、実際、信号の挙動も確認してみたいと思ったのですが、
あいにく、ロジックアナライザのような高度な機器は持っておりませんでしたので、
非常にローテクですが、こんな基板を作ってX68000が制御する信号の観測を試みました。

これをつないでみたところ、確かに電源ON直後、RESETだけが消え(Lレベル)ていて、
そのあとRESETが点灯すると同時にSEL信号が消える様子を観測できました。

また、システムディスクを入れて起動確認していたら、1ビットだけ消灯したものが
LSBからMSBに向かって動く様子も観測することができました。
多分、電源が入っているハードディスクを点呼しているのだろうと推定されます。

しかし、この先の信号確認のためには、適切なタイミングでHDD側から応答しなければいけません。
それは人間技では無理です。
そこで、次回はワンチップマイコンを使って疑似的なSASI-HDDコントローラを作ってみたいと思います。


トップページへ

Copyright©2014 甘亀庵管理人

inserted by FC2 system