■ MZ-700/1500 Emulator "MZ-Memories" 2001-12-16 Version (C) 2001 Takeshi Maruyama.(丸山 武志) Z80 emulation from 'Z80em' Copyright (C) Marcel de Kogel 1996,1997 http://retropc.net/mz-memories/mzmem/ はじめに --------  このソースファイルは、拙作 Windiows用 MZ-700/1500エミュレータ 「MZ700WIN」をZaurus上に移植してみたものです。MOREソフト開発者の 方々に向け、サンプルソースとして“あるがまま”で公開します。 <<<SZAB開発環境を使ってビルドが出来る方のみ使用して下さい>>> ただし、作者は一切サポート出来ません。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ このソースファイルは、商用のための使用でない限り好きなように利用して いただいてかまいませんが、 ビルド後のバイナリファイルでの再配布は禁止させていただきます。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ・本サンプルソース用に、山之内案山子様よりアプリケーション識別子  「WHK0」をお借りしています。 ・識別子の所有者である山之内案山子様の方でもサポートいたしません。  本アーカイブに関して、問い合わせる事の無きようお願いいたします。 ・本アーカイブのご利用は自己責任でお願いいたします。 ・本アーカイブ、また本アーカイブより作成されたバイナリを使用した事に  起因する全ての事柄に関して、作者及びアプリケーション識別子所有者は  責任及び義務を負わないものといたします。 ・アプリケーション識別子「WHK0」の使用は、本サンプルソースに  限ります。 ・指定機種のZaurus(MI-EX1/TR1/E1)以外での動作は保障いたしません。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ・Z80エミュレーション部分のプログラムは、Marcel de Kogel氏のz80emを使用させ  ていただいています。 何ができるの? --------------  1982年に発売されたシャープ(株)様製8bitパソコンMZ-700、1984年に発売 されたMZ-1500の動作をZaurus(MI-EX1/TR1/E1)上で再現するものです。  以下の周辺機器の機能も含まれています。  ・PCG-700  ・C-MOS RAMボード MZ-1R12(ただし、MOREを終了させた時、C-MOSの内容は   保存されません)  ・RAMファイル MZ-1R18 (MZ-1500用) 使用するには ------------  実行するには、プロジェクト一式をSZAB開発環境でビルドして、バイナリを生成 する必要があります。  完全な動作のためにはMZ-700/1500の実機から、モニタROMイメージを取り出 さなければいけませんが、 別途公開されている互換モニタROMイメージ "MZ-NEW MONITOR" (武蔵野マイコンクラブ/高田 岳治様、町田 健治様・作) http://retropc.net/mz-memories/mz700/kyodaku.html を使用することで、MZ実機が手元に残っていない方でも使用できます。 ただし、ソフトの性格上、実機に触れたことのない方が使用するには 動作させることが難しいかもしれません。ご了承ください。  また、モニタROMを特に用意していなくとも、MZ-700用純正ROMモニタ内の 「よく使われるサブルーチン」を、 完全ではないものの、MZ-Memories内のプログ ラムで処理しています。ゲームなら7割ほど動作できるようです。  MZ-Memoriesのエミュレートは完璧なものではありませんので、全てのMZ用ソフ トが動作するという保証はありません。  また、テープ/QDイメージファイルへの書き込みはサポートしていません。 必要動作環境 ------------  ・Zaurus (MI-EX1/TR1/E1)本体  ・ATAカード  ・ATAカードが読み書き出来るWindowsパソコン   が必須になります。  MZ-MemoriesはSZABお試し版を使用し作成されています。  MI-TR1+128MB CF、MI-E1+128M CF、MI-E1+64M SD上で動作確認しました。 ご注意 ------  パーソナルコンピュータ MZ−700/1500はシャープ(株)様の製品 ですが、本MOREソフトとシャープ(株)様は一切関係がございません。  内容についてのご質問などは、作者である丸山武志宛(marukun@retropc.net)に お願いいたします。くれぐれもシャープ(株)様には問い合わせることの無きよう お願いいたします。  本MOREソフトは、個人的な研究目的、趣味の範囲で作成されたもので、違法 コピーの幇助を意図するものではありません。コンバートしたROMイメージや テープイメージなどは所有者個人の責任で使用し、通信、あるいは手渡しなどで、 不特定多数に配布しないようにして下さい。そのような事が起こると、本サンプル ソースの配布が続けられなくなってしまう可能性も出てきます。 特徴、制限など -------------- ・基本的にはWindows用MZ-700/1500エミュレータ MZ700WINのZaurus移植版  ですので、MZ700WIN上で動作しないものはMZ-Memories上でも動作しません。 ・日本国内バージョンのMZ-700/1500をエミュレーションしています。 ・Zaurusのマシンパワーの都合上、「VRAM直接描画モード」で実行しないと  (特にVGAマシンでは著しく)動作速度が遅くなります。 ・MZ-80K/C/1200用モニタROM SP-1002、MZ NEW-MONITORには対応していません。 ・テープやQDイメージへの書き込み機能は対応していません。  (エラーが返ります) ・サウンド機能は実装されていません。 ・ソフトキーボードは、カナやSHIFT状態がキートップ表示に反映されません。 ・E1のキーボードには対応していません。 *以上の制限について、バージョンアップの予定はありません。 インストール ------------ 1)ATAカードのルートディレクトリ上に、PC上から\MZROMS というディレクトリを   作成し(Zaurus上ではF1:/MZROMS/になります)、その中に本アーカイブに含まれ   ているMZ700FON.TXT をコピーしてください。   MZ700FON.TXTはMZ-700の内蔵フォントデータを見た目で模した、単なるテキスト   アートファイルになっていますが、MZ-Memoriesではそれを直接利用します。 2)\MZROMS 内に、モニタROMイメージを入れてください。   使用できるROMイメージは以下のとおりです。   1Z009.ROM (4096 Bytes) MZ-700用 1Z-009A/B のイメージ   MZ1500.ROM (10240 Bytes) MZ-1500用 9Z-502Mのイメージ   NEWMON7.ROM(4096 Bytes) MZ-700用 MZ-NEW MONITORのイメージ   MZ-700用 MZ-NEW MONITORのイメージファイルは、以下のURLで無償公開されています。 http://retropc.net/mz-memories/mz700/kyodaku.html   なお、ROMイメージが無くとも、ある程度のソフトを動作させることは可能です。 3)同様に、ATAカードのルートディレクトリ上に、PC上から\MZFILES というディレ   クトリを作成し(Zaurus上ではF1:/MZFILES/になります)、テープ、QDイメージ   である*.MZTファイルをその中にコピーしてください。それらのファイルが   MZ-Memoriesで利用出来るようになります。   ※ MZ700WINで使われていた、拡張子がM12のイメージファイルは認識しませんので、    *.MZTにリネームしてからご使用ください。 4)以上で準備は完了です。プロジェクトファイルをSZAB開発環境でリビルドし、   Zaurus実機で実行させてください。 メニュー解説 ------------  EX1/TR1では「操作メニュー」をタップ、E1では「操作メニューボタン」を押すと、 メニューが表示されます。 ○「機能」タブ  直接実行・・・・・・・MZTイメージを開き、実行します。  モニタROMを使用しない「モニタROM未使用」モードにおいては、開いた後、 ソフトキーボード上の任意のキーを押せば実行されます。  モニタROMを使用する場合は、開いた直後に実行されます。  モニタの「*」プロンプトが出ている状態でないと、正常に実行されない事があります。  テープファイル・・・読み込み可能なカセットテープとして認識させるMZTイメージを            選択します。    QDファイル・・・・読み込み可能なクイックディスクとして認識させるMZTイメージ            を選択/イジェクトします。    リセット・・・・・・MZをリセットします。    終了・・・・・・・・MZ-Memoriesを終了します。 ○「設定」タブ  モニタROM・・・・使用するモニタROMと、動作モード(700/1500)を選択します。            F:/MZROMS/内にインストールされているROMの一覧が表示            されます。            初回起動時は「モニタROM未使用」、MZ-700モードで動作し            ます。    PCG−700・・・MZ-700モード時のみ有効。トグルでON/OFFになります。    動作設定・・・・・・MZ-Memoriesの描画方法などを選択します。            描画フレームの設定/API描画/VRAM直接描画から選択            できます。            (デフォルトはAPI描画ですが、VRAM直接描画を推奨し             ます。)    決定ボタン割当・・・決定ボタンを、MZのどのキーに対応させるかを選択できます。  戻るボタン割当・・・戻る(逆送り)ボタンを、MZのどのキーに対応させるかを (MI-E1では逆送り)  選択できます。            キー一覧は、「ゲームでよく使われる」と思われるものに            絞ってあります。 MZのキ−入力方法 ------------------  画面下部のソフトキーボードを使用します。  ソフトキーボードは、カナやSHIFT状態が、キートップ表示に反映されません。  (これは仕様です)  また、スクロールボタンがカーソルキーに、  決定ボタンがスペースキーに(「決定ボタン割当」で変更可)  戻る(MI-E1では逆送り)ボタンがシフトキーに  (「戻る(逆送り)ボタン割当」で変更可)  それぞれ対応しています。 選択されているモニタROMによる、起動画面の違い ------------------------------------------------ ○MZ-700 / モニタROM未使用 選択時  青地に白文字で、 ** MZ−MEMORIES **■←カーソル  のような画面になると思います。    この状態では、ソフトキーボードから何をいれても、 ** MZ−MEMORIES ** ** MZ−MEMORIES ** **  MZ−MEMORIES **■←カーソル と表示がされますが、それは正常な動作です。 「直接実行」でMZTイメージを決定後任意のキーを押すことで、プログラムが実行 されます。 ○MZ-700 / MZ-700 NEW MONITOR  青地に白文字で、  MZ−700 *■←カーソル  と表示され、この状態でコマンドを受け付けます。  コマンドの使用法については、別途配布されている MZ-NEW MONITORのドキュメント を参照してください。 ○MZ-700 / 1Z−009A/B  青地に白文字で、 **  MONITOR 1Z−009A  ** *■←カーソル  と表示され、この状態でコマンドを受け付けます。  コマンドの使用法については、MZ-700 OWNERS MANUALを参照してください。 ○MZ-1500 / 9Z−502M  青地に白文字で、画面中央に  Make ready QD    Please push key    F:Floppy disk  Q:Quick disk  C:Cassete tape  M:Monitor  と表示され、IPLが起動します。  使用法については、MZ-1500 OWNERS MANUALを参照してください。 レジューム ------------  実行中にホームインデックスボタンを押すとインデックス画面に戻りますが、 再度MZ-Memoriesを実行すると、中断した状態から再開されます。 参考URL ----------  MZ-700/1500に関する情報、関連ソフトウェアの入手などは、以下のURLが参考に  なると思います。  http://retropc.net/mz-memories/mz700/ -------------------------------------------------------------------------------- ■MZ-700/1500ユーザーの方への解説 ROMモニタイメージの取得に必要なもの -------------------------------------- ・MZ−700(またはMZ−1500)の実機 ・MZ−700用のアプリケーションがセーブされたカセットテープ ・データレコーダ(ミニコンポやラジカセでは、うまくロード出来ない事が多いです) ・Windowsが動作する、サウンド機能とライン入力端子があるパソコン ※ ROMイメージについての個別の質問には一切お答えできません。   各自の責任で行ってください。 実機をお持ちでない方は、   別途公開されている、MZ NEW-MONITORのイメージか、「モニタROM未使用」   モードで動作させるようにして下さい。   また、ご自身が実機を所有していないバージョンのROMイメージで   動作させる事はしないで下さい。 ROMモニタイメージの取得方法 ------------------------------  ROMモニタイメージを入手するには、まず、700実機のROMモニタ上で *S00000FFF0000 ^^^^^^^^^^^^^ と入力し、ROMエリアをテープにセーブして下さい。  そのテープを、別途配布されている'tapeload.exe'などのWindows用ツールを使用 して、PC上のファイルとして変換します。  tapeload.exeの場合は、取り出したファイルイメージはout.datという名前で作成 されるので、それを1Z009.ROMという名前にリネームして使う事になります。 ^^^^^^^^^  MZ-700 OWNER'S MANUAL(説明書)をお持ちなら、巻末にモニタのソースリストが 掲載されていますので、そのバイナリコードを入力するという方法もあります。  MZ−1500をお持ちの方も、1500のモニタ上で0000〜0FFFを テープにセーブし、それをファイル化する事で、ご利用いただけます。  その場合、先頭の3バイトを C3 4A 00  と書き換える必要がありますのでご注意下さい。 MZ1500.ROMの構成 ---------------- ROM1 ($0000-$0FFF) ROM2 ($E800-$FFFF) を、PCファイルイメージ化し、ROM1+ROM2という形のバイナリを'MZ1500.ROM'と いう名前で用意して下さい。ファイルサイズは10240バイトです。 MZ1500.ROMを作成したら、先頭3バイトの内容が C3 00 E8 であるかを確認してください。 MZ1500.ROMを作成するときに、間違えて1Z-009Bの先頭部分にパッチを当てたものを 使ってしまうと、1Z-009Bが起動することになります。 なお、ROMモニタイメージの取得方法や、ファイルの作り方などに関しては、 MZ-Memories自体がある程度のスキルを持った方に向けたプログラムという事で、 こちらではお答えできません。ご了承ください。 MZ-80K/C/E/1200をお持ちの場合 -----------------------------  MZ-Memoriesでは、MZ-80K/C/E/1200には対応しておりません。 -------------------------------------------------------------------------------- ■テープファイルイメージについて  DOSファイル名の拡張子『MZT』として作成します。  ファイル構造は、テープ上に記録されている128バイトのヘッダと データ本体を、そのまま連結しただけのものです。  添付のtapeload.exeで作成される header.dat,out.datの2つのファイルを COPY /b header.dat+out.dat mzfile.mzt ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  のように連結すれば、エミュレータで使用出来るファイルになります。 拡張子は*.MZTとして下さい。  mappy.mztの後に、crt.mztがロードされなければいけない場合は、 COPY /b mappy.mzt+crt.mzt mappyall.mzt ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  のように、2つのファイルを連結したものを使用すればOKです。  タイムトンネルなどの、途中でテープの入れ替えが必要になるソフトは テープの入れ替えを要求されたら、メニューから「テープファイル」を選 択し、要求されているテープのファイルイメージを選択してから、 ソフトの指示に従って下さい。  MZ-1500で使用するQDイメージの場合も上と同様に、複数のファイルを 一つに連結したものが使用できます。 ----------------------------------------------------------------------------- S-BASIC (1Z-007B), HuBASIC上でのLOAD命令サポート ------------------------------------------------  お手持ちのS-BASIC,HuBASIC,SP-5030 V1.0Aをイメージ化したファイル(*.mzt)の 「ヘッダ部分」に以下のパッチを当てることにより、BASIC上でファイルアクセスが 可能になります。 ■ S-BASIC 1Z-007Bの場合 00000040: 50 41 54 3A 21 12 0C ED F4 03 ED F4 04 ED F4 01 00000050: ED F4 02 FF FF 00 00 00 00 00 00 00 00 00 00 00 ■ HuBASIC の場合 00000040: 50 41 54 3A 3B 12 0C ED F4 07 ED F4 08 ED F4 05 00000050: ED F4 06 FF FF 00 00 00 00 00 00 00 00 00 00 00 ■ SP-5030 V1.0A の場合 00000040: 50 41 54 3A 49 40 03 ED F0 01 69 40 03 ED F0 02 00000050: FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 MZ-1500 QD-BASIC(MZ-5Z001)でのLOAD命令サポート ----------------------------------------------  BTX形式のBASICプログラムへの読み込み動作は確認出来ていますが、OBJ形式は未確 認、BSD形式は非対応です。  なお、tapeload.exeでイメージ化した、MZ-1500用BASICファイルのヘッダ部の 先頭1バイト目が $05 になっているようですが、そこを $02 に書き換えないと ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ BASIC上で正しく認識出来ませんのでご注意ください。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  お手持ちのBASIC MZ-5Z001をイメージ化したファイル(*.mzt)の「ヘッダ部分」 に以下のパッチを当てることにより、BASIC上で、QD上でのファイルアクセスが 可能になります。 ■ MZ-1500 QD-BASIC MZ-5Z001の場合 00000040: 50 41 54 3A BD 3E 03 ED F2 03 FF FF 00 00 00 00  自前でパッチを当てるほかにも、すでにパッチ済みの128バイトのファイルヘッダで ある、1Z007B.HED (S-BASIC用), HUBAS700.HED (HuBASIC用), SP5030A.HED (SP-5030 V1.0A用),MZ5Z001.HED (MZ-1500 QD-BASIC用) を 別途配布されているアーカイブ tapeload.lzh 内に含めてあります。 tapeloadでイメージ化する際に、header.datの代わりに使用できますのでご利用ください。 9Z-502M、MZ-5Z001動作時のQDの扱いについて ----------------------------------------- 1つのmztファイルを1枚のQDとみなします。 複数のファイルが連結されている場合は、モニタのDirectoryコマンドで、 全てのファイルが見えます。  *.mztファイルを、「QDファイル」メニューで指定すると、そのファイルをQDと みなしてアクセスされる事になります。 【注意】QDへの書き込みについて  書き込みやフォーマットについては、サポートされていません。  書き込もうとした場合、内部的にWrite Protect Errorを返します。  MZ-1500のソフトはQD(クイックディスク)に記録されているため、 エミュレータ上で動かすには一旦テープにコンバートして、tapeload.exeで ファイルイメージ化する必要があります。 MZ-1500モードでの注意 ---------------------  MZ-1500モードで9Z-502Mを使用する際、C-MOS RAMボード MZ-1R12の サポートは無効になります。9Z-502Mが、C-MOS RAMボードから空のデータを読み込んで BOOTしようとするため、C-MOSのデータが空だった場合に誤動作しているように 見えるためです。MZ700.ROMでの1500モード動作時は、C-MOSは有効です。 参考文献 -------- SuperHプロセッサ(CQ出版社 様) Special Thanks -------------- "MZ-Memories"を作成するにあたって、ZaurusのUI周りの処理作成時に 「あかね」 for Zaurus(けんじょ氏・作)のソースリストを参考にさせていただき ました。また、ソース公開になるまでさまざまな面でZaurusコミュニティの皆様に お世話になりました。 皆様にはこの場を借りてお礼申し上げます。 更新履歴 -------- 2001-12-16 ソースリスト公開 2008-02-11 ソースリスト再公開 ---- ご不明な点があれば下記までお願いします。 連絡先:mz-memories@retropc.net