今日のテーマ   日々改造 (^_^;)         
[記事リスト(ツリー表示)]  [ 返信 ]   [新着記事] [最新50] [ワード検索] [過去ログ]

タイトル xc のバグと対策
投稿日: 2023/03/25(土) 18:29
投稿者konno
 番 号 10706    10701 番 文太 さんへのコメント    コメント数 1

xc のバグといえば、あむのさんの対策を思い出します。
CODEX.DEF で検索しましたが、BL2048 だと CODEX.DEFが起動しない! まいった。(>_<)
BL4096 なら起動できたので、以下に引用します。(^^;

-----------------------------------------------------------
> 06847/06847 xxxxxxxx  あむの           xc にはご注意!
> (15)   97/07/10 07:56  06827へのコメント

 変数 xc にはよく知られたバグがあります。
 
    (1)  32,767 byte の前後にかかる後ブロック(注)で xc の値が 0 となる
        
        ファイル   32767      65536     65K+32767       (byte)
        +------------+----------+--- .... ---+---------- ......
                  ・========*               ・====*
                    blk                     blk
                                        (*印がカーソル位置)
 
        本来ならば xc == 1 。
        
    (2) 文字境界ブロック (mb==2) 限定のバグ
        ・ファイル先頭行にブロックがかかること。
        ・前ブロック(注)であること。
        ・カーソルカラム数がブロック終端のカラム数(wa..51)より小さい。
 
        この場合、xc の値が 0 となる。(本来はxc == -1)
        
        (例) ファイル先頭
        +-------------------------------+
        |   *===========================|
        |======・    blk                 |
        |                               |
                    (*印がカーソル位置)
        
    (注)  前ブロック      カーソルがブロックの前の場合(xc:-1)
            後ブロック      カーソルがブロックの後の場合(xc:1)
 
 ですから、上記バグの条件にあたらないことが明確ならば、xc は有用です
が、それ以外の場合には使わない方が良いかと思います。
 
            *               *               *
 
 xcの代替手段としては、マーク機能(&#M(n))をブロック前後で使って、その
マークの値を比較するというのが一般的ですが、これまたちょっと問題を孕ん
でいます^^;。
 というのは、純正Vzには、ロング整数を比較する&Lcという関数にも著名
なバグがあって、使えないのです(榊原さん版Vzは修正されています)。
 
 というわけで、自力ですると、例えばこんな↓ふうになります。
 FGALPK Mes13 #02168 94/12/17 y.mikome さん ご紹介の方法に若干手抜き
したものです。
 
=Test
カーソルをブロックの前にする。
マーク#0  wa+126 (wa..63,wa..64)
マーク#1  wa+130 (wa..65,wa..66)
* M
89 ^\ ""
    ?.(mb)??.
    #M #B &#M(1) #B p$8000,     ;ブロック前後でマークする(位置は元に)
    (wa..64 > wa..66 || (wa..64 == wa..66 && p+wa..63 > p+wa..65) )?#B
*

ここまで -----------------------------------------------------------
 
私は xc を使ったこともなく、よくわかっていなかったのですが
今このマクロを見ると、なんとなく読める気がします。(気の精)

# 読める! 私にも読めるぞぉ! ララァ

06858番の発言では
-----------------------------------------------------------

 あ、いえ、ブロックのサイズの問題ではないのです。ファイルサイズとブロ
ックの位置の問題なんです。
 百聞は一見に如かず、ということでこの↓マクロを実行して xc の値を確か
めて下さい。
 
=Test
巨大なファイル(例えばログファイル)上で実行して下さい。
* M
80 ^\ ""
    ?.mb0,&d
    &Im(wa+126,0) wa..63=$7FFF,
    #U #< #b #> #d
    &m("xc:%d",xc)
*
 
 また、幸い?なことにバグは xc==0 のときだけのようですから、その時は
実行させず、警告メッセージを出すだけにしても良いかもしれませんね(特に
今回のマクロの場合は、バグでない xc==0 の時も実行させる必要もなさそう
ですから)。

ここまで -----------------------------------------------------------

これを踏まえて、気が向いたら調べてみたいですね。(無責任モード)

    - No.10706 一括表示へ   -   コメント元:10701 一括表示へ  -    [ 返信 ]    [引用無し] pre


- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
10682.VTDOS+EMS+VZでの不具合検証 - konno 23/03/21-13:13
  ┣10683.現状のVTDOSを安全に使用する為の設定 - konno 23/03/21-13:15
  ┗10684.検証、[ESC]I マクロでとしきさんの生ログデータの情報 - konno 23/03/21-13:18
   ┣10687.それは1年前の野ざらし言から始まった - konno 23/03/21-22:55
   ┣10694.Re: 検証、[ESC]I マクロでとしきさんの生ログデータの情報 - 文太 23/03/24-00:06
   ┗10697.Re^2: 検証、[ESC]I マクロでとしきさんの生ログデータの情報 - konno 23/03/24-20:33
    ┣10698.Re^3: 検証、[ESC]I マクロでとしきさんの生ログデータの情.. - 文太 23/03/24-22:49
    ┗10700.Re^3: 検証、[ESC]I マクロでとしきさんの生ログデータの情.. - めざら 23/03/25-10:35
     ┗10701.Re^4: 検証、[ESC]I マクロでとしきさんの生ログデータの情.. - 文太 23/03/25-11:54
      ┣10702.Re^5: 検証、[ESC]I マクロでとしきさんの生ログデータの.. - めざら 23/03/25-13:28
      ┗10703.Re^6: 検証、[ESC]I マクロでとしきさんの生ログデータの.. - としき 23/03/25-14:11
       ┗10704.Re^7: 検証、[ESC]I マクロでとしきさんの生ログデータ.. - めざら 23/03/25-16:07
        ┗10705.ゴミ - 文太 23/03/25-16:48
         ┗10707.Re: BL8192 は #BでCPズレの可能性 - konno 23/03/25-18:41
      ┗10706.xc のバグと対策 - konno 23/03/25-18:29
       ┗10713.Re: xc のバグと対策 - 文太 23/03/26-15:47
        ┗10717.Re^2: xc のバグと対策 - konno 23/03/26-23:54
         ┗10719.Re^3: xc のバグと対策 - 文太 23/03/27-00:21
  ┗10699.Re: VTDOS+EMS+VZでの不具合検証 - konno 23/03/24-22:54
   ┣10708.Re^2: 良い知らせ - konno 23/03/25-18:48
   ┗10730.EK+ で BL3072 の時の挙動 - konno 23/03/28-00:41

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)   [引用無し]
おなまえ 
Eメール 
タイトル 
メッセージ auto soft pre(図表、プログラム) ※折り返さずに改行を入れてね
 参照先 
 暗証キー (英数字で8文字以内)
 プレビュー          

- 以下のフォームから自分の投稿記事を修正・削除することができます -
   処理   記事No   暗証キー
    [ページトップへ] [管理用]