冥界のLSI(9) TMPZ84C015BF、Z80複合チップ、1993年7月時点国内最速

Joseph Halfmoon

ボードの販売が続いており、そして目の前で動作しているデバイスを「冥界」のお仲間にリストしてしまうのはちょっと心苦しいのであります。ま、メーカサイトで型番検索してもヒットせず、入手したボードも「保守部品」扱いということです。許してね。今回は年寄りには懐かしいZ80系チップであります。

個人的には8080のアセンブラで作ったオブジェクトを走らせる実機が欲しかったのです。ノスタルジアに浸るため?世の中にあるソフトウエア・エミュレータには立派なものが多くあり、わざわざ実機でなくてもとも思うのです。が、ノスタルジーにはやはり現物。

伝説?のデバイス、8080(8080A)ですけれど実はあまり使いでが良いとは思われません。なんといっても3電源のチップで大変です。8080の後、NMOS(今のようにCMOSではありませんよ)の設計技術が進み、オンチップのバックバイアスジェネレータなどが使われるようになり、5V単一電源(これまた今は昔)の時代になりました。単一電源は圧倒的に使いやすかったのではないでしょうか。8080は、ソフトウエアコンパチの後継機である8085かZ80に急速に置き換わったのではないかと思います。

本家インテルの8085は、「後継」ということになっていた機種が16ビットの8086/8088ということもあって8085自体の派生製品への展開はなかった記憶です。端境期にインテルは8085から8086への「アセンブラコンバータ」などというものも売っていた記憶があります。それに対してZ80は、8ビット8080の資産の継承先として各所にはびこり、かつまた、各社が正式あるいは御勝手なセカンドソースを発売しています(当時は半導体の権利関係が整備される途上にあり、正式ライセンスを受けることもあれば、ライセンス無の互換品もまだ多かった。)日本の半導体会社のかなりがZ80互換機やっていたんじゃないかしら。

また、Z80の後継レースでは、Zilogの16ビット機Z8000がヒットせず、また命令セット的にもZ80とは断絶がありました。そのため、Z80を拡張したアーキテクチャが各所から複数現れ、百花繚乱状態。また、各種の周辺を集積したチップも多数登場という感じだったと思います。未だに後継チップのいくつかは現役で頑張っているみたいですが、流石に主流ではなくなっていると思います。そういえばZ80、そろそろ50周年とかじゃなかったっけな?

そんな中、今頃になって入手いたしましたのは、東芝Z84C015BF-12というZ80「複合チップ」を搭載したAKI-80というボードです。Z84C015は多分まだSoCという言葉が一般的でなかった時代のLSI。

秋月電子通商 AKI-80 ゴールドボード

東芝Z84C015BF-12は、非常にすなおにZ80とその周辺チップをCMOS化して集積した「だけ」のチップに見えます。単品Z80知っていたら使いやすい感じ。個人的には後で8080風に使いたかったので周辺回路は82xxシリーズの方が良かったのだけれど、ZilogのZ80シリーズ周辺回路で固めてます。これはこれで正統派な集積。しかし、寄る年波には勝てないようです。秋月電子通商殿から1か所引用させていただきます。

※周辺部品の入手性につきまして
入手困難な部品が含まれます(S-8054)、互換品含めご案内することが難しい状況となっております。既に稼働しているシステムの保守部品としてお使いください。

新規設計などに使ってくれるな、ということであります。ノスタルジーに浸るためという購入理由は許してもらえるのでしょうか?購入したボードはこんな感じ。既に表面実装部品は搭載されています。裏面にも1個デバイスが搭載されています。SRAMはEPSON製ですが、他のICはオール東芝。

AKI-80_12Mこのボードの売りは以下です。

12MHzノーウエイト。国内最高速(1993年7月現在)

「国内最高速」というのは当時の「Z80業界」での話だと思います。32ビット業界ではRISC/CISCの争いの最盛期で、100MHz越えのチップも多かった記憶。

