2026.3.5
前へ

ホームページトップへ戻る


KL5C80A12マイコンボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
KL5C80A12はZ80互換の高速高性能8ビットマイクロコントローラです。
残念なことに数年前に生産中止になってしまいました。
しかし当社ではKL5C80A12を使った組込みマイコンボードはまだ健在です。
そのKL5C80A12を使ったND80Z3.5上位互換マイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第88回]



●KL5C80A12のSTEP問題解決!(3)

前回はKL5C80A12ではINT信号はCPUではなくて内臓割込コントローラによって受け付けられると書きました。
そしてCPUはEI命令を実行したあとで割込コントローラから割込信号を受け取ります。
私はそこのところをしっかり理解していませんでした。
下は[第84回]でお見せしたロジアナ波形図です。
そこにINTのタイミングを描き加えました。



私は随分沢山の思い違いをしていました。
ロジアナ図の−2000nSのところにEI命令(コードFB)があります。
それに続いてRETI(ED 4D)があります。
私はここのところでステップ動作と本来の割込みの動作とをうっかり混同して考えてしまっていました。
はっきり確かめることをしないでEI RETIの次の命令の実行後に割込みが受け付けられると思い込んでしまっていました。
そうではなくてEIの次の命令(ここではRETI)の実行後に割り込みが受け付け可能になるというのが正解でした。


[出典]川崎製鉄鰍jL5C80A12ハードウェアマニュアル

上のロジアナ図に加えた(1)か(2)のタイミング(正しくはどちらなのかは不明ですが)でCPUの割込みが受け付け可能になります。
RETIの実行直後です。
そのすぐ後ろにINT信号があります(3)がこれを誤解してしまったために理解できなくて悩んでしまったのでした。
この(3)INTはCPUではなくて割込コントローラが受付けます。
実は(1)か(2)のタイミングで割込みが受付け可能になったときにそのとき以前に割込コントローラが受付けていたRAMのキー入力ルーチンへのJMP命令によって発生したINTがCPUに伝えられてそこで本当の意味での割込みが発生していたと考えられます。
おそらく(3)INTは次のEI RETIのときにCPUに割込みコントローラから渡されるINTになると思います。

うーん。
今は自分では全部分かっているのですがうまく説明するのがむつかしいです。
今回の問題は要約するとこうなります。
(1)Z80では割込みはEIによって受付け可能になっているときに命令実行の最後のクロックで認識される(それ以外のタイミングでは割込みは受付けられない)。
(2)しかしKL5C80A12ではINT信号は割込コントローラによって直ちに受付けられる(ただし重ねては受付けられない)。
それはCPUがEI、DIの実行によって割込みが受付け可能であるか否かということとは無関係である。
(3)割込コントローラはINTを受付けたらその状態を維持していてCPUがEIを実行したあと(正確にはその次の命令の実行後に)CPUに割込み信号として伝える。

つまり上のロジアナのタイミングでは[RUN][CONT]キーの入力より前にRAM上のキー入力ルーチンへのJMP命令によって発生したINT信号が割込コントローラによって受付けられていたためにRETIの実行直後に割り込みが発生してスタックにあったアドレス8000を表示したあとまたキー入力ルーチンに戻ってしまっていたのでした。
本来ならばアドレス8000の命令の実行後に割込み処理が行なわれるはずなのでそこでアドレスが1ステップ進むところなのですがそのもうひとつ前のRETI命令のところで割込み処理に入ってしまうためにアドレス表示が8000のままでステップ動作になりませんでした。
ここでさらに[RUN][CONT]を入力しても同じことが繰り返されるだけでステップ動作にはなりません(無限ループです)。
以前の回でここで[RUN][CONT]を入力するとハングアップすると書きましたがあらためて確認すると同じ状態が繰り返されるだけでハングアップにはなりませんでした。

この問題はINT信号が直ちに割込コントローラに受付けられてしまうことに起因しているのでこの回路このソフトとしては解決策はステップ処理ルーチンを一部分でもRAMに置かずに全てをROMに置くというのが正解となります。
原因がわからない段階でそのように対策したのは結果として正解でした。

なかなかうまく説明できないのですけれど。
とにかくやっと。
これにて一件落着です。

KL5C80A12マイコンボードの製作[第88回]
2026.3.5upload

前へ

ホームページトップへ戻る