歓迎光臨
"EmuZ-80B" - SHARP MZ-80B emulator for Win32
"EmuZ-2200" - SHARP MZ-2200 emulator for Win32

These softwares are under GNU GENERAL PUBLIC LICENSE.

These softwares requires Windows 2000/XP/Vista/7.

Download: Jump to Common Source Code Project



EmuZ-80B 謎WIPページ
EmuZ-2200 謎WIPページ

一部筋のご要望にお応えして、突発的に実装してみました。
2200なのは、名前空間の都合です(苦笑)



2023/5/29
MB8877で各セクタの記録密度をチェックするようになったのに対応するため、
記録密度を指定するI/Oポートを実装しました。



2022/12/31
MZ-2200のクイックディスクのシーク音をサポートしました。
実行ファイルと同じディレクトリにQDSEEK.WAVを配置すると、モータが回っているときに再生されます。



2022/12/4

Oh!MZ 1984年10月号に掲載された、Edit.of PASOCOM Graphicが動作するようになりました。

IPLからBASICを起動したときに、Z80にリセットが掛かります。
その後、MONコマンドでプログラムのロード後、IX/IYの値を初期化しないまま参照しています。
従来、Z80のリセット処理で、IX/IY=FFFFhとしていましたが、これが原因で暴走していました。

Z80のリセット処理で、ドキュメントされていないレジスタの値がどうなるのか詳細は不明ですが、
IX/IYは、リセットで値が変わらないように修正しました。
影響範囲が大きすぎるので、他のレジスタは従来のままとしています。



2022/8/30
SFTLOCKキーの割り当てを、CapsLockキーからCtrlキーに変更しました。
コントロールコードの入力がし易くなっているかもしれません。



2018/2/25
フロッピードライブの種類として、2Dと2DDを指定できるようにしました。
また、CPUのクロックとして、4MHzと6MHzを指定できるようにしました。
MZ-2500において、ZキーまたはXキーを押しながらIPLボタンを押してやることで、
6MHzでMZ-80B/MZ-2000モードを動作した状態を想定しています。



2017/3/11
Suga様から頂いた、VGATE信号のパッチを取り込みました。
いつもありがとうございます。



2017/3/7

I-Oデータの、MZ-80B用カラーグラフィックボード PIO-3039を追加しました。
また、MZ-80B/2200で、フロッピードライブを2Dから2DDに変更しました。
Suga様から頂いたパッチを取り込んでおります、多謝多謝。

Common Source Code Project側で、シフト+Caps Lock/ひらがな/全角キーを検出できるよう修正しました。
SB-5510で、CAPS・かなロックおよび解除の操作に必要になります。



2016/2/19
グリーンモニタの色が青色になる不具合を修正しました。
動作確認後に、ちょっとコードの整理をしようとしてエンバグしてたみたいです。

また、MZ-1P17のフォントROMが、MZ-80B/2200で正しく読み込まれない不具合を修正しました。



2016/2/17
グリーンモニタ時、テキストカラーやバックカラーを反映しないように修正しました。
カラーモニタとグリーンモニタの同時接続時、左右を入れ替えられるようにしました。
ご指摘ありがとうございます>常岡様



2016/2/13

カラーモニタとグリーンモニタの同時接続をサポートしました。
カラー側でグラフィック、グリーン側でテキストと使い分けするソフトもあるようです。
(上のスクリーンショットは例としてはイマイチですが)


コモンソース側で、MZ-1P17のリセット信号を修正しました。
ストローブ操作時に誤ってプリンタをリセットしてしまっていた問題が解決しています。



2016/1/10
漢字サーマルプリンタ MZ-1P17をサポートしました。
使用するソフトに応じて、MZ-1モード、MZ-2モードを選択してください。
また、出力したデータをそのままバイナリファイルに出力するダミープリンタをサポートしました。



2015/1/19
EmuZ-2500と同様に、Z80SIO周りを修正しました。
Z80SIOの送受信クロックに、正しい周波数を指定するように修正しています。



