Zilog Z80は、 Zilog社が設計した8ビットマイクロプロセッサで、初期のパーソナルコンピューティングの進化において重要な役割を果たしました。1976年に発売されたZ80は、Intel 8080とのソフトウェア互換性を持つように設計されており、優れた統合性と優れた性能により、魅力的な代替プロセッサとなりました。8080の7つのレジスタとフラグレジスタに加え、Z80は代替レジスタセット、2つの16ビットインデックスレジスタ、そしてビット操作やブロックコピー/検索などの追加命令を導入しました。
Z80は、当初8080と同様に組み込みシステムでの使用を想定していましたが、その互換性、手頃な価格、そして優れた性能により、1970年代後半から1980年代初頭にかけてビデオゲーム機や家庭用コンピュータに広く採用され、パーソナルコンピューティング革命の推進力となりました。Z80は、 Osborne 1、Radio Shack TRS-80、ColecoVision、ZX Spectrum、セガのMaster System、パックマンのアーケード筐体といった象徴的な製品に搭載されました。1990年代初頭には、ゲームギアやTI-83シリーズのグラフ電卓などの携帯機器にも搭載されました。[2] [3]
Z80は、Intel 8080開発の中心人物であるフェデリコ・ファギンの独創的な発明でした。1974年にIntelを去った後、彼はラルフ・ウンガーマンと共同でZilogを設立しました。Z80は1976年7月に発売され、その成功によりZilogは独自のチップ工場を設立することができました。[4] Zilogは、最初の生産のために、米国のSynertekとMostek、および欧州のセカンドソースメーカーであるSGSにZ80のライセンスを与えました。この設計は、日本、東欧、ソビエトのさまざまなメーカーによっても模倣され、NEC、東芝、シャープ、日立などの大手企業が独自のバージョンまたは互換性のあるクローンを製造したため、世界市場で受け入れられました。
Z80は、より強力なプロセッサの導入にもかかわらず、長年にわたり組み込みシステムで使用され続け、発売から48年後の2024年6月まで生産が続けられました。Zilog社はZ80の基本設計をさらに強化し、Z180、Z280、Z380といった後継機種を次々と発表しました。最新版のeZ80は2001年に発売され、2025年現在も販売されています[アップデート]。[5]



