thumb|Z80 CPU(1993年第45週製造品)
Z80は、ザイログによって設計され1976年に発表された8ビットマイクロプロセッサである。現在も広く使われている。
概要 嶋正利らインテルを退社したIntel 8080(i8080)の開発スタッフが設計したマイクロプロセッサである。 #歴史
i8080とはバイナリレベルで「ほぼ」上位互換性があり、多くのソフトウェアがそのまま動作し、その上、i8080よりも処理能力が高くなっている。i8080が3つ電圧の電源(+5V、+12V、-5V)を必要としたのに対し、Z80はひとつの電圧の電源(+ 5Vのみ)で済むという大きなメリットがある。
1976年の発売当初から安定供給のためにMostekによるセカンドソース品が並行的に供給された。
Z80は1976年の発売当初から「8080よりも高速・高性能な、8080互換CPU」と高評価され、i8080に代わって採用され、1970年代後半のマイクロコンピュータの主要なカテゴリであったS-100コンピュータの拡張CPUボードやネイティブCPUとして採用、当時の標準的OSのCP/Mを搭載したコンピュータのCPUであり、また同時に1976年の発売当初から電源が+5Vのみで電源まわりが簡潔で済むメリットを活かし機器制御にも広く使われた。1977年にはタンディ・TRS-80 Model Iに採用。その後1978年ころから日本のシャープや日本電気(NEC)が製造する互換プロセッサも増え、日本のマイクロコンピュータでもシャープ・MZ-80シリーズ、X1シリーズ、NEC・PC-8000シリーズ、PC-8800シリーズ、マイクロソフトとアスキーが提唱した共通規格パソコンMSX等、採用が続出。イギリスの1980年代のホームコンピュータ・ブームでもシンクレア ZX80、ZX81、ZX Spectrum、Amstrad CPCに採用された。さらに家庭用ゲーム機でもセガのSG-1000やゲームギアや任天堂のゲームボーイなどZ80の互換プロセッサやZ80のカスタムプロセッサの採用例が続出し、製造数は毎年莫大な数なっていた。
1985年には日立製作所がZ80と上位互換性のあるCPUコアにメモリ・マネージメント・ユニット(MMU)、ダイレクト・メモリ・アクセス・コントローラ(DMAC)、タイマー、シリアル通信(相当)などをワンチップに統合し、アドレス空間を1MBまで拡張したHD64180を発売しヒット製品となったことを見て、本家ザイログは日立とセカンドソースおよび共同開発契約を結び、純正の「Z80ファミリ」として「Z80180 / Z180」を発売。その後もZ80系統合チップの種類は増え、2020年代の現在までZ80系統合チップは組み込み向けチップの定番のひとつでありつづけている。
ザイログオリジナルの製品としてはクロック周波数が2.5MHzのZ80から20MHzの高速版まで存在する。
組み込み用途 組み込み用途では初期のゲーム専用機などにも搭載されていた。組み込み用途などではASICやFPGAのIPコアとして利用されることが多い。2007年ころには実チップのみならず、FPGAやASIC用のIPコアが使用できる状態になっていた。商用の互換コアは20社以上存在し、オープンソースのIPコアも5種類以上存在している。 Z80ファミリ インテルの8080がコンパニオンチップである(USART)、(CTC / PIT)、8255(PPI)でファミリーを構成していたのに対応して、ザイログのZ80もZ80SIO、Z80CTC、Z80PIOや、Z80DMAでZ80ファミリーを構成する。また、これらを1チップに集積したマイコンもあった。 Zilogオリジナル品の終了と、互換品などの継続 2024年4月にザイログはオリジナルのZ80の生産を終了することを発表したがZilog Calls Time on the Venerable Z80, Discontinues the Standalone Z84C00 CPU Family (huckster.io)、流通在庫もあり、オリジナル品もしばらく入手できる模様。なお、互換品、ライセンス品の製造が続いているので、メーカーを問わなければZ80は使い続けることができる。 Z80の読み方 本国アメリカでの読み方 Z80の本国アメリカでの発音は、ズィー・エイティー()。アメリカの技術者のほぼ全員がこう発音する。技術カンファレンスや動画、講義、解説記事でもこの読み方が一般的。
イギリス英語での読み方 イギリスやカナダなどイギリス英語圏では、「Z」は「ゼッド()」と発音されるため、英国では「Z80」は 「ゼッド・エイティー()」 と発音される。
日本国内 日本国内は読み方が定まっていないので、項目末尾の #日本国内での発音で解説。
ハードウェア Z80はインテルの 8080マイロプロセッサの改良型といえる製品であり、他のインテル系CPUと同じくリトルエンディアンである。8080に対してレジスタセットの拡張、命令の追加、電源の 5V単一化、より高いクロック周波数への対応などが図られた。メモリ空間は16ビット幅のアドレスバスで示される64KiBで、それ以上のメモリ空間を操作する場合には、外部にバンク切り替え回路やMMUなどを追加する必要がある。8080と同様、アドレスバスをメモリ空間と共有するI/Oポートも用意されており、メモリ空間を圧迫することなく周辺装置との入出力を可能にしているが、後述するように上位アドレスの挙動は8080と異なっている。
製品の種類・動作速度 当初のZ80はN-MOS版であったが、後にC-MOS版が追加された。N-MOS版は低価格、高性能、C-MOS版は高性能、低消費電力設計と区分されている。N-MOS版の最大動作クロック周波数は品番の末尾のサフィックス(アルファベット)の有無と種類で識別できる。Z80が2.5MHz版、Z80Aが4MHz版、Z80Bが6MHz版、Z80E若しくはZ80Hが8MHz版など。トランジスタ数は8,200個。C-MOS版では型番で識別され、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レジスタの追加、割り込みモードの追加、相対アドレスによるジャンプ命令の追加、ワイヤードロジックによる命令の実行、などの追加や変更が行われている。
割り込み 割り込みモードは、8080互換のモード0に加え、RST38(0038Hの呼び出し)を行うモード1、Z80周辺LSIと組み合わせて最大128レベルの割り込みを管理するモード2がある。モード0では、8080と同様に割り込みコントローラ8259と組み合わせて使用するのが前提である。モード1では、割り込みがあると常に0038Hを呼び出し、割り込みルーチンで割り込み要因を特定してそれぞれの処理ルーチンへ分岐するので割り込み用の回路は最小限で済む。モード2では、Z80用周辺LSI間でデイジーチェーンを作り、よりCPUに近い周辺LSIの割り込みが優先されると共に、後続の周辺LSIに割り込み処理中を示す信号を送ってより優先順位の低い割り込みを抑制するので、8259の様な割り込みコントローラを必要とせず自然に割り込み優先順位と多重割り込みの制御や管理が行える。
割り込みには、NMI (Non Maskable Interrupt) も追加されており、電源断時などの非常処理に用いることが想定されている。
未定義命令 正式には命令表に無い未定義命令があり、多くが命令のフォーマットに準ずる動作をした。機能的に既存の命令と重複するものが多かったが、16ビット幅のインデックスレジスタIX, IYを、上位バイトと下位バイトに分割して8ビットレジスタとして使うものなど一部は後継のZ280のマニュアル中で正式な命令として仕様に組み込まれたものもある。但し、Z80においてこれらの命令は飽くまでも非公式の命令であり、互換プロセッサの一部や後継プロセッサでは期待通りの動作をしなかったり、別の命令が割り当てられていることもある。日立のHD64180では未定義トラップがかかる。
非公開機能 ハードウェア上の非公開の機能として、Z80のNMOS版、CMOS版には通常のリセットの他に、特別なリセット(スペシャルリセット)が存在し、ザイログに在籍していた嶋正利、フェデリコ・ファジン、ラルフ・アンガーマンの3氏による米国特許4486827US4486827A - Microprocessor apparatus - Google Patentとして1984年12月4日に成立している。スペシャルリセットは通常のリセット同様、リセット入力ピンを利用するが、通常リセットより短いリセットパルス幅(2クロック以内)が与えられる必要がある。スペシャルリセットが有効になるとPC(プログラムカウンタ)のみがリセットされ、他のレジスタは一切変わらない。特許や他のリソースZ80 Special Resetに示されているスペシャルリセットの応用はエミュレータやマルチタスキング等である。
製造時の特徴 製造には、この頃使われ始めたイオン打ち込み技術が使用された。当時、互換品の製造にあたりライセンス契約を結んでセカンドソースとなったり、クリーンルーム設計による独立実装によるのではなく、チップの顕微鏡写真からマスクを起こしてデッドコピーを行う一部の日本企業があったため、イオン打ち込み技術はその対策のためにも使われた。イオン打ち込みにより、エンハンスメント(ノーマリーオフ)に見えるが実はディプリーション(ノーマリーオン)というトランジスタを6個ほど仕組み、Z80のオリジナルチップから素直にマスクパターンを作成すると正しく動作しなくなるようにして時間稼ぎをした嶋正利『マイクロコンピュータの誕生』p.142。
特徴
メモリサイクル 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と比較すると、相対ジャンプは可能であるもののジャンプ先の範囲が現在位置より-128から+127と狭く、PC相対アドレッシングが無いなどリロケータブルな構成をとりづらく、バイナリ化したコードをリロケータブルに配置して動作させるドライバやデバッガ、オペレーティングシステム等の環境を作るには不向きとされた。リロケータブルでない一般的なバイナリは、配置アドレスを変更する度に再コンパイルや再リンクが必要となった。またアドレス参照時のオフセットも汎用レジスタ使用時には指定できず、インデックスレジスタ使用のオフセット指定も-128〜0〜127の範囲で制限されるため、C言語のポインタとの相性がよくない面があった。
アドレッシングモードが少ないこともあり、オペコードおよび命令フォーマットを暗記して、直接機械語を記述することも、さほど難しいものでもなかった。特に、オペコードを8進数で表現すると、命令フォーマットの区切りに適合した。 レジスタ thumb|right|300px|Z80-CPUのレジスタ一覧
アキュムレータ・汎用レジスタ・フラグレジスタ Aは8ビットのアキュムレータで、演算の中心となる。B,C,D,E,H,Lは汎用レジスタであり、BC,DE,HLのレジスタペアとして16ビットの処理を行える。これらは8080の同名レジスタと同じ機能を持つ。 Fは8080上位互換のフラグレジスタで、PUSH、POP時や、表裏の切り替えにはAレジスタとペアにして扱われる。
フラグレジスタ フラグレジスタのビット位置(*は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 キャリー
表裏レジスタ これらの8ビット汎用レジスタとアキュムレータ、フラグレジスタは2セット用意され(表・裏レジスタ)、切り替えて使用できる。A,Fレジスタと、B,C,D,E,HL レジスタで独立して表裏を切り替えられる。現在どちらのセットを使用しているかを判断する命令はなく、プログラマがいずれのセットを使用しているか管理してプログラムする。
リフレッシュレジスタ Rはリフレッシュカウンタで、オリジナルのZ80では下位7ビットが変化し、最上位ビットは初期値不定で、値を書き込むとその最上位ビットが保持される。周辺LSI統合CPU・上位互換CPUでは、リフレッシュカウンタを8ビットに拡張し、最上位ビットが保存されないものもあるほか、リフレッシュ機構をCPUから完全に切り離してRレジスタが変化せず書き込んだ値が保存されるものもある。
割り込みベクタレジスタ Iは割り込みベクタレジスタで、割り込みモード2に設定したとき、割り込みベクタの格納領域を指定する。割り込みモードが0または1の場合はこのレジスタは単にデータを保持するために使用できる。
インデックスレジスタ IX, IY レジスタがあり、16ビットレジスタとしてのHLレジスタペアと同等の機能を持つ。16ビット幅の加減算を行える。インデックスレジスタとして使用するときは、HLレジスタでは指定されたアドレスにのみアクセスできるが、IX, IY をインデックスレジスタにすると、8ビットのオフセットを伴って256バイトのアドレスのうち任意の場所へアクセスできる。
命令セット 8080に存在する命令についてはパリティフラグを除く挙動とバイナリは同一となり、基本的には上位互換であるため非互換部分に留意すれば同一のバイナリを動作させる事も可能である。8080用のOSであるCP/Mや、そのアプリケーションもそのまま動作した。
Intelによる8080の上位互換プロセッサであるIntel 8085とは拡張部分の命令セットや挙動が違うため非互換である。
アセンブラでプログラムを記述する際には、ザイログ社が定義したZ80のニモニックならびにオペランドの記述は、インテルのi8080やi8085のものと異なる。ザイログ社のものは記述の容易さが勘案され、より整理されたものとなった。例えば、レジスタ間での値の移動、即値をレジスタに入れる、レジスタペアで示されるメモリとレジスタの間の転送命令のニモニックはすべて "LD" であり、アドレッシングモードを意識する必要がなく初心者にも判りやすい。反面、存在しない組み合わせの "LD" 文を記載してエラーとなるなど、i8080やi8085のニモニックと比較して、アドレッシングモードや実際の命令がはっきりせず、使えない組み合わせのオペランドの区別がしにくいなどの状況が発生している。オペランドの順番は、ディスティネーションが前でソースが後である。また、オペコードの仕様上、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)は指定できない。 CPU制御命令 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レジスタの回数だけ繰り返す。
I/Oポート Z80では下記のような仕様により、条件付きでI/Oアドレス空間を16bitとして扱える仕様となっているが、8bitのアドレス空間であるように考えられたり、設計として下位アドレスのみ有効であると認識されることが多い仕様でもある。2026年現在でも解説するWebサイトでも下位8bitのみが有効といった記述になっていることも少なくない。マニュアルの版によって表現の若干の違いはあるものの、レジスタペア、16bit空間としてではなく、下位8bitと上位8ビット各々に入出力される値として記述され積極的にアドレスを拡張したような表記はない反面、この挙動を利用することに対して注釈なども存在せず、応用によってアドレス空間を広くとった実装が存在している。
i8080ではアドレスバスにI/O空間へのアクセス時プロセッサ内部のレジスタを介し上位、下位共に同じ値が出力される設計になっていたMCS-80 FAMILY USER'S MANUAL Chapter 2。対し、Z80では直接入出力命令では上位アドレスにアキュムレータ、下位アドレスに指定した値、入出力データのレジスタは無条件にアキュムレータが指定されるようになっているが、ブロック転送を含む全てのレジスタ間接入出力ではアドレスバスにCレジスタが下位8bit、Bレジスタの値が上位8bitに出力される仕様となっている。
前述のとおり16bitアドレスのI/Oポート空間をそのままデコードするハードウェアを構成してしまうと、直接入出力命令は引き渡すデータと上位アドレスは同じものになってしまう。また、Z80で追加されたリピート命令はBをカウンタに使用する仕様になっているため、間接入出力命令では上位アドレスとループカウンタが同期して値が変化してしまう以上命令としての仕様であるBの値をカウンタ値としてゼロになるまで繰り返すという利用はかなり条件を選ぶものとなっている。逆にこれを利用することにより残り回数を周辺デバイスなどに知らせるなどの応用も可能であるが、出力の場合は処理の順番はアドレス出力よりもBレジスタのデクリメントが先のため、アドレスバスには1小さい値が出力されることに留意する必要がある。なお、入力の場合はアドレス出力が先である。
この仕様を利用し大きなアドレス空間を必要とするVRAMをここに割り当てることで、メインメモリの自由度を向上させる実装が見られた。そのような構成をとった日本製パソコンには、シャープのX1、ソニーの/SMC-777、BUBCOM80などがある。シャープMZ-1500ではオプションのRAMファイル(MZ-1R18、容量64KiB)のアクセスにこの仕様を使用している「MZ-1500 オーナーズマニュアル」(付属説明書)に具体的な記述あり。。