この大失敗をリカバリするには、I/Oをプログラム空間にマッピングすればいけるんでは、というのはすぐ思いつきます。
プログラム空間であればD7-D0に有効なデータを乗せることができます。プログラムメモリの最後の256バイトを潰してI/Oを割り付けました。
ここらへんの変更はGALのロジック修正のみで対応できます。ほんとにGALにしておいて良かったです。
これでハード的な対応はできたのですがDSPのアーキテクチャとしてこの領域をアクセスできるか、というのは別の話です。ここまでハードウェアができてしまってから今になってマニュアルを読み始めました。こういう資料がネットですぐ見つかるのは助かります。
インストラクションセットのMOVE命令についての説明でDM(データメモリ転送)とPM(プログラムメモリ転送)の記述を見つけました。
これをみるとDMは即値アドレッシングができるのに対しPMはできないといった制約がありますがレジスタ間接で読み書きはできるようです。なんとかギリセーフです。
アナデバDSPのアセンブラコードは今までにもちらっと見たことはありましたが、あらためて調べてみると「=」で代入するとか高級言語みたいなコードです。意外にとっつきやすいかもしれません。