v1.1→v1.2の間にモニタープログラムの機構がかなり変化したので
以下に注意するべき点を列挙する。
試験がまだ不十分であると考えられる機能については
(EXPERIMENTAL)と表示してあるので、使用に当たっては注意すること。
モニタ内関数のヘッダファイルがh8bios.hからmon_func.hへと名称変更された。
printfやscanf,malloc,sin,cos等が使えるようになった。
出力はシリアルポートへ、入力はシリアルポートから行なわれる。
シリアル入出力周りの関数として、hinkey()とhflush()が追加されている。
hflush()はシリアルの送信が完了するまで待機する関数である。
プログラムがどこまで実行されたかを正確に知りたい時に役立つ。
hinkey()は入力待ちを行なわない一文字入力である。
BASICのINKEY$とほぼ同等のことをする。
詳しくはmon_func.hを参照されたし。
テトリスを作る為に実装された関数だという噂もあったりなかったり:)
シリアル通信が使えない状況でも、メモリー内にログを記録してリセット後に見ることが出来る。
デバッグに役立つ筈である。詳しくはsamples/log/main.cを参照。
24C1024等へのアクセスのサポートが追加された。詳しくはEEPROMサポートについてを参照。
詳しくは別ドキュメントを参照。
今までint_regist()によって登録されていない割り込みが発生した場合、暴走する可能性が高かったが、
v1.2ではhputstr()によって端末に警告を出力することを試みる。
大抵のケースで、シリアル端末への表示は成功しないと思われるので、
今後ログ機能の使用状況をみてそちらに変更される可能性がある。
v1.2からモニター内関数をリンクする方法が変更された。
v1.1ではROMの一部分に必要な関数(hputstr,wait_msecなど)のアドレスが配置され、
ユーザープログラムではそれを読み込んで関数を呼び出すという手法をとっていたが、
v1.2からはユーザープログラムをリンクする際に、
モニターのオブジェクトファイル(monitor.coff)を--just-symbolsオプションを付けて
リンクすることによって正常な関数呼び出しを作成する。
このことによって生じた変更点を列挙する。
ユーザープログラムからモニタ内関数を利用する際は、 モニターのオブジェクトファイル(monitor.coff)が必要である。
モニターを再コンパイルした場合は、 必ずユーザープログラムをコンパイルしなおさなければならない。
ユーザープログラムのサイズが減少する。
これは、ROM内に焼き込まれた標準ライブラリやlibgccが
ユーザープログラムからも使用されるようになることによる。
ユーザープログラムの実行速度が速くなる。
ROM内のルーチンは外部RAM内に転送された場合に比べて何倍か高速に動作する筈である。
予約語が増加している。
モニター内で定義されているシンボルと、
ユーザープログラム中で定義されているシンボルが衝突する場合、
ユーザープログラム中のシンボルが優先されるが、無用のトラブルを減らす為に、
これらのシンボルを使用するべきではない。
v1.2になるにあたって、幾つかの変数/関数はstatic宣言によって隠蔽された。
また、他のシンボルにもmon_やmonitor_といった接頭辞が付与されている。
これらの接頭辞がついたシンボルは使用しないこと。