Zilog Z80は、 Zilog社が設計した8ビットマイクロプロセッサで、初期のパーソナルコンピューティングの進化において重要な役割を果たしました。1976年に発売されたZ80は、Intel 8080とのソフトウェア互換性を持つように設計されており、優れた統合性と優れた性能により、魅力的な代替プロセッサとなりました。8080の7つのレジスタとフラグレジスタに加え、Z80は代替レジスタセット、2つの16ビットインデックスレジスタ、そしてビット操作やブロックコピー/検索などの追加命令を導入しました。

Z80は、当初8080と同様に組み込みシステムでの使用を想定していましたが、その互換性、手頃な価格、そして優れた性能により、1970年代後半から1980年代初頭にかけてビデオゲーム機や家庭用コンピュータに広く採用され、パーソナルコンピューティング革命の推進力となりました。Z80は、 Osborne 1Radio Shack TRS-80ColecoVisionZX Spectrum、セガのMaster Systemパックマンのアーケード筐体といった象徴的な製品に搭載されました。1990年代初頭には、ゲームギアTI-83シリーズのグラフ電卓などの携帯機器にも搭載されました[2] [3]

Z80は、Intel 8080開発の中心人物であるフェデリコ・ファギンの独創的な発明でした。1974年にIntelを去った後、彼はラルフ・ウンガーマンと共同でZilogを設立しました。Z80は1976年7月に発売され、その成功によりZilogは独自のチップ工場を設立することができました。[4] Zilogは、最初の生産のために、米国のSynertekMostek、および欧州のセカンドソースメーカーであるSGSにZ80のライセンスを与えました。この設計は、日本、東欧、ソビエトのさまざまなメーカーによっても模倣され、NEC東芝シャープ日立などの大手企業が独自のバージョンまたは互換性のあるクローンを製造したため、世界市場で受け入れられました。

Z80は、より強力なプロセッサの導入にもかかわらず、長年にわたり組み込みシステムで使用され続け、発売から48年後の2024年6月まで生産が続けられました。Zilog社はZ80の基本設計をさらに強化し、Z180Z280Z380といった後継機種を次々と発表しました。最新版のeZ80は2001年に発売され、2025年現在も販売されています[5]

歴史

1976 年 5 月の Z80 の広告では、8080 と比較した Z80 の主な利点が概説されています。
デプレッションロードnMOSを使用したオリジナルのZilog Z80マイクロプロセッサ設計の写真ダイサイズは3545×3350μm。外側の青い四角は外部ピンに接続するパッドです。このチップは1990年に製造されました。
44ピンクワッドフラットパッケージのCMOS Z80

初期の歴史

物理学者でありエンジニアでもあったフェデリコ・ファギンはフェアチャイルドセミコンダクター社そして後にインテル社で、トランジスタ半導体製造技術の基礎研究に携わっていました。彼はまた、インテル社でメモリやマイクロプロセッサに使用される基本設計手法を開発し、インテル 4004インテル 8080、その他いくつかのICの開発を主導しました。嶋正敏はファギンの監督の下、インテル 4004とインテル 8080の主任ロジックおよびトランジスタレベル設計者を務め、ラルフ・ウンガーマンはカスタム集積回路の設計を担当しました[6]

1974年初頭、インテルはマイクロプロセッサを単体で販売する製品としてではなく、主力製品であるスタティックRAMROMの販売を促進する手段と見なしていた。組織再編により、以前は独立していた部門の一部がレス・ヴァダスの指揮下に置かれ、マイクロプロセッサの社内における地位はさらに薄れた。同年、1973年から1975年にかけての不況がピークに達し、インテルは数人の従業員を解雇した。[6]このことがファギンの焦燥を招き、ウンガーマンを飲みに誘い、一緒に会社を立ち上げないかと持ちかけた。ウンガーマンはすぐに同意したが、インテルでの仕事が減ったため、8月か9月にインテルを去った。ファギンのインテルでの最終日は1974年のハロウィンだった。[7]これを聞いた島は自分も新会社に来たいと申し出たが、実際の製品設計も資金もなかったため、会社側は待つように言った。[8]

新しく設立された無名の会社は、当初2001 と呼ばれるシングルチップのマイクロコントローラの設計を開始しました。彼らはSynertek 社と会い、その製造ラインでの製造について話し合いました。Faggin 氏がコストについて理解し始めると、このような低コストの製品では、Intel 社のように独自の製造ラインを持つ会社の設計と競合できないことが明らかになりました。そこで彼らは、当初は Super 80 と呼ばれていた、+5 V バス[8]を使用するのが主な特徴の、8080 などの設計で使用されている一般的な -5、+5、12 V ではなく、+5 V バスを使用する、より複雑なマイクロプロセッサの検討を開始しました。新しい設計は 8080 と互換性があることを目的としていましたが、インデックス レジスタや改良された割り込みなど、Motorola 6800の多くの機能が追加されていました[9]

エクソンの投資、詳細な開発が始まる

設立間もない頃、業界ニュースレター「エレクトロニック・ニュース」が彼らの存在を知り、新設企業に関する記事を掲載しました。これがエクソンのハイテク投資部門であるエクソン・エンタープライズの注目を集めました。当時、不況の真っ只中にあったため、ベンチャーキャピタルの供給は少なく、1975年通年で業界全体の投資額は1,000万ドル(2024年の5,800万ドルに相当)にとどまっていました。エクソンの関係者が、当時まだ名前が明かされていなかったこの企業に連絡を取り、[8]面談をセッティングしました。その結果、1975年6月に50万ドル(2024年の290万ドルに相当)の初期資金提供が実現しました。[10]

資金調達の議論と設計の策定が進む中、1975年2月に島正俊が加わった。 [9]島は直ちに高水準設計の作成に着手し、独自のコンセプトをいくつか追加した。特に、NECの ミニコンピュータでの経験を活かし、割り込みへの迅速な応答を可能にするため、2組のプロセッサレジスタというコンセプトを追加した。[7] [d]アンガーマンは、この設計を補完する一連の関連コントローラと周辺チップの開発に着手した。[11]

この期間を通じて、島は論理概念をリアルタイムで物理設計に変換できるという伝説的な評判を築き上げました。提案された機能について議論している最中に、彼はしばしば話を遮り、それがチップ上でどれだけのスペースを占めるかを指摘し、大きすぎる場合はその追加を拒否しました。[12]設計の最初のパスは1975年4月に完了しました。島は5月初旬までに論理レイアウトを完成させました。論理設計の2番目のバージョンは8月7日に発行され、バスの詳細は9月16日までに発行されました。テープアウトは11月に完了し、テープを生産マスクに変換するのにさらに2か月かかりました。[13]

ファギン氏は既に生産パートナーを探し始めていた。この頃、シネルテックとモステクは、この設計を生産できる枯渇型生産ラインを既に構築していた。以前シネルテックと話をしたことがあったファギン氏は、まず彼らにアプローチした。しかし、シネルテックの社長は、同社に設計を直接販売できるセカンドソースライセンスを要求した。ファギン氏は、これでは自社で生産ラインを構築しても競争に勝てないと考え、契約は破談となった。そこでファギン氏はモステクに目を向け、ザイログが生産ラインを構築するまでの間、モステクは独占契約を締結し、最終的にセカンドソース契約を締結した。[14]

新会社の名前を複数検討したものの、どれもあまりにも覚えにくく、翌日になっても思い出せないことが分かり、ファギンとアンガーマンは「統合ロジック」に基づいたアイデアを練っていたところ、アンガーマンが「ザイログはどうか?」と提案した。ファギンは即座に同意し、「統合ロジックの決定版」と言えるだろうと述べた。翌日、二人が会ってすぐにザイログの名前を思い出し、会社名は決定した。[15]

生産開始

最初のサンプルは1976年3月9日にMostek社から返送された。[11]同月末までに、アセンブラベースの開発システムも完成していた。Z80のサポートICと周辺ICの一部はこの時点で開発中であり、その一部は翌年に発売された。その中には、Z80 CTC(カウンタ/タイマー)、Z80 DMA [16](直接メモリアクセス)、Z80 DART(デュアル非同期送受信機)、Z80 SIO(同期通信コントローラ)、Z80 PIO(パラレル入出力)などがあった。

Z80は1976年7月に正式に発売されました。[17]当時、半導体業界では、外国メーカーによるチップ設計の無許可複製に対する懸念がありました。リバースエンジニアリングを阻止するため、ザイログ社は6つの「トラップ」を組み込みました。これは、トランジスタを微妙に改造して、見た目とは異なる動作をするようにしたものでした。島氏によると、後にNECのエンジニアから、これらのトラップによってリバースエンジニアリングの作業が6ヶ月遅れたと聞かされたそうです。[18]その後、NECはザイログ社との特許侵害紛争を解決し、Z80やその他のチップの正規版を製造するライセンスを取得しました。[19]

Z80の発売成功後、ファギン氏とウンガーマン氏はエクソンに半導体製造工場設立のための資金援助を打診した。エクソンはこれに同意し、ザイログは独自の生産ラインを構築した。これにより、ザイログはZ80市場全体の約60~70%のシェアを獲得することができた。[20]一方、モステクはチップのライセンス版であるMK3880の製造を許可され、顧客にセカンドソースを提供した。これはインテルにはなかった安全策だった。当時、セカンドソース契約は、特に事業の失敗や供給途絶のリスクが高かったザイログのような新興企業にとって不可欠と考えられていた。[e] [9]

8080との比較

ファギン氏は命令セットを8080とバイナリ互換になるように設計した[21] [22]。これにより、8080のほとんどのコード、特にCP/M オペレーティングシステムとIntelの8080用PL/Mコンパイラ(およびその生成コード)は、新しいZ80 CPUで変更せずに実行できるようになった。嶋正敏氏は、少数のエンジニアとレイアウト担当者の支援を受けながら、Z80 CPUのマイクロアーキテクチャとゲートレベルおよびトランジスタレベルのほとんどを設計した[23] [24] CEOのフェデリコ・ファギン氏は、2人の専任レイアウト担当者とともに、チップレイアウト作業に深く関わっていた。ファギン氏によると、彼は投資家から与えられた厳しいスケジュールを守るため、週80時間働いていたという。[4]

