現在地

[UniMon] 固定エントリポイント


カテゴリー:

モニタとして必要最小限の機能はできたかなと思っていましたが、大事なものが抜けていました。

ユーザプログラムからモニタの内部ルーティンを呼び出す方法です。

大昔のトレーニングキットや初期のパソコンでは直接ROM内のルーティンを呼び出していました。基本的に完成したモニタなのでアドレスは変わりません。バージョンアップ時もよく使われるルーティンのアドレスは動かないように配慮されています。

でもこのUniversal Monitorはまだ発展途上です。

それでアドレス固定のエントリポイントを用意して、本来のルーティンへジャンプするようにしてみました。

アドレス 名称 説明
ENTRY +0 E_CSTART モニタへ戻ります。モニタのワークエリアやスタックは初期化され、オープニングメッセージも表示されます。リターンしないのでジャンプ(JP, JMPなど)してください。
ENTRY +8 E_WSTART モニタへ戻ります。モニタのワークエリアやスタックは初期化されません。リターンしないのでジャンプ(JP, JMPなど)してください。
ENTRY +16 E_CONOUT コンソールに1文字出力します。
6800 6809 8080 Z8 Z80
IN 文字コード A A A R0 A
MOD - - - - R1 -
ENTRY +24 E_STROUT コンソールに文字列を出力します。文字列は0で終端します。
6800 6809 8080 Z8 Z80
IN アドレス X X HL RR8 HL
MOD A A A R0, R1 A
ENTRY +32 E_CONIN コンソールから1文字入力します。
6800 6809 8080 Z8 Z80
OUT 文字コード A A A R0 A
ENTRY +40 E_CONOUT コンソールのステータスを確認します。ステータスが0のときは入力がない(E_CONINを呼ぶと待たされる)ことを、0以外のときは入力があることを示します。
6800 6809 8080 Z8 Z80
OUT ステータス A A A R0 A

ここでENTRYはプロセッサ毎に決まるエントリポイントの位置でconfig.incで定義されています。これを変更するとユーザプログラムの修正が必要になりますので注意してください。

IN, OUTは入出力パラメータ、MODは破壊されるレジスタを表しています。

添付ファイル: 

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。