ブログの練習

ブログを書く練習です。
最近はレトロな計算機(電卓、マイコン、パソコンなど)
に関することを書き始めました。

EX-80 (その3) 修理の巻

2022-12-20 19:20:59 | マイコン
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だと思いこんでいたので、この下の抵抗の足に継げていたのでした。





















コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

EX-80 (その2) Mask ROM TMM331AP

2022-12-15 11:15:43 | マイコン
EX-80の修理を始める前に、ROMの中身を確認しておくことにしました。
Toshiba TMM331AP、2k x 8 bitのマスクROMです。マニュアルによるとピン配置はこちら。


EPROMの2716とはピン配置が違うので、アダプタ的なものを作る必要があるかなあと思いながら、Retro Chip Tester Professionalのデーターベースを調べたところ、untested ではありますが supportedでした。すごい!


Intel 2316Aとコンパチなようです。


ちなみに、コモドールの2316というものもあり、そちらは2716とコンパチ。ややこしいです。


ありました。


3本の/CEはデフォルトで全部Lになっています。これはこのままでOK。


ちなみに、CEのパターンを自動検出するモードもあります。


OKボタン長押しでダンプします。


SDメモリに保存されました。


中身も大丈夫そうでした。


Chip Tester Pro にも2316という項目があるけど、Aが付いてないし、これはコモドールのやつ用な気がする。TMM331で試すのは嫌だったので、試しに2716を読ませたら読めているようでした。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Toshiba EX-80

2022-12-14 15:08:45 | マイコン
EX-80を入手しました。以前にマニュアルを入手していて、それに回路図やモニタプログラムのソースが記載されているので、そのうちクローンを作りたいと思っていたところなのですが、本物を入手できました。
CPUは8080の東芝版、TMP9080AC。金脚CerDIPです。その横にはシステムコントローラー8228の東芝版、TDP8228P。クロックジェネレーターも東芝版のTDP8224P。


その右側のTMM331APはモニタープログラムのマスクROM(2k x 8bit)、TMM314Pは1k x 4bitのRAM、2つで1kByteです。拡張用のソケットもあるし、こうして見るとEX-80はTK-80よりワンボードマイコンとしての規模は大きかったんですね。TVインターフェースも付いてるし。


その横にはI/Oポート8255の東芝版、TMP9555Cです。これも金脚のCerDIP。豪華です。


上の方に行くと、8251の東芝版、TMP9551C。USARTの通信用LSIです。


その横にあるホワイトセラミックのICはT3477A。これは見たことのないICなので調べてみたところ、EX-80用のキャラクタジェネレーターでした。大文字のアルファベット、数字、記号、カタカナの文字データが入っています。


もう1つ、RFモジュレータの下にあるのも見なれないIC。TC5003P。これは同期信号発生用(TV Sync Generator)とのことです。


とりあえず電源を入れてみました。電源は+5V, +12V, -5Vの3電源です。マニュアルには+5Vは2.5A以上とありましたが、まあ大丈夫だろうと思って2Aの電源を使用。1.27Aなのでまだ余裕あり。


残念ながら、電源を入れてもLEDは点灯せず。


しかし画面には何か出ているような気配。


同期を調整したら文字が出てました。

SW2(BIT/CHAR切り替え)をBIT側にしたらちゃんとピクセルになりました。VRAMからTV出力あたりの回路は正常に動いていそうです。


サーマルカメラの画像。LED周辺の温度が低いので、どこかで断線してるとかかなあ。しかし作業部屋の気温低すぎだな。


回路図付きのマニュアルという超強力なアイテムがあり、部品もほとんど標準ロジックなので、電卓の修理とかに比べると簡単そうではあります。


とりあえず今日はここまで。



コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Tang Nano 9K にVectrexっぽいものを実装する

2022-12-11 17:56:35 | FPGA
先日のブログに書いたように、Tang Nano 9KにVectrexを実装している人がいたので真似してみました。
動作してる様子がこちら。最初は想定通りの動作をしてくれず、キーが効いたり効かなかったりという謎な状態で、結局キー入力の論理が思っていたのと逆だったのが原因だったのですが、それに気がつくまで結構苦労しました。(全く動かないというわけではなく、動いたり動かなかったりだったので。)


DE10-liteというFPGA評価ボード用のソースファイル一式がSourceForgeで公開されており、それをもとにしています。
トップモジュール、プロジェクトファイル、周辺部分の回路図をGitHubに置きました。(オリジナルのソースや、動作に必要なROMは含んでいません。)
GitHub - ryomuk/tangnano9k-vectrex: Tang Nano 9K top level module for vectrex

GitHub - ryomuk/tangnano9k-vectrex: Tang Nano 9K top level module for vectrex

Tang Nano 9K top level module for vectrex. Contribute to ryomuk/tangnano9k-vectrex development by creating an account on GitHub.

