CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

モニタ作成開始

ボードにSRAMHM62832HLPを実装しました。メモリ3個使いというのがいままでちょっとないパタンです

f:id:O3I:20210703113435j:plain

LEDチカチカループと8251を通した1文字入出力ルーチンができているのでこれを拡張していき簡易モニタを作っていこうとしていますが、コーディングをしてみるとワード幅24ビットだけではなく、かなりクセつよアーキテクチャなのがわかってきました。もっとも汎用CPUではなくDSPだからというのもありますが。

誰の役にも立ちませんがADSP21xxコーディングTipsです

 

(1)プログラムコード内に固定値の埋め込み

モニタを起動したときの最初のオープニングメッセージを出すのに手こずりました。これはアーキテクチャではなくアセンブラの仕様ではありますが、先ず埋め込む場所の宣言が必要になります

   .VAR/PM/STATIC msg[64];

次いで初期化データを定義

   .INIT msg:'*** ADSP2101 monitor Ver00.01 ***',0x0d00,0x0a00,0;

これで初めてプログラム中で文字列のあるアドレスをmsgで参照できます。ただしオブジェクトにはまだ展開されずリンカが初めて埋め込みを行います。DSPの使い方としてはフィルタの係数テーブルをデータメモリに持っていて容易に差し替えできた方がいいのでこれが合理的なのかもしれません。注意がいるのはデータワード16ビットはプログラムワードのD23-D8にアライメントされることで、ASCII文字列はD23-D8にシフトしてくれますが、その後ろの改行コードはあらかじめシフトしておかないと消えてなくなってしまいます。