目次 |
Library Indexに戻る |
(^_-)
差分修正情報の内容は以下のとおりです。
VZIBMJについても同様です。
VzのソースコードはVzのオリジナル・ディスケットのSRC.EXEという名前の自己解凍可能な圧縮されたアーカイブに記録されています。これを解凍した後に当アーカイブに含まれる_SRC.COMを実行すると、ソースコードも修正できます。修正前のソースコードは拡張子が.ASMから.BAKにリネームされて保管されます。
但し、DOSをOS/2の下で動かしたDOS環境ではパッチは活性化されます。例えばパッチされたVzを普通のDOS 6.30/Vの下で使ってもパッチそのものは非活性化しており働きませんが、DOS 6.30/VをOS/2の特定DOSセッションとして起動して使っている場合には、パッチ部分が働くようにしてあります。
VzはVZTMP.$$$の他にファイラの作業用ファイル(これを介してZCOPYにパラメタを渡します)の名前を固定しています。これもマルチタスク環境では好ましくないのですが、Vzのファイラを同時に異なるタスクから実行するという使い方は私の場合、滅多にないので、これについてはオリジナルの仕様のまま放ってあります。
これも基本的にはVZTMP.$$$に対する対策と同じテクニックで解決できるはずですから、アセンブラで数行の追加で済むはずです。ファイラについても、きちんとマルチタスク対応にしない時が済まないという人は、パッチ・ソースを参考にしてアセンブルしてみて下さい。
その結果、複数のDOSセッションでVzを起動しても、それぞれのVzが生成するテンポラリファイルは全く異なる物になります。テンポラリファイルを作成するディレクトリはオリジナルのVzと全く同じ方法で決定します。
普通のDOSからパッチされたVzを起動した場合、オリジナルのVzと同様に、もしメモリが十分に確保できなければページング領域としてVZTMP.$$$という名前のテンポラリファイルを作成します。
Vzは環境変数を一般的なプログラムとは異なるかなり変わった方法で扱っています。この修正では、OS/2環境であった場合には特殊な事をせず、普通のプログラム同様に自分の環境変数領域を保持したままにしておくよう一部の処理を省いています。
ただし、これはあくまでも暫定的な措置で、表面化しにくい新たなバグを内在しています。Vzの常駐と解除を繰り返していると、常駐解除のたびにコンベンショナル・メモリが少しずつ狭くなります。-zオプションによる常駐モードで利用しない場合には、このような問題はありません。
Vzを普通のDOSで使う場合には、パッチそのものが働かないようになっているので、この問題は発生しません。
試しに、DOSウィンドウ表示プロンプトを開いて、パッチされたVzでいくつかのファイルを覗いてみてください。複数のタスクで同時にVzする時、編集しているファイル名がそのままタスクタイトルに反映されますので意外に便利です。(^_-)
ただし、OS/2ではデータをプログラムのアイコンにドラッグすると、ドラッグされたデータをそのプログラムが処理しますが、この時、Vz自身のタイトルがデータのタイトルと同一になってしまいますので、プログラムアイコンにVZIBM.COMやVZIBMJ.COMが登録されている場合には、そのアイコンのタイトルをそのまま利用するようにしてあります。
もしプログラムアイコンに登録した場合にも編集中のファイル名をタスクタイトルとして反映させるには、VZIBM.COMやVZIBMJ.COMを直接に呼び出すのではなく、それを呼び出すバッチファイルを作成して、そのバッチを呼び出してください。普通にインストールされたVzエディタのディレクトリにはVZ.BATというバッチファイルがありますので、それをそのまま使うのは良い方法です。
(う〜ん、書いた本人が読んでもわかりにくい文章だなぁ。ま、要するに、後述の「4.0 ヒント」の章を参照して、その通りに設定しておけば大丈夫です。)
DEFファイルのファイル名の小文字表示指定はタスクタイトルにも反映されます。
このタスクタイトル設定機能はOS/2の非公開ファンクションをコールしています。将来のバージョンのOS/2では正しく機能しなくなるかもしれません。
なお、今回のパッチで追加した自動設定機能を使うかどうかの設定いかんに拘らず最下行の予約機能は日本語環境のみで有効です。
オリジナル版のVzでは、VMには0〜127の値(実際にはBIOSがサポートしているビデオモード)を指定できます。もし128以上を指定するとVM0(ディフォルト)と見なされます。
パッチ版のVzでは、初期ビデオモード(詳しくはVzのマニュアルの「VM」オプションに関する記述を参照してください)と$80(=128)の論理和を指定する事ができます。
もしVM指定の2進値のビット7 ($80)がセットされていた場合には、Vzを起動したDOSセッションがウィンドウ表示の時にはLC-、全画面表示の場合にはLC+が指定された時と同じ処理をします。
例えば、Vzを最下行自動設定でビデオモード$73で起動したい場合には、VM$E3と指定します。
DOS設定ノートブックのFEPの設定でPM_FEPを選択している場合には、VzのDEFファィルのVMオプションをVM$80として、この自動設定モードを活かすようにすると良いでしょう。
またOS2_FS_FEPとPM_FEPは全画面表示の場合には、全く同じユーザインタフェースを提供するので、OS2_FS_FEPを選択している場合にはPM_FEPに設定を変更することをお勧めします。
パッチの有効範囲は既に記したように、OS/2環境下のみですが、VM指定に関する仕様の一部は普通のDOS環境もパッチを活かすようにしてあります。オリジナルのVzではビデオモード128以上は無視して「VM0」が指定されたものと見なすことになっているようですが、パッチ版ではVM指定された値と7Fhの論理積(and)の値をビデオモードとして利用します。これはDEFファイルにVM$80以上を指定した時に、同じDEFファイルを普通のDOS環境でも流用できるようにするための配慮です。
本章の以下の記述は、OS/2 J2.11のMVDMで試してみた結果に基づいています。
ただし、NameTask(Virtual DOS Machineからタスク・タイトルを任意に設定できるフリーウェア)を利用して積極的にタスク・タイトルを設定している場合には、それが優先しオート・タイトル・スイッチングは効きません。
PM_FEPとそれ以外のセッションを混在して同時に幾つも開く事の多い場合には、それぞれのセッション毎にVMオプションの指定を設定する事が望まれます。
このためには使うFEPの違いで異なるDOS_AUTOEXECを用意する方法が考えられます。
DOS/V Extensin環境ではDOS_FEPの利用が前提となっています。DOS/V Extension以外のセッションではPM_FEPを使うといった例では、VzのDEFファイルにはVM$80を指定しておき、DOS/V Extensin環境の場合のみそれを否定するために、DOSVEXT2.BAT (DOS/V Extensionをインストールするとディフォルトのこのバッチ・ファイルがDOS_AUTOEXECとして起動されるようになっています)の中で「DOSKEY VZ=VZIBMJ -VM0 $*」と設定しておくことで、毎回いちいちVMオプションを指定する必要はなくなります。(この例では、DOSKEYマクロ「VZ」が設定されない場合、すなわちDOS/V Extension以外の環境ではVZ.BATが起動され、DEFファイル内のVM指定が有効になります。DOSKEYマクロとして「VZ=VZIBMJ -VM0」が指定されている場合には、DEFファイル内のVM指定に優先してマクロで指定される「VM0」が優先されるというしかけです)。
DOSKEYを使わないもう一つの方法として環境変数の利用が考えられます。
例えば上と同じような例を考えた場合、DOSVEXT2.BATの中でDOSKEYマクロを設定する代わりに「SET VZOPT=-VM0」といった行を入れておきます。PM_FEP時に起動されるDOS_AUTOEXECではこの環境変数「VZOPT」に対しては何も指定しない(DEFファイル内にVM$80がある場合)か、あるいは「SET VZOPT=-VM$80」を設定します。
VZ本体には環境変数VZOPTを認識する機能はありません。そこで、ここでちょっと小細工をします。VZ.BATの「vzibmj %1 %2 %3 %4 %5 %6 %7 %8 %9」という行を書き換えて、「vzibmj %vzopt% %1 %2 %3 %4 %5 %6 %7 %8 %9」にしてしまえばVZ.BAT起動時に環境変数「VZOPT」を認識してもらえるようになります。
この問題を解決するためのANSI.SYSのパッチもhttp://www.vector.co.jp/authors/VA000199/os2/index_ja.htmlで公開しています(MakeV29h)。
MakeV29hに関する質問で最も多いのが、パッチあて作業に必要なQBasicが見当たらないというものです。QBasicはPC-DOSプロンプトで「QBASIC」とタイプするだけで何んの苦もなく起動できるはずです。OS/2を普通にインストールしている場合、PC-DOSプロンプトを立ち上げれば、AUTOEXEC.BATの中でQBasic.exeのあるディレクトリにpath環境変数が通っているはずです。DOS/VプロンプトやJDOSプロンプトからはQBasicは利用できませんから注意して下さい。
コンソール取り込みができなくて悩んでいて、MakeV29hのパッチをまだあてていない人は、MakeV29h.lzhもダウンロードなさるようにお勧めします。
現在、拡張属性.LONGNAMEと.TYPE対応のVzなんぞも考えていますが、これはVzのソースレベルで対応しなくても、マクロで十分に対応可能だろうと思います。今回の公開では拡張属性に係わる部分は省いています。Vzのマクロを使い慣れている人は頭の体操としてトライしてみて下さい。
先日、OS/2マガジンなんぞを立ち読みしていたら、やはりVZTMP.$$$の問題を取り上げていました。Vzを複数使いたい時には、ワーク・ディレクトリの異なるVzアイコンをたくさん用意しておけば良いなどと、たわけた事が書いてあるのには、あきれてしまいました。このような、おバカな記事が横行しているようではVzの将来は暗いですね。こまったものです。
VzはマクロだけでなくソースもいじってカスタマイズできるというDOS用の市販ソフトとしては他にあまり類を見ない利点を持っています。今回公開する個々のパッチは、ソースを比較してみればわかりますが、ほんの些細な修正に過ぎません。Vzは自分の手になじむカスタマイズがやり易いエディタなので、OS/2に移行してもエディタだけはあいかわらずVzを手放せません。
このような素晴らしいエディタと、そのソースを安価に公開して下さっているc.mos氏にこの場を借りてお礼申し上げます。m(_ _)m
Altair☆がこれまでに公開しているソフトウェアのほとんどはノートPCで開発していますが、このパッチもその例に漏れず都営地下鉄の車中で完成しました。
本当は他のプログラムを組んでいたのですが、突如として環境変数がぐちゃぐちゃになり、なんでだ?とソースを開いて、その勢いでパッチを当ててしまいましたが、いざそれをアセンブルしようとするとpathが壊れていて…。(^^;
電車の中で「うげげ」とか「Oops!」とかブツクサ言いながらアセンブラしてやつ、傍から見ると不気味だわなぁ。(^^;
今回、やはり同じような症状…「うげげ」とかブツクサ言う症状ではなく、Vzの環境変数がめちゃくちゃになってしまう症状のことです…に悩まされている人をNIFTY-Serveで見かけたので、パッチ部分のソースの体裁を整え、このドキュメントを添えて一般公開するしだいです。
このパッチはAltair☆ (NBG01720@nifty.ne.jp)がコーディングしたもので、パッチ部分の著作権は著作権法に定める原著作権者(c.mosさん)に帰属する権利を除き全てAltair☆が保有しています。
このパッチをAltair☆に無断で転載配布してはなりません。ドキュメントやソースコードの部分引用や翻訳も著作権の侵害とみなします。
また、パッチを適用したVzエディタを原著作権者 c.mos氏の承諾なく転載配布してはなりません。
このソフトウェアはAltair☆が自分で使うためにコーディングしたものです。Altair☆以外の者が、このソフトウェアの何らかの不具合に起因する損害を被ったとしてもAltair☆は一切関知しません。
利用方法に関する問い合わせのメールにはお答えしかねます。