Z80との互換性について(ハードウェア)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/04/05 06:01 UTC 版)
「HD64180」の記事における「Z80との互換性について(ハードウェア)」の解説
オペコードフェッチサイクルのタイミングが改善されていたおかげで同一クロックのZ80よりもメモリーアクセスタイミングに余裕があったが、その相違のためにZ80系の周辺デバイスを直接接続すると割り込み制御機能を使用することができなかった。後にこの問題を解消したHD64180Zが開発された。また、ザイログよりHD64180ZのセカンドソースとしてZ64180が、その改良版としてZ180(Z80180, Z8S180)が製造された。Z180は動作モードコントロールレジスタの機能(バス切り換え)が異なっているので、多少のソフトウェアの変更が必要である。
※この「Z80との互換性について(ハードウェア)」の解説は、「HD64180」の解説の一部です。
「Z80との互換性について(ハードウェア)」を含む「HD64180」の記事については、「HD64180」の概要を参照ください。
Z80との互換性について(ソフトウェア)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/04/05 06:01 UTC 版)
「HD64180」の記事における「Z80との互換性について(ソフトウェア)」の解説
信頼性強化のため、仕様にない未定義命令を実行するとトラップがかかるようになっているので、Z80ユーザーの間でよく知られていた未定義命令である、IXおよびIYレジスタの8ビット分割(IXL/IXH・IYL/IYH)には対応していない(それ以外のもの、例えばビットシフトに関する未定義命令でも同じ)。そのため、これらの命令を使用しているソフトウェアをそのまま実行することはできない。なお、トラップ発生後にセットされるフラグをチェックすることでリセットかトラップかを区別できるので、理屈としては、必要に応じてエミュレーションプログラムに処理を移し、スタックポインタの値から、不正命令によるトラップを起こしたコードを読み取って同等な処理を実行するサブルーチンを呼び出すことは可能である。しかしながら、それを実現するためのクロック数は、未定義命令を直接実行できる従来のZ80よりもはるかに増える。この種の、Z80においても動作保証が一切されていなかった未定義命令(後継チップでは公式に仕様化された)をあえて使用するのは、ゲームソフトなどで、IX, IYレジスタを、HLレジスタの代用として8ビット単位で流用しRAMへのアクセス頻度を減らし極限まで実行速度を稼ぐ場合であり、そのようなプログラムは、未定義命令以外の部分でも実行環境とするハードウェア(特定のゲーム機器やパソコンなど)に依存したコードになっているため、命令だけエミュレーションできても、そのままではバイナリ互換性がないことに変わりはない。移植のためにソースコードを修正するのであれば、その作業の一環として未定義命令の部分も書きなおせばよく、HD64180によるZ80未定義命令のエミュレーションは、実用的とは言えない。
※この「Z80との互換性について(ソフトウェア)」の解説は、「HD64180」の解説の一部です。
「Z80との互換性について(ソフトウェア)」を含む「HD64180」の記事については、「HD64180」の概要を参照ください。
- Z80との互換性についてのページへのリンク