パソコンをつくろう!(パソコン自作のすすめ)
組み立てキットを使って自作に挑戦!
[第404回]
●KL5C80A12の怪(3)
さて今回はいよいよ問題のND80Zモニタでのステップでの誤動作です。
誤動作というよりとにかくステップ動作に入れません。
[8][0][0][0][ADRSSET][RUN]で1ステップ進んで[8][0][0][2]の表示で止まるはずのところが[8][0][0][0]の表示のままで動きません。
何かをやってはいるようで一瞬データ表示が乱れて大抵は[0][0][0][0]になります。
このときキー入力は受け付けるのですが[RUN][CONT]を入力したときだけハングアップしてしまいます。
何かおかしなことが起きていることは確かなようです。
下が割込み信号をトリガにしたロジアナの波形です。

前回の波形と比べてみると確かに異常です。
アドレス8000の3EのところでINT信号が発生しています。
問題はそのあとです。
ここで本来は3E 00を実行したあとで割込み処理に入るはずなのですが[3E]を読んだ直後に割込み処理に入っているようです。
RD信号でそれがわかります。
[3E]の次の[00]のときアドレスは8001になっているのですがRD信号がありません。
ということはCPUは3Eを読んだだけで00は読んでいないことになります。
今これを書いていて気が付きました。
それっておかしいよ!!!
CPUは命令コード3E(LD A,XX)を解読していない????
割込み処理は必ず命令実行の最後のタイミングで行なわれます。
それは割込み信号が発生したときではありません。
CPUは割込み信号が入力されると今実行中の命令の処理が終るタイミングでそれを受け付けて割込み処理に入ります。
3E 00は1つのまとまった命令です。
その頭のところで割り込みに入るわけがない…。
ひょっとすると。
このもうひとつ前のユーザー命令が実行されたときに割込みが受け付けられていたら…。
いや。そんなはずはありません。
INT信号は3Eのところでアクティブになっていますし3E 00はユーザープログラムの最初の命令です。
その前にユーザー命令はありません。
しかし現象としてはなぜかそういうことが起きているらしくそのあとスタックには8002ではなくて8000がプッシュされています。
基本的にはTK80モニタと同じ動きをするプログラムなのですがスタックアドレスとかプログラムアドレスは異なっています。
冗長になりますからND80Zモニタプログラムリストは省きますがそこに問題はありません。
なぜなら同じプログラムはND80Z3.5でも使っているのですから。
それはともかくとして。
どうもINTが発生する前に何かがおきているのでは?
そこを疑ったのでいままでトリガをSTARTポイントにしていたところをCENTERにしてINTが発生する前の波形も見えるようにしました。

あれ?
うっかりしてトリカエッジを[↓]ではなくて[↑]にしてしまいました。
まあでもINT自体が短いので(プログラムの制御がRAMからROMになったところでINTはOFFになりますから)まあ結果オーライでありましょう。
今回はWRも読めるようにしました。
PROBE24はA14だったのですがここは外しても推測できると判断してそこにWRを入れました。
波形の中に解読した値を書き込むのは面倒なので余白に適当に書き込みました。
INT直前のED 4DはRETIです。
?????
やっぱりおかしいです。
このタイミングで割込み処理に入るというのはありえないです。
可能性として考えられるとするとCPU内部のプロセスで先のINT処理(実はステップ処理の最初のエントリなので本当の割込みではないのだが)そのエントリ時に何かの命令の第一コードが読み込まれていてCPUはそのオペランドが来るのを待っている段階だとすれば3Eをオペランドだと思ってそれを読み込んだタイミングで次の割込み許可を出してしまう…。
KL5C80A12は内部で命令の先読みをやっています(前回KL5C80A12マニュアル5−10)。
かなり複雑なことをやっています。
むむむ。
はっきり言って川崎製鉄の勇み足だったのでは。
今更それを言っても何の解決にもなりません。
ロジアナで見たことによって現象がはっきりしましたが結局のところ解決には結び付きませんでした。
そうなるとここは推理するしかありません。
問題を整理してみました。
1)ND80Z3.5では問題はおきていない。
2)KL5C80ボードでもTKモニタでは正常動作する。
3)ND80Zモニタでは異常が発生する。
2)と3)に解決の糸口があるようです。
TKモニタプログラムとND80Zモニタプログラムは基本的には同じだがどこかに気がついていない違いがあるはす。
こんなときにハードウェアならばパーツをひとつづつ交換して異常個所を絞り込んでいったりします。
ならば。
ソフトウェアでもそれをやるしかない。
かくて。かくて。
泥沼の中で苦闘する毎日となったのでありました。
おお。
神よ。
こっ、これは、試練でありますかあっ。
こおいうのはもおやめてほしいなあ。
ほんと。
疲れてしまいまする。
パソコンをつくろう![第404回]
2026.2.23upload
前へ
目次へ戻る
ホームページトップへ戻る