モニタでロードできるユーザプログラムをCで書けるようにしてみます。AnalogDevicesが提供しているツールの中にGCCベースのADSP21xx用CコンパラG21.EXEが含まれてました。
一般的な使い方ではこの程度のコマンドラインでいいようです。
自分のPC上のDOSBOX内で実行するために以下のバッチとしています
ここでオプション-runhdrで指定されるruntime headerですが常にプログラムの先頭にリンクされてプログラム走行環境の初期化やユーザプログラム本体main()を呼び出すためのスタートアップルーチンになります。
もともと添付されている雛型はこのような内容です。
これはプログラム空間の0番地からロードされることを前提にしていて、0番地のコールドスタート、4番地以降に各種割込みベクタが並んでいますが、このプログラムは800番地からロードされるのでベクタテーブルは必要ありません(モニタ側に入れておくべきだった)
要らない部分を削って先頭アドレスを800番地にしたものが以下です
この部分だけ予めアセンブルして2101_hdr.objにしておきます
このときアセンブラのコマンドラインで-c(case sensitive:大文字小文字を区別する)指定しておかなければなりません。最初これを指定しなかったところ内部のライブラリやユーザプログラムmain()がリンクできないというエラーが出て嵌まりました。
・・そのときはユーザプログラムのメイン関数をMAIN()と大文字にしたらリンクできたのですが、対策方法と矛盾しているような?