実行速度が速く、ポータブルであることを目標に書きました。
C++のクラスになっており、複数のZ80CPUを持つマシンを簡単に実装できます。
ビッグエンディアン/リトルエンディアンの両方をサポートしています。

download (version1.04)

version1.04の変更点
OUTI/OUTD/OTIR/OTDR命令で、出力前にBレジスタをデクリメントするように修正

使い方
その他のメソッド
未定義命令および未定義のフラグ変化のサポート

以下の環境で動作確認済みです。
CodeWarriorPro6/Mac
gcc2.95.2/Linux(x86)
gcc3.3/Mac OS X

このソースはどのような目的に使用してもかまいません。
なお、保証やサポートはありません。

Macintosh用PC8001エミュレータ

上記Z80クラスを使ったサンプルです。
無印PC8001から吸い出したROMイメージをpc8001.romという名前でアプリケーションと同じフォルダに置いて起動します。
ROMイメージを持っていない場合でも、雰囲気だけは楽しめるかも。
いろいろなマシンで試せるように、3種類用意しました。

Mac8001(68k) (version0.22)

Mac8001(PPC) (version0.22)

Mac8001(Carbon) (version0.22)

version0.22の変更点
Z80クラスversion1.03でビルド

j80用のcmtファイルを読めます。cmtファイルをMac8001のアイコンにドロップしてください。
上書きセーブすると、独自フォーマットに置き換えるのでご注意ください。
音に関しては実装していません。
スクリーンショット
ウィンドウを2枚開いて、別々のプログラムを走らせたところ。
Z80エミュレーションがクラスになっているので、複数のCPUのエミュレーションも簡単です。

エミュレーションスピード(version0.22)
下の表は、PC8001実機を4MHzとしたとき、何MHzに相当するかを表しています。
「N-BASIC入力待ち」は60fps出せる状態でも実際には画面の更新がない場合で、ほぼZ80クラスの性能を表します。
「走れ!スカイライン」(スクリーンショットの左上に映っているゲーム)は実際に60fps以上で画面更新をしている場合で、マシンの描画性能も含めた性能です。

機種 OS 種別 画面モード N-BASIC入力待ち 走れ!スカイライン
Quadra800 7.5.3 68k 16色 3.1MHz 2.1MHz
8500/180 8.1 PPC 256色 44MHz 23MHz
G4/400(GBE) 9.2.2 Carbon 256色 130MHz 120MHz




Counter