戻る
<< BACK  2020年9月  NEXT >>
 SCSI IOの隠し機能?  リウ  2020年9月9日(水) 0:45
SMITボード IFC-NNの動作についてです。
リサイクル掲示板よりもこちらよりの内容と思いますので独り言になっても構わず始めます。

PC-98の一般的なCバスSCSIボードのIOはCC0hとCC2hの2段階操作です。
このIOアクセスを行う限りSCSIボードとしか会話しないと思われてきました。

が、レジスタ30に関しては486機で本体のShadowRAMの取扱いに関連することが報告されました。本当に驚いていますが楽しんでもいます。

今日Xe10に挿したIFC-NNのMITモードで確認したところレジスタ15番へのアクセスを行うとIDEへのアクセスが発生しました。
しかもその後急激に操作が重くなります。

これはボードを抜いていたりモードをI/OやDMAにしていたり
IDEに工業用のCFを挿していたりすると発生しません。(おそらくHDDでも大丈夫だと思います。)

とても限定的なのでなかなかよくわかっていません。
1、IFC-NNのMITモードかSMITモード
2、IDEに高くないCFを挿しておき
3、IOアクセスCC0hでレジスタ15番を選択 CC2hで適当にアクセス
ということを行うと発生します。
12日追記(PnPモードだとCCC0で同じことを行えばそうなります。)

なおこの操作はAX=07C0のInt1Bを行うとBIOS内で必ず通る操作で、SCSI共通コマンドの一部です。
行うだけで0000:0483hのメモリに何かが書き込まれます。
IFC-NNのBIOS内部ではbit7が立つことを期待していますが重くなるとその書き込みが発生しません。
undoc2ではbit7については残念ながら言及されていません。

お試しいただける方は試してみてください。私の環境だけで起こることならボードまたは本体の故障とも考えられるのですが…。

12日追記
PnPモード時のCCC0hでも発生したので本体側の隠し機能である可能性は限りなく低くなりました。

 状況証拠だけ  まりも  2020年9月9日(水) 17:45
SCSIコマンド共通ファンクション(AL =C0)について詳しい資料も知識もないので、まず状況証拠固めから。
本体:PC-9821Xs、
SCSIボード:SC-98、およびLHA-201のバスマスタ転送モード、ドライブ1台以上接続
IDE:バッファローCFを接続、その他HDDはあってもなくても一緒
これらを満たしているときだけ、固定ディスク起動メニューの始めのほう(IPLwareがフックするより後)で止まってしまいます。

接続されているこれらのうちどれかがなくなれば問題は起こりません。本体もXs以外ではいまのところ問題なく、CFはバッファローの(CFリセットを起こさない)でなければこの問題は起こりません。容易にCFリセットをしてしまうCFのほうが、ここでは問題はなかったりします。HDDのみなら問題ありません。SCSIの転送方式をバスマスタ以外にすれば問題ありません。

NECの起動メニューだと真っ暗のままなのでFreeBSDのブートセレクタにすると、Copyrightが表示されただけで接続ドライブが出ない状態でとまります。SCSIボードのコネクタからケーブルを抜くとそこから再開します(ブートセレクタには抜いたはずのドライブが出現しますが)。

ということでIDEとSCSIのドライブ接続の検索にかかわる機能でずっと待っている何かがあるようです。どのSCSI BIOSにもある、DC00:0018から入るルーチンだと思います。

SMIT/MIT転送方式の仕組み自体が問題なのではないような気がします。バスマスタでも起こっているので。ところでSMITの裏ROMではこんなコードがあります
mov ax,30h
stosw
mov ax,48h
stosw
SCSIレジスタへのコマンド送り出しもMMIOに書き込みで実現しているのですかね?もちろん普通にout CC0,30、out CC2,48としても裏ROMには切り替わりますが。

 ずっと待っている何か  かかっくん  2020年9月10日(木) 11:51
> NECの起動メニューだと真っ暗のままなのでFreeBSDのブートセレクタにすると、Copyrightが表示されただけで接続ドライブが出ない状態でとまります。SCSIボードのコネクタからケーブルを抜くとそこから再開します(ブートセレクタには抜いたはずのドライブが出現しますが)。
> ということでIDEとSCSIのドライブ接続の検索にかかわる機能でずっと待っている何かがあるようです。どのSCSI BIOSにもある、DC00:0018から入るルーチンだと思います。

みいそのメニューでもケーブルを抜くと再開しますか?ダンマリの儘になりますか?

 これまでに経験したことがない難問  まりも  2020年9月10日(木) 16:12
