2019-06-20 23:19 — asano
カテゴリー:
モニタとして必要最小限の機能はできたかなと思っていましたが、大事なものが抜けていました。
ユーザプログラムからモニタの内部ルーティンを呼び出す方法です。
大昔のトレーニングキットや初期のパソコンでは直接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は破壊されるレジスタを表しています。
添付ファイル:
関連項目:
コメントを追加