パソコンをつくろう!(パソコン自作のすすめ)
組み立てキットを使って自作に挑戦!
[第402回]
●KL5C80A12の怪
ここ10日以上ずっとKL5C80A12のどうにも解せない振る舞いに悩まされてきました。
とりあえずは一応の対策はみつけてなんとかなったのですがまだ最終的に解決がついたわけではありません。
正直なところよくわからないのです。
なんたって限られた一時期だけ彗星のごとく登場してあっという間に消えてしまった感のあるCPUですから今更言ってもどうなるもんじゃありませんがハードのバグを疑いたくなってしまう異常動作です。
およそ2習慣ほど前のことてなのですがND80KL5Cボードをご購入いただいたお客様からメールで異常動作の指摘がありました。
ND80Zマシン語モニタモードでステップ動作ができません。
えっ。
そんなはずは。
完成品でお送りしたボードです。
そこは基本動作ですから出荷前に動作テスト済みです。
で。
手元のボードで確認してみたところ。
確かに動作しません。
いつも使っている簡単なプログラムです。
8000 3E00 LD A,00
8002 3C INC A
8003 C30280 JP $8002
ディップスイッチをステップ側にして[RUN]を押すと1ステップ進みアドレス表示が8002になります。
そのはずなのですがアドレスが8000のままハングアップ状態になります。
そんなはずは…。
確かテストしたはず。
で。
いろいろ確認していてやっとわかりました。
TK80モニタモードでは問題なく動作します。
いつも最初にTK80モニタモードでテストをしてそれからND80Zモニタモードに切り換えて同じテストをします。
ND80Z3.5の場合にはモードを切り換えるとLED表示がメチャクチャになるのでそこでリセットをしてからテストをすることになります。
モードを切り換えたあとはリセットをしないとモードの切り換えは認識されません(元のモードのままです)。
ところがND80KL5Cボードの場合には7セグメントLEDの表示にPICICを使っています。
モードを切り換えてもそのままではLED表示は変化しません。
それでついリセットしないまま(つまりTK80モニタモードのまま)テストをしていたようです。
このボードはもう何年も前から販売していますのに今まで問い合わせなどはいただいていなかったのでずっとこの不具合には気が付きませんでした。
大抵のユーザー様はおそらくマシン語モニタなんて面倒なものは飛ばしてしまってもっぱらUSB接続でBASICプログラムを使われているのかもしれません。
それにしても。
なんとも奇妙な話です。
KL5C80A12はZ80互換CPUがコアになっています。
それで実体としては基本的な回路はND80Z3.5と同じでプログラムもほとんど同じです。
ステップ機能などはずっと初期のボードから使っていますからもうしっかり枯れた機能のはずです。
それがなぜKL5C80A12では動かないのか。
しかもワークアドレスが異なるだけで殆ど同じプログラムなのにTK80モニタモードだと動くのです。
なんとも悩ましい問題です。
下はND80KL5Cボードのステップ回路です。

少しだけ複雑になっているのは同じ基板を使って16ビットCPUのAM188でも同じ動作をさせようと考えたからです。
下はND80Z3.5のステップ回路です。

どちらも動作原理は同じです。
各命令の先頭コードを実行するときM1_信号がCPUから出力されます。
たとえばJP命令C3 XX XXは3バイトですが最初のC3のところをCPUが読み込んで実行したときだけM1_がアクティブになります。
それを受けてその下がりエッジでINT_がアクティブになります。
CPUはINT_を命令の終わりのタイミングで認識して割込み処理を行ないます。
ND80KL5Cの74HC74のCL入力はND80Z3.5とは逆のロジックになっているように見えますがここはAM188と兼用の回路にしたために工夫がしてあります。
M1とCPUCLKのANDを取っているためにM1_がアクティブのときにCLKがLからHになるタイミングでQ_がLになります。
ほとんどND80Z3.5の回路と同じです。
このままの回路ではシステムプログラムの実行中も割込みが受け付けられてしまいます。
それを避けるためROMプログラム(システムプログラム)の実行中はINT_が出力されないようにしてあります。
そこまでが予備知識です。
TK80モニタモードでは問題なく働くのになぜかND80Zモニタモードでは働かないということからすると問題はソフトウェアにあると考えるのが普通です。
しかしここで悩ましいのはND80Z3.5ならばTK80モニタモードでもND80Zモニタモードでは問題なく動作するというところにあります。
どこかにコピーミスのようなバグが潜んでいるのか????
そして。
首までどっぷり泥沼につかってもがくことになったのでありまりました。
さんざ悩んでプログラムを何回も確認してみたのですがどこにもおかしなところはありません。
何もわからないまま毎日がただ過ぎていきます。
こうなったからには。
やっぱりあれしかありません。
ロジアナで確認してみるしかありませんでしょう。

久々の登場です。
カメレオンロジアナで解明を。
なんともすごい配線です。
さて。
この結果は。
パソコンをつくろう![第402回]
2026.2.20upload
前へ
目次へ戻る
ホームページトップへ戻る