ケーブルを抜くよりは外付けSCSI装置の電源を切るほうがまあ安全ですね(汗。ミイソメニューでも状況は同じです。FreeBSDのブートセレクタにしてみたのは、比較のため(最初はスタックを疑っていたので)と、どこで止まっているかの見当がつけやすいからです。ソースもあるしリビルドも不可能ではないですから。それにしてもハード的にIDE,CFとSCSIが関連するはずはありませんから不思議です。本体側DISK BIOSとSCSI側DISK BIOSの「相性」としか今のところ言えませんが、バスマスタやSMITではBIOSコードセット自体がすげ替えになりますので、相性の有無も変わって当然でしょう。

 バスマスタの場合  リウ  2020年9月10日(木) 16:12
機種Xe10 SCSIボードSC-98II モードAUTO
IDEには GreenHouseのCF 4GB IORDY対応 fixed
このCFはset featuresでPIOが選択できないことが判明しており
固定ディスク電源管理をなしにしないと起動時に固まる機種があるものです。
SCSI ID0 2GBのIDEなHDDをSCSI変換

起動順序は標準のままです。
この状態でfreebsd ブートセレクタがまったく同じ現象になりました。
SCSI側のケーブルを外すでなく電源を一度落とすと同じように進みました。
またその状態でもう一度電源を入れ直すとDOSが何事もなく使えてるように見えます。
やっていませんがおそらくSCSI優先にするとどうにもならないと思います。


そこでブートセレクタのSCSIチェックを潰してみるとIDE-CF内のFreeDOS(98)が起動途中のSCSI検索部で固まりました。
ブートセレクタを通さずフロッピーからFreeDOS(98)を立ち上げても同じことが起こりました。

そこで今度はフロッピーからMS-DOS2.11を立ち上げ
AX=03A0なInt1Bを呼びました。固まります。
トレースすると レジスタ18番のアクセスをした途端に固まっているようです。
AX=06A0(修正)でも当然固まります。
いずれにせよこのコールでも途中でAL=C0なInt1Bを呼び出しています。

ただいきなりレジスタ18番にアクセスしても固まりません。
Int1B内部でのアクセス手順をしたときだけ固まるようです。
そのスイッチをまた探します。

16:32 画像追加
Int1Bで固まってる方は電源入れ直しで進みますが
IOで固まってる場合は電源を入れ直しても固まったままです。

 追加事項  まりも  2020年9月10日(木) 18:31
■状況証拠追加
・この事象は本体をBX3などに変えても再現→おそらく第3世代mate/fellow共通(Ap3除く)
・SCSI I/FがIFC-NN 1.10の場合は、起動メニューより手前で固まっている
 (この点がリウさんのところのXe10と少し違う?)

■関連する新知見
 IFC-NNはDIPスイッチでPnPと非PnP(55)を選べますが、PnPモードではI/Oアドレスは 0CC0h〜ではなくCCC0h〜になります。実際PnPモードでCC0hを読んでもFFhが返ってきます。
と・こ・ろ・が
なんと SCSI_RAM 2.00はPnPモードでも作用して高速化します。ということは PnPモードではCC0/CC2hへの30h,48hの「出力だけ」は通っていて、本体側がそれに反応しているというわけです。これは本体がSCSIのI/O Writeを監視しているいることの証拠だと言えます。予想していたとはいえすごい仕組みです。
# DIP-SW2の状態読出しを省いて無条件に書き込むことは正解だったもよう
# 初代A-mateではSCSIスロット細工でSMIT SCSIボードも自動でRAM化すると思います

 裏処理?  リウ  2020年9月10日(木) 19:47
SMITのIFC-NNで
>起動メニューより手前で固まっている
固まらずにすぐに起動メニューのcopyrightが表示されていたのは再現できなくなりました。
ただし電源を入れて何かよそ見して放置すると再現できました。
30分くらい?待ってください。copyrightだけ表示されます。
SMITボードではSCSI機器の電源を入れ直しても進めません。

IOアクセス後の0000:0483hへの書き込み待ちだと思うのですがその処理部分がまったく想像つきません。

SC-98IIにも0000:0483hの書き込み待ちがありました。
こちらは電源を落とすだけでA1hが書き込まれ一旦進むようでした。

16日未明追記
https://drive.google.com/file/d/1hhohY07wKpeut6NiX3RoNtSwUI-48co2/view?usp=sharing
起きている現象をまとめてみました。
17日追記
産業用CFでなければ起きると思っていたのですが安物でも起きないということに気づきました。
報告いただいたBuffaloと手持ちのGreenHouseのものだけのようです。
私のものでわかっているのはこのCFだけ転送モードがMW-DMAとU-DMAしか選択できません。実際はPIOでももちろんアクセスできますがメディア側のモードがATAコマンドで切り替わりません。
ソフトで直せる気がしなくなったのでここで一旦締めさせてください。

ということでSCSIのIOアクセスの本体の見張りは30番レジスタだけ
他のレジスタで不具合を起こすのは原因不明で結論します。
もし何かわかればまた書きますが情報だしていただきありがとうございます。