歓迎光臨
"EmuZ-2800" - SHARP MZ-2800 emulator for Win32

"EmuZ-2800" is SHARP MZ-2800 emulator for Win32.
This software is under GNU GENERAL PUBLIC LICENSE.

This software requires Windows 2000/XP/Vista/7.

Download: Jump to Common Source Code Project



EmuZ-2800 謎WIPページ

解析資料はこちらです。



2016/3/23
ダミープリンタのインスタンスの初期化が正しくされていなかった問題を修正しました。
ご指摘多謝です>某スレの方



2016/1/10
漢字サーマルプリンタ MZ-1P17をサポートしました。
また、出力したデータをそのままバイナリファイルに出力するダミープリンタをサポートしました。



2015/4/10
ステートセーブに対応した際に、メモリのバンクスイッチ周りでエンバグしていたのを修正しました。



2015/1/28
ステートセーブに対応しました。



2015/1/21
EmuZ-2500と同様に、ポート0xCDを修正しました。



2015/1/19
EmuZ-2500と同様に、Z80SIO周りを修正しました。
Z80SIOの送受信クロックの周波数の設定や、Z80SIOのポートアドレスの変更をサポートしています。



2012/10/23

i286の実装を、MAME 0.147ベースに更新しました。
(MS-DOS Playerで、i386コアを取り込んだのと同じ要領です)

その結果、デモディスクで、水面をゆらゆらさせる処理で暴走していた問題が解決しました。
ずっと、65536色モードでのリードモディファイライト絡みを疑っていたんですが(苦笑)



2011/1/16
EmuZ-2500に準じた形で、画面マスク機能の修正を行っています。
(スクロール関係は、MZ-2500とMZ-2800では仕様が違うため、こちらでは行っていません)



2009/4/1
ジョイスティックの連射の処理を修正しました。
VSYNCに同期して連射するようになっています。
これである程度安定して連射できるようになっているかと思います。

MZ-2500にあわせて修正しましたけど、こっちで使い道があるのかしら(苦笑)



2008/4/7
Z80SIOの割込み応答を行うI/Oをサポートしました。
CPUがZ80でないため、割込み応答とベクタ取得をI/Oによって行うようになっています。
なお、割込み復帰については、Z80SIOの内部コマンドで行っているようです。


具体的には、Z80SIOに接続されたマウスが動作するようになっています。
スクリーンショットは、DYNAWAREのShell/Cです。


Win3.1風なGUIシェルなのですが、これが中々本格的な作りになっています。
同じSHARPのX68000のSX-WINDOWは有名ですが、MZ-2800にもこんなのがあったんですね。


サンプルで入っている画像データ。



2007/9/14
リードモディファイライト関係のレジスタを修正しました。
MZ-2800では、VRAMの偶数・奇数アドレスの各々に独立したレジスタが用意されているようです。


例えば、デモディスクの表示が乱れる問題が解決しています。


従来はこんな感じで、VRAMの偶数・奇数アドレスに対して同じデータが書き込まれていました。
描画処理の方ばかり疑っていて無駄な調査に工数を費やしてしまった(苦笑)

デモディスクにおいて、不正なニーモニックが実行される不具合がまだ残っています。
どうやらBASICのMOVE命令の実行時に発生するようです。
現象を再現する簡単なプログラムも用意できましたので、3連休でどこまで原因が究明できるかに期待。



2007/8/24
65536色モードをサポートしました。
但し、内部的にはRGB555で色を処理しますので、輝度信号を無視して実質32768色となります。
(MZ-2800ではR:5,G:5,B:5,I1で65536色を表現しています)


また、SYMBOL命令が動作しない不具合を修正しました。
漢字ROMのバンク切り替えのI/Oは、PEEK@命令で調査したときは$274でアクセスしていました。
これに対して、SYMBOL命令では$8274でアクセスしていたのが原因です。
A15=LでもA15=Hでも同じポートにアクセスするようなので、全てのI/OでA15を無視するようにしました。

