カテゴリー
モニタとして必要最小限の機能はできたかなと思っていましたが、大事なものが抜けていました。
ユーザプログラムからモニタの内部ルーティンを呼び出す方法です。
大昔のトレーニングキットや初期のパソコンでは直接ROM内のルーティンを呼び出していました。基本的に完成したモニタなのでアドレスは変わりません。バージョンアップ時もよく使われるルーティンのアドレスは動かないように配慮されています。
でもこのUniversal Monitorはまだ発展途上です。
それでアドレス固定のエントリポイントを用意して、本来のルーティンへジャンプするようにしてみました。
アドレス | 名称 | 説明 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ENTRY +0 | E_CSTART | モニタへ戻ります。モニタのワークエリアやスタックは初期化され、オープニングメッセージも表示されます。リターンしないのでジャンプ(JP, JMPなど)してください。 | ||||||||||||||||||||
ENTRY +8 | E_WSTART | モニタへ戻ります。モニタのワークエリアやスタックは初期化されません。リターンしないのでジャンプ(JP, JMPなど)してください。 | ||||||||||||||||||||
ENTRY +16 | E_CONOUT | コンソールに1文字出力します。
|
||||||||||||||||||||
ENTRY +24 | E_STROUT | コンソールに文字列を出力します。文字列は0で終端します。
|
||||||||||||||||||||
ENTRY +32 | E_CONIN | コンソールから1文字入力します。
|
||||||||||||||||||||
ENTRY +40 | E_CONST | コンソールのステータスを確認します。ステータスが0のときは入力がない(E_CONINを呼ぶと待たされる)ことを、0以外のときは入力があることを示します。
|
ここでENTRYはプロセッサ毎に決まるエントリポイントの位置でconfig.incで定義されています。これを変更するとユーザプログラムの修正が必要になりますので注意してください。
IN, OUTは入出力パラメータ、MODは破壊されるレジスタを表しています。
添付ファイル
コメントを追加