ひとつコメントし忘れていたようです。
■テキストレコードにあるポインタ関連のダブルワード値を確認する方法
まず,以下のページを見てください。
・VZ構造体関連覚書 : テキスト構造体(テキストレコード)
http://mezala.la.coocan.jp/vz/notes/struct.html#text_structカレントのテキストであれば変数 wa の値が先頭を示す構造体があり,要素ごとに先頭からの相対アドレスが示してあります。
そのうち,以下のダブルワード値を持つグループがあります。
+110 dword tblkp block lptr ブロックマーク位置
+114 dword tnowp current lptr
+118 dword trgtp target lptr
+122 dword toldp old current lptr
これらに格納された値は,マーク(0~4)のアドレスを扱うのと同様の方法で扱えるものです。実際の意味はソースを読める人に確認していただいた方がよいかとは思うのですが,wa+110(wa..55 + wa..56)が ^B 等でブロック指定を開始した位置で間違いないでしょう。wa+114(wa..57 + wa..58)はカーソル位置ですね。三番目と四番目はよくわかりません。何かのために保存されているのでしょう。
これらをトレース中に表示させるコードを仕込んでおきます。
&t &m("tblkp: [%lxh] / tnowp: [%lxh] ",wa..55,wa..56,wa..57,wa..58)
こんな感じでしょうか。
ブロックをペーストしたのち,Ek+ ならカーソル位置がブロックの最後に更新され,Ek- の場合は #B でカーソル位置が更新されますが,これらの動作の前後に表示されるアドレスが正常か異常(ポインタがずれる)かを確認することで,なんらかの解決への道筋が見えるかもしれません。見えないかもしれません。