MZのエミュレータ

 巷は古のパソコンやゲーム機のエミュレータが大流行り。我らがMZもこことかこことかこことかいろいろエミュレータがありますが、偏ってたり作り始めて頓挫してたり環境がちょっと一般的でなかったり(しかもビルドが必要とか)と満足ではない状況です。できることなら新たにエミュレータを作りたいところだけど、軌道に乗るまではなかなか大変な作業です。
 しかし!今はMZ-700/1500エミュレータのソースが公開されています。イチから作るより改造するほうが何倍も簡単なはず、元々出来のいいエミュレータではありますが、ここからさらに完璧を目指すのもいいんじゃないですか?


Step1:ディスク対応

 現在のMZ-700エミュレータはテープとクイックディスクに対応しています。フロッピーディスクはそもそもテープでは遅すぎるがゆえにサポートされたものですので、テープイメージのロードが瞬時に終わるエミュレータ環境では積極的に対応する必要を感じないかもしれません。が、DISK BASICは存在してますし、S-OSもちゃんとディスク対応してますから、フロッピーのエミュレーションができればより完璧になることは当然の話です。
 具体的には、FDCであるMB8876をエミュレーションすることになります。FDCにはさまざまなコマンドがあってかなり複雑なLSIですが、

があればどうにか動かせるのではないかと思われます。フォーマットに必要なトラックライトとかかなりのコマンドは削れそうな気がします(フォーマットなんて、添付のユーティリティかWindowsのコードで空ディスクのイメージが作れればいいんだし)。
 工夫が必要なのはマウントするディスクイメージをどうするか。X1のエミュレータ(ってここのリンクのであってたかな)でサポートする「D88」と呼ばれるフォーマットが事実上の標準になりつつあるようなのですが、理解が面倒ならベタイメージでもいいでしょう(相互変換できるようだし)。問題は、MB8876はデータバスがなぜか負論理なので特にS-OSではディスクI/Oにビット反転処理が入っていること。これを取り払うこと自体はひじょうに簡単なのですが、システムディスクのイメージを転送してきたときブートのためのデータとS-OSのデータは相互に反転しているのでプログラム上の反転処理を取り除くことができなくなります。しかも他機種のS-OSのディスクイメージをデータディスクとしてマウントしたときは反転処理はしてほしくない…。
 解決策はいくつか考えられるでしょうが、もっとも簡単なのは「MZマシン用ディスクイメージ」として".mzd"とかいう拡張子を決めて、これをマウントするとき以外は反転イメージであるとすることでしょうか。


Step2:MZ-80K/C/1200モード

 今でも擬似的にMZ-80K/K2/K2Eのように見せるモードがありますが、結局それはMZ-700を見た目だけモノクロにしているということでしかありません。やはり、きっちりMZ-80Kのハードウェアに制限されなければいけないでしょう。さらには、MZ-1200にだけある「メモリ入れ替え」と「画面反転」にも対応してもらいたいところ。そして、グリーンCRT風の画面も欲しいですね。
 それができたら、今度もやっぱりFDC。ちょっと資料が少ないですが、MB8876とは違う東芝のFDCが使われてますので、これについて先ほどと同等のエミュレーションができればさらに完璧。S-OSは対応していませんがF-DOSとかもありますし、さらにはHu-DBASIC、H-DOSとディスクに関してはMZ-700よりもたくさんの資産が残されています。
 さらには、ニデコのカラーボードや吉喜のカラーボード、純正カラーディスプレイユニットのMZ-80DUと夢は広がります。当時はマシンパワーも機能も貧弱だったんです。それを補おうとありとあらゆる拡張が試みられてきました。それらを現代に再現することこそ、エミュレータ作りの醍醐味でしょうな。

 …というわけで、有志によるMZ-80K/C/1200エミュレータプロジェクトが進行中。詳しくはこちらへ。


Step3:MZ-80B/2000

 ここからは純粋な改造ではなく、お手本にした新しいプログラムの話。といってもテープのエミュレーションとかはそのまま使用できるなど、流用範囲は大きそうです。
 MZ-80B/2000は何が有利かというと、ブートに関してプログラムROMが必要ないこと。キャラクタは「見た目コピー」でフォントファイルを作りますが、あくまでプログラムに都合のよい内部構造であればいいので、CGROMと同じイメージにする必要もありません。つまり著作権的にフリーでいられるわけです。
 Step1でフロッピーへの対応が終わっていれば、こちらにも流用できます。キー入力は8255からZ80PIOに変わっていますが、8253はありますのでアドレスをずらすだけでOK。音も発振周波数を倍にすればそのまま使えるはずです。あとは画面とメモリぐらいでしょうか。細かいI/Oの実装とかもありますが、山はそんなに高くないような気もします。
 MZ-80Bとして作れば、MZ-2000としての改造は容易でしょう。追加するのはグラフィックのページとカラー出力、あとグラフィックの解像度が高くなることが大きい違いですね。
 さて、各エミュレータができればこちらもサードパーティやオプション品のエミュレーションに望みたいところ。MZ-80BモードとしてはMZ-80DUやI・Oデータ機器から出ていたカラーボードの対応でしょうか。特に後者はHu-GBASICで標準サポートされているだけに、対応する価値は高いです。MZ-2000モードではかなり厳しいですが16ビットボードのエミュレーションができるといいですよね。特に再現したいソフトはないんですが、当時シャープがこれで16ビットマシンのお茶を濁したというある意味「負の遺産」といえるもので、これも大事なパソコン史の一部です。

 …なんとこちらも別の有志により着々と進行中。再現度高し。詳しくはこちらへ。


Step4:MZ-2500/2800

 もちろんここからは無茶モード。あのX68000でも相当に再現されてるんだから、無理というわけではないでしょう…というだけの論理ですがね。さらにはMZ-3500、MZ-5500/6500/6550、MZ-40Kなど無茶を承知でお願いしたいものはまだまだあります。エミュ道は長く、険しいですなぁ…(えっ!?普通の人のエミュ道っていろんなエミュ環境を揃えることなの??)。


戻る