Universal Monitor MN1610の拡張(その2)
カテゴリー:
HEXファイルの入出力ができるようになったら、次はブレークとレジスタの操作が欲しいところです。
MN1613は未定義のコードを実行しようとするとレベル0の内部割込みが発生するらしいのでこれを利用することにします。これが発生するとSTRとICをOSPW0(アドレスX'0000', X'0001')に保存し、NSPW0(アドレスX'0100', X'0101')から新しいSTRとICを読み込みます。OSPW, NPSWは外部割込みと共用ですが,内部割込みの場合はIISRというレジスタのビット15が立つので区別が可能です。
NSPW0にハンドラのアドレスを設定し、ハンドラではR0~R4, SPを保存しSTR, ICはOPSW0から取り出して表示させます。
これで試しにX'0800'番地にX'0000'を書き込んで実行させてみます。これは未定義命令なのでレジスタが表示されるかと思いきや何も起こりません。
この状態でステップ動作に切り替えてみたところ、X'0800', X'0801', X'0802'番地から順に命令フェッチを繰り返しているようです。