VIP OSをROMの空きエリア$D000にリロケートし、VIP OSが動くところまでは確認しました。次はこのリロケートしたVIP OSのROMで動くようにCHIP-8のパッチを作ります。
前回はCHIP-8の起動時にレジスタの値を設定するために小さなプログラムをRAMの$6000に書き込む必要がありましたが、今回はこのプログラムはCHIP-8本体の空きエリアに収まるようにしてみました。
CHIP-8インタプリタの改造
- オリジナルのCHIP-8のバイナリに以下のパッチをあてます。
W0000 C0 01 F2 W000A D1 W010B D1 W012A D1 W019E 37 W01A1 3F W01F2 F8 0F BB FF 01 C0 00 04
- パッチを当てた状態でIntel Hexで保存しておきます。
>S0000 200
CHIP-8の起動方法
- RESETとRUN UでMCSMP20モニタを起動します。
- 先ほどパッチを当てたCHIP-8インタプリタをLコマンドで読み込みます。
- CHIP-8のアプリケーションプログラムを$0200から書き込みます。
- RESETを押し、RUN Pを押すとCHIP-8インタプリタが動きます。
パッチの内容
パッチの$0000を見るとわかりますが、レジスタの値を設定するために、CHIP-8の空き領域($01F2)に書き込んだプログラムにジャンプします。
$01F2に書き込んだプログラムは以下の通りです。
01F2-F8 0F START: LDI $0F ;$0F->R11.1
01F4-BB PHI 11
01F5-FF 01 SMI $01
01F7-C0 00 04 LBR $0004
ここは前回作成したツールと同じ動きで、レジスタに値をセットしたあとは$0004にジャンプしCHIP-8の初期化ルーチンに戻ります。
これでCOSMAC MBCでのCHIP-8の利用がかなり楽になりました。