●アセンブラ版6809コアを使用したXM7のビルド方法
基本設定はC言語版6809コアを使用したXM7のビルド方法と同じです。
ここで紹介している方法は、Visual C++ 6.0 Professionalでの操作方法がベースになっています。他のバージョン、エディションのVisual C++ではこのとおりに行かないかもしれません。
アセンブラ版コアを利用するには、Visual C++のほかにアセンブラ(NASM)が必要になります。ここからWIN32版をダウンロードし、解凍したのち、パスの通っているところに実行ファイルを置いておいてください(特別なインストール作業はいりません)。
1.Visual C++ 6.0 Professionalを立ち上げる
いつもどおり立ち上げてください(^^;
2.Visual C++のプロジェクトを作成する
メニューからファイル(F) - 新規作成(N).. を選択
新規作成ダイアログボックス
プロジェクトタブでWin32 Applicationを選択
プロジェクト名(N)にXM7(任意名)と入力
位置(C)を指定(任意)。デフォルトでも可。
OKを押す
Win32
Application - ステップ1/1ダイアログボックス
空のプロジェクト(E) を選択
終了(F)を押す
新規プロジェクト情報ダイアログ
OKを押す
3.XM7のソースをプロジェクトディレクトリにコピーする
XM7のソースファイルのうち、必要なものをプロジェクトディレクトリ(新規作成時に指定した位置)にコピーする。
エクスプローラなどでVMフォルダと、WIN32をコピーする。
4.アセンブラ版CPUコアをアセンブルする
プロジェクトディレクトリ内のVMフォルダ内に移動し、以下のコマンドを発行する。エラーがなければ何も表示せずに次のプロンプトが表示される。
C:\> nasmw -f win32 -D_WIN32 cpu_x86.asm -l cpu_x86.lst
cpu_x86.objというファイルができていればOK。
5.プロジェクトにソースファイルを追加する
(1) プロジェクト(P)
- プロジェクトへ追加(A) - ファイル(F)... を選択し、VMフォルダとWIN32フォルダの中身を(.RCも含む)を選択し、OKを押す。
ファイルを1個選んで、CTRL+Aを押せば、全部のファイルを選択できる。
(2) cpu.cのみ、プロジェクトから削除する
cpu.cを選択し、DELETEキーを押す。cpu.cはmaincpu.cとsubcpu.cから#includeで読み込まれるので、個別コンパイルの必要がないためです(もっとも、アセンブラコア版をビルドするつもりなのでcpu.hは必要ないです)。
(3) cpu_x86.objを追加する
同様にして、VMフォルダ内にある、4.で作ったcpu_x86.objファイルをプロジェクトに追加します。
cpu_x86.objはデフォルトでは表示されないので、「ファイルの種類(T):」で、「オブジェクトファイル(obj)」を選んでください。
5.プロジェクトの設定を行う
プロジェクト(P) - 設定(S)...をメニューから選択
一般タグ
Microsoft Foundation Class(M)
で、共有DLLでMFCを使用を選択
C/C++タグ
カテゴリ(Y)でコード生成を選択し、使用するランタイムライブラリ(L)で、マルチスレッド(デバッグ)を選択。
Releaseビルド時はマルチスレッドを選択
カテゴリ(Y)で一般を選択し、インクルードファイルのプリプロセッサの定義(C)に、 ",CPU_ASM"を追加
カテゴリ(Y)でプリプロセッサを選択し、インクルードファイルのパス(N)に、 "VM, WIN32"と入力
リンクタブを選択
カテゴリ(Y)でインプットを選択し、オブジェクト/ライブラリモジュール(M):に
"ddraw.lib dinput.lib dsound.lib
dxguid.lib winmm.lib imm32.lib"
を追加。
6.ソースファイルを修正する
VMフォルダのcisc.hファイルの後ろのほうの、5行をコメントアウト
7.XM7をビルドする
ビルド(B) - ビルド(B)を選択し、ビルドを行う。
ワーニングがいくつか出るが、無視してかまわない(コンパイラのエラーチェックが厳しくなっため)。気になる人は、明示的キャストを挿入すれば解決できます。
これで無事、DebugフォルダにXM7.EXEができているはずです。あとは、いつもどおり実行したり、ステップ実行や、ブレークポイントを利用してXM7の動作を調べたり、自分のほしかったあの機能(Z80カードとかつけたい人いませんか?)を追加したり。。。お好きなようにいじり倒してください!(著作権はPI.さんにあることだけはお忘れなく)。