CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

テーブルコール

 

uPD78C10CALT命令の動作を確認しておきます。引数はエントリー番号の0~31でいいだろうと「CALT 0」と記述してアセンブルすると引数エラーが発生してしまいます。使ったPROASMⅡは各命令をマクロ展開しますが定義部分をみるとこうなっていました。

f:id:O3I:20210821113353j:plain

どうも引数はコールテーブルの実アドレス80H,82H,84H・・・を要求するようです。ニーモニックの解説からするとエントリー番号の方がいいような気もするのでマクロ定義を直してしまおうかと思いましたが、コールテーブルに付けたラベル自体を引数にできるというメリットもあるかもしれません。

 

以下の例は80H:SWCHK(タクトスイッチを読取りAregにセット)、82H:LEDDRV(Areg内容をLED出力)を繰返し呼ぶもので相対ジャンプを使えば全3バイトで済みます

f:id:O3I:20210821112901j:plain

 

スイッチ押すと、LEDが点灯する。ただそれだけですが。

f:id:O3I:20210821113118j:plain

 

The macro assmbler ASuPD78C10に対応しているのに気付いたので同じソースをアセンブルしてみました。全く同じバイナリができるのでCALT命令の引数はテーブルのアドレスで良いようです。

f:id:O3I:20210821112919j:plain