x86用に対してデバイスの初期化、文字入出力の部分を変更するのみで移植は容易にできました。
SRAMの先頭、0x8000番地からロードされるアプリケーションとして動作させ、各機能が問題なく動作するのが確認できたので、今度はこれをROMの先頭、0x0000番地からにリロケートしたバイナリを作り、ROMに焼き付ければ電源ONとともに最初から高機能モニタが起動する・・・・はずだったのですがどうもうまくいきません。
画面上の動きをみるとsprintfで文字列を画面に出力するのがダメなようです。
リンクしているSPRINTFモジュールのソースの一部はこんな具合です
本来、リンカがTEXT領域(Read Only)、DATA領域(Read Only)、、BSS領域(Read/Write)を各モジュールから集めて指定したアドレスへアサインするわけですが、今使っているTMS99用のリンカL99はそのセクションのリロケーション機能が無いようです。
もともとがTI99-4Aのユーザプログラム開発用でありコード全体がR/W可能なRAMにロードされることを想定しているためなのでしょうが、Cで開発したコードをROM化するのは結構大変そうです