★ZIP圧縮されたイメージファイルを扱えるXM7(V2) ZIP Rel2      (XM72ZIP2)

ここのページの説明はXM7ZIP(V1)のページからパクってきているので、文章がそっくりですが、気にしないでね(^^;

== 説明 ==

XM7ではディスクイメージとしてD77形式(D88形式コンパチブル)と2D形式を扱うことが出来ます。また、テープイメージとしてT77形式のファイルを扱うことが出来ます。
イメージファイルがそれなりに数が集まってくるとやはり圧縮して保存しておきたくなります。
圧縮しておくと、イザ使おうというときにいちいち展開(解凍)してから使用しなくてはならず、けっこう面倒なものです。
そこで、ZIP/LHA圧縮されたファイルでもマウントできるようにXM7(V2)を改造したものがこのXM7ZIPです。
ZIP/LHAファイルの解凍には、「統合アーカイバプロジェクト」のUnZip32.Dllおよび、UnLha32.Dllを使用しています。

Rel2から、Z80カードをサポートしました。Z80CPUコアはMarat Fayzullin氏の開発された"fMSX"用の物を、許可を得て使用しています。

XM7ZIP(V2)はXM7 V2.5L10のソースを元に改造した物です。

XM7 V2 ZIP Rel2が含んでいるZ80 CPUコアは商用利用が許可されておりません。従いまして、本エミュレータの商用目的の利用はできません

UnZip32.DLLは企業内での使用をはじめとする商用に関しては有償(ライセンスフィーが必要)らしいのでご注意ください。

XM7ZIP(V2)はEXAS FM BASIC COMPILERには対応していません。今のところあまり対応する気はありません。


XM72ZIP Rel2 (Win32版) ダウンロード


== 使用方法 ==


基本的にオリジナルXM7(V2)と同じ操作で使用できます。相違点としては、

1.ディスク/テープイメージマウント時のコモンダイアログで、デフォルト拡張子を"*.ZIP;*.LZH"に変更

2.サーチパスの通っている場所にUnZip32.Dll/UnLha32.Dllがあると、圧縮ファイルをマウントできる

3.Z80 CPUカードをサポートしている(富士通製CP/M80 V2.2 L2.0が起動できる)

UnZip32.Dll/UnLha32.Dllは、先の「統合アーカイバプロジェクト」のホームページをはじめとするさまざまな場所で入手可能です。DLLはダイナミックリンクしてあるので、無くても起動は出来ますが、ZIP形式のファイルのマウントは行えません(通常のXM7としては動作可能)。この話が良く分からないという人は、とにかくXM7ZIPと同じディレクトリにUnZip32.DLL/UnLha32.Dllを置いておいて下さい。

UnZip32.Dll/UnLha32.DllはXM7ZIPの実行には必須ではありません。使いたい圧縮形式に対応したDLLのみがあればOKです。もちろん両方インストールしておけばどちらでも使用することが出来ます。

CP/M80は富士通製の「FM-77 Z80カード(MB28021J)」添付の「CP/M80 V2.2 L2.0」での起動を確認しています。これ以外のCP/Mの起動は確認しておりません。


== 動作詳細 ==

(1) 実際の動作

1.ファイルマウント時に拡張子を調べ、'.ZIP'であればZIP圧縮ファイルとして処理をし、'.LZH'であればLHA圧縮ファイルとして処理する

2.ZIPファイル中の'*.D77'もしくは'*.T77'ファイルを検索し、最初に一致したファイルをテンポラリディレクトリに解凍する
このため、一つの書庫内に複数のイメージファイルが入っていた場合、どれがマウントされるかは分かりません(オィオィ)。UnZip32.Dll/UnLha32.DllのFindFirst関数の動作によって決まってきます。

3.XM7には何事も無かったように、2.で解凍したテンポラリディレクトリにある'.D77'/'.T77'ファイルのファイル名を渡す(すげ替える)

 

(2)テンポラリディレクトリ決定方法

1.環境変数"TEMP"があるばあい、それを使用する。無ければカレントディレクトリ

2.(1.)で決定したディレクトリの下にXM7UNZIPというディレクトリを作成する。これをテンポラリディレクトリとして使用する

このため、CDなどに焼いてあるZIPイメージを実行するには環境変数"TEMP"にHDD上のディレクトリを指定しておく必要があります。指定の方法はWin9x系かNT系かによって違います。ここではそこまで説明し切れませんので割愛させていただきます。一応Win9x系の場合だと、c:\autoexec.batの最後に

set TEMP=C:\TEMP

のような記述をしておけばOKではないでしょうか(未確認)。

 

(3)書き込みデータ

XM7ZIPは前述のように、テンポラリディレクトリに展開したイメージを使用して動作しています。展開はイメージマウント毎に行われます(上書き)。このため、ディスクに書き込みを行うようなイメージはZIP形式で扱わないで下さい。書き込みデータは書庫ファイル内のデータに反映されません。XM7ZIPは書庫ファイルに対する書き込みを一切行いません。

 

(4)ゴミ

XM7ZIP終了時にテンポラリフォルダ内の'*.?77'ファイルは削除されます。ゴミはたまりません。テンポラリフォルダそのものの削除は行いません。また、書込み禁止になっているファイルは削除を行いません。

 


== その他(余談) ==

・Z80 CPUコア

もっとも有名と思われるMSXエミュレータ"fMSX"の作者Marat Fayzullin氏の作成したZ80コアを利用しています。氏にはメールにて使用許可をお願いしましたが、あっというまに快い返事が返ってきてびっくりしました。すばらしいZ80コアの利用を快く了承していただき、有り難う御座いました(←って書いても氏には読めないんだろうな…いずれ英語でも書きますが…)
このCPUコア、MAME用なんかと違ってシンプルにできていてホントにXM7にくっつけるのが楽でした。

・CP/M80 V2.2 L2.0

FM-77用とのことなんですが、どうやらFM-7版とも違う製品のようです。起動プロセスの途中で$FD93番地に$01を書き、BOOT ROM領域をRAMとして利用しています。この機能は本来FM-77L4やFM-77AV以降の機種が持ってる機能だと思ってたんですが…これが正しいとすると、このCP/MはFM-7では動かないことになります。と、言うわけで、FM-7版とFM-77版は違うんじゃないかな〜なんて思ってます。
いずれにしても、FM-7版も起動できるはずです。Z80カードの実装は小細工なしで、モノホンと同一仕様になっていますから…

・UnZip32.DLL

これは、Niftyのフォーラム(かな? CUG?)で進められている「統合アーカイバプロジェクト」の中の成果物です。shoda T.さんをはじめとする、Zip/Unzip32.dll開発関係者各位に厚く御礼申し上げます。

・UnLha32.DLL

こちらも、「統合アーカイバプロジェクト」の中の成果物です。オリジナルLHAの作者吉崎さん、Miccoさんをはじめとする、UnLha32.Dll開発関係者各位に厚く御礼申し上げます。

== 改版履歴 ==

Rel1 01/03/24  初回リリース。ZIP/LZHファイルマウント可能
Rel2 01/05/25  Z80CPUカードサポート