SASIプロトコル

SASIバスの信号のやり取りについては、文献を参考にはしましたが、
実際に自分で確認してみないと納得して使えません。

管理人はロジアナを持っていませんが、自作の接続回路を作りましたので、
ファームウェアの設計・開発を兼ねて、実際にX68000との通信内容から調べた、
X68000におけるSASIバスのプロトコルの実際について報告したいと思います。

バスフリーフェイズ

このフェイズは、SASIバスを誰も使っていない状況になります。
「誰も」と言っても、今回はX68000とPICボードの2者しかいませんので、
そのことを踏まえて制御プログラムを書きます。

PICボードの方は、要求されるまでは一切動かない立場をとりますが、
ターゲットデバイスが自分だけということがわかっていますので、
BUSY, C/D, I/O, MSG, REQの信号はHレベルを出力しておいて問題ありません。

無論、X68000が制御するはずのSEL, ACK, RESETについては常時入力としておき、
このときは特にSEL信号がLになるのを待ちます。

セレクションフェイズ

バスフリーフェイズで、SEL信号がLになるのを確認したら、
その時すでに、データバスにはX68000がアクセスを希望するデバイスIDが出ています。

DB0〜7を1ビットずつ調べていき、自分のIDに対応するビットがLレベルだったら、
BUSY信号をLにして応答する、というのが基本です。しかし、せっかくの仮想HDDですし、
このボードしかSASIデバイスは繋がないのですから、どのIDであろうと応答することにします。

BUSY信号をLにした後は、X68000がSELをHに戻すのを待ちます

コマンドフェイズ

次に、X68000が何の用事で呼び出したかを知るために、6バイトのデータを受信します。
この時点では、BUSY信号のみがLレベルになっているはずです。
従って、バスの方向もX68→PICのままです。

ここで、PIC側がC/D信号をLにし、コマンドフェイズであることを宣言します。

X68000からPICへのデータ受信の際は、ACK信号でX68000の状況を確認しつつ、REQ信号制御で
データバス上に必要なデータを出してもらう操作になりますが、同じ信号制御をきっちり6回繰り返します。

バス上のデータは負論理ですので、処理するときはPICの命令comfで反転すると便利です。

データ転送フェイズ

このフェイズは、コマンドフェイズで受け取ったコマンドの内容によって、動作が異なります。
詳しくは、別のページで解説します。

実際にX68000と通信してみた印象だと、規定のバイト数ちょうどの通信を行わないと、
ハングアップ(のちにタイムアウト)するようです。
このことが解析し始めのころネックになりました。

ちなみにデータ転送を1バイトも行わないで、次のフェイズへ進むこともあります。

ステータスフェイズ

データ転送フェイズの挙動によりますが、ここでは、
・C/D信号はLとする
・I/O信号もLとし、SASIデータバスへはマイコンが出力する
という設定をします。

この時点では、BUSY=L、C/D=L、I/O=Lですが、MSG=Hなはずです。

ここで、ステータスバイトというものをPICからX68000へ送信すべきなのですが、
とりあえずエラーのことは考えずに、コマンドフェイズの2バイト目をH'E0'でANDを取ったものを送っておきます。

PICからX68000への送信のときのハンドシェイク手順は、図のようになります。

メッセージフェイズ

最後の仕上げに、MSG=Lにして、1バイトの0(データバスは8ビットともHレベル)を送信します。

C/DやI/Oは先のフェーズで既にLになっていますので、加えてMSGをLにするだけです。

ここまでで、コマンド1個の処理が終わります。データバスを入力に戻すほか、
BUSYを含めてすべての出力ビットをHレベルに戻し、バスフリーフェイズへ復帰します。

解析のときの注意

ここまでの手順については参考文献通りでしたので、PICのプログラミングもそれをあてにして
素直に書けました。期待するビットを監視し、信号線を順番に変えていくものですので、
条件分岐の少ないシンプルなプログラムになります。

注意すべき点は、データ転送フェイズのところにも書いた通り、所定のバイト数をきっちり送受信しないと
次へ進めないというところで、実機の命じるSASIコマンドが文献とは違っていたところでしょうか。

当然最初は、自分の作ったハードウェアやプログラムを疑いましたが、やはり、実際に見たデータが真実のようです。
これから同じようなトライをされる方への道しるべとなるよう、次項では実機で観測した、
SASIコマンドの調査結果をお伝えします。


トップページへ

Copyright©2014 甘亀庵管理人

inserted by FC2 system