[HOME]  [リストへもどる]
一括表示

  表示行数切替えマクロ v0.5 - konno 23/04/24-21:57 No.10786
  ┣ Re: 表示行数切替えマクロ v0.5 - shadow 23/04/25-13:09 No.10787
  ┃┗ DOSVAXJ3版で画面にゴミが表示される? - konno 23/04/25-19:54 No.10788
  ┃ ┣ Re: DOSVAXJ3版で画面にゴミが表示される? - shadow 23/04/25-21:01 No.10789
  ┃ ┃┗ Re^2: DOSVAXJ3版で画面にゴミが表示される? - konno 23/04/25-22:50 No.10790
  ┃ ┃ ┗ Re^3: DOSVAXJ3版で画面にゴミが表示される? - shadow 23/04/26-09:26 No.10791
  ┃ ┃  ┗ Re^4: DOSVAXJ3版の仕様かマクロ不具合か - konno 23/04/26-17:19 No.10792
  ┃ ┗ DOSVAXJ3の編集画面でゴミが表示される件 - konno 23/04/26-20:35 No.10794
  ┃  ┣ Re: DOSVAXJ3の編集画面でゴミが表示される件 - shadow 23/04/27-09:31 No.10796
  ┃  ┃┗ Re^2: DOSVAXJ3の編集画面でゴミが表示される件 - konno 23/04/27-17:57 No.10798
  ┃  ┗ DOSVAXJ3で画面切り替えマクロの起動キー - konno 23/04/29-17:49 No.10808
  ┗ 表示行数切替えマクロ v0.52 DOSVAXJ3差替え - konno 23/04/26-17:25 No.10793
   ┗ Re: 表示行数切替えマクロ v0.52 DOSVAXJ3差替え - shadow 23/04/27-08:52 No.10795
    ┗ Re^2: 表示行数切替えマクロ v0.52 DOSVAXJ3差替え - konno 23/04/27-17:55 No.10797

(10786) 10786表示行数切替えマクロ v0.5  投稿者:konno   2023/04/24(月) 21:57
   コメント数 2

表示行数切替えマクロ v0.5 です。