Z80は8080に比べて多くの改良が加えられた。[22]

  • 強化された命令セットには以下が含まれます。
    • より論理的で理解しやすく読みやすいアセンブラ命令ニーモニックシステム
    • より柔軟な16ビットデータ移動(ロード、またはLD)命令、特にスタックポインタSPを含む
    • 外部周辺ポートへの入出力のためのより柔軟なアドレス指定モード
    • すべてのレジスタとメモリのシングルビットアドレス指定(ビットテストを含む)
    • アキュムレータ以外のメモリおよびレジスタ上でシフト/回転する
    • BCD演算で減算をサポート
    • メモリ内のパックされたBCD数値文字列の回転命令
    • 16ビット減算と8ビット否定
    • プログラムのループ
    • プログラムカウンタ(PC)相対ジャンプ
    • ブロックコピー、ブロック入出力(I/O)、バイト検索命令などがある。[25]
  • 符号付き8ビットおよび16ビット演算をより適切にサポートするオーバーフローフラグ。[ f ]
  • ベース+オフセットアドレッシングモードを備えた新しいIXおよびIYインデックスレジスタ
  • より優れた割り込みシステム:
    • より自動化され汎用的なベクトル化割り込みシステムであるモード2は主にZilogのカウンタ/タイマー、DMA、通信コントローラのラインを対象としており、固定ベクトル割り込みシステムであるモード1は最小限のハードウェアを備えたシンプルなシステムを対象としている(モード0は8080互換モードである)。[26]
    • マスク不可能割り込み (NMI)。電源切断状況やその他の高優先度イベントに応答するために使用できます (最小限の Z80 システムでモード 1の 2 レベル割り込み方式を簡単に実装できます)。
  • 完全な重複レジスタファイル[27]は、高速非同期イベントハンドラやマルチタスクディスパッチャなどの割り込みへの応答を高速化するために、迅速に切り替えが可能でした。これらは汎用コード用の追加レジスタとして意図されたものではありませんでしたが、一部のアプリケーションではそのように使用されていました。[g]
  • 電源、クロック生成、メモリおよびI/Oへのインターフェースに必要なハードウェアが少なくなります。
  • 単一の 5 ボルト電源 (8080 には -5 V、+5 V、および +12 V が必要)。
  • 単相 5 ボルト クロック (8080 では、高振幅 (9 ~ 12 ボルト) の重複しない2 相クロックが必要でした)。
  • DRAM リフレッシュ機能を内蔵。そうでなければ外部回路が必要だった。8080はDRAMが広く普及する前に設計されたため、一般的なSRAMはリフレッシュを必要としなかった。1970年代半ばまでに、DRAMはほとんどの用途でSRAMに取って代わっていたが、8080でDRAMを使用するには追加の外部回路が必要だった。これをZ80に内蔵することで、システム全体の複雑さとコストが削減された。[h]
  • 非多重化バス (8080 では状態信号がデータ バスに多重化されていました)。
  • プログラムカウンタのみをゼロにする特殊なリセット。これにより、単一のZ80 CPUをインサーキットエミュレータなどの開発システムで使用できるようになります。[28]

市場での成功

Z80はプロセッサ市場において8080とその派生製品である8085に取って代わり[29]、最も人気があり広く使用されている8ビットCPUの一つとなった。[30] [31]ブリティッシュ・テレコムなどの一部の組織は、組み込みアプリケーションにおいて8085に馴染みがあり、オンチップシリアルインターフェースと割り込みアーキテクチャを備えていたため、8085を引き続き採用した。同様に、ゼニス・データ・システムズは、先駆的なZ80ベースのHeathkit H89とZenith Z-89製品で実績があったにもかかわらず、初のMS-DOSコンピュータであるZenith Z-100に8085と16ビットのIntel 8088を組み合わせた。しかし、他の CPU と Z80 を統合したコンピュータも作られました。たとえば、Motorola 68000を搭載したRadio Shack TRS-80 Model 16、 8088 を搭載したDEC RainbowMOS Technology 8502を搭載したCommodore 128などです。

ザイログ社はその後、1980年代初頭の成長著しいラップトップコンピュータ市場に適した低消費電力のZ80を生産しました。インテル社はCMOS 8085 (80C85) を生産し、1983年4月に京セラ社が設計したラップトップコンピュータなどのバッテリー駆動のポータブルコンピュータに使用されました。このラップトップコンピュータは、タンディ社(TRS-80 Model 100として)、オリベッティ社、NEC社からも販売されました。しかしその後数年間、CMOS版のZ80(ザイログ社と日本メーカーの両方が製造)が、アムストラッド社NC100ケンブリッジ社Z88、タンディ社独自のWP-2などの製品に搭載され、この市場を席巻しました。

Z80の初期の成功の鍵は、少なくともCP/Mやその他のオフィス・家庭用コンピュータといった市場では、内蔵DRAMリフレッシュ機能にあったと言えるでしょう。(Z80組み込みシステムのほとんどは、リフレッシュを必要としないスタティックRAMを使用しています。)また、最小限の2レベル割り込みシステム、あるいは逆に、複数のZ80 IOチップへのサービス提供に便利な汎用的なマルチレベルデイジーチェーン割り込みシステムも成功の鍵となったかもしれません。これらの機能により、サポートハードウェアを少なくし、回路基板レイアウトを簡素化したシステム構築が可能になりました。

しかし、一方では、その人気は、重複レジスタによって高速なコンテキストスイッチが可能になり、レジスタ数の少ない8ビットCPUに比べて浮動小数点演算などの処理を効率的に行えるようになったためだと主張する者もいる。(Z80は、HL'HL、DE'DE、BC'BCを32ビットレジスタとして使用することで、複数の数値を内部的に保持できるため、計算中に低速なRAMからアクセスする必要がなくなる。)[32]

オリジナルのNMOS設計では、規定のクロック周波数の上限は、導入時の2.5MHzから、よく知られている4MHz(Z80A)、6MHz(Z80B)、8MHz(Z80H)まで順次増加していった  [ 33] [34] NMOSバージョンは、1980年代後半から10MHzの部品として生産されている。CMOSバージョンは、規定の上限周波数が4MHzから、今日販売されているバージョンでは20MHzまでの範囲で開発されている。CMOSバージョンでは、内部状態が保持された状態で低電力スタンバイが可能で、下限周波数の制限はなかった。[i]完全に互換性のある派生製品であるHD64180 / Z180 [35] [36]eZ80は現在、それぞれ最大33MHzと50MHzまで規定されている。

デザイン

プログラミングモデルとレジスタセット

Z80の大まかなブロック図:オフセット用の専用加算器やR用の独立したインクリメンタは存在せず、16ビットの一時レジスタWZは1つしか必要としない(ただし、インクリメンタラッチは他の状況では16ビットの一時レジスタとしても使用される)。PCレジスタとIRレジスタは、メインレジスタバンクと並行して更新できるように、分離可能なバスセグメントを備えた別のグループに配置されている。[37]

Z80のプログラミングモデルとレジスタセットは極めて従来型であり、最終的にはDatapoint 2200のレジスタ構造に基づいています。Z80は、同じエンジニアによって開発されたIntel 8080の拡張として設計されました。Intel 8080は、 8008の拡張でした。8008は、基本的にDatapoint 2200のTTLベースCPUのPMOS実装でした。[j]

2200の設計では、8ビットレジスタHとL(HighとLow)をペアにして16ビットアドレスレジスタHLを構成することができました。[k] 8080では、このペアはBCとDEにも追加され、HLはアドレスレジスタとしてだけでなく、16ビットアキュムレータとしても使用できるように汎用化されました。また、8080では、BC、DE、HL、SPへのロードに16ビットの即値データが導入されました。さらに、直接アドレスを用いてHLとメモリ間で16ビットの直接コピーが可能になりました。

Z80では、IXとIYを含むすべての16ビットレジスタペアをより汎用化し、さらにこれらのペアすべてについてメモリとの間で16ビットの直接コピーを可能にすることで、これをさらに直交化しました。Z80の16ビットIXレジスタとIYレジスタは、主にベースアドレスレジスタとして意図されており、特定の命令は、前の値に加算される定数オフセットを提供しますが、16ビットアキュムレータなどとしても使用できます。制限事項として、IXまたはIYを含むすべてのオペランド参照には追加の命令プレフィックスバイトが必要であり、HLを使用する命令のタイミングに少なくとも4クロックサイクルが追加されます。このため、IXまたはIYを使用すると、8080モデルのレジスタのみを使用する方法よりも効率が低下する場合があります。Z80では、新しい符号付きオーバーフローフラグも導入され、8080の比較的単純な16ビット演算を、符号付き16ビット演算 専用の命令で補完しました。

Z80のオリジナルDIP40チップパッケージのピン配置

8080互換レジスタAF、BC、DE、HLはZ80では独立したレジスタファイルとして複製されており、[38]プロセッサは4つのtステート(Z80命令の最小実行時間)でバンク間を迅速に切り替えることができる。[39]これは、シングルレベルの高優先度割り込みへの応答を高速化するために役立つ機能である。デュアルレジスタセットは、割り込み処理性能を向上させるため組み込み用途では有用であるが、浮動小数点演算や家庭用ゲームといった複雑なコード用の汎用レジスタの追加セットとして、パーソナルコンピュータ用途でも広く使用されている

複製レジスタファイルはしばしば「代替レジスタセット」と呼ばれます(アセンブラのソースコードやZilogのドキュメントではアポストロフィ文字が使用されているため、「プライム付き」レジスタファイルと呼ばれることもあります)。これは、常に1つのセットのみがアドレス指定可能であることを強調しています。ただし、フラグレジスタFを含む8ビットアキュムレータAは、「汎用」レジスタペアHL、DE、BCから分離されています。これは、アクセス可能性を交換する2つの別々の命令によって実現されます。1つはEX AF,AF'レジスタペアAFとAF'のみを交換し、もう1つはEXX3つの汎用レジスタペアHL、DE、BCをそれらの代替レジスタHL'、DE'、BC'と交換します。したがって、アキュムレータAは、代替(またはプライム付き)レジスタファイル内の任意の汎用8ビットレジスタと独立してやり取りできます。また、HL'にメモリへのポインタが含まれている場合は、その中のバイトとやり取りできます(DE'とBC'は、メモリとアキュムレータA間で8ビットデータを転送することもできます)。

これはプログラマにとって混乱を招く可能性があります。なぜなら、EX AF,AF'またはを実行した後EXX、代替(プライム)レジスタの内容がメイン レジスタに存在し、その逆も同様だからです。プログラマがこのスワップ状態を理解して追跡する唯一の方法は、コード フローをトレースして、レジスタ スワップ命令の各発生を記録することです。明らかに、これらのコード セグメント内でジャンプ命令や呼び出し命令が実行されると、注意深くコメントを付けない限り、どのレジスタ ファイルがコンテキスト内にあるかを判断するのがすぐに難しくなります。したがって、交換命令は直接、短い個別のコード セグメントで使用することをお勧めします。Zilog Z280 命令セットには、代替レジスタがコンテキスト内にある場合に宛先アドレスにジャンプするJAFおよびJAR命令が含まれています(したがって、このプログラミングの複雑さが正式に認識されています)。

レジスター

8080と同様に、8ビットレジスタは通常ペアになっており、16ビットバージョンを提供します。8080互換レジスタ[40]は以下のとおりです。

  • AF: 8ビットのアキュムレータ(A)とフラグビット(F)キャリー、ゼロ、マイナス、パリティ/オーバーフロー、ハーフキャリー(BCDに使用)、およびBCD用の加算/減算フラグ(通常Nと呼ばれる)
  • BC: 16ビットのデータ/アドレスレジスタまたは2つの8ビットレジスタ
  • DE: 16ビットのデータ/アドレスレジスタまたは2つの8ビットレジスタ
  • HL: 16ビットのアキュムレータ/アドレスレジスタまたは2つの8ビットレジスタ
  • SP:スタックポインタ、16ビット
  • PC: プログラムカウンタ、16ビット

Z80 で導入された新しいレジスタは次のとおりです。

  • IX: 8ビットの即値オフセット用の16ビットのインデックスまたはベースレジスタ
  • IY: 8ビットの即値オフセット用の16ビットのインデックスまたはベースレジスタ
  • I: 割り込みベクトルベースレジスタ、8ビット
  • R: DRAMリフレッシュカウンタ、8ビット(MSBはカウントしない)
  • AF': 代替(またはシャドウ)アキュムレータとフラグ(EX AF、AF'で切り替え
  • BC'DE'およびHL': 代替(またはシャドウ)レジスタ(EXX で切り替え
  • 4 ビットの割り込みステータス: 2 つの割り込み有効フラグ、IFF1およびIFF2、2 ビットの割り込みモード、IM

リフレッシュレジスタ()はRCPUがオペコード(または内部的には1バイト命令のように実行されるオペコードプレフィックス)をフェッチするたびにインクリメントされ、プログラム実行とは単純な関係を持たない。これは、ゲームやソフトウェア保護スキームにおける疑似乱数生成に用いられることがある。 [41]また、一部の設計では「ハードウェア」カウンタとしても用いられている。その一例としてZX81が挙げられ、ラップアラウンド時に割り込みをトリガーすることで(INTをA6に接続することで)、テレビ画面上の文字位置を追跡することができる

割り込みベクターレジスタ はIZ80固有のモード2割り込み(命令で選択)に使用されます。これは、割り込み確認サイクル中にCPUに送信されるインデックスを介して選択されるIM 2128エントリのサービスルーチンアドレステーブルのベースアドレスの上位バイトを提供します。このインデックスは、サービスルーチンを指すテーブル化された間接アドレスへのポインタの下位バイト部分に過ぎません。[26]ポインタは特定の周辺チップまたは周辺機能またはイベントを識別します。チップは通常、優先順位の解決のためにいわゆるデイジーチェーンで接続されています。リフレッシュレジスタと同様に、このレジスタも創造的に使用されることがあります。割り込みモード0と1(または割り込みを使用しないシステム)では、単なる別の8ビットデータレジスタとして使用できます。

これらの命令はLD A,RLD A,I他のすべてのLD(ロード)命令とは異なり、Z80フラグレジスタに影響を与えます。符号フラグ(ビット7)とゼロフラグ(ビット6)は、リフレッシュレジスタまたは割り込みソースレジスタからロードされたデータに応じて設定されます。どちらの命令においても、パリティ/オーバーフローフラグ(ビット2)はIFF2フリップフロップの現在の状態に応じて設定されます。[42]

マイクロアーキテクチャ

Z80は一般的に8ビットCPUと考えられていますが、4ビットのALUを備えているため、計算は2段階で行われます。[43]

Z80アセンブリ言語

Datapoint 2200とIntel 8008

最初のIntel 8008アセンブリ言語は、Datapoint 2200の設計から継承されたシンプル(だが体系的)な構文に基づいていました。このオリジナルの構文は後に、同じオリジナルの8008チップ向けに、より伝統的な新しいアセンブリ言語形式へと変更されました。ほぼ同時期に、この新しいアセンブリ言語は、より高度なIntel 8080チップの追加アドレッシングモードに対応するために拡張されました(8008と8080は言語サブセットを共有していましたが、バイナリ互換性はありませんでした。ただし、8008はDatapoint 2200とバイナリ互換性がありました)。

この過程で、 LOADLを表すニーモニックは、 LOADSTOREMOVEといった単語の様々な略語に置き換えられ、他の記号文字が混在するようになりました。メモリ(HLによって参照される)を表すニーモニック文字は命令ニーモニック内から取り出され、構文的に独立したオペランドとなりました。一方、レジスタとレジスタの組み合わせは、省略されたオペランド(MVI D、LXI Hなど)で表記されるか、命令ニーモニック自体の中で表記されるか(LDA、LHLDなど)、あるいは両方が同時に使用されるか(LDAX B、STAX Dなど)、一貫性のない表記になりました。 M

4つの構文の図解。同等の、または(8086の場合)非常に類似したロード命令とストア命令のサンプルを使用しています。[44] Z80構文では、式を括弧で囲むことで、値をメモリアドレスとして使用することを示します(後述)。一方、8086構文では、この目的で通常の括弧ではなく角括弧を使用します。Z80と8086はどちらも、+記号を使用して、定数をベースレジスタに追加してアドレスを形成することを示します。8086はZ80の完全なスーパーセットではないことに注意してください。BXは、ポインタとして使用できる唯一の8086レジスタペアです。

新しい構文

インテルがアセンブリ言語ニーモニックの著作権を主張したため、[45] Z80では新しいアセンブリ構文を開発する必要がありました。今回はより体系的なアプローチが採用されました。

  • すべてのレジスタとレジスタペアは、完全な名前で明示的に示されます
  • 括弧は、実効アドレスを暗示するジャンプ命令JP (HL)、、およびを除き、一貫して「メモリの内容」(定数アドレスまたは変数ポインタの参照)を示すために使用されます。これらの命令は、メモリを介さずに、それぞれのレジスタから新しいPCアドレスを直接ロードします。JP (IX)JP (IY)
  • すべてのロード命令とストア命令は、LOAD命令に同じニーモニック名LDを使用します(これはDatapoint 2200のシンプルな用語への回帰です)。ADDやINCなどの他の一般的な命令は、アドレッシングモードやオペランドサイズに関係なく、同じニーモニックを使用します。これは、オペランド自体が特定のオペコードを決定するのに十分な情報を持っているためです。

これらの原則により、すべての新しい Z80 命令の名前と形式、および などの古い命令の直交化を簡単に見つけることができるようになりましたLD BC,1234

少なくとも1つの矛盾が生じました。繰り上がりを伴う減算は とコード化されますがSBC A,r、繰り上がりを伴わない減算SUB rは ではなく とコード化されますSUB A,r[46]

命名の違いや基本的なレジスタ構造に若干の相違があるものの、Z80と8086の構文は、命令の大部分において実質的に同一である。8080と8086のアセンブリ言語の間には、ごく表面的な類似点(例えば、MOVという単語や拡張レジスタを表すXという文字など)しか存在しないが、8080のプログラムはトランスレータプログラムによって8086のアセンブリ言語に変換可能である。[47] [48]

命令セットとエンコーディング

Z80は、利用可能な256個のコードのうち252個をシングルバイトオペコード(「ルート命令」の大部分は8080から継承されている)として使用する。残りの4つのコードは、オペコードプレフィックスとして広く使用される。[49] CBとEDは追加命令を有効にし、DDまたはFDはそれぞれHLの代わりにIX+dまたはIY+dを選択する(場合によっては変位dなし)。この方式により、Z80は命令とレジスタの多様な組み合わせを実現している。Zilogはこれらを158種類の「命令タイプ」に分類しており、そのうち78種類はIntel 8080のものと同じである[49](これにより、すべての8080プログラムをZ80で動作させることができる)。 Zilogのドキュメント[50]では、命令をさらに以下のカテゴリに分類しています(ほとんどは8080からの命令ですが、ブロック命令やビット命令のように全く新しい命令や、16ビットロード、I/O、回転/シフト、相対ジャンプなど、より汎用性の高いアドレス指定モードを備えた8080命令もあります)。

  • ロードと交換
  • ブロック転送と検索
  • 算術と論理
  • 回転と移動
  • ビット操作(セット、リセット、テスト)
  • ジャンプして、コールして、リターン
  • 入力/出力
  • 基本的なCPU制御

オリジナルのZ80には明示的な乗算命令はありませんが[51]、レジスタAとHLはADD A,A命令とADD HL,HL命令(IX命令とIY命令も同様)で2の累乗倍算できます。シフト命令でも2の累乗倍算や2の累乗除算が可能です。

加算、シフト、回転の演算サイズや種類によってフラグへの影響は多少異なります。これは、8080のフラグ変更機能の大部分がZ80に継承されているためです。ただし、8080のパリティフラグビットP(ビット2)は、Z80ではP/V(パリティ/オーバーフロー)と呼ばれます。これは、8080にはない2の補数オーバーフローインジケータとしての機能も備えているためです。Z80の算術命令では、このビットはパリティではなくオーバーフローを示すように設定されますが、ビット単位命令では依然としてパリ​​ティフラグとして使用されます。 (これにより、Z80 と 8080 用に記述されたコードとの間に微妙な非互換性が生じます。Z80 では、8080 がパリティを示すところで符号付きオーバーフローを示すことがあり、実用的な 8080 ソフトウェアのロジックが Z80 では機能しない可能性があります。[m])この新しいオーバーフロー フラグは、すべての新しい Z80 固有の 16 ビット操作(ADCSBC)と 8 ビット算術演算に使用されますが、8080 から継承された 16 ビット操作(ADD、、 )はこれに影響を与えません。また、フラグ レジスタのビット 1(8080 では予備ビット)はINCDEC最後に実行された算術命令が減算であったか加算であったかを示すフラグ N として使用されます。 Z80版の命令DAA(BCD演算用の10進調整アキュムレータ)はNフラグをチェックし、それに応じて動作します。そのため、(仮定上の)減算の後に を実行すると、古い8080ではZ80とは異なる結果になります。ただし、8080では加算のみに定義されている DAAため、これは8080ではエラーコードになる可能性があります。DAA

Z80にはLD、8080とは異なり、メモリからDE、BC、SPレジスタペアをロードしたり、これら3つのレジスタペアからメモリをロードしたりできる6つの新しい命令があります。[44] 8080と同様に、ロード命令はフラグに影響を与えません(特殊用途のIレジスタとRレジスタのロードを除く)。通常のエンコード(8080と共通)の結果、各8ビットレジスタはそれ自体からロードできます(例LD A,A:)。これは実質的にはですNOP

新しいブロック転送命令は、メモリからメモリへ、またはメモリと I/O 周辺ポートの間で最大 64 キロバイトを移動できます。ブロック命令と ( load increment LDIR/ LDDRd ecrement repeat )HLを使用してソース アドレスを、DE を使用して宛先アドレスを、BC をバイト カウンタとして使用します。バイトはソースから宛先にコピーされ、ポインタが増分または減分され、バイト カウンタは BC が 0 になるまで減分されます。非繰り返しバージョンとではLDILDD1 バイトを移動してポインタとバイト カウンタを増やします。バイト カウンタが 0 になると、P/V フラグがリセットされます。対応するメモリから I/O への命令、、、、、、、、INIRおよびバイトカウンタとして BC ではなく B が使用される点を除いて同様に動作します。[52] [53] Z80 は、レジスタCINDR使用してポートを指定することにより、任意のレジスタを I/O ポートに入出力できます。 (8080 は、命令で指定された直接ポート アドレスを使用して、アキュムレータ A を介してのみ I/O を実行します。可変の 8080 ポート アドレスを使用するには、自己変更コード手法が必要です。) OTIROTDRINIINDOUTIOUTD

最後のブロック命令群は、CP(HL) のバイトとアキュムレータ A の比較演算を実行します。レジスタペア DE は使用されません。繰り返しバージョンCPIRと は、 BC がゼロになるか、一致が見つかった場合にのみ終了します。HL は、一致バイトの後 ( ) または前 ( )CPDRのバイトを指します。一致が見つからない場合、Z フラグはリセットされます。繰り返しのないバージョンともありますCPIRCPDRCPICPD

8080とは異なり、Z80は、符号付き8ビット変位を持つより短い命令を使用して、相対アドレス(JRではなくJP)にジャンプできます。この命令には、無条件形式と条件付き形式があります。ゼロ条件とキャリー条件のみがテスト可能です。(8080のジャンプとコールはすべて、条件付きかどうかに関係なく、3バイト命令です。)ジャンプが実行されると、2バイトJR命令は8080スタイルの3バイトJP命令よりも遅くなります。ジャンプが実行されない場合は、JR命令はより速くなります。

プログラムループに特化した2バイト命令もZ80に新しく追加されました。DJNZ( d ecrement j ump if n on- z ero) は、符号付き8ビットの変位をオペランドとして受け取ります。Bレジスタがデクリメントされ、結果が0以外の場合、プログラム実行はPCを基準にジャンプします。フラグは変更されません。8080で同等のループを実行するには、別途DEC条件付きジャンプ命令(2バイトの絶対アドレスへのジャンプ)(合計4バイト)が必要であり、DECフラグレジスタが変更されます。

インデックスレジスタ命令(IX/IY、しばしばXYと略される)は、固定された異種構造(レコードなど)に編成されたデータ、または可変ベースアドレスからの固定オフセット(再帰 スタックフレームなど)にあるデータへのアクセスに便利です。また、インデックスなしのレジスタを用いた複数の短い命令を実行する必要がなくなるため、コードサイズを削減できます。しかし、より単純な操作を長く複雑な「同等の」シーケンスで実行するよりも、状況によっては速度が向上する可能性がありますが、CPU時間を大幅に追加消費します(例えば、インデックス付きメモリの1つの位置にアクセスするには19のTステートがINC必要ですが、HLを使用して同じメモリにアクセスし、次のメモリを指すにはわずか11のTステートで済みます)。したがって、単純なデータアクセスや線形アクセスの場合、IXとIYの使用は速度が遅くなり、メモリ消費量も増加する傾向があります。それでも、「メイン」レジスタがすべて使用されている場合には、レジスタの保存/復元が不要になるため、これらの命令は役立ちます。公式には文書化されていない8ビットのハーフ(下記参照)は、この文脈において特に有用である。なぜなら、16ビットの親よりも速度低下が少ないからである。同様に、16ビット加算命令はオリジナルのZ80ではそれほど高速ではない(11クロック)(8080/8085よりも1クロック遅い)。それでも、同じ計算を8ビット演算で実行するよりも約2倍高速であり、同様に重要な点として、レジスタ使用量を削減できる。プログラマがインデックス付き命令に異なるオフセット変位バイト(通常は動的に計算される)を「挿入」することは珍しくなかった。これは自己書き換えコードの一例であり、パイプライン化されていない実行ユニットを備えた初期の8ビットプロセッサのほぼすべてで一般的に行われていた

インデックスレジスタにはJP (HL)JP (IX)と という並列命令があります。これは、 ForthJP (IY)のようなスタック指向言語でよく見られます。Forth では、Forth の各ワード(言語を構成するアトミックサブルーチン)の終了時に、スレッドインタープリタルーチンに無条件にジャンプする必要があります。通常、このジャンプ命令はアプリケーション内で数百回出現しますが、ではなくを使用すると、出現ごとに1バイトと2つの T ステートを節約できます。これにより、インデックスレジスタは当然他の用途には使用できなくなります。そうでなければ、インデックスレジスタを頻繁にリロードする必要があり、効率が悪くなります。 JP (IX)JP THREAD

10年前より新しいマイクロコードZ180設計は、当初は「チップ面積」を広く取ることができたため、より効率的な実装(より広いALUの使用など)が可能でした。Z800 Z280Z380についても同様のことが言えます。しかし、これらの命令が技術的に可能な限りのサイクル効率、つまりZ80エンコーディングと毎クロックサイクルで8ビットの読み書きを行う能力とを組み合わせられるようになったのは2001年に完全パイプライン化されたeZ80が発売されてからでした。[要出典]

文書化されていない指示

インデックスレジスタIXとIYは、メモリ、スタックフレーム、およびデータ構造の操作能力を高める柔軟な16ビットポインタとして意図されていました。公式には、これらは16ビットとしてのみ扱われていました。実際には、これらはHLレジスタと同じ方法で、8ビットレジスタのペアとして実装されました[54]。HLレジスタは、16ビットとして、またはHighレジスタとLowレジスタとして個別にアクセスできます。バイナリオペコード(マシン語)は同じですが、新しいオペコードプレフィックスが先頭に付いています。[55] Zilogは、意図された機能のオペコードと関連ニーモニックを公開しましたが、HレジスタとLレジスタの操作を可能にするすべてのオペコードがIXレジスタとIYレジスタの8ビット部分に対して同様に有効であるという事実を文書化していませんでした。たとえば、オペコード26hの後に即値バイト値が続くと、(LD H,n)その値がHレジスタにロードされます。この2バイト命令の前にIXレジスタのオペコードプレフィックスDDを付けると、IXレジスタの最上位8ビットに同じ値がロードされることになります。 注目すべき例外は、LD H,(IX+d)同じ命令でHLレジスタとIXまたはIYレジスタの両方を使用する類似の命令です。[55]この場合、DDプレフィックスは命令の(IX+d)部分にのみ適用されます。 XYレジスタの半分には、8ビットの算術、論理、比較命令のオペランドを保持することもできるため、通常の8ビットレジスタを他の用途に使用できます。 ドキュメント化されていないインデックスレジスタの上位半分を増分および減分する機能により、ドキュメント化されているADD/SBC XY,DEまたはに頼ることなく、通常のインデックス付き命令の範囲を簡単に拡張できましたADD/SBC XY,BC

他にも、文書化されていない命令がいくつかあります。[56]文書化されていない、あるいは不正なオペコードはZ80では検出されず、様々な効果をもたらします。その中には有用なものもあります。しかし、これらは命令セットの正式な定義の一部ではないため、Z80の異なる実装において、すべての文書化されていないオペコードが同じように動作することは保証されていません(また、必ずしもそうであるとは限りません)。

バグ

このOTDR命令はZ80のドキュメントに準拠していません。命令OTDROTIR命令はどちらもキャリーフラグ(C)を変更しないことになっています。命令はOTIR正常に動作しますが、命令実行中にOTDRキャリーフラグはアキュムレータ(A)とOTDR命令の最後の出力との比較結果を取得します。[57]

サンプルコード

以下のZ80アセンブリソースコードは、memcpy指定されたサイズのデータ​​バイトブロックをある場所から別の場所にコピーするサブルーチン のものです。データブロックは1バイトずつコピーされ、データの移動とループ処理には16ビット演算が用いられます。このコードでは様々な命令が示されていますが、実際にはこのサブルーチン全体を置き換える単一の命令 があるため、このようにコーディングされることはありませんLDIR。サンプルコードでは、46 Tステートごとに1バイトを移動します。LDIR命令に置き換えると、各バイトの移動は21 Tステートで済みます。アセンブルされたコードは、Intel 8080および8085 CPUとバイナリ互換であることに注意してください。

命令実行

各命令は、通常マシンサイクル(Mサイクル)と呼ばれるステップで実行され、各サイクルは3~6クロック周期(Tステート)かかります。[58]各Mサイクルは、おおよそ1回のメモリアクセスまたは内部操作に相当します。複数の命令は実際には次の命令のM1サイクル中に終了し、これはフェッチ/実行オーバーラップと呼ばれます

Z80のマシンサイクルは、内部ステートマシンによってシーケンス化され、各Mサイクルはコンテキストに応じて3、4、5、または6つのTステートから構成されます。これにより、煩雑な非同期ロジックが回避され、制御信号は幅広いクロック周波数で一貫した動作を実現します。また、このマシンサイクル分割を行わない場合よりも高い周波数の水晶発振器を使用する必要があります(約2~3倍)。ただし、これはメモリアクセス時間に対する要件が厳しくなることを意味するものではありません。高解像度クロックにより、メモリタイミングをより正確に制御できるため、CPUとメモリを並行してアクティブにできる範囲が広がり、利用可能なメモリ帯域幅をより効率的に使用できます。[要出典]

その代表的な例として、 Z80はオペコードフェッチにおいて、2つのクロックサイクルをメモリアクセス期間(M1信号)に統合している点が挙げられる。Z80では、この信号は6800や6502などの設計と比較して、典型的な命令実行時間の中で比較的長い時間持続する。6800や6502などの設計では、この期間はクロックサイクルの30~40%程度であるのが一般的である。[要出典]メモリチップの価格(例えば、1980年代のアクセス時間は450~250ナノ秒程度[要出典])が通常、可能な限り最速のアクセス時間を決定するため、このような設計はZ80よりもはるかに長いクロックサイクル(つまり、内部クロック速度が低い)に固定されていた。

メモリは、当時のマイクロプロセッサで使用されているステートマシンのサブサイクル(クロックサイクル)に比べて、一般的に低速でした。そのため、組み込み設計で安全に使用できる最短のマシンサイクルは、CPUの最高周波数ではなく、メモリアクセス時間によって制限されることがよくありました(特に家庭用コンピュータの時代はそうでした)。しかし、この関係はここ数十年で徐々に変化しており、特にSRAMに関しては顕著です。そのため、eZ80のようなキャッシュレスでシングルサイクルの設計は、近年、より重要な意味を持つようになりました。

リフレッシュレジスタRの内容は、CPUがフェッチした命令をデコードして実行している間、リフレッシュ制御信号とともにアドレスバスの下位半分に送出される。リフレッシュ中は、割り込みレジスタIの内容がアドレスバスの上位半分に送出される。[65]

互換性のある周辺機器

Zilog社はZ80向けに、Z80の割り込み処理システムとI/Oアドレス空間をサポートする多数の周辺部品を導入した。これらには、カウンタ/タイマチャネル(CTC)[66] 、 SIO(シリアル入出力)、DMA(ダイレクトメモリアクセス)、PIO(パラレル入出力)、DART(デュアル非同期送受信)などが含まれる。製品ラインの進化に伴い、これらのチップの低消費電力版、高速版、CMOS版が次々と導入された。

  • ピオZ84C2008
    ピオZ84C2008
  • CTC Z84C3008
    CTC Z84C3008
  • SIO Z84C4008
    SIO Z84C4008

8080、8085、8086プロセッサと同様に、Z80と8080はI/O命令用の独立した制御ラインとアドレス空間を備えていますが、モトローラ6800やMOSテクノロジー6502などのプロセッサとは異なります。Osborne 1などの一部のZ80ベースのコンピュータは「モトローラ式」のメモリマップド入出力デバイスを使用していましたが、通常、I/O空間はZ80と互換性のあるZilog周辺チップの1つをアドレス指定するために使用されていました。I/O読み取りまたはI/O書き込み操作のタイミング中に、Z80によって1つの待機サイクルが自動的に挿入されます。[67] Zilog I/Oチップは、多数の周辺機器の割り込み処理を簡素化するZ80の新しいモード2割り込みをサポートしていました。

Z80は公式には16ビット(64KB)のメモリアドレッシングと8ビット(256ポート)のI/Oアドレッシングをサポートしていると説明されていた。すべてのI/O命令は実際には16ビットのアドレスバス全体をアサートする。OUT (C),regとIN reg,(C)は16ビットBCレジスタ全体の内容をアドレスバスに配置する。[57] OUT (n),AとIN A,(n)はAレジスタの内容をアドレスバスのb8〜b15に、ポートアドレスnをアドレスバスのb0〜b7に配置する。設計者はこの機能を利用するためにI/O操作時に16ビットアドレスバス全体をデコードするか、アドレスバスの上位半分を使用してI/Oデバイスのサブ機能を選択することができる。この機能は、Amstrad CPC / PCWZX81などで、デコードハードウェア要件を最小限に抑えるためにも使用されている。

セカンドソースと派生品

セカンドソース

Zilog向けに最初のZ80を製造したMostekは、 MK3880としてセカンドソースとして提供した。SGS-Thomson(現在のSTMicroelectronics)もZ8400でセカンドソースであった。シャープとNECはそれぞれLH0080とμPD780CというNMOS Z80のセカンドソースを開発した。LH0080は、ソニーの MSXコンピュータやシャープMZシリーズの多くのコンピュータなど、シャープや他の日本メーカー製のさまざまな家庭用コンピュータやパーソナルコンピュータに使用された。[68]シャープは、4MHzと6MHzでそれぞれ動作するLH0080AとLH0080Bを開発した。 [ 69 ]シャープは、Z80 DMAと互換性のあるLH0083 [70]も開発した。

東芝はCMOS版のTMPZ84C00を製造しましたが、これはZilogが自社のCMOS Z84C00に使用したのと同じ設計だと考えられています誰が?(ただし確認はされていません)。また、 GoldStar(現LG )製のZ8400、Z80チップや、 ROHM Electronics製のNMOSおよびCMOSのZ80クローンのBU18400シリーズ(DMA、PIO、CTC、DART、SIOを含む)もありました。LH5080、[71] 、 LH5081、[72]、LH5082、[73]はそれぞれZ80、PIO、CTCのCMOS版であり、シャープが製造しています。

東ドイツでは、Z80の無認可クローンであるU880製造されました。これは、Robotron社やVEB Mikroelektronik Mühlhausen社のコンピュータシステム(KC85シリーズなど)で広く使用され、また複数の自作コンピュータシステムにも使用されました。ルーマニアでは、 Microelectronica社製のMMN80CPUという無認可クローンが発見され、TIM-S、HC、COBRAなどの家庭用コンピュータで使用されました。

ソビエト連邦ではZ80のクローン機がいくつか製造されましたが、中でも注目すべきはT34BM1 ( КР1858ВМ1とも呼ばれる)です(ソビエト連邦の8080クローン機KR580VM80Aと類似)。最初の刻印は試作段階のシリーズで使用され、2番目の刻印は量産段階のシリーズで使用されました。しかし、1980年代後半のソビエト連邦のマイクロエレクトロニクスの崩壊により、КР1858ВМ1よりもT34BM1の方が多く生産されています。[要出典]

デリバティブ

オリジナルのZ80と互換性あり
  • 日立は、マイクロコード化され部分的にダイナミックなCMOS Z80であるHD64180を開発しました。オンチップ周辺回路とシンプルなMMUを備え、1MBのアドレス空間を提供します 後にZilog社にセカンドソースされ、当初はZ64180として、その後、バスプロトコルとタイミングがZ80周辺チップに適合した、若干改良されたZilog Z180 [74]として供給されました。Z180はZilog社の名前で維持・開発が続けられ、最新バージョンは低消費電力と低EMI(ノイズ)の完全スタティックS180/L180コアをベースにしています。
  • 東芝は、 84ピンのZ84013/Z84C13シリーズと100ピンのZ84015/Z84C15シリーズの「インテリジェント・ペリフェラル・コントローラ」を開発しました。これらは、基本的に通常のNMOSおよびCMOS Z80コアに、Z80ペリフェラル、ウォッチドッグタイマーパワーオンリセット、ウェイトステートジェネレータを同一チップ上に搭載したものです。シャープと東芝が製造しました。これらの製品は現在、Zilog社がセカンドソースとして提供しています。[75]
  • 1994年に導入された32ビットZ80互換のZilog Z380は、通信機器に使用されています。[76]
  • 2001年に、8/16/24ビットのワード長と16MBの線形アドレス空間を持つ、完全にパイプライン化されたZ80互換のeZ80 [77]が導入されました。オンチップSRAMまたはフラッシュメモリのバージョンと、統合型周辺機器のバージョンがあります。バリアントの1つにはオンチップのメディアアクセスコントローラ(MAC)があり、使用可能なソフトウェアにはTCP/IPスタックが含まれています。Z800やZ280とは対照的に、追加された命令はわずかですが(主にロード実効アドレス(LEA)、プッシュ実効アドレス(PEA)、および可変アドレス16/24ビットロード)、命令は元のZ80の2〜11倍のクロックサイクルで効率的に実行され、平均値は約3〜5倍です。現在、最大50MHzのクロック周波数で指定されています。
  • 川崎重工は、バイナリ互換のKL5C8400を開発しました。これは、オリジナルのZ80と比較してクロックサイクル効率が約1.2~1.3倍で、最大33MHzで動作可能です。また、川崎重工は、周辺機能と小型RAMを内蔵したKL5C80A1xファミリも製造しています。これはeZ80とほぼ同等のクロックサイクル効率で、最大10MHzで動作可能です(2006年)。[78]
  • NEC μPD9002 は、Z80 ファミリとx86ファミリの両方と互換性のあるハイブリッド CPU でした。
  • 中国のActions Semiconductor社のオーディオプロセッサチップファミリー(ATJ2085など)には、Z80互換のMCUと24ビットの専用DSPプロセッサが搭載されています。[79]これらのチップは、多くのMP3およびメディアプレーヤー製品に使用されています。
  • T80(VHDL)およびTV80(Verilog)合成可能なソフトコアはOpenCores.orgから入手可能です。[80]
  • 1980年に発表されたナショナルセミコンダクターNSC800 [ 81 ]は、複数のテレセキュリティ・ティマン(TST)電子暗号機[82]およびキヤノンX-07に搭載されています。NSC800はZ80命令セットと完全な互換性があります[83] NSC800は8085と同様に多重化バスを採用していますが、Z80とはピン配置が異なります。[84]
互換性なし
  • 東芝のTLCS 900シリーズは、主にワンタイムプログラマブル(1回限りのプログラム)方式の大量生産マイクロコントローラで、Z80をベースにしています。BC、DE、HL、IX、IYといった基本的なレジスタ構造と、ほぼ同一の命令セットを共有していますが、バイナリ互換性はありません。一方、前身のTLCS 90はZ80と互換性があります。[85]
  • NEC 78KシリーズマイクロコントローラはZ80をベースにしています。BC、DE、HLレジスタの基本構造は共通で、命令名は異なりますが類似しており、バイナリ互換性はありません。
部分的に互換性あり
生産終了
  • ASCII Corporation R800は、 MSX TurboRコンピュータで使用される高速 16 ビット プロセッサでした。Z80 とはソフトウェア的には互換性がありましたが、ハードウェア的には互換性がありませんでした (信号タイミング、ピン配置、ピンの機能は Z80 と異なります)。
  • Zilog社のNMOS Z800とCMOS Z280は、16MBページMMUアドレス空間を備えた16ビットZ80実装(HD64180/Z180以前)であり、Z80命令セットに複数の直交化とアドレッシングモードを追加しました。ミニコンピュータの機能(ユーザーモードとシステムモード、マルチプロセッササポート、オンチップMMU、オンチップ命令キャッシュとデータキャッシュなど)は、(通常は電子工学志向の)組み込みシステム設計者にとって、機能やサポートというよりもむしろ複雑なものとして捉えられていました。また、命令実行時間の予測も困難でした。[要出典]
  • Pang / Buster Bros.などの一部のアーケードゲームでは、 VLSI Technology社製の暗号化された「Kabuki」Z80 CPUが使用されており、復号化キーは内部のバッテリーバックアップメモリ​​に保存され、著作権侵害や違法な海賊版ゲームを回避しています。[88]

注目すべき用途

デスクトップコンピューター

Z80A は、このColecoVisionなど、多くのゲーム コンソールの CPU として使用されていました。Z80 はエッジ コネクタの近くにあります。

1970年代後半から1980年代前半にかけて、Z80はCP/Mオペレーティングシステムを搭載した、比較的目立たないビジネス向けマシンの多くに使用され、当時この組み合わせは市場を席巻していました。[89] [90] CP/Mを搭載したZ80ビジネスコンピュータの有名な例としては、Heathkit H89、ポータブルのOsborne 1Kayproシリーズ、Epson QX-10の4つがあります。あまり知られていないのは、高価なハイエンドのOtrona Attacheです。[91]一部のシステムでは、マルチタスクオペレーティングシステムソフトウェア(MP/MMorrowのMicronixなど)を使用して、1つのプロセッサを複数の同時ユーザーで共有していました。

3.5 MHz の Z80 を搭載したSinclair ZX Spectrum

Z80をメインプロセッサとして、あるいはZ80用に書かれたソフトウェアにアクセスするためのプラグインオプションとして搭載した、複数の家庭用コンピュータが発売された。注目すべきものとしては、TRS-80シリーズがあり、オリジナルモデル(後に「モデルI」と改名された)、モデルIIモデルIIIモデル4はZ80をメインプロセッサとして搭載していた。また、他のいくつかの(すべてではない)TRS-80モデルはZ80をメインまたはセカンダリプロセッサとして使用していた。その他の注目すべきマシンとしては、DEC Rainbow 100Seequa Chameleonがあり、どちらもIntel 8088とZ80 CPUの両方を搭載し、Z80上で動作する8ビットCP/M-80アプリケーション、または8088上で動作する PC DOSアプリケーションと完全には互換性のないカスタムMS-DOSをサポートしていた。

1981年、Multitech(後のAcer)は、Z80マイクロプロセッサ用のシンプルで安価なトレーニングシステムであるMicroprofessor Iを発表しました。現在も、英国サウサンプトンのFlite Electronics International Limitedによって製造・販売されています

1984年、東芝は日本とオーストラリアでToshiba MSX HX-10を発売しました。

1985 年、シャープはHotbit を、グラディエンテは Expert を発表しましこれら1980 年代後半まで ブラジルで主流の 8 ビット家庭用コンピュータとなりました。

ポータブルコンピュータとハンドヘルドコンピュータ

CMOS版プロセッサが利用可能になったことで、Z80はより軽量で電池駆動のデバイスで広く使われるようになった。これはまた、シャープのLH5801 [92]など、他のCMOSベースプロセッサの開発にも影響を与えた。シャープは1981年にBASICでプログラム可能なポケットコンピュータであるPC-1500を発売し、続いて1986年に改良版PC -1600 、1991年にPC-E220を発売した。シャープのウィザードシリーズのパーソナルオーガナイザーの後継モデルもZ80ベースだった。デスクトップマシンと同様にCP/Mオペレーティングシステムを実行できるラップトップは、1984年にエプソンPX-8 Geneva、1985年にエプソンPX-4Bondwell-2に続いた。その後の数年間、ラップトップ市場はより強力なインテル 8086プロセッサーと MS-DOS オペレーティングシステムへと移行していったが、1988 年のCambridge Z88や 1992 年のAmstrad NC100など、より長いバッテリー寿命を持つ軽量の Z80 ベースのシステムが引き続き導入された。Z80由来のZ8S180は、初期のペン操作式パーソナルデジタルアシスタントである 1993 年のAmstrad PenPad PDA600にも採用された。香港のVTechは、Z80 をベースにした「Lasers」と呼ばれる小型ラップトップコンピューターのシリーズを製造した。[93] [94]最後の 2 つは Laser PC5 [95]と PC6 である。[96] 1999 年に初めてリリースされた Cidco MailStation Mivo 100 は、Z80 ベースのマイクロコントローラーを搭載したスタンドアロンのポータブル電子メールデバイスであった。[97]テキサス・インスツルメンツは、Z80コアをベースにした東芝のプロセッサを搭載したポケットオーガナイザーのライン(2000年終了)を製造しました。その最初の製品はTI PS-6200 [98]で、その後数十種類のモデルが長期間生産され、PocketMateシリーズが完成しました。[99]

組み込みシステムと民生用電子機器

Z80ベースのPABX。手書きの白いラベルが貼られたチップの右側にZ80があります。

Zilog Z80は、組み込みシステムマイクロコントローラコアで長年人気のマイクロプロセッサであり、[40]現在でも広く使用されています。[30] [100] Z80の用途には、民生用電子機器、工業製品、電子楽器などがあります。例えば、Z80は画期的な音楽シンセサイザーProphet-5に搭載され、[101] MIDIを搭載した最初のシンセサイザーProphet 600にも搭載されました[102] Z80は、 1976年から1986年までE-mu Systemsのすべての楽器のベースでした。[ 103] カシオは、ビデオゲームコンソール PV-1000にZ80Aを搭載しました。

アーケード ゲーム「パックマン」を含む 1980 年代初頭の多くのアーケード ビデオ ゲームには、 Z80 CPU が搭載されています。

Z80は、セガのマスターシステムおよびゲームギアに搭載されていました。セガジェネシスには、MC68000メインCPUと並列動作する8KBのRAMを搭載したZ80が搭載されており、システムのサウンドチップやI/O(コントローラ)ポートに直接アクセスでき、68000のメインメモリバスへのスイッチドデータパス(64KBのメインRAM、ソフトウェアカートリッジ、そしてビデオチップ全体へのアクセスを提供)も備えています。マスターシステムゲームとの下位互換性に加えて、Z80はジェネシスソフトウェアにおけるオーディオの制御と再生にも頻繁に使用されています。[n]

Z80 CPUは、テキサス・インスツルメンツ社製の人気のグラフ電卓TI-8xシリーズにも採用されていました。1990年に発売されたTI-81には、2MHzのクロック周波数を持つZ80が搭載されていました。TI -82TI-85をはじめとする、同シリーズの上位機種のほとんどは、6MHz以上のクロック周波数を持つZ80 CPUを搭載しています。(TI-8xという名称のモデルの中には、M68000など他のCPUを搭載しているものもありますが、大多数はZ80ベースです。これらのモデルでは、アセンブルまたはコンパイルされたユーザープログラムをZ80マシン語コード形式で実行できます。)

TI-83およびTI-84 Plusモデルのグラフ電卓は Z80 を使用し、TI-84 Plus CE シリーズはeZ80を使用します。これら 3 つの電卓シリーズはすべて、2025 年現在も Texas Instruments によって販売されています。

1980年代後半、ソ連の固定電話シリーズ「AON」にZ80が搭載されました。これらの電話機は、発信者ID 、発信者に基づいた異なる着信音、短縮ダイヤルなどの機能を追加して、固定電話機の機能を拡張しました。[104]しかし、1990年代後半には、これらの電話機のメーカーは、消費電力を削減し、コンパクトな壁面電源アダプターの過熱を防ぐために、8051互換のMCUに切り替えました。

中止

2024年4月15日、Zilog社はZ80プロセッサの製造中止を発表しました。注文受付は2024年6月14日までとなります。発表にはZ80プロセッサの13種類の派生製品が含まれており、その中にはDIP40チップの派生製品も含まれていました。Zilog社は、アップグレード版のeZ80プロセッサの製造を継続します。 [5]

参照

脚注

  1. ^ フェデリコ・ファギンのオーラルヒストリーによると、ナショナルはCMOSのみでNMOS版は作っていない。
  2. ^ CMOS 版は 20 MHz まで、バイナリ互換版は 50 MHz まで動作しました。
  3. ^ Intel 8080との下位互換性あり
  4. ^ これは当時のミニコンピュータ設計ではかなり一般的な機能であり、初期のマイクロプロセッサの多くに採用されました。
  5. ^ Zilog は、製造工場を売却して現在のようなファブレス」企業になるまで、長年にわたって Z80 およびその他のほとんどの製品を製造していました。
  6. ^ 8080には16ビット加算命令と16ビット増分・減分命令はありましたが、明示的な16ビット減算命令とオーバーフローフラグはありませんでした。Z80はこれを補完し、ADC HL,rr命令とSBC HL,rr命令が追加されました。これらの命令は、オーバーフローフラグを適切に設定します。(8080互換のADD HL,rr命令はオーバーフローフラグを設定しません。)
  7. ^ 特に、 ZX81ホームコンピュータで使用されていた40ビット浮動小数点形式の2つのオペランド32ビット仮数部を同時に処理するために使用されました。また、スウェーデンのABC 80ABC 800など、初期のZ80ベースのコンピュータでも同様の方法で使用されていましたが、あまり知られていません
  8. ^ このリフレッシュではデータの転送は必要なく、連続した行アドレスを出力するだけなので、占有する T ステートは 1.5 未満です。M1 読み取りサイクルは、通常のメモリ読み取りよりも 1/2 サイクル短くなります。Z80 の専用 M1 信号 (マシン サイクル 1 ) を使用すると、メモリ チップは命令フェッチとデータ アクセスに同じ読み取り時間 (4Tフェッチサイクルのうちほぼ 2 つの完全な T ステート、および 3T データ読み取りサイクルのうちほぼ 2 つ) を使用できます。読み取り (または M1) の後縁に対するアドレス有効時間は、通常の読み取りよりも 1/2 サイクル短くなります。Z80 は、同じクロック周波数で 8080 (または 8086) と同じアクセス時間範囲のメモリを使用できます。このマルチサイクル読み取りにより、Z80 は同じ速度のメモリを使用する 6800、6502、または類似のものよりも約 4 倍の内部周波数を使用できます。
  9. ^ ダイナミック ラッチを使用し、数千クロック サイクル以上停止できなかったオリジナルの nMOS バージョンとは異なります。
  10. ^ 関連する8086ファミリもこのレジスタ設計を継承しました。
  11. ^ この可変 HL ポインタは、実際には Datapoint 2200 でメモリ (データ用) にアクセスする唯一の方法であり、したがって Intel 8008 でも同じでした。直接アドレスを使用してデータにアクセスすることはできませんでした。
  12. ^ メモリ即時ロードは Datapoint 2200 では使用できません。
  13. ^ たとえば、8080 では、プログラマはADDアキュムレータにゼロを加算する、SUBアキュムレータからゼロを引き算する、またはアキュムレータにゼロをOR加算またはXOR引き算することでアキュムレータのパリティをテストできます。これらはすべて、8080 と Z80 の両方で、速度とサイズが同じ単一命令操作です。プログラマがたまたまアキュムレータにゼロを加算または引き算してパリティをテストすることを選択した場合ORXORZ80 はプログラムを正しく実行しますが、プログラマがパリティをゼロを加算または引き算してテストすることを選択した場合ADDSUBZ80 は (ゼロの加算または減算ではオーバーフローやアンダーフローが発生しないため) 常に P/V フラグをリセットします。8080 や 8085 のようにバイトのパリティを正しく示すために P を割り当てるのではなく、プログラムが失敗する可能性があります。 Intel 8080のプログラミングマニュアルには、パリティテストに算術命令の使用を推奨したり、論理命令の使用を規定したりした記述はないため、8080プログラマがどちらか一方を選択する理由はほとんどありません。実際のアプリケーションでは、この例で示した算術命令が論理命令としてパリ​​ティテストに選択される可能性は低くAND AOR Aより高速で1バイトも短いからです。
  14. ^ この一般的な使用法は、単なるオプションであり、制限するものではありません。そのため、Genesis の Z80 は「サウンド プロセッサ」と頻繁に誤って説明されます。

参考文献

  1. ^ abc Zilog (2005). Z80ファミリーCPUユーザーマニュアル(PDF) . Zilog. p. 5. 2009年6月19日時点のオリジナルよりアーカイブ(PDF) . 2009年7月18日閲覧
  2. ^ 「チップの殿堂:Zilog Z80マイクロプロセッサ - IEEE Spectrum」spectrum.ieee.org . 2024年11月22日閲覧
  3. ^ Edwards, Benj (2024年4月22日). 「48年後、Zilogは古典的なスタンドアロン型Z80マイクロプロセッサチップを廃止する」Ars Technica . 2024年11月22日閲覧。
  4. ^ Faggin、Shima、Ungermann 2007より。
  5. ^ ab Edwards, Benj (2024年4月22日). 「48年後、Zilogはスタンドアロン型Z80マイクロプロセッサチップの定番を廃止する」Ars Technica . 2024年5月12日時点のオリジナルよりアーカイブ。 2024年5月23日閲覧
  6. ^ Faggin、Shima、Ungermann 2007、p.1より。
  7. ^ Faggin、Shima、Ungermann 2007、p.2より。
  8. ^ abc Faggin、Shima、Ungermann 2007、p.3。
  9. ^ abc Faggin、Shima、Ungermann 2007、p.4。
  10. ^ ファギン、シマ、ウンガーマン 2007年、8ページ。
  11. ^ Faggin、Shima、Ungermann 2007、p.5より。
  12. ^ ファギン、シマ、ウンガーマン 2007年、19ページ。
  13. ^ ファギン、シマ、ウンガーマン 2007年、6ページ。
  14. ^ ファギン、シマ、ウンガーマン 2007年、7ページ。
  15. ^ ファギン、シマ、ウンガーマン 2007年、17ページ。
  16. ^ 「Z80® DMA ダイレクトメモリアクセスコントローラ」(PDF) 。 2024年2月5日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月8日閲覧
  17. ^ アンダーソン(1994)、51ページ。
  18. ^ ファギン、シマ、ウンガーマン 2007年、13ページ。
  19. ^ ホルダー、キース(1984年2月16日)「エクソンとザイログ、NECと和解」『コンピュータ・ウィークリー』 9ページ。 2025年6月15日閲覧
  20. ^ ファギン、シマ、ウンガーマン 2007年、9ページ。
  21. ^ アンダーソン(1994)、57ページ。
  22. ^ ab ブロック、ジェラルド・W. (2003). 『第二の情報革命』 ハーバード大学出版局. ISBN 978-0-674-01178-6
  23. ^ 「8ビットの歴史:短期間で遠くまで旅する」InfoWorld . 第4巻、第47号。カリフォルニア州パロアルト:Popular Computing Inc. 1982年11月29日。pp.  58– 60。ISSN 0199-6649  。2024年1月5日時点のオリジナルよりアーカイブ。
  24. ^ Faggin, Federico; Shima, Masatoshi ; Ungermann, Ralph (1976年8月19日). 「Z-80チップセットがマイクロプロセッサ第3世代の到来を告げる」(PDF) . Electronics . Vol. 49, no. 17. New York: McGraw–Hill . pp.  89– 93. 2023年1月31日時点のオリジナルよりアーカイブ(PDF) 。
  25. ^ Ciarcia (1981)、31、32ページ。
  26. ^ ab Chen, Wai-Kai (2002).回路とフィルタハンドブック. CRC Press . p. 1943. ISBN 978-0-8493-0912-0割り込み処理は、 IM i ( i =  0、1、または2)命令で指定された割り込み方式に従って開始されます 。i = 1(直接方式 の場合、PCには0038Hがロードされます。i  = 0(ベクター方式)の場合、割り込みデバイスは1バイト分のオペコードを配置できます。i = 2(間接ベクター方式)の場合、割り込みデバイスは1バイトを配置する必要があります。Z80はこのバイトを使用し バイトによって128個の割り込みベクターから1つを選択できます。
  27. ^ Mathur (1989). 『マイクロプロセッサ入門』 Tata McGraw-Hill Publishing Company. p. 111. ISBN 978-0-07-460222-5Z80のレジスタアーキテクチャは8085よりも革新的である
  28. ^ Brewer, Tony. 「Z80 Special Reset」. GitHub . 2024年4月27日時点のオリジナルよりアーカイブ2024年4月27日閲覧。
  29. ^ Adrian, Andre (2011年6月4日). “Z80, the 8-bit Number Cruncher”. 2023年11月26日時点のオリジナルよりアーカイブ。
  30. ^ ab マーク・バルチ(2003年6月18日)「デジタルの基礎」『完全デジタル設計:デジタルエレクトロニクスとコンピュータシステムアーキテクチャの包括的ガイド』プロフェッショナル・エンジニアリング社、ニューヨークマグロウヒル・プロフェッショナル、p.122、ISBN 0-07-140927-0
  31. ^ Seyboldレポート「プロフェッショナルコンピューティング」。Seybold Publications。1983年。8ビットの世界では、Z80と6502の2つのマイクロコンピュータが最も人気のあるコンピュータチップです。
  32. ^ Adrian, Andre (2011年6月4日). “Z80, the 8-bit Number Cruncher: Z80 32-bit (long) add”. 2023年11月26日時点のオリジナルよりアーカイブ。
  33. ^ ポピュラーコンピューティングマグロウヒル、1983年、15ページ。
  34. ^ Markoff, John (1982年10月18日). 「Zilogの高速Z80が8ビットから16ビットのパフォーマンスを向上」. InfoWorld . 第4巻第41号. パロアルト, カリフォルニア州: Popular Computing, Inc. p. 1. ISSN  0199-6649. 2024年1月5日時点のオリジナルよりアーカイブ。
  35. ^ Electronic design . Hayden. 1988. p. 142. Z80命令セット全体をサポートすることに加えて、Z180は
  36. ^ Ganssle, Jack G. (1992). 「Z80は生き残る!」. 2023年12月20日時点のオリジナルよりアーカイブ。設計者はZ80と互換性のあるアーキテクチャを選択し、Z80ユーザーに完全にソフトウェア互換性のあるアップグレードパスを提供しました。64180プロセッサは、Z80のすべての命令をZ80と全く同じように実行します。
  37. ^ Shiriff, Ken. 「シリコンに至るまで:Z80のレジスタの実装方法」。2023年11月5日時点のオリジナルよりアーカイブ。
  38. ^ キロボー。 1001001、1977、p. 22.
  39. ^ ロドニー、ザックス (1982). Z80 のプログラミング (第 3 版)。サイベックス。 p. 62.ISBN 978-0-89588-069-7
  40. ^ ab Heath, Steve (2003). Embedded systems design . Oxford: Newnes. p. 21. ISBN 978-0-7506-5546-0
  41. ^ ノース、ジョン(1991年3月)「ハッキングの方法」ユア・シンクレア誌第63号、77ページ。
  42. ^ Rison, Mark. Young, Sean (ed.). "Z80 Flag Affection". z80.info . Thomas Scherrer. 2023年12月23日時点のオリジナルよりアーカイブ。 2016年6月14日閲覧
  43. ^ Shirriff, Ken. 「Z-80には4ビットALUが搭載されています。その仕組みをご紹介します」。2013年9月9日時点のオリジナルよりアーカイブ。 2021年11月16日閲覧
  44. ^ ab Durda IV, Frank (2012). 「8080/Z80命令セット」。2016年2月11日時点のオリジナルよりアーカイブ2009年7月22日閲覧。
  45. ^ "8080A/ 8ビットNチャネルマイクロプロセッサ". Intel Component Data Catalog 1978 . サンタクララ、カリフォルニア州: Intel Corporation. 1978年. pp.  11– 17.すべてのニーモニックの著作権はIntel Corporation 1977に帰属します。
  46. ^ 「Z80 再配置マクロアセンブラ ユーザーズガイド」(PDF) p. 2–2。 2011年7月20日時点のオリジナル(PDF)からアーカイブ。 2009年6月4日閲覧
  47. ^ Scanlon, Leo J. (1988). 8086/8088/80286アセンブリ言語. Brady Books. p. 12. ISBN 978-0-13-246919-78086は、アセンブリ言語レベルで8080とソフトウェア互換性があります[ ...]
  48. ^ Nelson, Ross P. (1989年1月) [1988]. 『80386ブック:80386用アセンブリ言語プログラマガイド』 . Microsoftプログラミングシリーズ(第1版). Microsoft Press . p. 2. ISBN 978-1-55615-138-5. [...] Intelトランスレータ プログラムは、8080アセンブラ プログラムを8086アセンブラ プログラムに変換できます [...]
  49. ^ ab "Z80 CPU Introduction". Zilog . 1995年. 2023年12月20日時点のオリジナルよりアーカイブ。252個のルート命令からなる言語を持ち、プレフィックスとして予約された4バイトを用いて、さらに308個の命令にアクセスする。
  50. ^ 「Z80-CPU命令セット」(PDF). Zilog . 1976. p. 19. 2023年11月5日時点のオリジナルよりアーカイブ2021年7月20日閲覧。
  51. ^ サンチェス、フリオ; カントン、マリア・P. (2008).エンジニアと科学者のためのソフトウェアソリューション. テイラー&フランシス. p. 65. ISBN 978-1-4200-4302-080x86 ファミリより前の 8 ビット マイクロプロセッサ (Intel 8080、Zilog Z80、Motorola など) には乗算機能は搭載されていませんでした
  52. ^ Ciarcia (1981)、86ページ。
  53. ^ ヘイズ、ジョン・P. (1978).コンピュータアーキテクチャと組織. マグロウヒル. p. 423. ISBN 0-07-027363-4
  54. ^ フレーリッヒ, ロバート A. (1984).フリーソフトウェアカタログとディレクトリ. クラウン・パブリッシャーズ. p. 133. ISBN 978-0-517-55448-7文書化されていない Z80 コードでは、IX レジスタと IY レジスタを使用した 8 ビット操作が可能です。
  55. ^ ab Bot, Jacco JT「Z80 未文書化命令」。Z80 CPU のホームページ。2023年12月23日時点のオリジナルからのアーカイブ。オペコードがレジスタ HL、H、または L で機能する場合、そのオペコードの前に #DD(または #FD)が付くと、IX、IXH、または IXL(または IY、IYH、IYL)でも機能しますが、一部例外があります。例外となるのは、LD H,IXH や LD L,IYH のような命令です。
  56. ^ ロビン・ニクソン『アムストラッド メモ帳 上級ユーザーガイド』、ロビン・ニクソン、1993年、 ISBN 1-85058-515-6、219~223ページ。
  57. ^ ab Young, Sean (1998年10月). 「Z80 未文書化機能 (ソフトウェア動作)」. 2023年12月25日時点のオリジナルよりアーカイブ。I /O命令はアドレスバスの下位8ビットだけでなく、アドレスバス全体を使用します。そのため、Z80システムでは実際には65536個のI/Oポートを持つことができます(Spectrumはこれを使用しています)。IN r,(C), OUT (C),r、およびすべてのI/Oブロック命令は、アドレスバスにBC全体を配置します。IN A,(n) および OUT (n),A は、A*256+n をアドレスバスに配置します。
  58. ^ 「タイミング」。Z80ファミリーCPUユーザーマニュアル(PDF)。Zilog 。2016年。p . 7。UM008011-0816。2023年12月26日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月5日閲覧
  59. ^ Ciarcia (1981)、65ページ。
  60. ^ ロドニー、ザックス (1989)。 Z80のプログラミング。サイベックス。 p. 200.ISBN 978-0-89588-069-7. ADD A, n アキュムレータに即値データ n を加算します。メモリタイミング: 2 M サイクル、7 T ステート。
  61. ^ Ciarcia (1981)、63ページ。
  62. ^ Ciarcia (1981)、77ページ。
  63. ^ Ciarcia (1981)、36ページ。
  64. ^ Ciarcia (1981)、58ページ。
  65. ^ 「特殊用途レジスタ」Z80ファミリーCPUユーザーマニュアル(PDF) Zilog 2016年 p. 3. UM008011-0816. 2023年12月26日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月5日閲覧
  66. ^ 「Z80ファミリーCPU周辺機器ユーザーマニュアル」(PDF) . EEWORLDデータシート. ZiLOG . 2001年. オリジナル(PDF)から2014年5月2日時点のアーカイブ。 2014年4月30日閲覧
  67. ^ 「シャープ 1986 半導体データブック」(PDF) 218ページ。2024年1月1日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月1日閲覧
  68. ^ 「SHARP MZシリーズの概要」SharpMZ.org。2008年3月27日時点のオリジナルよりアーカイブ2011年7月28日閲覧。ほとんどのMZシリーズは8ビットCPU LH0080 / Z80を搭載しています [...]
  69. ^ “LH0080/LH0080A/LH0080B”. 1986年半導体データブック(PDF) .シャープ株式会社. 1986年. p. 210. 2024年1月1日時点のオリジナルよりアーカイブ(PDF) . 2024年1月1日閲覧
  70. ^ 「シャープ 1986 半導体データブック」(PDF) pp.  255– 269. 2024年1月20日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月13日閲覧
  71. ^ 「シャープ 1986 半導体データブック」(PDF) pp.  296– 301. 2024年1月20日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月20日閲覧
  72. ^ 「シャープ 1986 半導体データブック」(PDF) pp.  302– 306. 2024年1月28日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月28日閲覧
  73. ^ 「シャープ 1986 半導体データブック」(PDF) pp.  307– 311. 2024年1月28日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月28日閲覧
  74. ^ Ganssle, Jack G. (1992). 「Z80は生き続ける!」. 2009年5月1日時点のオリジナルよりアーカイブ2009年7月17日閲覧。64180は、日立製のZ80コアに多数のオンチップ「追加機能」を搭載したものです。ZilogのバージョンはZ180で、基本的に同じ部品です。
  75. ^ Ganssle, Jack G. (1992). 「Z80は生き続ける!」. 2009年5月1日時点のオリジナルよりアーカイブ2009年7月17日閲覧。東芝とZilogはともに、従来のZ80周辺機器をオンボードに統合したZ80コアである84013と84015を販売している。
  76. ^ Granville, Fran (1996年8月1日). “EDN Access — 08.01.96 Z80 turns 20”. EDN . 2023年8月7日時点のオリジナルよりアーカイブ2023年8月7日閲覧。
  77. ^ “EZ80 ACCLAIM 製品ファミリー”. Zilog. 2008年12月20日時点のオリジナルよりアーカイブ。
  78. ^ Electronic Business Asia . Cahners Asia Limited. 1997. p. 5.川崎重工のKL5C80A12、K​​L5C80A16、KL5C8400は、高速8ビットMCUおよびCPUです。CPUコードKC80は、ZilogのZ80とバイナリレベルで互換性があります。KC80は、同じクロック周波数でZ80の約4倍の速度で命令を実行します。
  79. ^ “ハードウェア仕様”. S1mp3.org . 2005年10月19日. 2005年12月8日時点のオリジナルよりアーカイブ。
  80. ^ “Overview :: T80 cpu :: OpenCores”. opencores.org . 2024年4月1日時点のオリジナルよりアーカイブ。 2024年7月1日閲覧
  81. ^ Rada, Col (1981年3月). 「NSC800 — 低消費電力、高性能なマイクロプロセッサフ​​ァミリー」 . Electronics and Power . 27 (3). Institution of Engineering and Technology : 222. doi :10.1049/ep.1981.0107. 2021年10月16日時点のオリジナルよりアーカイブ。 2021年6月1日閲覧
  82. ^ “TST-4043: HFモデムとFECを備えたデータ暗号化装置”. Crypto Museum . 2018年2月27日. 2023年11月5日時点のオリジナルよりアーカイブ。
  83. ^ 「NSC800 高性能低消費電力CMOSマイクロプロセッサ」(PDF) .ナショナル セミコンダクター. 1992年6月. 2023年11月19日時点のオリジナルよりアーカイブ(PDF) 。
  84. ^ “MCS-85、Zilog Z80、National NSC800拡張ボード”. CPU Shack . 2015年2月15日. 2023年9月30日時点のオリジナルよりアーカイブ。
  85. ^ 「第6章 MOS MPU、MCU、および周辺機器の市場動向」(PDF)。Integrated Circuit Engineering Corporation、p. 16。2011年6月14日時点のオリジナル(PDF)からのアーカイブ。
  86. ^ アクセルソン・ジャン(2003年)「組み込みイーサネットとインターネット完全版」レイクビュー・リサーチ、p.93、ISBN 978-1-931448-00-0Rabbit Semiconductor の Rabbit 3000 マイクロプロセッサは、ZiLOG, Inc. の定評ある Z80 マイクロプロセッサを大幅に改良、強化した派生製品です。
  87. ^ Hyder, Kamal; Perrin, Bob (2004). Rabbit 3000マイクロプロセッサを用いた組み込みシステム設計. Newnes. p. 32. ISBN 978-0-7506-7872-8Rabbit のパーツは Zilog Z180 アーキテクチャに基づいていますが、Zilog のパーツとはバイナリ互換性がありません
  88. ^ Cruz, Eduardo (2014年11月23日). 「Capcom Kabuki CPU – Intro」. Arcade Hacker . 2023年11月5日時点のオリジナルよりアーカイブ。
  89. ^ ホルツ、ハーマン (1985).コンピュータワークステーション. チャップマン&ホール. p. 223. ISBN 978-0-412-00491-9CP/M は、マイクロコンピュータの 8 ビットの世界を支配し続けました。
  90. ^ Dvorak, John C. (1982年5月10日). 「CP/Mの後、オブジェクト指向オペレーティングシステムが業界をリードする可能性がある」. InfoWorld . 第4巻第18号. InfoWorld Media Group. p. 20. ISSN  0199-6649. 2024年1月6日時点のオリジナルよりアーカイブ。汎用オペレーティングシステムという概念はまだ初期段階にあります。多くの点で、それはCP/Mと初期の8080およびZ80コンピュータの寄せ集めから始まっています。
  91. ^ ステンゲル、スティーブン. 「Otrona Attache」.スティーブの古いコンピュータ博物館. 2023年12月27日時点のオリジナルよりアーカイブ。 2019年3月5日閲覧
  92. ^ 「Sharp PC-1500 テクニカルリファレンスマニュアル」(PDF) 。 2023年11月5日時点のオリジナルよりアーカイブ(PDF) 。
  93. ^ 「Poor Man's Laptop」Googleブックス。『Popular Mechanics』1991年4月号、120ページ。1991年4月。 2018年4月11日閲覧
  94. ^ “Laser PC4”. Old Computer Museum . 2023年11月5日時点のオリジナルよりアーカイブ。 2018年4月11日閲覧
  95. ^ “Laser PC5 from VTech”. larwe.com . 2023年11月5日時点のオリジナルよりアーカイブ2018年4月11日閲覧。
  96. ^ “Laser PC6”. Perfect Solutions.com . Perfect Solutions. 2018年5月21日時点のオリジナルよりアーカイブ。 2018年4月11日閲覧
  97. ^ “Mailstation Development”. Fybertech.net . 2024年1月6日時点のオリジナルよりアーカイブ2021年4月18日閲覧。
  98. ^ Woerner, Joerg. 「Texas Instruments PS-6200」. Datamath Calculator Museum . 2023年11月5日時点のオリジナルよりアーカイブ。 2019年6月18日閲覧
  99. ^ Woerner, Joerg. 「Texas Instruments PocketMate 100」. Datamath Calculator Museum . 2023年11月5日時点のオリジナルよりアーカイブ。 2019年6月18日閲覧
  100. ^ イアン・R・シンクレア (2000). 『実用エレクトロニクス・ハンドブック(第5版)』オックスフォード、アングル:ニューネス、p. 204. ISBN 978-0-7506-4585-0LCCN  00502236. OCLC 42701044  .
  101. ^ 「Gordon Reidのビンテージシンセ - Sequential Circuits Prophet 5とProphet 10」. gordonreid.co.uk . 1999年. 2023年11月5日時点のオリジナルよりアーカイブ。
  102. ^ Fabio, Adam (2014年3月19日). “Prophet 600: A Classic Synthesizer Gets Processor Upgrade”. 2023年11月5日時点のオリジナルよりアーカイブ。
  103. ^ Keeble, Rob (2002年9月). 「30 Years of Emu」. Sound On Sound . SOS Publications Group . 2025年1月10日閲覧
  104. ^ “古い携帯電話のデモを作る — AONDEMO”. habr.com . 2020年1月29日. 2023年11月5日時点のオリジナルよりアーカイブ。

出典

  • アンダーソン、A. ジョン (1994). 『コンピュータ技術の基礎』(第1版). ロンドン: チャップマン&ホール. ISBN 0-412-59810-8
  • Ciarcia, Steve (1981). 『Z80コンピュータを自分で作る ― 設計ガイドラインとアプリケーションノート』(第1版). Byte Books. ISBN 978-0-07-010962-9
  • フェデリコ・ファギン、バーナード・プウト、嶋正俊、ラルフ・ウンガーマン(2007年4月27日)。「Zilog Z8000マイクロプロセッサの開発と普及に関するオーラルヒストリーパネル」(PDF)(インタビュー)。

さらに読む

データシートとマニュアル
  • Z80 データシート (NMOS); Zilog; 10 ページ; 1978 年。
  • Z80 データブック (NMOS); Zilog; 131 ページ; 1978 年。
  • Z80 データシート (NMOS および CMOS); Zilog; 36 ページ; 2002 年。正誤表
  • Z80 ユーザーマニュアル (NMOS および CMOS); Zilog; 332 ページ; 2016 年。
  • Z80 周辺機器ユーザーマニュアル (NMOS および CMOS); Zilog; 330 ページ; 2001 年。
ハードウェア書籍
  • 自作Z80コンピュータ- 設計ガイドラインとアプリケーションノート; 第1版; Steve Ciarcia ; Byte Books; 332ページ; 1981年; ISBN 978-0070109629(アーカイブ)
  • Z80マイクロプロセッサ – アーキテクチャ、インタフェース、プログラミング、および設計; 第1版; Ramesh Gaonkar; Macmillan; 674ページ; 1988年; ISBN 978-0675205405(アーカイブ)
  • Z80 ユーザーズマニュアル – ピン定義、制御信号、周辺機器など; 第 1 版; Joseph Carr; Reston; 338 ページ; 1980 年; ISBN 978-0835995177(アーカイブ)
  • マイクロプロセッサインタフェース技術;第3版;ロドネイ・ザックス、オースティン・レシー;サイベックス;466ページ;1979年;ISBN 978-0-89588-029-1(アーカイブ)
ソフトウェア書籍
  • Z80 のプログラミング;第 3 版。ロドニー・ザクス。サイベックス; 630ページ。 1980年。ISBN 978-0895880949(アーカイブ)
  • Z80アセンブリ言語プログラミング; 第1版; ランス・レベンサル; オズボーン/マグロウヒル; 642ページ; 1979年; ISBN 978-0931988219(アーカイブ)
  • 8080/Z80アセンブリ言語 - プログラミング技術の向上; 第1版; アラン・ミラー; ジョン・ワイリー・アンド・サンズ; 332ページ; 1981年; ISBN 978-0471081241(アーカイブ)
  • Z80 および 8080 アセンブリ言語プログラミング; 第 1 版; Kathe Spracklen; Hayden; 180 ページ; 1979 年; ISBN 978-0810451674(アーカイブ)
  • 実用マイクロコンピュータプログラミング - Z80 - 常駐アセンブラとデバッグモニタのソースを含む; 第1版; Walter Weller; Northern Technology; 501ページ; 1978年; ISBN 978-0930594053(アーカイブ)
  • Z80アセンブリ言語サブルーチン; 第1版; ランス・レヴェンサルとウィンスロップ・サヴィル; オズボーン/マグロウヒル; 512ページ; 1983年; ISBN 978-0931988912(アーカイブ)
  • 未文書化Z80文書化; Sean Young; v0.91; 52ページ; 2005年. (アーカイブ)
参照カード
  • Z80マイクロプロセッサのリファレンスカード;Shirley & Nanos;Nanos Systems;16ページ;1981年(アーカイブ)
  • Z80マイクロプロセッサインスタントリファレンスカード; James Lewis; Micro Logic; 2ページ; 1981年. (アーカイブ)
  • Z80非公式サポートページ
  • Z80の技術文献
  • Z80 テストコレクション
  • Z80 チートシート
  • Z80互換チップのリスト
  • Shirriff, Ken (2013年9月). 「Z-80のリバースエンジニアリング:2つの興味深いゲートのシリコンを解説」. 2023年11月28日時点のオリジナルよりアーカイブ2023年11月26日閲覧。
  • — (2013年9月). 「Z-80は4ビットALUを搭載しています。その仕組みをご紹介します。」 2013年9月9日時点のオリジナルよりアーカイブ2021年11月16日閲覧。
  • — (2014年10月). 「シリコンの奥深く:Z80のレジスタの実装方法」. 2014年10月6日時点のオリジナルよりアーカイブ2014年10月5日閲覧。
  • — (2013年11月). 「Z-80の16ビットインクリメント/デクリメント回路のリバースエンジニアリング」。2024年1月15日時点のオリジナルよりアーカイブ2023年11月26日閲覧。

シミュレーター/エミュレーター:

  • Z80 ソフトウェア エミュレータ
  • もう一つのZ80エミュレータ
  • 教育用Z80バスエミュレータ
  • ビジュアルZ80リミックス
  • ANSI Cで書かれたZ80エミュレーションライブラリ
ボード
  • グラントの7チップZ80コンピュータ
  • グラントの9チップZ80コンピュータはCP/M 2.2またはBASICをサポート
  • link3000 6チップZ80コンピュータ、CP/M 2.2をサポート