★ZIP圧縮されたイメージファイルを扱える(+α)のXM7 (XM7ZIP)


== 説明 ==

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

Rel2からLHA(LZH形式)タイプ書庫にも対応しました。

Rel3からEXAS-FM Compilerに対応しました。

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


XM7ZIP Rel3 (Win32版) ダウンロード


== 使用方法 ==


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

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

Rel2では*.D77(または*.T77), *.ZIP, *.LZH全てがダイアログに表示されるように変更しました。

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

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

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

3.EXAS-FM Compilerに対応している

KnowHowページにある方法を使ってEXAS-FM CompilerのROMデータを抜き出して、XM7ZIPと同じディレクトリに放り込んでおくことで使用できるようになります。ファイルが無くても起動しますが、当然EXAS-FM Compilerは使用できません。


== 動作詳細 ==

(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)ゴミ

テンポラリディレクトリに展開されたイメージファイルはイメージのアンマウント(EJECT)後も、XM7ZIP終了時も自動的に消去されることはありません。どんどん溜まっていきますので、適当なときにご自分で消されるようお願いします。

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

 


== その他(余談) ==

・UnZip32.DLL

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

・UnLha32.DLL

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

・EXAS-FM Compiler

なんとなく対応。持ってたからエミュレータでも動かしたかっただけ。実際にはほとんど使わないけど。大体コレ持ってる人どの位いるんでしょうね。整数型BASICコンパイラなんだけど、結構RunTimeが大きくて、そこそこ制限があって…簡単なプログラムならホントに10倍以上早くなるから当時はずいぶん遊んだけどね。FMでコンパイラといったら拡張KかDraco Cですよね。

 

== 改版履歴 ==

Rel1 01/01/14  初回リリース。ZIPファイルマウント可能。テンポラリフォルダ削除なし
Rel2 01/01/20  LZHファイルマウント可能。終了時にテンポラリフォルダ内の'*.?77'ファイルを削除する
Rel3 01/01/23  EXAS-FM Compiler対応