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

  表示行数切替えマクロ(差し替え) - konno 23/04/20-23:37 No.10777
  ┗ VTDOSの $width コマンドのバグ? - konno 23/04/21-17:34 No.10778
   ┣ VTDOSの画面書き換え Fコール版 - konno 23/04/21-18:40 No.10779
   ┗ Re: VTDOSの $width コマンドのバグ? - shadow 23/04/23-13:10 No.10781
    ┗ Re^2: VTDOSの $width コマンドのバグ? - konno 23/04/23-15:55 No.10783
     ┗ Re^3: VTDOSの $width コマンドのバグ? - shadow 23/04/24-08:53 No.10784
      ┗ Re^4: VTDOSの $width コマンドのバグ? - konno 23/04/24-17:15 No.10785

(10777) 10777表示行数切替えマクロ(差し替え)  投稿者:konno   2023/04/20(木) 23:37
   コメント数 1

※ マクロ差し替えました。(^^;

DOSVAXJ3 と VTDOS 用の表示行数切替えマクロです。
私のノートPCの 1336*768 に合わせた個人仕様になっています。
各自の環境に合わせてカスタマイズしてください。(^^;

#if 文で DOSVAXJ3 と VTDOS 用に分けているので、高橋版以降専用です。
DOSVAXJ3用は、前回から最新版の機能に合わせて調整しています。
VTDOS用は、説明の前にまずマクロを見てください。(^^;


80 ^KL "表示行数切替え"		;2024-04-21 v0.34
#if AXJ3	; DOSVAXJ3
  (s!=2)? >h			;コマンドライン
  (vp.26==106)? { &00 .}		;VT4の106*29行→VGAの25行
  (vp.26==80 && lc<=25)? { &01 .} 	;VGAの80*25行→VTの80*44行
  (vp.26==80  )?{ &02 .}  		;VTの80*44行→VT2の128*44行
  (vp.26==128)?{ &03 .}  		;VT2の128*44行→VT3の160*44行
  (vp.26==160)?{ &04 .}  		;VT3の160*44行→VT4の106*29行
:h	(s!=0)?.		;編集モード
  (vp.26==106)?{#E &00 w[=80, &09 .}	;VT4の106*29行→vgaの80*25行
  (vp.26==80&&lc<=25)?{#E &01 w[=80, &09 .} ;25行→80*44行
  (vp.26==80)?{#E &02 w[=128, &09 .}	;VTの80*44行→VT2の128*44行
  (vp.26==128)?{#E &03 w[=160, &09 .}	;VT2の44行→VT3の44行
  (vp.26==160)?{#E &04 w[=106, &09 .}	;VT3の44行→VT4の29行
  .
00:	&?("chev jp") #m 		; vga     640x 480 文字  80×25
01:	&?("chev vt") #m 		; svga    800x 600 文字 100×37
02:	&?("chev vt2") #m 		; xga    1024x 768 文字 128×48(44)
03:	&?("chev vt3") #m 		; sxga   1280x1024 文字 160×64(44)
04:	&?("chev vt4") #m 		; sxga24 1280x1024 文字 106×42(29)
#endif

#if VTDOS	; VTDOS
  (s!=2)? >h			;コマンドライン
  (vp.26>136)? { &00 .}			;136*35行→80*25行
  (vp.26==80 && lc<=25)? { &01 .}	;80*25行→80*35行
  (vp.26==80  )?{ &02 .}		;80*35行→110*26行
  (vp.26==110 )?{ &03 .}		;110*26行→136*35行
  (vp.26==136)?{ &04 .}			;136*35行→168*35行
:h	(s!=0)?.		;編集モード
  (vp.26>136)?{#E &00 w[=80, &09  .}	;136*35行→80*25行
  (vp.26==80&&lc<=25)?{#E &01 w[=80, &09 .} ;25行→80*35行
  (vp.26==80)?{#E &02 w[=110, &09 .}	;80*35行→110*26行
  (vp.26==110)?{#E &03 w[=136, &09 .}	;110*26行→136*35行
  (vp.26==136)?{#E &04 w[=168, &09 .}	;136*35行→168*39行
  .
00:	&?("$width 80 25") #m		; 80×25
01:	&?("$width 80 35") #m		; 80×35
02:	&?("$width 110 26") #m		; 110×26  font27
03:	&?("$width 136 35") #m		; 136×35  font22
04:	&?("$width 168 39") #m		; 168×39  font18
#endif

#if 98
	#66 .
;#else
;	&z("lxdspd") >*
#endif
	.
09: #[ we=w, (wb)?{wb.55=w, wb.56=lc-2, wb.57=lc-3,} ;裏テキストの桁,行数調整
    wa.55=w,  wa.56=lc-2, wa.57=lc-3, w], &d	     ;表テキストの桁,行数調整
	


このように、コマンドラインと編集画面で使えるようになっています。
今回の目玉は編集画面の桁、行数の完全対応です。
wa.55 〜 wa.57 を合わせることでアンダーラインカーソルも含めて正常な状態に出来ました。

マクロでポインタの数値を書き変える時に、タイミングなのか、変わらない事があるように見えました。
マクロ文の間にスペースを入れたら解消したので、CPUが速すぎるのでしょうかね。(^^;
メモリの書き換えをするマクロはこの辺の動作確認した方が安心ですね。

VTDOSは、単体で起動すると、プロパティでフォントサイズを変更できます。
それを活かして、各フォントサイズで画面いっぱいに表示出来るよう設定しました。
コメント欄の font18, font22, font27 がそのサイズに合わせた設定です。
画面をはみ出しても気にせずトグルすれば 80*25 に戻ります。(^^;

※ VTDOSでは、$width などのコマンドで同じ桁、行数で2度実行すると固まってしまうのでご注意。
      - No.10777 -    このTreeへ           [リストへもどる] pre


(10777) 10778VTDOSの $width コマンドのバグ?  投稿者:konno   2023/04/21(金) 17:34
    10777 番 konno さんへのコメント    コメント数 2

何度も差し替えてもう大丈夫か、(^^;  と思ったら、何かおかしい?

  (vp.26==80  )?{ &00  &02 .}		;80*35行→110*26行

ここで画面の状態が何かおかしいのです。よく見ると(最近目が悪いので)
80*35行→110*26行になっているはずなのに、80*26行になっていました。
しかも VTDOSの画面は、80*35 のまま残っています。

$width コマンド単体で試してみました。

$width 80 35  の後で
$width 110 26  を実行すると、上記の現象になります。

具体的には、80*26 のDOS画面になっていて、VTDOS窓自体は 80*35 のままです。
VZの VP.26 の画面幅は 110  LC の行数は 26 になっています。なんで?

色々試してみると、どうやら $width コマンドのバグのようです。
幅の数値が増えて、行の数値が減る値で $width コマンドを実行すると画面幅が変わらないようです。
ということで、VTDOS用の修正をしました。

#if VTDOS	; VTDOS
  (s!=2)? >h			;コマンドライン
  (vp.26>136)? { &00 .}			;136*35行→80*25行
  (vp.26==80 && lc<=25)? { &01 .}	;80*25行→80*35行
  (vp.26==80  )?{ &00  &02 .}		;80*35行→110*26行   ★ bug?
  (vp.26==110 )?{ &03 .}		;110*26行→136*35行
  (vp.26==136)?{ &04 .}			;136*35行→168*35行
:h	(s!=0)?.		;編集モード
  (vp.26>136)?{#E &00 w[=80, &09  .}	;136*35行→80*25行
  (vp.26==80 && lc<=25)?{#E &01 w[=80, &09 .} ;25行→80*35行
  (vp.26==80)?{#E &00  &02 w[=110, &09 .} ;80*35行→110*26行  ★ bug?
  (vp.26==110)?{#E &03 w[=136, &09 .}	;110*26行→136*35行
  (vp.26==136)?{#E &04 w[=168, &09 .}	;136*35行→168*39行
  .
00:	&?("$width 80 25") #m		; 80×25
01:	&?("$width 80 35") #m		; 80×35
02:	&?("$width 110 26") #m		; 110×26  font27
03:	&?("$width 136 35") #m		; 136×35  font22
04:	&?("$width 168 39 %c",$0a") 	; 168×39  font18
#endif


このように、いったん &00 (80*25) を呼んでから &02 (110*26) を呼ぶようにしました。
この件は 10♯さんに報告しようと思います。

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


(10777) 10779VTDOSの画面書き換え Fコール版  投稿者:konno   2023/04/21(金) 18:40
    10778 番 konno さんへのコメント

VTDOSでは、$width コマンドを実行するたびに「画面サイズを変更しました。」というメッセージが出ます。
何度も画面書換を繰り返すとメッセージが連続して鬱陶しいので、Fコールを試しました。
マクロは、ローカルマクロのみ差し替えです。

	;Int 2F/AX=7476h/BX=0005h 画面サイズの変更
00:	dx=$5019, >05			; 80*25
01:	dx=$5023, >05			; 80*35
02:	dx=$6E1A, >05			; 110*26
03:	dx=$8823, >05			; 136*35
04:	dx=$A827, >05			; 136*35

05:	ax=$7476, bx=$0005, &i($2F) 
	(s)?>06
06:	(z)??&?(" ") #m
#endif


どうやら Fコールも $width と同じバグがあるようなので、メインルーチンは同じです。
Fコールの後に改行を入れているのは、入れないと画面サイズの一部が更新されないからです。
これは、VZがコマンドラインでマクロを実行する時、画面サイズ変更を想定していないためと思われます。
そのために改行を実行するのですが、非常駐の時は子プロセスに行ってしまうのでスペースを追加しています。

とりあえずこれでほぼ完全な画面切り替えが出来たと思います。(^^;

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


(10777) 10781Re: VTDOSの $width コマンドのバグ?  投稿者:shadow   2023/04/23(日) 13:10
    10778 番 konno さんへのコメント    コメント数 1

VTDOS単体だとプロパティのレガシコンソールを使用するに設定しても
枠線が乱れるので使用していなかったのですが試しに立ち上げるとなぜ
か問題なく表示されるようになっていました。
でもプロパティを弄るとフォント設定が外れて元の設定に戻すのに苦労
していたので有難いです。
でも
04:	&?("$width 168 39 %c",$0a") 	; 168×39  font18
は前の版の
> 04:	&?("$width 168 39") #m		; 168×39  font18
に戻さないと上手く動かないです。
DOSVAXJ3の方はうちでは変化しないです。
      - No.10781 -    このTreeへ    コメント元:10778 へ [リストへもどる] pre


(10777) 10783Re^2: VTDOSの $width コマンドのバグ?  投稿者:konno   2023/04/23(日) 15:55
    10781 番 shadow さんへのコメント    コメント数 1

> VTDOS単体だとプロパティのレガシコンソールを使用するに設定しても
> 枠線が乱れるので使用していなかったのですが試しに立ち上げるとなぜ
> か問題なく表示されるようになっていました。

OSの更新のせいか、こういうことが結構ありましたね。

> でもプロパティを弄るとフォント設定が外れて元の設定に戻すのに苦労
> していたので有難いです。

お役に立てたならうれしいです。

> 04:	&?("$width 168 39 %c",$0a") 	; 168×39  font18
> は前の版の
> > 04:	&?("$width 168 39") #m		; 168×39  font18
> に戻さないと上手く動かないです。

すみません、改行の痕跡も消せないかと試行錯誤していたもので。(^^;
ていうか、完全におかしなことをやっていましたね、申し訳ない。m(__)m

> DOSVAXJ3の方はうちでは変化しないです。

これは画面サイズが変わらないということですね。
(vp.26==80)? のように完全一致でのチェックでは嵌ることがありますね。
順にトグルさせているので、不等号でチェックしたほうが良さそうですね。

追記

※環境変数 VZSYM=AXJ3 は設定されていますか。
#if AXJ3	; DOSVAXJ3 

VTDOSでは動いているなら指定はしているのかな?
最初の版で、VP.6 を使っていましたが、VP.26 が良いです。
うーん、あとは、現在の VP.26 をチェックしてみるとか?
      - No.10783 -    このTreeへ    コメント元:10781 へ [リストへもどる] pre


(10777) 10784Re^3: VTDOSの $width コマンドのバグ?  投稿者:shadow   2023/04/24(月) 08:53
    10783 番 konno さんへのコメント    コメント数 1

> ※環境変数 VZSYM=AXJ3 は設定されていますか。
> #if AXJ3	; DOSVAXJ3 
設定済みです。
> 最初の版で、VP.6 を使っていましたが、VP.26 が良いです。
最初の版で変更できなかったのは高橋版にLFN対応のパッチを当てたVZを使用していたためでした。VZK07S05で変更できました。
いろんな版のVZでDOSVAXJ3を検証していたので混乱していました。
> うーん、あとは、現在の VP.26 をチェックしてみるとか?
この版はもう少し弄ってみます。
      - No.10784 -    このTreeへ    コメント元:10783 へ [リストへもどる] pre


(10777) 10785Re^4: VTDOSの $width コマンドのバグ?  投稿者:konno   2023/04/24(月) 17:15
    10784 番 shadow さんへのコメント

> 最初の版で変更できなかったのは高橋版にLFN対応のパッチを当てたVZを使用していたためでした。VZK07S05で変更できました。

どうも DOSVAXJ3 や VTDOS で VP.26 の値で条件分岐が上手くいかない事があるように思います。
64ビットOSとか CPUやメモリ速度の影響とかも疑ったりしています。
ちょっと変えるだけで動かなくなったりするので、要注意ですね。

なので、条件分岐を変えたりして今は安定した動作をしています。
最新版のマクロをアップしますので、それを試してみてください。

> この版はもう少し弄ってみます。

何か気が付いたことがありましたら教えてもらえるとありがたいです。

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