部品付きのキットで購入した上記ボードには、最高速を狙うためと周辺回路の互換性をとるためでしょう、24.576MHzと19.6608MHzの2種類の水晶振動子が付属していました。太っ腹。なお水晶のクロックを2分周して使っているので24MHzのとき12MHz動作です。速さを追い求めるのであれば24.576MHzです。しかし、今回組み立てにあたっては、わざわざ別途購入した

8MHz水晶(4MHz動作)

といたしました。約40年前のZ80Aの動作速度に合わせた?一番の理由は12MHzだと55ns品のSRAM上での命令実行ができない、という制約があったためです。後でバスの配線を引き回して加工するときもクロック速度が速いと辛い。折角苦労して12MHzを達成したのであろうボードを3分の1の速度で動作させるようにいたしました。すみません。

ボード自体の作りも昔風です。固定用のねじ穴が四隅に開いているのがM3ネジ用でいい感じです。最近のマイコンボードだとM2.5で、積み重ねたりするといまいち頼りないです。

動作確認

ほぼ30年前のボードなので、USB経由でFlashにオブジェクトを書き込めばOKみたいな便利な機能はありません。基本、ROMソケットにオブジェクトコードを「焼いた」EPROM(EEPROMではありませんよ)を差し込んで動かすしかありません。EPROM、2764とか27256とか。昔懐かしい紫外線消去型の電気的にプログラムできるROMです。電気的にプログラムできるといっても高電圧が必要なので専用のライターが必須。勿論、手元にはEPROMライタも紫外線消去器もありません(売ってないし、買う気もないけど。。。)

実際に自分のコードを動作させる際には、なにかROMに見せかけたデバイスが必要です。後で何か考えないと。そういえば、昔は便利でお手頃価格のROMエミュレータとか売られていたけれども、今のFlashの世の中では絶滅?

ま、流石に秋月殿も動作確認の必要性を認めておられるらしく、「モニタROM」というものを別売されていました。ROM買うとクロスCコンパイラとクロスアセンブラが付いてきます(古い古いバージョンのWindowsで走るやつ。Windows10の世界で走らせるだけでも一苦労かも)とりあえずそれを取り付けて、動作確認用にLED点滅の無限ループ(Lチカですね)を起動してみました。Z80のバスを観察するためにDigilent Analog Discovery2を接続してあります。

TMPZ84C015_DUT今のところ出来ることはこれだけ。

Analog Discoveryのロジアナ機能は16端子しかないので古典的なバスを観察するには本数が足りませぬ。そこでRD信号のアクティブのときのデータ線8本、MREQ信号がアクティブのときのアドレス線の下4本のみを観察してみました。こんな感じ。

LGA_LOOPROMからのフェッチと思われるところと別にアドレスが出ているところがあるのですが、これぞZ80の「売り」の一つであったDRAMリフレッシュサイクルでないでしょうか。念のためにRFRH信号を調べてみると該当部分でアクティブになってました。今では理解不能かもしれないですが、当時はこれが受けたのだと思います。ちなみに16Kbit DRAMの時代。16Kbit DRAM、IBMのお陰で世界的にショートした事件がありました。今時誰も覚えていないか。

さて、ロジアナ機能で観察していると繰り返し上記のパターンが現れるので、Lチカの「時間つぶしソフトウエアループ」じゃなかろうか、と推測が付きます。何十年かぶりで、Z80のハンド・逆アセンブルを試みました。こんな感じ。

Address data instruction
0xE 0x0B DEC BC
0xF 0x78 LD A,B
0x0 0xB1 OR C
0x1 0x20 JR NZ,
0x2 0xFB -5

BCレジスタ(16bit幅)をデクリメントし、その上位のBレジスタ(8bit)をAレジスタ(8bit)に転送、そしてCレジスタ(8bit)とAレジスタ間で論理演算ORをとるっと。するとフラグが変化すると。そこでZフラグが立っていなかった(結局、BCの中に1個でも1があったら立たない)次の命令から数えて5番地前に戻る。

こんな感じで良いですかね。そうだ、Z80は8ビット機なので16ビットの演算が一部できるといってもアドレス計算用でフラグに反映されないのだったっけ。それで8ビットの論理演算でするのね。ううむ、思い出せない。。。

冥界のLSI(8) VM863C110、日本語ワープロとともに へ戻る