物理学者でありエンジニアでもあったフェデリコ・ファギンは、フェアチャイルドセミコンダクター社、そして後にインテル社で、トランジスタと半導体製造技術の基礎研究に携わっていました。彼はまた、インテル社でメモリやマイクロプロセッサに使用される基本設計手法を開発し、インテル 4004、インテル 8080、その他いくつかのICの開発を主導しました。嶋正敏はファギンの監督の下、インテル 4004とインテル 8080の主任ロジックおよびトランジスタレベル設計者を務め、ラルフ・ウンガーマンはカスタム集積回路の設計を担当しました。[6]
1974年初頭、インテルはマイクロプロセッサを単体で販売する製品としてではなく、主力製品であるスタティックRAMとROMの販売を促進する手段と見なしていた。組織再編により、以前は独立していた部門の一部がレス・ヴァダスの指揮下に置かれ、マイクロプロセッサの社内における地位はさらに薄れた。同年、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とバイナリ互換になるように設計した[21] [22]。これにより、8080のほとんどのコード、特にCP/M オペレーティングシステムとIntelの8080用PL/Mコンパイラ(およびその生成コード)は、新しいZ80 CPUで変更せずに実行できるようになった。嶋正敏氏は、少数のエンジニアとレイアウト担当者の支援を受けながら、Z80 CPUのマイクロアーキテクチャとゲートレベルおよびトランジスタレベルのほとんどを設計した。[23] [24] CEOのフェデリコ・ファギン氏は、2人の専任レイアウト担当者とともに、チップレイアウト作業に深く関わっていた。ファギン氏によると、彼は投資家から与えられた厳しいスケジュールを守るため、週80時間働いていたという。[4]
Z80は8080に比べて多くの改良が加えられた。[22]
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 Rainbow、MOS 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のプログラミングモデルとレジスタセットは極めて従来型であり、最終的には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ビット演算 専用の命令で補完しました。

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 で切り替え)IFF1およびIFF2、2 ビットの割り込みモード、IM。リフレッシュレジスタ()は、RCPUがオペコード(または内部的には1バイト命令のように実行されるオペコードプレフィックス)をフェッチするたびにインクリメントされ、プログラム実行とは単純な関係を持たない。これは、ゲームやソフトウェア保護スキームにおける疑似乱数生成に用いられることがある。 [41]また、一部の設計では「ハードウェア」カウンタとしても用いられている。その一例としてZX81が挙げられ、ラップアラウンド時に割り込みをトリガーすることで(INTをA6に接続することで)、テレビ画面上の文字位置を追跡することができる。
割り込みベクターレジスタ は、IZ80固有のモード2割り込み(命令で選択)に使用されます。これは、割り込み確認サイクル中にCPUに送信されるインデックスを介して選択されるIM 2128エントリのサービスルーチンアドレステーブルのベースアドレスの上位バイトを提供します。このインデックスは、サービスルーチンを指すテーブル化された間接アドレスへのポインタの下位バイト部分に過ぎません。[26]ポインタは特定の周辺チップまたは周辺機能またはイベントを識別します。チップは通常、優先順位の解決のためにいわゆるデイジーチェーンで接続されています。リフレッシュレジスタと同様に、このレジスタも創造的に使用されることがあります。割り込みモード0と1(または割り込みを使用しないシステム)では、単なる別の8ビットデータレジスタとして使用できます。
これらの命令はLD A,R、LD A,I他のすべてのLD(ロード)命令とは異なり、Z80フラグレジスタに影響を与えます。符号フラグ(ビット7)とゼロフラグ(ビット6)は、リフレッシュレジスタまたは割り込みソースレジスタからロードされたデータに応じて設定されます。どちらの命令においても、パリティ/オーバーフローフラグ(ビット2)はIFF2フリップフロップの現在の状態に応じて設定されます。[42]
Z80は一般的に8ビットCPUと考えられていますが、4ビットのALUを備えているため、計算は2段階で行われます。[43]
最初の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
4つの構文の図解。同等の、または(8086の場合)非常に類似したロード命令とストア命令のサンプルを使用しています。[44] Z80構文では、式を括弧で囲むことで、値をメモリアドレスとして使用することを示します(後述)。一方、8086構文では、この目的で通常の括弧ではなく角括弧を使用します。Z80と8086はどちらも、+記号を使用して、定数をベースレジスタに追加してアドレスを形成することを示します。8086はZ80の完全なスーパーセットではないことに注意してください。BXは、ポインタとして使用できる唯一の8086レジスタペアです。
インテルがアセンブリ言語ニーモニックの著作権を主張したため、[45] Z80では新しいアセンブリ構文を開発する必要がありました。今回はより体系的なアプローチが採用されました。
JP (HL)、、およびを除き、一貫して「メモリの内容」(定数アドレスまたは変数ポインタの参照)を示すために使用されます。これらの命令は、メモリを介さずに、それぞれのレジスタから新しいPCアドレスを直接ロードします。JP (IX)JP (IY)これらの原則により、すべての新しい 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命令もあります)。
オリジナルの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 ビット操作(ADC、SBC)と 8 ビット算術演算に使用されますが、8080 から継承された 16 ビット操作(ADD、、 )はこれに影響を与えません。また、フラグ レジスタのビット 1(8080 では予備ビット)はINC、DEC最後に実行された算術命令が減算であったか加算であったかを示すフラグ 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 になるまで減分されます。非繰り返しバージョンとではLDI、LDD1 バイトを移動してポインタとバイト カウンタを増やします。バイト カウンタが 0 になると、P/V フラグがリセットされます。対応するメモリから I/O への命令、、、、、、、、INIRおよびは、バイトカウンタとして BC ではなく B が使用される点を除いて同様に動作します。[52] [53] Z80 は、レジスタCをINDR使用してポートを指定することにより、任意のレジスタを 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 、Z280、Z380についても同様のことが言えます。しかし、これらの命令が技術的に可能な限りのサイクル効率、つまり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のドキュメントに準拠していません。命令OTDRとOTIR命令はどちらもキャリーフラグ(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版が次々と導入された。
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 / PCWやZX81などで、デコードハードウェア要件を最小限に抑えるためにも使用されている。
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の方が多く生産されています。[要出典]

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

Z80をメインプロセッサとして、あるいはZ80用に書かれたソフトウェアにアクセスするためのプラグインオプションとして搭載した、複数の家庭用コンピュータが発売された。注目すべきものとしては、TRS-80シリーズがあり、オリジナルモデル(後に「モデルI」と改名された)、モデルII、モデルIII、モデル4はZ80をメインプロセッサとして搭載していた。また、他のいくつかの(すべてではない)TRS-80モデルはZ80をメインまたはセカンダリプロセッサとして使用していた。その他の注目すべきマシンとしては、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 [92]など、他のCMOSベースプロセッサの開発にも影響を与えた。シャープは1981年にBASICでプログラム可能なポケットコンピュータであるPC-1500を発売し、続いて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」と呼ばれる小型ラップトップコンピューターのシリーズを製造した。[93] [94]最後の 2 つは Laser PC5 [95]と PC6 である。[96] 1999 年に初めてリリースされた Cidco MailStation Mivo 100 は、Z80 ベースのマイクロコントローラーを搭載したスタンドアロンのポータブル電子メールデバイスであった。[97]テキサス・インスツルメンツは、Z80コアをベースにした東芝のプロセッサを搭載したポケットオーガナイザーのライン(2000年終了)を製造しました。その最初の製品はTI PS-6200 [98]で、その後数十種類のモデルが長期間生産され、PocketMateシリーズが完成しました。[99]

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 -82やTI-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]
ADDアキュムレータにゼロを加算する、SUBアキュムレータからゼロを引き算する、またはアキュムレータにゼロをOR加算またはXOR引き算することでアキュムレータのパリティをテストできます。これらはすべて、8080 と Z80 の両方で、速度とサイズが同じ単一命令操作です。プログラマがたまたまアキュムレータにゼロを加算または引き算してパリティをテストすることを選択した場合OR、XORZ80 はプログラムを正しく実行しますが、プログラマがパリティをゼロを加算または引き算してテストすることを選択した場合ADD、SUBZ80 は (ゼロの加算または減算ではオーバーフローやアンダーフローが発生しないため) 常に P/V フラグをリセットします。8080 や 8085 のようにバイトのパリティを正しく示すために P を割り当てるのではなく、プログラムが失敗する可能性があります。 Intel 8080のプログラミングマニュアルには、パリティテストに算術命令の使用を推奨したり、論理命令の使用を規定したりした記述はないため、8080プログラマがどちらか一方を選択する理由はほとんどありません。実際のアプリケーションでは、この例で示した算術命令が論理命令としてパリティテストに選択される可能性は低くAND A、OR Aより高速で1バイトも短いからです。
割り込み処理は、 IM
i (
i
=
0、1、または2)命令
で指定された割り込み方式に従って開始されます。i = 1(直接方式
)
の場合、PCには0038Hがロードされます。i
= 0(ベクター方式)の場合、割り込みデバイスは1バイト分のオペコードを配置できます。i = 2(間接ベクター方式)の場合、割り込みデバイスは1バイトを配置する必要があります。Z80はこのバイトを使用し
、
バイトによって128個の割り込みベクターから1つを選択できます。
Z80のレジスタアーキテクチャは8085よりも革新的である。
ビットの世界では、Z80と6502の2つのマイクロコンピュータが最も人気のあるコンピュータチップです。
Z80命令セット全体をサポートすることに加えて、Z180は
設計者はZ80と互換性のあるアーキテクチャを選択し、Z80ユーザーに完全にソフトウェア互換性のあるアップグレードパスを提供しました。64180プロセッサは、Z80のすべての命令をZ80と全く同じように実行します。
すべてのニーモニックの著作権はIntel Corporation 1977に帰属します。
8086
は、アセンブリ言語レベルで
8080
とソフトウェア互換性があります。
[ ...]
[...] Intelトランスレータ プログラムは、8080アセンブラ プログラムを8086アセンブラ プログラムに変換できます [...]
個のルート命令からなる言語を持ち、プレフィックスとして予約された4バイトを用いて、さらに308個の命令にアクセスする。
80x86 ファミリより前の 8 ビット マイクロプロセッサ (Intel 8080、Zilog Z80、Motorola など) には乗算機能は搭載されていませんでした。
IX レジスタと IY レジスタを使用した 8 ビット操作が可能です。
オペコードがレジスタ HL、H、または L で機能する場合、そのオペコードの前に #DD(または #FD)が付くと、IX、IXH、または IXL(または IY、IYH、IYL)でも機能しますが、一部例外があります。例外となるのは、LD H,IXH や LD L,IYH のような命令です。
/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 をアドレスバスに配置します。
ADD A, n アキュムレータに即値データ n を加算します。メモリタイミング: 2 M サイクル、7 T ステート。
ほとんどのMZシリーズは8ビットCPU LH0080 / Z80を搭載しています [...]
は、日立製のZ80コアに多数のオンチップ「追加機能」を搭載したものです。ZilogのバージョンはZ180で、基本的に同じ部品です。
東芝とZilogはともに、従来のZ80周辺機器をオンボードに統合したZ80コアである84013と84015を販売している。
川崎重工のKL5C80A12、KL5C80A16、KL5C8400は、高速8ビット
MCU
およびCPUです。CPUコードKC80は、ZilogのZ80とバイナリレベルで互換性があります。KC80は、同じクロック周波数でZ80の約4倍の速度で命令を実行します。
ZiLOG, Inc. の定評ある Z80 マイクロプロセッサを大幅に改良、強化した派生製品です。
Rabbit のパーツは Zilog Z180 アーキテクチャに基づいていますが、Zilog のパーツとはバイナリ互換性がありません。
マイクロコンピュータの 8 ビットの世界を支配し続けました。
。汎用オペレーティングシステムという概念はまだ初期段階にあります。多くの点で、それはCP/Mと初期の8080およびZ80コンピュータの寄せ集めから始まっています。
出典
シミュレーター/エミュレーター: