(9850)
9850:
SHADOW.DEF 関連の備忘録
投稿者:
konno
2020/10/15(木) 01:14
コメント数 1
#9811 からのツリーで話題にしていますが
SHADOW.DEF がVTDOS上のVZk(私の環境)で問題が出たので
何が悪いのか、ちょっと調べてみました。
62kのファイルと、103kのファイルで、各種VZで実行してみました。
簡易調査の結果
oVZ と、tVZ と、sVZ は、どちらも問題なく実行できました。
cVZ と、VZex は、62k のファイルは問題なく実行できました。
103k のファイルは SHADOW.DEF 実行でVTDOSが落ちます。
kVZ は、62k のファイルは SHADOW.DEF 実行で他のマクロがおかしくなります。
103k のファイルは SHADOW.DEF 実行でVTDOSが落ちます。
うう、kVZ がバグってるということか〜 (>_<)
もしかしたら、マクロの変数が SHADOW.DEF とかぶっているのかもと今思いつきました。
これから色々調べてみようと思います。
- No.9850 -
このTreeへ
[リストへもどる]
soft
(9850)
9854:
Re: SHADOW.DEF 関連の備忘録
投稿者:
めざら
2020/10/16(金) 00:02
参照先:http://mezala.la.coocan.jp/
9850 番 konno さんへのコメント コメント数 1
SHADOW.DEF が弄っているのは,テキストレコードだけですよね。
いくらなんでも,テキストレコードがずれているとは考えにくいのですが…
弄るというか,トリッキーな感じがするのは,入れ替えて書き換えての繰り返し。
テンポラリファイルとかの関係かと思っていました。
自分の環境だと結構危ういという感じを常に持っていて,
少し大きなファイルを VZ で編集することは,近ごろは避けています。
あっという間にテンポラリファイルが破壊されるんですよ。
以前からそういうことってありましたけどね。(tVZの登場以前から)
そもそも,起動した途端に落ちるということであれば,ファイルの破損は生じませんよね。
konnoさんの編集ファイルが半分失われたというのと,少し異なる現象のように思います。
- No.9854 -
このTreeへ
コメント元:9850 へ
[リストへもどる]
soft
(9850)
9857:
Re^2: SHADOW.DEF 関連の備忘録
投稿者:
konno
2020/10/16(金) 21:59
9854 番 めざら さんへのコメント コメント数 1
> SHADOW.DEF が弄っているのは,テキストレコードだけですよね。
> いくらなんでも,テキストレコードがずれているとは考えにくいのですが…
どうやら私の環境ではマクロがバッティングしているようです。
SHADOW.DEF は常駐マクロですが、その作業中に十分割マクロを使うとおかしくなるようです。
古の三VZは流石に堅牢で持ちこたえたということでしょうか。
> そもそも,起動した途端に落ちるということであれば,ファイルの破損は生じませんよね。
> konnoさんの編集ファイルが半分失われたというのと,少し異なる現象のように思います。
編集ファイルが半分失われた時は、十分割マクロは使っていなかったようです。
作業終了後にファイラーを見て半分になっているのに気が付きました。
問題がいくつか複合していたようで、汎用変数のバッティングもありました。
テストでは十分割マクロを使っていましたが、それでマクロバッファが壊れるみたいです。
今調査中です。
- No.9857 -
このTreeへ
コメント元:9854 へ
[リストへもどる]
soft
(9850)
9859:
Re^3: SHADOW.DEF 関連の備忘録
投稿者:
めざら
2020/10/17(土) 12:59
参照先:http://mezala.la.coocan.jp/
9857 番 konno さんへのコメント コメント数 1
わたしの洞察が足らず,ぜんぜん理解できないので質問よろしいでしょうか。
・十分割マクロとは?
・失われたファイルの壊れ方(前半か後半か,いずれでもないか。)は?
・SHADOW.DEF と十分割マクロを同時に使用すると,編集ファイルが壊れる?
・先日,編集ファイルが壊れた際には十分割マクロを使っていなかったのに,なぜ十分割マクロが疑われるのですか?
原因の特定には,異なる環境での情報の共有が必要かと思います。
単に,「モード型」(キー監視型)マクロ実行下で不用意に他のマクロを実行することが推奨されない,
…という結論であれば,それほど複雑な(と言うか新しい)問題ということではないと思いますが。
- No.9859 -
このTreeへ
コメント元:9857 へ
[リストへもどる]
soft
(9850)
9860:
Re^4: SHADOW.DEF 関連の備忘録
投稿者:
konno
2020/10/18(日) 20:34
9859 番 めざら さんへのコメント コメント数 1
> ・十分割マクロとは?
ああ、すみません、十分割ジャンプマクロの間違いでした。m(__)m
#1699:[ESC]+数字で十分割ジャンプ 投稿者: Konno 2006/11/09(木)
このツリーで公開したマクロで、もう14年使っているので空気みたいな存在ですね。
元ネタはDC15階の以下の記事から丸パクリで動作原理もわかっていませんでした。(^^;
;17079/17177 xxxxxxxx H岡 その3:ファイル十分割地点へジャンプ
;(15) 00/10/31 20:01 コメント数:2
;17200/17467 xxxxxxxx 和生 RE:RE*4:その3:ファイル十分割地点へジャ
;(15) 00/11/16 13:04 17194へのコメント コメント数:1
> ・失われたファイルの壊れ方(前半か後半か,いずれでもないか。)は?
編集直前と直後のファイルを比べると
2020/10/03 15:47 107,955 wforum.cgi
2020/10/03 16:20 40,602 wforum.cng
比較してみると、元ファイルの21%の763行目から
84%の3010行までバッサリとカットされてますね。
それ以外は一致しています。
比較マクロは、くらとさんの CmpTxt.def v2.01 です。
皆様の便利なマクロに感謝です。m(__)m
> ・SHADOW.DEF と十分割マクロを同時に使用すると,編集ファイルが壊れる?
私の環境での話ですが、同時使用でマクロエリアが壊れるように見えました。
> ・先日,編集ファイルが壊れた際には十分割マクロを使っていなかったのに,なぜ十分割マクロが疑われるのですか?
テストするときに十分割ジャンプマクロを使ったら不具合が出たためです。
使わなかったときは見た目の不具合が無かったために気が付かないでセーブしてしまったのです。
> 原因の特定には,異なる環境での情報の共有が必要かと思います。
今思ったのですが、もしかしたら以前にVZ.DEFなどの編集に SHADOW.DEF を使用したのかも。
色々調べていますが、VZの挙動がおかしいような気がするもので。
最近編集した基本マクロを調べてみます。
> 単に,「モード型」(キー監視型)マクロ実行下で不用意に他のマクロを実行することが推奨されない,
> …という結論であれば,それほど複雑な(と言うか新しい)問題ということではないと思いますが。
推奨されない、ですか。
それならそれでいいんですが、色々気になるところがあるのでもう少し調べてみます。
- No.9860 -
このTreeへ
コメント元:9859 へ
[リストへもどる]
pre
(9850)
9861:
Re^5: 十分割ジャンプマクロの問題点 &Id
投稿者:
konno
2020/10/19(月) 18:56
9860 番 konno さんへのコメント コメント数 1
> テストするときに十分割ジャンプマクロを使ったら不具合が出たためです。
オリジナルのVZで十分割ジャンプを使うと VTDOS が落ちてしまいます。
60k 程度のファイルなら落ちませんが、100k越えでは落ちます。
VZ.DEF や、VZ2.DEFを色々見直しましたが直りませんでした。
私はこれで混乱してしまい、PCの状態まで疑ってしまいました。
&t で追ってみると、&Id (ロング整数除算)で落ちています。
&Id を STKHLP で見てみたら、オリジナルVZではバグで暴走することがあると。
なんと、十分割ジャンプでVTDOSが落ちたのは、&Id のせいでした。(>_<)
2000年ごろのVZマクロは、既に高橋版が前提になっていたのね。(^^;
試しに
&Im(pr,n) &Id(pr,10) ;ファイルサイズをn/10分割
の乗算、除算の順番を入れ替えて
&Id(pr,10) ;除算 ファイルサイズをn/10分割
&Im(pr,n) ;乗算
除算、乗算に入れ替えてみたら、300kくらいまではOKになりました。精度も変わらない感じです。
でもそれ以上の大きなファイルだとやっぱりVTDOSが落ちてしまいます。
で、対策としてめざら資源の VZ Macro FAQ「ファイルの中間点に移動するには」から
&g("Jump n/10") n=r, (n<0 || n>10)?. &s #_ n=(ln/10)*n, &#J(n) &d
このルーチンを oVZ 分岐用に頂きました。m(__)m
精度は多少落ちますが、1Mくらいまでのファイルなら近いところまでジャンプできます。
1M以上ではファイル末尾に飛んでしまいますが、VZが落ちることはありません。
数値が32767までしか使えないからでしょう。
高橋版以前のVZは検証用にしか使いませんが、安全対策として入れました。
- No.9861 -
このTreeへ
コメント元:9860 へ
[リストへもどる]
pre
(9850)
9862:
Re^6: 十分割ジャンプマクロの問題点 #O
投稿者:
konno
2020/10/20(火) 20:46
9861 番 konno さんへのコメント
> > テストするときに十分割ジャンプマクロを使ったら不具合が出たためです。
さて、十分割ジャンプマクロには他にも不具合がありました。
SHADOW.DEF のDOC には次のように書かれています。
> 二重化されている状態でもう一度マクロの実行キーを押すと、2重化された反対側のテキストは消え、マクロは終了します。
> また、次のような状態になったときも自動的にマクロは終了します。
> (1)画面状態が全画面になったとき
> (2)別のテキストをオープンしたとき
> (3)元になったテキストをクローズしたとき
> (4)異なるテキストに切り替わったとき
十分割ジャンプマクロでは、ジャンプさせるために以下のルーチンを使用していました。
&Sp(pf,"%s%c->%lx",wa+146,9,pr..0,pr..1) ;pf=拡張タグ情報+TAB
dn[-, #O #e #m dn], ky1,#d ;カーソル行=画面上端+1行
そうです、現在編集中のファイルを拡張タグ情報付きで再オープンさせていたのです。
この場合、拡張タグ情報の場所までジャンプしますが、
「(編集中のファイル)はオープンされています」とエラー表示してVZに怒られます。
私は、DOC の説明を読んで、このルーチンが怪しいと感じたのです。
別ファイルをオープンすれば、SHADOW.DEF は終了するはずです。しかし
現在編集中のファイルを拡張タグ情報付きで再オープンさせた場合は終了しない。
ここに矛盾を感じ、これが悪さをしているのではないかと思ったのです。
外しているかもしれませんが、対策してみました。
#U (ax+$8000<$80c8 && dx==0)?>q ;. ;200 byte
これは和生さんの百分割/行番号ジャンプマクロのルーチンです。
#U なら問題なさそうと考え、全てのジャンプをこのルーチンに集約しました。
結果としては、問題は出ていないようです。
- No.9862 -
このTreeへ
コメント元:9861 へ
[リストへもどる]
pre