MZ-2800で追加された、前変換、取消、SF1-SF4の各キーをサポートしました。
(これまでキーボードの実装はEmuZ-2500のものをそのまま流用していました)
またINSTキーを押すと、SHIFT+DELキーとして処理するようにしました。
このために、Win32側の実装で、左右のALT/CTRL/SHIFTを区別するように変更しています。
但し、Win9x系列では左右の区別がつかないので、常に左側が押されたものとして処理されます。

残る大物はSASI I/Fですね。
MZ-2500と同じボードの筈ですが、I/Oの叩き方が違っており、そのまま流用しても動作しないようです。



2007/8/23

65536色モードの実装完了しました。
他に問題がありますのでリリースはまた後日にでも。



2007/8/22
16/4096色モードのCG画面をサポートしました。
既報の通り、辞書ROM/漢字ROM/PCGのバンク切り替えのサポート、RP-5C15の不具合修正も行っています。


ハードウェアスクロールやリードモディファイライトなど、CG画面周りのレジスタの仕様が大体判明しました。
MZ-2500では1箇所に纏まっていたのが、複数のI/Oに分散して割り当てられているようです。
後は、65536色モードにおいてのレジスタの挙動の調査が必要となります。

ところで書院28では、折角のリードモディファイライトを使用していないようです。
VRAMのRGBIの各バンクに対して、いちいちバンク切り替えして直接書き換えています。
本体と書院28の開発スケジュールに齟齬があったのか、書院からの移植の都合だったのか、興味深いです。



2007/8/21
今晩は作業報告と解析資料の更新のみです。

現在、メモリ周りやCG画面周りの調査中です。
辞書ROM/漢字ROM/PCGのバンク切り替えの方法については判明しました。



CG画面周りのレジスタについては、スクロール周りの設定でまだ不可解な点が残っています。
画面モードの設定については判明しましたので、16色モードから実装中です。
MZ-2500モードとは、VRAM上のLSB,MSBと画面上のドットの並びが逆向きなのが興味深いです。

また、時計が8時間ずれる件の原因が判明しました。
RP-5C15では、時間を12時間+午前/午後フラグ、または24時間の形式で表します。
この設定について、電源投入時の初期状態が間違っていたのが原因です。
MZ-2500では初期化してから使用しているため、これまで顕在化していませんでした。



2007/8/19-2
テキスト画面周りが大体正常動作するようになりましたのでリリースします。


MS-DOS起動直後、1桁目が表示されるようになりました。
起動後に、$f0000-$f7fffをIPLからTVRAMに変更するように修正しています。
ただし、詳細なバンク切り替えのI/Oはまだ不明です。


スクロール周りの実装を行いました。
MZ-2500と大体同じですが、TVRAMの構造が変わっているため、開始アドレスを4倍して処理します。


40x20モードだとこんな感じです。
この辺りはMZ-2500と余り違いはありません。
…カレンダの情報が8時間ずれてますね、後日調査しておきます。



2007/8/19
TVRAMのフォーマットの解析中です。
ぱっと見では、1文字4バイト。
1-2バイト目が漢字ROMのアドレス、3バイト目がアトリビュート、4バイト目は未使用?のようです。


電源投入直後、システムディスクの挿入を求められます


MS-DOS起動直後、カレンダの情報も取得できています。
1桁目が切れているのが気になりますが、アトリビュート関係かな?


スクロール関係が未実装なので、dirを実行すると画面が乱れてしまいます。


BASIC-M28を起動してみました。

現状はこんな所です。
スクロール関係と40桁モードが実装できたらリリースします。



2007/8/18

MS-DOSのブート直後と思しき状態です。
(TVRAMのフォーマットが不明のため、画面がぐちゃぐちゃですが)

FDCがディスクから読み込んだデータがDRAMで転送されて、そっちに処理が移るようになりました。
TVRAMの内容をダンプして解析して、画面モード決め打ちで表示出来るようになるまでもう少しですね。



2007/8/16
MZ-2800エミュレータの開発に着手しました。
先延ばしになっていた86系マシンの第一号です。
まだ画面が出るところまですらいっていませんが、解析資料とソースだけ公開しておきます。