=== ^kl.def ===
DOSVAXJ3 と VTDOS 用の表示行数切替えマクロです。
各自の環境に合わせてカスタマイズしてください。(^^;

・#if 文で DOSVAXJ3 と VTDOS 用に分けているので、高橋版以降専用です。
・コマンドラインと編集画面で使えるようになっています。
・シフト実行で、未更新の画面パラメータを合わせます。
 単独で切り替えコマンドを使った時やコンソール画面で合っていない時に使います。
・VTDOSの切り替えはコンソールのゴミが出ないようにしたので複雑になっています。


*m

80 ^KL "表示行数切替え"		;2024-04-24  v0.5

#if 98
	#66 .
;#else
;	&z("lxdspd") >*
#endif
	(s==1 || s>2)?.			;窓モードなら終了
	k=ks&1, (k==1)?{w[=vp.26, &09 .};シフト実行で表テキストの設定調整
	cx0, &s
#if AXJ3	; DOSVAXJ3	※環境変数 VZSYM=AXJ3 を指定
  (vp.26==106)?{&08 &00 &09 .}		;VT4の106*29行→vgaの80*25行
  (vp.26==80&&lc<=25)?{&08 &01 &09 .}	;80*25行→80*44行
  (vp.26==80)?{&08 &02 &09 .}		;VTの80*44行→VT2の128*44行
  (vp.26<=128)?{&08 &03 &09 .}		;VT2の128*44行→VT3の160*44行
  (vp.26>128)?{&08 &04 &09 .}		;VT3の160*44行→VT4の106*29行
  .
00:	&?("chev jp >nul") #m w[=80,	; vga     640x 480 文字  80×25
01:	&?("chev vt >nul") #m w[=80,	; svga    800x 600 文字 100×37
02:	&?("chev vt2 >nul") #m w[=128,	; xga    1024x 768 文字 128×48(44)
03:	&?("chev vt3 >nul") #m w[=160,	; sxga   1280x1024 文字 160×64(44)
04:	&?("chev vt4 >nul") #m w[=106,	; sxga24 1280x1024 文字 106×42(29)
#endif

#if VTDOS	; VTDOS		※環境変数 VZSYM=VTDOS を指定
  (vp.26>136)?{&08 &00 &09 .}		;136*35行→80*25行
  (vp.26==80 && lc<=25)?{&08 &01 &09 .}	;25行→80*35行
  (vp.26<110)? { cx1, &08 &02 &09 .}	;80*35行→110*26行	※ Win32 bug
  (vp.26<=110)?{&08 &03 &09 .}		;110*26行→136*35行
  (vp.26<=136)?{&08 &04 &09 .}		;136*35行→168*39行
  .	;Int 2F/AX=7476h/BX=0005h 画面サイズの変更
00:	w[=80, dx=$5019, &05		; 80*25
01:	w[=80, dx=$5023, >05		; 80*35
02:	&00 cx0, w110, dx=$6E1A, >05	; 110*26	※ Win32 bug
03:	w[=136, dx=$8823, >05		; 136*35
04:	w[=168, dx=$A827, >05		; 136*35
05:	ax=$7476, bx=$0005, &i($2F)	; Int 2F/AX=7476h/BX=0005h 
	(cx==0)?{(wa==0)? &?("%c",$0a)}	; #m の代わりに LF で改行しない
#endif
08:	(s!=2)? #E			;コマンドラインに
09:	(wa)?? { (s==2)?{		;編集テキストが無ければ
	ep[-, #[ #[ ep], w], .} }	;[ESC]2回で整えて終了
	(s==2)? {ep[-, #[ ep], } 	;編集モードに(シフト実行時はスルー)
	&10 (wb)?{&s #W &10 #W } w], &d ;表/裏テキストの桁,行数調整
10:	we=w, wa.55=w,  wa.56=lc-2, wa.57=lc-3, wv=w>>1, wh=lc>>1,

*

23-04-24 v0.5	VTDOSでの切り替えでコンソールのゴミが出ないように
23-04-22 v0.41	wv wh の画面分割パラメータ合わせた
23-04-21 v0.4	VTDOSのFコール版
23-04-21 v0.35	VTDOSのWin32バグ発覚、修正版
23-04-21 v0.34	wa.55 〜 wa.57 合わせアンダーラインカーソルも正常に
23-04-20 v0.2	VTDOS用も作ってみた。
23-04-08 v0.1	DOSVAXJ3用にとりあえず作ってみた。

      - No.10786 -    このTreeへ           [リストへもどる] pre


(10786) 10787Re: 表示行数切替えマクロ v0.5  投稿者:shadow   2023/04/25(火) 13:09
    10786 番 konno さんへのコメント    コメント数 1

DOSVAXJ3とVTDOS共に切替えできるようになりました。
ところでDOSVAXJ3の編集画面で何度か切替えてカーソル↓
でスクロールした後カーソル↑すると表示が四角い枠状に
消える現象がおこりました。
何かキー入力すると消えていた箇所は正常に表示されます。
konnoさんのところではおこらないですか?
      - No.10787 -    このTreeへ    コメント元:10786 へ [リストへもどる] soft


(10786) 10788DOSVAXJ3版で画面にゴミが表示される?  投稿者:konno   2023/04/25(火) 19:54
    10787 番 shadow さんへのコメント    コメント数 2

>  DOSVAXJ3とVTDOS共に切替えできるようになりました。

無事に動いたようでほっとしました。

> ところでDOSVAXJ3の編集画面で何度か切替えてカーソル↓
> でスクロールした後カーソル↑すると表示が四角い枠状に
> 消える現象がおこりました。
> 何かキー入力すると消えていた箇所は正常に表示されます。
> konnoさんのところではおこらないですか?

なんかカーソルの残骸みたいな感じのものが出ました。
128桁の時 1桁目に
160桁の時 66桁目に
160桁で一度 [ESC]E でコマンドラインに降りて戻ると 131桁目に
VRAMに何かゴミが書き込まれるんですかね?
shadowさんのところも同じような現象ですか?

CHEV コマンドを使わなくても出るようです。
どうも、xga と sxga の画面で出るようですね。
#    xga     解像度 1024× 768  文字 128×48 (44)
#    sxga    解像度 1280×1024  文字 160×64 (44)

DOSVAXJ3 が怪しいと感じたので過去のヴァージョンを見てみました。

2022/04/08  18:05         2,642,432 dosboxj.exe		現象が出ない
2023/01/23  17:33         2,643,456 dosboxj2.exe	これ以降現象が出る。

どうも、DOSVAXJ3 の問題のように思えます。
shadowさんのところで同じようになりますか?
同じなら、軟式さんに報告してみます。
引き続き検証してみます。

      - No.10788 -    このTreeへ    コメント元:10787 へ [リストへもどる] pre


(10786) 10789Re: DOSVAXJ3版で画面にゴミが表示される?  投稿者:shadow   2023/04/25(火) 21:01
    10788 番 konno さんへのコメント    コメント数 1

うちでは編集画面で160桁に切替えた後80桁*25行に変更
(大きい画面から小さい画面に変更)。
そして50行程度カーソルを下に移動^X(DOWN)。
その後カーソルを^E(UP)で1行目に移動すると表示される文字が矩形ブロックで
切取ったように文字が消えています。
何かのキーを入力すると再表示されます。
とりあえずメールで画像も送りますね。
konnoさんの現象は検証してみます。
      - No.10789 -    このTreeへ    コメント元:10788 へ [リストへもどる] soft


(10786) 10790Re^2: DOSVAXJ3版で画面にゴミが表示される?  投稿者:konno   2023/04/25(火) 22:50
    10789 番 shadow さんへのコメント    コメント数 1

shadowさん
メールに返信してしまいました。(^^;

>うちでは編集画面で160桁に切替えた後80桁*25行に変更
>(大きい画面から小さい画面に変更)。
>そして50行程度カーソルを下に移動^X(DOWN)。
>その後カーソルを^E(UP)で1行目に移動すると表示される文字が矩形ブロックで
>切取ったように文字が消えています。
>何かのキーを入力すると再表示されます。

うちでは再現しないです。
マクロ実行後だけおかしくなるのですか?
これはマクロを変更しているのですか?
そうであれば変更のソースを見てみたいです。

>とりあえずメールで画像も送りますね。

画像を見ると、cycles= auto 3000 くらいにしているのでしょうか。
うちではこれだと遅くてパラパラめくれるように動きます。

cycles= auto 50000 100% limit 100000

一度この設定で試してみてください。

      - No.10790 -    このTreeへ    コメント元:10789 へ [リストへもどる] soft


(10786) 10791Re^3: DOSVAXJ3版で画面にゴミが表示される?  投稿者:shadow   2023/04/26(水) 09:26
    10790 番 konno さんへのコメント    コメント数 1

konnoさん
お世話になっております。

>なんかカーソルの残骸みたいな感じのものが出ました。
うちでは出ないです。

>これはマクロを変更しているのですか?
VZを製品版に変更し改めてKL.DEF v0.5を掲示板からコピペして環境変数
に関する箇所はコメントにして試しました。
cycles= auto 50000 100% limit 100000に変更しました。
編集画面で160桁から80桁*25行に変更後に先の現象と違う現象となりました。
説明するより画像を見るのがわかりやすいので後ほど画像添付しメールします。
キー入力では正常になりませんでした。
根本は同じように思います。

動作条件は下記のとおりです。
DOSVAXJ3 230417版
windows 11 Home
バージョン 22H2
OSビルド 22621.1555

      - No.10791 -    このTreeへ    コメント元:10790 へ [リストへもどる] soft


(10786) 10792Re^4: DOSVAXJ3版の仕様かマクロ不具合か  投稿者:konno   2023/04/26(水) 17:19
    10791 番 shadow さんへのコメント

shadowさん,原因がわかったかもしれません。

> >なんかカーソルの残骸みたいな感じのものが出ました。
> うちでは出ないです。

CPUのスピードや 64ビットOSの特性が関係しているのではないかと感じています。
この件はまた別に検証を続けたいと思います。

> VZを製品版に変更し改めてKL.DEF v0.5を掲示板からコピペして環境変数
> に関する箇所はコメントにして試しました。

製品版はまた違う挙動があるようで、これも検証継続ですね。

> cycles= auto 50000 100% limit 100000に変更しました。
> 編集画面で160桁から80桁*25行に変更後に先の現象と違う現象となりました。
> 説明するより画像を見るのがわかりやすいので後ほど画像添付しメールします。
> キー入力では正常になりませんでした。
> 根本は同じように思います。

原因が分かったと思います。 cycles は関係ないと思われます。
もしかして、dosboxj.conf で VT4 を設定していないのではないですか。

VT4 を設定せずに、CHEV VT4 を実行すると、入力したコマンドが消えます。
そして、80*30 の VGA画面になるようです。
これは今のDOSVAXJ3の仕様かもしれません。

^KL マクロを 160桁画面で実行すると、CHEV VT4 で 80*30 になり、桁行数のパラメータが合わずに同じ現象が出ます。
恐らくshadowさんの現象もこれではないですか。

この場合、^KL マクロをシフト実行すると、桁行数のパラメータを合わせて正常になるはずです。
そのためのシフト機能です。(^^;

アンダーラインカーソルを表示していると状態が分かりやすいと思います。
しかし、問題はそれだけではないように感じました。

マクロを手直ししてみましたが、どうも思ったように動きません。
ポインタやメモリの書換が上手くいかないことがあるようです。
スペースを1つ2つ入れると正常に動作するので、メモリの書換と読み込みのタイミングが合わないのではと思いました。
それで、CPUのスピードや 64ビットOSの特性が関係しているのではないかと感じたのです。
軟式さんに報告してみます。

次の記事で、手直ししたマクロをUPします。

      - No.10792 -    このTreeへ    コメント元:10791 へ [リストへもどる] soft


(10786) 10794DOSVAXJ3の編集画面でゴミが表示される件  投稿者:konno   2023/04/26(水) 20:35
    10788 番 konno さんへのコメント    コメント数 2

> なんかカーソルの残骸みたいな感じのものが出ました。

これの原因がわかりました。

DOSVAXJ3の編集画面でカーソル↓で送っていくと、27行以降でカーソル位置が漢字だと
1行目のどこかにその漢字の片割れが表示されます。
そのままカーソル↓で送っていくと、カーソル位置が漢字の所でその漢字の片割れが等間隔で表示されます。
xga  128桁画面では32行目以降で
sxga 160桁画面では26行目以降で現象が出ます。
表示だけで実害はありません。

2022/04/08  18:05   2,642,432 dosboxj.exe   現象が出ない
2023/01/23  17:33   2,643,456 dosboxj.exe   これ以降現象が出る。

他と合わせて軟式さんに報告してみました。

      - No.10794 -    このTreeへ    コメント元:10788 へ [リストへもどる] pre


(10786) 10796Re: DOSVAXJ3の編集画面でゴミが表示される件  投稿者:shadow   2023/04/27(木) 09:31
    10794 番 konno さんへのコメント    コメント数 1

> 他と合わせて軟式さんに報告してみました。
ありがとうございます。
現象を相手様に伝えるのはなかなか難しく、奥深い内容になると私には無理なのでkonnoさんに感謝です。
そしてDOSVAXJ3がより安定し、VTDOSもアップデートされたのでVZはまだまだ使えそうです。
あっ、私が修正依頼した件は修正テスト版で直っているのでやがて正式版が出ると思います。
      - No.10796 -    このTreeへ    コメント元:10794 へ [リストへもどる] soft


(10786) 10798Re^2: DOSVAXJ3の編集画面でゴミが表示される件  投稿者:konno   2023/04/27(木) 17:57
    10796 番 shadow さんへのコメント

> 現象を相手様に伝えるのはなかなか難しく、奥深い内容になると私には無理なのでkonnoさんに感謝です。

私もボケのせいか色々いい加減なことを言って、いつ見放されてもおかしくない気がしています。(^^;;

> そしてDOSVAXJ3がより安定し、VTDOSもアップデートされたのでVZはまだまだ使えそうです。

最近の怒涛のアップデートにこちらが追いつかないほどですね。(^^;
うれしい悲鳴です。(^_^)

> あっ、私が修正依頼した件は修正テスト版で直っているのでやがて正式版が出ると思います。

やはり気が付いたことをマメに報告するのが吉ですね。

      - No.10798 -    このTreeへ    コメント元:10796 へ [リストへもどる] soft


(10786) 10808DOSVAXJ3で画面切り替えマクロの起動キー  投稿者:konno   2023/04/29(土) 17:49
    10794 番 konno さんへのコメント

> > なんかカーソルの残骸みたいな感じのものが出ました。
> これの原因がわかりました。
> 他と合わせて軟式さんに報告してみました。

軟式さんからメールが来て、この件は修正されたようです。

> echo off の改行と、xga, sxga でのゴミが出る件については修正しました。

お忙しいなか対応いただいてありがたいです。

ところで、別件で気が付いたことも報告していました。
画面切り替えマクロで、^KL の起動キーで連続実行すると
[Ctrl] キーを押しっぱなしにしていても、2度目の実行時には無視されて
編集画面に "KL" の文字が入って、マクロは実行されません。
他のマクロではこういうことは無いようです。
CHEV JP (80*25) と CHEV VT(VGA80*30) の間の切り替えでは問題ないですが
その他の画面サイズでは [Ctrl] キーが効かなくなるようです。
&w() でウエイトを長くしても変わりません。

この件も調べてもらいました。

>  画面描画周りは SDL というライブラリを使用しているのですが、描画
> 領域のサイズが変更になった場合、現在押されているキーを全て離した
> というメッセージを出す処理が入っています。
>  DOSVAXJ3 の場合 SDL 側も IME 対応の専用版を使用しているので対応
> する事は可能ではあるのですが、SDL の基本的な初期化処理の部分ですの
> で、この動作を変更するのは問題がありそうです。
>  すみませんが、現状のままという事でご了承ください。

ということで、画面切り替え時の仕様のようです。
気を付けて使っていても、うっかりテキストに文字を書き込んでしまうことはありそうです。
画面切り替えマクロの起動キーを @[F11] にすれば連続で押し続けても
カーソルが動くだけなので、これで使うようにしてみます。

      - No.10808 -    このTreeへ    コメント元:10794 へ [リストへもどる] soft


(10786) 10793表示行数切替えマクロ v0.52 DOSVAXJ3差替え  投稿者:konno   2023/04/26(水) 17:25
    10786 番 konno さんへのコメント    コメント数 1

表示行数切替えマクロ v0.52 差し替え版
DOSVAXJ3 用です。
&d を入れたらタイミング調整出来たようです。


=== ^kld.def ===

*m

80 ^KL "表示行数切替え"		;2024-04-26  v0.52

  (s==1 || s>2)?.			;窓モードなら終了
  k=ks&1, (k==1)?{w[,   w=vp.26, &09 .} ;シフト実行で表テキストの設定調整
  cx0,  ; &s
;#if AXJ3	; DOSVAXJ3	※環境変数 VZSYM=AXJ3 を指定
  (vp.26==106)?{&08 &00 &09 .}		;VT4の106*29行→vgaの80*25行
  (vp.26==80&&lc<=25)?{&08 &01 &09 .}	;80*25行→80*44行
  (vp.26==80)?{&08 &02 &09 .}		;VTの80*44行→VT2の128*44行
  (vp.26<=128)?{&08 &03        &09 .}	;VT2の128*44行→VT3の160*44行
  (vp.26>128)?{&08 &04         &09 .}	;VT3の160*44行→VT4の106*29行
  .
00:  &?("chev jp >nul") #m &d w[,   w=vp.26,	; vga     640x 480 文字  80×25
01:  &?("chev vt >nul") #m &d w[,   w=vp.26,	; svga    800x 600 文字 100×37
02:  &?("chev vt2 >nul") #m &d w[,   w=vp.26,	; xga    1024x 768 文字 128×48(44)
03:  &?("chev vt3 >nul") #m &d w[,   w=160,	; sxga   1280x1024 文字 160×64(44)
04:  &?("chev vt4 >nul") #m &d w[,   w=vp.26,	; sxga24 1280x1024 文字 106×42(29)
;#endif

08:     (s!=2)? #E			;コマンドラインに
09:     (wa)?? { (s==2)?{		;編集テキストが無ければ
        ep[-,   #[   #[   ep], w], .} }	;[ESC]2回で整えて終了
        (s==2)? {ep[-,   #[   ep], } 	;編集モードに(シフト実行時はスルー)
        &10 (wb)?{&s #W &10 #W } w], &d ;表/裏テキストの桁,行数調整
10:     we=w,    wa.55=w,  wa.56=lc-2, wa.57=lc-3, wv=w>>1, wh=lc>>1, kx=lx,

*

23-04-26 v0.52	DOSVAXJ3での切り替えの不具合に対応
23-04-24 v0.5	VTDOSでの切り替えでコンソールのゴミが出ないように
23-04-22 v0.41	wv wh の画面分割パラメータ合わせた
23-04-21 v0.4	VTDOSのFコール版
23-04-21 v0.35	VTDOSのWin32バグ発覚、修正版
23-04-21 v0.34	wa.55 〜 wa.57 合わせアンダーラインカーソルも正常に
23-04-20 v0.2	VTDOS用も作ってみた。
23-04-08 v0.1	DOSVAXJ3用にとりあえず作ってみた。
      - No.10793 -    このTreeへ    コメント元:10786 へ [リストへもどる] pre


(10786) 10795Re: 表示行数切替えマクロ v0.52 DOSVAXJ3差替え  投稿者:shadow   2023/04/27(木) 08:52
    10793 番 konno さんへのコメント    コメント数 1

> 表示行数切替えマクロ v0.52 差し替え版
対症療法で落ち着いたようなので自分用に変更しようと思います。
      - No.10795 -    このTreeへ    コメント元:10793 へ [リストへもどる] soft


(10786) 10797Re^2: 表示行数切替えマクロ v0.52 DOSVAXJ3差替え  投稿者:konno   2023/04/27(木) 17:55
    10795 番 shadow さんへのコメント

> 対症療法で落ち着いたようなので自分用に変更しようと思います。

あれからさらに変えてみました。このほうが安定すると思います。

00:  w[, w=vp.26, &?("chev jp >nul") #m &07	; vga     640x 480   80*25
01:  w[, w=vp.26, &?("chev vt >nul") #m &07	; svga    800x 600  100*37
02:  w[, w=vp.26, &?("chev vt2 >nul") #m &07	; xga    1024x 768  128*48(44)
03:  w[, w=vp.26, &?("chev vt3 >nul") #m &07	; sxga   1280x1024  160*64(44)
04:  w[, w=vp.26, &?("chev vt4 >nul") #m &07	; sxga24 1280x1024  106*42(29)
;#endif
07:     &d (w==vp.26)?? &w(10) w=vp.26,	;32ビットコマンドはウエイトが必要


色々いい加減な推測をしていましたが、32ビットコマンドは別プロセスで動くと何処かで見たような。
なのでVZは待たずに次の命令に進んでしまうのでこういうことになるのでしょう。

32ビットコマンドはウエイトが必要ということで、&w(10) を入れました。
&w(50) として画面切り替えトグルすれば、効いているのがわかります。
80*25 → 80*44 など、画面の書換面積が少ない時は、&w() をスキップしています。

      - No.10797 -    このTreeへ    コメント元:10795 へ [リストへもどる] pre