CPU実験室

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

ソースアセンブル

アプリケーションノートに書かれているサンプルコードをそのままコピペしてきました。単純なループバック(入力されたアナログ信号をA/DしたものをそのままD/Aに書き込んでアナログ信号を出力)なんですがコメント含めて約350行もあります。ただそのほとんどはDSPとコーデックのイニシャライズに費やされていてメインの処理はソース最後のこの部分だけです

talkthruで割込み待ちの永久ループをしていて、コーデックからシリアルのフレーム割込みがかかるとframe_intが実行されてその中でコントロールコマンド、アナログ入力、アナログ出力をしています。もしフィルタとか何らかの信号処理をしたい時はアナログ入力、アナログ出力の間に演算を挿入する、ということになります

さて、このソースを何も考えずアセンブルしてみると・・・・

   asm21 loopback.dsp -l

以下のようなステータスのビット状態をチェックしている ax0 and 2 という行でエラーになってしまいます

 

これをマニュアルで調べてみるとどうもANDなどロジック2項演算子の右項に即値が使えるのはADSP-2181で拡張された機能のようです(即値といっても離散的な値のみですが)

このボードのADSP-2101ではレジスタ渡ししかないのでいったんAY1に即値代入するコードにして以下で通りました  

ADSP-2181用のコードを受け入れるにはオプション入れて 

 asm21 loopback.dsp -2181 -l とするらしい)