MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第16回]
●誤動作の原因を突き止めました
前回からの続きです。
CALL命令でスタックに退避したリターン先アドレスがRET命令でスタックから取り出したときに化けてしまっていた問題について追求しました結果、原因を突き止めました。
当初はデータが化けてしまった原因についてはいろいろな可能性を考えたのですが、とにかくまずはRAMの周りを当たってみようということで、オシロスコープでRAMの周りを確認しましたところ、なんとMEMWR信号がRAMにきていないことがわかりました。
どうやらどこかで断線しているようです。
テスターでMEMWRのラインの導通を調べましたら確かに導通がありません。
そこまでわかればあとはやることは決っています。
MEMWRのラインの端から少しずつ区間を区切って導通を調べていきましたところ、IC152の下で断線しているらしいということがわかりました。
IC152を外してみましたら。
ここも悲惨な状態でありました。
6番端子の少し上のところに穴があいてしまっています。
ここはスルーホールがあるべきところです。
IC端子のランド穴のハンダを抜いて周りを清掃しました。
さきほどの穴のためにラインが完全に断線してしまっています。
このラインがMEMWRです。
断線部分をジャンパ配線しましたところ、7セグメントLEDがオール0表示になり、キー入力を受け付けるようになりました。
●ほかにも異常がみつかりました
実は前回説明しましたZB28KのBASICプログラムを使ったオートSTEPによるデバッグの過程で偶然別の異常を発見してしまいました。
MEMWRが断線していたためにおかしなアドレスに飛んでしまい、そこでFF(RST7)が実行されてしまいました。
前回のログリストではそのRST7が実行される途中でBREAKをかけてSTEP動作を打ち切ってしまいましたが、もう少し先までSTEPを進めてみるべきでした。
前回のログリストを見ますとリターン先アドレスをスタックに退避したところでBREAKしています。
ここまではRST7としてはまともな動作です。
ところが何を勘違いしたのか、このログリストを見て私は、RST7がおかしい、と思ってしまいました。
それであらためてRST7をSTEP動作で確かめてみましたところ、なんと本当におかしかったのです。
うう。
私はついに超能力を身に着けてしまったのか。
むむ。
こおいうことがおきるということになると、やっぱりあれだ。
お迎えが近いのかも。
そおいえば、本日はお盆でありますなあ。
なまんだぶ。なまんだぶ。なまんだぶ。
いやじゃあ。まだ行きとおはないっ。
悪霊退散っ。
はたしてIC233の下に断線箇所がみつかったのであります。
こうなるとほんと、神がかりでありますなあ。
きれいに清掃いたしました。
6番ピンと7番ピンの間の少し上のところに穴があいています。
ここはスルーホールがあるべきところです。
そこにあいた穴のためにそのラインが断線してしまっています。
断線しているところをジャンパ配線しましたところ、無事RST7が正しく動作するようになりました。
やっと。
めでたし、めでたし、になるところだったのでありますが。
あらためて電源を入れてあれこれ操作をしていますと、突然暴走してしまうではありませんか!
電源を入れて何もしないでそのままにしておいてもしばらくするとレジスタLEDがパラパラ点滅をはじめたり7セグメントの表示がおかしくなってしまったり、実に不安定です。
うむむ。
まだ、おかしいところがあるのかあ。
かくして暑い暑い夏の日々は、いやがうえにも暑く続くのでありました。
MYCPU80でCP/Mを![第16回]
2014.8.16upload
前へ
次へ
ホームページトップへ戻る