XM6i - クロスプラットフォーム X68000/X68030 エミュレータ

主な特徴

XM6 TypeG ベース
X68000 エミュレータの中でも 正確なエミュレーションで知られる XM6 および XM6 TypeG をベースにしています。 XM6 / XM6 TypeG の移植を目指している面もありますし、 逆に敢えて異なるところを目指している面もあります。

クロスプラットフォーム
Win32 以外でも動作させるべく、各種移植を行い、 フレームワークも MFC から wxWidgets に移植中です。 現在、NetBSD/i386、MacOSX、Win32 版があります。 今のところオリジナル版の制約によりリトルエンディアン環境でしか動作しませんが、 IA32 以外でも動作するようになっています。

wxWidgets 採用
フレームワークに wxWidgets を採用しているため、 同一ソースコードから Windows、MacOSX、UNIX 用の実行ファイルを ビルドすることが出来ています。 なお、XM6 をオリジナルと同じ開発環境を用いて再ビルドするのとは異なり、 MFC で書かれている部分をすべて一から書き起こす必要があります。 実は画面が表示されてるだけでも奇跡的です (XM6 VM が MFC 用に用意したビットマップデータを wxWidgets 用に もう一度変換したりしている)。

X68030 対応
CPU コアを Starscream から MUSASHI に変更しています。 MUSASHI コアは本来 68000 から 68EC040 までの命令セットに対応していますが、 XM6i ではこのうち 68000、68EC030 (および 68030) のみサポートしています。 しかし X68030 の新機能についてはまだほとんどサポートしていません。 また、68040 については知見と実機がないためサポート予定はありません。 68060 の実機なら近くにあるにはありますが…。

68030 MMU サポート
MUSASHI コアを改造して 68030 MMU に対応しています。 68030 MMU のアドレス変換部はたぶんフル実装してあると思います。 透過変換(TT)、ロングディスクリプタ、リミット、間接ディスクリプタなどの 誰も使いそうにない機能も全て実装してありますが、 面倒なので細部までは動作確認はしていません(ぉ。

アドレス変換キャッシュ(ATC)もたぶんフル実装してあると思います。 NetBSD/x68k の locore.s で MMU をイネーブルする前に PFLUSHA を 実行していなかったバグ (NetBSD-current で 2011/11/27 に修正されています) もわざと起こせば実機同様に再現します。

NetBSD/x68k のための対応
高速モードや準仮想化(?)などの対応を行っています。 目指せ m68k 最強ビルドマシン?