目的のシステムに合わせたUniversal Monitorのビルド方法です。
はじめにビルドに必要な環境・ツールについてです。
- アセンブラ
さまざまなプロセッサに対応しているという理由でThe Macroassembler AS(http://john.ccac.rwth-aachen.de:8000/as/)を使用しています。あまり古いものですとMN1610に非対応だったり、前方参照の不具合報告もありますので最新版の使用をお勧めします。
- make
私は NetBSD 環境で標準の make を使っています。やっていることは「
asl -L unimon_xxxx.asm」「p2hex -F Intel unimon_xxxx.p unimon_xxxx.hex」だけなので絶対に必要というわけではありません。
それではビルドの手順です。
- ディレクトリ
プロセッサの種類ごとのディレクトリになっていますので、「cd 6502」のようにして目的のディレクトリをカレントにします。以後の説明は全てこのカレントディレクトリを基準にします。
- コンソールドライバ
コンソール入出力のルーチンは移植を考えて分離されており、dev/以下にいくつかサンプルを兼ねたドライバがあります。ここに無いデバイスをコンソールとして使用するにはドライバを新たに作成する必要があります。といっても初期化・1文字出力・1文字入力があれば動作しますので難しくはないと思います。
- コンフィギュレーション
メモリの配置やビットレートなどの設定はconfig.incに記述します。config/以下にサンプルがありますので、一つをconfig.incにコピーして編集します。 - アセンブル
makeでアセンブルが行われ、オブジェクトunimon_xxxx.hexが生成されます。同時にリスティングunimon_xxxx.lstもできますので必要に応じてアドレスなど確認できます。インテル形式ではなくモトローラ形式が必要な場合は
make unimon_xxxx.srです。 - ROM書き込み
あとはROMライタで書き込むなり、ROMエミュレータに転送するなりして実行するだけです。