Last Updated on 2014年8月8日 by kabekin
S1のSASI-HDD接続作戦のその後です。
SASIの仕様書を見るとSASIバスは#SEL-#BUSY / #REQ-#ACKのハンドシェークで全て行われているようなのでS1とHDD間でどうなっているのか信号をを確認してみました。
操作は、
でHDDドライバとHD0デバイスディスクリプタをロードさせた後Format /HD0です。
この操作で、OS-9は完全にフリーズ状態です。
マルチウィンドウにしていても、「COPY」キーで別ウィンドウに移動できるものの、どの別ウィンドウでもコマンドは全く受付ません。
完全に操作不能です^^;;;
そこでSASIの制御信号を見てみると、こんな感じになりました。
1 = #SEL信号
2 = #BUSY信号
3 = #REQ信号
4 = #ACK信号
仕様書通りのハンドシェークが行われていますが1回分の処理しか行われていないように見えます。
HDDドライバーのINIT部を見ると、コマンド$00を1回とコマンド$C2を2回行っているようです。
($C2の処理は同じ処理内容に見えますが何故2回なんだろう??? → 要調査)
トリガを1CHの#SEL信号でかけているので#REQと#ACKの細かい変化は取りこぼしていますが、ざっと3回のコマンドが実行されているように見えます。
途中バスも2回 解放されいるようなので、HDDドライバのINIT部は一通りの処理をしていると思われます。
そうするとINIT後の次のアクションが発生していないということだと思われるので、トリガからのストレージの時間を伸ばして再度挑戦。
ストレージ時間を100倍に伸ばして挑戦。 何も起こりません^^;;
やはり、INITの後にREADやWRITEが呼び出されていないのか、呼び出されても動作できないのか、その手の問題のようです。
なんとなく状況は把握できましたが、オシロでSASIの制御信号を見ても何もわからないということで、やはりソフト的に追いかけるしか方法はなさそうです。 当たり前か・・・^^;;;
ちなみにFORMATではなくDIRしてみたところ、何だか様子が違います
(1ms軸なのでバスが解放されていないように見えますが、その後解放されています)
FORMAT時のINITでは3回の操作があったのに、こちらは1回だけのようです。
INIT部は共通のような気がするのですがDIRとFORMATで動作が違うのはなぜだろう・・
(DIRもFORMATもOS-9再起動後に初めてHDDにアクセスしている状態です)
まぁ、どちらにしてもオシロで信号を見ているだけでは問題は解決しそうにありません・・・・・
さて、どうしよう(^^)
SASIの制御信号は
REQ
ACK
MSG
SEL
C/D Control/data
I/O input/output
BSY
ATN
RST
SASIのフェーズ遷移
バスフリーフェーズ: SASIバスを使用してない状態
セレクションフェーズ: どのターゲットと通信するか決定する
コマンドフェーズ: セクタリードライト、フォーマットなどのコマンドをターゲットへ送る
データフェーズ: データのやりとりを行う
ステータスフェーズ: エラーが発生したときイニシエータ側に知らせる
メッセージフェーズ: SASIではターゲットから00hという固定データが送られてくる
と遷移する
フェーズと信号線の関係
フェーズ データの方向 信号線
コマンドフェーズ イニシエータ→ターゲット C/D
データフェーズ イニシエータ⇔ターゲット I/O
ステータスフェーズ イニシエータ←ターゲット C/D,I/O
メッセージフェーズ イニシエータ⇔ターゲット MSG,C/D,I/O
>アイビットフォーエバー さま
コメントありがとうございます^^
オシロの波形とプログラムの流れを見る限りではセレクションフェーズ~メッセージフェーズの一連の状態遷移はOKのようにみえます。
但し、一つのコマンドで止まってしまい次のコマンドは送っていないように見えます。
SASI制御信号のC/DやI/Oは見ていないのでどのフェーズがどの波形かは確認できていません。
4現象オシロでも頑張っている方だと思いますが、こうなったら外部トリガで8入力させてみるかロジアナを持ってきて波形を確認するのも楽しそうです。
横河のDLシリーズは外部トリガが出ているので8入力はすぐできそうね
しかし、ロジアナは説明書がないので使い方を研究するところから始める必要がありそうです^^;;;