モニタを使ってRAM領域にプログラムをロードできるのでデバッグが一気に楽になりました。ROMを外してプログラムを書き込んでまた挿入、これが32bitなので毎回4度繰り返さないといけない環境と比べると雲泥の差です。
ただちょっと気になるのがプログラムはRAM領域で実行させるので本来はRAMの先頭番地0xF80000番地から配置されるコードにしたいのですがans32k.exeはアブソリュートアセンブラで直に0番地からのバイナリを生成してしまいます。単に疑似命令を見つけられてないだけかもしれませんが「ORG」のようなものでロケート指示が与えられません。
それでは実行できないのかというとそういうわけでなく、NS32032のコードは完全リロケータブルでジャンプやサブルーチンコール、変数などのラベル参照はすべて相対アドレッシングになっていて0番地から生成されたコードであってもどの番地にロードされても動いてしまいます。なので当面は問題なさそうです。
周辺デバイスとして接続したNS32202の動作確認をはじめました。
このICはパラレル入出力のために置いたのですが、実体は割込みコントローラの専用チップで8259の2個分相当の機能を持っています。つまり汎用入出力というのはほんのオマケ的な機能にすぎません。チップ内部には32本ものレジスタがあって、そのうちパラレル入出力にかかわるものは4本だけ。残りは割込み制御で使用されます。この32本のレジスタは5本のアドレス線で直にアクセスされこのボードでは128バイトの空間を占有しますがこういうI/Oってちょっと珍しいです。DMAコントローラとか音源チップとかもっと大量のレジスタを内包するI/Oはありますがふつうはポイントレジスタとデータレジスタの2アドレスしか占有しない実装が多いような気がします。
まずは必要なレジスタのみ初期化してポートのレベルをチカチカさせるプログラム
問題なく動作しました。