2008年04月14日

SCSI 3

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)
transfer (data)
transfer (status)
transfer (message)
negate
select without atn ←ここまで動いた
transfer (command: mode sense)


> フェーズの遷移先もどう決まるのかわからない。

イニシエータ(PC)とターゲット(HDD)との接続が確立した後は、
ターゲットがフェーズも切断も決めるらしい。

selectコマンドは、接続が確立したらCPUに割り込み。
その後、ターゲットからコマンド転送要求があって、割り込み。

transfer infoコマンドは、送信が終わって、ターゲットがフェーズを
次に移して最初にターゲットからREQが来たときにCPUに割り込み。
ただし、message-in フェーズでのtransfer infoコマンドは、
送信が終わったらCPUに割り込み。

イニシエータとターゲット間の通信は、ターゲットがREQを、イニシエータがACKを制御して、REQ上げる->ACK上げる->REQ下げる->ACK下げるで1バイト転送する。よって、データ転送は、転送方向がどちらであれ、ターゲットが開始する。

フェーズは、その他4本の制御線(I/O, C/D, MSG, SEL)で決定され、SEL(接続要求)を除いた3本はターゲットが制御する。フェーズの遷移は、これら3本の値をターゲットが決めた上でREQを上げることによって、イニシエータに通知される(のだろう)。

なんとなくすっきり。
posted by Shinra at 22:38| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

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 | このブログの読者になる | 更新情報をチェックする

2008年04月06日

r080406公開

r080406を公開しました。

主な変更点
・SASI 20Mを利用可能に
・全角キーとして漢字キーを使用

WindowsのALT(右)はこれまでVAの全角キーにマッピングされて
いましたが、GRPHキーに変更しています。

posted by Shinra at 19:30| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

SCSI 1

とりあえずSCSIインタフェースをVAのIOポートに接続。
割り込み番号がIRQ 9でSASIと衝突しているため、IRQ 6に変更。
DMAのチャンネルは・・・DMA転送は実装されていないっぽい。

PCPLUS.SYSは・・・DMAを使う場合はSETDMA.COMで明示的に
設定するので、ということは、DMAなしでも大丈夫そう。

これで動作する・・・?
SCHD.SYSの組み込み中に無限ループ。

そこまで甘くはないらしい。
posted by Shinra at 19:27| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

SASI 4


> 同時に、DSKPRMADR(0077:000B/000C, Disk parameter tableへのポインタ)も
> 設定している。そのテーブルの値から判断すると、
>
>
>タイプ DSKTYPE テクマニの説明 シリンダ ヘッド セクタ
>-------+---------+-------------+--------+------+-------
>0 0 5MB 153 4 33
>1 1 10MB 310 4 33
>4 2 20MB 308 8 33
>6 3 40MB 615 8 33

よくよくテクマニを読んでみると、パラメータも2セットあって、
HDCに送っているのと、BIOSへの入力値チェックや論理セクタ番号
を求めるのに使っているのとで違うようだ。
上記は後者であって、タイプ4の場合にHDCに送っているシリンダ数、ヘッド数はそれぞれ615と4。

緑電子のSASIインタフェース内のROMも確認してみたが同様のテーブルを持っており、タイプ4の場合にシリンダ数、ヘッド数はそれぞれ615と4のように見える。(テーブルの存在まで確認し、どう使われるかまでは未確認。)

>615/4/33→タイプ3
>310/8/33→タイプ4
この修正は取り消し。

new diskで20MBのHDIを作成した場合のシリンダ数、ヘッド数を変更。

posted by Shinra at 19:19| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

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