台風が直撃でまだ強風が吹いていますが・・・
QVIEW.DEF は、ファイラーでカーソル位置のファイルの中身を表示してくれる
高橋さんの超絶マシン語マクロです。
和生さんがファイラーコマンドを通してくれるように改造してくれて以来
愛用しています。
私もLFNの改造して、VZマクロの部屋に UP したのが、QVIEW_K.LZH 06-09-03
それが、いつの間にか不具合が出るようになって使わなくなっていました。
2015年からまた弄り始めていましたが、不具合は解消せず。
諦めかけていたところ、今回のカレンダーマクロの不具合で VZIBMJ.COM
を戻したんですが、不具合は解消せず。
それで、色々弄っているうちに、#W で表示が直ったような気がしたので
もしかしたら、ファイラーで &z を使った時の不具合かもと思い
76 ^J [F09] "行挿入"
; ?.
(s==3)?{ &z("QVIEW") #W #W >* } ; QVIEW.DEF 3681
(s>0)?.
このように、&z の後に、#W #W ファイラーウインドウの切り替え2回で元に
戻してから >* でマクロ実行させたら、正常になりました。げげ。
これは、pn..37~.0-, ; pathbufクリア と同じ効果を得ているということか。
(s==3)?{ rr-, &z("QVIEW") pn..37~.0-, >* } ;pn..37~.0-,: pathbufクリア
これでももちろん正常に動作しました。
#U ディレクトリ再読み込みでは駄目。
fv^=4,#V のファイラー再表示でも駄目でした。
私は高橋版VZが出た当初から愛用していたので、ファイラーで &z を使った
時の不具合は直っているものと思っていました。
それで、ずっと &z で使っていたわけです。
いつから不具合があったのか。
Windows7のころか。
VTDOSのころか。
今となっては調べる気もしませんが、今日の結論としては
ファイラーマクロを &z で呼ぶときは pathbuf クリアせよ、ですね。
今回の話の流れから、古のFGALDCの玉手箱を発掘しました。
以下に伝説の老師の至言を全引用します。
> 05118/05182 ******** m.gann &z()メモリエラーの解消
> (15) 97/03/01 21:59 コメント数:1
高橋さん、みなさん
ずいぶんと化石な話しだけど。^^;
メインメモリを使い切った際の、&z()がEMSを使う場合のトラブル:
・EMSを解放しないため、フリー領域がどんどん減少する
・ページフレームが書き戻されないため、ファイラーおよびEMS利用の
テキスト編集画面が乱れたり、マクロが誤動作したりする
その解消方法:(#01275より。#00754以降に関連コメント)
》 wm.21=wm.2=16, ;by.H.Takahashi
》 &z(p) (wm.21&$F0)??{
》 r[,
》 (sm)?&Em(fz)?&Em(wa..10)
》 (wm||s-3)??{#U (fg.0)?{#> #U #> }}
》 r],
》 }
》 (r)?>e
しかし..、メインメモリが半端に逼迫し、かつ巨大マクロファイルの場合、
ファイルの一部しか読み込まない、VZ元々の問題はそのまま残る..。
(saki... さんの stkhelp.def内でも指摘されている)
そこで、もう一つの選択肢として、
;------ 予備メインメモリを確保し使う(&z君にはEMSを終生使わせない)-----
・&z()がEMSを使う際に起きる問題の解消
・メインメモリ逼迫時も、マクロファイルサイズ約 32KBまで対応(Bf88時)
(ファイルサイズは先頭から末尾の「*」行までをいう。それ以降に記載され
たコメントなどは関係しない。例えば stkhelpは約 22KBとなる)
・$d00は Bfデッドライン 52KB(J5.00/V: 49KB, 5.00A: 39KB)のパラグラフ数
(Bfは起動時この値に換算される。Bf構成:Bf52+fsize(KB)+Bl(KB))
・Sk+はどのみち使えない(常駐時)
・EMSを使用しない場合にも効果
・wm==0問題は wmの常駐時初期化で対処
bf[$d00, &z(ptr) bf], >* ;by Sk-, Bf88, ..
チェックよろしく。m(^^)m
m.gann
引用ここまで ------------------------
さて、私の bf は、この書き込みを見ていたのか、bf88 になっていました。
つまり、command.com の常駐サイズ分をこれで吸収していたために、不具合が
出ていなかったのではないかと。
XP以降、command.com の常駐サイズが変わったために、bf88 で吸収しきれなく
なったのではないかというのが一つの仮説。
私がXPになったのは、2003年から。
その当時は特に不具合を感じなかったが、どこかに歪みが出ていたのかもですね。
とおもったのだけれども、
bf[$d00, &z(ptr) bf], >* ;by Sk-, Bf88, ..
こういう使い方をするという前提だと、違う話なのかなぁ。