2008年04月13日

SCSI 2

> そこまで甘くはないらしい。

PCPLUS.SYSが割り込みを2回期待しているところで、1回しか
発生していない。1回目はSCSIコントローラがコマンド実行を
終了したことによる割り込み。

np2のソースに

ret = scsicmd_select(id);
if (ret & 0x80) {
scsiintr(0x11);
// で retはどーやって割り込みさせるの?

というコメントがあって、割り込みが必要なのにまだ実装できて
いないということを理解。

2回目はHDDからコマンド要求を受信することを契機に発生する割り
込み、らしい。SCSIはHDD側が処理を駆動する仕組みになっている?


np2としては、通常はBIOSレベルでエミュレートしていて、
ハード(SCSIコントローラ)のエミュレーションの処理もあるけれど、
普段は使われていないようだ。

ということで、いろいろ足りなさそうに見える。

CQ出版の書籍と、WD33C93のデータシートと、undocumented 9801とを
眺めてはみたものの、CPU-SCSIコントローラ 間のやりとり、
SCSIコントローラ-HDD間のやりとりのどちらもピンとこない。
返すべきステータスコードと割り込みの発生回数がわからない。
フェーズの遷移先もどう決まるのかわからない。

とりあえずPCPLUS.SYS+SCHD.SYSが動けばいいので、それらの
コードもみながら考えてみることに。

reset
select without atn
transfer (command: test unit ready)
transfer (status)
transfer (message)
negate
select without atn
transfer (command: inquiry)
transfer (data)
transfer (status)
transfer (message)
negate
select without atn ← ここまで動いた
transfer (command: read capacity)


posted by Shinra at 17:53| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。