2014/12/25
EmuZ-2200においても、ステートセーブに対応しました。



2014/12/23
EmuZ-80Bにおいて、ステートセーブに対応しました。
注意点はトップページの更新履歴をご参照ください。

EmuZ-2200の方も、後日対応いたします。
出来れば年内。



2014/12/18
8255のポートCからIPLリセットを掛ける処理が機能しなくなっていたのを修正しました。
以前、一瞬だけポートをOFF/ONした場合にリセットしないように修正した際にエンバグしていたようです。
該当部分のソースを共有しているEmuZ-2500についても、同様に修正が反映されています。

コモンソース側で、仮想マシンをリセットした後、8253が、他のデバイスが登録したイベントを
勝手にキャンセルしようとする(実際は出来ない)不具合を修正しました。
8155, uPD765Aについても、同様の不具合が存在するため、あわせて修正しています。



2014/12/16

コモンソース側で、MB8877のステータスレジスタを修正しました。
MZ-2000/2200で、HuBASICのディスクの読み書きが行えるようになっています。

HuBASICでは、コマンド実行後にステータスレジスタのNOT READYが立つことを期待しているようです。
一定回数ステータスレジスタを読んだ後、一瞬だけNOT READYを立てるようにしました。



2013/8/10
MZT形式のテープイメージを、メモリに直接ロードするか選択できるようにしました。
メニューのCMT - Load MZT to RAMがチェックされていて、IPL起動時のときに、
アトリビュートが01H、かつオフセットが0Hのときのみ、メモリに直接ロードします。



2013/4/25
データレコーダ周りを少々修正しました。

MZT形式のイメージは、IPL起動時のときに、アトリビュートが01H、かつオフセットが0Hのときのみ、
メモリに直接ロードするようにしました。
それ以外の場合は、内部的に波形データを生成して、データレコーダ経由でロードされます。
新しいソフトを起動するときは、一度IPLリセットしてからロードするようにしてください。
(というか、実機でもそうですよね)
また、MZT形式のイメージから波形生成する際、Bin2Wavと同様の波形を生成するように修正しました。

BASIC-16起動時にリセットするとデッドロックする件の対応を行いました。
リセット時に、Z80PIOとの通信周りもリセットするように修正しています。

今回の修正は、常岡さんから頂いた情報を参考にしております、多謝多謝。



2013/4/14
MZ-2000用16bitボード、MZ-1M01をサポートしました。
これで、MZ-2000エミュレータを敢えて再実装した、最大の目標が達成できました。

その他、MZ-80Bの2枚目のVRAMのサポートを行っています。
多分これで動くんじゃないかと思いますが、ご確認よろしくお願いいたします。


16bitボード用BASIC、1Z-012を起動したところ。
コモン側の新機能として、ウィンドウのタイトルにメッセージを表示できるようになりましたので、
それを使って、データレコーダの状態を表示するようにしてみました。



MZ-1M01のデモソフト。
ハードウェア構成の説明にあるとおり、Z80PIOを経由して、Z80と8088で割込みを掛け合いながら、
コマンドやデータの転送を行うようになっています。
これが動作するように、Z80PIOの双方向モード時のSTROBE/READY信号の扱いを色々修正しました。
結構色々変わっていますので、Z80PIOを使用している他機種で何か動作しなくなっていましたら、
ご報告いただけますと幸いです。

また、MZT形式のBASICのプログラムなどをロードする際は、直接メモリにロードするのではなく、
内部的に波形データを生成して、データレコーダ経由でロードするように修正しました。

EmuZ-700などでは従来から実現していたのですが、そちらで使用していた波形生成ルーチンでは、
MZ-2000/80Bではうまくロードできていませんでした。
MZ-1M01のシステムテープの波形整形をしていて気付いたのですが、どうも、ヘッダーブロックと
データブロックの間に1秒弱の無音期間が必要だったようですね。