GitHub

 

出力がラスターなので、良く見るとVectrexっぽくなくてMAMEと変わらないような気もします。私はMAMEにはあまり興味を持てなかったのですが、MAMEに比べるとFPGA版は面白みを感じます。DAコンバータを付けてオシロに出力したりもしたいけど、積み基板になってるSCOPETREXを片づける方が先かなあ。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Tang Nano 9KにSBC8080を実装してみる

2022-12-08 11:13:27 | FPGA
Tang Nano 9KというFPGAボードが流行っているようなので買ってみました。秋月で税込2480円。Aliだともう少し安いようですが、ケチるほどの値段ではありません。機能を考えたら何でこんなに安いんだろうと不思議に思うぐらいの安さです。開発環境もタダだし。これ20年前なら何百万円とかのレベルなのではないだろうか。
実はFPGAを使うのは20年以上(ほぼ30年?)ぶりで、完全に浦島太郎状態です。ハードウェア記述言語は、修論でVerilogを、会社に入ってからVHDLを少しだけかじった程度なので完全に忘れています。というわけなので、リハビリから始めることにしました。
まずはインターフェース2022年12月号の付録を見ながら開発環境をインストール。書き込み用ツールは別途用意するとありましたが、私の環境ではそのツールはボードをうまく認識してくれず、メーカー(Gowin)が配布してるEDAのプログラマーで問題無く書き込めたのでそちらを使うことにしました。
Lチカも問題無く動いたので、次は何を試してみようかと調べてみたところ、4KBASICを実装している人がいたので真似してみることにしました。Twitterではスペースインベーダーや風船割りを実装している人やVectrexを実装している人もいるので、将来的にはそのぐらいの物を作ってみたいと思っていますが、とりあえず簡単そうなところから始めてみます。

参考にしたブログがこちら。

Tang-Nano-9KでBasicを動かす - Qiita

#目的 Tang-Nanoについて調べていたら、Tang-Nano-9Kと言うボード名が引っ掛かった。 Sipeedの新商品らしい。 ◆◆◆ これを買わなくてどうする ◆◆◆ という事で、ど...

Qiita

 

light8080というCPUコア

GitHub - jaruiz/light8080: Synthesizable i8080-compatible CPU core.

Synthesizable i8080-compatible CPU core. Contribute to jaruiz/light8080 development by creating an account on GitHub.

GitHub

 

を使って、tangnanoで動かしたということのようです。
github(tang-nano-9K/l80soc_4KBAS at master · hi631/tang-nano-9K)にコードを置いてくれていたのでダウンロードしてビルドしてみたところ、ちゃんとBASICが起動しました。
しかし、マンデルブロ集合のベンチマークを走らせてみたところうまく動きません。原因を調べたところ、どうやらIF文がfalseになったときに止まってしまうみたい。ここをスタート地点にしてデバッグするのはあまり気が進まなかったので、オリジナルのlight8080コアをスタート地点にしてインストールし直すことにしました。

上記light8080のgithubのREADME.mdによると、
- このプロジェクトは以前はOpenCores(https://opencores.org/projects/light8080)にあった。
- Verilog版はまだGitHubに移していない
- Altair 4K BasicのデモもGitHubに移していない
ということだったので、OpenCoresのアカウントを作成して古いプロジェクト一式をダウンロードしてみましたが、どうやら別の人がGitHubに置いているこれ
GitHub - ofenerci/light8080: Lightweight 8080 compatible coreと同じもののようでした。

Verilog版とVHDL版を見比べてみたところVHDL版の方がわかりやすかったのと、オリジナルがVHDLの方だということもあるので、VHDL版で始めることにしました。
ここから紆余曲折があってデバッグに3日ぐらいかかったのですが、出来上がったのがこれ。

GitHub - ryomuk/tangnano9k-sbc8080-light8080: SBC8080-like computer implemented on Tang Nano 9K using light8080 CPU core

SBC8080-like computer implemented on Tang Nano 9K using light8080 CPU core - GitHub - ryomuk/tangnano9k-sbc8080-light8080: SBC8080-like computer implemented on T...

GitHub

 

コア部分はオリジナルのコードをそのまま使用、mcuフォルダにあった周辺部分のコードを改変して、メモリ空間をSBC8080っぽくしています。主な修正内容はREADME.mdに書いた通り。
電脳伝説さんのsbc8080_datapack(下記サイトから入手)に入っているBASICやモニターのプログラムが動くことを確認しました。

SBC8080 CPUルーズキット

スイッチサイエンスさんのマーケットプレイスでSBC8080 CPUルーズキット(550円+税)の販売を開始しま…

電脳伝説

 

マンデルブロ集合のベンチマークは70秒。2MHzの8080実機だと10分ぐらいのようなので、8.5倍速いようです。ちなみにTang Nano 9Kのクロックは27MHzです。




コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする