日付スタンプによると1976年6月に製造されたZ80 | |
| 一般情報 | |
|---|---|
| 発売 | 1976年7月 |
| 製造中止 | 2024年6月 |
| 販売元 | ジログ |
| デザイン: | フェデリコ・ファギン、島正敏 |
| 共通メーカー | |
| パフォーマンス | |
| 最大CPU クロックレート | 2.5MHz~8MHz [b] |
| データ幅 | 8ビット[1] |
| アドレス幅 | 16ビット[1] |
| アーキテクチャと分類 | |
| 応用 | 組み込み、デスクトップ、ハンドヘルド |
| テクノロジーノード | 4μmプロセス |
| 命令セット | Z80 [ハ] |
| 物理的仕様 | |
| トランジスタ |
|
| パッケージ | |
| 歴史 | |
| 前任者 | インテル 8080 |
| 後継者 | |
Zilog Z80は、 Zilogが設計した8 ビットマイクロプロセッサで、初期のコンピューティングの進化に重要な役割を果たしました。1976 年に発売されたこのプロセッサは、Intel 8080とソフトウェア互換性を持つように設計されており、統合性が向上し、パフォーマンスが向上したため、魅力的な代替品となりました。8080 の 7 つのレジスタとフラグ レジスタに加えて、Z80 には代替レジスタ セット、2 つの 16 ビット インデックス レジスタ、およびビット操作やブロック コピー/検索などの追加命令が搭載されていました。
もともと8080のような組み込みシステムでの使用を意図していたZ80は、互換性、手頃な価格、優れたパフォーマンスの組み合わせにより、1970年代後半から1980年代前半にかけてビデオゲームシステムや家庭用コンピュータで広く採用され、パーソナルコンピューティング革命の推進に貢献しました。Z80は、 Osborne 1、Radio Shack TRS-80、ColecoVision、ZX Spectrum、セガのマスターシステム、パックマンアーケードキャビネットなどの象徴的な製品で使用されました。ゲームギアやTI-83シリーズのグラフ電卓などのポータブルデバイスでも引き続き使用されました。[2] [3]
Z80は、Intel 8080開発の中心人物であるフェデリコ・ファギンの発案によるものである。 1974年にIntelを去った後、ファギンはラルフ・ウンガーマンと共同でザイログ社を設立した。Z80は1976年7月に発売された。Z80からの収益で、同社は独自のチップ工場を建設した。[4]ザイログは、初期生産を支援した米国のSynertekとMostek、および欧州のセカンドソース製造業者SGSにZ80のライセンスを供与した。この設計は、日本、東欧、ソビエトのさまざまな製造業者にもコピーされ、[d] NEC、東芝、シャープ、日立などの大手企業がZ80の独自バージョンまたは互換クローンを製造したため、世界市場で受け入れられた。
Z80 は、導入後も改良を重ねながら、数十年にわたって組み込みシステムで使用されてきました。最新版のeZ80 は2001 年に導入され、現在も購入可能です。Zilog は、2024 年 4 月に Z80 の製造中止を発表し、約 50 年を経て、2024 年 6 月に正式に生産を終了しました。
歴史



初期の歴史
物理学者でエンジニアのフェデリコ・ファギンはフェアチャイルドセミコンダクター、後にインテルでトランジスタと半導体製造の基礎技術に取り組んでいた。彼はまたインテルのメモリとマイクロプロセッサに使用される基本的な設計手法を開発し、インテル4004、インテル8080、その他いくつかのICの開発を主導した。嶋正敏はファギンの監督下で4004と8080の主任ロジックおよびトランジスタレベル設計者であり、ラルフ・ウンガーマンはカスタム集積回路の設計を担当した。[5]
1974年初頭、インテルはマイクロプロセッサを単体で販売する製品としてではなく、主力製品であるスタティックRAMとROMを販売するための手段とみなしていた。組織再編により、以前は独立していた部門の多くがレス・ヴァダスの指揮下に置かれ、マイクロプロセッサの社内における地位はさらに薄れた。その年、1973年から1975年の不況がピークに達し、インテルは多くの従業員を解雇した。[5]このことでファギンは落ち着かなくなり、アンガーマンを飲みに誘い、自分の会社を立ち上げる気があるかと尋ねた。アンガーマンはすぐに同意し、インテルでの仕事が減ったため、8月か9月にインテルを去り、ファギンもそれに続いた。ファギンのインテルでの最終日は1974年のハロウィンだった。[6]島はそれを聞いて、自分も新しい会社に来たいと申し出たが、実際の製品設計も資金もなかったため、待つように言われた。[7]
新しく設立された無名の会社は、当初2001 と呼ばれるシングルチップマイクロコントローラの設計を開始しました。彼らはSynertekと会い、彼らの製造ラインでの製造について話し合いました。Faggin がコストを理解し始めると、このような低コストの製品では、Intel のように独自の製造ラインを持つ会社の設計と競合できないことが明らかになりました。そこで彼らは、当初 Super 80 と呼ばれていた、8080 などの設計で使用される一般的な -5、+5、および 12 V ではなく +5 V バス[7]を使用するという主な特徴を持つ、より複雑なマイクロプロセッサの検討を開始しました。新しい設計は 8080 と互換性があることを意図していましたが、インデックス レジスタや改善された割り込みなど、 Motorola 6800の優れた機能の多くを追加しました。[8]
エクソン投資、詳細開発開始
設立間もない頃、業界ニュースレター「エレクトロニック・ニュース」が彼らのことを知り、新設された会社に関する記事を掲載した。これがエクソンのハイテク投資部門であるエクソン・エンタープライズの注目を集めた。当時は不況の真っ只中で、ベンチャーキャピタルはほとんどなく、1975年全体で業界全体で費やされた総額は1000万ドル(2023年の5700万ドルに相当)だった。エクソンの誰かがまだ名前の決まっていないこの会社に連絡を取り、[7]会議を手配し、最終的に1975年6月に50万ドル(2023年の280万ドルに相当)の初期資金を提供することになった。[9]
資金の調達と設計の検討が進められていたため、1975年2月に島が参加した。 [8]島はすぐに高水準の設計に着手し、独自のコンセプトをいくつか追加した。特に、NECの ミニコンピュータでの経験を生かして、割り込みに素早く応答できるようにプロセッサレジスタを2セット追加するというコンセプトを追加した。[6] [e]アンガーマンは、設計を補完する一連の関連コントローラと周辺チップの開発を開始した。[10]
この時期を通じて、島はロジックコンセプトをリアルタイムで物理設計に変換できるという伝説的な評判を築いた。提案された機能について話し合っているときに、彼はしばしば割り込み、それがチップ上でどれだけのスペースを占めるかを述べ、大きすぎる場合はその追加を拒否した。[11]設計の最初のパスは1975年4月に完了した。島は5月初旬までにロジックレイアウトを完成させた。ロジック設計の2番目のバージョンは8月7日に発行され、バスの詳細は9月16日までに発行された。テープアウトは11月に完了し、テープを生産マスクに変換するのにさらに2か月を要した。[12]
ファギンはすでに生産パートナーを探し始めていた。この頃までに、シナテックとモステクはどちらも、この設計を生産するために使用できる枯渇モード生産ラインを設置していた。以前シナテックと話したことがあったファギンは、最初に彼らにアプローチした。しかし、シナテックの社長は、同社にセカンドソースライセンスを与え、設計を直接販売することを許可するよう要求した。ファギンは、これでは自社で生産ラインを設置しても競争できないだろうと考え、契約は破談になった。その後、彼はモステクに目を向け、モステクはザイログが生産ラインを設置するまで独占契約に同意し、最終的にセカンドソース契約を結んだ。[13]
新しい会社の名前をいくつも考えたが、どれも覚えにくく、1日経っても思い出せないことがわかったので、ファギンとアンガーマンは「統合ロジック」に基づいたアイデアを検討していたところ、アンガーマンが「ザイログはどうか」と言った。ファギンは即座に同意し、「統合ロジックの最終形」だと言えると述べた。翌日会って2人がすぐに思い出したとき、会社の名前が決まった。[14]
生産開始
最初のサンプルは1976年3月9日にMostekから返送されました。[10]その月末までに、アセンブラベースの開発システムも完成しました。Z80のサポートおよび周辺ICの一部はこの時点で開発中であり、その多くは翌年に発売されました。その中には、Z80 CTC(カウンター/タイマー)、Z80 DMA [15](直接メモリアクセス)、Z80 DART(デュアル非同期受信機-送信機)、Z80 SIO(同期通信コントローラー)、およびZ80 PIO(パラレル入出力)がありました。
Z80 は 1976 年 7 月に正式に発売されました。[16]最初の顧客の 1 人は、ザイログには知られていない NEC のバイヤーでした。当時、日本のエレクトロニクス企業は米国のチップ設計を無許可で製造することで有名でした。ザイログのチームはこれを懸念しており、ファギンはトランジスタを追加して、目視検査で推測される動作とは異なる動作をするように微妙に変更するというアイデアを思いつきました。島は設計の周囲にこのような「罠」を 6 つ追加しました。しばらくして、島は NEC のエンジニアから、罠のせいで模倣作業が 6 か月遅れたと聞かされました。[17]
発売が成功したことで、ファギンとアンガーマンはエクソンにアプローチし、独自の工場を建設するための資金を求めた。エクソンは同意し、ザイログは急速に生産ラインを構築した。これにより、ザイログはZ80の販売で市場全体の約60~70%を獲得することができた。[18]自社の生産ラインが稼働したことで、モステクは自社バージョンのMK3880の販売を開始する許可を得た。これは、インテルにはないセカンドソースを顧客に提供した。当時、ザイログのような新興企業は倒産し、潜在的な顧客を失う可能性があるため、セカンドソースは非常に重要と考えられていた。[8] [f]
8080との比較
ファギンは命令セットを8080とバイナリ互換になるように設計した[19] [20]。これにより、ほとんどの8080コード、特にCP/M オペレーティングシステムとIntelの8080用PL/Mコンパイラ(およびその生成コード)が、新しいZ80 CPUで変更せずに実行できるようになった。嶋正敏は、少数のエンジニアとレイアウト担当者の支援を受けて、Z80 CPUのマイクロアーキテクチャとゲートおよびトランジスタレベルのほとんどを設計した。[21] [22] CEOのフェデリコ・ファギンは、2人の専任レイアウト担当者とともに、チップレイアウト作業に深く関わっていた。ファギンによると、彼は金融投資家から与えられた厳しいスケジュールを満たすために、週に80時間働いていたという。[4]
Z80は8080に比べて多くの改良が施された。[20]
- 強化された命令セットには以下が含まれます。
- より論理的で、理解しやすく、読みやすいアセンブラ命令ニーモニックシステム
- より柔軟な16ビットデータ移動(ロード、またはLD)命令、特にスタックポインタSPを含む
- 外部周辺ポートへの入出力のためのより柔軟なアドレス指定モード
- ビットテストを含むすべてのレジスタとメモリのシングルビットアドレス指定
- アキュムレータ以外のメモリとレジスタをシフト/回転する
- 改良され、より正確な(以前の8080より)BCD演算
- メモリ内のBCD数値文字列の回転命令
- 16ビット減算と8ビット否定
- プログラムループ
- プログラムカウンタ(PC)相対ジャンプ
- ブロックコピー、ブロック入出力(I/O)、バイト検索命令などがある。[23]
- 符号付き 8 ビットおよび 16 ビット演算をより適切にサポートするオーバーフロー フラグ。[g]
- 直接ベース+オフセットアドレッシング命令を備えた新しいIXおよびIYインデックスレジスタ
- より優れた割り込みシステム:
- より自動化され汎用的なベクトル化割り込みシステムであるモード2は、主にZilogのカウンタ/タイマー、DMA、通信コントローラのラインを対象としており、固定ベクトル割り込みシステムであるモード1は最小限のハードウェアを備えたシンプルなシステムを対象としています(モード0は8080互換モードです)。[24]
- マスク不可能割り込み (NMI)。電源オフ状況やその他の高優先度イベントに応答するために使用できます (また、最小限の Z80 システムでモード 1の 2 レベル割り込み方式を簡単に実装できます)。
- 完全な複製レジスタファイル[25]は、高速非同期イベントハンドラやマルチタスクディスパッチャなどの割り込みへの応答を高速化するために、すばやく切り替えることができます。これらは一般的なコード用の追加レジスタとして意図されたものではありませんでしたが、一部のアプリケーションではそのように使用されていました。[h]
- 電源、クロック生成、メモリおよびI/Oへのインターフェースに必要なハードウェアが少なくなります。
- 単一の 5 ボルト電源 (8080 には -5 V、+5 V、および +12 V が必要)。
- 単相 5 ボルト クロック (8080 には、高振幅 (9 ~ 12 ボルト) の重複しない2 相クロックが必要でした)。
- 内蔵DRAM リフレッシュ。より高価で密度が低い(ただし高速)SRAMを使用しない限り、外部回路が必要になります。[i]
- 非多重化バス (8080 では状態信号がデータ バスに多重化されていました)。
- プログラムカウンタのみをゼロにする特殊なリセット。これにより、単一のZ80 CPUをインサーキットエミュレータなどの開発システムで使用できるようになります。[26]
市場での成功
Z80はプロセッサ市場で8080とその子孫である8085を引き継ぎ[27]、最も人気があり広く使用されている8ビットCPUの1つとなった。[28] [29] British Telecomなどの一部の組織は、8085とそのオンチップシリアルインターフェイスおよび割り込みアーキテクチャに精通していたため、組み込みアプリケーションでは8085に忠実であり続けた。同様に、Zenith Data Systemsは、先駆的なZ80ベースのHeathkit H89およびZenith Z-89製品の経験があったにもかかわらず、最初のMS-DOSコンピュータであるZenith Z-100で8085と16ビットIntel 8088を組み合わせた。しかし、他の CPU と Z80 を統合したコンピュータも作られました。たとえば、モトローラ 68000を搭載したRadio Shack TRS-80 Model 16、8088を搭載したDEC Rainbow、MOS Technology 8502を搭載したCommodore 128などです。
Zilog はその後、1980 年代初頭に成長したラップトップ コンピュータ市場に適した低電力の Z80 を生産しました。Intel は、 1983 年 4 月に京セラが設計したラップトップなどのバッテリー駆動のポータブル コンピュータで使用される CMOS 8085 (80C85) を生産しました。このラップトップは Tandy ( TRS-80 Model 100として)、Olivetti、および NEC でも販売されました。しかし、その後の数年間で、CMOS バージョンの Z80 (Zilog と日本のメーカーの両方から提供) が、Amstrad NC100、Cambridge Z88、および Tandy 独自の WP-2 などの製品でこの市場を独占するようになりました。
おそらく、Z80 の初期の成功の鍵は、少なくともCP/Mやその他のオフィスや家庭用コンピュータなどの市場では、内蔵 DRAM リフレッシュ機能だったのでしょう。(Z80組み込みシステムのほとんどは、リフレッシュを必要としないスタティック RAM を使用しています。) また、最小限の 2 レベル割り込みシステム、または逆に、複数の Z80 IO チップのサービスに便利な汎用のマルチレベル デイジー チェーン割り込みシステムだった可能性もあります。これらの機能により、サポート ハードウェアが少なく、回路基板のレイアウトが簡単なシステムを構築できました。
しかし、その人気は、レジスタの少ない8ビットCPUに比べて、高速なコンテキストスイッチや浮動小数点演算などの処理を効率的に行える重複レジスタによるものだと主張する人もいる。(Z80は、HL'HL、DE'DE、BC'BCを32ビットレジスタとして使用して、そのような数値を内部的に複数保持できるため、計算中に低速のRAMからアクセスする必要がなくなる。) [30]
オリジナルのNMOS設計では、規定のクロック周波数の上限は、導入当初の2.5MHzから 、よく知られている4MHz(Z80A)を経て、6MHz(Z80B)、8MHz(Z80H)まで順次増加した。[31] [32] NMOSバージョンは、1980年代後半から10MHzの部品として生産されている。CMOSバージョンは、現在販売されているバージョンでは4MHzから20MHzの範囲の上限周波数で開発された。CMOSバージョンでは、内部状態を保持した低電力スタンバイが可能で、下限周波数はなかった。[j]完全に互換性のある派生製品であるHD64180 / Z180 [33] [34]とeZ80は、現在、それぞれ最大33MHzと50MHzに規定されている。
デザイン
プログラミングモデルとレジスタセット

Z80 のプログラミング モデルとレジスタ セットは、かなり従来型で、最終的にはDatapoint 2200のレジスタ構造に基づいています。Z80 は、同じエンジニアによって作成された Intel 8080 の拡張として設計されました。Intel 8080 は、 8008の拡張でした。8008は、基本的にDatapoint 2200 の TTL ベースの CPU のPMOS実装でした。[k]
2200 の設計では、8 ビット レジスタ H と L (高と低) を 16 ビット アドレス レジスタ HL にペアリングすることができました。[l] 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 ビット演算専用の命令で補完しました。

8080互換レジスタAF、BC、DE、HLはZ80では別のレジスタファイルとして複製されており、[36]プロセッサはバンク間を素早く切り替えることができる(4つのtステート、Z80命令の最短実行時間)。[37]これは、シングルレベルの高優先度割り込みへの応答を高速化するために役立つ機能である。同様の機能は2200にも存在したが、Intelでは実装されなかった。デュアルレジスタセットは割り込み処理のパフォーマンスを向上させるため、組み込み用途では非常に有用であるが、浮動小数点演算や家庭用コンピュータゲームなどの複雑なコード用の追加の汎用レジスタセットとしてパーソナルコンピュータ用途でも広く使用されている。
重複レジスタ ファイルは、多くの場合、「代替レジスタ セット」と呼ばれます (アセンブラ ソース コードと Zilog ドキュメントでは、アポストロフィ文字が使用されているため、「プライム」レジスタ ファイルと呼ばれることもあります)。これは、一度に 1 つのセットのみがアドレス指定可能であることを強調しています。ただし、フラグ レジスタ F を持つ 8 ビット アキュムレータ A は、「汎用」レジスタ ペア HL、DE、および BC から分岐しています。これは、アクセス可能性を交換するために使用される 2 つの別々の命令によって実現されます。命令は、EX AF,AF'レジスタ ペア AF のみを AF' と交換し、EXX命令は 3 つの汎用レジスタ ペア 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互換レジスタ[38]は次のとおりです。
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ビット
リフレッシュレジスタ は、RCPU がオペコード (または内部的に 1 バイトの命令のように実行されるオペコード プレフィックス) をフェッチするたびに増加し、プログラムの実行とは単純な関係がありません。これは、ゲームで疑似乱数を生成するために使用されることがあり、ソフトウェア保護スキームでも使用されます。[要出典]また、一部の設計では「ハードウェア」カウンターとしても使用されています。この例としては、ラップ アラウンド時に割り込みをトリガーすることによって (INT を A6 に接続することによって)、テレビ画面上の文字の位置を追跡できるZX81があります。
割り込みベクターレジスタ は、Z80I固有のモード 2 割り込み (命令によって選択) に使用されます。これは、割り込み確認サイクル中に CPU に送信されるインデックスによって選択される128 エントリのサービスルーチンIM 2アドレステーブルのベースアドレスの上位バイトを提供します。このインデックスは、サービスルーチンを指す表形式の間接アドレスへのポインタの下位バイト部分にすぎません。[24]ポインタは、特定の周辺チップまたは周辺機能またはイベントを識別します。チップは通常、優先順位の解決のためにいわゆるデイジーチェーンで接続されています。リフレッシュレジスタと同様に、このレジスタも創造的に使用されることがあります。割り込みモード 0 および 1 (または割り込みを使用しないシステム) では、単なる別の 8 ビットデータレジスタとして使用できます。
命令はLD A,R、LD A,I他のすべての(ロード)命令とは異なり、Z80フラグレジスタに影響を与えますLD。サイン(ビット7)とゼロ(ビット6)フラグは、リフレッシュまたは割り込みソースレジスタからロードされたデータに応じて設定されます。両方の命令において、パリティ/オーバーフローフラグ(ビット2)は、IFF2フリップフロップの現在の状態に応じて設定されます。[39]
マイクロアーキテクチャ
Z80は一般的に8ビットCPUと考えられていますが、4ビットALUを備えているため、計算は2段階で行われます。[40]
Z80アセンブリ言語
Datapoint 2200 と Intel 8008
最初の Intel 8008アセンブリ言語は、Datapoint 2200 設計から継承された非常に単純な (しかし体系的な) 構文に基づいていました。この元の構文は、後にこの同じ元の 8008 チップ用に、新しい、やや伝統的なアセンブリ言語形式に変換されました。ほぼ同じ時期に、新しいアセンブリ言語は、より高度な Intel 8080 チップの追加のアドレス指定モードに対応するように拡張されました (8008 と 8080 は、バイナリ互換性のない言語サブセットを共有していましたが、8008 は Datapoint 2200 とバイナリ互換性がありました)。
このプロセスで、 LOADLのニーモニックは、 LOAD、STORE、MOVEという単語のさまざまな略語に置き換えられ、他の記号文字が混在しました。メモリ(HL によって参照される)のニーモニック文字は、命令ニーモニック内から取り出されて構文的に独立したオペランドになりましたが、レジスタとレジスタの組み合わせは、省略されたオペランド (MVI D、LXI H など) によって、または命令ニーモニック自体内で (LDA、LHLD など)、または同時に両方 (LDAX B、STAX D など) で示されるという非常に一貫性のない表記になりました。
M
同等の、または(8086の場合)非常に類似したロードおよびストア命令のサンプルを使用した4つの構文の図解。[41] Z80構文では、式を括弧で囲んで、値をメモリアドレスとして使用することを示します(後述)。一方、8086構文では、この目的で通常の括弧ではなく角括弧を使用します。Z80と8086はどちらも、定数がベースレジスタに追加されてアドレスが形成されることを示すために+記号を使用します。8086はZ80の完全なスーパーセットではないことに注意してください。BXは、ポインターとして使用できる唯一の8086レジスタペアです。
新しい構文
インテルはアセンブリニーモニックの著作権を主張したため、[42] Z80用に新しいアセンブリ構文を開発する必要がありました。今回はより体系的なアプローチが採用されました。
- すべてのレジスタとレジスタペアは、完全な名前で明示的に示されます。
- 括弧は、1 つのジャンプ命令 JP (HL) を除いて、一貫して「メモリの内容」(定数アドレスまたは変数ポインタの逆参照) を示すために使用されます。JP (XY) は、新しい PC アドレスをロードする JP (HL) の単なるバリエーションです。[n]
- すべてのロードおよびストア命令は、LOAD に対して同じニーモニック名 LD を使用します (単純な Datapoint 2200 の用語に戻ります)。ADD や INC などの他の一般的な命令は、アドレス指定モードやオペランド サイズに関係なく、同じニーモニックを使用します。これは、オペランド自体に十分な情報が含まれているため可能です。
これらの原則により、すべての新しい Z80 命令の名前と形式、および などの古い命令の直交化を簡単に見つけられるようになりましたLD BC,1234。
命名の違いを除けば、また基本的なレジスタ構造に一定の相違があるにもかかわらず、Z80と8086の構文は命令の大部分で実質的に同型である。8080と8086のアセンブリ言語の間にはごく表面的な類似点(MOVという単語や拡張レジスタを表すXという文字など)しか存在しないが、8080プログラムはトランスレータプログラムによって8086アセンブリ言語に変換できる。[44] [45]
命令セットとエンコーディング
Z80 は、利用可能な 256 個のコードのうち 252 個を 1 バイトのオペコードとして使用します (「ルート命令」のほとんどは 8080 から継承されています)。残りの 4 つのコードは、オペコード プレフィックスとして広く使用されています: [46] CB と ED は追加命令を有効にし、DD または FD はそれぞれ IX+d または IY+d (場合によっては変位 d なし) を HL の代わりに選択します。この方式により、Z80 には多数の命令とレジスタの組み合わせが与えられます。Zilog は、これらを 158 個の異なる「命令タイプ」に分類し、そのうち 78 個は Intel 8080 のものと同じです[46] (すべての 8080 プログラムを Z80 で操作できます)。 Zilogのドキュメント[47]では、命令をさらに次のカテゴリに分類しています(ほとんどは8080からのものですが、ブロック命令やビット命令のように完全に新しいものや、16ビットロード、I/O、回転/シフト、相対ジャンプなど、より汎用性の高いアドレス指定モードを備えた8080命令もあります)。
- ロードと交換
- ブロック転送と検索
- 算術と論理
- 回転とシフト
- ビット操作(セット、リセット、テスト)
- ジャンプして、呼んで、戻る
- 入力/出力
- 基本的なCPU制御
オリジナルのZ80では明示的な乗算命令は利用できませんが[48]、レジスタAとHLはADD A,AとADD HL,HL命令で2の累乗で乗算できます(IXとIYも同様)。シフト命令でも2の累乗で乗算または除算できます。
8080 のフラグ変更プロパティのほとんどがコピーされたため、さまざまなサイズと種類の加算、シフト、回転はフラグに多少異なる影響を与えます。ただし、8080 のパリティ フラグ ビット P (ビット 2) は、2 の補数オーバーフロー インジケータという追加の目的を果たすため、Z80 では P/V (パリティ/オーバーフロー) と呼ばれます。この機能は 8080 には存在しません。Z80 の算術命令は、これをパリティではなくオーバーフローを示すように設定しますが、ビット単位の命令では、これを依然としてパリティ フラグとして使用します。 (これにより、Z80 と 8080 用に記述されたコードとの間に微妙な非互換性が生じます。Z80 では、8080 がパリティを示すところで符号付きオーバーフローを示すことがあり、実用的な 8080 ソフトウェアのロジックが Z80 では機能しなくなる可能性があります。[o] ) この新しいオーバーフロー フラグは、すべての新しい Z80 固有の 16 ビット操作 ( ADC、SBC) と 8 ビット算術操作に使用されますが、8080 から継承された 16 ビット操作 ( ADD、INC、DEC) はこれに影響を与えません。また、フラグ レジスタのビット 1 (8080 では予備のビット) は、実行された最後の算術命令が減算であったか加算であったかを示すフラグ N として使用されます。 Z80 バージョンのDAA命令 (BCD 演算用の 10 進調整アキュムレータ) は N フラグをチェックし、それに応じて動作します。そのため、(仮定上の) 減算の後に を実行すると、古い 8080 では Z80 とは異なる結果になります。ただし、 8080 では加算のみに定義されている
DAAため、このコードは 8080 ではエラーになる可能性があります。DAA
Z80にはLD、8080とは異なり、メモリからDE、BC、SPレジスタペアをロードしたり、これら3つのレジスタペアからメモリをロードしたりできる6つの新しい命令があります。[41] 8080と同様に、ロード命令はフラグに影響を与えません(特殊目的のIおよびRレジスタロードを除く)。通常のエンコード(8080と共通)の結果、8ビットレジスタのそれぞれをそれ自体からロードできます(例LD A,A:)。これは事実上、ですNOP。
新しいブロック転送命令は、メモリからメモリへ、またはメモリとI/O周辺ポートの間で最大64キロバイトを移動できます。ブロック命令と(ロードLDIR、LDDRインクリメント/デクリメント、リピート)は、 HLを使用してソースアドレスを、DEを使用して宛先アドレスを、BCをバイトカウンタとして使用します。バイトはソースから宛先にコピーされ、ポインタがインクリメントまたはデクリメントされ、バイトカウンタはBCがゼロになるまでデクリメントされます。非繰り返しバージョンとでは、1バイトを移動してポインタとバイトカウンタを増やします。バイトカウンタがゼロになると、P/Vフラグがリセットされます。対応するメモリからI/Oへの命令、、、、、、、、およびは、バイトカウンタとしてBCではなくBが使用されることを除いて、同様に動作します。 [49] [50] Z80は、レジスタCを使用してポートを指定することにより、任意のレジスタをI/Oポートに入出力できます。 (8080 は、命令で指定された直接ポート アドレスを使用して、アキュムレータ A を介してのみ I/O を実行します。可変の 8080 ポート アドレスを使用するには、自己変更コード手法が必要です。)
LDILDDINIRINDROTIROTDRINIINDOUTIOUTD
最後のブロック命令のグループは、CP(HL) のバイトとアキュムレータ A の比較演算を実行します。レジスタ ペア DE は使用されません。繰り返しバージョンCPIRと は、 BC がゼロになるか一致が見つかった場合にのみ終了します。HL は、一致するバイトの後 ( ) または前 ( ) のCPDRバイトを指したままになります。一致が見つからない場合は、Z フラグがリセットされます。繰り返しのないバージョンと があります。
CPIRCPDRCPICPD
8080 とは異なり、Z80 は符号付き 8 ビット変位を使用して、相対アドレス (JRではなく) にジャンプできます。これらの新しい 2 バイト命令では、ゼロ フラグとキャリー フラグのみをテストできます。(8080 のすべてのジャンプと呼び出しは、条件付きかどうかに関係なく、3 バイト命令です。) プログラム ループ専用の 2 バイト命令も Z80 の新機能です: ( d ecrement j ump if n on- z ero) は、符号付き 8 ビット変位を即値オペランドとして受け取ります。B レジスタがデクリメントされ、結果がゼロ以外の場合、プログラム実行は PC を基準としてジャンプします。フラグは変更されません。8080 で同等のループを実行するには、別個の条件付きジャンプ (2 バイトの絶対アドレスへ) 命令 (合計 4 バイト) が必要で、 によってフラグ レジスタが変更されます。
JPJRDJNZDECDEC
インデックス レジスタ (IX/IY、XY と略されることが多い) 命令は、固定の異種構造 (レコードなど) に編成されたデータや、可変ベース アドレスに対する固定オフセット (再帰 スタック フレームなど) にあるデータにアクセスする場合に便利です。また、インデックスのないレジスタを使用する複数の短い命令が不要になるため、コード サイズを削減することもできます。ただし、より単純な操作の長くて複雑な「同等の」シーケンスと比較すると、状況によっては速度が節約される場合もありますが、CPU 時間が大幅に追加されます (たとえば、1 つのインデックス付きメモリ位置にアクセスするには 19 の T 状態が必要ですが、HL を使用して同じメモリにアクセスし、INC次のメモリを指すには 11 の T 状態が必要です)。したがって、データの単純または線形アクセスの場合、IX と IY を使用すると速度が遅くなり、メモリを多く占有する傾向があります。それでも、レジスタの保存/復元が不要になるため、「メイン」レジスタがすべて使用されている場合には便利です。公式には文書化されていない 8 ビットの半分 (下記参照) は、このコンテキストで特に役立ちます。16 ビットの親よりも速度低下が少ないためです。同様に、16 ビット加算の命令は、オリジナルの Z80 では特に高速 (11 クロック) ではありません (8080/8085 よりも 1 クロック遅い)。それでも、8 ビット操作を使用して同じ計算を実行するよりも約 2 倍高速であり、同様に重要な点として、レジスタの使用量が減ります。プログラマがインデックス付き命令に異なるオフセット変位バイト (通常は動的に計算される) を「挿入」することは珍しくありませんでした。これは自己変更コードの例であり、パイプライン化されていない実行ユニットを備えたほぼすべての初期の 8 ビット プロセッサで一般的な方法でした。
インデックス レジスタにはJP (HL)、 と並列の命令である があります。これは、ForthJP (XY)などのスタック指向言語でよく見られます。Forth では、すべての Forth ワード (言語を構成するアトミック サブルーチン) の終了時に、スレッド インタープリタ ルーチンに無条件にジャンプして戻る必要があります。通常、このジャンプ命令はアプリケーションで何百回も出現し、ではなくを使用すると、出現ごとに 1 バイトと 2 つの T 状態が節約されます。これにより、当然、インデックス レジスタは他の用途には使用できなくなります。そうしないと、インデックス レジスタを常にリロードする必要があり、効率が悪くなります。
JP (XY)JP THREAD
10 年ほど新しいマイクロコード化されたZ180設計では、当初は「チップ領域」を広くとることができ、より効率的な実装 (とりわけ、より広いALUの使用) が可能でした。同様のことはZ800、Z280、Z380にも言えます。しかし、これらの命令が技術的に可能な限りのサイクル効率 (つまり、Z80 エンコーディングとクロック サイクルごとに8ビットの読み取りまたは書き込みを行う機能の組み合わせ) を実現したのは、2001 年に完全にパイプライン化された eZ80 が発売されてからでした。[引用が必要]
文書化されていない指示
インデックスレジスタ IX と IY は、メモリ、スタックフレーム、およびデータ構造を操作する能力を強化する、柔軟な 16 ビットポインタとして意図されていました。公式には、これらは 16 ビットとしてのみ扱われていました。実際には、これらは 8 ビットレジスタのペアとして実装され、[51] HL レジスタと同じ方法で、16 ビットとして、またはHighおよび Low レジスタとして個別にアクセスできます。バイナリオペコード (マシン語) は同じでしたが、新しいオペコードプレフィックスが先行していました。[52] Zilog は、意図された機能のオペコードと関連ニーモニックを公開しましたが、H およびLレジスタの操作を可能にするすべてのオペコードが IX および IY レジスタの 8 ビット部分に対して等しく有効であるという事実を文書化していませんでした。たとえば、オペコード 26h の後に即値バイト値が続くと、(LD H,n)その値が H レジスタにロードされます。この2バイト命令の前にIXレジスタのオペコードプレフィックスDDを付けると、IXレジスタの最上位8ビットに同じ値がロードされることになります。 注目すべき例外は、LD H,(IX+d)HLとIXまたはIYレジスタの両方を同じ命令で使用する類似の命令です。[52]この場合、DDプレフィックスは命令の(IX+d)部分にのみ適用されます。 XYレジスタの半分には、8ビットの算術、論理、比較命令のオペランドを保持することもできるため、通常の8ビットレジスタは他の用途に使用できます。 ドキュメント化されていないインデックスレジスタの上位半分を増分および減分する機能により、ドキュメント化されているADD/SBC XY,DEまたはに頼ることなく、通常のインデックス付き命令の範囲を簡単に拡張できましたADD/SBC XY,BC。
他にも文書化されていない命令がいくつかあります。[53]文書化されていない、または不正なオペコードはZ80では検出されず、さまざまな効果があり、そのうちのいくつかは有用です。ただし、それらは命令セットの正式な定義の一部ではないため、Z80の異なる実装がすべての文書化されていないオペコードに対して同じように動作することは保証されていません(特にそうではありません)。
バグ
このOTDR命令はZ80のドキュメントに準拠していません。命令OTDRとOTIR命令は両方ともキャリー(C)フラグを変更しないままにしておくことになっています。OTIR命令は正しく動作しますが、命令の実行中にOTDR、キャリーフラグはアキュムレータ(A)と命令の最後の出力との間の誤った比較の結果を取得しますOTDR。[54]
サンプルコード
次の Z80 アセンブリ ソース コードは、memcpy指定されたサイズのデータ バイトのブロックをある場所から別の場所にコピーする という名前のサブルーチンのコードです。重要: サンプル コードでは、宛先ブロックがソースと重なるケースは処理されません。これは重大な制限ですが、ソースが ROM にあり、宛先が RAM にある場合など、一部のアプリケーションでは無関係な制限であり、これらのソースが重なることはありません。データ ブロックは一度に 1 バイトずつコピーされ、データの移動とループ ロジックでは 16 ビット操作が使用されます。このコードではさまざまな命令が示されていますが、実際にはこのようにコード化されることはありません。Z80 には、このサブルーチン全体を置き換える 1 つの命令があるためです: LDIR。サンプル コードでは、46 T ステートごとに 1 バイトが移動します。LDIR命令を置き換えると、各バイトは 21 T ステートでのみ移動します。アセンブルされたコードは、Intel 8080 および 8085 CPU とバイナリ互換であることに注意してください。
命令実行
各命令は、通常マシンサイクル(Mサイクル)と呼ばれるステップで実行され、各サイクルは3〜6クロック周期(Tステート)かかります。[55]各Mサイクルは、おおよそ1回のメモリアクセスまたは内部操作に対応します。多くの命令は、実際には次の命令のM1中に終了し、これはフェッチ/実行オーバーラップとして知られています。
Z80 のマシン サイクルは、コンテキストに応じて 3、4、5、または 6 つの T ステートから各 M サイクルを構築する内部ステート マシンによって順序付けされます。これにより、面倒な非同期ロジックが回避され、制御信号が幅広いクロック周波数で一貫して動作します。また、マシン サイクルをこのように細分化しない場合よりも高い周波数の水晶を使用する必要があります (約 2 ~ 3 倍高い)。これは、メモリ アクセス時間の要件が厳しくなることを意味するものではありません。高解像度のクロックにより、メモリ タイミングをより正確に制御できるため、メモリを CPU と並行してアクティブにできる範囲が広がり、利用可能なメモリ帯域幅をより効率的に使用できるようになります。[引用が必要]
その代表的な例が、オペコード フェッチの場合、Z80 は 2 つの完全なクロック サイクルをメモリ アクセス期間 (M1 信号) に結合することです。Z80 では、この信号は、6800や6502などの設計よりも、典型的な命令実行時間の比較的長い部分にわたって持続します。6800 や 6502 などの設計では、この期間は通常、クロック サイクルの 30 ~ 40% 続きます。[要出典]メモリ チップの価格 (つまり、1980 年代のアクセス時間は約 450 ~ 250 ns [要出典] ) によって通常は最速のアクセス時間が決まるため、このような設計は Z80 よりも大幅に長いクロック サイクル (つまり、内部クロック速度が低い) に固定されていました。
メモリは、現代のマイクロプロセッサで使用されるステート マシン サブサイクル (クロック サイクル) と比較すると、一般的に低速でした。そのため、組み込み設計で安全に使用できる最短のマシン サイクルは、CPU の最大周波数ではなく、メモリ アクセス時間によって制限されることがよくありました (特に家庭用コンピュータの時代)。ただし、この関係は過去数十年の間に、特にSRAMに関して徐々に変化しており、eZ80 などのキャッシュレスのシングル サイクル設計が最近非常に有意義なものになっています。
リフレッシュレジスタRの内容は、CPUがフェッチした命令をデコードして実行している間、リフレッシュ制御信号とともにアドレスバスの下位半分に送信されます。リフレッシュ中は、割り込みレジスタIの内容がアドレスバスの上位半分に送信されます。[62]
互換性のある周辺機器
Zilog は Z80 用に多数の周辺部品を導入しました。これらはすべて Z80 の割り込み処理システムと I/O アドレス空間をサポートしています。これらには、カウンター/タイマー チャネル (CTC)、[63] SIO (シリアル入出力)、DMA (直接メモリ アクセス)、PIO (パラレル入出力)、DART (デュアル非同期受信機 - 送信機) が含まれます。製品ラインが開発されるにつれて、これらのチップの低電力、高速、CMOSバージョンが導入されました。
-
ピオZ84C2008
-
CTC Z84C3008
-
SIOTZ84C4008 について
8080、8085、8086プロセッサと同様だが、モトローラ6800やMOSテクノロジー6502などのプロセッサとは異なり、Z80と8080にはI/O命令用の独立した制御ラインとアドレス空間がある。Osborne 1などの一部のZ80ベースのコンピュータは「モトローラスタイル」のメモリマップされた入出力デバイスを使用していたが、通常、I/O空間はZ80と互換性のある多くのZilog周辺チップの1つをアドレス指定するために使用されていた。I/O読み取りまたはI/O書き込み操作のタイミング中に、Z80によって1つの待機サイクルが自動的に挿入される。[64] Zilog I/Oチップは、多数の周辺機器の割り込み処理を簡素化するZ80の新しいモード2割り込みをサポートした。
Z80は公式には16ビット(64KB)のメモリアドレッシングと8ビット(256ポート)のI/Oアドレッシングをサポートしていると説明されていた。すべてのI/O命令は実際には16ビットのアドレスバス全体をアサートする。OUT (C),regとIN reg,(C)は16ビットBCレジスタ全体の内容をアドレスバスに配置する。[54] OUT (n),AとIN A,(n)はAレジスタの内容をアドレスバスのb8~b15に配置し、nをアドレスバスのb0~b7に配置する。設計者はこの機能を利用するためにI/O操作時に16ビットアドレスバス全体をデコードするか、アドレスバスの上位半分を使用してI/Oデバイスのサブ機能を選択するかを選択できる。この機能は、Amstrad CPC / PCWやZX81などでデコードハードウェア要件を最小限に抑えるためにも使用されている。
セカンドソースと派生品
二次情報源
Zilog 向けに最初の Z80 を製造した Mostek は、 MK3880 としてセカンドソースとして提供しました。SGS-Thomson (現在のSTMicroelectronics ) も Z8400 でセカンドソースでした。シャープとNEC は、それぞれ LH0080 とμPD780C というNMOS Z80 のセカンドソースを開発しました。LH0080 は、ソニーの MSXコンピュータやシャープ MZシリーズの多くのコンピュータなど、シャープや他の日本メーカーが製造したさまざまな家庭用コンピュータやパーソナルコンピュータに使用されました。[65]シャープは、それぞれ 4 MHz と 6 MHz の周波数で動作する LH0080A と LH0080B を開発しました。[66]シャープは、 Z80 DMA と互換性のある LH0083 [67]も開発しました。
東芝はCMOS版のTMPZ84C00を製造したが、これはZilogが自社のCMOS Z84C00にも使用したのと同じ設計であると信じられている(誰が?) (ただし確認されていない)。また、 GoldStar(現LG )製のZ8400、Z80チップや、 ROHM Electronics製のNMOSおよびCMOSのZ80クローンのBU18400シリーズ(DMA、PIO、CTC、DART、SIOを含む)もあった。Z80、PIO、CTCのCMOS版であるLH5080、[68]、 LH5081 、 [69]、LH5082、[70]はシャープが製造している。
東ドイツでは、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と互換性あり
- 日立は、オンチップ周辺機器とシンプルなMMUを備え、1MBのアドレス空間を提供する、マイクロコード化され部分的に動的なCMOS Z80である HD64180を開発した。これは後にZilog社にセカンドソースされ、最初はZ64180として、その後、バスプロトコルとタイミングがZ80周辺チップにより適合した、わずかに改良されたZilog Z180 [71]の形で提供された。Z180はZilog社の名前で維持され、さらに開発が進められ、最新バージョンは、消費電力とEMI(ノイズ)が非常に低い完全に静的なS180/L180コアをベースにしている。
- 東芝は、 84ピンのZ84013/Z84C13と100ピンのZ84015/Z84C15シリーズの「インテリジェント周辺コントローラ」を開発した。これは基本的に、通常のNMOSとCMOS Z80コアに、Z80周辺機器、ウォッチドッグタイマー、パワーオンリセット、ウェイトステートジェネレータを同じチップに搭載したものである。シャープと東芝が製造した。これらの製品は現在、Zilogがセカンドソースとなっている。[72]
- 1994年に導入された32ビットZ80互換のZilog Z380は通信機器に使用されている。[73]
- 2001年に、8/16/24ビットのワード長と16MBの線形アドレス空間を持つ、Zilogの完全にパイプライン化されたZ80互換のeZ80 [74]が導入されました。オンチップ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年)。[75]
- NEC μPD9002 は、Z80 ファミリとx86ファミリの両方と互換性のあるハイブリッド CPU でした。
- 中国のActions Semiconductor社のオーディオプロセッサチップファミリー(ATJ2085など)には、Z80互換MCUと24ビット専用DSPプロセッサが搭載されています。[76]これらのチップは、多くのMP3およびメディアプレーヤー製品に使用されています。
- T80(VHDL)およびTV80(Verilog)合成可能なソフトコアはOpenCores.orgから入手可能です。[77]
- 1980年に発表されたナショナルセミコンダクターNSC800 [ 78 ]は、多くのテレセキュリティティマン(TST)電子暗号機[79]やキヤノンX-07で使用されている。NSC800はZ-80命令セットと完全に互換性がある。[80] NSC800は8085のような多重化バスを使用しているが、Z80とはピン配置が異なっている。[81]
- 互換性なし
- 東芝TLCS 900シリーズは、主にワンタイムプログラマブルマイクロコントローラで、Z80をベースにしている。これらは、同じ基本的なBC、DE、HL、IX、IYレジスタ構造とほぼ同じ命令を共有しているが、バイナリ互換性はない。一方、以前のTLCS 90はZ80と互換性がある。[82]
- NEC 78Kシリーズ マイクロコントローラは Z80 をベースにしています。これらは同じ基本的な BC、DE、HL レジスタ構造を共有し、類似しているが名前が異なる命令を持ちます。バイナリ互換性はありません。
- 部分的に互換性あり
- ラビットセミコンダクターのラビット2000/3000/4000マイクロプロセッサ/マイクロコントローラ[83]はHD64180 / Z180アーキテクチャに基づいていますが、完全なバイナリ互換性はありません。[84]
- 生産終了
- ASCII Corporation R800 は、 MSX TurboRコンピュータで使用される高速 16 ビット プロセッサでした。Z80 とはソフトウェア互換性がありましたが、ハードウェア互換性はありませんでした (信号タイミング、ピン配置、ピンの機能は Z80 とは異なります)。
- Zilog の NMOS Z800と CMOS Z280 は、 16 MB のページ MMU アドレス空間を持つ 16 ビットの Z80 実装 (HD64180/Z180 以前) であり、Z80 命令セットに多くの直交化とアドレス指定モードを追加しました。ミニコンピュータの機能 (ユーザー モードとシステム モード、マルチプロセッサ サポート、オンチップ MMU、オンチップ命令およびデータ キャッシュなど) は、組み込みシステム設計者 (通常はエレクトロニクス指向) にとって機能やサポートというよりもむしろ複雑なものとして見られていました。また、命令実行時間を予測することも非常に困難でした。[引用が必要]
- Pang / Buster Bros.などの特定のアーケードゲームでは、 VLSI Technology社製の暗号化された「Kabuki」Z80 CPUが使用されており、復号化キーは内部のバッテリーバックアップメモリに保存され、著作権侵害や違法な海賊版ゲームを回避しています。[85]
-
アスキーR800
-

-
東芝 TMPZ84C015
注目すべき用途
デスクトップコンピュータ

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

Z80 をメインプロセッサとして、またはプラグインオプションとして Z80 を使用するホームコンピュータが複数導入された。注目すべきものとしては、Z80 をメインプロセッサとして搭載したオリジナルモデル (後に「モデル I」と改名)、モデル II、モデル III、モデル 4などのTRS-80シリーズと、Z80 をメインまたはセカンダリプロセッサとして使用した他のいくつかの (すべてではない) TRS-80 モデルが挙げられる。その他の注目すべきマシンとしては、DEC Rainbow 100とSeequa 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 [89]など、他のCMOSベースのプロセッサの開発にも影響を与えました。BASICでプログラム可能なポケットコンピュータであるシャープPC-1500は1981年に発売され、続いて1986年に改良されたシャープPC-1600、1991年にシャープPC-E220が発売されました。シャープのウィザードシリーズのパーソナルオーガナイザの後継モデルもZ80ベースでした。デスクトップマシンと同じようにCP/Mオペレーティングシステムを実行できるラップトップは、1984年にエプソンPX-8 Geneva、1985年にエプソンPX-4とBondwell-2に続きました。その後の数年間、ラップトップ市場はより強力なインテル 8086プロセッサと MS-DOS オペレーティングシステムに移行しましたが、1988 年のCambridge Z88や1992 年のAmstrad NC100など、バッテリー寿命の長い軽量の Z80 ベースのシステムも引き続き導入されました。Z80 派生のZ8S180 は、1993 年の初期のペン操作型パーソナルデジタルアシスタントであるAmstrad PenPad PDA600にも採用されました。香港に拠点を置くVTechは、Z80 をベースにした「Lasers」と呼ばれる小型ラップトップコンピューターのシリーズを製造しました。[90] [91]最後の 2 つは Laser PC5 [92]と PC6 でした。[93] 1999 年に最初にリリースされた Cidco MailStation Mivo 100 は、Z80 ベースのマイクロコントローラーを搭載したスタンドアロンのポータブル電子メールデバイスでした。[94]テキサス・インスツルメンツは、Z80コアをベースにした東芝のプロセッサを使用したポケットオーガナイザーのライン(2000年終了)を生産しました。その最初の製品はTI PS-6200でした[95]。その後、数十のモデルが長期間生産され、PocketMateシリーズが完成しました[96] 。
組み込みシステムと家電製品

Zilog Z80は、組み込みシステムやマイクロコントローラコアで長年人気のマイクロプロセッサであり、 [38]現在でも広く使用されています。[28] [97] Z80の用途には、民生用電子機器、工業製品、電子楽器などがあります。たとえば、Z80は画期的な音楽シンセサイザーProphet-5 [98]や、最初のMIDI搭載シンセサイザーProphet 600 [99]に使用されました。 Z80は、1976年から1986年まで、すべてのE-mu Systems楽器の基礎となりました。 [100] カシオは、PV-1000ビデオゲームコンソール にZ80Aを使用しました。
アーケード ゲーム「パックマン」を含む 1980 年代初期のアーケード ビデオ ゲームの多くには、Z80 CPU が搭載されています。
Z80 は、セガのマスター システムおよびゲーム ギアコンソールで使用されました。セガ ジェネシスには、MC68000 メイン CPU と並行して動作する独自の 8 KB RAM を備えた Z80 が搭載されており、システムのサウンド チップおよび I/O (コントローラ) ポートに直接アクセスでき、68000 のメイン メモリ バスへのスイッチ データ パス (64 KB メイン RAM、ソフトウェア カートリッジ、およびビデオ チップ全体へのアクセスを提供) を備えています。マスター システム ゲームとの下位互換性を提供するほか、Z80 はジェネシス ソフトウェアでオーディオの制御と再生によく使用されます。[p]
Z80 CPU は、テキサス インスツルメンツ社のグラフ電卓の先駆的かつ人気の TI-8x シリーズにも使用されており、1990 年にTI-81が発売されました。TI-81 は 2 MHz でクロックされる Z80 を搭載しています。TI -82やTI-85をはじめとするこのシリーズの上位機種のほとんどは、Z80 CPU のクロックを 6 MHz 以上で動作させています。 (TI-8x という名前のモデルの中には、M68000 などの他の CPU を使用するものもありますが、大部分は Z80 ベースです。これらのモデルでは、Z80 マシン言語コードの形式でアセンブルまたはコンパイルされたユーザー プログラムを実行できます。) 2004 年に導入されたTI-84 Plus シリーズは、2023 年現在も生産されています。2015年に導入されたTI-84 Plus CE シリーズは、Z80 派生のZilog eZ80プロセッサを使用しており、これも 2024 年現在も生産されています。
1980年代後半、ソ連の固定電話シリーズ「AON」にZ80が搭載され、発信者ID、発信者に応じた着信音、短縮ダイヤルなどの固定電話の機能が拡張されました。[101]しかし、1990年代後半には、これらの電話機の製造元は、消費電力を削減し、コンパクトな壁面電源アダプタの過熱を防ぐために、8051互換のMCUに切り替えました。
中止
2024年4月15日、ザイログはZ80プロセッサの製造中止を発表し、注文は2024年6月14日まで受け付けた。発表にはZ80プロセッサの13の派生版が含まれており、その多くはチップのDIP40派生版であった。ザイログはプロセッサのアップグレード版eZ80の製造を継続する。 [102]
参照
- S-100バス
- シンボOS
- Z88DK
- Micro-Professor MPF-I、Z80トレーニングシステム
脚注
- ^ フェデリコ・ファギンのオーラルヒストリーによると、ナショナルはCMOSのみでNMOSバージョンを製造しなかった。
- ^ CMOS バリアントは最大 20 MHz、バイナリ互換派生品は最大 50 MHz になりました。
- ^ Intel 8080との下位互換性あり
- ^ Zilog 社は、このコピーを遅らせるためにチップのレイアウトにいくつかの「罠」を組み込んだ。Faggin 氏によると、後に NEC のエンジニアが、μPD780 を動作させるまでに数か月の作業が必要だったと彼に話したという。
- ^ これは当時のミニコンピュータ設計ではかなり一般的な機能であり、初期のマイクロプロセッサの多くに採用されました。
- ^ Zilog は、 製造工場を売却して現在のような「ファブレス」企業になるまで、長年にわたって Z80 やその他のほとんどの製品を製造していました。
- ^ 8080 には 16 ビット加算命令と 16 ビット増分および減分命令がありましたが、明示的な 16 ビット減算命令とオーバーフロー フラグはありませんでした。Z80 はこれを ADC HL,rr 命令と SBC HL,rr 命令で補完し、新しいオーバーフロー フラグを適切に設定しました (8080 互換の ADD HL,rr では設定されません)。
- ^特に、 ZX81ホーム コンピュータで使用される40 ビット浮動小数点形式の 2 つのオペランドの32 ビット仮数を同時に処理するために使用されました。これらは、スウェーデンのABC 80やABC 800など、以前のあまり知られていない Z80 ベースのコンピュータでも同様の方法で使用されていました。
- ^ このリフレッシュはデータを転送する必要がなく、連続した行アドレスを出力するだけなので、1.5 T ステート未満しか占有しません。Z80 の専用 M1 信号 (マシン サイクル 1 ) を使用すると、メモリ チップは命令フェッチとデータ アクセスに同じアクセス時間、つまり 4Tフェッチサイクル (および 3T データ読み取りサイクル) のうちほぼ 2 T ステートを実現できます。Z80 は、8080 (または 8086) と同じアクセス時間範囲のメモリを同じクロック周波数で使用できます。この長い M1 信号 (クロックに対して) は、Z80 が同じタイプのメモリを使用する 6800、6502 などの約 4 ~ 5 倍の内部周波数を使用できることも意味します。
- ^ ダイナミック ラッチを使用し、数千クロック サイクル以上停止できなかったオリジナルの nMOS バージョンとは異なります。
- ^ 関連する8086ファミリもこのレジスタ設計を継承しました。
- ^ この可変 HL ポインタは、実際には Datapoint 2200 でメモリ (データ用) にアクセスする唯一の方法であり、したがって Intel 8008 でも同じでした。データにアクセスするために直接アドレスを使用することはできませんでした。
- ^ メモリ即時ロードは Datapoint 2200 では使用できません。
- ^ ジャンプ(
JP)命令はプログラムカウンタに新しい命令アドレスをロードしますが、それ自体はメモリにアクセスしません。ジャンプの絶対形式と相対形式は、オペランドから丸括弧を省略することでこれを反映しています。レジスタベースのジャンプ命令(「」などJP (HL))には丸括弧が含まれており、この規則から明らかに逸脱しています。[43] - ^ たとえば、8080 では、プログラマは
ADDバイトにゼロを ing するか、SUBゼロを tract するか、またはORing または ingXORでゼロを ing することでバイトのパリティをテストできます。これらはすべて、8080 と Z80 の両方で、同じ速度とサイズの単一命令操作です。プログラマがORing またはXORing でパリティをテストすることを選択した場合、Z80 はプログラムを正しく実行しますが、プログラマがADDing またはSUBtract でパリティをテストすることを選択した場合、Z80 は常に P/V フラグをゼロにリセットします (ゼロの追加または減算ではオーバーフローやアンダーフローが発生しないため)。代わりに、バイトのパリティを正しく示すために P を割り当てます (8080 または 8085 の場合)。そのため、プログラムは失敗する可能性があります。 Intel のプログラミング マニュアルや 8080 のその他のドキュメントには、パリティをテストするために算術命令の使用を禁止したり、論理命令の使用を規定したりした記述はありません。そのため、推奨される適切なプログラミング手法を実践している 8080 プログラマーが、Z80 で機能する方法を機能しない方法よりも選択したと期待される理由はありません。 - ^ この一般的な使用法は、単なるオプションであり、制限するものではありません。そのため、Genesis の Z80 は「サウンド プロセッサ」として頻繁に誤って説明されています。
参考文献
- ^ abc Zilog (2005). Z80 ファミリー CPU ユーザーズマニュアル(PDF) . Zilog. p. 5. 2009 年 6 月 19 日時点のオリジナルよりアーカイブ(PDF) 。2009年7 月 18 日閲覧。
- ^ 「チップの殿堂: Zilog Z80 マイクロプロセッサ - IEEE Spectrum」spectrum.ieee.org . 2024年11月22日閲覧。
- ^ Edwards, Benj (2024年4月22日). 「48年後、Zilogは古典的なスタンドアロンZ80マイクロプロセッサチップを廃止します」。Ars Technica 。2024年11月22日閲覧。
- ^ Faggin、Shima、Ungermann 2007より引用。
- ^ Faggin、Shima、Ungermann 2007、p. 1より。
- ^ Faggin、Shima、Ungermann 2007、p. 2より。
- ^ abc Faggin、Shima、Ungermann 2007、p.3。
- ^ abc Faggin、Shima、Ungermann 2007、p.4。
- ^ ファギン、シマ、アンガーマン 2007年、8ページ。
- ^ Faggin、Shima、Ungermann 2007、p.5より。
- ^ ファギン、シマ、ウンガーマン 2007年、19ページ。
- ^ ファギン、シマ、ウンガーマン 2007年、6ページ。
- ^ ファギン、シマ、アンガーマン 2007年、7ページ。
- ^ ファギン、シマ、ウンガーマン 2007年、17ページ。
- ^ 「Z80® DMA ダイレクト メモリ アクセス コントローラー」(PDF)。2024 年 2 月 5 日時点のオリジナルよりアーカイブ(PDF) 。2024 年1 月 8 日閲覧。
- ^ アンダーソン(1994)、51ページ。
- ^ ファギン、シマ、ウンガーマン 2007年、13ページ。
- ^ ファギン、シマ、ウンガーマン 2007年、9ページ。
- ^ アンダーソン(1994)、57ページ。
- ^ ab ブロック、ジェラルド W. (2003)。第二次情報革命。ハーバード大学出版局。ISBN 978-0-674-01178-6。
- ^ 「8ビットの歴史:短期間で遠くまで旅する」。InfoWorld。第4巻、第47号。カリフォルニア州パロアルト:Popular Computing Inc. 1982年11月29日。pp. 58– 60。ISSN 0199-6649 。2024年1月5日時点のオリジナルよりアーカイブ。
- ^ 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) 。
- ^ Ciarcia (1981)、31、32ページ。
- ^ 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 の場合、 間接ベクター方式では、割り込みデバイスはバイトを配置する必要があります。Z80 はこのバイトを使用し、バイトによって 128 の割り込みベクターの 1 つを選択できます。
- ^ Mathur (1989).マイクロプロセッサ入門. Tata McGraw-Hill Publishing Company. p. 111. ISBN 978-0-07-460222-5
Z80のレジスタアーキテクチャは8085よりも革新的である
。 - ^ Brewer, Tony. 「Z80 Special Reset」. GitHub . 2024年4月27日時点のオリジナルよりアーカイブ。2024年4月27日閲覧。
- ^ Adrian, Andre (2011年6月4日). 「Z80、8ビットのナンバークランチャー」。2023年11月26日時点のオリジナルよりアーカイブ。
- ^ abバルチ、マーク( 2003年 6 月 18 日)。「デジタルの基礎」。完全なデジタル設計:デジタル エレクトロニクスとコンピュータ システム アーキテクチャの包括的なガイド。プロフェッショナル エンジニアリング。ニューヨーク、ニューヨーク:McGraw-Hill Professional。p . 122。ISBN 0-07-140927-0。
- ^ プロフェッショナルコンピューティングに関する Seybold レポート。Seybold Publications。1983 年。8
ビットの世界では、最も人気のある 2 つのマイクロコンピュータは、Z80 と 6502 コンピュータ チップです。
- ^ Adrian, Andre (2011年6月4日). 「Z80、8ビット数値演算器: Z80 32ビット(long)加算」。2023年11月26日時点のオリジナルよりアーカイブ。
- ^ ポピュラーコンピューティング。McGraw -Hill。1983年。15ページ。
- ^ Markoff, John (1982年10月18日). 「Zilogの高速Z80が8ビットから16ビットのパフォーマンスを向上」. InfoWorld . 第4巻第41号. パロアルト、カリフォルニア州: Popular Computing, Inc. p. 1. ISSN 0199-6649. 2024年1月5日時点のオリジナルよりアーカイブ。
- ^ 電子設計. ヘイデン 1988. p. 142.
Z80命令セット全体をサポートすることに加えて、Z180
- ^ Ganssle, Jack G. (1992). 「Z80は生きています!」。2023年12月20日時点のオリジナルよりアーカイブ。
設計者はZ80と互換性のあるアーキテクチャを選択し、Z80ユーザーに完全にソフトウェア互換性のあるアップグレードパスを提供しました。64180プロセッサは、Z80のすべての命令をZ80とまったく同じように実行します。
- ^ Shiriff, Ken. 「シリコンに至るまで:Z80のレジスタの実装方法」。2023年11月5日時点のオリジナルよりアーカイブ。
- ^ キロボー。 1001001、1977、p. 22.
- ^ ロドニー、ザックス (1982). Z80 のプログラミング (第 3 版)。サイベックス。 p. 62.ISBN 978-0-89588-069-7。
- ^ ab Heath, Steve (2003).組み込みシステム設計. Oxford: Newnes. p. 21. ISBN 978-0-7506-5546-0。
- ^ Rison, Mark. Young, Sean (ed.). 「Z80 Flag Affection」. z80.info . Thomas Scherrer. 2023年12月23日時点のオリジナルよりアーカイブ。 2016年6月14日閲覧。
- ^ Shirriff, Ken. 「Z-80 には 4 ビット ALU があります。その仕組みは次のとおりです」。2013 年 9 月 9 日時点のオリジナルよりアーカイブ。2021年11 月 16 日閲覧。
- ^ ab Durda IV, Frank (2012). 「8080/Z80 命令セット」。2016年2月11日時点のオリジナルよりアーカイブ。2009年7月22日閲覧。
- ^ 「8080A/ 8 ビット N チャネル マイクロプロセッサ」。Intelコンポーネント データ カタログ 1978。カリフォルニア州サンタクララ: Intel Corporation。1978 年。pp. 11– 17。
すべてのニーモニックの著作権は Intel Corporation が 1977 年に所有します。
- ^ 「Z80 再配置マクロアセンブラー ユーザーズ ガイド」(PDF) p. B–2。2011年 7 月 20 日時点のオリジナル(PDF)からアーカイブ。2009年6 月 4 日閲覧。
- ^ Scanlon, Leo J. (1988). 8086/8088/80286 アセンブリ言語。Brady Books。p. 12。ISBN 978-0-13-246919-7.
[...] 8086 は、アセンブリ言語レベルで8080とソフトウェア互換性があります。 [...]
- ^ Nelson, Ross P. (1989 年 1 月) [1988]。『80386 ブック: 80386 用アセンブリ言語プログラマーガイド』。Microsoft プログラミング シリーズ (第 1 版)。Microsoft Press。p . 2。ISBN 978-1-55615-138-5.
[...] Intel のトランスレータ プログラムは、 8080アセンブラ プログラムを8086アセンブラ プログラムに変換できます[...]
- ^ ab "Z80 CPU Introduction". Zilog . 1995年。2023年12月20日時点のオリジナルよりアーカイブ
。252個のルート命令の言語を持ち、プレフィックスとして予約された4バイトを使用して、追加の308個の命令にアクセスします。
- ^ 「Z80-CPU命令セット」(PDF) 。Zilog。1976年。19ページ。2023年11月5日時点のオリジナルよりアーカイブ。2021年7月20日閲覧。
- ^ サンチェス、フリオ; カントン、マリア P. (2008)。エンジニアと科学者のためのソフトウェアソリューション。テイラー&フランシス。p. 65。ISBN 978-1-4200-4302-080x86
ファミリより前の 8 ビット マイクロプロセッサ (Intel 8080、Zilog Z80、Motorola など) には乗算機能は搭載されていませんでした。
- ^ Ciarcia (1981)、86ページ。
- ^ HAYES, JOHN P. (1978).コンピュータアーキテクチャと組織. p. 423. ISBN 0-07-027363-4。
- ^ Froehlich, Robert A. (1984).フリーソフトウェアカタログとディレクトリ. Crown Publishers. p. 133. ISBN 978-0-517-55448-7文書化されていない Z80 コードでは
、IX および IY レジスタを使用した 8 ビット操作が可能です。
- ^ 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 などの命令です。
- ^ Robin Nixon 『Amstrad Notepad Advanced User Guide』、Robin Nixon、1993年、ISBN 1-85058-515-6、219~223ページ。
- ^ 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 をアドレス バスに配置します。
- ^ 「タイミング」。Z80 ファミリー CPU ユーザー マニュアル(PDF)。Zilog 。2016年。p. 7。UM008011-0816。2023年 12 月 26 日時点のオリジナルよりアーカイブ(PDF) 。2024 年1 月 5 日閲覧。
- ^ Ciarcia (1981)、65ページ。
- ^ ロドニー、ザックス (1989)。 Z80のプログラミング。サイベックス。 p. 200.ISBN 978-0-89588-069-7.
ADD A, n アキュムレータに即値データ n を加算します。メモリタイミング: 2 M サイクル、7 T 状態。
- ^ Ciarcia (1981)、63ページ。
- ^ Ciarcia (1981)、77ページ。
- ^ Ciarcia (1981)、36ページ。
- ^ Ciarcia (1981)、58ページ。
- ^ 「特殊目的レジスタ」。Z80 ファミリー CPU ユーザーマニュアル(PDF)。Zilog 。2016年。p. 3。UM008011-0816。2023年 12 月 26 日時点のオリジナルよりアーカイブ(PDF) 。2024 年1 月 5 日閲覧。
- ^ 「Z80 ファミリー CPU 周辺機器ユーザーマニュアル」(PDF) 。EEWORLD データシート。ZiLOG。2001年。2014年 5 月 2 日時点のオリジナル(PDF)からアーカイブ。2014 年4 月 30 日閲覧。
- ^ 「シャープ 1986 半導体データブック」(PDF)。p. 218。2024年1月1日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月1日閲覧。
- ^ 「SHARP MZ シリーズの概要」。SharpMZ.org。2008年3 月 27 日時点のオリジナルからアーカイブ。2011 年7 月 28 日閲覧。
ほとんどの MZ は 8 ビット CPU LH0080 / Z80 [...]
- ^ “LH0080/LH0080A/LH0080B”. 1986年半導体データブック(PDF) .シャープ株式会社. 1986年. p. 210. 2024年1月1日時点のオリジナルよりアーカイブ(PDF) . 2024年1月1日閲覧。
- ^ 「シャープ 1986 半導体データブック」(PDF)。pp. 255– 269。 2024年1月20日時点のオリジナルよりアーカイブ(PDF) 。2024年1月13日閲覧。
- ^ 「シャープ 1986 半導体データブック」(PDF)。pp. 296– 301。 2024年1月20日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月20日閲覧。
- ^ 「シャープ 1986 半導体データブック」(PDF)。pp. 302– 306。 2024年1月28日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月28日閲覧。
- ^ 「シャープ 1986 半導体データブック」(PDF)。pp. 307– 311。 2024年1月28日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月28日閲覧。
- ^ Ganssle, Jack G. (1992). 「The Z80 Lives!」。2009 年 5 月 1 日時点のオリジナルよりアーカイブ。2009年7 月 17 日閲覧。64180
は、Hitachi 提供の Z80 コアで、多数のオンチップ「追加機能」を備えています。Zilog のバージョンは Z180 で、基本的に同じ部品です。
- ^ Ganssle, Jack G. (1992). 「The Z80 Lives!」。2009 年 5 月 1 日時点のオリジナルよりアーカイブ。2009年7 月 17 日閲覧。
東芝と Zilog はどちらも、従来の Z80 周辺機器がオンボードに統合された Z80 コアである 84013 と 84015 を販売しています。
- ^ Granville, Fran (1996年8月1日). 「EDN Access — 08.01.96 Z80が20周年」EDN。2023年8月7日時点のオリジナルよりアーカイブ。 2023年8月7日閲覧。
- ^ 「EZ80 ACCLAIM 製品ファミリー」。Zilog。2008 年 12 月 20 日時点のオリジナルよりアーカイブ。
- ^ Electronic Business Asia . Cahners Asia Limited. 1997. p. 5.
Kawasaki の KL5C80A12、KL5C80A16、KL5C8400 は、高速 8 ビット
MCU
および CPU です。CPU コード KC80 は、Zilog の Z80 とバイナリ レベルで互換性があります。KC80 は、同じクロック レートで Z80 よりも約 4 倍高速に命令を実行します。
- ^ 「ハードウェア仕様」。S1mp3.org 2005年10月19日。2005年12月8日時点のオリジナルよりアーカイブ。
- ^ “Overview :: T80 cpu :: OpenCores”. opencores.org . 2024年4月1日時点のオリジナルよりアーカイブ。 2024年7月1日閲覧。
- ^ 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日閲覧。
- ^ 「TST-4043: HFモデムとFECを備えたデータ暗号化装置」。Crypto Museum。2018年2月27日。2023年11月5日時点のオリジナルよりアーカイブ。
- ^ 「NSC800 高性能低消費電力 CMOS マイクロプロセッサ」(PDF)。ナショナル セミコンダクター。1992 年 6 月。2023年 11 月 19 日時点のオリジナルよりアーカイブ(PDF) 。
- ^ 「MCS-85、Zilog Z80、National NSC800拡張ボード」。CPU Shack 2015年2月15日。2023年9月30日時点のオリジナルよりアーカイブ。
- ^ 「セクション 6 MOS MPU、MCU、および周辺機器の市場動向」(PDF)。Integrated Circuit Engineering Corporation。p. 16。2011 年 6 月 14 日時点のオリジナル(PDF)からアーカイブ。
- ^ Axelson, Jan (2003). Embedded Ethernet and Internet Complete. Lakeview research. p. 93. ISBN 978-1-931448-00-0Rabbit Semiconductor
の Rabbit 3000 マイクロプロセッサは、ZiLOG, Inc. の名高い Z80 マイクロプロセッサを大幅に改良、強化した派生製品です。
- ^ Hyder, Kamal; Perrin, Bob (2004). Rabbit 3000 マイクロプロセッサを使用した組み込みシステムの設計。Newnes。p. 32。ISBN 978-0-7506-7872-8Rabbit
のパーツは Zilog Z180 アーキテクチャに基づいていますが、Zilog のパーツとはバイナリ互換性がありません。
- ^ Cruz, Eduardo (2014年11月23日). 「Capcom Kabuki CPU – Intro」. Arcade Hacker . 2023年11月5日時点のオリジナルよりアーカイブ。
- ^ ホルツ、ハーマン (1985)。コンピュータワークステーション。チャップマンとホール。p. 223。ISBN 978-0-412-00491-9.
そして CP/M はマイクロコンピュータの 8 ビットの世界を支配し続けました。
- ^ 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 コンピューターの寄せ集めから始まります。
- ^ ステンゲル、スティーブン。「Otrona Attache」。スティーブの古いコンピュータ博物館。2023年12月27日時点のオリジナルよりアーカイブ。2019年3月5日閲覧。
- ^ 「Sharp PC-1500 テクニカルリファレンスマニュアル」(PDF) 。 2023年11月5日時点のオリジナルよりアーカイブ(PDF) 。
- ^ 「Poor Man's Laptop」。Googleブックス。Popular Mechanics、1991 年 4 月、120 ページ。1991 年 4 月。2018 年4 月 11 日閲覧。
- ^ “Laser PC4”. Old Computer Museum . 2023年11月5日時点のオリジナルよりアーカイブ。 2018年4月11日閲覧。
- ^ “Laser PC5 from VTech”. larwe.com . 2023年11月5日時点のオリジナルよりアーカイブ。2018年4月11日閲覧。
- ^ 「Laser PC6」。Perfect Solutions dot com。Perfect Solutions。2018年5月21日時点のオリジナルよりアーカイブ。2018年4月11日閲覧。
- ^ “Mailstation Development”. Fybertech.net . 2024年1月6日時点のオリジナルよりアーカイブ。2021年4月18日閲覧。
- ^ Woerner, Joerg. 「Texas Instruments PS-6200」。Datamath Calculator Museum。2023年11月5日時点のオリジナルよりアーカイブ。2019年6月18日閲覧。
- ^ Woerner, Joerg. 「Texas Instruments PocketMate 100」。Datamath Calculator Museum。2023年11月5日時点のオリジナルよりアーカイブ。2019年6月18日閲覧。
- ^ イアン・R・シンクレア(2000年)。実用エレクトロニクスハンドブック(第5版)。オックスフォード、アングル:ニューネス。p.204。ISBN 978-0-7506-4585-0. LCCN 00502236. OCLC 42701044.
- ^ 「Gordon Reid のビンテージシンセ – Sequential Circuits Prophet 5 と Prophet 10」。gordonreid.co.uk。1999 年。2023 年 11 月 5 日時点のオリジナルよりアーカイブ。
- ^ Fabio, Adam (2014年3月19日). 「Prophet 600: クラシックシンセサイザーがプロセッサアップグレードを実現」。2023年11月5日時点のオリジナルよりアーカイブ。
- ^ Keeble, Rob (2002年9月). 「30 Years of Emu」. Sound On Sound . SOS Publications Group . 2025年1月10日閲覧。
- ^ “古い携帯電話のデモを作る — AONDEMO”. habr.com . 2020年1月29日. 2023年11月5日時点のオリジナルよりアーカイブ。
- ^ Edwards, Benj (2024年4月22日). 「48年後、Zilogは古典的なスタンドアロンZ80マイクロプロセッサチップを廃止します」。Ars Technica。2024年5月12日時点のオリジナルよりアーカイブ。 2024年5月23日閲覧。
出典
- アンダーソン、A. ジョン (1994)。コンピュータ技術の基礎(第 1 版)。ロンドン: チャップマン & ホール。ISBN 0-412-59810-8。
- Ciarcia, Steve (1981)。『独自の Z80 コンピューターを構築する - 設計ガイドラインとアプリケーション ノート (第 1 版)』。Byte Books。ISBN 978-0-07-010962-9。
- Faggin, Federico、Peuto, Bernard、Shima, Masatoshi、Ungermann, Ralph (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 年。
- ハードウェア書籍
- Build Your Own Z80 Computer – 設計ガイドラインとアプリケーション ノート; 第 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 版; Rodnay Zaks および Austin Lesea; Sybex; 466 ページ; 1979 年; ISBN 978-0-89588-029-1 . (アーカイブ)
- ソフトウェア書籍
- Programming the Z80 ; 第 3 版; Rodnay Zaks; Sybex; 630 ページ; 1980 年; ISBN 978-0895880949 . (アーカイブ)
- Z80 アセンブリ言語プログラミング; 第 1 版; Lance Leventhal; Osborne/McGraw-Hill; 642 ページ; 1979 年; ISBN 978-0931988219 . (アーカイブ)
- 8080/Z80 アセンブリ言語 – プログラミングの改善テクニック; 第 1 版; Alan Miller; John Wiley & Sons; 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 版; Lance Leventhal および Winthrop Saville; Osborne/McGraw-Hill; 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をサポート