16bitボード用CP/M-86。
純正でなく、ユーザ移植だったのかな?



2013/3/30
MZ-1R13のアドレスレジスタをインクリメントする処理を修正しました。
これで多分大丈夫かと思います。

また、IPL ROMが選択されているときにM1サイクルで1ウェイトを入れるようにしたのと、
水平表示期間中にGVRAM/TVRAMにアクセスした際にウェイトを掛けるようにしました。
水平表示期間の正しいタイミングが分からないので、仮にMZ-700と同等にしています。


以下はコモンソース側の修正です。

データレコーダで、wav形式で録音した場合、サンプル数が正しく記録されない不具合を修正しました。
昨日のバイナリで不正なwavファイルが出来てしまった場合は、RIFFとDATAチャンクのサイズを
適宜修正してください。

また、wav形式で録音する際、従来は各サンプル周期で信号がオンかオフだけを判定して、
0か255で記録していましたが、これをサンプル周期内でオン、オフになっていた期間を算出して、
其の比率に応じたボリュームで保存するようにしました。
先日実装した波形整形処理をあわせて、より正しい波長が再生できるようになります。

波形整形処理で長短2種類の波長を取得する際に、短いwavファイルの場合、1200/2400Hzの波形の
個数のバランスが良くないため、正しく波長を取得できない不具合を修正しました。

dB-BASICでSAVEした場合、末端に1200/2400Hzではない波長のパルスを出力するようです。
これが波形整形処理で消えてしまったのを修正しました。

以上の修正で、dB-BASICでwav形式でセーブしたファイルをロードできるようになっています。

また、Z80PIOにおいて、ハンドシェイクのためのREADY/STROBE信号をサポートしました。
これは、現在作業中の16bitボードのための修正です。



2013/3/29
MZ-2000について、クイックディスクのサポートを行いました。
また、MZ-1R13の漢字ROM、辞書ROMの切り替えをサポートしました。
クイックディスク対応はMZ-1500でやっていたので、今回はデバイスを追加しただけです(苦笑)

あと、昨日コモンソース側でやった修正について、ここに書いておきます。

EmuZ-2000 TF-Editionで読めてたMTW形式のテープが読めないという話がありましたので、
内部的にwavの波形を補正する仕組みを追加しました。
まず最初に波形のゼロ位置のうねりを補正をします。(前後の波形の最大、最小の平均をゼロとする)
次に、各波形の波長を正確に取得するために、8倍のサンプリングレートに変換します。
よく出てくる長短2種類の波長を取得します。(通常は1200/2400Hz)
最後に、各波形を、長短いずれか近い方の波長にあわせて整形します。

テープの読み書き時、高速化のため自動的にスキップフレームするようになっていますが、
スキップフレーム解除後も、すぐにはサウンドのテンポが安定しない問題がありました。
これを解決するために、何かしらのサウンドが出力されている間はスキップフレームをしない、
またスキップフレーム終了後は、一旦サウンド生成バッファをクリアするように修正しました。



2013/3/21
突発的に、MZ-80BおよびMZ-2000/2200エミュレータを実装してみました。
EmuZ-2000は開発が止まってしまっていますし、TF Editionが配布停止状態なので、
当面はそれらの代替用になればと。
将来的には16bitボードを乗っけることを想定しています。

テープイメージは、DAT,MZT,MTW,WAVおよび独自形式のCAS形式をサポートしています。
DAT,MZTは、直接メモリにロードしますので、32KB越えのデータでもOKです。


MZ-80Bの方は、VRAMは1枚のみ実装されています。
2枚目の切り替え方が分からないのと、実質使ってなさそうなので、まあいいか(苦笑)



MZ-2000/2200の方は、カラーモニター、内蔵グリーンモニターの切り替えが可能です。
周辺装置はMZ-1R12およびMZ-1R13が搭載されています。
クイックディスクとかの対応は、まあご要望があればということで。