2012年01月02日

Visual C++ 2010 Expressへの移行

Visual C++ 6.0 から Visual C++ 2010 Expressへ移行。

直接 VC++ 2010で.dswを開こうとすると、.dspの変換で失敗する。このため、一旦VC++ 2008 で.dswを開いてプロジェクト形式を変換して.slnファイルを生成させ、その後にVC++ 2010で.slnを開く。

ビルドで生成されるexeのファイル名がプロジェクト名(np2)になっているため変更する。プロジェクトの以下の設定を変更する。
構成プロパティ>全般>ターゲット名

以下のとおり変更

vaeg (構成 Releaseの場合)
vaegd (構成 Debugの場合)

DirectX SDK については、最新のJune 2010 についてはddraw.libが廃止されており、VAEGのビルドには利用できない。ひとつ前のFebruary 2010を使う。プロジェクトの以下の設定でDirectX SDKの所在を指定する。

構成プロパティ>VC++ディレクトリ>ライブラリディレクトリ
構成プロパティ>VC++ディレクトリ>インクルードディレクトリ


nasmについては、最新の場合、nasmw.exeが無く、変わりにnasm.exeがある。プロジェクトの設定を変更してnasmw.exeを参照している部分をnasm.exeに変更すれば動くかもしれない。今回は、以前から使っている古いnasm(nasmw.exe)をそのまま利用。

win9x\np2.rc はビルドでエラーとなる。次のとおり変更。
次をコメントアウト

//#include "afxres.h"


その直後に追加
#include
#define IDC_STATIC -1


根拠については未確認。以下を参考にした。
http://ttssh2.sourceforge.jp/manual/ja/reference/develop.txt
【関連する記事】
posted by Shinra at 23:24| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2008年05月03日

SCSI 4

test unit ready
inquiry
read capacity
mode sense (page=4)
read extended
read extended ←ここまで動いた
request sense
posted by Shinra at 23:25| Comment(1) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

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

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)に
値を設定している


タイプ 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でフォーマットできることは確認。


sasi20m.PNG

# 98側からでもちゃんと認識できるんだろうか・・・

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

2008年01月14日

うぴょりっくソフト製同人ソフトの提供のお願い

うぴょりっくソフトさん製作の以下の88VA用同人ソフトをお
持ちの方がいらっしゃいましたら、ディスクイメージ(D88)の
形式でご提供いただけないでしょうか。

・さあくるの大冒険
・SMS (スーパーマイルドシャンプー)

うぴょりっくソフトさんからWebで公開する許可は頂いたの
ですが、残念なことに私は持っていません。

ご提供いただける場合には以下のあて先にメールしていただけ
ないでしょうか。

shinra*keb*biglobe*ne*jp

(最初の*は@に、それ以外は . に置き換えてください。)

ご協力をよろしくお願いいたします。
posted by Shinra at 21:20| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

ROM読み込み状態の確認

動作確認用に頻繁にROMを入れ替えていると、
今どれを使っているかわからなくなったりしたので、
About画面に、ROMがVA1かVA2/3かを表示。

合わせて、各.ROMファイルが読み込み済みかどうかも
表示。
about.png
posted by Shinra at 16:13| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

広告


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

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

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


×

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