Z80

Z80 は、米国ザイログによって製造された 8ビット・マイクロプロセッサーである。1976年に発表され、1980年代の中頃までは、パーソナルコンピューターのCPUを中心に幅広い用途を支えてきた。その後、特にセカンドソースメーカーから周辺デバイスを集積した製品も開発された。Z80は、今日(2022年)でも、同社により製造されている極めて息の長いCPUのひとつである。組み込み用途などではFPGAのIPコアとして利用されることが多い。 嶋正利らインテルを退社したIntel 8080の開発スタッフが設計を行っており、8080とはバイナリーレベルで「ほぼ」上位互換性がある。 ザイログオリジナルの製品としてクロック周波数が2.5MHzのZ80から20MHzの派生製品まで、各社からセカンドソースや互換製品が製造されている。2007年現在は実チップではなく、FPGAやASIC用のIPコアとして活用されている。パチンコの主基板向けプロセッサーに使われているNECのμPD70008 IPをはじめ、商用の互換コアは20社以上存在し、オープンソースのIPコアも5種類以上存在している。 当初、Z80とその互換CPUはより高速な8080互換CPUとして応用され、S-100バス互換機にもこぞって搭載されるなど、黎明期のパーソナルコンピューター市場を支配した。日本国内においても、1970年代の末から80年代前半頃にかけてビジネス用のオフィスコンピュータなどの他、各社のホビーパソコンにも搭載された。 また、組み込み用としては21世紀に至るまで応用され続けて来ており、多数の機器に搭載されたほか、初期のゲーム専用機などにも搭載されていた。パチンコ・パチスロの抽選を司る主基板部分のコアCPUには暗号機能を付与したZ80ベースのカスタムLSIが使われており、消費量の多い分野の一つである。このLSIはCPUとメモリの間で交換するデータを暗号化し、プローブを当ててもプログラムやデータが読み取れない様にしている。 8080がコンパニオンチップである8251 (USART)、8253 (CTC / PIT)、8255（PPI）でファミリーを構成していたのに対応して、Z80もZ80SIO、Z80CTC、Z80PIOや、Z80DMAでZ-80ファミリーを構成する。また、これらを1チップに集積したマイコンがある。 開発者の間では、しばしば「ゼッパチ」と略して呼ばれる。同社にはZ8というマイクロコントローラーもあるが、「ゼッパチ」の呼称はもっぱらZ80に対して使われる。 Z80はインテルの 8080マイクロプロセッサの改良型といえる製品であり、他のインテル系CPUと同じくリトルエンディアンである。8080に対して若干の拡張、電源の 5V単一化、より高いクロック周波数への対応などが図られた。メモリ空間は16ビット幅のアドレスバスで示される64KiBで、それ以上のメモリ空間を操作する場合には、外部にバンク切り替え回路やMMUなどを追加する必要がある。 NMOS版の最大動作クロック周波数は品番の末尾のサフィックス（アルファベット）の有無と種類で識別できる。Z80が2.5MHz版、Z80Aが4MHz版、Z80Bが6MHz版、Z80E若しくはZ80Hが8MHz版など。トランジスター数は8,200個。CMOS版ではZ84C0006が6.17MHz、Z84C0008が8MHz、Z84C0010が10MHz、Z84C0020が20MHz動作となっている。Z80H(40ピンDIPプラスチックパッケージ)の価格は1982年当時1000個ロット時で19.95ドルであった。Z80Hに対応するZ8500周辺ファミリがサポートされ、Z8530シリアル・コミュニケーション・コントローラ、Z8531非同期シリアル・コミュニケーション・コントローラ、Z8536カウンタ/タイマ・パラレルI/Oユニット、Z8538バスコントロールI/Oインターフェイス、Z8060 FIFOエキスパンダ、Z8516 ダイレクト・メモリ・アクセス・ユニットなどがある。 8080に対して、8ビット汎用レジスタを2セット備え切り替え可とする、IXとIYの2つのインデックスレジスタを使用したメモリ操作を含む命令の増強、DRAMのリフレッシュ（情報を維持）する機能の内蔵とそのためのRレジスタの追加、割り込みモードの追加、相対アドレスによるジャンプ命令の追加、ワイヤードロジックによる命令の実行、などの追加や変更が行われている。 また、正式には命令表に無い未定義命令があり、多くが命令のフォーマットに準ずる動作をした。機能的に既存の命令と重複するものが多かったが、16ビット固定のインデックスレジスタを8ビットレジスタとして使うものなど一部はZ280のマニュアル中で正式にドキュメント化されている。但し、Z-80においては飽くまでも非公式の命令であるため互換プロセッサの一部では期待どおりの動作をしないケースもある。 ハードウェア上の非公開の機能として、Z80のNMOS版、CMOS版には通常のリセットの他に、特別なリセット(スペシャルリセット)が存在し、Zilog社に在籍していた嶋正利、フェデリコ・ファジン、ラルフ・アンガーマンの3氏による米国特許4486827として1984年12月4日に成立している。スペシャルリセットは通常のリセット同様、リセット入力ピンを利用するが、通常リセットより短いリセットパルス幅(2クロック以内)が与えられる必要がある。スペシャルリセットが有効になるとPC(プログラムカウンター)のみがリセットされ、他のレジスタは一切変わらない。特許や他のリソースに示されているスペシャルリセットの応用はエミュレータやマルチタスキング等である。 製造には、この頃使われ始めたイオン打ち込み技術が使用された。当時、互換品の製造にあたりライセンス契約を結んでセカンドソースとなったり、クリーンルーム設計による独立実装によるのではなく、チップの顕微鏡写真からマスクを起こしてデッドコピーを行う一部の日本企業があったため、イオン打ち込み技術はその対策のためにも使われた。イオン打ち込みにより、エンハンスメント（ノーマリーオフ）に見えるが実はディプリーション（ノーマリーオン）というトランジスタを6個ほど仕組み、素直にデッドコピーしたのでは正しく動作しなくなるようにして時間稼ぎをした。 8080との差別化のため、命令の1サイクル目（M1サイクル）では他のサイクルに比べて所要ステート数が少なくなっている。通常のメモリサイクルが3ステート必要なのに対しM1サイクルでは2ステートである。タイミングチャート上はM1サイクルには4ステート必要なように見えるが、後半の2ステートはリフレッシュ機能のために使用され、通常のメモリアクセスとは関係がない。 通常のリードライトサイクルが3ステート(T1/T2/T3)なのに対し、IN/OUT命令では、自動的にウェイトサイクル(TW)が挿入され、4ステート(T1/T2/TW/T3) となる。ウェイトサイクル中に、/WAIT(active low) 信号がサンプリングされ、アサートされている限りウェイトサイクルを継続することで、応答が遅いIOデバイスに対応することが可能となっている。 これは同じ命令を実行しても8080よりも高速に実行するためのZ80の売りの一つだった。反面、このM1サイクルだけのために速いメモリが必要になり、ハードウェア設計者からは不評を買っていた。 Z80には「ある処理を行う際に、特定の命令の組み合わせを用いると、普通に命令を書いた場合よりも実行にかかるクロック数や命令の総バイト数を少なくできる」というテクニックが多数存在し、これらは「最適化」「クロック削り」などと呼ばれた。例えば、Z80にて追加されたブロック転送命令やインデックスレジスタ命令は、一連の処理に必要なプログラムサイズを節約できる反面、他の命令で代用する場合よりも所要クロック数が増大するといったデメリットもあり、命令のメモリ空間上の占有量と処理速度とのトレードオフの関係にあった。 またZ80は、同時期に新規に開発された他社製の8ビットCPUと比較すると、相対ジャンプは可能であるもののジャンプ先の範囲が狭く、PC相対アドレッシングが無いなどリロケータブルな構成をとりづらく、バイナリ化したコードをリロケータブルに配置して動作させるドライバやデバッガ、オペレーティングシステム等の環境を作るには不向きとされた。リロケータブルでない一般的なバイナリは、配置アドレスを変更する度に再コンパイルや再リンクが必要となった。またアドレス参照時のオフセットも汎用レジスタ使用時には指定できず、インデックスレジスタ使用のオフセット指定も-128〜0〜127の範囲で制限されるため、C言語のポインタとの相性がよくない面があった。 アドレッシングモードが少ないこともあり、オペコードおよび命令フォーマットを暗記して、直接機械語を記述することも、さほど難しいものでもなかった。 A,B,C,D,E,H,Lは8080の同名レジスタと同じ機能を持つ。 Fは8080上位互換のフラグレジスタである。 これらの8ビット汎用レジスタとアキュムレータ、フラグレジスタはZ80では切り替えて使える裏レジスタが用意された。 但し、裏表どちらのレジスタであるかを判断する命令はない。 Rはリフレッシュカウンタで、オリジナルのZ80では下位7ビットが変化し、最上位ビットは初期値不定で、値を書き込むとその最上位ビットが保持される。周辺LSI統合CPU・上位互換CPUでは、リフレッシュカウンタを8ビットに拡張し、最上位ビットが保存されないものもあるほか、リフレッシュ機構をCPUから完全に切り離してRレジスタが変化せず書き込んだ値が保存されるものもある。 フラグレジスタのビット位置（*は8080から拡張されたビット） b7:S　符号 b6:Z　ゼロ b5:未使用 （0に固定） b4:H　AUXキャリー（パックBCD演算用） b3:未使用 （0に固定） b2:P/V *　パリティ・オーバーフロー（8080ではP パリティ） b1:N *　減算（ADD命令で0、SUB命令で1になる。8080では未使用、0に固定） b0:C　キャリー 8080に存在する命令についてはパリティフラグを除く挙動とバイナリは同一となり、基本的には上位互換であるため非互換部分に留意すれば同一のバイナリを動作させる事も可能である。 Intelによる8080の上位互換プロセッサであるIntel 8085とは拡張部分の命令セットや挙動が違うため非互換である。 バイナリこそ互換性があるものの、ザイログ社が定義したZ80のニモニックは、インテル版と全く異なるものとなっている。記述の容易さが勘案され、より整理されたものとなった。但し、これは初心者にも判りやすいとされる反面、他のCPUのニモニックと比較して、アドレッシングモードや実際の命令がはっきりせず、単純化された結果、使えない組み合わせのオペランドの区別がしにくいなどの状況が発生している。オペランドの順番は、ディスティネーションが前でソースが後である。また、オペコードの仕様上、HLレジスタとインデックスレジスタ間での処理は組み合わせに制限がある。 ここではZ80で追加された命令のみ示す。8080からある命令についてはIntel 8080#命令セットを参照。また、IXとIYについては同等の命令が存在するが、ここではIXのみを示す。 rは8ビットレジスタA,B,C,D,E,H,Lまたは(HL)を表す。 rrは16ビットレジスタBC,DE,HL,SPを表す。 rxは16ビットレジスタBC,DE,IX,SPを表す。 nは8ビットの即値を表す。 nnは16ビットの数値（即値またはメモリアドレス）を表す。 bはビット位置0～7を表す。 dはインデックスレジスタの変位（符号つき8ビット）を表す。 eはプログラムカウンタの変位（符号つき8ビット）を表す。 LD r,(IX+d) LD (IX+d),r インデックスレジスタを用いたメモリとレジスタの転送。rに(HL)は指定できない。 LD (IX+d),n メモリに即値をストアする。 LD IX,nn インデックスレジスタに即値をロードする。 LD IX,(nn) メモリの内容をインデックスレジスタにロードする。 LD (nn),IX インデックスレジスタの内容をメモリにストアする。 LD BC,(nn) LD DE,(nn) LD SP,(nn) メモリの内容を16ビットレジスタにロードする。8080ではHLレジスタでしかできなかった。 LD (nn),BC LD (nn),DE LD (nn),SP 16ビットレジスタの内容をメモリにストアする。8080ではHLレジスタでしかできなかった。 LD SP,IX インデックスレジスタの内容をSPレジスタに転送する。 EX AF,AF' AFレジスタとAF'レジスタを交換する。 EXX BC,DE,HLレジスタとBC',DE',HL'レジスタを交換する。 LD A,I LD I,A 割り込みベクタレジスタとAレジスタの転送。LD A,Iを使用するとき、特にNMOS品ではこの命令を実行中に割り込みがかかった場合、元の割り込み状態に関わらず割り込み禁止になる場合がある。このバグ（エラッタ）はNMOS品は全般にある。CMOS品でも、東芝TMPZ84Cxx・日立HD64180 R0マスク・他にはこのバグがある。ザイログのものは修正されている。HD64180はR1マスクおよびZバージョンで修正済み。シャープLH5080も修正済みの模様。NEC μPD70008は不明。 LD A,R LD R,A リフレッシュレジスタとAレジスタの転送。オリジナルのZ80においてRの下位7ビットは常に変動しているため、LD A,Rは簡易な乱数発生器としてよく使われる。互換CPUでは、8ビット全てが変動したり、変動しないものもある。 LD A,Rについては、チップのバージョンにより前述のLD A,Iと同様の割り込み禁止となる問題が発生する場合がある。 ADD IX,rx 16ビットレジスタの内容をインデックスレジスタに加算する。 ADC HL,rr 16ビットレジスタの内容とCフラグをHLレジスタに加算する。ADD命令は8080から存在した。 SBC HL,rr 16ビットレジスタの内容とCフラグをHLレジスタから減算する。なお16ビットのSUB命令はない。そのため8ビットの算術演算命令のうちSUB命令だけAを表記しない。 INC IX インデックスレジスタの内容をインクリメントする。 DEC IX インデックスレジスタの内容をデクリメントする。 NEG Aレジスタの2の補数をとる。 RLC r RLC (IX+d) レジスタまたはメモリの内容とCフラグを連結して左ローテートする。RLC Aと8080からあるRLCAとではフラグの変化が異なる。 RRC r RRC (IX+d) レジスタまたはメモリの内容とCフラグを連結して右ローテートする。RRC Aと8080からあるRRCAとではフラグの変化が異なる。 RL r RL (IX+d) レジスタまたはメモリの内容を左ローテートする。RL Aと8080からあるRLAとではフラグの変化が異なる。 RR r RR (IX+d) レジスタまたはメモリの内容を右ローテートする。RR Aと8080からあるRRAとではフラグの変化が異なる。 RLD RRD Aレジスタの下位4ビットとHLを連結して4ビット単位でローテートする。BCD用の命令。 SLA r SLA (IX+d) レジスタまたはメモリの内容を左に算術シフトする。 SRA r SRA (IX+d) レジスタまたはメモリの内容を右に算術シフトする。 SRL r SRL (IX+d) レジスタまたはメモリの内容を右に論理シフトする。 BIT b,r BIT b,(IX+d) レジスタまたはメモリの特定のビットをテストする。 SET b,r SET b,(IX+d) レジスタまたはメモリの特定のビットをセットする。 RES b,r RES b,(IX+d) レジスタまたはメモリの特定のビットをリセットする。 JR e 無条件相対ジャンプ。 JR NZ,e JR Z,e JR NC,e JR C,e 条件付相対ジャンプ。 DJNZ e Bレジスタをデクリメントして0でなければ相対ジャンプする(Decrement and Jump if Non Zero)。ループに使う。 JP (IX) インデックスレジスタの内容をPCに転送する。 RETI 割り込みからのリターン。 RETN NMIからのリターン。 PUSH IX インデックスレジスタの内容をスタックにプッシュする。 POP IX スタックトップの内容をインデックスレジスタにポップする。 EX (SP),IX インデックスレジスタとスタックトップの内容を交換する。 IN r,(C) OUT (C),r CレジスタまたはBCレジスタによる間接指定の入出力。rに(HL)は指定できない。 IM x 割り込みモードを設定する。xの値は0〜2。 8086のストリング命令、80186/V30のI/Oストリング命令に相当する。LDIRが最もよく使われる。 LDI/LDD/LDIR/LDDR ブロック転送。HLレジスタの指すメモリの内容をDEレジスタの指すメモリへ転送することを、DE,HLレジスタをインクリメント/デクリメントしながらBCレジスタの回数だけ繰り返す。LDIRとLDDRは転送元と転送先の領域が重なる場合に使い分ける。 CPI/CPD/CPIR/CPDR ブロックサーチ。AレジスタとHLレジスタの指すメモリの内容を比較することを、HLレジスタをインクリメント/デクリメントしながらBCレジスタの回数だけ、あるいは比較結果が一致するまで繰り返す。 INI/IND/INIR/INDR ブロック入力。Cレジスタの指すI/OポートからHLレジスターの指すメモリに入力することを、HLレジスタをインクリメント/デクリメントしながらBレジスタの回数だけ繰り返す。 OUTI/OUTD/OTIR/OTDR ブロック出力。HLレジスタの指すメモリからCレジスタの指すI/Oポートに出力することを、HLレジスタをインクリメント/デクリメントしながらBレジスタの回数だけ繰り返す。 Z80には8080と同じくメモリアドレスとは別に0からFF(255)までのI/Oポートアドレスを持つ。ポートアドレスはメインメモリーのアドレスデコーダーを流用していたのか、アドレスバスの下位8ビットに出力されたが、上位8ビットにも同時に値が出力される仕様になっていた。この値にはI/OアドレスをCレジスタで指定する命令の場合はBレジスタ、それ以外の命令はAレジスタの値が用いられる。 この仕様を利用するとI/Oポート空間を16ビットアドレスで取り扱うことができ、VRAMをここに割り当てることで、メインメモリーがVRAMによって圧迫されることを防ぐことができる。そのような構成をとった日本製パソコンには、シャープのX1、ソニーのSMC-777、BUBCOM80などがある。シャープMZ-1500ではオプションのRAMファイル（MZ-1R18、容量64KB）のアクセスにこの仕様を使用している。 しかし、通常に16ビットアドレスをデコードしてI/Oのハードを構成してしまうと、アドレス指定にBCレジスタを指定しないOUT命令の時にアドレスバス上位8ビットにはAレジスタの内容が出力されてしまうため、アドレス指定にBCレジスタを指定しないOUT命令を用いることが出来なくなってしまう。そこで、SONYのSMC-70では、I/Oアドレスの上位8ビットを下位に、下位8ビットを上位にアドレスデコードした。こうして、多くのI/Oアドレスの割り付けが必要なところでは上位8ビット・下位8ビット両方をデコードしてBCレジスタアドレシングのOUT命令でアクセス、他のI/Oアドレスでは元の下位アドレスのみをデコードしてデバイスに割り付けることにより、通常のOUT命令を使用できるようにした。 なお、ブロック入出力命令の場合はBレジスタをデクリメントするため、16ビットアドレスとしては使用しにくい。逆にこれを利用することにより残り回数を周辺デバイスなどが知ることができる。ただし、出力の場合は処理の順番はアドレス出力よりもBレジスタのデクリメントが先のため、アドレスの上位8ビットを利用する場合は1小さい値が出力されることに留意する必要がある。なお、入力の場合はアドレス出力が先である。 セカンド・ソース契約に基づいてピンコンパチブルな互換製品が他社で生産された。こうした製品には、シャープの「LH0080」モステックの「MK3880」などがある。一方、日本電気(NEC)が独自に互換性のある「μPD780」を出荷したことに対し、ザイログはこれをチップ著作権侵害として訴訟を起こしたが、最終的には両者は和解して製造販売が継続された。 もともとはNMOSプロセスで製造されたが、一部のセカンド・ソースの製造者からは、NECのZ80A互換「μPD70008AC-4」Z80H互換「μPD70008AC-8」、シャープ「LH5080」、東芝「TMPZ84C00」など、独自にCMOSプロセス化し消費電力の低減を図った製品も出荷されている。 また、2002年にシャープがシステム液晶のデモンストレーションとしてガラス基板上にZ80を形成し、MZ-80CのCPUと交換し動作させた。 この他にも東欧諸国で、例えば東ドイツのU880、ルーマニアのMMN80CPUや、ソ連のT34など、ライセンスによらないクローン製品があった。 ナショナル・セミコンダクターからは、CMOS化とともに、Intel 8085のようにアドレスバスの下位とデータバスとをマルチプレックスさせ、Z80とソフトウェアの互換性を持つ「NSC800」が製造された。ただし8085とはピン配置が異なり、置き換えることはできない。 2003年現在でも制御、組込用として、メモリおよび周辺機器の制御用回路を単一のパッケージに集積したLSIが製造されており、ASICのIPコアとしてZ80の互換プロセッサを用意するデバイスメーカーも多い。Z80 IPコアは、本家の「ALUが4ビットのため、多くの演算で複数クロックを必要とする」「レジスタがダイナミック動作をするため、クロックを停止できない」「LDx、LDxRのような繰り返し実行する命令やインデックスレジスタを使う命令等、組み込み用途では不要な複雑な命令がある」といった欠点を解消した物も提供されている。 以下にZ80互換のCPUのうち、ザイログ以外の会社で開発された上位互換性を持つものを示す。高速化を図ったものや、周辺デバイスを集積したものである。 LR35902 Z80のセカンドソースメーカーであるシャープがゲームボーイ用に開発したZ80のカスタムCPUである。1989年4月21日に発売されたゲームボーイに採用されたCPUのクロック数は4.19MHz、ゲームボーイカラーは8.39MHzと高速である。厳密には Intel 8080 と Z80 の中間の様な仕様になっているが、 Custom Z80 とか GB Z80 といわれている。 HD64180 日立製作所（現ルネサス エレクトロニクス）が開発。1984年に登場。高速化されたZ80バイナリーレベル互換命令とMMUを集積し、アドレス空間を512KB〜1MBにしたもの。乗算、TST命令などを追加している。IX/IYレジスタの8ビットアクセスには対応していない。尚、発売当初はZ80上位互換ではなく、CP/M-80互換CPUと説明した。68系周辺デバイスのバスサイクル（同期バス）に合わせたHD64180R1と、Z80用周辺デバイスのバスサイクル（非同期バス）を直接接続できるHD64180Zがある。ザイログからは、HD64180Zのセカンドソース品としてZ80180と派生製品が出荷され、2022年現在現行製品である。 μPD9002 NEC Vシリーズのひとつで、PC-88VAが使用。V30が8086の上位互換であるのと同時に8080互換モードを持つように、この石は8086の上位互換であるのと同時にZ80互換モードを持つ。型番が示すとおりVシリーズの通常のラインナップ（μPD70〜）ではなく、カスタムモデルである。チップそのものはV30をベースに周辺回路を統合したV50を基本としているため、Intel 8086とのソケット互換性はないが、PC-88VA2/3においては、V30モード時に8087-1コプロセッサが稼動する数値演算プロセッサソケットが用意されていた。 R800 アスキーが開発した、内部16ビットの高速版Z80互換CPU。1990年4月に発表。乗算命令を拡張しているが、使用するレジスターの組み合わせで計算結果が不正になる不具合があるため、実質使用できるレジスターが制限されていた。また隠し命令のうち、IX/IYレジスタの8ビットアクセスを主とするいくつかの命令が正式命令としてサポートされる。Rレジスタが8ビット幅になっている。MSXturboRに搭載された。CPU機能を停止しメモリコントローラーとして動作するモードも持ち、同機で使用された。MMUやDMAを集積しているが、仕様がMSXのものとは異なるため使用されなかった。 TMPZ84C00 TMPZ84C011 東芝 CMOS版Z80CPU、Z80CTC、Z80PIO非互換パラレルI/Oを集積したチップ。 TMPZ84C013 東芝 CMOS版Z80CPU、Z80CTC、Z80SIO等を集積したチップ。 TMPZ84C015 東芝 CMOS版Z80CPU、Z80CTC、Z80PIO、Z80SIO、CGC、ウォッチドッグタイマー等）を集積したチップ。また、本家にあたるザイログからも同等のZ84C15が販売されている。ただし、ピン機能の一部が異なる。東芝TMPZ84C015は製造中止。 TMPZ84C112 東芝 CMOS版Z80CPU、Z80PIO非互換パラレルI/O、タイマー、256バイトRAM等を集積したチップ。 TMPZ84C710 東芝 CMOS版Z80CPU、ISDN基本インターフェイス、Z80SIO等を集積したチップ。 TMPZ84C711 東芝 CMOS版Z80CPU、ISDN基本インターフェイス、Z80SIO等を集積したチップ。Z84C710上位互換。 TMPZ84C810 東芝 CMOS版Z80CPU、Z80CTC、Z80SIO、パラレルI/O、DMA、MMU、DRAMリフレッシュコントローラー、ウォッチドッグタイマー等を集積したチップ。 KC80, KC82 川崎マイクロエレクトロニクスのZ80互換の高速版CPU。KC80の改良版KC82をコアにMMUなどを追加した組み込み用ICとしてKL5C8012、KL5C8016、KL5C8020が販売されていた。なお、KC80 CPU単体の KL5C8400 も販売されていた。また、16ビット版で上位互換のKC160も販売されていた。2009年7月1日に一連の汎用マイコンの生産終了が発表された。 MSX-ENGINE MSX 向けのカスタムCPU。MSXで使用する周辺LSIを取り込んで製品化されたもの。 Rabbit2000 Rabbit 2000は一部の命令の追加と削除をして高速化したZ80である。米国ラビット・セミコンダクター（英語版）が開発・販売している。Rabbit2000、Rabbit3000、Rabbit4000、Rabbit5000のバージョンがあり、上位モデルのRabbit4000/5000では32bitとして動作する32bitアーキテクチャーとなっている。 Rabbit2000/3000/4000/5000はHD64180/Z180のアーキテクチャーを基にしており完全なバイナリー互換ではない（en:Zilog Z80#DerivativesのPartly compatibleを参照）。eZ80と同じく現行商品である。 ザイログ自身の開発による上位互換CPUを以下に示す。 Z180 日立が開発したHD64180ZについてザイログがセカンドソーサとなったZ64180の改良品。HD64180Z/Z64180とは仕様が微妙に異なる。Z80180やZ8S180がある。 Z800 Z80を16ビットCPUとして大幅に拡張するとともに周辺チップを集積したもの。命令体系拡張として、乗除算命令の追加、16ビットオペランド命令の増強、PC相対アドレッシングモードやSP相対アドレッシングモードの拡充などを行い、また従来隠し命令となっていたIX、IYレジスタを分割操作する命令などが公式にサポートされる。システムとしてはユーザーモード・スーパーパイザーモードの区別を持ち、内蔵MMUによるメモリ保護機能が提供される。256byteのRAMを内蔵し、ローカルメモリとして使用する他に、キャッシュとして使用することも可能である。外部バスは従来のZ80と互換性の高い8ビット幅のZ80-BUSと、16ビット幅のZ-BUSを選択することが可能で、またMMUの機能により512KBアドレス空間と16MBアドレス空間が選べる。このバスの種別とサポートするアドレス空間の種別により4つの製品 (Z8108,Z8116,Z8208,Z8216) が計画された。のちにC-MOS化されたZ280に引き継がれた。 Z280 あまり採用される事無く、消え去った。ほとんど生産されなかったZ800をCMOS化したもの。Z800のZ-BUSインターフェース・16MBアドレス空間サポート版であるZ8216の仕様をおおよそ引き継ぎ、起動時にコンフィギュレーションで他のバージョンの仕様もサポートする。 Z380 1993年2月5日に発表されたZ80互換の32ビットCPU。レジスタは従来の汎用レジスターに加えて16ビット追加部分を含めたグループが4バンク存在する。4GBのアドレス空間をリニアにアクセス可能。DRAMリフレッシュコントローラやINT0～3の割込みが追加されている。Z8000との互換性はない。 eZ80 3ステージ命令パイプラインを導入し、同一クロックのZ80に対して約3倍のパフォーマンスを持つ。最大クロックスピードは50MHz、アドレスレジスタを24ビットに拡張しており、16MByteアドレッシング可能。Rabbit 2000/3000/4000/5000と同じく現行商品である。 Z80は、8080とバイナリレベルで互換性があり、そのDOSであるCP/M、及びCP/M上で動作する各種のソフトウェアが利用可能である。以下はCP/M上の動作を前提に供給されたものの一部である。 BASIC BASIC80 アセンブラ MACRO80 MAC/RMAC C言語 BDS-C LSI C-80 Hitech-C