1976年6月に製造されたZ80 | |
| 一般情報 | |
|---|---|
| 発売開始 | 1976年7月 |
| 製造中止 | 2024年6月 |
| 販売元 | ジログ |
| デザイン: | フェデリコ・ファギン、島正敏 |
| 一般的な製造業者 | |
| パフォーマンス | |
| 最大CPUクロックレート | 2.5、4、6、8、10 MHz ~ 20 MHz [ b ] |
| データ幅 | 8ビット[ 1 ] |
| アドレス幅 | 16ビット[ 1 ] |
| 物理的仕様 | |
| トランジスタ |
|
| パッケージ | |
| 建築と分類 | |
| 応用 | 組み込み型、デスクトップ型、携帯型 |
| テクノロジーノード | 4μmプロセス |
| 命令 セット | Z80 [ c ] |
| 歴史 | |
| 前任者 | Intel 8080 |
| 後継者 | |
Zilog Z80は、 Zilog社が設計し、1976年に初めてリリースされた8ビットマイクロプロセッサです。初期のパーソナルコンピューティングの発展において重要な役割を果たしました。Intel 8080とのソフトウェア互換性を念頭に設計され、優れた統合性とパフォーマンスの向上により、魅力的な代替品となりました。Z80は、8080の7つのレジスタとフラグレジスタに加え、代替レジスタセット、2つの16ビットインデックスレジスタ、そしてビット操作やブロックコピー/検索などの追加命令を導入しました。
元々は8080のような組み込みシステムでの使用を想定していたZ80は、互換性、手頃な価格、優れたパフォーマンスの組み合わせにより、 1970年代後半から1980年代前半にかけてビデオゲームシステムやホームコンピュータで広く採用され、パーソナルコンピューティング革命を後押ししました。Z80は、 Osborne 1、Radio Shack TRS-80、ColecoVision、ZX Spectrum、セガのマスターシステム、パックマンのアーケード筐体などの象徴的な製品で使用されました。1990年代初頭には、ゲームギアやTI-81、および後継のグラフ電卓などの携帯機器で使用されました。 [ 2 ] [ 3 ]
Z80は、Intel 8080の開発の立役者であるフェデリコ・ファギンの発案によるものでした。1974年にインテルを退社した後、ラルフ・ウンガーマンと共にZilogを共同設立しました。Z80は1976年7月にデビューし、その成功によりZilogは自社のチップ工場を設立することができました。[ 4 ]初期生産では、ZilogはZ80を米国に拠点を置くSynertekとMostek、そしてヨーロッパの二次供給メーカーであるSGSにライセンス供与しました。この設計は、 NEC、東芝、シャープ、日立などの大手企業が独自のバージョンや互換性のあるクローンを生産したことで、さまざまな日本、東欧、ソ連のメーカーによってコピーされ、世界市場で受け入れられるようになりました。
Z80は、より高性能なプロセッサが登場した後も長年にわたり組み込みシステムで使用され続け、最初のリリースから48年後の2024年6月まで生産が続けられました。Zilogはまた、Z180 、 Z280 、 Z380などの後継機種でZ80の基本設計を改良し続け、最新版の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 と呼ばれていた、より複雑なマイクロプロセッサを検討し始めました。主な特徴は、 8080 などの設計で使用されている一般的な −5、+5、12 V ではなく、+ 5 V バスを使用することでした[ 8 ]。新しい設計は、8080 と互換性を持ちながら、インデックス レジスタや改良された割り込みなど、Motorola 6800 のいくつかの機能を追加することを意図していました。[ 9 ]
設立準備中だった当時、業界ニュースレターのElectronic Newsが彼らのことを知り、新設された会社に関する記事を掲載した。これがエクソンのハイテク投資部門であるエクソン・エンタープライズの注目を集めた。当時、不況の真っ只中で、ベンチャーキャピタルはほとんどなく、1975年全体で業界全体で1,000万ドル(2025年換算で6,000 万ドル)しか使われていなかった。エクソンの誰かがまだ名前のない会社に連絡を取り[ 8 ] 、最終的に1975年6月に50万ドル( 2025年換算で300万ドル)の初期資金提供につながる会合をアレンジした[ 10 ]。
資金調達が議論され、設計が構築される中、島正敏が1975年2月に加わった。[ 9 ]島はすぐに高レベル設計の作成に取り掛かり、独自のコンセプトをいくつか追加した。特に、NECミニコンピュータでの経験を活かし、割り込みに迅速に対応できるように2組のプロセッサレジスタのコンセプトを追加した。[ 7 ] [ d ]アンガーマンは、設計を補完する一連の関連コントローラと周辺チップの開発を開始した。[ 11 ]
この期間を通じて、島氏は論理概念をリアルタイムで物理設計に変換できるという伝説的な評判を築き上げました。提案された機能について議論している最中、彼はしばしば割り込んで、それがチップ上でどれだけのスペースを必要とするかを述べ、大きすぎる場合は追加を拒否しました。[ 12 ]設計の最初の段階は1975年4月までに完了しました。島氏は5月初めまでに論理レイアウトを完成させました。論理設計の第2バージョンは8月7日に発行され、バスの詳細は9月16日までに発行されました。テープアウトは11月に完了し、テープを生産マスクに変換するのにさらに2か月かかりました。[ 13 ]
ファギンはすでに生産パートナーを探し始めていた。この時までに、SynertekとMostekはどちらも、その設計を生産するために使用できる枯渇モード生産ラインを設置していた。ファギンは以前にSynertekと話したことがあったので、最初にSynertekにアプローチした。しかし、Synertekの社長は、同社が設計を直接販売できるように、セカンドソースライセンスを与えるよう要求した。ファギンは、これでは自社でラインを設置しても競争できないと考え、合意は破談となった。次にファギンはMostekに目を向け、MostekはZilogがラインを設置する間独占契約に同意し、最終的にセカンドソース契約を獲得した。[ 14 ]
新会社の名前を複数検討したものの、どれも覚えにくく、一日経っても思い出せなかったため、ファギンとウンガーマンは「統合ロジック」に基づいたアイデアを出し合っていたところ、ウンガーマンが「Zilogはどうだろう?」と言った。ファギンはすぐに同意し、「統合ロジックの究極の形と言える」と述べた。翌日二人が会ったとき、二人ともすぐにその名前を思い出し、会社の名前が決まった。[ 15 ]
最初のサンプルは1976年3月9日にMostekから返送された。[ 11 ]月末までに、アセンブラベースの開発システムも完成した。この時点で、Z80のサポートICと周辺ICの一部が開発中で、そのうちのいくつかは翌年に発売された。それらの中には、Z80 CTC(カウンタ/タイマ)、Z80 DMA [ 16 ](ダイレクトメモリアクセス)、Z80 DART(デュアル非同期レシーバー/トランスミッタ)、Z80 SIO(同期通信コントローラ)、Z80 PIO(パラレル入出力)などがあった。
Z80は1976年7月に正式に発売された。[ 17 ]当時、半導体業界では、外国メーカーによるチップ設計の無許可複製について懸念があった。リバースエンジニアリングを阻止するために、Zilogチームは、見た目とは異なる動作をするように微妙に変更されたトランジスタである「トラップ」を6つ組み込んだ。島氏によると、NECのエンジニアが後に彼に、これらのトラップによってリバースエンジニアリングの作業が6か月遅れたと語ったという。[ 18 ] NECは後にZilogとの特許侵害紛争を解決し、Z80やその他のチップの正規版を製造するライセンスを取得した。[ 19 ]
Z80の発売が成功した後、ファギンとウンガーマンは半導体製造工場を設立するための資金援助を求めてエクソンにアプローチした。エクソンはこれに同意し、ジログは独自の生産ラインを構築し、Z80の販売市場全体の推定60~70パーセントを獲得することができた。[ 20 ]一方、モステックはチップのライセンス版であるMK3880を製造する許可を得て、インテルにはなかった顧客向けのセカンドソースを提供した。当時、セカンドソース契約は、特に事業の失敗や供給途絶のリスクが高いジログのようなスタートアップ企業にとって不可欠と考えられていた。[ e ] [ 9 ]
ファギンは、命令セットを8080 [ 21 ] [ 22 ]とバイナリ互換性を持つように設計したため、CP/Mオペレーティングシステムや Intel の8080 用PL/Mコンパイラ (および生成されたコード) など、ほとんどの 8080 コードが新しい Z80 CPU 上で変更なしで実行されました。島正敏は、少数のエンジニアとレイアウト担当者の協力を得て、Z80 CPU のマイクロアーキテクチャの大部分とゲートおよびトランジスタレベルを設計しました。[ 23 ] [ 24 ] CEO のフェデリコ・ファギンは、2 人の専任レイアウト担当者とともに、チップのレイアウト作業に深く関わっていました。ファギンによると、彼は金融投資家から与えられた厳しいスケジュールを満たすために、週 80 時間働いていました。[ 4 ]
Z80は8080に比べて複数の改良点を提供した。[ 22 ]
Z80はプロセッサ市場で8080とその後継機である8085に取って代わり[ 29 ]、最も人気があり広く使われている8ビットCPUの1つとなった[ 30 ] [ 31 ] 。British Telecomなどの一部の組織は、8085に慣れ親しんでいたことと、オンチップのシリアルインターフェースと割り込みアーキテクチャのおかげで、組み込みアプリケーションに8085を使い続けた。同様に、Zenith Data Systemsは、先駆的なZ80ベースのHeathkit H89およびZenith Z- 89製品での経験があったにもかかわらず、最初のMS-DOSコンピュータであるZenith Z-100で8085と16ビットのIntel 8088を組み合わせた。しかし、Z80を他のCPUと統合したコンピュータも製造された。例えば、Radio Shack TRS-80 Model 16はMotorola 68000を、DEC Rainbowは8088を、Commodore 128はMOS Technology 8502を搭載していた。
その後、Zilogは1980年代初頭に成長していたノートパソコン市場に適した低消費電力のZ80を生産した。Intelは、 1983年4月に京セラが設計したノートパソコンなど、バッテリー駆動のポータブルコンピュータに使用されるCMOS 8085(80C85)を生産した。このノートパソコンは、Tandy(TRS-80 Model 100として)、Olivetti、NECからも販売された。しかし、その後数年間は、Zilogと日本のメーカーの両方から提供されたCMOS版Z80がこの市場も席巻し、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からアクセスする必要がなくなる。)[ 32 ]
オリジナルのNMOS設計では、規定された上限クロック周波数制限は、導入時の 2.5 MHzから、よく知られている 4 MHz (Z80A) を経て、6 MHz (Z80B) および 8 MHz (Z80H)まで段階的に増加しました。[ 33 ] [ 34 ] 1980 年代後半から、10 MHz の部品として NMOS バージョンが製造されました。CMOSバージョンは、現在販売されているバージョンでは 4 MHz から 20 MHz までの上限周波数制限で開発されました。CMOS バージョンでは、下限周波数制限がなく、内部状態を保持した低電力スタンバイが可能でした。[ i ]完全互換の派生製品HD64180 / Z180 [ 35 ] [ 36 ]およびeZ80は、現在それぞれ最大 33 MHz および 50 MHzまで規定されています。

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 ]プロセッサは(Z80命令の実行時間としては最短の4つのtステートで)一方のバンクから他方のバンクへ素早く切り替えることができます。[ 39 ]これは、単一レベルの高優先度割り込みへの応答を高速化するのに役立ちます。デュアルレジスタセットは、割り込み処理のパフォーマンスを向上させるため、組み込み用途で役立ちますが、浮動小数点演算やホームコンピュータゲームなどの複雑なコードのための汎用レジスタの追加セットとして、パーソナルコンピュータ用途でも広く使用されています。
複製レジスタファイルは、しばしば「代替レジスタセット」と呼ばれます(アセンブラソースコードやZilogドキュメントではアポストロフィ文字が使用されているため、「プライム付き」レジスタファイルと呼ばれることもあります)。これは、一度にアドレス指定できるセットは1つだけであることを強調しています。ただし、フラグレジスタFを持つ8ビットアキュムレータAは、「汎用」レジスタペアHL、DE、BCから分離されています。これは、アクセス可能性を交換するために使用される2つの別々の命令によって実現されます。1つEX AF,AF'はレジスタペアAFのみをAF'と交換し、もうEXX1つは汎用レジスタペア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で使用)、および加算/減算フラグ(通常はNと呼ばれる)(これもBCDで使用)です。BC16ビットのデータ/アドレスレジスタ、または8ビットレジスタ2個DE16ビットのデータ/アドレスレジスタ、または8ビットレジスタ2個HL16ビットアキュムレータ/アドレスレジスタ、または8ビットレジスタ2個SP:スタックポインタ、16ビットPC: プログラムカウンタ、16ビットZ80で新たに導入されたレジスタは以下のとおりです。
IX: 8ビット即値オフセット用の16ビットインデックスまたはベースレジスタIY: 8ビット即値オフセット用の16ビットインデックスまたはベースレジスタI割り込みベクタベースレジスタ、8ビットRDRAMリフレッシュカウンタ、8ビット(最上位ビットはカウント対象外)AF': 代替(またはシャドウ)アキュムレータとフラグ(EX AF、AF' でオン/オフを切り替えます)BC'、DE'およびHL':代替(またはシャドウ)レジスタ(EXXで切り替え可能)IFF1とIFF2、2ビットの割り込みモードIM。リフレッシュレジスタは、RCPUがオペコード(または内部的に1バイト命令のように実行されるオペコードプレフィックス)をフェッチするたびにインクリメントされ、プログラムの実行とは単純な関係がありません。これは、ゲームで擬似乱数を生成するため、またソフトウェア保護スキームで使用されることがあります。[ 41 ]また、一部の設計では「ハードウェア」カウンタとして使用されています。その例として、ZX81があり、 INTをA6に接続してラップアラウンド時に割り込みを発生させることで、TV画面上の文字位置を追跡できます。
割り込みベクタレジスタ、I、 は、Z80 固有のモード 2 割り込み (命令によって選択) に使用されます。割り込み応答サイクル中に CPU に送信されるインデックスを介して選択されるIM 2128 エントリのサービスルーチンアドレス テーブルの基本アドレスの上位バイトを提供します。このインデックスは、サービス ルーチンを指すテーブル化された間接アドレスへのポインタの下位バイト部分です。[ 26 ]ポインタは、特定の周辺チップ、周辺機能、またはイベントを識別します。チップは通常、優先順位解決のためにいわゆるデイジー チェーンで接続されています。リフレッシュ レジスタと同様に、このレジスタも創造的に使用されることがあります。割り込みモード 0 および 1 (または割り込みを使用しないシステム) では、単に別の 8 ビット データ レジスタとして使用できます。
これらの命令はLD A,R、LD A,I他のすべてのLD(ロード)命令とは異なり、Z80 フラグ レジスタに影響を与えます。符号フラグ(ビット 7)とゼロフラグ(ビット 6)は、リフレッシュまたは割り込みソース レジスタからロードされたデータに応じて設定されます。どちらの命令でも、パリティ/オーバーフロー フラグ(ビット 2)は、IFF2 フリップフロップの現在の状態に応じて設定されます。[ 42 ]
最初の 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 つの構文を図解します。[ 44 ] Z80 構文では、式を括弧で囲んで、その値がメモリ アドレスとして使用されることを示します (後述) が、8086 構文では、この目的のために通常の括弧の代わりに角括弧を使用します。Z80 と 8086 の両方で、+ 記号を使用して、定数がベース レジスタに追加されてアドレスが形成されることを示します。8086 は Z80 の完全なスーパーセットではないことに注意してください。BX は、ポインタとして使用できる唯一の 8086 レジスタ ペアです。
Intelがアセンブリニーモニックの著作権を主張したため[ 45 ] 、 Z80用に新しいアセンブリ構文を開発する必要があった。今回はより体系的なアプローチが採用された。
JP (HL)、、JP (IX)およびJP (IY)は例外です。これらの命令は、メモリを経由せずに、それぞれのレジスタから新しい PC アドレスを直接ロードします。これらの原則により、すべての新しい 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 はそれぞれ IX+d または IY+d (場合によっては変位 d なし) を HL の代わりに選択します。この方式により、Z80 は命令とレジスタの多数の順列を実現できます。Zilog はこれらを 158 種類の「命令タイプ」に分類しており、そのうち 78 種類は Intel 8080 と同じです[ 49 ] (Z80 上で 8080 のすべてのプログラムを実行できます)。 Zilogのドキュメント[ 50 ]では、命令をさらに以下のカテゴリに分類しています(ほとんどは8080由来の命令、その他はブロック命令やビット命令など全く新しい命令、その他は16ビットロード、I/O、回転/シフト、相対ジャンプなど、より汎用的なアドレッシングモードを備えた8080命令)。
オリジナルの Z80 には明示的な乗算命令はありませんが、[ 51 ] レジスタ A と HL は ADD A,A および ADD HL,HL 命令で 2 のべき乗で乗算できます (同様に IX と IY も)。シフト命令でも 2 のべき乗で乗算または除算できます。
加算、シフト、回転の演算のサイズやバリエーションが異なると、フラグへの影響も多少異なります。これは、8080のフラグ変更特性のほとんどがコピーされているためです。ただし、 8080のパリティフラグビットP(ビット 2)は、Z80ではP/V(パリティ/オーバーフロー)と呼ばれています。これは、8080にはない2の補数オーバーフローインジケータという追加の機能も果たすためです。Z80の算術命令では、パリティではなくオーバーフローを示すように設定されますが、ビット単位命令では依然としてパリティフラグとして使用されます。 (これにより、Z80 は 8080 用に書かれたコードと微妙な非互換性が生じます。Z80 は、8080 がパリティを示す箇所で符号付きオーバーフローを示すことがあり、実際の 8080 ソフトウェアのロジックが Z80 で失敗する可能性があります。[ m ] ) この新しいオーバーフロー フラグは、Z80 固有のすべての新しい 16 ビット操作 ( ADC、SBC) と 8 ビット算術操作に使用されますが、8080 から継承された 16 ビット操作 ( ADD、INC、DEC) は影響しません。また、フラグ レジスタのビット1 (8080 の予備ビット) は、最後に実行された算術命令が減算か加算かを示す フラグ N として使用されます。 Z80版の命令DAA(BCD演算用の10進数調整アキュムレータ)はN フラグをチェックし、それに応じて動作するため、(仮の)減算の後にDAA別の命令を実行すると、古い8080とZ80では異なる結果になります。ただし、この命令は8080ではおそらく誤ったコードとなるでしょう。なぜなら、この命令は8080DAAプロセッサでは加算専用に定義されていたからです。
Z80にはLD、8080とは異なり、メモリからDE、BC、SPレジスタペアをロードしたり、これら3つのレジスタペアからメモリをロードしたりできる6つの新しい命令があります。[ 44 ] 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が使用される点を除いて、同様に動作します。[ 52 ] [ 53 ] Z80は、レジスタCを使用してポートを指定することで、任意のレジスタをI/Oポートに入力および出力できます。 (8080は命令で指定された直接ポートアドレスを使用して、アキュムレータAを介してのみI/Oを実行します。可変の8080ポートアドレスを使用するには、自己書き換えコード技術が必要です。)LDILDD INIRINDROTIROTDRINIINDOUTIOUTD
最後のブロック命令群は、CP(HL) のバイトとアキュムレータ A との比較演算を実行します。レジスタペア DE は使用されません。繰り返しバージョンCPIRと は、 BC がゼロになるか一致が見つかった場合にのみ終了します。HL は、一致するバイトの次のバイト ( ) または前のバイト ( )CPDRを指したままになります。一致が見つからない場合は、Zフラグがリセットされます。繰り返しのないバージョンとがあります。CPIRCPDR CPICPD
8080とは異なり、Z80は符号付き8ビット変位を持つ短い命令を使用して相対アドレス(JRではなくJP)にジャンプできます。この命令には無条件と条件付きの形式があります。テストできるのはゼロ条件とキャリー条件のみです。(8080のジャンプとコールはすべて、条件付きかそうでないかにかかわらず、3バイト命令です。)ジャンプが実行された場合、2バイトJR命令は8080スタイルの3バイトJP命令よりも遅くなります。ジャンプが実行されない場合は、JR命令の方が速くなります。
プログラムループ専用の2バイト命令もZ80に新しく追加されました。DJNZ( decrement jump if n non- zero )は、符号付き8ビット変位をオペランドとして受け取ります。Bレジスタがデクリメントされ、結果がゼロでない場合は、プログラムの実行がPCに対してジャンプします。フラグは変更されません。8080で同等のループを実行するには、個別の条件付きジャンプ命令(2バイト絶対アドレスへ)(合計4バイト)が必要で、フラグレジスタが変更されます。 DECDEC
インデックスレジスタ(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)、JP (IX)と という並列命令があります。これは、 ForthJP (IY)のようなスタック指向言語でよく見られます。Forth では、すべての Forth ワード (言語を構成するアトミック サブルーチン) の最後に、スレッド インタプリタ ルーチンに無条件でジャンプする必要があります。通常、このジャンプ命令はアプリケーションで数百回出現し、 の代わりに を使用することで、出現ごとに 1 バイトと 2 つの T ステートを節約できます。当然、これによりインデックス レジスタは他の用途には使用できなくなります。そうでなければ、常に再ロードする必要があるため、効率が損なわれてしまいます。JP (IX)JP THREAD
10年新しいマイクロコード設計のZ180は、当初はより広い「チップ面積」を確保できたため、より効率的な実装が可能でした(より広いALUを使用するなど)。Z800 、Z280、Z380についても同様のことが言えます。しかし、これらの命令が技術的に可能な限りサイクル効率の高いものになったのは、2001年に完全パイプライン化されたeZ80が発売されてからのことでした。つまり、Z80のエンコーディングと、クロックサイクルごとに8ビットの読み書きを実行できる機能を組み合わせた場合です。
インデックスレジスタ IX と IY は、メモリ、スタックフレーム、データ構造の操作能力を強化する柔軟な 16 ビットポインタとして意図されていました。公式には、これらは 16 ビットのみとして扱われていました。実際には、HL レジスタと同様に、16 ビットとして、またはHighレジスタとLowレジスタとして個別にアクセスできる 8 ビットレジスタのペアとして実装されていました[ 54 ] 。バイナリ オペコード (マシン語) は同じでしたが、新しいオペコード接頭辞が前に付いていました[ 55 ] 。Zilog は、意図された機能のオペコードと関連するニーモニックを公開しましたが、H レジスタとL レジスタの操作を可能にするすべてのオペコードが、IX レジスタと IY レジスタの 8 ビット部分にも同様に有効であるという事実は文書化されていませんでした。たとえば、オペコード 26h に続いて即値バイト値を指定すると、その値が H レジスタにロードされます。この 2 バイト命令の前に IX レジスタのオペコード接頭辞 DD を付けると、代わりに IX レジスタの最上位 8 ビットに同じ値がロードされます。 これには、同じ命令で HL レジスタと IX レジスタまたは IY レジスタの両方を使用する命令と同様の例外があります。[ 55 ]この場合、DD 接頭辞は命令の (IX+d) 部分にのみ適用されます。 XY レジスタの半分には、8 ビットの算術、論理、比較命令のオペランドも保持でき、通常の 8 ビット レジスタは他の用途に使用できます。 インデックス レジスタの上位半分をインクリメントおよびデクリメントする非文書化された機能により、文書化されたまたはに頼ることなく、通常のインデックス付き命令の範囲を簡単に拡張できました。(LD H,n)LD H,(IX+d)ADD/SBC XY,DEADD/SBC XY,BC
他にも文書化されていない命令がいくつかあります。[ 56 ]文書化されていない、または不正なオペコードはZ80 では検出されず、さまざまな影響があり、その中には有用なものもあります。ただし、これらは命令セットの正式な定義の一部ではないため、Z80 のさまざまな実装がすべての文書化されていないオペコードに対して同じように動作することが保証されているわけではありません (または特に可能性が高いわけではありません)。
このOTDR命令は Z80 のドキュメントに準拠していません。OTDRおよびOTIR命令はどちらもキャリー (C) フラグを変更しないはずです。 命令はOTIR正しく動作しますが、 命令の実行中にOTDR、キャリーフラグはアキュムレータ (A) と 命令の最後の出力との間の誤った比較の結果を取得しますOTDR。[ 57 ]
以下の Z80 アセンブリ ソース コードは、指定されたサイズのデータ バイト ブロックをある場所から別の場所にコピーするサブルーチンですmemcpy。データ ブロックは 1 バイトずつコピーされ、データ移動とループのロジックには 16 ビット演算が使用されます。このコードではさまざまな命令が使用されていますが、実際には Z80 にはこのサブルーチン全体を置き換えることができる単一の命令 ( ) があるため、このようにコーディングされることはありませんLDIR。サンプル コードでは 46 T ステートごとに 1 バイトが移動します。LDIR命令に置き換えると、各バイトの移動はわずか 21 T ステートで完了します。なお、アセンブルされたコードは Intel 8080 および 8085 CPU とバイナリ互換性があります。
各命令は、通常マシンサイクル(Mサイクル)と呼ばれるステップで実行され、各ステップは3~6クロック周期(Tステート)を要します。[ 58 ]各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ナノ秒程度)が最速のアクセス時間を決定する要因であったため、このような設計はZ80よりもかなり長いクロックサイクル(つまり、内部クロック速度が低い)に縛られていました。
メモリは、当時のマイクロプロセッサで使用されるステートマシンのサブサイクル(クロックサイクル)に比べて一般的に低速でした。そのため、組み込み設計で安全に使用できる最短のマシンサイクルは、CPUの最大周波数ではなく、メモリへのアクセス時間によって制限されることが多かったのです(特にホームコンピュータの時代には顕著でした)。しかし、この関係はここ数十年の間に徐々に変化しており、特にSRAMに関しては顕著です。そのため、eZ80のようなキャッシュレスのシングルサイクル設計が近年、より重要な意味を持つようになりました。
CPUがフェッチした命令をデコードして実行している間、リフレッシュレジスタRの内容はリフレッシュ制御信号とともにアドレスバスの下半分に送信されます。リフレッシュ中は、割り込みレジスタIの内容がアドレスバスの上半分に送信されます。[ 65 ]
ZilogはZ80向けに多数の周辺機器を導入し、それらはすべてZ80の割り込み処理システムとI/Oアドレス空間をサポートしていました。これらには、カウンタ/タイマチャネル(CTC)[ 66 ]、SIO(シリアル入出力)、DMA(ダイレクトメモリアクセス)、PIO(パラレル入出力)、DART(デュアル非同期レシーバー/トランスミッタ)が含まれます。製品ラインが発展するにつれて、これらのチップの低消費電力、高速、CMOSバージョンが導入されました。
8080、8085、8086プロセッサと同様に、Motorola 6800やMOS Technology 6502などのプロセッサとは異なり、Z80と8080はI/O命令用に独立した制御線とアドレス空間を備えています。Osborne 1などのZ80ベースのコンピュータの中には「Motorolaスタイル」のメモリマップド入出力デバイスを使用するものもありましたが、通常はI/O空間はZ80と互換性のあるZilog周辺チップのいずれかをアドレス指定するために使用されました。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 ] シャープは、それぞれ 4 MHz と 6 MHzの周波数で動作する LH0080A と LH0080B を開発しました。 [ 69 ]シャープはまた、 Z80 DMA と互換性のあるLH0083 [ 70 ]も開発しました。
東芝はCMOS版のTMPZ84C00を製造したが、これはZilogが自社のCMOS Z84C00に使用した設計と同じであると考えられている(ただし検証はされていない)。また、GoldStar(現在のLG )製のZ8400、Z80チップや、 ROHM Electronics製のNMOSおよびCMOSのBU18400シリーズのZ80クローン(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用に書かれたソフトウェアへのアクセスを可能にするプラグインオプションとして使用するホームコンピュータが複数登場しました。特筆すべきは、 Z80をメインプロセッサとして搭載したTRS-80シリーズで、初代モデル(後に「モデルI」と改名)、モデルII、モデルIII、モデル4、そしてZ80をメインプロセッサまたはセカンダリプロセッサとして使用した他のTRS-80モデル(すべてではない)が含まれます。その他の注目すべきマシンとしては、DEC Rainbow 100とSeequa Chameleonがあり、どちらもIntel 8088とZ80 CPUの両方を搭載し、Z80上で動作する8ビットCP/M-80アプリケーション、または8088上で動作するPC DOSアプリケーションと完全には互換性のないカスタムMS-DOSをサポートしていました。
1981年、マルチテック社(後にエイサー社となる)は、Z80マイクロプロセッサ用のシンプルで安価なトレーニングシステムであるマイクロプロフェッサーIを発表した。現在も、イギリスのサウサンプトンにあるフライト・エレクトロニクス・インターナショナル社によって製造・販売されている。
1984年、東芝は日本とオーストラリアで東芝MSX HX-10を発売した。
1985年、シャープはHotbitを、グラディエンテはExpertを発表し、これらは1980年代後半までブラジルにおける8ビット家庭用コンピュータの主流となった。
Z80 は、より軽量でバッテリー駆動のデバイスで広く使用されるようになり、プロセッサの CMOS バージョンが利用可能になったことで普及しました。また、シャープの LH5801 [ 92 ]など、他の CMOS ベースのプロセッサの開発にも影響を与えました。BASICでプログラム可能なポケット コンピュータであるSharp PC-1500 は1981 年に発売され、その後、改良版のSharp PC-1600が1986 年に、Sharp PC-E220 が1991 年に発売されました。パーソナル オーガナイザーのSharp Wizardシリーズの後期モデルも Z80 ベースでした。デスクトップ マシンと同様に CP/M オペレーティングシステムを実行できるラップトップは、1984 年にEpson PX-8 Geneva、1985 年にEpson PX-4およびBondwell-2で続きました。その後数年間、ノートパソコン市場はより強力なIntel 8086プロセッサと MS-DOS オペレーティングシステムへと移行したが、軽量でバッテリー寿命の長い Z80 ベースのシステムも引き続き登場しており、1988 年のCambridge Z88や 1992 年のAmstrad NC100などが挙げられる。Z80から派生したZ8S180は、初期のペン操作式パーソナルデジタルアシスタントであるAmstrad PenPad PDA600 (1993 年)にも採用された。香港に拠点を置くVTech は、Z80 をベースにした「Laser」と呼ばれる小型ノートパソコンのシリーズを製造した。[ 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はセガのマスターシステムとゲームギアのコンソールで使用されていました。セガジェネシスには、独自の8KB のRAMを備えたZ80が搭載されており、MC68000メインCPUと並列に動作し、システムのサウンドチップとI/O(コントローラ)ポートに直接アクセスでき、68000のメインメモリバスへのデータパスが切り替えられています(64KBの メインRAM、ソフトウェアカートリッジ、およびビデオチップ全体へのアクセスを提供)。マスターシステムゲームとの下位互換性を提供するだけでなく、Z80はジェネシスソフトウェアのオーディオの制御と再生にもよく使用されます。[ n ]
Z80 CPUは、テキサス・インスツルメンツの人気グラフ電卓シリーズ「TI-8x」にも採用されており、1990年に発売されたTI-81(クロック周波数2MHzのZ80を搭載)から始まりました。TI -82やTI-85といった上位機種では、Z80 CPUのクロック周波数が6MHz以上となっています。(TI-8xという名称の機種の中には、M68000などの他のCPUを使用しているものもありますが、大多数はZ80ベースです。これらの機種では、Z80マシン語コードで記述されたアセンブルまたはコンパイル済みのユーザープログラムを実行することが可能です。)
TI-83およびTI-84 Plusモデルのグラフ電卓はZ80チップを使用し、TI-84 Plus CEシリーズはeZ80チップを使用しています。これら3つの電卓シリーズはすべて、2025年現在もテキサス・インスツルメンツによって販売されています。
1980年代後半、ソ連の固定電話機「AON」シリーズにはZ80が搭載されていました。これらの電話機は、発信者番号表示、発信者に応じた着信音、短縮ダイヤルなど、固定電話機の機能セットを拡張しました。[ 104 ]しかし、1990年代後半には、これらの電話機の製造業者は、消費電力を削減し、小型壁面電源アダプターの過熱を防ぐために、8051互換のMCUに切り替えました。
初期のマイクロマウス自律型迷路解決移動ロボットは、Z80 CPUを使用していた。例えば、ムーンライト・スペシャル(1978年)は、単一の+5V電源で動作するため、オンボードハードウェアを最小限に抑える目的で4MHzのZ80Aを採用していた。この設計では、プロセッサの新しいブロック転送命令を利用して迷路ノードテーブルを管理し、ベクタ割り込みを利用してリアルタイムのセンサーサンプリングとステッピングモーター制御を、4kHz(250μsec)という短い割り込みサイクルで処理していた。
2024年4月15日、ZilogはZ80プロセッサの生産中止を発表し、注文は2024年6月14日まで受け付けた。この発表には、Z80プロセッサの13種類のバリエーションが含まれており、その中にはDIP40パッケージのチップも含まれていた。Zilogは、改良版のeZ80プロセッサの製造は継続する。 [ 5 ]
ADDアキュムレータにゼロを追加したり、SUBゼロを減算したり、ゼロOR追加またはXOR減算したりすることで、アキュムレータのパリティをテストできます。これらはすべて、8080 と Z80 の両方で同じ速度とサイズの単一命令操作です。プログラマがたまたまORまたはXOR減算することでパリティをテストすることを選択した場合、Z80 はプログラムを正しく実行しますが、プログラマがゼロをADD追加またはSUB減算することでパリティをテストすることを選択した場合、Z80 は常に P/V フラグをリセットします (ゼロを追加または減算してもオーバーフローやアンダーフローは発生しないため)。8080 や 8085 のように、バイトのパリティを正しく示すために P を割り当てる代わりに、プログラムが失敗する可能性があります。 Intel 8080のプログラミングマニュアルには、パリティテストに算術命令を使用することを推奨しない、あるいは論理命令を使用することを規定する記述は一切ありません。したがって、8080プログラマーがどちらか一方を選択する理由はほとんどありません。実際のアプリケーションでは、この例で示されている算術命令が論理命令よりも高速で、1バイト短いため、パリティテストに選択される可能性は低いでしょAND AうOR A。割り込み処理は、 IM
i
(
i
= 0、1、または 2)命令
で規定された割り込み方式に従って開始されます。i
= 1 の場合、直接方式では、PC に 0038H がロードされます。i = 0 の場合
、
ベクタ方式では、割り込みデバイスは 1 バイトのオペコードを配置する機会を得ます。i = 2 の場合
、
間接ベクタ方式では、割り込みデバイスは 1 バイトを配置する必要があります。Z80 はこのバイトを使用し、128 個の割り込みベクタのうちの 1 つをこのバイトで選択できます。
Z80のレジスタアーキテクチャは8085のレジスタアーキテクチャよりも革新的である。
ビットの世界では、最も人気のある 2 つのマイクロ コンピュータは Z80 と 6502 コンピュータ チップです。
、Z80命令セット全体をサポートするだけでなく、
。設計者はZ80と互換性のあるアーキテクチャを選択し、Z80ユーザーに完全にソフトウェア互換性のあるアップグレードパスを提供しました。64180プロセッサは、Z80とまったく同じようにすべてのZ80命令を実行します。
すべての略語はインテルコーポレーションの著作権(1977年)です。
...] 8086はアセンブリ言語レベルで8080とソフトウェア互換性があります。[...]
...] Intelの翻訳プログラムは、8080アセンブラプログラムを8086アセンブラプログラムに変換することができました[...]
。252 個のルート命令の言語を持ち、予約済みの 4 バイトをプレフィックスとして使用することで、さらに 308 個の命令にアクセスできます。
80x86ファミリーに先行する8ビットマイクロプロセッサ(Intel 8080、Zilog Z80、Motorolaなど)には乗算機能は搭載されていませんでした。
非公開のZ80コードでは、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倍高速に命令を実行する。
ラビットセミコンダクター社のRabbit 3000マイクロプロセッサは、ZiLOG社の定評あるZ80マイクロプロセッサを大幅に改良・強化した派生製品です。
Rabbitの部品はZilog Z180アーキテクチャをベースにしているが、Zilogの部品とはバイナリ互換性はない。
CP/Mは8ビットマイクロコンピュータの世界を支配し続けた。
。汎用オペレーティングシステムの考え方はまだ黎明期にある。多くの点で、それは CP/M と初期の 8080 および Z80 コンピュータの寄せ集めから始まっている。
情報源
シミュレーター/エミュレーター: