test unit ready
inquiry
read capacity
mode sense (page=4)
read extended
read extended ←ここまで動いた
request sense
2008年05月03日
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を上げることによって、イニシエータに通知される(のだろう)。
なんとなくすっきり。
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を上げることによって、イニシエータに通知される(のだろう)。
なんとなくすっきり。
2008年04月13日
SCSI 2
> そこまで甘くはないらしい。
PCPLUS.SYSが割り込みを2回期待しているところで、1回しか
発生していない。1回目はSCSIコントローラがコマンド実行を
終了したことによる割り込み。
np2のソースに
というコメントがあって、割り込みが必要なのにまだ実装できて
いないということを理解。
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)
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)
2008年04月06日
r080406公開
r080406を公開しました。
主な変更点
・SASI 20Mを利用可能に
・全角キーとして漢字キーを使用
WindowsのALT(右)はこれまでVAの全角キーにマッピングされて
いましたが、GRPHキーに変更しています。
主な変更点
・SASI 20Mを利用可能に
・全角キーとして漢字キーを使用
WindowsのALT(右)はこれまでVAの全角キーにマッピングされて
いましたが、GRPHキーに変更しています。
SCSI 1
とりあえずSCSIインタフェースをVAのIOポートに接続。
割り込み番号がIRQ 9でSASIと衝突しているため、IRQ 6に変更。
DMAのチャンネルは・・・DMA転送は実装されていないっぽい。
PCPLUS.SYSは・・・DMAを使う場合はSETDMA.COMで明示的に
設定するので、ということは、DMAなしでも大丈夫そう。
これで動作する・・・?
SCHD.SYSの組み込み中に無限ループ。
そこまで甘くはないらしい。
割り込み番号がIRQ 9でSASIと衝突しているため、IRQ 6に変更。
DMAのチャンネルは・・・DMA転送は実装されていないっぽい。
PCPLUS.SYSは・・・DMAを使う場合はSETDMA.COMで明示的に
設定するので、ということは、DMAなしでも大丈夫そう。
これで動作する・・・?
SCHD.SYSの組み込み中に無限ループ。
そこまで甘くはないらしい。
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を作成した場合のシリンダ数、ヘッド数を変更。
2008年03月27日
SASI 3
kazさんからご報告をいただいた、20MのSASIドライブが利用できない件。
ポート82Hから、SASI インタフェースボードのディップスイッチの値が読み出せる。
bit7-6: VAのHDD BIOSでは参照していない
bit5-3: 2台目のタイプ
bit2-0: 1台目のタイプ
タイプとしてHDD BIOSが認識するのは、0,1,4,6。
これを読み取って、BIOSのワークエリア DSKTYPE (0077:0009/000A)に
値を設定している
同時に、DSKPRMADR(0077:000B/000C, Disk parameter tableへのポインタ)も
設定している。そのテーブルの値から判断すると、
# テクマニp173 40MBのヘッドの値は間違っている
np2のnew diskで20MBのHDIを作成した場合、310/8/33の設定で作成する。この設定はファイルに記録されており、np2はこの設定から
タイプを求めているが、310/8/33の場合にタイプ3と判断する。
HDD BIOSはこれを認識できないので、PC-Engineから20M SASIを参照できなかった。
615/4/33→タイプ3
310/8/33→タイプ4
に修正。
HDFORMでフォーマットできることは確認。

# 98側からでもちゃんと認識できるんだろうか・・・
ポート82Hから、SASI インタフェースボードのディップスイッチの値が読み出せる。
bit7-6: VAのHDD BIOSでは参照していない
bit5-3: 2台目のタイプ
bit2-0: 1台目のタイプ
タイプとしてHDD BIOSが認識するのは、0,1,4,6。
これを読み取って、BIOSのワークエリア DSKTYPE (0077:0009/000A)に
値を設定している
タイプ DSKTYPE テクマニの説明
-------+---------+----------
0 0 5MB
1 1 10MB
4 2 20MB
6 3 40MB
同時に、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
# テクマニp173 40MBのヘッドの値は間違っている
np2のnew diskで20MBのHDIを作成した場合、310/8/33の設定で作成する。この設定はファイルに記録されており、np2はこの設定から
タイプを求めているが、310/8/33の場合にタイプ3と判断する。
HDD BIOSはこれを認識できないので、PC-Engineから20M SASIを参照できなかった。
615/4/33→タイプ3
310/8/33→タイプ4
に修正。
HDFORMでフォーマットできることは確認。
# 98側からでもちゃんと認識できるんだろうか・・・
2008年01月14日
うぴょりっくソフト製同人ソフトの提供のお願い
うぴょりっくソフトさん製作の以下の88VA用同人ソフトをお
持ちの方がいらっしゃいましたら、ディスクイメージ(D88)の
形式でご提供いただけないでしょうか。
・さあくるの大冒険
・SMS (スーパーマイルドシャンプー)
うぴょりっくソフトさんからWebで公開する許可は頂いたの
ですが、残念なことに私は持っていません。
ご提供いただける場合には以下のあて先にメールしていただけ
ないでしょうか。
shinra*keb*biglobe*ne*jp
(最初の*は@に、それ以外は . に置き換えてください。)
ご協力をよろしくお願いいたします。
持ちの方がいらっしゃいましたら、ディスクイメージ(D88)の
形式でご提供いただけないでしょうか。
・さあくるの大冒険
・SMS (スーパーマイルドシャンプー)
うぴょりっくソフトさんからWebで公開する許可は頂いたの
ですが、残念なことに私は持っていません。
ご提供いただける場合には以下のあて先にメールしていただけ
ないでしょうか。
shinra*keb*biglobe*ne*jp
(最初の*は@に、それ以外は . に置き換えてください。)
ご協力をよろしくお願いいたします。
ROM読み込み状態の確認
2008年01月12日
「最終平気UPO」ディスクイメージ公開
制作者のうぴょりっくソフトさんのご厚意により、1992年に頒布された同人ソフト「最終平気UPO プレリリース」(うぴょりっくソフト)のディスクイメージを公開しました。縦スクロールシューティングゲームです。
http://www.pc88.gr.jp/forum/viewtopic.php?t=312
http://www.pc88.gr.jp/forum/viewtopic.php?t=312

