X68000のSASIコマンド

ここでは、X68000実機のSASIコマンドを観測した結果を示します。

参考文献の情報と少し違うのですが、実際に観測して得た情報で、
マイコンのプログラミングもこれに基づいて行いました。

憶測も含まれますので、この情報は鵜呑みにせず、良く調べてから使ってください。

コマンド一覧

コマンド転送フェーズ備考
H'01'なしヘッド退避
H'C2'10バイト(X68→PIC?)ディスクアクセスの初期に使われる
H'06'なしセクタ初期化
H'08'256×ブロック数(PIC→X68)ディスク読み込み
H'0A'256×ブロック数(X68→PIC)ディスク書き込み
H'0B'なし不明

Inside X68000およびトラ技スペシャルの資料を見た限りでは、リード、ライト、ヘッド退避動作以外は正体不明です。

呼び出し手順

フロッピーから起動したとき、応答したデバイスおよび論理ユニットごとに、

・C2 *0 00 00 00 00
・08 *0 00 04 01 00[read]
・C2 *0 00 00 00 00
・01 *0 00 00 00 00[退避]
の順に点呼されます。
'*'の部分はMSBから3ビットの論理ユニット番号により0か2になります。

起動時には改めて、次の内容で再び点呼されます。

・01 *0 00 00 00 00
・08 *0 00 04 01 00[read]
・C2 *0 00 00 00 00
・0B *0 AF 50 00 00

format.xで装置を選択すると、対象のデバイスについて、

・C2 *0 00 00 00 00
・08 *0 00 04 01 00[read]
・C2 *0 00 00 00 00
・01 *0 00 00 00 00[退避]
・08 *0 00 04 01 00[read]
の順にコマンドが呼び出されます。

また、「装置初期化」を選択すると、

・08 *0 00 00 21 00[read]
引き続き、初期化実行のため「Y」キーを押すと、
・C2 *0 00 00 00 00
・01 *0 00 00 00 00[退避]
・06 *0 00 00 01 00
・06 *0 00 21 01 00
・06 *0 00 42 01 00
・06 *0 00 63 01 00
・06 *0 00 84 01 00
・06 *0 00 A5 01 00
・06 *0 00 C6 01 00
・06 *0 00 E7 01 00
・06 *0 01 08 01 00
  :
・06 *2 79 0F 01 00
と、セクタ初期化コマンドが繰り返され、最後に、
・0A *0 00 00 04 00[write]
・0A *0 00 04 01 00[write]
のそれぞれごとにに、IPLプログラムらしきものが送られてきます。

上の例では初期化するサイズは40MBでしたが、10MBとすると、

・06 *0 9F 33 06 00
となっていました。

その直後に、

・08 *0 00 04 01 00[read]
が実行されましたが、現時点では先ほど最後に送られた「プログラムらしきもの」を返しませんので、
装置初期化に失敗したということがformat.xによって報告されます。

コマンド'C2'の謎

SASIコマンドの解析を試みて、最初に出てきたのが'C2'という、参考書にない謎のコマンドでした。

結局、マイコンのプログラムを試行錯誤してみて、とりあえず、10バイト受け取っておけば進む、
ということはわかりましたので、そのようにして、放ってあります。
そもそも、X68から受け取るべきなのか、あるいは何か返答するべきだったのかすら分かりません。

参考のために、返ってきた10バイトの内容を羅列しておきます。
01 01 00 03 02 98 80 00 00 00起動時の1回目,format.xで装置選択時
01 01 00 03 01 35 80 00 00 00起動時の2回目,format.xで装置選択時,開始時
01 01 00 03 01 54 80 00 00 00起動時の再点呼,電源OFF時
なお、これは全ID,全LUNに共通でした。


トップページへ

Copyright©2014 甘亀庵管理人

inserted by FC2 system