EX-80を修理してみました。結構紆余曲折もあり、自分でも何をやったか忘れてしまいそうなので備忘録として記録を残しておきます。
まずは「LEDが点灯しない」という、症状がわかりやすいところから始めました。
回路図によると、コモン側は74155のパルスをバッファ経由でトランジスタ2SC1959に与えてドライブ、セグメント側は9368でドライブしています。セグメント側の信号は確認できたので、コモン側にプローブを継げて測定したところ、74155の信号は確認できましたが、トランジスタが動いていない様子。
試しにエミッタとコレクタを短絡させたら点灯しました。
トランジスタが4つとも壊れているというのは考えにくいのですが、半田付け時に全部壊してしまったということもありえなくはないです。とりあえず1つ外して調べてみましたが、正常っぽいです。ピンの順番はECB。
と、ここで違和感を感じて基板をよく見たところ、あれ?逆じゃない?
マニュアルで確認。
シルクがこんな感じなので、前後を間違って逆につけてしまうのもわからないでもないですが、ちゃんと確認しようよ。
逆にして載せたら点灯。
全部点きました。
しかしキー入力を受け付けません。リセットも効かない。LEDの表示がFFFF FFEFとかになります。キー入力のスキャン信号を見てみることにしました。
出てないなあ。
拡張ROMのソケットからアドレスバスを見てみます。
一応それっぽい波形が出ていて何かは動いているっぽい。(A0~A3)
次にリセット時の挙動を見てみます。
リセット時のアドレスバスが毎回違う。というか、リセットされていない?(A0~A2, RESET)
TMP9080をSBC8080に載せてみたらちゃんと動いたので、CPUは生きているようです。良かった。
CPU周辺を眺めていたところ、J1, J2のジャンパー線(どちらも未接続)が気になりました。
マニュアルで調べたら、接続しろって書いてありますけど!どういうこと?
継げたらリセット時に0000 0001 と表示されるようになりました。0000 0000 じゃないのが気になりますが、とりあえず進捗あり。
VRAMクリアのルーチンも動いているようで、TV画面もすっきりしたものが表示されるようになりました。
この段階での動作の様子がこれ。反応のあるキーはあるんだけどまともには動いていません。
初心に返って、マニュアルの「トラブル対策」を読んで確認します。1)→OK。2)→トランジスタが逆でした。3)→OK。4)→OK。5)→OK。6)→あやしい。いもハンダ多数あり。
半田付けはかなり汚い。僕が小学生の頃に組み立てたMK-80(TK-80互換機)もこんな感じだったな。気になるところを何箇所か半田付けし直してみました。
修正前の写真を撮り忘れたんだけど、PA1の信号線がLEDのトランジスタのベースにくっついてる箇所があって、これを修正したら1, 9, RET (PA1の信号線につながっているキー)を押したときにLEDが異常な点灯消灯をすることが無くなりました。(これって僕がトランジスタの向き直したときにやっちゃったのかなあ。)
しかしまだリセット時の挙動が不安定で、キー入力も効きません。ADALM2000をつなげてアドレスバスの動きを追ってみることにしました。
ADALM2000用のソフトScopyはかなり使いにくくてバグっぽい現象(parallelデコーダで9bit以上の数値が表示できない)もあり、やりたいことはほとんど出来ず。それっぽいアドレスでループしていることがわかった程度。
このあとマスクROMのbit化けを疑って、ダンプリストとマニュアルのリストを比べてみましたが化けているところはありませんでした。(これはかなりの徒労でした。。。)
アドレスバスとデータバスをトレースできるツールをTang NanoかTeensy 4.1あたりで作ろうかと思って、秋月に74LVC541(5V→3.3Vバッファ)を注文。届くまでやることが無いので、試しに8224, 9080, 8228を手持ちのNEC製のICに取り替えて試したところ、
動いちゃいました。えっ!?
動作の様子。
切り分けをしたら、どうやらクロックジェネレーターTDP8224が原因だった模様。
TV画面はこんな感じです。アドレスとデータがちゃんと表示されてるっぽい。
縞々が出ていますが、これはかなり明確な症状なので、調べればすぐに原因がわかりそう。
こちらはステップ動作時に表示される画面。メモリ値、レジスタ値、ニーモニックまで表示されているみたいです。モニターROMが1KBもあり、TK-80の384byteのモニターに比べるとかなり高機能っぽい。こういう情報が見れるのならステップ動作でデバッグもやり易そう。そういえばTK-80でステップ動作なんてさせたことは無かったなあ。
その後の調べでTDP8224をSBC8080に載せたらちゃんと動くので、何らかのマージンの問題とかの可能性あり。いずれにしてもTDP8224が完全に壊れているというわけではないのは良かったです。
今回は回路図とマニュアルに助けられました。マニュアルが無かったらJ1, J2のジャンパーのあたりで止まってたかも。一方、中途半端に動いていたので遠回りしてしまった感あり。全く動かないという状態ならアドレスバスとか調べないで最初にクロック回りを疑ってたかも。
次は縞々の修理かな。
【2022/12/20 17:00 追記】
シマシマ問題の調査をしようと思ってキャラジェネに下駄はかせたら直ってしまった。どういうこと? 単純な接触不良(ICとソケット間)とかだったってこと? でもカタカナの横には出てなかったからなあ。
以前の画面。カタカナの横には出てなかった。
【2022/12/20 19:200 追記】
TwitterでEX-80のリセット時の画面は白地に黒のはずとのリプライをいただいたので確認したところ、GNDの位置を間違えていたことが発覚。壊れなくて良かったです。これにより、同期がかなりシビアだった現象も解消。ちゃんと同期がとれるようになりました。
ここの抵抗の左側が全部GNDだと思いこんでいたので、この下の抵抗の足に継げていたのでした。
まずは「LEDが点灯しない」という、症状がわかりやすいところから始めました。
回路図によると、コモン側は74155のパルスをバッファ経由でトランジスタ2SC1959に与えてドライブ、セグメント側は9368でドライブしています。セグメント側の信号は確認できたので、コモン側にプローブを継げて測定したところ、74155の信号は確認できましたが、トランジスタが動いていない様子。
試しにエミッタとコレクタを短絡させたら点灯しました。
トランジスタが4つとも壊れているというのは考えにくいのですが、半田付け時に全部壊してしまったということもありえなくはないです。とりあえず1つ外して調べてみましたが、正常っぽいです。ピンの順番はECB。
と、ここで違和感を感じて基板をよく見たところ、あれ?逆じゃない?
マニュアルで確認。
シルクがこんな感じなので、前後を間違って逆につけてしまうのもわからないでもないですが、ちゃんと確認しようよ。
逆にして載せたら点灯。
全部点きました。
しかしキー入力を受け付けません。リセットも効かない。LEDの表示がFFFF FFEFとかになります。キー入力のスキャン信号を見てみることにしました。
出てないなあ。
拡張ROMのソケットからアドレスバスを見てみます。
一応それっぽい波形が出ていて何かは動いているっぽい。(A0~A3)
次にリセット時の挙動を見てみます。
リセット時のアドレスバスが毎回違う。というか、リセットされていない?(A0~A2, RESET)
TMP9080をSBC8080に載せてみたらちゃんと動いたので、CPUは生きているようです。良かった。
CPU周辺を眺めていたところ、J1, J2のジャンパー線(どちらも未接続)が気になりました。
マニュアルで調べたら、接続しろって書いてありますけど!どういうこと?
継げたらリセット時に0000 0001 と表示されるようになりました。0000 0000 じゃないのが気になりますが、とりあえず進捗あり。
VRAMクリアのルーチンも動いているようで、TV画面もすっきりしたものが表示されるようになりました。
この段階での動作の様子がこれ。反応のあるキーはあるんだけどまともには動いていません。
初心に返って、マニュアルの「トラブル対策」を読んで確認します。1)→OK。2)→トランジスタが逆でした。3)→OK。4)→OK。5)→OK。6)→あやしい。いもハンダ多数あり。
半田付けはかなり汚い。僕が小学生の頃に組み立てたMK-80(TK-80互換機)もこんな感じだったな。気になるところを何箇所か半田付けし直してみました。
修正前の写真を撮り忘れたんだけど、PA1の信号線がLEDのトランジスタのベースにくっついてる箇所があって、これを修正したら1, 9, RET (PA1の信号線につながっているキー)を押したときにLEDが異常な点灯消灯をすることが無くなりました。(これって僕がトランジスタの向き直したときにやっちゃったのかなあ。)
しかしまだリセット時の挙動が不安定で、キー入力も効きません。ADALM2000をつなげてアドレスバスの動きを追ってみることにしました。
ADALM2000用のソフトScopyはかなり使いにくくてバグっぽい現象(parallelデコーダで9bit以上の数値が表示できない)もあり、やりたいことはほとんど出来ず。それっぽいアドレスでループしていることがわかった程度。
このあとマスクROMのbit化けを疑って、ダンプリストとマニュアルのリストを比べてみましたが化けているところはありませんでした。(これはかなりの徒労でした。。。)
アドレスバスとデータバスをトレースできるツールをTang NanoかTeensy 4.1あたりで作ろうかと思って、秋月に74LVC541(5V→3.3Vバッファ)を注文。届くまでやることが無いので、試しに8224, 9080, 8228を手持ちのNEC製のICに取り替えて試したところ、
動いちゃいました。えっ!?
動作の様子。
切り分けをしたら、どうやらクロックジェネレーターTDP8224が原因だった模様。
TV画面はこんな感じです。アドレスとデータがちゃんと表示されてるっぽい。
縞々が出ていますが、これはかなり明確な症状なので、調べればすぐに原因がわかりそう。
こちらはステップ動作時に表示される画面。メモリ値、レジスタ値、ニーモニックまで表示されているみたいです。モニターROMが1KBもあり、TK-80の384byteのモニターに比べるとかなり高機能っぽい。こういう情報が見れるのならステップ動作でデバッグもやり易そう。そういえばTK-80でステップ動作なんてさせたことは無かったなあ。
その後の調べでTDP8224をSBC8080に載せたらちゃんと動くので、何らかのマージンの問題とかの可能性あり。いずれにしてもTDP8224が完全に壊れているというわけではないのは良かったです。
今回は回路図とマニュアルに助けられました。マニュアルが無かったらJ1, J2のジャンパーのあたりで止まってたかも。一方、中途半端に動いていたので遠回りしてしまった感あり。全く動かないという状態ならアドレスバスとか調べないで最初にクロック回りを疑ってたかも。
次は縞々の修理かな。
【2022/12/20 17:00 追記】
シマシマ問題の調査をしようと思ってキャラジェネに下駄はかせたら直ってしまった。どういうこと? 単純な接触不良(ICとソケット間)とかだったってこと? でもカタカナの横には出てなかったからなあ。
以前の画面。カタカナの横には出てなかった。
【2022/12/20 19:200 追記】
TwitterでEX-80のリセット時の画面は白地に黒のはずとのリプライをいただいたので確認したところ、GNDの位置を間違えていたことが発覚。壊れなくて良かったです。これにより、同期がかなりシビアだった現象も解消。ちゃんと同期がとれるようになりました。
ここの抵抗の左側が全部GNDだと思いこんでいたので、この下の抵抗の足に継げていたのでした。