Z80エミュレーター開発記 第1回:インテルからの独立とZ80誕生の歴史
はじめに:なぜ今Z80なのか
2024年4月15日、Zilogはスタンドアロン版Z80プロセッサの生産終了を発表した。1976年7月の発売から48年間にわたって生産され続けた8ビットCPUがついに歴史の一区切りを迎えた。
この連載では、Z80のアーキテクチャをJavaScript/WASMでエミュレートするまでの道のりを記録する。第1回は、Z80がなぜ生まれ、なぜ8ビット時代を支配できたのかを技術と人間の両面から掘り下げる。
1. Intelという会社の「本業」と、マイクロプロセッサの立ち位置
Z80の誕生を理解するには、まず1974年当時のIntelの事業構造を知る必要がある。
Intelは当時、半導体メモリ(SRAM・DRAM・ROM)のメーカーだった。マイクロプロセッサは「メモリを売るための呼び水」であり、それ自体が主力製品だとは経営陣に認識されていなかった。
フェデリコ・ファジン(Federico Faggin)はイタリア・ヴィチェンツァ出身の物理学者兼エンジニアで、Fairchild Semiconductor時代にシリコンゲート技術(SGT)を開発し、Intel入社後はその技術を使って4004・8008・8080の開発を主導した人物だ。4004は世界初の商用マイクロプロセッサとして歴史に刻まれているが、ファジンの貢献に対するIntelの評価は冷淡だった。
ファジンは後にComputer History Museumのオーラルヒストリーで、8080の開発承認を得るのに9ヶ月の社内交渉が必要だったと証言している。Intelの経営陣にとってプロセッサはあくまで付随的な製品であり、限られたエンジニアリングリソースをメモリに集中させたい——それがIntelの方針だった。
1974年、不況によるレイオフ、出社時間の厳格化(ファジンは夜型の人間だった)、そしてマイクロプロセッサに対する経営陣の無理解。これらが重なり、ファジンはIntelを去る決断をする。
2. Zilog創業:石油メジャーが半導体スタートアップに賭けた理由
ファジンがIntelのマイクロプロセッサ部門長だったラルフ・ウンガーマン(Ralph Ungermann)とともにZilogを設立したのは1974年末のことだ。
当初、ファジンが構想していたのは「2001」というコードネームのマイクロコントローラだった。しかし市場を調査するうちに、マイクロコントローラ市場は既に良い製品で溢れており、利幅が薄いことに気づく。たとえ技術的に優れた製品を出しても、ファブレスのスタートアップが戦える土俵ではなかった。
方針転換が起きる。8080の上位互換プロセッサ——社内コードネーム「Super-80」——を作ることにした。ファジンは8080の設計者本人であり、その長所と欠点を世界で最もよく理解していた。
ここで重要な偶然が介入する。Zilogがまだ正式な名前すら持っていなかった頃、業界紙Electronic Newsが新会社の存在を記事にした。これを読んだExxon Enterprises(石油メジャーExxonのハイテク投資部門)が接触してきたのだ。
1975年、ベンチャーキャピタル市場は完全に冷え込んでいた。業界全体のVC投資額が年間わずか1000万ドル(2025年換算で約6000万ドル)という時代。その中でExxonは1975年6月に50万ドル(同約300万ドル)の初期投資を実行した。石油メジャーが、社員11人の半導体スタートアップに賭けたのだ。
Exxonがなぜ半導体に関心を持ったのか。1970年代のExxonは事業多角化を進めており、マイクロプロセッサ産業を「次のフロンティア」と見ていた。結果的にExxonのコンピューティング事業への進出は失敗に終わるのだが(1981年にZilogを完全子会社化した後、過剰投資で経営混乱を招き、1989年に経営陣がバイアウトで独立し直す)、この初期投資がなければZ80は生まれなかった可能性が高い。
3. 嶋正利の参画と、設計の「時間との戦い」
資金調達の目処が立った1975年2月、もう一人のキーパーソンが加わる。嶋正利(Masatoshi Shima)だ。
嶋はファジンの下で4004と8080のロジック設計・トランジスタレベル設計を担当した人物であり、8080のマイクロアーキテクチャを最もよく知るエンジニアの一人だった。嶋が参画して即座にハイレベル設計に着手し、8080との互換性を保ちながら何を追加し何を変えるべきかを詰めていった。
ファジンが最も恐れていたのは、Intelが先に改良版8080を出すことだった。実際にIntelは1977年に8085(単一5V電源対応・単相クロック内蔵の改良8080)を発売するのだが、ファジンはこの動きを正確に予測していた。だからこそ「時間的不利」を痛感しており、設計チームは週80時間労働を続けた。
ファジンは後に「最後には眼鏡が必要になった。近視になったんだ」と振り返っている。手作業でチップレイアウトを描き続けた結果だった。Z80は約8,500個のトランジスタを集積しており、8080の約2倍の規模だった。通常なら8080のレイアウトに6ヶ月かかったところ、それ以上の複雑さを持つZ80を1年弱で完成させなければならなかった。CEOであるファジン自身が2人の専任レイアウト担当者とともにチップレイアウト作業に入ったのは、人手不足と時間の制約による。
1976年3月、最初の動作サンプルが完成。同年7月に正式発売された。
4. 8080の「設計上の負債」とZ80の回答
Z80が技術的に何を変えたのかを理解するには、まず8080が設計者や利用者に課していた「負債」を知る必要がある。
4.1 電源の問題
Intel 8080は動作に3系統の電源を必要とした:+5V、-5V、+12V。これはNMOS(Nチャンネル)ロジックの回路設計上の制約から来ている。加えて、2相クロック信号(φ1とφ2)を外部クロックジェネレータ(Intel 8224)から供給する必要があった。さらに、バス制御のためにシステムコントローラ(Intel 8228)も別途必要だった。
つまり8080でシステムを構築するには、CPU単体では動かず、最低でも8224(クロック)と8228(バスコントローラ)という2つのサポートICが必須だった。電源回路も3系統分の設計が必要で、基板の部品点数とコストが跳ね上がる。
Z80はこれを一掃した:
- 単一+5V電源:デプレッション型MOSトランジスタの採用により、内部で必要な電圧を生成
- 単相5Vクロック:クロックジェネレータをチップ内に統合。外部には単純な矩形波を入れるだけでいい
- バスコントロール信号の内蔵:8224・8228に相当する機能がCPU内部に取り込まれた
この差は、実際に基板を設計するエンジニアにとって決定的だった。8080のシステムでは電源回路だけでLM2940(5V用)、MC34063(12V DC-DCコンバータ用)、ICL7660(-5V用)のような3つのレギュレータが必要だったが、Z80なら1つの5Vレギュレータで済む。部品点数の削減はそのままコスト削減であり、個人の自作派にとってもメーカーにとっても福音だった。
4.2 DRAMリフレッシュの自動化
8080時代、DRAMの使用にはリフレッシュ回路の外部実装が必要だった。DRAMは記憶内容を保持するためにコンデンサの電荷を定期的に補充(リフレッシュ)しなければならず、これを怠るとデータが消える。8080システムでは、このリフレッシュのためにインテルのDMAコントローラやプログラマブルインターバルタイマーを追加するか、ソフトウェアで定期的にリフレッシュサイクルを挿入する必要があった。
Z80は7ビットのリフレッシュカウンタ(Rレジスタ)をCPU内部に持ち、命令フェッチの「M1サイクル」(命令の最初のバイトを読み出すタイミング)で自動的にリフレッシュアドレスをアドレスバスに出力する。CPUが命令を実行しているだけで、DRAMのリフレッシュが副産物として自動的に行われるわけだ。これによりリフレッシュ用の外部ハードウェアが不要になり、システムの部品点数がさらに減った。
このRレジスタは本来リフレッシュ専用だが、プログラムの実行に伴って値がインクリメントされ続けるため、一部のソフトウェア(Pac-Manのアーケード基板など)では擬似乱数のシード源として流用されることもあった。
4.3 命令セットの拡張
8080のバイナリとの完全上位互換を維持した上で、Z80は命令数を78種から158種へと倍増させた。追加された命令群には明確な設計思想がある:
ブロック転送・検索命令(LDIR, LDDR, CPIR, CPDR):メモリ間の大量データ転送を、ループを書かずにCPU1命令で実行できる。LDIRは「HL番地の内容をDE番地にコピーし、HLとDEをインクリメント、BCをデクリメント、BC≠0なら繰り返す」という一連の動作を1命令で行う。8080ではこれをLOOP+MOVE+INC+DEC+JNZで5命令のループとして書く必要があった。
相対ジャンプ(JR, JR C, JR NC, JR Z, JR NZ):現在のPC(プログラムカウンタ)からの相対オフセット(-128〜+127)でジャンプする。8080の絶対アドレスジャンプ(JP)と違い、コードの再配置(リロケータブル化)が容易になり、コードサイズも2バイトで済む(絶対ジャンプは3バイト)。CP/Mのようなコードを任意のメモリアドレスにロードするOSとの相性が良い。
ビット操作命令(BIT, SET, RES):任意のレジスタまたはメモリの特定ビットを直接テスト・セット・クリアできる。8080ではAND/ORマスクとシフトの組み合わせで実現していた操作が、1命令で直感的に書ける。ハードウェア制御の際にI/Oポートの個別ビットを操作する場面で特に威力を発揮した。
裏レジスタ(Shadow Registers):AF, BC, DE, HLの各レジスタペアに対して、もう1セットの「裏レジスタ」(AF’, BC’, DE’, HL’)を持つ。EXX命令一発でBC/DE/HLの主・裏を一括切り替え、EX AF, AF'でAFも切り替えられる。割り込みハンドラのエントリで裏レジスタに切り替え、処理後に戻せば、レジスタの退避・復帰のためのスタック操作が不要になる。これは第2回の記事で詳しく扱う。
インデックスレジスタ(IX, IY):16ビットのインデックスレジスタ2本を追加。LD A, (IX+d)のように、ベースアドレス+8ビットオフセットでメモリにアクセスできる。スタックフレーム上のローカル変数アクセスや、構造体のフィールドアクセスに向いた命令で、高級言語のコンパイラが生成するコードの効率を上げる設計意図がある。
5. CP/Mとの共生:ソフトウェアエコシステムの形成
Z80の成功を語る上で避けて通れないのが、Gary KildallのCP/M(Control Program for Microcomputers)との関係だ。
CP/Mは1974年にKildallがIntel 8080向けに開発したディスクオペレーティングシステムで、ハードウェア依存部分をBIOS(Basic Input Output System)として分離する設計になっていた。この設計のおかげで、8080互換のCPUを持つコンピュータであれば、BIOSだけ書き換えればCP/Mがそのまま動作した。
Z80は8080のバイナリを変更なしで実行できるため、CP/Mはそのままの形でZ80マシン上で動作した。1981年9月の時点でDigital Research社は25万本以上のCP/Mライセンスを販売しており、実際のサブライセンスを含めた市場規模はさらに大きかった。
これが意味するのは、Z80を採用するだけで、8080向けに蓄積された膨大なCP/Mソフトウェア(WordStar、dBASE、Turbo Pascalなど)がそのまま走る既存のソフトウェアエコシステムに乗れるということだ。ハードウェアメーカーにとって、「このCPUを採用すれば既にソフトウェアがある」という事実は、性能やコスト以上に強力な採用理由になる。
さらに、Apple IIのようにZ80を本来搭載していないマシンでも、MicrosoftのSoftCard(Z80プロセッサを搭載したアドインカード)を挿すことでCP/Mが動作するようになった。Z80ではないマシンにわざわざZ80を追加してでもCP/Mのソフトウェア資産を使いたいという需要があったという事実が、このエコシステムの吸引力の強さを物語っている。
6. 席巻:パソコンからアーケードまで
電源の手軽さ、命令の扱いやすさ、そしてCP/Mエコシステムの後押しにより、Z80はあらゆるカテゴリの製品に採用されていく。
パソコン:Tandy/Radio Shack TRS-80(1977年)、Osborne 1(初の”ポータブル”コンピュータ)、Kaypro II、Sinclair ZX Spectrum、Sharp MZ-80K/MZ-2000、NEC PC-6001/PC-8001シリーズ、MSX規格の各社マシン。
アーケードゲーム:Pac-Man(1980年)、Galaxian、Galaga。Namcoのアーケード基板はZ80をメインCPUとして採用し、黄金期のアーケードゲームの多くがZ80で動いていた。
家庭用ゲーム機:ColecoVision、Sega Master System、Sega Game Gear。Game Boyが搭載したSharp SM83はZ80そのものではないが、8080互換をベースにZ80の一部拡張命令を取り入れた「8080とZ80の中間」に位置するカスタムCPUだった(裏レジスタ・インデックスレジスタ・DRAMリフレッシュは持たない)。
ポケコン・電卓:Sharp PC-1500系列のポケットコンピュータ、Texas Instruments TI-81以降のグラフ電卓シリーズ。TI-83/84は2020年代に至るまで教育現場で使われ続けた。
産業用・組み込み:プリンター、FAX機、コピー機、モデム、POS端末、VeriFone決済端末、医療機器、通信機器。産業用途ではファームウェアの書き換えが困難な(あるいは許されない)長寿命機器が多く、Z80は数十年にわたって現役で稼働し続けた。
音楽機器:Roland Jupiter-8をはじめとするシンセサイザー。パッチメモリの管理やMIDI制御にZ80が使われた。
セカンドソースメーカーの存在も普及を加速させた。Zilog自身がMostek・Synertekにライセンスを供与したほか、NEC(μPD780C)、東芝(T80)、Sharp、日立、SGS(欧州)、さらには東欧圏やソ連のメーカーまでが互換品やクローンを生産した。1社が独占供給するリスクがないという安心感は、特にメーカーの調達部門にとって重要だった。
7. Z80の「終わり」と、エミュレーションとしての再生
2024年4月、Zilog(当時はLittelfuseの子会社)はスタンドアロン版Z80の注文受付を同年6月14日で終了すると発表した。48年間の生産に終止符が打たれた。ただしeZ80(2001年に発売されたZ80の高速後継版)の製造は継続している。
同時期、オープンソースコミュニティではZ80のDIP40互換パッケージでの再実装(コミュニティ出資によるシリコン製造)が進められている。Z80はCPUとして生産終了しても、アーキテクチャとしては生き続けている。
そしてソフトウェアエミュレーションの世界では、Z80は最も活発にエミュレートされ続けているCPUの一つだ。MAMEのアーケードゲームエミュレーション、ZX Spectrumエミュレータ、MSXエミュレータ、Game Boyエミュレータ(厳密にはSM83だが)——いずれもZ80(またはその派生)の命令セットをソフトウェアで再現している。
次回の第2回では、Z80のレジスタ構造——特に裏レジスタの設計思想と、フラグレジスタの各ビットの挙動——を、エミュレーション実装の観点から詳しく掘り下げていく。
連載構成
| 回 | テーマ | 内容 |
|---|---|---|
| 第1回(本記事) | インテルからの独立とZ80誕生の歴史 | ファジンのIntel離脱、Exxonの出資、8080の設計上の負債、Z80の技術革新、CP/Mとの共生 |
| 第2回 | レジスタ構造と「裏レジスタ」の美学 | AF/BC/DE/HL、IX/IY、裏レジスタ、フラグレジスタのビット挙動、エミュレーション上のデータ構造設計 |
| 第3回 | 命令セットとプレフィックスデコードのカラクリ | Fetch-Decode-Executeサイクル、CB/DD/FDプレフィックス、非公式命令(Undocumented Opcodes) |
| 第4回 | ハードウェアバスとエミュレーションの勘所 | M1サイクル、DRAMリフレッシュ機構、ポートI/O、JS/WASMでのZ80コア設計 |