[HOME]  [現在掲示板へもどる]     [全部表示 会議室風]  [最新100]  [最新50]   [新着40]    [全部表示 保存用]
 番号順 全部表示   FGALVZ   

10757/10757 BQO00549  konno            DOSVAXJ3  (2023/4/3) 更新
( 1) 23/04/03 23:08 コメント数:2
DOSVAXJ3 が build JP230403 (2023/4/3) に更新されました。

サイトから引用します。
-----------------------------------------------------------
build JP230403 (2023/4/3)

・ int 21h ax=7160h で末尾に \ があるパス名が渡された場合、返されるパス名の末尾に \ が付いていなかったのを修正しました。
・ int 21h ax=7160h cl=00h で返されるパス名が "" で囲われていたのを修正しました。
・ DOS の標準入力で Raw mode が設定できるように修正しました。
・ DOS の標準入力のキー入力待ち時に int 28h を呼び出すように修正し、int 28h, int 2fh ax=1680h といったアイドル割り込みで HLT を実行し CPU 使用率を下げるように修正しました。
・ ロングファイルネーム有効時に +,;=[] が入った名前のファイルやディレクトリが使用できなかったのを修正しました。
・ Windows 上で x64 ビルドを追加し、64bit 版の実行ファイルを提供開始しました。
・ このバージョンから Windows 版は Visual Stdio 2022 でビルドしています。

-----------------------------------------------------------

作者様からメールでお知らせ頂き、気が付きました。
サイトは見ていたのですが、更新ボタンを押すまで更新されなくて気が付きませんでした。(^^;

簡単な動作確認をしましたが、ばっちりです。
32ビット版と64ビット版は DLL が違うので別フォルダにするのですね。(^^;
dosboxj.conf の設定で

cycles= auto 50000 100% limit 100000

くらいが一番スムーズですが、特に64ビット版はサクサクで最高です。!! \(^^)/ やったぁ

あと、設定の追加として、[dos] セクションで

lfn_space=true
idle=true

を追加しています。

個人的に一番嬉しかったのは、アイドル対応です。\(^^)/ ヤッタ-
スピードアップと負荷低減を両立出来ました。\(^^)/ ヤッタ-

色々対応いただき、本当に感謝です。m(__)m


10759/10757 BQO00549  konno            DOSVAXJ3 用表示行数切替えマクロ
( 1) 23/04/08 19:15 10757:konnoさんへのコメント
DOSVAXJ3 が使いやすくなったので、複数の画面サイズを活かして、表示行数切替えマクロを作りました。

80 ^KL "表示行数切替え" 
#if AXJ3	; DOSVAXJ3
;  (s==2 && oy==28)? { &00 .}			;コマンドラインでsxga24の29行→VGAの25行
  (s==2 && oy==43)? { &00 .}			;コマンドラインでsxga24の29行→VGAの25行
  (s==2 && oy<=24)?{ &01 .}  			;コマンドラインでvgaの25行→VTの37行
  (s==2 && oy==36)?{ &02 .}  			;コマンドラインでVTの37行→VT2の44行
;  (s==2 && vp.6==122)?{ &03 .}  		;コマンドラインでVT2の44行→VT3の44行
;  (s==2 && vp.6==154)?{ &04 .}  		;コマンドラインでVT3の44行→VT4の29行
;  (s==0 && oy==28)?{ #E &00 wd80,#[ we80,&d .}		;編集モードでsxga24の29行→vgaの25行
  (s==0 && oy==43)?{ #E &00 wd80,#[ we80,&d .}		;編集モードでsxga24の29行→vgaの25行
  (s==0 && oy<=24)?{#E &01 wd100,#[ we100,&d .}		;編集モードでvgaの25行→VTの37行
  (s==0 && oy==36)?{#E &02 wd128,#[ we128,&d .}		;編集モードでVTの37行→VT2の44行
;  (s==0 && vp.6==122)?{#E &03 wd160,#[ we160,&d .}	;編集モードでVT2の44行→VT3の44行
;  (s==0 && vp.6==154)?{#E &04 wd106,#[ we106,&d .}	;編集モードでVT3の44行→VT4の29行
  (oy==43)?{ #E &00 #[ wd80, .}				;sxga24の29行→Vvgaの25行
  (oy==28)?{ #E &00 #[ wd80, .}				;sxga24の29行→Vvgaの25行
  (oy<=24)?{#E &01 #[ wd100, .}				;vgaの25行→VTの37行
  (oy==36)?{#E &02 #[ wd128, .}				;VTの37行→VT2の44行
;  (vp.6==122)?{#E &03 #[ wd160, .}			;VT2の44行→VT3の44行
;  (vp.6==154)?{#E &04 #[ wd106, .}			;VT3の44行→VT4の29行
  .
00:	&?("chev jp") #m oy24,			; vga     解像度  640× 480  文字  80×25
01:	&?("chev vt") #m oy36,			; svga    解像度  800× 600  文字 100×37
02:	&?("chev vt2") #m oy43,			; xga     解像度 1024× 768  文字 128×48(44)
;03:	&?("chev vt3") #m oy43,			; sxga    解像度 1280×1024  文字 160×64(44)
;04:	&?("chev vt4") #m oy28,			; sxga24  解像度 1280×1024  文字 106×42(29)
#endif


これで起動のたびに 80×25行と100×37行と128×44行をトグルします。
編集モードでは、WE の編集幅が変わらないので、コマンドラインで実行が良いです。
128×48行では、実画面を下にはみ出るので、KVZのオプション OY43 指定して、行数44行にしています。
KVZのオプション OY は、DOSのローメモリの行数を書き換えているだけなので、行数-1 を指定します。

DOSのローメモリの行数を書き換えるなら外部コマンドを作れば良さそうですが、ちょっと待って。
マクロのコメントに、VT3 とか VT4 がありますね、これは・・・

# これはシャー専用機専用で、ザクには使えないとかなんとか・・・

# そうしているうちに、下半身の無いジオングが完成したとかなんとか。
# (使わなない)足なんて飾りですよ。偉い人にはわからんのです。(謎)


ちなみに、DOSVAXJ3 の画面モードには
sxga    解像度 1280×1024  文字 160×64(44)
がありますが、試してみたら、VZの表示が異常になりました。(>_<)
これは過去ログ検索すると

#4761: Re: VZK07t (VTDOSに捧ぐ) 投稿者: shadow   2010/01/04(月) 20:34

> >  ・V-TEXTでlf+の時ロングファイルネームを画面幅一杯に表示。
> >   縦は50行以上だと異常になりますね。

> あじゃさんに、50行越えは、オプション lc で最大行数を指定する必要があると教えていただきました。
> これを指定すると、最下行のFEPの予約ができないので、私は50行以下で使うことにしました。


そうでした、50行超えの時は、LC で指定する必要があるんでしたね、気を付けなくては。(^^;


10760/10760 BQO00549  konno            VTDOS 1.54 に更新
( 1) 23/04/09 01:10
VTDOS1.54 が更新されました。
VTDOSBBS から引用します。

-----------------------------------------------------------

Version 1.54 リリースノート - 10♯   2023/04/08 (Sat) 20:07:38

EMSの不具合を修正しました。
これにより、VZ Editorで主に大きなファイルを扱うときに発生する問題が緩和されるようです。

また、8.3形式ファイルを作成していないNTFSに対する限定的な対応を行いました。

-----------------------------------------------------------

早速テストデータを高橋版VZのEMS環境で試してみましたが、全て正常でした。
VZのバグはそのままです。
私の修正版ではVZのバグも出ませんでした。(BL3702を除く)

これで、EMSメインの環境に戻して運用してみます。
SW3 でも安定するかな。

あと、CKWV9P も更新されました。最近のWin10のエラー対応のパッチのようです。

10♯さん、ありがとうございました。


10761/10757 BQO00549  konno            DOSVAXJ3 のキー入力関連など
( 1) 23/04/10 22:55 10757:konnoさんへのコメント
DOSVAXJ3 のキー入力関連なのですが
VZマクロの起動キーとしてよく使う ^\ (Ctrl+\) が効きません。
どうも、^] (Ctrl+]) のコードで起動するようです。 
BIOSコードを見てみました。

キーコード VTDOS  DOSVAXJ3
------------------------------
^\ (|\)   7D1C  -
^^ (^)    0D00  -
^@ (@)    1AFF  1A1B
^[ ([)    1B1B  1B1D
^] (])    2B1D  2B1C (^\)
^_ (_\ろ)  731C  -
^[F04〜12]  6100〜 -
@[F10〜12]  7100〜 -

このように、特定のコードが無かったり違っていたりしています。
dosboxj.conf の設定は
keyboardlayout = jp
yen           = false
となっていて、
yen           = true
としても変わらないようです。

Ctrl+[F01] でキーコードを変えられるかもしれないですが、まだ出来ていないです。
対応したキーマップがあればいいのかと思って他のDOSBOXから持ってきましたが変わらないようです。

システムの関係で出来ないのであれば諦めますが、駄目もとでメールしてみました。
そうしたらすぐにお返事が来ました。

> 調査してみますが、キー入力は使用している SDL というライブラリが
>日本語キーボードを考慮に入れてない関係で処理がややこしいことになっ
>ており、少々時間がかかると思います。

やはりDOSBOXは元が外国製なので出来なくてもしかたがないですね。
調べて頂けるだけでもありがたいです。

> なお、dosboxj.conf の yen は FONTX2 フォントファイルの文字コード
>0x5c のデータを 0x7f と入れ替えるというオプションで、キー入力とは関
>係ありません。

なるほど、そういうことですか。

別件ですが、画面の行数が可変に出来そうです。
行数を減らすのはすぐに出来たみたいですが、増やすのも出来るかもしれないです。
これが出来たらますます使いやすくなりますね。\(^^)/ ヤッタ-


# ジオングに足が生えるのか (^^;


10762/10762 BQO00549  konno            DOSVAXJ3 (2023/4/14) 更新
( 1) 23/04/15 00:49 コメント数:2
DOSVAXJ3 が build JP230414 (2023/4/14)に更新されました。

サイトから引用します。
-----------------------------------------------------------
build JP230414 (2023/4/14)

・ 日本語キーボードで、一部のキーが Ctrl との組み合わせで入力ができなかったり、入力ができてもキーコードが正しくなかったのを修正しました。
・ V-Text のモードを 4 つまで指定可能としました。それに伴い dosboxj.conf の [dosbox] vtext は vtext1 に名称変更しています。
・ V-Text で行数を指定できるようにしました。上限はありますが、本来の行数より大きな値も指定可能です。
・ Linux も 16 ドットフォントは東雲フォントを使用するように変更しました。

-----------------------------------------------------------

#10761:DOSVAXJ3 のキー入力関連など
で書いたキーは、システムで予約済み以外は対応されています。\(^^)/ ヤッタ-
予約済みの一部のキーは Ctrl+F1 の mapper でキー割り当てを変更出来ます。

V-Text のモードを 4 つまで指定可能となったのもうれしいです。\(^^)/ ヤッタ-
コマンドラインで chev vt4 などとして簡単に画面サイズを変えられるので
大画面でも小さなDOS窓を表示させて参照するとか、結構使いそうです。

作者様に感謝です。m(__)m


10763/10762 DGF01024  めざら           Re: DOSVAXJ3 (2023/4/14) 更新
( 1) 23/04/15 11:02 10762:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
地道な試用報告が報われるというのは,とてもいい関係性だと思いますね.
真摯なユーザがいるから作者様もモチベーションを保てる面があるのでしょう.

DOSBOX系も,もう少し速度が出るといいのですけどね。
裏で色々環境の読み込みとか時間がかかることは理解できるのですが,
それぞれの環境で使うものを一時ファイルに書き出しておいて次回はそれをロードする…
なんてことは難しいのかなぁ…って環境は様々だから一筋縄ではいかないのでしょうね.

ところで……
konnoさんは DOSVAXJ3 では V-text を使っていますか? ……変な言い方なのかな……
要するにフォントファイルを用意して拡張ウィンドウにしていますかということです.
一連の発言を見ると44行とか128桁とかあるので,たぶんそうなのでしょうけど,
速度はどうなのかなぁと思って.

昔の非力なマシンで V-text すると,フォントドライバーによるかとは思いますが
ひどく画面の書き換えが遅かったじゃないですか.そのへん体感はどうでしょう.

自分で試せば?ということではありますが,慣れた環境にどっぷり漬かっていると,
フォントファイルを引っ張り出してくるとかちょっと面倒になっちゃって(^_^;


10764/10762 BQO00549  konno            Re^2: DOSVAXJ3 (2023/4/14) 更新
( 1) 23/04/15 14:39 10763:めざらさんへのコメント コメント数:1
> 地道な試用報告が報われるというのは,とてもいい関係性だと思いますね.
> 真摯なユーザがいるから作者様もモチベーションを保てる面があるのでしょう.

なるほど、私も人が困っているのを見ると何とかしてやりたいとつい思っちゃうんですよね。

> DOSBOX系も,もう少し速度が出るといいのですけどね。
> 裏で色々環境の読み込みとか時間がかかることは理解できるのですが,

最新の DOSVAXJ3 64ビット版は速いですよ。VTDOS と遜色ないくらいでしょうか。
dosboxj.conf の [cpu] セクションで
[cpu] 
cycles= auto 50000 100% limit 100000

これを入れてみてください。
cycles    = max
が一番速くなると思ったのですが、KVZ環境では max の設定ではタイムラグが出てもたつきを感じました。
ベストな設定値は、それぞれの環境で色々微調整すれば良いと思います。

> それぞれの環境で使うものを一時ファイルに書き出しておいて次回はそれをロードする…
> なんてことは難しいのかなぁ…って環境は様々だから一筋縄ではいかないのでしょうね.

何に時間が掛かるのでしょうか。
フルエミュレーションなので動作速度の限界はあるでしょうが、私が試した範囲では VTDOS と遜色ないと感じました。

> konnoさんは DOSVAXJ3 では V-text を使っていますか? ……変な言い方なのかな……
> 要するにフォントファイルを用意して拡張ウィンドウにしていますかということです.

フォントファイルは別に用意していません。
DOSVAXJ3 は、小さいフォントと大きい24ドットを内蔵していて、24ドットフォントだとちょっと大きいので
[dosbox] セクションで

jfontuse20    = true

これで 24ドットフォントを 20ドットフォントにしています。
実質3種類の大きさのフォントが使えることになります。

> 自分で試せば?ということではありますが,慣れた環境にどっぷり漬かっていると,
> フォントファイルを引っ張り出してくるとかちょっと面倒になっちゃって(^_^;

上記のようにフォントファイルなどは何もいらないので簡単に試せますよ。
めざらさんは 旧版の DOSVAXJ3 は動かしていると思うので、その [autoexec]セクションの内容はそのまま使えます。
ちょうど私の使用例を張り付けようと思っていたので、次の記事でデフォルトから変更追加した部分を貼り付けます。

あ、そうそう、64ビット版は私は、DOSVAXJ3.64 というフォルダにしています。
64ビット版はDLLとかも違うので別のフォルダにしないといけないので。
拡張子を使ったのはショート名でも読めるというのが理由です。(^^;


10765/10762 BQO00549  konno            DOSVAXJ3の dosboxj.conf 設定例
( 1) 23/04/15 14:45 10762:konnoさんへのコメント
DOSVAXJ3を簡単に試すための dosboxj.conf の設定例です。
私の使用例を、以下にデフォルトから変更追加した部分を貼り付けます。

dosboxj.conf

[sdl]
windowresolution  = 1336x768
# 私の画面サイズ これを入れると画面をはみ出す行サイズでもフルスクリーンモードが使えるかも

[dosbox]
#jfontname     = MS 明朝
jfontname     = MS ゴシック
#jfontuse20    = false
jfontuse20    = true
#               vga     解像度  640× 480  文字  80×30 (44行なら画面をはみ出さない)
vtext1        = vga,44
#               svga    解像度  800× 600  文字 100×37 
vtext2        = xga,44
#               xga     解像度 1024× 768  文字 128×48 (44)
vtext3        = sxga,44
#               sxga    解像度 1280×1024  文字 160×64 (44)
vtext4        = sxga24,29
#               sxga24  解像度 1280×1024  文字 106×42 (29) 24ドットフォント
#               xga24   解像度 1024× 768  文字  85×32 (29) 24ドットフォント
#fepcontrol    = both
#fepcontrol    = ias
fepcontrol    = mskanji

[cpu]
#cycles    = auto
#cycles    = max
cycles= auto 50000 100% limit 100000

[dos]
#automount      = true
automount      = auto
#autoreload     = all
autoreload     = cmd
lfn_space=true
#lfn_space=true	#230214 スペース入りのロング名でもオープン
#idle=false
idle=true

[autoexec]
mount c c:\
mount d d:\
C:
cd vz
path=c:\ut;%path%;
set vzdef=c:\vz\vz.def
set tmp=c:\tmp
set ASM=m
set VZBAK=.\bak
set vzsym=AXJ3
vwx -z2 -v2 -x1 -l4096
TAGLIGHT.EXE /v stay
chev vt2
#vt=sxga 1280*1024 160*64
#vt2=sxga24 1280*1024 106*42
vz -z 


10766/10762 DGF01024  めざら           Re^3: DOSVAXJ3 (2023/4/14) 更新
( 1) 23/04/15 16:32 10764:konnoさんへのコメント
参照先:http://mezala.la.coocan.jp/
おおー,cpu cycle 設定をいじったら,めざましく快適になりました.
多少入力のタイミングとずれを感じるので,自分の環境で最適な値になるよう
調整してみたいと思います。ありがとうございました.m(_'_)m

あと,最新版でいろいろ改善していただいたみたいで,旧版よりずっといいですね.

速度もそうなのですが,実は以前からフォントの設定に悩んでいまして,
なんとか VL Gothic できれいに表示できないかなぁと思っていましたが,
この速度が出るのなら,もう MS Gothic でもいいや(笑)と思ったりもします.

わたしもそろそろ「極楽VZ環境」のWindows編を加筆しようかな.
ずいぶん長いこと放置しているので……


10767/10767 BNY00646  shadow           DOSVAXJ3におけるファイルコピー先の日付
( 1) 23/04/17 16:04 コメント数:2
軟式さんにファイルコピー先の日付がコピーした時点に変わることを報告しました。
これは修正していただけることになりました。
この時に他に気がついた点は無いか質問があったので次の二点について返信しました。
1 LFNのファイル名が全角文字の時SFNが正しくない件
2 Vz高橋版以降のファイラーにおけるLFNの識別記号+がファイル名に半角小文字が含まれるとSFNでも+マークが付く件

軟式さんの回答はつぎのとおりです。
1についてはJP230216 以前では大丈夫なので、見直して修正します。
2については次のやり取りをしました。
> > 半角小文字は SFN にはないので LFN 扱いになっていると思います。
> 仕様であれば対応不要です。

なお、軟式さんからは次の返信を頂いたので要望すれば対応して頂けるようです。
 + をつけるかどうかは Vz の LFN 処理で判定していると思います。
 どのように判定しているかがわかれば対応は可能と思います。



10768/10767 BNY00646  shadow           Re: DOSVAXJ3におけるファイルコピー先の日付
( 1) 23/04/17 18:42 10767:shadowさんへのコメント コメント数:1
不具合修正版が公開されたので報告します。
ファイルコピー先の日時修正についてはメール文を引用します。
> ファイルコピーの日時ですが、いまのところ imgmount でマウントしたド
>ライブでは日時情報は反映されず現在日時になってしまいますのでご注意く
>ださい。
> mount で親 OS のフォルダをマウントしたドライブ間であればコピー先に
>日時情報は反映されます。
細かい気付きは他にもあるのですがどこまで要望するか思案してます。
軟式さんの迅速な対応に感謝しています。


10769/10767 BQO00549  konno            Re: DOSVAXJ3におけるファイルコピー先の日付
( 1) 23/04/17 22:46 10767:shadowさんへのコメント コメント数:1
> 軟式さんにファイルコピー先の日付がコピーした時点に変わることを報告しました。

ああ、ほんとだ! 気づきませんでした。(^^;;

> 2 Vz高橋版以降のファイラーにおけるLFNの識別記号+がファイル名に半角小文字が含まれるとSFNでも+マークが付く件
> > > 半角小文字は SFN にはないので LFN 扱いになっていると思います。
> > 仕様であれば対応不要です。

これは VTDOS と MS-DOS Player では半角小文字で8文字以下なら +マーク付かないですね。
今まで気にしていませんでした。(^^;

> なお、軟式さんからは次の返信を頂いたので要望すれば対応して頂けるようです。
>  + をつけるかどうかは Vz の LFN 処理で判定していると思います。
>  どのように判定しているかがわかれば対応は可能と思います。

えーと、filer.asm の中で
dumplfn	proc の2887行あたりから

	pushm	<es,dx,di>
	mov	dx,si
	call	cvtlfn
	mov	si,di
	movseg	ds,es
	popm	<di,dx,es>
IFDEF US
	call	putspc
ENDIF
	mov	al,SPC
	tstb	[si].lfn_aliasname		;★ このあたり?
_ifn z
;	mov	al,'+'				; ##k07f
;	tstb	cs:lfnmark			; サイズを減らすために変更
;  _ifn z					;
	mov	al,cs:lfnmark
;  _endif					;
_endif
	call	putc
	add	si,lfn_name
	call	strlen


★マークの所で判定していると思うのですが、私には読めていないので。(^^;;


10770/10767 BQO00549  konno            Re^2: DOSVAXJ3におけるファイルコピー先の日付
( 1) 23/04/18 00:35 10768:shadowさんへのコメント コメント数:1
> 不具合修正版が公開されたので報告します。

新版が出ていたのですね、頂きました。

> > mount で親 OS のフォルダをマウントしたドライブ間であればコピー先に
> >日時情報は反映されます。

試してみましたが、コピーすると現在の日時になります。
また、LFN が SFN になるようです。

mount c c:\
mount d d:\
これですよね。
shadowさんのところでは正常にコピー出来ていますか?


10771/10767 BQO00549  konno            Re^2: DOSVAXJ3におけるファイルコピー先の日付
( 1) 23/04/18 01:59 10769:konnoさんへのコメント コメント数:1
なんとなく分かったような気がします。

> 	tstb	[si].lfn_aliasname		;★ このあたり?

これは恐らくショート名があるかないかのチェックかと。
例えば、LFNの DIR /X では

DIR /X 

2023/03/15  17:21               435              T.DEF
2023/03/18  12:59           299,443              tsv2
2023/03/20  13:53           299,579              TSVBT64
2023/03/18  12:00           299,579              tsv_E4
2023/03/18  12:02           299,579              tsv_EMS
2023/03/18  13:20           299,579 TSV_T_~1     TSV_T_XMS
2023/03/30  15:36                 0 VT_~1.TXT    VT=.txt
2023/04/03  21:50                 0 VTDOS_~1     VTDOS=
2023/02/28  22:34            62,768              vzibmj.co
2023/02/28  23:03            11,429              vzk07v6.com

このように、SFN の時は ショート名の欄が空白になります。
小文字でも SFN と認識しています。

つまり、エリアスショート名がある時に "+" マークを入れていると思われます。



10772/10767 BNY00646  shadow           Re^3: DOSVAXJ3におけるファイルコピー先の日付
( 1) 23/04/18 08:34 10770:konnoさんへのコメント
> shadowさんのところでは正常にコピー出来ていますか?
copyコマンドのコピーでは日付情報は反映されています。
LFNも問題ありません。
ただzcopy等のソフトを使うとコピーした時点の日時になります。

10773/10767 BNY00646  shadow           Re^3: DOSVAXJ3におけるファイルコピー先の日付
( 1) 23/04/18 08:38 10771:konnoさんへのコメント コメント数:1
有難うございます。
コピーの日時情報の件と合わせてこの情報を基に対応可能か要望してみます。

10774/10767 BNY00646  shadow           Re^4: DOSVAXJ3におけるファイルコピー先の日付
( 1) 23/04/18 13:27 10773:shadowさんへのコメント コメント数:1
コピー先の日時の件は調査していただけることになりました。
+マークの問題個所は推定されたようです。
修正版は早くて今週末になるとの返信を頂きました。

10775/10767 BQO00549  konno            Re^5: DOSVAXJ3におけるファイルコピー先の日付
( 1) 23/04/18 16:37 10774:shadowさんへのコメント コメント数:1
> コピー先の日時の件は調査していただけることになりました。
> +マークの問題個所は推定されたようです。

迅速な対応ありがとうございます。
私の情報がお役に立てたならうれしいです。

> 修正版は早くて今週末になるとの返信を頂きました。

私一人だとチェック漏れが多かったので、shadowさんの対応に感謝です。
他にも気づいたことがあるとは流石です。
作者様に報告しておけば、より良いものが出来るかもしれませんし。
私も思い切ってメールを出して良かったと思います。(^_^)


10777/10777 BQO00549  konno            表示行数切替えマクロ(差し替え)
( 1) 23/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度実行すると固まってしまうのでご注意。

10778/10777 BQO00549  konno            VTDOSの $width コマンドのバグ?
( 1) 23/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♯さんに報告しようと思います。


10779/10777 BQO00549  konno            VTDOSの画面書き換え Fコール版
( 1) 23/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がコマンドラインでマクロを実行する時、画面サイズ変更を想定していないためと思われます。
そのために改行を実行するのですが、非常駐の時は子プロセスに行ってしまうのでスペースを追加しています。

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


10780/10767 BNY00646  shadow           Re^6: DOSVAXJ3におけるファイルコピー先の日付
( 1) 23/04/23 12:56 10775:konnoさんへのコメント コメント数:1
とんでもないです。
必要最小限の修正依頼のメールを出したのですが気づきの質問を受けたので
まあ良いかと思っていた個所も要望したしだいです。
> 私も思い切ってメールを出して良かったと思います。(^_^)
私もそう思いました。

10781/10777 BNY00646  shadow           Re: VTDOSの $width コマンドのバグ?
( 1) 23/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の方はうちでは変化しないです。

10782/10767 BQO00549  konno            Re^7: DOSVAXJ3におけるファイルコピー先の日付
( 1) 23/04/23 15:53 10780:shadowさんへのコメント
> 必要最小限の修正依頼のメールを出したのですが気づきの質問を受けたので
> まあ良いかと思っていた個所も要望したしだいです。

こういうことってありますよね。
私もちょっと気になっていたことがあったのですが、いざ要望を出そうと思ったら思い出せなくて。(^^;
過去に何か書いていたように思ったので過去ログ検索してやっと思い出したという。(^^;;
やっぱり私は備忘録をこまめに書いておかないと全部忘れてしまいそうです。(^^;;; ヤバイヨ!
あとは書いている途中でもマメにセーブすることかな。(テストやうっかりで藻屑は数知れず)

> > 私も思い切ってメールを出して良かったと思います。(^_^)
> 私もそう思いました。

コミュニケーションって難しいので失言で後悔したことも多いですが
言わないで後悔するくらいなら駄目もとでも言った方が良いと思える今日この頃です。


10783/10777 BQO00549  konno            Re^2: VTDOSの $width コマンドのバグ?
( 1) 23/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 をチェックしてみるとか?

10784/10777 BNY00646  shadow           Re^3: VTDOSの $width コマンドのバグ?
( 1) 23/04/24 08:53 10783:konnoさんへのコメント コメント数:1
> ※環境変数 VZSYM=AXJ3 は設定されていますか。
> #if AXJ3	; DOSVAXJ3 
設定済みです。
> 最初の版で、VP.6 を使っていましたが、VP.26 が良いです。
最初の版で変更できなかったのは高橋版にLFN対応のパッチを当てたVZを使用していたためでした。VZK07S05で変更できました。
いろんな版のVZでDOSVAXJ3を検証していたので混乱していました。
> うーん、あとは、現在の VP.26 をチェックしてみるとか?
この版はもう少し弄ってみます。

10785/10777 BQO00549  konno            Re^4: VTDOSの $width コマンドのバグ?
( 1) 23/04/24 17:15 10784:shadowさんへのコメント
> 最初の版で変更できなかったのは高橋版にLFN対応のパッチを当てたVZを使用していたためでした。VZK07S05で変更できました。

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

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

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

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


10786/10786 BQO00549  konno            表示行数切替えマクロ v0.5
( 1) 23/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用にとりあえず作ってみた。


10787/10786 BNY00646  shadow           Re: 表示行数切替えマクロ v0.5
( 1) 23/04/25 13:09 10786:konnoさんへのコメント コメント数:1
DOSVAXJ3とVTDOS共に切替えできるようになりました。
ところでDOSVAXJ3の編集画面で何度か切替えてカーソル↓
でスクロールした後カーソル↑すると表示が四角い枠状に
消える現象がおこりました。
何かキー入力すると消えていた箇所は正常に表示されます。
konnoさんのところではおこらないですか?

10788/10786 BQO00549  konno            DOSVAXJ3版で画面にゴミが表示される?
( 1) 23/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さんのところで同じようになりますか?
同じなら、軟式さんに報告してみます。
引き続き検証してみます。


10789/10786 BNY00646  shadow           Re: DOSVAXJ3版で画面にゴミが表示される?
( 1) 23/04/25 21:01 10788:konnoさんへのコメント コメント数:1
うちでは編集画面で160桁に切替えた後80桁*25行に変更
(大きい画面から小さい画面に変更)。
そして50行程度カーソルを下に移動^X(DOWN)。
その後カーソルを^E(UP)で1行目に移動すると表示される文字が矩形ブロックで
切取ったように文字が消えています。
何かのキーを入力すると再表示されます。
とりあえずメールで画像も送りますね。
konnoさんの現象は検証してみます。

10790/10786 BQO00549  konno            Re^2: DOSVAXJ3版で画面にゴミが表示される?
( 1) 23/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

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


10791/10786 BNY00646  shadow           Re^3: DOSVAXJ3版で画面にゴミが表示される?
( 1) 23/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


10792/10786 BQO00549  konno            Re^4: DOSVAXJ3版の仕様かマクロ不具合か
( 1) 23/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します。


10793/10786 BQO00549  konno            表示行数切替えマクロ v0.52 DOSVAXJ3差替え
( 1) 23/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用にとりあえず作ってみた。

10794/10786 BQO00549  konno            DOSVAXJ3の編集画面でゴミが表示される件
( 1) 23/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   これ以降現象が出る。

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


10795/10786 BNY00646  shadow           Re: 表示行数切替えマクロ v0.52 DOSVAXJ3差替え
( 1) 23/04/27 08:52 10793:konnoさんへのコメント コメント数:1
> 表示行数切替えマクロ v0.52 差し替え版
対症療法で落ち着いたようなので自分用に変更しようと思います。

10796/10786 BNY00646  shadow           Re: DOSVAXJ3の編集画面でゴミが表示される件
( 1) 23/04/27 09:31 10794:konnoさんへのコメント コメント数:1
> 他と合わせて軟式さんに報告してみました。
ありがとうございます。
現象を相手様に伝えるのはなかなか難しく、奥深い内容になると私には無理なのでkonnoさんに感謝です。
そしてDOSVAXJ3がより安定し、VTDOSもアップデートされたのでVZはまだまだ使えそうです。
あっ、私が修正依頼した件は修正テスト版で直っているのでやがて正式版が出ると思います。

10797/10786 BQO00549  konno            Re^2: 表示行数切替えマクロ v0.52 DOSVAXJ3差替え
( 1) 23/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() をスキップしています。


10798/10786 BQO00549  konno            Re^2: DOSVAXJ3の編集画面でゴミが表示される件
( 1) 23/04/27 17:57 10796:shadowさんへのコメント
> 現象を相手様に伝えるのはなかなか難しく、奥深い内容になると私には無理なのでkonnoさんに感謝です。

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

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

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

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

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


10799/10799 BQO00549  konno            VTDOS1.55 & CKWV11 更新
( 1) 23/04/27 19:11 コメント数:1
VTDOS1.55 と CKWV11 が更新されました。

VTDOS バージョン1.55 の変更点は
-----------------------------------------------------------------------------
$width 拡張ビルトインコマンドでサイズ変更が行われなかった時に正常に動作しない
不具合を修正しました。

vtdos.cfgのSHELL,BILING,TMPで環境変数を参照出来るようにしました。
%vtdos_dir%を参照することで、VTDOS起動時のパスを参照出来るようになります。
これにより、USBメモリー等任意のドライブへのインストールを行い易くなります。
また、ckwv連動時に衝突するオプションを無効化しました。

ckwv使用時の画面リサイズをVZに対応するオプション(VZ_RESIZE,VZ_REDRAW)を
追加しました。
リサイズの状態を取得するAPI(Int 2F/AX=7476h/BX=000Bh)を追加しました。

-----------------------------------------------------------------------------

最近画面切り替えマクロに嵌っているので嬉しい更新です。(^_^)
個人的にはこの
> $width w h	画面サイズを幅 w 桁、h 行に変更します。
> 	※画面サイズは最大255*255、最小80*6、VRAM_MAXが上限
画面の最小行数が6行までになったのがうれしいです。
GPD Poket などの超小型PC では18行以下になるので、ありがたいです。


CKWV11 の更新内容は 
-------------------------------------------------
Rev 11	2023/4/24
特定条件下でリサイズが正常に行われない不具合修正
-------------------------------------------------

マウスでリサイズすると VZの設定と合わなくなる場合がありますね。
10♯さんに リサイズパッチのソースをいただきました。
ありがとうございます。
これからいろいろ弄ってみたいと思います。


10800/10799 CXB00940  としき           Re: VTDOS1.55 & CKWV11 更新
( 1) 23/04/27 23:28 10799:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> > 	※画面サイズは最大255*255、最小80*6、VRAM_MAXが上限

Vz純正のgame.defがきちんと動くか、確認するべきでしょうね。
あとは、samegame.defとか。


10801/10799 BQO00549  konno            Re^2: VTDOS1.55 & CKWV11 更新
( 1) 23/04/28 01:24 10800:としきさんへのコメント コメント数:1
> Vz純正のgame.defがきちんと動くか、確認するべきでしょうね。

思わず確認してしまいました。(^^;
ああ、時間を潰してしまった・・・
もちろん完璧に動きましたよ。

> あとは、samegame.defとか。

げげ、なぜか、DEFだけあるけど動かし方がわからない。
思わず軟体から拾ってきて動作確認してしまいました。(^^;
ああ、ダメだ・・・これは・・・・
時間がいくらあっても足りなくなるぅ・・・ (^^;
途中でストップしましたが、問題なく動くようです。
一番の問題は、癖になりそうなのが怖い! (^^;


10802/10799 CXB00940  としき           Re^3: VTDOS1.55 & CKWV11 更新
( 1) 23/04/28 23:14 10801:konnoさんへのコメント コメント数:2
参照先:http://toshiki.la.coocan.jp/
>> > 	※画面サイズは最大255*255、最小80*6、VRAM_MAXが上限"
> > Vz純正のgame.defがきちんと動くか、確認するべきでしょうね。

> もちろん完璧に動きましたよ。

さすがc.mosさん、80*6でも動くゲームマクロをきっちり作るなんて。
私にはとてもまねできません。


10803/10799 CRG00666  文太             Re^4: VTDOS1.55 & CKWV11 更新
( 1) 23/04/29 00:13 10802:としきさんへのコメント コメント数:1
としきさん、konnoさん

 少しお久しぶりです。
 なるほど、そういうことなのね。鮫亀なの? やったことない。あまり肩肘はらずに
遊んじゃおうよ、なんて気分なので、GWのどっかでやってみますね。
 とりあえず、25x80なDOS機で。
 ああ、ボロボロじゃぁ。レポレッロ@『ドン・ジョバンニ』バイ・モーツァルトなんて
のに、ひたすら癒しを求めている日々。
 休むぞ、遊ぶぞ、トマトの植え付けするぞ。

 あ、vtdosの更新もします。




10804/10799 BQO00549  konno            Re^4: VTDOS1.55 & CKWV11 更新
( 1) 23/04/29 00:27 10802:としきさんへのコメント コメント数:1
> さすがc.mosさん、80*6でも動くゲームマクロをきっちり作るなんて。
> 私にはとてもまねできません。

げげ、そういう意味でしたか、流石に80*25以下は想定外ですね。(^^;
80*6 は我ながらちょっとやりすぎたかなぁと思いましたが、
編集画面で1行表示は出来るので何か使い道があるかなと。(^^;

ただ、テトリスマクロがそのまま普通の速度で動くのは感動しました。
1993/12/06  02:00             2,916 GAME.DEF
何も改変していない、そのまんまですよ。
80*18行までは普通に動きました。逆に行数を増やしても伸びないですね。
桁を80以上にしても正常に動作するので VTEXTも考慮しているのですね。

サメガメも凄いですね。
80*22行までは正常に動きましたが、桁を80以上にすると画面が乱れてVZが落ちます。(^^;

物はついで、shotsame.def も軟体から落としてみました。
これはVTEXTでも正常に動作するので、縦の行を目いっぱい
伸ばして、ブロックが落ちてくるのを遅らせられます。
とろいの木馬並みの私にはこれでも厳しい!


10805/10799 BQO00549  konno            Re^5: VTDOS1.55 & CKWV11 更新
( 1) 23/04/29 01:10 10803:文太さんへのコメント
>  なるほど、そういうことなのね。鮫亀なの? やったことない。あまり肩肘はらずに
> 遊んじゃおうよ、なんて気分なので、GWのどっかでやってみますね。

GWの暇つぶしにはいいかもしれないですね。
鮫亀って、same game から来ているのかなと思いました。
Wikipediaから引用すると
-----------------------------------------------------------
さめがめは、コンピュータゲームの一種である。 名前の由来は、ゲームタイトル「SAME GAME(セイムゲーム)」の英語表記を日本語ローマ字読みしたもの(#歴史を参照)。
-----------------------------------------------------------

合っているようですが、セイムの意味が分かっていません。
same セイム で検索すると
-----------------------------------------------------------
SAME(セイム)は、Society(社会)、Arithmetic(算数)、Mathematics(数学)、Education(教育)の4つの頭文字をつないだ言葉です。 sameは日本語で「同じ」と訳し、複数の対象が同様であるということ以外に、1つの対象に対して同一であるという意味があります。
-----------------------------------------------------------

どうもこの「同じ」という意味が、同じものを消していくゲームっぽいかな。

>  休むぞ、遊ぶぞ、トマトの植え付けするぞ。

遊ぶぃゼットも良いですね。(^^;

>  あ、vtdosの更新もします。

新しいVTDOSは快調です。(^_^)


10806/10799 CXB00940  としき           Re^5: VTDOS1.55 & CKWV11 更新
( 1) 23/04/29 02:44 10804:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> げげ、そういう意味でしたか、流石に80*25以下は想定外ですね。(^^;

それ以外の意味はありません、というのはウソですが。
要は、デバッグというのはこうやる、というような話に繋がるわけでして。

学生時代、懇意の先輩のいる研究室に入り浸っていました。
その先輩たちが数人で、いわゆる同人ゲームを作っていたんです。
私はテスターという名目で、そのゲームで遊ばせてもらっていたんですがね。
想定外の操作ばかりするもので、メインにプログラムを担当していた先輩から、
「何でそんな操作をするんだよ!(ぷんぷん)」
と愚痴られるハメに。
そうでなきゃテスターとは言えんでしょ、という正論を盾に、ひたすら遊ばせて
いただいていました。
どうやら私、昔から、コーディングよりはデバッグとかテストとかの方に適性が
あるのかもしれない。


10807/10799 BQO00549  konno            Re^6: VTDOS1.55 & CKWV11 更新
( 1) 23/04/29 15:48 10806:としきさんへのコメント
> 要は、デバッグというのはこうやる、というような話に繋がるわけでして。
>
> 私はテスターという名目で、そのゲームで遊ばせてもらっていたんですがね。
> 想定外の操作ばかりするもので、メインにプログラムを担当していた先輩から、
> 「何でそんな操作をするんだよ!(ぷんぷん)」
> と愚痴られるハメに。

なるほど、想定外の操作は私もよくやるのですが、デバッグになっていたのね。(^^;

> どうやら私、昔から、コーディングよりはデバッグとかテストとかの方に適性が
> あるのかもしれない。

としきさんは全体を見ながら隅々まで気を配るみたいなイメージなのでその通りに思えます。
私は動作確認の時は問題の所だけをチェックして、はいOK! とやりがちなので
いざ使ってみるとバグバグだったということを日々実感しています。(^^;;


10808/10786 BQO00549  konno            DOSVAXJ3で画面切り替えマクロの起動キー
( 1) 23/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] にすれば連続で押し続けても
カーソルが動くだけなので、これで使うようにしてみます。


10809/10809 BQO00549  konno            DOSVAXJ3 (2023/5/1) 版更新
( 1) 23/05/02 01:21 コメント数:2
DOSVAXJ3 (2023/5/1)版が更新されました。
更新内容を引用します。
-----------------------------------------------------------------------
DOSVAXJ3 build JP230501 (2023/5/1)
・64bit 版で [cpu] core=dynamic を指定すると落ちていたのを修正しました。
・int 21h ax=5701h のファイル日時設定が有効になるよう修正しました。
・FAT イメージファイルの場合でもファイルコピーの日時情報がコピー先ファイルに反映されるよう修正しました。
・8 文字以下のファイル名でも小文字だった場合はロングファイルネームを生成してしまっていたのを修正しました。
・DOS/V 日本語モードの場合、int 10h ax=1100h〜1114h の処理は実行しないよう修正しました。
・echo off 状態の場合、Vz のコンソール取り込みでコマンドの改行が入らなかったのを修正しました。
・CHEV で V-Text に切り替えた際のメッセージに画面の文字設定を表示するよう修正しました。
・V-Text が XGA, SXGA 設定の場合 Vz の編集画面にゴミが出る事があったのを修正しました。
・DOS/V 日本語モードでイメージファイルからブートした際に画面が乱れていたのを修正しました。
・CD-ROM とその他のイメージファイルを imgmount した際にファイルコピーで固まっていたのを修正しました。
-----------------------------------------------------------------------
報告した事のほとんどが修正されていますが、マクロ起動キーの件だけはそのままです。

> 画面切り替えマクロで、^KL の起動キーで連続実行すると
> [Ctrl] キーを押しっぱなしにしていても、2度目の実行時には無視されて
> 編集画面に "KL" の文字が入って、マクロは実行されません。

これは画面切り替え時の仕様のようなのでしかたがありませんね。
そうはいっても、うっかりテキストに文字を書き込んでしまうことはありそうなので
画面切り替えマクロの起動キーを @[F11] などにするのが良さそうです。

ともあれ年度替わりの忙しい時期に更新していただき、感謝です。


10810/10809 BNY00646  shadow           Re: DOSVAXJ3 (2023/5/1) 版更新
( 1) 23/05/02 13:10 10809:konnoさんへのコメント コメント数:1
konnoさん、お世話になりました。
ファイルコピーの日時修正に関する軟式さんからのメールを転記します。
> なお、OS のディレクトリを mount したドライブ上のファイルの日時情報
>を FD や FILMTN 等で変更する事はできません。
> これは DOS と Windows の日時情報更新ファンクションの条件の違いのた
>め修正はできません。ただし imgmount したドライブ上のファイルの日時情
>報は変更できます。

10811/10809 BQO00549  konno            Re^2: DOSVAXJ3 (2023/5/1) 版更新
( 1) 23/05/03 00:07 10810:shadowさんへのコメント
> ファイルコピーの日時修正に関する軟式さんからのメールを転記します。
> > なお、OS のディレクトリを mount したドライブ上のファイルの日時情報
> >を FD や FILMTN 等で変更する事はできません。
> > これは DOS と Windows の日時情報更新ファンクションの条件の違いのた
> >め修正はできません。

これは Win32APIを使っていると思われる他のDOSエミュでも同じですね。
#10314:エミュレータでは DOSの日付操作が効かない?  投稿者:konno   2022/10/04
この辺で話題にしていました。

ところが、MS-DOS Player だけは違うみたいで。
#10346:MSDOS player は日時キープできました  投稿者:konno   2022/10/19
> touch と BUPDATE は同じ環境に依存していると仮定して
> 純DOS     日時キープされる
> WinDOS窓   日時キープされる
> MSDOS player 日時キープされる
> VTDOS     現在日時になる
> DOSVAXJ3   現在日時になる

こういう結果になりましたので、MS-DOS Player は Win32API を使わずに自前でやっているのかも。

> ただし imgmount したドライブ上のファイルの日時情報は変更できます。

これは NP2 などと同じで、フルエミュレーションなのかなと思います。
違っていたらごめんなさい。


10812/10809 DGF01024  めざら           Re: DOSVAXJ3 (2023/5/1) 版更新
( 1) 23/05/03 13:39 10809:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
DOSVAXJ3,どんどんブラッシュアップしていますね。素晴らしいです。

VTDOS の方も,[ALT]キーで Windows の警告音が鳴る不具合(CKWV のですが)が
修正されて,他にも色々悩みのタネが解消してゆくのでとても嬉しいです。


10813/10809 BQO00549  konno            Re^2: DOSVAXJ3 (2023/5/1) 版更新
( 1) 23/05/03 20:25 10812:めざらさんへのコメント コメント数:1
> DOSVAXJ3,どんどんブラッシュアップしていますね。素晴らしいです。

問題点を特定して修正する速さ正確さは流石プロですね。レベチです!

> VTDOS の方も,[ALT]キーで Windows の警告音が鳴る不具合(CKWV のですが)が
> 修正されて,他にも色々悩みのタネが解消してゆくのでとても嬉しいです。

そういえば、CKWV の私家版も手を付けようと思ったのですが、ヘッダーファイルを開いたら
何故か EUC モードになってしまって、私家版VZにまだバグがあったかと焦りました。

色々調べた結果、VZ.DEF の !Open の記述の順番に問題が有ることが判明しました。(>_<)
散々VZのソースばかり見てて実はマクロだったとは、低レベルにもほどがあるという。(^^;;

そろそろ私家版VZもアップしようかな。(デバッグは皆にやってもらう他力本願式 (^^;;)


10814/10809 BNY00646  shadow           Re^3: DOSVAXJ3 (2023/5/1) 版更新
( 1) 23/05/05 10:48 10813:konnoさんへのコメント コメント数:1
> そろそろ私家版VZもアップしようかな。(デバッグは皆にやってもらう他力本願式 (^^;;)
デバッグに協力できるかわかりませんがアップしてください。
うちはエミュレーターのみの試用になります。


10815/10809 BQO00549  konno            Re^4: DOSVAXJ3 (2023/5/1) 版更新
( 1) 23/05/05 20:47 10814:shadowさんへのコメント コメント数:1
> デバッグに協力できるかわかりませんがアップしてください。
> うちはエミュレーターのみの試用になります。

それでは、暫定版ですが、アップしてみます。

・・・と思ったら直前でバグが発覚しました!

しばしお待ちください。m(__)m

10816/10809 BQO00549  konno            Re^5: DOSVAXJ3 (2023/5/1) 版更新
( 1) 23/05/09 21:59 10815:konnoさんへのコメント
> それでは、暫定版ですが、アップしてみます。
> ・・・と思ったら直前でバグが発覚しました!

このバグは意外と根が深く、3月23日の版まで遡って、memo.asm を差し替えたら直ったようです。
と思ったら VZ.DEF が壊れるバグが発覚しました。色々調べてみたら VZ.DEF のサイズが
34,527bytes になっていて、32k を超えていて、これかと思ってサイズを減らしました。(^^;

memo.asm は関係なかったかと思い、元に戻したら、またバグが出たのです。
差し替えた memo.asm は、jcxz を追加した方で、こちらだと正常になるのでした。
うーん、よくわからないけど、これでアップするかぁ。(^^;


10817/10817 BQO00549  konno            私家版VZk07v6i 更新
( 1) 23/05/09 23:50 コメント数:2
私家版VZk07v6i 更新しました。
バグバグで再々アップです。(^^;

k07v6i (2023-02-28〜05-09)バグにより差替え
 ・k07t5 までの機能は全部取り込んであると思います。
 ・Rf+ DOS窓SFNファイラーでも #R でロングファイル名変更(大文字小文字区別)
    バッファの制限により、パスの長さ約80文字以上ではSFNとなる。
 ・Sl ステータスライン表示オプション変更 0:free +1:time +2:LFN View open
  sl2 ならステータスラインでロング名表示 (Win9x、WinXP、MS-DOS Playrは sl2は指定しない)
 ・編集モード [ESC]P [ESC]S でロングファイル名変更(大文字小文字区別)
  ※ この機能は VTDOS と DOSVAXJ3(lfn_space=true) の場合に正常動作します。
 ・WinNT系のDOS窓コマンドラインの安定化 (検証中)
 ・[ESC]i ファイル挿入時のVZの不具合を修正してみた (検証中)
  ※BL1024*3 だとファイル内容が壊れます。(全てのVZで起こるバグなのでこの設定は危険)
   
不具合を見つけたら掲示板に報告願います

 ダウンロード  VZK07V6i.lzh ver1.60k07v6i (2023-05-09版 再再アップ) new!
    ソース 2023-05-09  50,382bytes  再再アップ(^^;  K07V6is.lzh new!


ドキュメント VZK.DOC 2023-03-04 new!


追記

SLオプションの表記の間違いを直しました。

# げげ、SL弄ったままセーブしてまた大文字になっちまった〜 (>_<)

10818/10817 DGF01024  めざら           Re: 私家版VZk07v6i 更新
( 1) 23/05/12 15:57 10817:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
>  ・Sl ステータスライン表示オプション変更 0:time 1:free 2:LFN View open 3:sl1+sl2

 ここは仕様が先祖帰りしたわけではなくて,
・Sl ステータスライン表示オプション変更 0:free +1:time +2:LFN View open
……と,先の撤回版と同じですね?

長いファイル名は,大文字小文字きちんと表示されているようです。

ひとつだけ上の関係で気になったのが,例えば VZ.COM というファイル名(当然,
実行ファイルですね)を改名して「VZ.COM_k07v6d」などとした場合なのですが,
短いファイル名は「VZ[xxxx]~1.COM」となって,ファイラーでの表示は依然として
実行ファイル扱い(表示属性が)になりますが,これは Windows の仕様でしょうか。
そもそもな話で混ぜ返すみたいで申し訳ないですが,参考までに教えてください。

10819/10817 BQO00549  konno            Re^2: 私家版VZk07v6i 更新
( 1) 23/05/12 23:52 10818:めざらさんへのコメント コメント数:1
> >  ・Sl ステータスライン表示オプション変更 0:time 1:free 2:LFN View open 3:sl1+sl2
>  ここは仕様が先祖帰りしたわけではなくて,
> ・Sl ステータスライン表示オプション変更 0:free +1:time +2:LFN View open
> ……と,先の撤回版と同じですね?

あう、間違えたままでした〜 (>_<)
ご指摘ありがとうございます。表記を直します。m(__)m

> ひとつだけ上の関係で気になったのが,例えば VZ.COM というファイル名(当然,
> 実行ファイルですね)を改名して「VZ.COM_k07v6d」などとした場合なのですが,
> 短いファイル名は「VZ[xxxx]~1.COM」となって,ファイラーでの表示は依然として
> 実行ファイル扱い(表示属性が)になりますが,これは Windows の仕様でしょうか。

ファイラーの表示はVZの管理下なので、DOSの仕様の範囲内だと思います。
VZは、表示属性はショート名で判断しているはずです。
拡張子が .com 以外に変わらなければ実行ファイルと判断するでしょう。


10820/10817 DGF01024  めざら           Re^3: 私家版VZk07v6i 更新
( 1) 23/05/13 06:49 10819:konnoさんへのコメント
参照先:http://mezala.la.coocan.jp/
> VZは、表示属性はショート名で判断しているはずです。

なるほど。わかりました。DOSエミュ環境では,4文字以上の拡張子は3文字に丸められ,
その3文字(…のうち先頭2文字)で VZ は *E に設定された表示属性に従って表示する。
……って感じかな。
折を見て,純DOS環境やXPモード(等のNTVDM)で確認してみたいと思います。
ありがとうございました。

10821/10817 DGF01024  めざら           Re: 私家版VZk07v6i 更新
( 1) 23/05/14 17:09 10817:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
検証をお願いします。>みなさま

うちで出ている症状ですが,[ESC]I 系のマクロ,または自作の Umenu.def において,
小さなテキスト(一行に満たないような)を挿入すると,
・直後にヌルが大量に出力される
・あるいは,直前にオープンしていたファイルが続けて挿入される
……という現象が出ています。これは初めての経験です。

opt_lst.def を実行したら,VTDOS から警告あり,VZが落ちました。
VZ(185E) 185E:09EA 'REP MOVSW 命令ラップアラウンド'

ちょっと厳しい状況です。

opt_lst.def を実行すると落ちてしまうので,細かいリストは出せませんが,
メモリ関係だと,XMS 最大 16384KB使用(xm1),em0,bt64,sw3,bm30000,bl8132,
……という値で起動しています。

10822/10817 BQO00549  konno            Re^2: 私家版VZk07v6i EOF絡みでバグ? 
( 1) 23/05/14 23:06 10821:めざらさんへのコメント コメント数:1
> うちで出ている症状ですが,[ESC]I 系のマクロ,または自作の Umenu.def において,
> 小さなテキスト(一行に満たないような)を挿入すると,
> ・直後にヌルが大量に出力される
> ・あるいは,直前にオープンしていたファイルが続けて挿入される
> ……という現象が出ています。これは初めての経験です。

すみません、まだバグバグだったようです。m(__)m

うちでも小さいファイルの EOF 上でエンターや文字追加などすると別領域のテキストが挿入されました。
公開停止して調べてみます。


10823/10817 DGF01024  めざら           Re^3: 私家版VZk07v6i EOF絡みでバグ? 
( 1) 23/05/15 08:36 10822:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
> 小さいファイルの EOF 上でエンターや文字追加などすると別領域のテキストが挿入

これ,挙げていませんでしたが,わたしの手元でも事例がありました。
よろしくお願いします。

10824/10817 BQO00549  konno            Re^4: 私家版VZk07v6i EOF絡みでバグ? 
( 1) 23/05/17 22:57 10823:めざらさんへのコメント
> > 小さいファイルの EOF 上でエンターや文字追加などすると別領域のテキストが挿入
> これ,挙げていませんでしたが,わたしの手元でも事例がありました。

すみません、これは以前発覚して直したと思っていたバグでした。
どうやって直したか忘れてしまって時間が掛かってしまいました。(アルツじゃ〜)
過去記事で書いたと思ったのをやっと検索出来ました。(^^;

#10558: Re^4: DOSVAXJ3で開けないファイル 投稿者: konno   2023/02/16
>> "確定申"フォルダを作ったら、"確定・"になってしまい、その中の"確定申"ファイルを開いたら
>> "・"が $1A になって、中身がマクロのテキストに繋がってしまいました。
> これは、[ESC]i 不具合修正で混入したVZKのバグだったようです。
> 開いたテキストの末尾で文字を挿入すると発生していました。

これと同じバグだと思います。
それで、バグのないソースがもうわからなくなってしまったので 、(^^;

#10624:vzk07v6h UP  投稿者:konno   2023/03/15

この時公開したソースからやり直しました。
これのバグを修正したら、良くなったようです。
しばらく運用して問題なければこれをアップしようと思います。


10825/10825 BQO00549  konno            私家版VZk07v6j 更新
( 1) 23/05/19 23:11 コメント数:1
私家版VZk07v6j 更新しました。


k07v6j (2023-02-28〜05-19)
 ・k07t5 までの機能は全部取り込んであると思います。
 ・Rf+ DOS窓SFNファイラーでも #R でロングファイル名変更(大文字小文字区別)
    バッファの制限により、パスの長さ約80文字以上ではSFNとなる。
 ・Sl ステータスライン表示オプション変更 0:free +1:time +2:LFN View open
  sl2 ならステータスラインでロング名表示 (Win9x、WinXP、MS-DOS Playrは sl2は指定しない)
 ・編集モード [ESC]P [ESC]S でロングファイル名変更(大文字小文字区別)
  ※ この機能は VTDOS と DOSVAXJ3(lfn_space=true) の場合に正常動作します。
 ・WinNT系のDOS窓コマンドラインの安定化 (検証中)
 ・[ESC]i ファイル挿入時のVZの不具合を修正してみた (検証中)
  ※BL1024*3 だとファイル内容が壊れます。(全てのVZで起こるバグなのでこの設定は危険)
   詳細は掲示板を読んでください。不具合を見つけたら掲示板に報告願います

 ダウンロード  vzk07v6j.lzh ver1.60k07v6j (2023-05-19版 ) new!
    ソース 2023-05-19  50,468bytes  K07V6js.lzh new!

10826/10825 DGF01024  めざら           Re: 私家版VZk07v6j 更新
( 1) 23/05/21 13:33 10825:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
更新,お疲れ様です.
日常の定型的なルーチンをあれこれ行ってみましたが,今のところ異常はありません.
(このところ,あまり大きなファイルはいじらないようにしているので,ハードなことはしていませんが)

何か「これやってみて」とかあったら仰ってください.
LXが復活したので,純DOS環境レポートも可能です.

10827/10825 BQO00549  konno            Re^2: 私家版VZk07v6j 更新
( 1) 23/05/21 22:50 10826:めざらさんへのコメント
> 日常の定型的なルーチンをあれこれ行ってみましたが,今のところ異常はありません.
> (このところ,あまり大きなファイルはいじらないようにしているので,ハードなことはしていませんが)

確認頂きありがとうございます。
私の普段の運用だけでは問題無いように思えるので、他の人の環境での検証が必要です。
今度こそバグが無くなっていますように。(-人-)

> 何か「これやってみて」とかあったら仰ってください.
> LXが復活したので,純DOS環境レポートも可能です.

色々弄っているので、純DOS環境で問題ないかが気になります。
何か気づくことがありましたらよろしくお願いします。


10828/10828 BQO00549  konno            BL1024*3(3072)のバグの検証
( 1) 23/05/25 01:41 コメント数:1
去年発覚したVZの大きなバグ、BL1024*3(3072)のバグの検証です。
#10682. VTDOS+EMS+VZでの不具合検証 のツリーでも話題にしましたが
VTDOSのEMSのバグが直ったので、VZのバグとして新スレッドにしました。

基本的に、[ESC]I マクロと、としきさんのテストデータで検証しています。
・BL1024*8(8192) 近辺で実行すると、CPズレが起こり、テキスト内容が壊れる。
・BL1024*3(3072) 近辺では、テキスト内容が壊れ、サイズも増減し、ラップアラウンドエラーになります。
・BL1024*2(2048)以下の時、比較で一致しても直後に[F02]窓替えで再比較すると文字化けが出る(BL以下の行にLF?)

で、最近気が付いたのは、BT32 だとBL1024*3(3072) で正常に処理されるのです。

vzk
BL1024*3(3072) BT59以下正常 BT60以上は異常

vzt
BL1024*3(3072) BT59以下正常 BT60以上は異常 ※ BLの長さを超える行で文字化け?
BL1024*8(8192) BT64 CPズレ
BL1024*8(8192) BT59以下 CPズレ無し
BL1024*9(9216) BT64 CPズレ無し

これは面白いですね。
Emmett さんが BT32 を好んでいた(ように見えた)理由とも繋がっていたりして。


10829/10828 BNY00646  shadow           Re: BL1024*3(3072)のバグの検証
( 1) 23/05/30 09:08 10828:konnoさんへのコメント コメント数:1
> vzk
> BL1024*3(3072) BT59以下正常 BT60以上は異常
検証中なのは承知の上で、VZ1.6各版共通のバグだと思うのでもし、tVZに[ESC]i 関連だけのソース修正パッチを作れるのであればほしいです。

> Emmett さんが BT32 を好んでいた(ように見えた)理由とも繋がっていたりして。
うちのオプションがなぜBT32変更されているのか考えてみました。
以前LXLOADERを使っておりbf_plus.docを見ていじった名残だったのでした。


10830/10828 BQO00549  konno            Re^2: BL1024*3(3072)のバグの検証
( 1) 23/05/30 21:36 10829:shadowさんへのコメント コメント数:1
> 検証中なのは承知の上で、VZ1.6各版共通のバグだと思うのでもし、tVZに[ESC]i 関連だけのソース修正パッチを作れるのであればほしいです。

なるほど、tVZ で同じパッチが有効であれば検証も一歩前進出来るかもですね。
どうせやるなら、LFNパッチも付加した方がいいですか、簡単なので。

> > Emmett さんが BT32 を好んでいた(ように見えた)理由とも繋がっていたりして。
> うちのオプションがなぜBT32変更されているのか考えてみました。
> 以前LXLOADERを使っておりbf_plus.docを見ていじった名残だったのでした。

bf_plus.doc を読んでみました。
マクロの読み込みバッファを32k確保するための BT32 なんですね。関係なかったか。(^^;
この問題は、高橋版で対処されているようです。

TEXT.ASM  11行目
Z_TBSIZE	equ	MIN_TBSIZE * 2	; ##t  800h  &z() 時、最低 32KB 確保

コメントは私が追加したものです。


10831/10828 BNY00646  shadow           Re^3: BL1024*3(3072)のバグの検証
( 1) 23/05/31 07:43 10830:konnoさんへのコメント コメント数:1
> なるほど、tVZ で同じパッチが有効であれば検証も一歩前進出来るかもですね。
> どうせやるなら、LFNパッチも付加した方がいいですか、簡単なので。
確かにLFNはある方が便利ですね。
LFNパッチ付加でお願いします。

10832/10828 BQO00549  konno            Re^4: BL1024*3(3072)のバグの検証
( 1) 23/06/01 01:42 10831:shadowさんへのコメント
> 確かにLFNはある方が便利ですね。
> LFNパッチ付加でお願いします。

LFNパッチ付加でやってみました。
テスト環境では問題なく動作しました。
明日にでもアップしようと思います。


10833/10833 BQO00549  konno            高橋版VZ用バグ対策パッチ 検証テスト版
( 1) 23/06/01 21:21 コメント数:1
高橋版VZ用に [ESC]I バグ対策パッチ 検証テスト版アップしました。
「自作、改作アプリの放置部屋」 に置きました。

・全てのVZにおいて VZ標準の [ESC]I マクロと、としきさんのテストデータで起こるバグ
  BL1024*8(8192) 近辺で実行すると、CPズレが起こり、テキスト内容が壊れる
  BL1024*3(3072) 近辺では、テキスト内容が壊れ、サイズも増減し、ラップアラウンドエラーになります
  BL1024*2(2048)以下の時、比較で一致しても直後に[F02]窓替えで再比較すると文字化けが出る(BL以下の行にLF?)
 これらのバグを対策してみたkVZ最新版のパッチを高橋版VZに適応してみました。現在検証中です。
・ついでに NT系でのLFN対応パッチも付加しました。

高橋版VZに対する自己解凍差分になっています。

ダウンロード VZt-p.lzh サイズ 4953bytes  23-06-01 new!

ソース VZt-ps.lzh サイズ 1,864bytes  23-06-01 new!

・ソースの変更点
  TEXT.ASM  [ESC]I BL3072 BL8192 BUG対策(検証中)
  KEYIBM.ASM MASM6でもアセンブルできるように変更
  FILER2.ASM LFNパッチ
  MEMO.ASM  VTDOSエラー回避

 動作保証はでき無いので実行は自己責任で。


10834/10833 CRG00666  文太             Re: 高橋版VZ用バグ対策パッチ 検証テスト版
( 1) 23/06/02 23:53 10833:konnoさんへのコメント コメント数:2
konnoさん(and shadowさん)

 いいですね、このプロジェクトと方向性!
 僕も参戦したいのですが、まだちょっとヘロヘロなんです。どうしてこう次々あるのか。
どうしてこう簡単に疲れてしまうのか。
 雨でお野菜さんたちの状態も気になるし、、、。

 今日、Win11の新品マシンを作り始めました。まーぶるの6万円ぐらいのマシン。データ
保存、バックアップ用のHDを入れなくちゃ、、、。
 Win7なSSDが壊れて2週間。プリンタ(必須)がおかしくなって3か月。ついでに
ME機も不調!
 そこらじゅう故障だらけ。CDプレーヤまで修理に出した、、、。
 とほほ。

 とにかく、興味深く見守らせていただいておりますので、頑張ってくださいね。
 あのテキストバッファ&ラインバッファとEMSその他の根本的バグ(怖くて大きな
ファイルをいじる気になれない)は、ほんと挙動を見定めさせていただきたいとは
思っています。
 としきさん、やっぱ本物です。多謝。

 本格的に別のエディタに移る気はやっぱりないので、生きろ! Vz。生かせ!
自分たちの手で。なんて気持ちはまだまだもってます。

 Win11機にしたら、IMEの挙動がとっても変わってますね、スマホみたい?
なんだこりゃ?

 いろんなことの整備にまだまだ時間がかかると思いますが、必ず戻りますので、
がんばってくださいね! お願いしたいような気持ちでおります。

 でも、お仕事関係のゴールは見えました! 失業保険もらうぞ、みたく。
 まだまだちょっと時間がかかるのですが。選択定年制です!
 すぐじゃなくて、先ですけどね。



10835/10833 CXB00940  としき           Re^2: 高橋版VZ用バグ対策パッチ 検証テスト版
( 1) 23/06/03 00:38 10834:文太さんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
>  今日、Win11の新品マシンを作り始めました。まーぶるの6万円ぐらいのマシン。

あ〜、私もそろそろWin11を考えなくては。
最近のWinって、OS単体で売っているのかな。そういうこともわからなくなった。
今浦島、って感じ。

>  Win11機にしたら、IMEの挙動がとっても変わってますね、スマホみたい?

これ、プロパティいじって何とかならないのかな?
数ヶ月前に職場で新しく配布されたノートPCもIMEの挙動になじめなくて、
何ヶ所かプロパティをいじってやっと何とか我慢できるくらいに持ってきた。
予測変換とか、私は使わないんでね。

10836/10833 CRG00666  文太             Win11's IME
( 1) 23/06/03 11:08 10835:としきさんへのコメント コメント数:1
>>  Win11機にしたら、IMEの挙動がとっても変わってますね、スマホみたい?"
>これ、プロパティいじって何とかならないのかな?
 「設定」の中に入って、「予測変換」オフにしたら、できました!
 ざっと眺めてみると、うーん、複雑に進化しておりますなぁ。
 もう辞書の管理とかすっかりしなくなってるしなぁ、、、。老後はこのあたりから
ちまちま攻めます。

>何ヶ所かプロパティをいじってやっと何とか我慢できるくらいに持ってきた。
 必要なんでしょうね、これ。よく分からんのいっぱい。
 とりあえず、Win11で、Vzが使えてます。昨晩メニューで文字化けをみたけど
(F01の連打のとき)、とりわけ問題なくいってるみたいです。
 もちろん、VTDOS & CKWV さまさま。m(__)m

 これから、データのたぐいをごっそりコピーです。VZLOGとか。8GBぐらいの
DDWIN用辞書データは昨晩やりました。DDWIN、健康。よろしい。

 マシン設定初期のデフォ、CapLock<->Ctrl,ESC<->全半のレジストリでの入れ替え
は従来どおりでいけました。よかった、よかった。
 Win11なのかマシンなのか、起動がはやくてよいです。

 CPUは、こんな感じのマシン。
Intel(R) Xeon(R) E-2124G CPU @ 3.40GHz   3.41 GHz
 32GBのラムですと。はぁ。純DOSって、1パーティション2GB、全部で8GB
のHDまでしか管理できないはずなのですが。比較するな!

 しかし、IMEがまだまだ色々と邪魔してくれる、、、。うう、「無変換」キーが
IMEに取られる、、、。「なし」にできないみたい、、、。

 OSの単体売り。僕も欲しい気もするけど、気力ないかなぁ。そのあとのドライバ
探しとか考えると、いっかなぁ、なんて感じです。HDコピーでずっと済ませてきてる。

 すいません、「高橋版Vzからの検証」プロジェクトにまだまだちっとも
貢献できそうにありません。ぼちぼち、、、いかせてください。



10837/10833 BQO00549  konno            Re^2: 高橋版VZ用バグ対策パッチ 検証テスト版
( 1) 23/06/03 15:16 10834:文太さんへのコメント
>  いいですね、このプロジェクトと方向性!

そうですね、最新の私家版はまだ安定しているかわからないし・・・
安定版と思われる版にもパッチ版出してみようかしら。

>  僕も参戦したいのですが、まだちょっとヘロヘロなんです。どうしてこう次々あるのか。
> どうしてこう簡単に疲れてしまうのか。

文太さんはあれこれ抱えすぎなのでしょうね、一休みも無駄にはならないと思います。

>  雨でお野菜さんたちの状態も気になるし、、、。

凄い雨でしたね。畑とかの被害も凄そうで、また野菜が値上がりしそうですね。

>  今日、Win11の新品マシンを作り始めました。まーぶるの6万円ぐらいのマシン。データ
> 保存、バックアップ用のHDを入れなくちゃ、、、。

おめでとうございます! Win11 での VZ 動作報告も期待してます。(^_^)

>  Win7なSSDが壊れて2週間。プリンタ(必須)がおかしくなって3か月。ついでに
> ME機も不調!
>  そこらじゅう故障だらけ。CDプレーヤまで修理に出した、、、。
>  とほほ。

うちもSSD 2年で壊れたし、PCのトラブルで入れ替えも最近頻繁なので、仕方がないところはありますよね。

>  本格的に別のエディタに移る気はやっぱりないので、生きろ! Vz。生かせ!
> 自分たちの手で。なんて気持ちはまだまだもってます。

ほんとそうですね。もし私一人だけならもうとっくに更新もしてなかったでしょう。
DOSエミュ作者様がたもユーザーがいるからモチベーションを保っておられると思います。

>  Win11機にしたら、IMEの挙動がとっても変わってますね、スマホみたい?
> なんだこりゃ?

予測変換ですか? スマホに慣れた人にはいいのかもしれませんね。

>  でも、お仕事関係のゴールは見えました! 失業保険もらうぞ、みたく。
>  まだまだちょっと時間がかかるのですが。選択定年制です!
>  すぐじゃなくて、先ですけどね。

私も定年に近づいたとき同じような心境だったと思います。
セカンドライフをどう描くか考えるようになりましたね。


10838/10833 CRG00666  文太             Win11's IME (2)
( 1) 23/06/03 16:16 10836:文太さんへのコメント コメント数:2
 そうかぁ、まだWin11な人というのは少ないのかな?
 では少しだけ。

 まず前段。Win7なマシンをどれくらい使ったのか記録も記憶もないのですが、
たぶん、XP→7→11な展開なはずなので、かなり長かった。HD3台と
SSD1台にブートディスクコピーをして、ずっとそのまま使い続けてきた。
きっと10年以上。
 な、長い。データディスクも、そこそこ全ディスクコピーして使ってきました。

 注意点は、SSD(ブートディスク)は割とサドンデス的に死ぬ、ということ。
Cドライブのデータは、割と定期的に全バックアップをデータドライブHD(D:)
にしてきたのだけど、今回は運が悪くて苦労しました。
 OSが起動できなくなったから、いわばマシン全体が死んだ状態になった。
 その古いマシンの詳細な検証はいまだできず。

 HDの場合には、「あ、やばそうだな。コピー&交換」とか思う余裕があった。
SSDではなかった。ご注意を。SSDの寿命は2年くらいだったと思う。
コロナがあったりしたし(オンライン授業)、YouTube & Netflix とかあったから
たぶん、けっこうな時間、使われたのだとは思うけど。

 もちろんその後、USB接続のHDケースにブートSSDをくっつけて、最新
データファイル群を救出することはできました。

 そうそう、これは古すぎる話っぽいですが、古いマシンの古いマザーボードには
HDが2TBまで、という壁がありました。この新しいのでは3TBHDが認識
できるのか、この実験は、これからです。


 さて、Win11。IMEを「従来のにする」に設定しました。そして、画面右下
(名前なんだっけ?)の「あ」を右クリックで、「プロパティ」−「詳細設定」−
「編集操作」−「キー設定」−「変更」から、従来のように1キー1キー好きなように
カスタマイズできます。ここで「無変換」キーの右の奴らを全部削除。これで、
「無変換」キーをIMEから解放できます。僕のばあいは、exmenuのキー。

Nf+			;DosVで[NFER]を[無変換]と読みかえ
 これが効く。

 なんですが、ckwvなのかvtdosなのか? 2バイト文字(日本語)がメニュー内で
化けます。テキスト上でも化けます。

 ふむ、「無変換」を無内容にしても、IMEが立っているとキーを取られるみたい。
exmenuに届かないぞ。
 さて、どうしたものか、、、?

 Win11だと、きっと皆困ると思う。それまで、メニュー内の日本語は排除して
生きるのかなぁ。

 こんな状態です。


 うーん、いっぱい抱え込んじゃう人なのかなぁ。
 今日は、雨があがったので、ひたすらだらだら、_Who Killed Classical Music?_
というかなり暗い本をずっと読んでます。癒しタイムです。

 ネットワーク上のIDとかパスワードが全部飛んでしまっている状態なので、
PC触るのが億劫です。いちいち全部調べて打ち込みなおしなのです。
 Win7マシンのOS、いっぱい記憶してくれてたのねぇ、、、。とほほ。


10839/10833 DGF01024  めざら           Re: Win11's IME (2)
( 1) 23/06/04 08:37 10838:文太さんへのコメント
参照先:http://mezala.la.coocan.jp/
>  そうかぁ、まだWin11な人というのは少ないのかな?

Win10と異なり,少し古めのハードには導入できなくなりましたからね。8世代以降?

うちは,作業用(基本的にバッチを走らせるだけ)の端末にWin11を導入してみたところ,
そのインターフェースの酷い改悪に辟易してしまい,他の常用マシンはギリギリまで
導入しないつもりでいます。
そのうちWin10ライクなインターフェース(タスクバー,スタートメニュー,コンテキスト
メニューの使い勝手)にする設定またはフリーウェアが出てくるでしょう。


■メニューなどの文字化け

「レガシーコンソールを使用する」設定が無効になっていませんか?
#8667 を参照してみてください。


■「無変換」→[NFER]

Win-IMEだと,かな入力モードでなくても取られちゃいますね。うちの環境でも同様です。
わたしは Google-IME を常用しているので気付きませんでした。
Google-IME なら,かな入力(「あ」の状態)でも無変換が[NFER]として通ります。

自分がずっと Google-IME を愛用している理由は,固有名詞(人名)に強いということも
あるのですが,キーカスタマイズがかなり自由であること,keymap をテキストで出力でき
他の環境に即座にインポートできることです。もう手放せない。……と思っていましたが,
最近,記号の候補が変に変わってしまったり,環境依存文字が優先候補で表示されたりして
ちょっと困惑中。


10840/10833 BQO00549  konno            各種DOSエミュで [NFER] は使える?
( 1) 23/06/05 17:09 10838:文太さんへのコメント
>  さて、Win11。IMEを「従来のにする」に設定しました。そして、画面右下
> (名前なんだっけ?)の「あ」を右クリックで、「プロパティ」−「詳細設定」−
> 「編集操作」−「キー設定」−「変更」から、従来のように1キー1キー好きなように
> カスタマイズできます。ここで「無変換」キーの右の奴らを全部削除。これで、
> 「無変換」キーをIMEから解放できます。僕のばあいは、exmenuのキー。

これは Win10 でもほぼ同じではないかと思います。私もやりました。
と思ったら、「無変換」キーが効かなくなっていますね。(^^;
壊れた前のノートPCでやっていたのだったか・・・またやり直しました。

> Nf+			;DosVで[NFER]を[無変換]と読みかえ
>  これが効く。
>  なんですが、ckwvなのかvtdosなのか? 2バイト文字(日本語)がメニュー内で
> 化けます。テキスト上でも化けます。

この症状は無いですね。2バイト文字(日本語)が全部化けるのですかね?

>  ふむ、「無変換」を無内容にしても、IMEが立っているとキーを取られるみたい。
> exmenuに届かないぞ。

これは同じですね、気になったので各種エミュで確認してみました。

VTDOS		IME OFF IME ON	SCAN
[無変換]	〇	x	AB00
\[無変換]	〇	x	AC00
^[無変換]	〇	x	AD00
@[無変換]	〇	〇	AE00

ALT+だけは IME ON でも OK なのが面白いですね。

MS-DOS Player	IME OFF IME ON	SCAN
[無変換]	x	x	7B00
\[無変換]	x	x	7B00
^[無変換]	x	x	7B00
@[無変換]	x	x	7B00

全滅です。SCANコードは 全て 7B00 で、これは仮想キーコード?
もちろんマクロキーとしても使えません。

DOSVAXJ3	IME OFF IME ON	SCAN
[無変換]	〇	〇	-
\[無変換]	〇	〇	-
^[無変換]	〇	〇	-
@[無変換]	〇	〇	-

全てマクロ起動キーとして使えます。が、SCANコードは出ていない?
何故マクロキーとして使えるの???

NP2		FEP OFF FEP ON	SCAN
[NFER]		x	x	5100
\[NFER]		x	x	A100
^[NFER]		x	x	9D00
@[NFER]		x	x	5100

あれぇ??? PC-98 と何が違うんだろう?


10841/10841 BQO00549  konno            CKWV 私家改造版 CKWV111
( 1) 23/06/07 23:00 コメント数:2
CKWV 私家改造版 CKWV111 を VZの部屋にアップしました。
今回は変更したソースも同梱しています。

 10#さんの改造されたCKWVをちょっと改造
 ・マウスホイールの送出コードにシフト系が残るのを修正したつもり
 ・オリジナルはマウス右クリックでペーストだが、シフトを押しながら右クリックに変更
 ・Ckw*touchsc: yes オプション追加、有効時、マウスの左クリックで何もしない タッチパネル用
 ※動作保証は出来ないので、ご使用は自己責任で

2023-06-07
 ・10#さんの最新 CKWV11 に私の改造を追加
 ダウンロード 変更ソース付き ckwv111.zip 127kb(2023-06-07版) new!


10842/10842 BQO00549  konno            私の欲しいものリスト
( 1) 23/06/11 00:11 コメント数:1
私の欲しいものリストを揚げてみます。

1.とらじ氏作 TAGLIGHT.EXE のソース
  VZをカラフルにしてくれる超便利な常駐ソフトです。
  現状バッファなどいくつか制限があるので改造したいのですが
  ソ−スレベルでないと改造は無理そうなのです。


2.PCDOS6.3V初期版に対応させるVZのパッチソース
  PCDOS6.3V初期版はVZ常駐で起動できなかったのを対応させたVZパッチがあったと思います。
  
README.TXT -- PC DOS 2000 日本語版 ご使用上の注意事項 より
3.4.6 Vz エディター
--------------------
 Vzエディターの常駐モードでESCキーが効かない場合、VzエディターにPC DOS
J7.0/V用のパッチを当てている可能性があります。元のVzエディターをお使い
ください。

このパッチ版VZのソースか、VZ本体が欲しいです。
今のDOSエミュでも、command.com によってはVZの起動がうまくないものがあります。
その原因を突き止める参考になると考えています。


10843/10842 DGF01024  めざら           Re: 私の欲しいものリスト
( 1) 23/06/11 07:49 10842:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
とらじさんは,すっぱりと過去を切り捨てたのではないかと思われるわけで,おそらく
過去のリソースは残されていないでしょうね.天才的なセンスがあったのに残念です.

pascal か Delphi で書いていることは確実なので,逆コンパイルしてみてはいかがかと.
所謂リバースエンジニアリングと言われるアレですが,元がフリーウェアですから
道義的にどうこうということもないのではないかと思います.

以前,とらじさんが clppst を破棄しようとしていたときに,再配布の許可をくれなきゃ
逆コンパイルしてクローン作る覚悟と伝えたところ,許可された経緯がありました.

一応 facebook で繋がってはいるので,聞いてみるだけはできると思いますが,
おそらくきっと絶対に「捨てたので残っていない」と言われることでしょう.

10844/10842 BQO00549  konno            Re^2: 私の欲しいものリスト
( 1) 23/06/11 17:41 10843:めざらさんへのコメント
> とらじさんは,すっぱりと過去を切り捨てたのではないかと思われるわけで,おそらく
> 過去のリソースは残されていないでしょうね.天才的なセンスがあったのに残念です.

以前そのような話を聞いた気がします。
とらじさんはニフティのメンバーサイトを開設してそこに置いていたように思うので
誰かしらソースを落として保存している人がいるのではないかという一縷の望みに賭けたのです。

> pascal か Delphi で書いていることは確実なので,逆コンパイルしてみてはいかがかと.
> 所謂リバースエンジニアリングと言われるアレですが,元がフリーウェアですから
> 道義的にどうこうということもないのではないかと思います.

逆コンパイラの話は以前調べたことがあるのですが、中途半端で終わっていました。
また調べてみます。

> 以前,とらじさんが clppst を破棄しようとしていたときに,再配布の許可をくれなきゃ
> 逆コンパイルしてクローン作る覚悟と伝えたところ,許可された経緯がありました.

「逆コンパイルしてクローン作る」おお、出来るということですか。(゚゜)☆\(--#)バキッ
いや、そのキーワードが意味不明に思えたので。(^^;
あ、わかった、ソースを解読して別の物を作るということですか。(^^;
私にもそれくらいのスキルがあれば・・・
clppst.exe のソースを見てみましたが、まったくわかりませんでした。(>_<)

> 一応 facebook で繋がってはいるので,聞いてみるだけはできると思いますが,
> おそらくきっと絶対に「捨てたので残っていない」と言われることでしょう.

繋がっているのであれば、一度聞いてみてくれませんでしょうか。駄目もとで。m(__)m
当時は初期のリブレット使いだったので、もう動かないでしょうが、データはどうでしょう。
Win98時代ですものね。


10845/10841 BQO00549  konno            CKWV111 マウスでリサイズ時最小行数を10行に
( 1) 23/06/11 23:47 10841:konnoさんへのコメント
CKWV111 の変更に漏れがありました。

・マウスでリサイズの時最小行数を10行に(VTDOSの指定可能行数は6行)V11.1

CKWV11 では、マウスでリサイズを解禁されました。
実際にやってみると、VTDOSの指定可能な6行まで一気に行を減らすことができます。
これは私の想定外で、数字指定ならいいのですが、マウスで6行になるのは流石にまずい気がしました。

そこで、CKWVでマウスでリサイズの時は、最小10行までになるように CKWV を変更しました。
10行くらいならリサイズしても問題が出ることはほぼ無いだろうという考えです。
この行数は、オプションで変更することも可能だと思うので要望があれば考えます。(^^;

CKWV にはまだまだいろんな可能性を感じますね。


10846/10841 BQO00549  konno            CKWV マウスでリサイズ時のVZ正常化マクロ
( 1) 23/06/14 01:17 10841:konnoさんへのコメント
CKWV マウスでリサイズ時はVZはコマンドラインでないと表示が異常になります。
その時にVZを正常化するマクロを作りました。

本当は CKWV のリサイズ時にVZに特定のキーを送れるのでそのマクロの
起動キーにしようとしたのですがうまくキーが遅れていないようです。
10♯さんのVZソースも導入してみましたがまだうまく動作出来ていないです。
メニューモードのときに問題が出るのは10♯さんのコードを導入すれば解決しそうですが。

とりあえず当分は、このマクロは表示の正常化用とすることにします。
画面サイズを変更したときに表示以上になった時もこのマクロで正常化できると思います。

=== resize.def ===

*m
;80 @R "表示行数切替え"		;2024-04-26  v0.52
80 ^\ "表示行数切替え"		;2024-04-26  v0.52
	(s>=3)?.			;窓モードなら終了
	(s==1)?.			;窓モードなら終了
	&s sx[-, 			; コンソール取り込み停止
	dx0, &08 w[, &00 w=vp.26,	; コマンド実行
 	&09 sx], &d .			; wa wb テキストの設定調整

00:	bx0, cx0,			; bx:桁 cx:行 ローメモリから取得
	&i("$(50,06,33,C0,8E,C0,26,8A,1E,4A,04,26,8A,0E,84,04,07,58,C3)")
	ax0,cx++,(lc!=cx)?{lc=cx,ax1,}
	(vp.26!=bx)?{vp.26=bx, ax1,}
08:     (s!=2)? { dx1,#E}		;コマンドラインに
	&?("ver >nul") #m &w(1)		;コマンド実行
09:     (wa)?? { (s==2)?{		;編集テキストが無ければ
        ep[-, #[ #[ ep], w], sx], .} }	;[ESC]2回で整えて終了
        (dx==1)? {ep[-, #[ ep], } 	;編集モードに(シフト実行時はスルー)
        &10 (wb)?{&s #W &10 #W } w], &d ;表/裏テキストの桁,行数調整
10: w=vp.26, we=w, wa.55=w, wa.56=lc-2, wa.57=lc-3, wv=w>>1, wh=lc>>1, kx=lx,
*


10847/10847 BQO00549  konno            DOSVAXJ3 230707 更新
( 1) 23/07/10 23:39
DOSVAXJ3 が更新されていました。
更新内容は

----------------------------------------------
build JP230707 (2023/7/7)

    Windows 版で IME ON 時のカーソルキー等の処理を修正しました。
    Windows 版で int 21h ah=43h のファイル属性の取得・設定が正常動作するように修正しました。
    Windows 版で mount されたドライブ上のファイルを読み込みモードで開いた場合でも日時変更可能となるよう修正しました。
    Linux、macOS 版でショートファイル名の生成がうまくいっていなかったのを修正しました。

----------------------------------------------

IMEの変更部分はちょっとわからないですが
TOUCH などの日時変更も出来るようになったのでうれしいです。

作者様に感謝です。


10848/10848 BQO00549  konno            省エネと暑さ対策
( 1) 23/07/16 00:57 コメント数:4
暑中お見舞い申し上げます。

いやあ、暑いですね。(^^;;
エアコンをガンガン効かせたいけど、電気代も跳ね上がって懐だけ寒いです。(;_;)
そんなわけで、今年は工夫して省エネもしてみようと思います。

温水便座のヒーターはたぶん60Wくらい使っていると思います。
梅雨時も暑かったのでヒーターのSW を切ってみました。
座る時、ヒヤッとするので、まだ切るのは早かったようです。

そこで、ボリュームをランプが付くギリギリにしてみました。
これならヒヤッとはしないので、これで暫く使っていました。

そして、愈々猛暑になったので、SW を完全に切ってみました。
おお、ヒヤッとしない。(^^;

わずかの省エネですが、これからはこれで行こうと思います。(^_^)


10849/10848 DGF01024  めざら           Re: 省エネと暑さ対策
( 1) 23/07/16 08:08 10848:konnoさんへのコメント コメント数:2
参照先:http://mezala.la.coocan.jp/
うちは馬蹄形タオル地の便座カバーをかけています.
ヒーターのプラグを差すのは真冬だけですね.
しょっちゅう洗う必要はありますが,洗濯は毎日ですからついでみたいなもの.
(毎日干すのはかみさんだから大きな顔はできないですけど……)

わたしはクーラーや扇風機の風が苦手なのですが,ここは家族優先です.
この暑さでエアコンを使わないわけにはいかないですから.

10850/10848 CXB00940  としき           Re^2: 省エネと暑さ対策
( 1) 23/07/16 18:52 10849:めざらさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> うちは馬蹄形タオル地の便座カバーをかけています.

同じく、便座カバーを使用しています。
以前は、一年中便座カバーだけでいられたものが、最近では冬はヒーターが必要と
感じるようになりました。年をとったんだと思います。

クーラーは決して苦手ではないのですが、温度差が苦手でして。
職場のように、どこも同じ温度なら22度でも26度でも大丈夫なんですがね。
自宅の場合、居室以外、つまり廊下とかトイレは冷房がありません。
そういうところが例えば38度とかあると、居室が28度でも体にこたえる。
こういう場合、冷房は設定可能な最大の30度にしています。
体調重視なわけですが、結果的にある程度の省エネになっています。
とはいえ、この温度では熱中症になる可能性があるわけなので、水分補給は意識的
に行っています。


10851/10848 BQO00549  konno            Re^2: 省エネと暑さ対策
( 1) 23/07/16 19:10 10849:めざらさんへのコメント
> うちは馬蹄形タオル地の便座カバーをかけています.
> ヒーターのプラグを差すのは真冬だけですね.
> しょっちゅう洗う必要はありますが,洗濯は毎日ですからついでみたいなもの.
> (毎日干すのはかみさんだから大きな顔はできないですけど……)

便座カバーは以前使っていました。
洗濯するにも他の物と一緒には出来ないから面倒ですよね。
うちも炊事洗濯はお任せなので(干し方にもこだわりがあるらしい)(^^;

百均の張り付け式便座カバーも試しましたが、今は使っていないようです。
洗って繰り返し使えるようですが、やはり面倒な面があるのかもです。

> わたしはクーラーや扇風機の風が苦手なのですが,ここは家族優先です.
> この暑さでエアコンを使わないわけにはいかないですから.

寝るときは、布団が暑いと熟睡出来ないのでエアコン付けっぱなしにしてますね。
私も冷たい風が苦手な方なので、フリースを着ることもあります。(^^;;

エアコンの風を弱にするのが省エネと思っている人がいるようですが
強にしたほうが部屋全体が早く冷えて省エネになるらしいです。
なので、寝る時も「静か」の上の「弱」にしています。


10852/10848 BQO00549  konno            Re^3: 省エネと暑さ対策
( 1) 23/07/16 20:12 10850:としきさんへのコメント コメント数:1
> 自宅の場合、居室以外、つまり廊下とかトイレは冷房がありません。
> そういうところが例えば38度とかあると、居室が28度でも体にこたえる。
> こういう場合、冷房は設定可能な最大の30度にしています。

これはありますね、でも30度って、エアコンが強力すぎるのかな。
実はうちのリビングは猫のために開けっ放しにしているんです。
だから廊下との温度差はあまりないのだけれど、エアコンには負荷がかかりますね。
ドアを閉めれば省エネにはなるけれど、今はこのままいきそうです。


10853/10848 BQO00549  konno            省エネと暑さ対策 雨戸編
( 1) 23/07/16 20:34 10848:konnoさんへのコメント コメント数:1
猛暑の時はエアコンも効きにくくなります。
そんな時は、雨戸を閉めるとだいぶ違います。

リビングの雨戸は一枚分閉めると眩しさ対策にもなり、良い感じです。
窓ガラスから熱気が入ってくるのでしょうね。
使っていない部屋なら全部閉めてもいいでしょう。
夏場はもうこのまま閉めっぱなしで行こうと思っています。

出窓のカーテンとかも工夫すればもっと遮熱出来るかな・・・


10854/10848 BQO00549  konno            省エネと暑さ対策 電気ポット編
( 1) 23/07/16 21:30 10848:konnoさんへのコメント コメント数:1
猛暑の時は電気ポットの周辺も暑いと言うので、電気ポットを止めてみました。
私はお茶が好きなので毎日何杯も飲むのですが、今年は水茶を試してみました。
奥様はコーヒー派なのですが、紙パックのアイスコーヒーに切り替えました。

お茶は90度のお湯を湯冷ましに入れて急須に注いで1分ほど蒸らして飲んでいますが
水茶なら水を入れて5分くらい置けば飲めると聞いてやってみました。
ホットの方が味わいがある気がしますがまあ何とか飲めますね。

私はカップ麺も好きで、たまに一人で食べているのですが、電気ポットが無いと不便です。
夏の間はやかんで沸かしてやるしかないですね。面倒です。(;_;)
電気代とガス代とどっちが省エネかはわからないですね。

省エネなら、魔法瓶タイプの電気ポットにすればいいのですが、デザインや色がいまいちで。(^^;

そうだ! 電気ポットの周りに断熱材かプチプチを巻いたらどうだろう・・・
何か良い素材とかありませんかね。


10855/10848 CXB00940  としき           Re^4: 省エネと暑さ対策
( 1) 23/07/17 11:22 10852:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> これはありますね、でも30度って、エアコンが強力すぎるのかな。

そんなことはありません。
部屋の温度計、百均のものなんで精度はあまり当てになりませんが、一応、室温も
30度になっています。

> 実はうちのリビングは猫のために開けっ放しにしているんです。

ネコドア付きのドアに変えましょう。
冷暖房共に、かなりの省エネになりそうです。


10856/10848 CXB00940  としき           Re: 省エネと暑さ対策 雨戸編
( 1) 23/07/17 11:22 10853:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
カーテンのように屋内で遮熱するより、雨戸も含め、窓の外で遮熱するのが好ましい
といわれていますよね。よしずとかすだれとか。

> リビングの雨戸は一枚分閉めると眩しさ対策にもなり、良い感じです。

まぶしさ対策も兼ねて、発泡緩衝材、いわゆるプチプチを窓に張る、というのは
いかがでしょうか。もともと冬場の断熱対策に有効という話を聞いたことがあるの
ですが、冬に効果があるのなら夏にだって効果があると思います。


10857/10848 CXB00940  としき           Re: 省エネと暑さ対策 電気ポット編
( 1) 23/07/17 11:22 10854:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
単純にエネルギーを熱に変える場合、電気が一番効率が悪い、というのが定説。
もちろん、精密な温度制御だとかタイマーだとかを使う場合は電気を使うしかない
のですが、うちではそんな必要はないので、私は使うたびにガスで湯沸しすること
にしました。保温性能の高い魔法瓶があれば生活様式が変わるかもしれませんが、
わざわざ買うほどの事もないので。

> お茶は90度のお湯を湯冷ましに入れて急須に注いで1分ほど蒸らして飲んでいますが

本格的というか、私が小学校の家庭科で習った正式な入れ方です。
そんな方法、お客様が来たときにしかしたことがない。

水茶ですが、何年も前にNHKで紹介されていたので試したことがあります。
そのとき、私はおいしいと思ったのですが、ちょっと時間がかかりすぎて。
氷水を使うのですが、時間を覚えていない。15分だったか2時間だったか。
ネットで探せばすぐに見つかりそう。

> そうだ! 電気ポットの周りに断熱材かプチプチを巻いたらどうだろう・・・
> 何か良い素材とかありませんかね。

簡単な方法なら、そのまま段ボール箱の中に入れる。
これなら段ボールの隅に電気コードが通る穴を開けるだけ。
ちょっと凝った人なら、二重段ボールにする。
段ボールと段ボールの隙間にはスポンジか何か。
安全性を極限まで気にする人なら、グラスウールかロックウール。
以前、炊飯器を分解したときに、中で使われていたのがその手の無機系ウール。
こいつらなら1000度程度の熱にも耐えられるはずなんで、電気ポットを直に
覆っても大丈夫なはず。でかいホームセンターなら扱いがあるでしょう。
ただ、電気ポットの熱漏れって、どの方向からなんだろう。
もし、側面ではなく上面から熱が漏れるというのであれば、側面だけ覆ってもあまり
意味がない気がする。この場合、やっぱり箱詰めしかないような。


10858/10848 CRG00666  文太             Re: 省エネと暑さ対策
( 1) 23/07/17 17:03 10848:konnoさんへのコメント コメント数:2
熱波回避ネタ2題

 ご無沙汰です。
 もう色々で色々で、クッタクタ。ボロボロです。そして、もちろん、超暑い。
 さて、お題の(節電にはあまりなりそうにないけど)この酷暑をやりすごす
ネタ2つ。1つは経験あり、1つは経験なし。

 (1)首を冷やす−−経験あり。
 小さな(4センチX6センチ)の保冷剤を冷凍庫で凍らせる。バンダナで
首に巻く。保冷剤は、後方うなじあたりに間接的に接する。かなりの効果です。
水やりでどうしても外にでなければならないとき、僕は必ずやってます。
 エアコンの室内でも、もちろん効果あります。「冷た!」とはなりません。

 (2)寝室の湿度を取る−−経験なし。
 2リットルぐらいのペットボトルに水を入れて、冷凍庫で凍らせる。寝る前に
空の洗面器にそれを入れておく。ボトルが汗をかき、それが洗面器にたまり、除湿
効果があるそうな。TV(ユーチューブかも)で、どっかの主婦様(節電女王みたい
な人)が、「効果あるんです! 安眠できますよ」と力説していた。僕は、あまり
やるとは思わないけど。それでなくとも寝室(書斎)が腐海3になりかけてるのに、
ごちゃごちゃさせたくないですからねぇ。冷凍庫もそんなに広くないし。


 どうでもいいこと。今日、学期末試験だったのですね。50人の学生が真剣に
テストを受けてました。エアコンの効いた教室から窓の外をふと見ると、
この熱地獄の中、シャベルで土を掘ったり石を移動させたりしてる方々がおりました。
キャンパス内で現在、新校舎建築の工事、準備が進んでいるのです。学生にも思わず
こぼしてしまったのですが、「俺たちって、そんなに偉いんだっけ」と思ってしまった。
 この暑さのなか、僕なら1時間ともたずに熱中症になるだろうと思いました。
 ホワイトカラーってちょっとずるいのかも……。

 「自虐すきだねぇ、文太さん」あるいは「それ、格好をつけてるつもりなの?」
とか言われそう(思われそう)だから、先回り。
 でも、ほんと、そう思ったのだもの。

 さあ、しょうがない、水やりです。



10859/10848 BQO00549  konno            Re^5: 省エネと暑さ対策
( 1) 23/07/17 22:00 10855:としきさんへのコメント
> 部屋の温度計、百均のものなんで精度はあまり当てになりませんが、一応、室温も
> 30度になっています。

うちのリビングの温度計を見てみたら、28度でした。これでも涼しく感じますね。

> > 実はうちのリビングは猫のために開けっ放しにしているんです。
> ネコドア付きのドアに変えましょう。
> 冷暖房共に、かなりの省エネになりそうです。

それはわかっていますが、話し合ってこうなったのです。
実は、リビングのドアは廊下側を塞ぐドアに改造してあるのです。
もちろんいつでもリビング側を閉めることも出来ます。
全ては猫対策のためです。(^^;


10860/10848 BQO00549  konno            Re^2: 省エネと暑さ対策 雨戸編
( 1) 23/07/17 22:38 10856:としきさんへのコメント コメント数:1
> カーテンのように屋内で遮熱するより、雨戸も含め、窓の外で遮熱するのが好ましい
> といわれていますよね。よしずとかすだれとか。

それで思い出しましたが、エアコンの室外機にすだれで日陰を作るのもありましたね。
とりあえず室外機の上に板を置いてちょっと日陰を作ってみました。

> まぶしさ対策も兼ねて、発泡緩衝材、いわゆるプチプチを窓に張る、というのは
> いかがでしょうか。もともと冬場の断熱対策に有効という話を聞いたことがあるの
> ですが、冬に効果があるのなら夏にだって効果があると思います。

プチプチは寝室の窓に張ったことがありますが、剥がれたのでそのままですね。(^^;
ああ、なんて怠惰なわたし・・・


10861/10848 CXB00940  としき           Re^2: 省エネと暑さ対策
( 1) 23/07/17 23:04 10858:文太さんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
>  (1)首を冷やす−−経験あり。

もう10年ぐらい前に、水で冷やすタイプの、チョーカーではないな、これは一体
なんていうんだろう、ネックストラップでもない、吸水性のある布製の帯をもらい
ました。何回か使ったのですが、あまり涼しく感じなくて、どこかにしまいこんで
あります。
最近、通販で、保冷剤入りなのかな、冷蔵庫で冷やすタイプですが、結露しないと
いう製品を見かけました。どういう仕組みで結露しないようになっているのか、
そういう構造的なほうに非常に興味があります。

>  (2)寝室の湿度を取る−−経験なし。
>  2リットルぐらいのペットボトルに水を入れて、冷凍庫で凍らせる。寝る前に

これ、私も話には聞いたことがあります。
ただ、うちも冷凍庫に余裕がないこともあって、試したことはありません。
それに、これ、閉鎖環境にはいいかもしれませんが、開放環境だと、外部からいくら
でも湿気が入ってくるため、全く意味がないような気がする。
ついでにいうと、必要になるエネルギーを考えると、全く省エネにはならないはず。
つまり、電気を電池に充電して持ち運ぶのと同様、冷熱を氷の形にして持ち運んで
いるだけ、ということ。そして、電池を充電する場合にいくらかのロスが発生する
のと同様、わずかなのか多いにかはわかりませんが、いくらかのエネルギーのロス
は発生するはず。もちろん、電池と同様、持ち運べることによるメリットは大きい
かもしれませんが。
ちなみに私、風が強すぎさえしなければ、扇風機の風の直撃を受けても熟睡できる、
というか、逆に風が当たらなければ暑くて寝ていられないと思う。


> キャンパス内で現在、新校舎建築の工事、準備が進んでいるのです。学生にも思わず
> こぼしてしまったのですが、「俺たちって、そんなに偉いんだっけ」と思ってしまっ

文太さんが疲れているのか、私が暑さのせいで壊れかけているのか。
なぜというに、なぜ文太さんが、自分たちを偉いと思ったのかがよくわからない。
この辺は私の個人的な経験のせいかも。
昔、まだ私がNTTに勤めていたころ、とあるデータセンターで配線工事をしました。
何人もで作業をしていたのですが、一番の下っ端である私の持ち場はサーバ室の冷房
の吹き出し口の前。
先輩方の多くは暑い屋外で、1日の仕事が終わってから私のことをうらやましがって
いましたが、こちらは凍死する思いでした。いや、マジで。


10862/10848 BQO00549  konno            Re^2: 省エネと暑さ対策 電気ポット編
( 1) 23/07/17 23:17 10857:としきさんへのコメント コメント数:1
> 単純にエネルギーを熱に変える場合、電気が一番効率が悪い、というのが定説。

それは聞いたことがありますが、ガスで湯を沸かすと結構周りが暑くなりますね。
換気扇もかける必要があるし、部屋の冷気が逃げてしまいます。
やっぱり電気ポットをなんとかしたいですね。

> 氷水を使うのですが、時間を覚えていない。15分だったか2時間だったか。

東京のおいしい水道水をそのまま注げば5分で済むと思いますよ。
氷水は時間が掛かるでしょう。今頃の水道水は20度くらいあると思うし。
氷は後で入れればいいと思います。

> 簡単な方法なら、そのまま段ボール箱の中に入れる。
> これなら段ボールの隅に電気コードが通る穴を開けるだけ。
> ちょっと凝った人なら、二重段ボールにする。
> 段ボールと段ボールの隙間にはスポンジか何か。

うーん、面白いですが、中が見えないのがちょっと・・・
移動もするので嵩張るのもまずいですね。

> もし、側面ではなく上面から熱が漏れるというのであれば、側面だけ覆ってもあまり
> 意味がない気がする。この場合、やっぱり箱詰めしかないような。

上は蒸気穴があるので塞げません。
とりあえずプチプチで試してみようかな。


10863/10848 BQO00549  konno            Re^2: 省エネと暑さ対策
( 1) 23/07/17 23:32 10858:文太さんへのコメント コメント数:1
>  (1)首を冷やす−−経験あり。

首を冷やすのは効果があると言いますね。
以前冷感バンダナみたいなのを水で濡らして巻いたこともありました。

>  (2)寝室の湿度を取る−−経験なし。

寝る時エアコン付けっぱなしなら湿度も取れそうですよね。
安眠できる効果があるのかどなたか経験談でもあれば・・・

>  この暑さのなか、僕なら1時間ともたずに熱中症になるだろうと思いました。
>  さあ、しょうがない、水やりです。

外でちょっと何かやろうとしても日差しの強烈さでまいってしまいますね。
麦わら帽子が欲しくなりました。(^^;


10864/10848 CXB00940  としき           Re^3: 省エネと暑さ対策 電気ポット編
( 1) 23/07/18 01:22 10862:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
そっか、電気ポット、移動することもあるのですね。
うちで電気ポットを使っていた時はテーブルの上が定位置だったんですよ。
移動可なら、冷房を使っていない部屋で湯を沸かす、というのは冗談ですが、人に
よっては、あるいは場合によっては、それが最適解、ということがありうるのが怖い
ところ。

> 上は蒸気穴があるので塞げません。
> とりあえずプチプチで試してみようかな。

確認しておきたいのが、側面の温度。
手で触れないほど熱くなる、ということであれば、効果は高いと思いますが、別の
心配も。それは、あのプチプチの耐熱性能。80度くらいで融けるとは思いません
が、融けてからでは手遅れかも。その場合、新聞紙を三重とか五重に巻いて、その
上からプチプチを巻く、という手もありそう。
逆に、手で触っても室温と変わらない、ということであれば、側面からの放熱はない
わけですから、手間やコストをかけてもムダ。やっぱり上面を何とかしましょう、
ということになる。例えば、蒸気穴の部分だけ切り欠けを作った段ボール箱、とか。


10865/10848 CRG00666  文太             Re^3: 省エネと暑さ対策
( 1) 23/07/18 08:44 10861:としきさんへのコメント
>ネックストラップ (みたいなのについて)
>通販で、保冷剤入りなのかな、冷蔵庫で冷やすタイプです
 うん、こんな感じ。結露についてはよくわからないけど、バンダナ
みたいなプリミティブでないのが商品化されていると、奥さまが言ってました。
でも、2千円とかするときいて、バンダナでいいよ、となってます。

>2リットルぐらいのペットボトルに水を入れて、冷凍庫で凍らせる。寝る前に置く。"
>閉鎖環境にはいいかもしれませんが、
 はい、エアコンを使える部屋で夜も窓を閉めて寝る都会タイプ仕様ですね。
 そういう雰囲気の家だった。
 ただその主婦様、全体に筋金入りっぽい人でしたから、いちおう全部計算して
ということだったと思います。必要なところではお金も電気もかける、と。
 でも、たしか4人家族一戸建てで、電気代が月5千円以下だったと思う。
 住居環境(たぶん都心)って、さまざまですからね。
 僕も昨晩、窓を20センチ開けて寝ました。やっぱこれよ、と比較的安眠。

>文太さんが疲れているのか、私が暑さのせいで壊れかけているのか。
>なぜというに、なぜ文太さんが、自分たちを偉いと思ったのかがよくわからない。
 「偉い」より「ずるい」ですよ。
 その風景がねぇ。テストは1列おきに整然と並ぶ。そこでカリカリカリ。
かなり涼しげなわけですよ。エアコンの部屋で「暑いねぇ」とか言いながら。
 あのコントラストが、、、。



10866/10848 CRG00666  文太             Re^3: 省エネと暑さ対策
( 1) 23/07/18 08:50 10863:konnoさんへのコメント コメント数:1
>冷感バンダナみたいなのを水で濡らして巻いたこともありました。
 これ、いいんじゃないですか。

>寝る時エアコン付けっぱなしなら湿度も取れそうですよね。
 エアコン消してから、というのがその方のやり方だったと思う。

>安眠できる効果があるのかどなたか経験談でもあれば・・・
 これがネック。心が安定していて心配がなければ、そして適度に
身体を使っていれば、寝れる、、、はず。寝ろ、寝れない、寝ろ、
寝れない。

>外でちょっと何かやろうとしても日差しの強烈さでまいってしまいますね。
>麦わら帽子が欲しくなりました。(^^;

 麦わら帽子。ルックス的にもこれですね。僕は会津の農民が使って
いたような、観光地みやげの竹製傘(帽子タイプ)をどっかに持って
いたはずなのですが。髪の毛がないと頭が熱い、、、。


10867/10848 BQO00549  konno            Re^4: 省エネと暑さ対策 電気ポット編
( 1) 23/07/20 02:17 10864:としきさんへのコメント コメント数:2
> 確認しておきたいのが、側面の温度。
> 手で触れないほど熱くなる、ということであれば、効果は高いと思いますが、別の
> 心配も。それは、あのプチプチの耐熱性能。80度くらいで融けるとは思いません
> が、融けてからでは手遅れかも。

側面がそんなに熱くなるボットがあるか知りませんが、これでも保温性の高い機種なので
側面はほんのり温かい程度です。
ただお湯が少ないと暑くなるというので、ヒーターのある底面が熱くなるのでしょうね。

> 例えば、蒸気穴の部分だけ切り欠けを作った段ボール箱、とか。

段ボール箱、好きですねぇ。(^^;
側面をプチプチで囲う話を奥様にしましたら、却下されました。(;_;)
それなら魔法瓶ポットが良いという話になって、1.5Lのポットを買いました。
どうしてこうなった? (^^;


10868/10848 BQO00549  konno            Re^4: 省エネと暑さ対策
( 1) 23/07/20 02:30 10866:文太さんへのコメント
> >冷感バンダナみたいなのを水で濡らして巻いたこともありました。
>  これ、いいんじゃないですか。

実際はハチマキみたいな帯で、ハチマキのように額に巻いたような気がします。
額ではあまり効果を感じなかったのか、すぐ使わなくなったような。(^^;
首に巻くタイプは奥様が使っているようです。

> >寝る時エアコン付けっぱなしなら湿度も取れそうですよね。
>  エアコン消してから、というのがその方のやり方だったと思う。

げげ、エアコン消すのは試したくないですぅ。(>_<)


10869/10848 CXB00940  としき           Re^5: 省エネと暑さ対策 電気ポット編
( 1) 23/07/20 22:46 10867:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 側面はほんのり温かい程度です。

うぅん、それだと側面にプチプチをまいたところで、効果は限られると予想されます。

> ヒーターのある底面が熱くなる

これも、本当に正しいのか確認するべきかと。
つまり、持ち上げて、今まで置いてあった場所を触って熱いかどうか。
仮に、そこもほんのり温かい程度であれば、上面を何とかしましょう、ということに
なる。
だけど

> どうしてこうなった? (^^;

やっぱりこれが一番正しい選択肢のような気がする。
確実に効果がありそうですもの。
逆に、効果があるかどうかわからない対策に手間やコストを投じることに合理性や
正当性があるとはどうしても思えない。
もちろん、その手のことって大概楽しいことなので、合理性などを度外視するという
のはアリですが、でも、例えば、はがれたプチプチをそのままにしておくような人に
とって、はたしてそれは本当に楽しいことなのかどうかという、いささかの疑問が
わいてくるのは毎日が暑いせいだからかもしれません。


10870/10848 DGF01024  めざら           Re^5: 省エネと暑さ対策 電気ポット編
( 1) 23/07/21 08:28 10867:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
> それなら魔法瓶ポットが良いという話になって、1.5Lのポットを買いました。

これが一番だと思います.
わたしもカップ麺好きで,ときどきこっそり食べてますが,湯を沸かしたことはありません.
朝沸かした湯をサーモスの魔法瓶に入れてアレコレ使います.
余った湯は湯ざましとして使います.
魔法瓶は二台あって,一方は朝沸かした茶(季節ごとに烏龍茶,麦茶入替え).
近ごろはティファールの「瞬間」湯沸かし器の出番がないですね.
電源つなぎっぱなしのポットは使ったことがありません.
真空断熱ポットの出現以来,魔法瓶の性能はすごく高いのですよね.

頻繁にコーヒーか紅茶を淹れるという人でなければ,電気ポットは要らないかな.

10871/10848 CXB00940  としき           Re^3: 省エネと暑さ対策 雨戸編
( 1) 23/07/22 17:15 10860:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> それで思い出しましたが、エアコンの室外機にすだれで日陰を作るのもありましたね。
> とりあえず室外機の上に板を置いてちょっと日陰を作ってみました。

この関係をさまよっていたら見つけてしまったものが、貼るだけ簡単な断熱シート、
というやつなんですが、取り扱っているのが、下着メーカーのセシール。
ちょっとびっくり。
最新のいろいろな科学がつまっているのかな。


10872/10848 BQO00549  konno            Re^6: 省エネと暑さ対策 電気ポット編
( 1) 23/07/22 21:43 10869:としきさんへのコメント
> > ヒーターのある底面が熱くなる
> これも、本当に正しいのか確認するべきかと。
> つまり、持ち上げて、今まで置いてあった場所を触って熱いかどうか。
> 仮に、そこもほんのり温かい程度であれば、上面を何とかしましょう、ということになる。

今は確認できませんが、お湯が少ない時は側面が熱かったと思います。
熱源は底面ですが、お湯が少ない時上部の空間が熱くなるのが伝わるのかなぁ?

> 逆に、効果があるかどうかわからない対策に手間やコストを投じることに合理性や
> 正当性があるとはどうしても思えない。

プチプチを巻くことで側面の放射熱は確実に減らせると思うので合理性はあると思います。

> もちろん、その手のことって大概楽しいことなので、合理性などを度外視するという
> のはアリですが、でも、例えば、はがれたプチプチをそのままにしておくような人に
> とって、はたしてそれは本当に楽しいことなのかどうかという、いささかの疑問が
> わいてくるのは毎日が暑いせいだからかもしれません。

毎日暑いのでプチプチ巻くのもだるいなぁと思っていたのでその意味では良かったかも。(^^;


10873/10848 BQO00549  konno            Re^6: 省エネと暑さ対策 電気ポット編
( 1) 23/07/22 21:46 10870:めざらさんへのコメント コメント数:1
> > それなら魔法瓶ポットが良いという話になって、1.5Lのポットを買いました。
> これが一番だと思います.
> わたしもカップ麺好きで,ときどきこっそり食べてますが,湯を沸かしたことはありません.
> 朝沸かした湯をサーモスの魔法瓶に入れてアレコレ使います.
> 余った湯は湯ざましとして使います.

みなさん魔法瓶派なのですね。

> 魔法瓶は二台あって,一方は朝沸かした茶(季節ごとに烏龍茶,麦茶入替え).

そういえば私も会社には魔法瓶のお茶を持って行ってましたね。
家ではその都度入れればいいのですが、お出かけ時は検討してみようかしら。

> 近ごろはティファールの「瞬間」湯沸かし器の出番がないですね.

これも何度も検討したことはあるんですが・・・
私はやかんで湯を沸かすのは面倒で苦手なのです。(^^;

> 真空断熱ポットの出現以来,魔法瓶の性能はすごく高いのですよね.

# 奥様は魔法使い、じゃなくて魔法瓶使いだったのです!
  私の魔法瓶スキルはレベル1なので到底かなわないのです。(^^;


10874/10848 CXB00940  としき           Re^7: 省エネと暑さ対策 電気ポット編
( 1) 23/07/22 22:18 10873:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
誤解がありそうなのでここだけ。

> みなさん魔法瓶派なのですね。

私の場合、電気ポットよりは魔法瓶、であることは間違いありません。
でも、どちらかというと、私の場合、ガスでその都度派、です。

> # 奥様は魔法使い、じゃなくて魔法瓶使いだったのです!

奥様と旦那様は、ごく普通の二人、ですか?
なんとなく、多方面から異議が発せられそうな気がします。


10875/10848 BQO00549  konno            Re^4: 省エネと暑さ対策 雨戸編
( 1) 23/07/22 22:20 10871:としきさんへのコメント
> この関係をさまよっていたら見つけてしまったものが、貼るだけ簡単な断熱シート、
> というやつなんですが、取り扱っているのが、下着メーカーのセシール。
> ちょっとびっくり。
> 最新のいろいろな科学がつまっているのかな。

何社かで同様の商品が出ているようですね。
以前テレビで、輸送トラック(保冷車・冷凍車)の庫内の温度上昇を抑えるために開発されたシールを見たことがあります。
シールを張ったトラックの側面を触ると、炎天下でもヒヤッとしているというので感心しました。
その技術を応用しているのでしょうね。
効果が高そうなので検討する価値はありますね。

# このシールを電気ポットの側面に張れば・・・ (゚゜)☆\(--#)バキッ


10876/10848 BQO00549  konno            Re^8: 省エネと暑さ対策 電気ポット編
( 1) 23/07/22 22:59 10874:としきさんへのコメント
> 私の場合、電気ポットよりは魔法瓶、であることは間違いありません。
> でも、どちらかというと、私の場合、ガスでその都度派、です。

なるほど、ガスでその都度派、というのもありましたね。

> > # 奥様は魔法使い、じゃなくて魔法瓶使いだったのです!
> 奥様と旦那様は、ごく普通の二人、ですか?
> なんとなく、多方面から異議が発せられそうな気がします。

もちろんごく普通の二人ですよ。(^^;
ごく普通の二人がごく普通に結婚してごく普通の家庭を築く。
でも実は奥様は魔法瓶使いだったのです!
それ以来、魔法瓶の力で仕事も捗り、無事にやってこれました。

# 魔法瓶の国からやってきた、ちょっとおちゃめな奥様は〜〜♪
  魔法瓶の力で家中がお湯と笑いであふれるの〜〜♪


10877/10877 DGF01024  めざら           ある現象
( 1) 23/07/26 11:10 コメント数:3
参照先:http://mezala.la.coocan.jp/
自分の環境だけの問題なのかもしれないのですが,一応報告を上げておきます。

マクロバッファのオフセットアドレス $2225【付近】が書き換わる。
起動時からそのようなので「書き換わる」は正確ではないかもしれません。
実行環境によって別のコードになるものの,場所は同じ。

【経緯】(明記しない場合は VTDOS 環境)
いつの時点からは不明だが,内部マクロの実行がエラーで停止し判明。
Buftour.def でマクロバッファを確認すると,# が P になっていた。
(具体的には,#T が PT になっていたので,そこで停止した。)
同じバッチで起動する dosvaxj3 環境では,同じ場所が U になっていた。

内部マクロの順序を入れ替えると,当該マクロ(拡張[F03])は正常に動作。
しかし,一方で別のマクロが書き換わることが判明。場所は $2225 付近で同じ。
こちらは拡張^F で #f が #P に書き換わっており,実害を伴うことに。
dosvaxj3 環境では #f が #U に書き換わっていた。パターンは同じ。

K07V6J (2023-05-19)
K07V6H (2023-03-14)
ともに同様の振る舞いでした。

お手元の環境でご確認いただけるでしょうか>みなさま
(【付近】と言うのは,前後広めに確認をお願いしたいためです)
なお,手元の内部マクロに自己書換えするようなコードは見当たりません。
なので,マクロバッファへ読み込まれる時点での可能性もあるかと思います。

もっとテストしてから報告しろという見方もあるかと思いますが,
ともかく現象面から発現の有無を見てもらうのが手っ取り早いかと思い
お願いする次第です。

10878/10877 BQO00549  konno            Re: ある現象
( 1) 23/07/26 22:43 10877:めざらさんへのコメント コメント数:2
> マクロバッファのオフセットアドレス $2225【付近】が書き換わる。
> 起動時からそのようなので「書き換わる」は正確ではないかもしれません。
> 実行環境によって別のコードになるものの,場所は同じ。

これはヤバいですね、メインのマクロを読み込む時点でおかしくなるのでしょうか。

> 【経緯】(明記しない場合は VTDOS 環境)
> いつの時点からは不明だが,内部マクロの実行がエラーで停止し判明。
> Buftour.def でマクロバッファを確認すると,# が P になっていた。

私今アルツか暑いせいで全て忘れているような状態です。(^^;
Buftour.def でマクロバッファを確認は、どういう手順でしたっけ?

> 同じバッチで起動する dosvaxj3 環境では,同じ場所が U になっていた。

これはプラットフォームの問題ではなくVZの問題と思われますね。

> K07V6J (2023-05-19)
> K07V6H (2023-03-14)
> ともに同様の振る舞いでした。

他のVZでは問題なしということでしょうか。
マジで色々忘れているので、再現手順とか色々ご教授願います。m(__)m
他の方の情報もあればありがたいです。


10879/10877 CXB00940  としき           Re^2: ある現象
( 1) 23/07/26 22:48 10878:konnoさんへのコメント
参照先:http://toshiki.la.coocan.jp/
> 私今アルツか暑いせいで全て忘れているような状態です。(^^;
> Buftour.def でマクロバッファを確認は、どういう手順でしたっけ?

同じく、確認方法がわかりません。
私の場合、忘れている、ではなく、最初から知らないと思う。
ばふつあなんて、使ったことがないかもしれない、というくらい。

ということで、

> マジで色々忘れているので、再現手順とか色々ご教授願います。m(__)m

私も同じく。
どの環境とどのバージョンなら再現しない、という報告ぐらいは上げられると
思います。


10880/10877 DGF01024  めざら           Re^2: ある現象
( 1) 23/07/27 07:49 10878:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
#10878 konnoさん #10879 としきさん

ばふつあでの確認手順ですが,特定のアドレスなら割りと簡単です。

起動してメニューが表示されたら,Offset(メニューの最下部)を選択し,
入力窓で「$2200」のようにアドレスを入力すると,メッセージラインに
該当するアドレスがら64バイトのメモリを可読文字で表示します。(終了は Q )
別のウィンドウで VZ.DEF 等をオープンしておくと比較が楽でしょう。

ちなみに以下のモジュールメニューを組み込むと,ばふつあをより便利に使えます。
http://mezala.la.coocan.jp/vz/workshop/mkoban.html#mdlmenu
(ちょっと宣伝 (^^;)

10881/10877 BQO00549  konno            Re^3: ある現象
( 1) 23/07/27 22:39 10880:めざらさんへのコメント
> 起動してメニューが表示されたら,Offset(メニューの最下部)を選択し,
> 入力窓で「$2200」のようにアドレスを入力すると,メッセージラインに
> 該当するアドレスがら64バイトのメモリを可読文字で表示します。(終了は Q )

ありがとうございます。
最初メニューに Offset が無いなぁと思ったら、次ページだったのですね。(^^;

ふーむ、このアドレスはインスタント窓で $2225 を入れた時の表示と同じみたいですね。
DUMP.DEF の窓で $2200 でも同じみたいです。
これから色々試してみます。

> ちなみに以下のモジュールメニューを組み込むと,ばふつあをより便利に使えます。
> http://mezala.la.coocan.jp/vz/workshop/mkoban.html#mdlmenu
> (ちょっと宣伝 (^^;)

これは機能が高度すぎて今の私には使いこなせそうもないです。(^^;
まあぼちぼちとリハビリします。(^^;


10882/10877 BQO00549  konno            Re: ある現象の絞り込み
( 1) 23/07/29 00:21 10877:めざらさんへのコメント コメント数:1
今のところ再現とか出来ていません。
再確認ですが

> いつの時点からは不明だが,内部マクロの実行がエラーで停止し判明。

これは、VZを K07V6J (2023-05-19) に入れ替えてから出るようになったのでしょうか。
高橋版やそれ以前のKVZでは現象が出ないのでしょうか。

> Buftour.def でマクロバッファを確認すると,# が P になっていた。
> (具体的には,#T が PT になっていたので,そこで停止した。)
> 同じバッチで起動する dosvaxj3 環境では,同じ場所が U になっていた。

この現象と

> 内部マクロの順序を入れ替えると,当該マクロ(拡張[F03])は正常に動作。
> しかし,一方で別のマクロが書き換わることが判明。場所は $2225 付近で同じ。
> こちらは拡張^F で #f が #P に書き換わっており,実害を伴うことに。
> dosvaxj3 環境では #f が #U に書き換わっていた。パターンは同じ。

この現象は、ともに同じアドレスが
VTDOSは、  P に書き換わる
dosvaxj3 は、U に書き換わる

ということですね。環境の違いでアドレスか数値に違いが出るように見えますね。

現象が VZ.DEF で出ているとすれば、同じ環境で試してみたいです。
よろしければそのVZ.DEF をメールでいただけないでしょうか。


10883/10877 DGF01024  めざら           Re^2: ある現象の絞り込み
( 1) 23/07/29 09:42 10882:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
再現できないということでしたので,VZT以降のバージョンでいくつか試し,
t03k2	ok
k06v	ok
k07j	ok
k07p	ok
k07s5	ok
k07t2	ok
k07v6d	NG
K07v6h	NG
k07v6i	NG
……という結果を得ました。手元の結果を見る限り,k07v 以降ですね。

最近は VZ だけでいくつもファイルを開いて作業するということはなかったため,
拡張[F03]に割り当てた機能を使う機会がなくて気づかなかったと思われます。

同じ環境になるよう,インクルード含め一式お送りします。
VZ.DEF は実害の少ない一世代前に戻してあります。

63 [F03] ""	;Pick Text (220)	;Close, reOpen, Quit
	(s||wc<1)?.
	ss-, wl[7, #T wl],
 手元の環境では,↑の # が P に置き換えられ,実行すると左下に
PTwlとエラー表示してマクロの実行を停止します。


10884/10877 BQO00549  konno            Re^3: ある現象の絞り込み
( 1) 23/07/29 22:52 10883:めざらさんへのコメント コメント数:1
> 同じ環境になるよう,インクルード含め一式お送りします。
> VZ.DEF は実害の少ない一世代前に戻してあります。

メールでいただきました。ありがとうございます。
再現が上手くいかないので、マクロを丸ごと入れ替えてしまいました。(^^;
うう、非常に使いづらいですぅ。(>_<)
やっぱりVZは自分の環境が一番というか、他人のVZ環境は使えない体なのでせうか。

この結果、ほぼ同じアドレスになったのですが、入れ替わりは見つかりません。
そのかわり、別の奇妙な現象が出ています。詳細は後ほど。

> 再現できないということでしたので,VZT以降のバージョンでいくつか試し,
> k07t2	ok
> k07v6d	NG
> K07v6h	NG
> k07v6i	NG
> ……という結果を得ました。手元の結果を見る限り,k07v 以降ですね。

VZk07t02 はVZのバグ修正テスト版ですよね、それでは異常が出ないのですか。
自作、改作アプリの放置部屋にある VZT-P.COM も試してもらえるとありがたいです。

> 	ss-, wl[7, #T wl],
>  手元の環境では,↑の # が P に置き換えられ,実行すると左下に
> PTwlとエラー表示してマクロの実行を停止します。

再現環境のインスタント窓で $2225 を入れると、"#Twl" が表示されました。
DUMP.DEF で見てもこの周辺は異常が見つからなかったです。


10885/10877 BQO00549  konno            別の奇妙な現象
( 1) 23/07/30 00:34 10884:konnoさんへのコメント コメント数:1
> この結果、ほぼ同じアドレスになったのですが、入れ替わりは見つかりません。
> そのかわり、別の奇妙な現象が出ています。詳細は後ほど。

さて、別の奇妙な現象なのですが
めざらさんのマクロで再現環境にしたVZでは

" 2" の文字列、つまり、スペース+2 の文字列の色が暗い青になってしまうのです。
文字列の色を変えるのは、TAGLIGHT.EXE くらいです。
関連マクロは動作していないので、素のTAGLIGHT.EXE がやっている
可能性がありますが TAGLIGHT.PAT にそのような設定はしていません。
TAGLIGHT.PAT の 1文字が変わってもそういう動作になる設定はありません。

めざらさんのマクロで再現環境にしたVZでは高橋版VZでも同じ症状になりました。
VTDOSの最新環境の中で VZ.COM を入れ替えただけなので、バッチから変えればまた違うかも。
うちの環境では、メインメモリ上のどこかを書き換えているのかもしれません。


# じょじょに奇妙な冒険は続くのか・・・
  ハッ! スタンドに攻撃されている!? (゚゜)☆\(--#)バキッ


10886/10877 DGF01024  めざら           Re: 別の奇妙な現象
( 1) 23/07/31 09:41 10885:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
" 2" 20h 32h ということですね。
うちでは部分的に属性が変わるという現象はないですね。まさしく謎です。
書換えの現象も見られないんですよね。同じ DEF なのに?!

> うちの環境では、メインメモリ上のどこかを書き換えているのかもしれません。

そのようにお考えになる理由を少しだけ説明していただけますか?
コンソールの設定ということですよね。

ただ,VTDOS と DOSVAXJ3 で(同一ではないが)同様の現象がみられるので,
どこを切ったらネタが出てくるのか分かるような分からないような……

謎ですねぇ……

10887/10877 BQO00549  konno            Re^2: 別の奇妙な現象
( 1) 23/07/31 21:15 10886:めざらさんへのコメント コメント数:1
> " 2" 20h 32h ということですね。

そうなりますね。もちろん検索文字列でもありません。

> 書換えの現象も見られないんですよね。同じ DEF なのに?!

書換の現象の代わりに上記の謎現象が起こったのではないかと考えています。
そうすると、メモリのどこかを壊しているのではないかと考えたわけです。

> コンソールの設定ということですよね。

TAGLIGHT.EXE の挙動と思っていましたが、VZの設定で、上記文字列が
コントロールコードとして書換られたら同じ現象になるかもですね。
そうなると、VZの中で問題が出ていることになるので、この可能性が高いかも。

> ただ,VTDOS と DOSVAXJ3 で(同一ではないが)同様の現象がみられるので,
> どこを切ったらネタが出てくるのか分かるような分からないような……

うちでは、DOSVAXJ3 では現象が表面上は見られませんでした。
また、環境を少し変えただけで VTDOS でも同じ現象は無くなりました。
その代わり、VZにまた別の変な挙動が出てきたようです。

当初 VZのバグ対策パッチが原因かと思ったので、パッチ版のテストをお願いしたのですが
パッチ版で現象が出なければ、最近の私家版VZが原因の可能性が高いと思ったのです。
今は可能性を一つ一つ絞り込んでいくしかないと思っています。


10888/10877 DGF01024  めざら           Re^3: 別の奇妙な現象
( 1) 23/08/01 07:29 10887:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
当面は,書換え先(…がただの1箇所だけとの希望的仮定ですが…)のアドレスが
非ヒストリ自前バッファに当たるよう内部マクロの配置を工夫するしかないかな〜。

手元の環境だけしか現象が出ないのでは解決の緒にもならないので,
当面は工夫しつつ様子を見ようと思います。

あ,製品版サンプルDEFにでっかい自前バッファを配置して,本当に1箇所なのか
検証してみるってのも一歩かな。それなら簡単だし。

10889/10877 BQO00549  konno            修正テスト版
( 1) 23/08/02 22:09 10888:めざらさんへのコメント コメント数:1
> 手元の環境だけしか現象が出ないのでは解決の緒にもならないので,
> 当面は工夫しつつ様子を見ようと思います。

一つ思い当たる所に気が付きました。
私家版は10#さんのルーチンを導入しているのですが、LFNの一時バッファが
 260Bytes あるので、そこを tmpbuf4 で代替していました。
色々見ていると、STKHLP の記述で

>  tmpbuf4
>  ・256 バイトのテンポラリ領域。(ラインバッファの直後)
>    ラインバッファあふれのチェック用領域。
>  ・&z 等のマクロ組込時以外は比較的自由に使用できる。
>   > pn..-26

こう書いてありました。
>  ・&z 等のマクロ組込時以外は比較的自由に使用できる。
マクロの組込で tmpbuf4 を使うと不具合が出る可能性があるのですね。
私は無意識に不具合を回避するようにしていたのかもしれません。

めざらさんの VZ.DEF に pn..-26 (tmpbuf4)を使う記述があったので気が付いたのです。
10#さんのルーチンに戻した版をメールで送りますので試してみてください。


10890/10877 DGF01024  めざら           Re: 修正テスト版
( 1) 23/08/03 17:36 10889:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
テスト版をわざわざお送りくださり,ありがとうございます.
早速試してみたところ,書き換わるという状況は変わりませんでした.

ただ,ちょっと不思議なのが,見かけ上(……と言うのか,マクロファイルの)は
書き換わる位置が変わらず,当該マクロを実行すると停止する同じ症状ですが,
書き換わるアドレスが変わって 2329h 付近になりました.だいぶ違う……(?_?)

ある位置からの相対アドレスは変わっていないけれど,マクロバッファの使い方が
変わったということでしょうか.マップで見ると,システム領域が500バイトほど
増えているのですね.ああ,LFN の一時バッファをそこに取ったということ?


10891/10877 BQO00549  konno            Re^2: 修正テスト版
( 1) 23/08/03 23:43 10890:めざらさんへのコメント コメント数:1
> 早速試してみたところ,書き換わるという状況は変わりませんでした.

残念、これは関係なかったですか。
でも tmpbuf4 はどこで使われるかわからないので、この方向にしようと思います。

> ただ,ちょっと不思議なのが,見かけ上(……と言うのか,マクロファイルの)は
> 書き換わる位置が変わらず,当該マクロを実行すると停止する同じ症状ですが,
> 書き換わるアドレスが変わって 2329h 付近になりました.だいぶ違う……(?_?)
> ある位置からの相対アドレスは変わっていないけれど,マクロバッファの使い方が
> 変わったということでしょうか.

書き換わる位置が変わらないということは、マクロ内での挙動なのですかね?
書き換わるアドレスが変わって 2329h 付近になったのは一時バッファの影響でしょう。

> マップで見ると,システム領域が500バイトほど
> 増えているのですね.ああ,LFN の一時バッファをそこに取ったということ?

そうなんですが、260バイト のはずが 500バイト増えてるとは、位置が悪いのかなぁ?
実行ファイルのサイズ増加分も含んでいるのかしら?

実は、10#さんのルーチンでは、MAIN.ASM の pn.11 の後ろになっています。

11	wsplit0		db	0		; pn.11
GDATA lfntmp,	db,	<MAXPATH+1 dup(0)>  ; ## 10# mod 260 LFN maxpath

この後ろも ポインタで参照されそうだと思ったので、繋がりが切れていると思われる
 EXPR.ASM のローカルデータの後ろに置きました。
もしかしたら副作用があるかもしれませんね。


10892/10877 DGF01024  めざら           Re^3: 修正テスト版
( 1) 23/08/04 08:43 10891:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
取り急ぎ発言修正を。

> 260バイト のはずが 500バイト増えてるとは、位置が悪いのかなぁ?

ごめんなさい,ざっくりしたマップを見て適当に言いましたが,260バイトですね。
256を超えたので2区画取ったように見えてしまっただけです。

手元では直前の版の mh が $E0F で,テスト版の mh が $F13 でした。
版によって絶対アドレスが変わるので,以後 mh+$1416 付近と言うことにします。

試しに念のため mh+$1416 を確認してみていただけるでしょうか。


10893/10877 BQO00549  konno            Re^4: 修正テスト版
( 1) 23/08/04 20:12 10892:めざらさんへのコメント コメント数:1
> ごめんなさい,ざっくりしたマップを見て適当に言いましたが,260バイトですね。
> 256を超えたので2区画取ったように見えてしまっただけです。

なるほど、そういうことですか、了解です。

> 手元では直前の版の mh が $E0F で,テスト版の mh が $F13 でした。
> 版によって絶対アドレスが変わるので,以後 mh+$1416 付近と言うことにします。
> 試しに念のため mh+$1416 を確認してみていただけるでしょうか。

うちの環境では、mh は $F7B でした。そのせいか、mh+$1416 に文字化けはありませんでした。
試しに $F13+$1416 を見たら "・:r(lx)?{#s(ct>" と中黒になっていて、ここは VZ.DEF の 510行目

61 ^A ""	;Line Top m.gann;[\] back str
	?. (ks&1)?{ #a :r (lx)?{ #s (ct>2+ck)?>r #d }. }
          ↑ 
ここみたいです。"#a" が中黒($8145)に文字化けしていますね。

63 [F03] ""	;Pick Text (220)	;Close, reOpen, Quit
	(s||wc<1)?.
	ss-, wl[7, #T wl],
         ↑
めざらさんのここより13行手前が文字化けしているようですね。
私の環境では挙動がおかしいので他にも不具合があるようです。
これを手掛かりに調べてみます。


10894/10877 DGF01024  めざら           Re^5: 修正テスト版
( 1) 23/08/04 23:49 10893:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
> うちの環境では、mh は $F7B でした。そのせいか、mh+$1416 に文字化けはありませんでした。
> 試しに $F13+$1416 を見たら "・:r(lx)?{#s(ct>" と中黒になっていて、ここは VZ.DEF の 510行目

ちょっと分からないのですが,mh が $F7B になる版はどれですか? 超私家版?
mh が $F13 になるのは k07v6k(20230802) なので,さらにシステム領域が増えた版ということですか?
(めざらはカンチガイしているのか…… mh はいずれの環境でも版固有の値をとるのではないのか……)


いずれにしても,マクロバッファ書換えの症状は存在するということですね.
ただ,2バイト書き換わっているというのは新しい症状のように思います.
わたしの手元では1バイトの書換えで収まっているので,より重い症状のような……


10895/10877 BQO00549  konno            Re^6: 修正テスト版
( 1) 23/08/05 00:14 10894:めざらさんへのコメント コメント数:1
> ちょっと分からないのですが,mh が $F7B になる版はどれですか? 超私家版?
> mh が $F13 になるのは k07v6k(20230802) なので,さらにシステム領域が増えた版ということですか?
> (めざらはカンチガイしているのか…… mh はいずれの環境でも版固有の値をとるのではないのか……)

すみません、あまりに使いずらいので自分のDEFをインクルードするために BM を変えていました。m(__)m
元のDEFにしたら、mh が $F13 になりました。
結果、mh+$1416 に文字化けが出ました。

"・wl],:P&p&u(r)("

うう、何故中黒になるのかはわかりません。
これらの結果を踏まえて調べてみます。m(__)m


10896/10877 DGF01024  めざら           Re^7: 修正テスト版
( 1) 23/08/05 07:51 10895:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
そんなに言うほど使いにくいですかね〜.(笑)
基本的なキーアサインは変えていませんが,因みにどこに一番違和感が?

それはともかく,ですが

ばふつあで,その中黒に合わせて [UP](コード表示)してみてください.
本当に中黒(8145h)なのか,未定義コード(例えば 8259h など)なのか確認できます.
未定義コードが中黒で表示されるフォントの場合がある(結構多い)と思われるので,
そこはきっちり確認した方がよいかと思います.

10897/10877 BQO00549  konno            Re^8: 修正テスト版
( 1) 23/08/05 17:08 10896:めざらさんへのコメント コメント数:1
> そんなに言うほど使いにくいですかね〜.(笑)
> 基本的なキーアサインは変えていませんが,因みにどこに一番違和感が?

マクロのキーアサインが色々違うし、私は Fキーで覚えているので他人のVZはわからないのです。
めざらさんは OUTLAW派のようですが、私は EXMENU がメインなのです。
私はバフツアもわからないので DUMP.DEF を使いたいのですが、起動法がわからない。(>_<)
めざらさんのVZ.DEFの [F03] の後ろに 起動キーを書きました。(^^;

> ばふつあで,その中黒に合わせて [UP](コード表示)してみてください.
> 本当に中黒(8145h)なのか,未定義コード(例えば 8259h など)なのか確認できます.

えーと、この操作がわからないです。


VZのバグパッチ版は関係ないことはわかりました。
現在VZの版の特定の絞り込みをしています。


10898/10877 DGF01024  めざら           Re^9: 修正テスト版
( 1) 23/08/05 23:33 10897:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
> めざらさんは OUTLAW派のようですが、私は EXMENU がメインなのです。

OUTLAW は記述が簡易にできるからなのですが,EXMenu はわたしもよく使いますよ.
もっとも最近は [ESC]^ で呼び出すことが結構多いですね.
(高橋版ベースならインクリメントサーチのできるファイラなので楽)
割り当てたキーアサインよりファイル名の方が直感的だったりするので.

> えーと、この操作がわからないです。

ばつつあのマニュアルを読んでいただければよいわけですが……
メッセージラインに表示されたコード範囲の一番最初(左端)に該当部分を
合わせるために \[←]/\[→] で 1バイトずつスライド表示して調整します.
メッセージラインの最初にその「中黒」を持ってこられたら [UP] でコードを確認.
[DOWN] で元に表示に戻せます.(DUMPでも分かるでしょうけど)

10899/10877 BQO00549  konno            Re^10: 修正テスト版
( 1) 23/08/06 01:26 10898:めざらさんへのコメント コメント数:1
> もっとも最近は [ESC]^ で呼び出すことが結構多いですね.
> (高橋版ベースならインクリメントサーチのできるファイラなので楽)

そうか、 [ESC]^ でしたね、これがわからなかったのでした。アルツじゃ〜

> ばつつあのマニュアルを読んでいただければよいわけですが……

す、すみません、お手数をおかけして。m(__)m

> メッセージラインに表示されたコード範囲の一番最初(左端)に該当部分を
> 合わせるために \[←]/\[→] で 1バイトずつスライド表示して調整します.
> メッセージラインの最初にその「中黒」を持ってこられたら [UP] でコードを確認.
> [DOWN] で元に表示に戻せます.(DUMPでも分かるでしょうけど)

出来ました! これですね。

2329h:'・=88h=136 '・'=5488h=21640=21640    ・wl],:P&p&u(r)(r)>!{(#t-c2&r)>C

中黒のコードは 5488h ですね、DUMP でも同じでした。
CTRL.DEF で $8854 は以下になりました。見た目は中黒($8145)と同じですね。
 ・


10900/10877 DGF01024  めざら           k07v系におけるマクロバッファ書換え位置確定?
( 1) 23/08/06 07:47 10899:konnoさんへのコメント コメント数:2
参照先:http://mezala.la.coocan.jp/
> 2329h:'・=88h=136 '・'=5488h=21640=21640    ・wl],:P&p&u(r)(r)>!{(#t-c2&r)>C

#T(23h 54h)が 88h 54h になりますか…… 2バイトではなく 1バイト書換えですね.
……ということであれば,相対的な書換え位置は確定ということで OK ?
書換え位置は変わらず,ちょっとした環境の違いで異なる値になるということかな.

他の方の環境で mh+$1416 はどうなっているでしょうか.
[ESC]@ などで即席確認できますので,見ていただけるでしょうか?
konno さんも,ご自身の環境で確かめてみてください.

わたしは検証用として製品版DEFに巨大自前バッファを配置して,
mh+$1416 以外に書換えが発生していないか確認してみようと思います.


10901/10877 DGF01024  めざら           k07v系の問題ではないのか?
( 1) 23/08/06 10:20 10900:めざらさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
ううう,製品版DEFで起動すると,書換えが確認できませんでした.(?_?)

以下,やってみた手順を示します.
1 製品版DEFに手を加えずに k07v6k で起動(vz/vzibmjなど)
 書換えを確認できず.(mh+$1416 は vzfl.def のマクロエリア最後の方を指す)
2 製品版DEFのBMのみ30000に書換えて同様に起動
 書換えを確認できず
3 製品版DEFのマクロエリアの最後に自前バッファを配置して起動
 44 ""
 01:"$(00,20)$[8192]"
 上記の自前バッファを,矩形ブロック呼出マクロ(43)の直後に配置
 書換えを確認できず
 周辺はすべてヌルで埋められているまま.

う〜ん...いよいよわからなくなってきた.
k07v6系の問題ではないということ??

他に検証方法を思いつかないなぁ……

10902/10877 DGF01024  めざら           結局一時しのぎで
( 1) 23/08/06 11:39 10901:めざらさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
VZ.DEF の内部マクロの配置を入れ替えて,Pに書き換わる位置をずらし,
「Swap Text」のタイトルを持つマクロのタイトル文字列の p の位置に
mh+$1416 が来るように調整しました.結果→「SwaP Text」に.(笑)

あーあ,ほんとに一時しのぎだなぁ……

10903/10877 BQO00549  konno            Re: k07v系におけるマクロバッファ書換え位置確定?
( 1) 23/08/06 23:40 10900:めざらさんへのコメント コメント数:1
> ……ということであれば,相対的な書換え位置は確定ということで OK ?
> 書換え位置は変わらず,ちょっとした環境の違いで異なる値になるということかな.

VZ.COM の各種バージョンで試してみたら、アドレス違いのバージョンもありました。

2018/10/07  19:12            62,664 vzk75e.com		mh+$13f0=$2303
62 ^F ""	;Line End m.gann;[\] next spc
	?. (ks&1)?{ (ct<3)?#f :r #d (ct>2+ck)?>r. }
                     ↑
21F9: 72 23 64 28 63 74 3E 32-88 63 6B 29 3F 3E 72 2E  r#d(ct>2・k)?>r.
"+"($2B) → $88

2017/09/09  09:28            62,666 vzk7t5.com		mh+$13f2=$2305
62 ^F ""	;Line End m.gann;[\] next spc
	?. (ks&1)?{ (ct<3)?#f :r #d (ct>2+ck)?>r. }
                      ↑
2203: 2B 63 88 29 3F 3E 72 2E-7D 23 66 00 3F 18 01 FF  +c・)?>r.}#f・?・・・
"k"($6B) → $88

2017/09/06  22:39            62,644 vz-5.com		mh+$13dd=$22f0
	?. (ks&1)?{ (ct<3)?#f :r #d (ct>2+ck)?>r. }
         ↑
 21E3: 00 06 FF 00 3F 2E 28 6B-73 26 31 29 3F 88 28 63  ・・・・?.(ks&1)?・(c
"{"($7B) → $88

基本的に VZK07T5 以降で現象が起きているようですが、アドレスが違いますね。
上記の例では、置き換わるコードの一桁目が "$B" で共通しているのが興味深いですね。
ビットの下4桁が 1011 ですね。

あと、例外もありました。

2015/11/04  00:36            62,262 vzk7t2a.com		mh+$13af=$22c2
61 ^A ""	;Line Top m.gann;[\] back str
	?. (ks&1)?{ #a :r (lx)?{ #s (ct>2+ck)?>r #d }. }
           ↑
21B5: 73 26 31 29 3F 7B 23 88-3A 72 28 6C 78 29 3F 7B  s&1)?{#・:r(lx)?{
"a"($61) → $88

これは中身を見てみないとなんともいえないですね。
ビットは 0001 か・・・
"#"($23) 0011 うーむ・・・


10904/10877 BQO00549  konno            Re: 結局一時しのぎで
( 1) 23/08/06 23:49 10902:めざらさんへのコメント
> VZ.DEF の内部マクロの配置を入れ替えて,Pに書き換わる位置をずらし,
> 「Swap Text」のタイトルを持つマクロのタイトル文字列の p の位置に
> mh+$1416 が来るように調整しました.結果→「SwaP Text」に.(笑)

ぷっ・・・ 思わず笑ってしまいました。(゚゜)☆\(--#)バキッ
いや、冗談抜きで上手いですね。(^^;

> あーあ,ほんとに一時しのぎだなぁ……

私家版VZ が原因の可能性があるのでご迷惑をおかけします。m(__)m


10905/10877 DGF01024  めざら           Re^2: k07v系におけるマクロバッファ書換え位置確定?
( 1) 23/08/07 07:39 10903:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
色々試していただき,ありがとうございます.

その環境って,わたしがお送りした DEF なわけだと思いますが,
konno さんの手元の環境では書換えは発生していないということでしょうか?

VZ の版が関係はするようだ(特定の版グループで発生)ということではあるけれど,
トリガーになっているのは,めざらの設定ということなのでしょうか.
それとも,いずれの環境でも発生しているけれど単に気付かないだけなのか……
謎は深まる……

手元の VZ.DEF は一通り眺めたのですが,自己書換えするようなコードないんですよ.

10906/10877 BQO00549  konno            Re^3: k07v系におけるマクロバッファ書換え位置確定?
( 1) 23/08/08 02:34 10905:めざらさんへのコメント コメント数:1
> その環境って,わたしがお送りした DEF なわけだと思いますが,
> konno さんの手元の環境では書換えは発生していないということでしょうか?

はい、めざらさんの DEF です。
私の DEF では表面上は出ていないですが、わかりません。

めざらさんの DEF では他の現象も出ました。
2017/09/09  09:23   62,666 vza.com
この版などいくつかの版では、書換は確認できません。
そのかわり、マクロモジュールの破壊が起こる場合があります。

VZ起動してファイルを読み込んで、[ESC]M でマクロモジュールメニューを出すと

┏━ Modules <free:20002/30269> ━━━━━┓
┃  ! vz.def v1.6                    6479 ┃
┃    fl.def v1.6                     569 ┃
┃    outlaw.def (v2.20)              999 ┃
┃    automenu.def                    778 ┃
┃    ex                              790 ┃
┗━━━━━━━━━━━━━━━━━━━━┛

こうなっていますが、free 表示がおかしいですね。これで
DUMP.DEF のファイルを開いて、^k^ で再カスタマイズすると

┏━ Modules <free:-9609/658> ━━━━━━┓
┃  ! vz.def v1.6                   33303 ┃
┃ E  Dump.def                       5923 ┃
┗━━━━━━━━━━━━━━━━━━━━┛

こうなります。他のモジュールが消えて free がマイナスになりました。

この free 表示には
10	"Modules <free:$BM/$x>",40,0
このシステムメニューで、変数 x を使っていますよね。

5 [ESC]M @M "Module Menu"	;Yushi  local:H・ear
	x$fdfb+bm-pn..-26,                      ; dc15#5267 m.gann
ここで変数 x を設定していると思います。
このルーチンは私も意味も分からないまま使っています。
この定数 $fdfb って何なのでしょう?


ちなみに、再カスタマイズルーチンは
56 ^K^ "Install"
	?. &#80(0)

この後ろの方にマクロを追加してみました。

80 @^ "~"	"〜" .

これでマクロサイズが少し増えたので試すと
 Modules <free:20002/30255>
となり、DUMP.DEF を ^k^ で再カスタマイズすると

┏━  Modules <free:14079/24332>  ━━━━┓
┃  ! vz.def v1.6                    6492 ┃
┃    fl.def v1.6                     569 ┃
┃    outlaw.def (v2.20)              999 ┃
┃    automenu.def                    778 ┃
┃    ex                              790 ┃
┃ E  Dump.def                       5923 ┃
┗━━━━━━━━━━━━━━━━━━━━┛

こうなって正常に出来ました。


# どうなっているんじゃ〜〜


10907/10877 DGF01024  めざら           Re^4: k07v系におけるマクロバッファ書換え位置確定?
( 1) 23/08/08 18:24 10906:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
あははは.そうなのですか……
わたしの手元では,そういうこと起こったことは一度たりともないですけどね.(笑)

> この定数 $fdfb って何なのでしょう?

BM を最大値で設定するために使用する定数です.
その数値には,そんなに厳密な意味はなくて,たぶん手作業で BM 設定値の
最大値は何になるのか実験して得た値だと思われます.(あくまで想像)

他のルーチンでは,x$fdfd+m+bm-pn..-26-2, ;限界Bmの計算(max 0-2) なんてのも.


> # どうなっているんじゃ〜〜

わたしもどうなっているのかわかりません.
他の人の環境では何が起こるかわかりませんね,楽しい!(笑)

10908/10877 BQO00549  konno            Lf+ が原因か?
( 1) 23/08/09 01:15 10907:めざらさんへのコメント コメント数:1
> BM を最大値で設定するために使用する定数です.
> その数値には,そんなに厳密な意味はなくて,たぶん手作業で BM 設定値の
> 最大値は何になるのか実験して得た値だと思われます.(あくまで想像)

これはオリジナルVZ で得た値なのですよね。他のVZではズレるとかないでしょうか。

> > # どうなっているんじゃ〜〜
> わたしもどうなっているのかわかりません.

どうも、Lf+ の場合に起こるようです。
2バイト文字の処理とかで誤動作しているのかなぁ?
私は Lf- で使っているので気が付かなかったようです。
というか、普通は Lf- で、必要な時に Lf+ にするのではと思っていました。
めざらさんの DEF では、ファイラーで "V" のトグルで LFN の切り替えしないので。(>_<)


10909/10877 DGF01024  めざら           Re: Lf+ が原因か? (確認しました)
( 1) 23/08/09 08:20 10908:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
> これはオリジナルVZ で得た値なのですよね。他のVZではズレるとかないでしょうか。

それは制作者たる konno さんが一番よくご存知のことかと思いますが……
いずれにしても計算上最大値に応じて設定した BM が何らかの理由でエラーになれば,
「メモリが足りません」の場合は設定値を減らすだけのことですから.
m.gann師の vzx/vzz を使用して BM 最大値で常駐するとかなら影響は即出ますが,
計算上最大値 x はあくまでも「表示」ですから大した影響はないかと思います.

> どうも、Lf+ の場合に起こるようです。

試しに,Lf- で起動したところ症状が出ませんでしたが,起動後にファイラーを
ロングに切り替えて再度確認したら,書換え症状が発生しました.

> というか、普通は Lf- で、必要な時に Lf+ にするのではと思っていました。

わたしは高橋版での Lf 新設以降,一貫して Lf+ です.無効になっていた時期も
ありますが,konno さんが復活してくれる前から特にいじっていなかったかと.

> めざらさんの DEF では、ファイラーで "V" のトグルで LFN の切り替えしないので。(>_<)

そういえば,わたしはファイラー最上段のメニューを無視してましたね.(笑)

ロング表示の新設以降,ファイラーコマンドの #V は意味が変化しました.
旧横分割(超ショート表示)をロング表示が乗っ取ったからです.
それでもファイラー表示中に Lf を切り替えても再表示の必要があるため,
#V の繰り返しによる表示リフレッシュのために必要ではあったのですね.
それをワンキーで済ませるため,lf!, #V #V を仕込んで L で呼んでいます.
他の表示変更とも共有した再表示(#U)させるルーチンをさらに呼んでいます.

あ,脇道に逸れましたが,原因が判明したということは修正されるってことですね.
ばんざーい.\(^o^)/ (以前と Lf 関連ルーチンが異なるわけ?)

……いや,それにしても,Lf 原因ってよく分かりましたね.
常時+のわたしには永久に分からなかったな,絶対.

10910/10877 BQO00549  konno            Re^2: Lf+ が原因か? (確認しました)
( 1) 23/08/10 01:17 10909:めざらさんへのコメント
> m.gann師の vzx/vzz を使用して BM 最大値で常駐するとかなら影響は即出ますが,
> 計算上最大値 x はあくまでも「表示」ですから大した影響はないかと思います.

めざらさんの DEF で vzx やってみたら、bm29991 になりました。
29991-bm-pn..-26, = 14656 = $3940
x=$3940 にすると、free 表示が 29991 になります。

> 試しに,Lf- で起動したところ症状が出ませんでしたが,起動後にファイラーを
> ロングに切り替えて再度確認したら,書換え症状が発生しました.

やはり Lf が原因なのでしょうかね。

> そういえば,わたしはファイラー最上段のメニューを無視してましたね.(笑)

そ、そんなぁ、め、めざらさ〜ん。(;_;)

> それをワンキーで済ませるため,lf!, #V #V を仕込んで L で呼んでいます.

おお、L でLFN切り替え出来ました。\(^^)/ ヤッタ-

> あ,脇道に逸れましたが,原因が判明したということは修正されるってことですね.
> ばんざーい.\(^o^)/ (以前と Lf 関連ルーチンが異なるわけ?)

い、いやぁ、修正できるかどうかは・・・ (^^;;

> ……いや,それにしても,Lf 原因ってよく分かりましたね.

オプションの違いかと思って、OPT_LST を見比べたら、LF+ に??? となったのです。(^^;


10911/10877 BQO00549  konno            原因はロングファイラー
( 1) 23/08/16 21:18 10877:めざらさんへのコメント コメント数:2
タイトルで終わってもいいかな・・・ (゚゜)☆\(--#)バキッ

・・・というわけにもいかないので、解明のいきさつを書いてみます。(^^;

各種VZで調べると、k07s5 (2009-12-12)までは出ず、k07t (2010-01-04)以降現象が出ます。
k07t の目玉はロングファイラーなんですよね。

とりあえず、main open text inst など各種ASM を k07s5 のと入れ替えても現象は変わらず。
filer.asm を入れ替えたら現象が出なくなりました。やっぱりロングファイラーか?

ここで入れ替わる文字コードに注目しました。
めざらさんの DEF では、"P" コードは $50 = 80 WD=80
私の DEF では、    "・" コードは $88 =136 WD=136

そうです、この数字は、WD の値なのでした。
ロングファイラーのルーチンでは、WD の値をローカルワークに入れてやり取りしていました。
そのローカルワークの値をコードセグメントのつもりでスタックセグメントに書き込んでいたようです。
だから LF+ で現象が出ていたわけです。
大ポカをやらかしていました。(>_<)

めざらさん、みなさま、バグバグなVZに気づかず公開していて申し訳ございませんでした。m(__)m
めざらさんのおかげでバグに気が付きました。ありがとうございました。m(__)m


10912/10912 BQO00549  konno            VZk07v6k (2023-08-16)
( 1) 23/08/16 23:52 コメント数:1
VZk07v6k (2023-08-16)バグ修正で更新しました。
見つけてくれためざらさんに感謝です。m(__)m


k07v6k (2023-08-16)
 ・k07t からのロングファイラールーチンにバグ有、マクロバッファ内が書き換わっていました。
 ・LFN処理のバッファを tmpbuf4 から 別メモリに取りました。その分サイズが増えています。
 ・[ESC]i ファイル挿入時のVZの不具合を修正してみた (検証中)
  ※BL1024*3 だとファイル内容が壊れます。(全てのVZで起こるバグなのでこの設定は危険)
   詳細は掲示板を読んでください。不具合を見つけたら掲示板に報告願います

 ダウンロード  vzkv6k.lzh ver1.60k07v6k (2023-08-16版 ) new!
    ソース差分 2023-08-16  50,642bytes  k07v6ks.lzh new!


VZの部屋にあります。


10913/10877 CRG00666  文太             Re: 原因はロングファイラー
( 1) 23/08/17 00:18 10911:konnoさんへのコメント コメント数:1
す、すごい!

konnoさん

>とりあえず、main open text inst など各種ASM を k07s5 のと入れ替えても
>現象は変わらず。filer.asm を入れ替えたら現象が出なくなりました。
>やっぱりロングファイラーか?

 やったこと(泥縄、「まだやれることはある!」作戦)、大筋は理解できました。

>ここで入れ替わる文字コードに注目しました。
>めざらさんの DEF では、"P" コードは $50 = 80 WD=80
>私の DEF では、    "・" コードは $88 =136 WD=136
>そうです、この数字は、WD の値なのでした。

 詳細は分かりませんが、ファイラでもWD使うんだ。filer2.asmでなく。
dos/vですものね。

>そのローカルワークの値をコードセグメントのつもりでスタックセグメントに
>書き込んでいたようです。

 セグメントの話は分かりませんが、仕留めたんだ。
 おめでとうございます。
 すごいです、本当にすごいです。

 とんでもなく暑い夏ですが、konnoさん、、、、好きです!



10914/10877 BQO00549  konno            Re^2: 原因はロングファイラー
( 1) 23/08/17 01:15 10913:文太さんへのコメント
>  やったこと(泥縄、「まだやれることはある!」作戦)、大筋は理解できました。

私は素人なのでプロのようにデバッガを駆使してとか出来ませんので。(^^;

>  詳細は分かりませんが、ファイラでもWD使うんだ。filer2.asmでなく。
> dos/vですものね。

ファイラーの窓枠の幅は、80桁固定なんですよね。WD=80 という定数を使っています。
ロングファイラー実現のためには WD をそのまま使えないので、fl_wd というローカルワークに窓幅を入れたのです。

	pushm	<ax,es>				; ##k
	clr	ax				;
	mov	es,ax				;
	mov	al,byte ptr es:[dosscrn_sx]	; ##156.123
	mov	fl_wd,al			;

fl_wd に DOSの幅の数値を入れたのですが、これだと SSセグメント(マクロバッファ)に入ったみたいなのです。

	mov	cs:fl_wd,al			;

このように、 CS: を付ければ書き込み先がコードセグメントに指定されるのでした。

>  とんでもなく暑い夏ですが、konnoさん、、、、好きです!

わ、私には妻が・・・(゚゜)☆\(--#)バキッ
もちろんこれは冗談ですが、私も皆さんが好きです。
よかったら試してみてね。♪


10915/10877 DGF01024  めざら           Re: 原因はロングファイラー
( 1) 23/08/17 18:51 10911:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
> そうです、この数字は、WD の値なのでした。

なるほど.設定が同じはずなのに VTDOS と DOSVAXJ3 で異なる値になったのは
WD の違いだったわけですね.いや,よくわかったねー!

10916/10912 DGF01024  めざら           Re: VZk07v6k (2023-08-16)
( 1) 23/08/17 21:20 10912:konnoさんへのコメント
参照先:http://mezala.la.coocan.jp/
K07V6K 動作を確認しました.
はっきりとした原因が判明していただけに,完全に修正されたと思われます.

お疲れ様でした.ありがとうございました.


10917/10877 BQO00549  konno            Re^2: 原因はロングファイラー
( 1) 23/08/18 01:23 10915:めざらさんへのコメント
> なるほど.設定が同じはずなのに VTDOS と DOSVAXJ3 で異なる値になったのは
> WD の違いだったわけですね.いや,よくわかったねー!

なるほど、そこが違ったのですね、原因がわかってみれば納得です。
わかったのは、めざらさんが DEF環境を提供してくれて再現が出来たからですね。
"P" の文字コードとかヒントは最初からあったのですよね。

私は基礎も勉強せずに我流で今までやってきていたので、今回のようなことになったのでしょう。
最近になって基礎から勉強し直しているので少しはわかるようになったのかもしれません。(^^;
今までバグバグなVZでご迷惑をかけていて申し訳ありません。m(__)m


10918/10918 BQO00549  konno            mogura.def のおかげ
( 1) 23/09/15 01:12 コメント数:1
暇、じゃなくて夏バテで何もやる気が起きないので、ゲームを弄ってみました。
たまたま目に入った mogura.def をやってみましたが、動作がおかしい。
KVZ以外では正常に動いているみたいなのですが、KVZのバグ?
不具合の内容は

・ステータスラインの色消しが効いていない
・終了時に WE 編集画面幅が 2 になってしまう

現象から見てプッシュポップの不具合とか?
KVZのかなり初期まで同じ現象になります。げげげ

・・・・あれ? これってもしかして、
#if kVZ
の分岐の不具合、たぶんオープンイベントマクロの不具合?

調べてみるとやはりオープンイベントマクロの不具合でした。

1 "!Open"
#if kVZ
	Vu-,as112,ao224,ar176,
	&Sf(nm,'.') (r)?? { ts="\x ^[EOL#%(]", Ew-,Eu-, }
	p[, p=r,
	&So(".hte",p) (r)?{ Vu+,as~,ao~,ar~,ts="\x ^\0/\0",Ew+,mr128, >A }
	(ne=='LE'||ne=='TE')?{ Vu+,as~,ao~,ar~,ts="\x ^\0/\0",Ew+,mr128, >A }
#endif
	p[, p=r,
:A	p],

こんなことをやっていました。
これでは設定していない拡張子のオープン時、プッシュポップが狂ってしまいます。(>_<)
うげぇ、今までこんな状態で使っていたんだ・・・・

ということで、mogura.def のおかげでマクロのバグを発見出来ました。
ありがとうございます。m(__)m


# このゲーム、点数がマイナスになっちゃうので悲しい。(;_;)
  w150, を w600, にすると間延びした感じで・・・
  [ESC] を押してもすぐに終わらないので、改造出来ないかしら・・・

そうそう、mogura.def とは、めざらさん作のもぐらたたきゲームです。m(__)m

10919/10918 DGF01024  めざら           Re: mogura.def のおかげ
( 1) 23/09/15 18:49 10918:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
その現象って,もぐらに限らないような気もしますが,修正のきっかけとなったので
あれば,まぁ,よかったのかもしれません。

> # このゲーム、点数がマイナスになっちゃうので悲しい。(;_;)

それが本来の設定ですから……あ,あれ? Score マイナス 1604 ですと?
連打したのにマイナス?! おかしいなぁ……お手つき扱いなのかな。
でも,ヒットがなければそのステージでゲームオーバーになるわけだから,
何かが変なんだなぁ……なんだろう。あはは,わかんないや。(笑)

>   [ESC] を押してもすぐに終わらないので、改造出来ないかしら・・・

すぐに終わらせたい場合,何もしなければそのステージで終わるはずです。

10920/10918 BQO00549  konno            Re^2: mogura.def のおかげ
( 1) 23/09/16 00:03 10919:めざらさんへのコメント
> その現象って,もぐらに限らないような気もしますが,修正のきっかけとなったので
> あれば,まぁ,よかったのかもしれません。

いやあ、不具合にはあっていたかもですが、ずっと気が付かなかったのです。(^^;
てっきり KVZ のバグかと思って焦りました。<(^^;)

> > # このゲーム、点数がマイナスになっちゃうので悲しい。(;_;)
> それが本来の設定ですから……あ,あれ? Score マイナス 1604 ですと?
> 連打したのにマイナス?! おかしいなぁ……お手つき扱いなのかな。

VTDOS などエミュではキーの取りこぼしなどがあるかもしれません。
r の値は変数に保存した方がいいかもしれませんね。

> でも,ヒットがなければそのステージでゲームオーバーになるわけだから,
> 何かが変なんだなぁ……なんだろう。あはは,わかんないや。(笑)

(^^; (^^; (^^;

> >   [ESC] を押してもすぐに終わらないので、改造出来ないかしら・・・
> すぐに終わらせたい場合,何もしなければそのステージで終わるはずです。

ちょっと弄ってみたら止まらなくなる場合がありました。(>_<)
ムズイです。(^^;;


10921/10921 BQO00549  konno            VZ改造人間誕生から20年
( 1) 23/09/16 23:40 コメント数:2
気が付けば私がVZ改造人間になってから20年が過ぎてしまいました。
そのきっかけは2003年4月にVAIO XP を買ったことです。
WindowsXPのDOS窓は高橋版VZのファイラーでLFNが使えないのでした。
ガーーーーーン!!!

ではこの時の顛末を替え歌風に

      (DOSの終焉が)迫る〜ショック!!
   (VZのソース解読は)地獄のASM
 (だけど何かが出ちゃう)我等の前には黒い画面
(改造のためなら平気なの)VZ世界の平和を守るため
             ゴーゴー・レッツゴー
             輝くマシン語
             今だーー「ジャンプ!」
             ここだー「分岐ック!」
             画面ファイラー
             画面ファイラー
             ロング名ファイラー


かくして7月に高橋版VZのLFNパッチを引っ提げてメジャーデビューしたのでした。
まあ、これだけなら唯のパッチ屋で終わったのですが
8月、南十字星を見て★に憧れ、アイドルデビューしてしまいました。
こうしてまた一人 VZ改造人間が出来上がったのでした。(^^; ヒィー


10922/10921 CXB00940  としき           Re: VZ改造人間誕生から20年
( 1) 23/09/17 12:47 10921:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 気が付けば私がVZ改造人間になってから20年が過ぎてしまいました。

なるほど、改造される側ではなく改造する側なわけですね。
すると「konnoなにがしは改造人間である」とナレーションで流れているときに
メスを振るう側がkonnoさんで、手術台の上でジタバタしているのは手足の生えた
黒本、とか。あぁ、イメージが膨らむ。


10923/10921 DGF01024  めざら           Re: VZ改造人間誕生から20年
( 1) 23/09/17 13:40 10921:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
替え歌にすると,盛ってるなぁ〜って感じですが,
そこここに散りばめられ仕込まれたネタの数々。
さすがです。


10924/10921 BQO00549  konno            Re^2: VZ改造人間誕生から20年
( 1) 23/09/17 23:23 10922:としきさんへのコメント
> なるほど、改造される側ではなく改造する側なわけですね。

私もMS軍団の支配に下り、しかたなく改造に手を染めることになってしまいましたが
今では改造せずにはいられない体にされてしまいました。(^^;

> すると「konnoなにがしは改造人間である」とナレーションで流れているときに
> メスを振るう側がkonnoさんで、手術台の上でジタバタしているのは手足の生えた
> 黒本、とか。あぁ、イメージが膨らむ。

うわ、どんなイメージですか。(^^;
勉強不足だったですが、原作は人間の自由を守るために戦っているのですね。
私も黒い画面ライターとして、V7号を作り上げました。
行け、V7号、テキをやっつけろ!


10925/10921 BQO00549  konno            Re^2: VZ改造人間誕生から20年
( 1) 23/09/17 23:45 10923:めざらさんへのコメント コメント数:1
> 替え歌にすると,盛ってるなぁ〜って感じですが,

いやあ、妄想話は盛ってなんぼですから。(^^;

> そこここに散りばめられ仕込まれたネタの数々。

替え歌を考えていると次々に余計なことが浮かんでしまうんですぅ。(゚゜)☆\(--#) ビョーキジャ


10926/10926 DGF01024  めざら           DOSVAXJ3 230919 更新
( 1) 23/09/20 09:29 コメント数:1
参照先:http://mezala.la.coocan.jp/
DOSVAXJ3 が更新されていました。
更新内容は

----------------------------------------------
build JP230919 (2023/9/19)

 ・拡張 CGA テキストモード 73h, 71h に対応しました。
 ・PC-DOS 付属のエディタ(E, TE)でカーソル表示がおかしかったのを修正しました。
----------------------------------------------

7月更新に比べると,それほど VZ に関係することはないですかね。
(CGAって LX くらいしか浮かびませんが,そもそも DOS なわけで……何かな)

いずれにせよ,作者様に感謝です。


10927/10926 BQO00549  konno            Re: DOSVAXJ3 230919 更新
( 1) 23/09/20 23:07 10926:めざらさんへのコメント
> DOSVAXJ3 が更新されていました。

めざらさん、お知らせいただきありがとうございます。
昨日か一昨日、軟式さんのサイトを覗いたんですが更新されていないなーと思っていました。(^^;
今日見ても更新されていなくて、更新ボタンで見られました。\(^^)/ ヤッタ-

> 7月更新に比べると,それほど VZ に関係することはないですかね。
> (CGAって LX くらいしか浮かびませんが,そもそも DOS なわけで……何かな)

LX専用のテキストアプリとかが動くんですかね?
モード切替を試してみると、CHEV 71 とかではモード70 になってしまって切り替え出来ない?

CHEJ 71

これでモード71 に切り替わりました。
見た目は 70 と変らないですね。(^^;
今のところ使い道はわからないです。

> いずれにせよ,作者様に感謝です。

同感です、ありがたく使わせてもらいます。


# 携帯端末は、ATOK8 が使える 200LX が一番文字入力しやすかったですね。(゚-゚)トホイメ


10928/10921 BQO00549  konno            ATOKナンバーワン
( 1) 23/10/02 23:03 10925:konnoさんへのコメント
ちょっとスレチ、#10927のコメントですが、替え歌つながりで。(^^;

> # 携帯端末は、ATOK8 が使える 200LX が一番文字入力しやすかったですね。(゚-゚)トホイ

今はWin10のIMEのATOKモードを使っていますが、たまに変換できない漢字があります。
例えば替え歌で「光子力研究所」を入力変換しようとしたら
「光子」が候補に出てこなかったり・・・
あれ? 今やったら普通に予測変換出来てる。(^^;

うーん、ともかくATOK が今でも一番なのかなという思いで替え歌を作ってみました。


苦しくたって
カナしくじったって
ATOKの中では 平気なの
変換が決まると 胸がはずむわ

レシーブ トス スパイク
ワンツー ワンツー ATOK
「だけど誤字がでちゃう 普通の子だもん」

涙も汗も 若いファイトで
青空に遠く さけびたい

ATOK ATOK
ナンバーワン
ATOK ATOK
ナンバーワン


おそまつさまでした。(^^;


10929/10929 BQO00549  konno            寝室テレビ用PC買いました
( 1) 23/10/15 14:39 コメント数:1
我が家ではリビングのテレビでアマプラやYouTubeを観ています。
さらにPCに繋いでPC画面も表示できるので便利に使っています。
寝室で録画したものもリビングで観るとかも相互に出来るのでよく利用していますね。

でも寝室のテレビではYouTubeなどは観られません。
2013年ごろのテレビなのでそういう機能もあるのですが実用的には使えませんでした。
最近奥様が、寝室でも観たいと言ってきましたので、検討してみました。

テレビを買い替えるには出費もかさむので、安いノートPCでも買って繋げばどうかと考えました。
お馴染みのまーぶるPCを見ると、16800¥ で店長お任せの訳ありPCが目に入りました。
若干の傷や擦れがあるようですが、テレビ画面で見るなら問題ないかと思い、購入しました。

届いてみるとビックリ!
なんと、その前に購入した富士通のノートPCと見た目は全く同じ! (^^;
傷や擦れも特に見えません。
CPUがi3で若干遅いかもですが、YouTubeが見られれば問題なしです。
バックアップ用のサブノートとしても使えそうです。

新しいPCの仕様は
プロセッサ	Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz   2.40 GHz
実装 RAM	8.00 GB (7.89 GB 使用可能)
システムの種類	64 ビット オペレーティング システム、x64 ベース プロセッサ
エディション	Windows 10 Pro
バージョン	22H2
OS ビルド	19045.3448

使用中のPCの仕様は
プロセッサ	Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz   2.50 GHz
実装 RAM	16.0 GB
システムの種類	64 ビット オペレーティング システム、x64 ベース プロセッサ
エディション	Windows 10 Pro
バージョン	22H2
OS ビルド	19045.3448

ディスプレイは 1366 x 768 で同じですね。
今回は始めからSSD 256Gだからか、ハイブリッドスリープも OFF になっていました。
またしばらく楽しめそうです。(^_^)


10930/10929 DGF01024  めざら           Re: 寝室テレビ用PC買いました
( 1) 23/10/16 07:15 10929:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
祝着に存じます。
そういえば,ほとんど使っていないと聞いた GPD PocketPC という選択はなかった?

うちはテレビに繋ぐときは GPD MicroPC を使っています。

でも,寝室にPCを置けるスペースがあるなら,繋ぎっぱなしにできるのが一番ですね.

なにより,奥様のご要望に応えることができたのが一番でございますよ.

一年前に買ったのと同じって,どれだけ在庫があったのでしょう.
リース落ちにしてはちょっぴり前の型のようですが….


ベッドに入って見てると,寝落ちしちゃいませんか?

10931/10929 BQO00549  konno            Re^2: 寝室テレビ用PC買いました
( 1) 23/10/16 18:39 10930:めざらさんへのコメント コメント数:1
> そういえば,ほとんど使っていないと聞いた GPD PocketPC という選択はなかった?

うう、暫く使っていない間にPINだかパスワードを忘れてしまい、往生しています。(;_;)
PASSのリセットとか初期化とかはどうやりましたっけ。(^^;

> うちはテレビに繋ぐときは GPD MicroPC を使っています。

上の事情で試せませんでした。(>_<)
タブレットも考えたのですが、操作のたびに持ち上げて指でタッチしたりも面倒な気がして。(^^;
ずっと持っているには重そうだし。(^^;
どっちがいいと思われますか。

> でも,寝室にPCを置けるスペースがあるなら,繋ぎっぱなしにできるのが一番ですね.

そう思って格安ノートPCをゲットしたんですが、置くスペースはあまりないのです。
無線マウスを置ける平らな台も必要ですね。どうするか思案中です。(^^;

> なにより,奥様のご要望に応えることができたのが一番でございますよ.

一応寝室のテレビでPC画面が見られるようにはなったのですが、まだ使ってはいないそうです。
まずは使ってもらって使い勝手を改善していきたいところですね。
・・・と言いながら私のサブノートとして着々と設定が進んでいたりして。(^^;

> 一年前に買ったのと同じって,どれだけ在庫があったのでしょう.
> リース落ちにしてはちょっぴり前の型のようですが….

一年前に購入したものは、CPUがi5で、若干性能が上のようです。
製造年は2016年で 49999¥でした。
今回の物は、CPUがi3で、製造年は2017年で 16800¥でした。うーむ、複雑な気分・・・

> ベッドに入って見てると,寝落ちしちゃいませんか?

それが一番の問題ですね。(^^;
まあ、付けっぱなしでも一定時間で電源は切れるんですが、省エネではないですよね。(^^;


10932/10929 BQO00549  konno            PCのパフォーマンス測定【Windows10】
( 1) 23/10/17 23:46 10931:konnoさんへのコメント
CPUの違いでどのくらいパフォーマンスの差があるのか気になったので調べてみました。

PCのパフォーマンス測定方法【Windows10】
https://web-roku.com/pc-performance

ここのページから引用します。

-----------------------------------------------------------
Windows10に標準で入っている「WinSAT」を使ってPCのパフォーマンスを測定する手順を説明します。
WinSATは直接起動することができないため、まず先にWindows PowerShellを起動します。
Windowsキー+Rで「ファイル名を指定して実行」のウィンドウを開き、powershellと入力→「OK」

PowerShellの画面で、winsat formalと入力しEnterキー
WinSAT(黒いウィンドウ)が起動します。そのまますぐに測定が始まります。測定時間は数分です。PCに負荷をかけないようにじっと待ちましょう。
測定後は、PowerShell(青いウィンドウ)で測定結果のスコアを確認します。

PowerShellの画面で、Get-CimInstance Win32_WinSatと入力しEnterを押すと測定結果がスコアで表示されます。
-----------------------------------------------------------

Get-CimInstance Win32_WinSat の結果です。

Intel Core i5-6300U  2.50GHz
CPUScore              : 8.5
D3DScore              : 9.9  N/A
DiskScore             : 8.1
GraphicsScore         : 6.5
MemoryScore           : 8.5
WinSPRLevel           : 6.5

Intel Core i3-7100U  2.40GHz
CPUScore              : 8.3
D3DScore              : 9.9  N/A
DiskScore             : 8.15
GraphicsScore         : 6.2
MemoryScore           : 8.3
WinSPRLevel           : 6.2

うーむ、i5-6300U のほうが若干数値が高いくらいか・・・微妙。(^^;

項目の意味と記事中のPC Intel Core i3-7100U のスコアは

項目 		スコア 	意味	Intel Core i3-7100U
CPUScore 	8.7 	プロセッサのスコア
D3DScore 	9.9 	3Dグラフィックスのスコア ※D3DScoreはWindows10では測定できないため、9.9 固定。
DiskScore 	5.95 	ハードディスクのスコア
GraphicsScore 	5.2 	グラフィックスのスコア
MemoryScore 	5.9 	メモリーのスコア
WinSPRLevel 	5.2 	ベーススコア(各スコアの最低スコア)

う、うーむ、同じCPU同じ周波数なのにこちらの方がCPUの数値が高いのは何故? (;_;)


10933/10933 BQO00549  konno            VGAで動くアナログ時計とカレンダのアクセサリ
( 1) 23/11/17 00:36 コメント数:6
この記事は、ココログからの転載です。
http://tamaneko2.cocolog-nifty.com/vz2/

DOSVAXJ3のVGAで動くアナログ時計とカレンダのアクセサリをアップします。

きっかけは、最近文字が見えづらくなって、デジタル文字の時間がパッと読めなくなったことです。
大きなアナログ時計がパソコンで常駐出来ればなぁ・・・・

そうだ! 昔作った時計のアクセサリがあるじゃないか!
DOSVAXJ3で常時表示させておけば便利かも。

ということで、この古いプログラムの復活計画が始動したのでした。、
お茶を1分蒸らす時やカップ麺の3分などチェックできるタイマー機能もあります。(^_^)

現状データファイルの置き場所指定できないので、カレントに全部置いて使ってください。
DOSVAXJ3を起動したら、chev jp して、ファイル群のあるフォルダをカレントにしてから起動してください。

STIME.EXE を起動すると
このようにアナログ時計を表示します。

[F1]キーを押すと
このように大きなカレンダを表示します。
休日も表示します。

[F2]キーを押すと
このように、次月まで表示します。
誕生花と日程も表示されました。
これらは2度キーを押さないと表示しないようで、バグですね。まあおまけですので。

[PGDN]を押すと、押すたびに時計が拡大します。
[PGUP]を押すと、押すたびに時計が縮小します。

[ALT]+[F2]を押すと、秒針が太くなります。
[ALT]+[F4]を押すと、時分針が青くなります。
青い色を付けると、色が残ることがあります。
また、色付きの時は秒針が十字の位置で消えることがあるので太い秒針を用意しました。
SIN,COSの計算精度かPAINTの影響か、DOSVAXJ3 との相性か、わからないです。

簡易タイマーも2系統あるので、作業時間をチェックするとかに使えます。

簡易的な機能説明書も同梱したので、色々弄ってみてください。

自作、改作アプリの放置部屋  に置いてあります。


10934/10933 BQO00549  konno            Re: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/18 21:16 10933:konnoさんへのコメント コメント数:1
いくつか間違いなど修正したのでファイルを差し替えました。11月18日版をお使いください。

todayx.bat は、実際には today2.bat で動いていたので、表記やファイル名を today2 に統一しました。

sedit.bat は、常駐VZから STIME.EXE を起動して BAT でVZを呼ぶと上手く動かないようです。
JED などのフリーのエデイタを指定してください。
常駐VZで上手く動かす方法、ありましたっけ?

# 常駐VZを使いたいのに本末転倒のような。(^^;


10935/10933 CRG00666  文太             Re^2: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/18 22:01 10934:konnoさんへのコメント コメント数:1
konnoさん

 いー感じ。楽しそう。
 昨晩『AWAKE』という将棋ソフト開発についての映画をNetflixでみて、
今日、これを見て、ああ、プログラミングしたい、と久しぶりに思いました。
 いろいろいろいろあって、konnoさんが認知症になる前に(僕も続きまーす!)
いっぱい聞きたいのだけど、ううう、残念。
 たぶん、僕がやりたい技術がつまってるソフト。テキストファイルを読み込んで
表示、なんですよね。ベーシックも楽しそう。
 とはいえ、ベーシックだとライブラリーモジュールとか方言とか、いろいろある
んでしょうね。
 dosvaxが敷居、高い、、、。
 WinMEをはやく直さないと、、、。DOS機、はやく作りなおさくちゃ、、、。
 ぶぶぶぶ、の文太でした。
 もうちょい沈んでます。m(__)m

 うん、常駐Vzで使えないと、、、。敷居たかそうだなぁ、、、。

10936/10933 BQO00549  konno            Re^3: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/18 23:05 10935:文太さんへのコメント コメント数:2
文太さん、お元気そうでなによりです。

>  昨晩『AWAKE』という将棋ソフト開発についての映画をNetflixでみて、

面白そうですね、私も昔ポケコンBASICでオセロの対人ゲームのソースを改造して
対コンピュータのオセロを作ったことがあります。恐らく世界最弱のアルゴリズムです。(^^;
私自身がオセロ弱いもので。(^^;
ソースは恐らくもう無いと思われます。もったいないことをしたなぁ・・・

> 今日、これを見て、ああ、プログラミングしたい、と久しぶりに思いました。

私もBASICのソースを弄っていて、やっぱりこういうのが好きなんだなぁ、と思いました。(^^;

>  いろいろいろいろあって、konnoさんが認知症になる前に(僕も続きまーす!)

私も色々あって健康不安などもあるし、ボケも進んでいきそうなので、備忘録など書いています。

>  たぶん、僕がやりたい技術がつまってるソフト。テキストファイルを読み込んで
> 表示、なんですよね。ベーシックも楽しそう。
>  とはいえ、ベーシックだとライブラリーモジュールとか方言とか、いろいろある
> んでしょうね。

あ、ソースいりますか。汚いけど参考になるならソースもアップしようかな。
古い雑誌の例題ソースなどは弄って公開しても問題ないですよね。(^^;

>  dosvaxが敷居、高い、、、。

軟式さんのサイトから最新のdosvaxをダウンロードして展開したらフォルダそのままで使えます。
#10764: Re^2: DOSVAXJ3 (2023/4/14) 更新 投稿者: konno   2023/04/15(土)
#10765: DOSVAXJ3の dosboxj.conf 設定例 投稿者: konno   2023/04/15(土)
あたりが設定の参考になると思います。簡単ですよ。(^^;

>  うん、常駐Vzで使えないと、、、。敷居たかそうだなぁ、、、。

とりあえず JED を入れてみました。結構使えそうです。(^^;
本来は自作のエデイタもどきと連携していたんですがね。(^^;


10937/10933 BQO00549  konno            VGAで動くアナログ時計とカレンダのアクセサリの説明書
( 1) 23/11/18 23:30 10933:konnoさんへのコメント
STIME.EXE 説明書	Ver 8.231116

DOSVAXJ3のVGAで動くアナログ時計とカレンダのアクセサリです。
現状データファイルの置き場所指定できないので、カレントに全部置いて使ってください。
DOSVAXJ3を起動したら、chev jp して、ファイル群のあるフォルダをカレントにしてから起動してください。


・STIME.LZH に同梱されているファイル
STIME.EXE	実行ファイル
STIME.TXT	このファイル
SEDIT.BAT	SEDIT.BATで指定したエデイタ(非常駐VZなど)で各種設定表を編集
TODAY2.BAT	TODAY2.BATで指定したCNFファイルでTODAYを実行 (歴史データ大型版表示など)
HOLIDAY.DAT	休日データ。TODAY のデータに準じている? 新しい祝日形式には対応していません。
SCHEDULE.DAT	日程データ。表示のバグがあるので実用ではないです。
FLOWER.TBL	誕生花 TODAY のデータを流用。使えるかは?


・ファンクションキーなどの機能

F1:カレンダー 	当月の大きなカレンダーを表示
F2:カレンダ2 	当月の大きなカレンダーと次月を表示
F3:カレンダ3 	月を指定してカレンダーを表示
F4:日程 	SEDIT.BAT で指定したエデイタでスケジュール表SCHEDULE.DATを編集
F5:TODAY  	TODAY.EXE があれば TODAY を実行
F6:Time1  	タイマー1の表示。押すたびに経過時間を表示
F7:Time2  	タイマー2の表示。押すたびに経過時間を表示
F8:日時変 	日時の変更。DOSVAXJ3では時間の変更不可
F9: CLS  	画面をクリアして時計表示
F10: END 	終了

[SHIFT]
F1:MS-DOS 	終了
F3:Bio   
F5:TODAY2  	TODAY2.BAT で別の設定(TODAY3.CNFなど) でTODAYを実行
F7:Vmap 	VMAP.COM があれば VMAP を実行

[CTRL ]
F1:sys  	終了 (DOSVAXJ3 ではキーマップ表示?)
F2:HR   	

[ ALT ]
F1:end    	終了
F2:秒針2  	秒針表示を2本線に
F3:秒針1  	秒針表示を1本線に
F4:長針青  	時分針を青色表示
F5:長針透 	時分針を色無しで表示

[PGUP]  	押すたびにアナログ時計を縮小表示
[PGDN]  	押すたびにアナログ時計を拡大表示


・バグ、更新履歴
※ 日程表示はカレンダ表示を2度押さないと表示しないバグ有り
※ DOSVAXJ3で負荷が100%になるのでキー入力ループで INT28 INT2F(AX1680)を入れた。
※ DOSVAXJ3でカーソルが表示しないのでグラフィックで疑似カーソル使用。


10938/10933 CRG00666  文太             Re^4: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/18 23:31 10936:konnoさんへのコメント コメント数:1
konnoさん

>私もBASICのソースを弄っていて、やっぱりこういうのが好きなんだなぁ、と思いました。(^^;
 この感じがジンジン伝わってきて、僕もけっこう幸福感かんじましたよ。

>私も色々あって健康不安などもあるし、ボケも進んでいきそうなので、備忘録など書いています。
 ガンガンいってください、というか、ぼちぼちぼつぼち行ってください!

>あ、ソースいりますか。汚いけど参考になるならソースもアップしようかな。
 いいですね!

>古い雑誌の例題ソースなどは弄って公開しても問題ないですよね。(^^;
 ない! に一票!
 ソースがどんな見栄えなのか、想像もつかないんですよね。
 時計とカレンダーは実は完全に別物で、時間だけファンクションコール(これを
呼ぶモジュール?)、カレンダーはテキストから読み込んで表示、これらを合体させて
ファンクションキーで切り替える、とか想像したのですが。
 (この合体と切り替えが難しそう、と思いました)−−−とんちんかんなこと
言ってても怒っちゃやーよ。動かせてないのですから。

 アナログ時計の秒針を進めるのとかは、既存モジュールあり? ああいう(?)
グラフィックなのは考えたことがない、、、。

>>  dosvaxが敷居、高い、、、。
>軟式さんのサイトから最新のdosvaxをダウンロードして展開したらフォルダそのままで使えます。
 い、いつか、やります。vtdosもまともに使えてない、、、。

>>  うん、常駐Vzで使えないと、、、。敷居たかそうだなぁ、、、。
>とりあえず JED を入れてみました。結構使えそうです。(^^;
 僕も柔軟になりまして、これでいいじゃん、とも思いましたよ。JED, 16bit のフリー
エディタ。いいじゃないの。
 ただ、今日、久しぶりに「やっぱVzだろう」とか思っちゃたんですよね。
 いいですよ、このエディタ。Vzっていうんですけど、

 俺の体(あるいは頭)、まだ大丈夫なのか? とか思いながらも、
のんびりのんびり、ぐてぐてぐてぐて、いきましょう!
 ありがとうございます。m(__)m



10939/10933 BQO00549  konno            Re^5: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/19 22:51 10938:文太さんへのコメント コメント数:1
>  時計とカレンダーは実は完全に別物で、時間だけファンクションコール(これを
> 呼ぶモジュール?)、カレンダーはテキストから読み込んで表示、これらを合体させて
> ファンクションキーで切り替える、とか想像したのですが。

時間は time$ というシステム変数を使います。00:00:00 ( 時:分:秒 ) 文字列の形で入っています。
カレンダーは計算だけで表示できます。祝日データをテキストから読み込んで表示します。
VZマクロのカレンダーと同じことをやっています。言語形式が違うだけです。

>  (この合体と切り替えが難しそう、と思いました)

合体は私の得意技です。無駄な部分を無くし変数を統一して最適化するのは結構大変ですが。(^^;

>  アナログ時計の秒針を進めるのとかは、既存モジュールあり? ああいう(?)
> グラフィックなのは考えたことがない、、、。

オリジナルの例題には秒針はありませんでした。

200 Y!=PI!-T2*PI!/30		'分針
210 Z!=PI!-(T1*60+T2)*PI!/360	'時針

オリジナルの記述です。コメントは私がつけたものです。
これを参考にして、秒針を追加したのです。

10390 X9!=PI!-T3*PI!/30: '秒針
10400 X!=X9!:	'秒針

文字盤の文字も、拡大縮小するためにドットデータを自分で作ったみたいです。(覚えていない)(^^;
時計も万年カレンダーもソースは1ページ以内で出来ているので打ち込みは大した手間ではなかったです。
改造部分で何倍にも膨らんでしまって今では何をやっているのか調べるのも容易ではないです。(^^;

>  俺の体(あるいは頭)、まだ大丈夫なのか? とか思いながらも、
> のんびりのんびり、ぐてぐてぐてぐて、いきましょう!

マイペースで行くのが一番ですね。
プログラミングはストレス発散のため!
# でもそれがストレスを生むという説も。(^^;


10940/10933 CRG00666  文太             Re^6: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/20 00:31 10939:konnoさんへのコメント コメント数:2
konnoさん

 ご丁寧にいろいろとありがとうございます。
 おもしろい!
 おもしろかったから、電脳組社製の「BASIC/98 for DOS/V」(注1)という
ベーシックのマニュアルとか、QBasic By Example とかの本をもってきてしまいました。
 まずDOS機を復活させないと、ベーシック・プログラムのインストールすら
できない、、、。
 dosvaxは? 敷居、たかし。気力が、、、。

 最初に。
>プログラミングはストレス発散のため!
># でもそれがストレスを生むという説も。(^^;
 趣味ですよ、趣味。仕事も何にも関係ない。しかし仕事がらみだと、嫌になっても
根性で最後まで走るという動機があったりもしますが。(注2)
 パソピア、高いねぇ。でも、格好いいですねぇ。

 以下、というか全部、独り言みたいなものです。

 で、T-Basicというのは、Turbo Basicということですか? ボーランド製?
 深い意味はありませんが、以下に、書法がそれぞれあるんだろうな、とか思い。

>時間は time$ というシステム変数を使います。00:00:00 ( 時:分:秒 ) 
>文字列の形で入っています。
 さすがベーシック。システム変数を呼ばれたら中でファンクションコール
してくれるんだ。Vzのファイラで、「K」とやると「ディレクトリ作成ファンク」
を呼んでくれるのと同じですね。
 time$, date$。システム変数に「$」を末尾につけるのは、どこも同じみたい、、、。

>VZマクロのカレンダーと同じことをやっています。言語形式が違うだけです。
 この辺り、弱いですねぇ。読んだことないなぁ。
 基本的に、時計やカレンダーはPCの外でよい、という考えできております。
あれ? データの読み込みと描画なの。

>合体は私の得意技です。無駄な部分を無くし変数を統一して最適化するのは結構大変ですが。(^^;
 うん、既存のものに付加機能を足すのは、うん、けっこう大変そうだ。

>200 Y!=PI!-T2*PI!/30		'分針
>210 Z!=PI!-(T1*60+T2)*PI!/360	'時針
 「!」は、ユーザ変数のマーキングですよね、きっと。使われなくなったLET
ステートメント。「!」最初、何かと思った。
 「T1」「T2」「T3」も、ユーザ変数ですよね? ???
 (行番号がまだ入ってる、、、。そうしないと、ベーシックのソースらしくない?
  行番号ジャンプとかするの?)

>10390 X9!=PI!-T3*PI!/30: '秒針
>10400 X!=X9!:	'秒針
 「X9」の「9」の意味は想像できる。とりあえず「9」
 正確にではないですが、「30」とか「360」での割り算は、アナログで、円の中での
角度でしょうね。

>文字盤の文字も、拡大縮小するためにドットデータを自分で作ったみたいです。(覚えていない)(^^;
 これです! やっぱそうなのかぁ! やってみたい!

>時計も万年カレンダーもソースは1ページ以内で出来ているので打ち込みは大した手間ではなかったです。
>改造部分で何倍にも膨らんでしまって今では何をやっているのか調べるのも容易ではないです。(^^;
 うううう、大変そう。
 でも、気持ちも状態も経緯も、いちおう想像できます。意外に太るのよ。

 でも、とにかく。
 部屋の整理、心の整理、そしてDOS機復活作戦が優先順位となっております。
すみませぬ。


(注1)後継ソフト(ベーシック)がWin11で動きます、というのを社のサイトで
見つけた。がんばっておられますなぁ。世の中にニーズがあるんですねぇ。

(注2)どうでもいい注。例の『AWAKE』という将棋ソフト開発映画で、「ソフト作りたい!」
と思った主人公は、「プログラミング研究会」に入部します(大学生)。
 主人公は、元プロを目指した棋士。が、プログラミングは、ど素人。
 入部場面で書かされる自己紹介用データシートには、名前などのほか「使用言語」
という欄がある。彼は、「日本語」と書く。
 で、本を3冊渡される。「全部暗記してきて」。暗記完了。テスト合格。次、5冊。
そして、ついに、将棋ソフトが動き出す、、、。
 動機なんですよね。将棋学習の場面もプログラミング学習の場面も、雰囲気はほぼ同じ。
あふれる情熱。圧倒的な集中力。
 もう僕には残ってないかなぁ、という感想、、、。
 のんびりいこう! ストレスためない程度にがんばろう! という結論。

 上、ちゃんとVzで書きました。えばるこっちゃないぞ。
 あ、ソース、上げてください!



10941/10933 BQO00549  konno            Re^7: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/21 00:41 10940:文太さんへのコメント
>  で、T-Basicというのは、Turbo Basicということですか? ボーランド製?

これは東芝製BASICという意味だと思います。元はMSのGW-BASICを日本語化したのでしょう。

>  「!」は、ユーザ変数のマーキングですよね、きっと。使われなくなったLET
> ステートメント。「!」最初、何かと思った。

「!」は浮動小数点型の変数という指定です。
「%」は整数型の変数という指定です。同じ名前でもこれをつけると別の変数となります。

>  「T1」「T2」「T3」も、ユーザ変数ですよね? ???

そうです。頭がアルファベットでシステム変数以外なら自由に名前が付けられます。

>  (行番号がまだ入ってる、、、。そうしないと、ベーシックのソースらしくない?
>   行番号ジャンプとかするの?)

初期のBASICインタプリタは行番号が必須でしたが、最近のはいらないようですね。

>  正確にではないですが、「30」とか「360」での割り算は、アナログで、円の中での
> 角度でしょうね。

その通りです、ちなみに、「PI!」は浮動小数点型のシステム変数で、3.14159 という円周率です。
(記憶で書いたけど合っているかな (^^;)

>  でも、とにかく。
>  部屋の整理、心の整理、そしてDOS機復活作戦が優先順位となっております。

私も同じです。(^^; 他にも懸案事項が山済みで。ヽ(^^;)オイオイ

> (注1)後継ソフト(ベーシック)がWin11で動きます、というのを社のサイトで
> 見つけた。がんばっておられますなぁ。世の中にニーズがあるんですねぇ。

あの時代を生きた世代は BASIC が友達みたいなものなのかも。(^^;

>  動機なんですよね。将棋学習の場面もプログラミング学習の場面も、雰囲気はほぼ同じ。
> あふれる情熱。圧倒的な集中力。

まさに、あの頃の情熱と集中力はもう戻らないのか・・・・

>  もう僕には残ってないかなぁ、という感想、、、。
>  のんびりいこう! ストレスためない程度にがんばろう! という結論。

結局長く続けるにはこれが一番! ですね。(^^;

>  あ、ソース、上げてください!

ただいまコメントを整理中です。(^^;
汚くて恥ずかしいけど揚げちゃいますね。(^^;


10942/10933 CXB00940  としき           Re^7: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/22 01:14 10940:文太さんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
文太さんはDOS機復活ですか。
私はXPマシン復活中です。
生きているマシンはいくつかあるのですが、やっぱり画面サイズとかいろいろあって。
それはさておき。
かつてはN88-BASICがネイティブ、とか言っていた私としては、この辺の話題にも
足跡を残しておきたいかな、と。
なので、いろいろと散文を書き散らかします。

電脳組の「BASIC/98」は、for FMRを持っています。
ポケ3での動作確認のためだけに購入しました。
ざっくりと見た範囲では、きちんとポケ3でも動きました。
まだどこかにしまってあるはずだけど、どこにあるかなぁ。部屋に喰われた。
ちなみに、言語仕様は、かなりN88-BASICに近かったと記憶しています。
私の記憶が確かなら、その当時、後継を名乗れそうなほどN88-BASICに言語仕様が
近かった処理系が二つあって、そのうちのひとつが「BASIC/98」だったような。
ん〜、記憶が怪しい。

>  dosvaxは? 敷居、たかし。気力が、、、。

これ、konnoさんもおっしゃっていますが、動かすだけなら敷居はないも同然。
解凍して実行ファイルを起動するだけですから、DOS窓を動かすのと比べていったい
何が違うのか、ぐらいの感覚。


以下、BASICのお話。
基本的に東芝のT-BASICとNECのN88-BASICはそこそこ似ているはずですが、konno
さんのお話だと、やっぱりちょっと違うみたい。
まず、おそらく同じであろう部分。もしかしたら違うかもしれないけど。
変数は、コードが実行されて初めて領域が確保されます。
この辺はインタプリタ言語であるawkやperlも同じはず。
だから、マイクロ秒の単位で時間を稼ぎたいプログラムの場合、プログラムの途中で
領域を確保する時間が惜しいということで、プログラム冒頭でたとえばゼロを代入
するなどして、そこで領域を確保しておく、なんて技を使っているコードも見かけ
ました。
変数の型については、接尾辞をつけなければ、デフォルトで実数型。
「!」をつければ明示的に実数型。
「$」だと文字列型、「%」だと整数型、「#」だと倍精度実数。
デフォルトを変えることもできました。
「DEFINT A-C」と宣言すると、頭文字がAからCで始まる変数は接尾辞なしで整数型。
「DEFSTR D-F」と宣言すると、頭文字がDからFで始まる変数は接尾辞なしで文字列型。

ここまではT-BASICとN88-BASICで同じ部分。
一方、なんとなく違ってそうなのがシステム変数。
N88-BASICにも、TIME$とDATE$はありました。
でも、円周率を表すシステム変数はありません。
なので、自分でプログラムの最初の方で、例えば「PI=3.14」とか代入していました。
だから、人によって、コードで使われている円周率が異なっていたり、円周率を表す
変数名がPIだったりPAIだったりと一定していなかったり。

あぁ、なんだってこんな、いにしえのBASICの文法解説をしているんだろう(笑)。


10943/10933 CXB00940  としき           オセロ
( 1) 23/11/22 01:14 10936:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
私もオセロのプログラムを作りかけていて、いまだに完成していないのですが。

> 面白そうですね、私も昔ポケコンBASICでオセロの対人ゲームのソースを改造して
> 対コンピュータのオセロを作ったことがあります。恐らく世界最弱のアルゴリズム

これ、とっても気になります。
どういうアルゴリズムだったか、覚えておられます?
ちなみに、私の作ろうとしていたのは、俗に優先順位法というアルゴリズムです。
全てのマスに1から60までの優先順位をふって、優先順位の高い方から置けるか
判定して、置ければそこに置く、というやつ。なので、優先順位のふり方次第で、
それなりに強かったり全く弱かったり、となります。たとえば、四隅の優先度が
一番低かったら弱くなる、ということで。
そういえば、8ビットの昔も昔、PC-8001用のオセロと対戦したことがあるのです
が、えらく強かったなぁ。
こいつはロジック部分がフルアセンブラで、おまけに残り10手になった時に残りの
手をすべて読み切る仕様となっていて、そこだけちょっと待ち時間が長かったのです
が、それでもほんの数十秒。
今のパソコンなら、1手ごとに最後まで読み切ることもできるのでしょうね。


10944/10933 BQO00549  konno            BASIC道への入り口
( 1) 23/11/22 23:55 10942:としきさんへのコメント コメント数:1
> でも、円周率を表すシステム変数はありません。
> なので、自分でプログラムの最初の方で、例えば「PI=3.14」とか代入していました。
> だから、人によって、コードで使われている円周率が異なっていたり、円周率を表す
> 変数名がPIだったりPAIだったりと一定していなかったり。

あれ? と思って確認してみたら、「PI!」は自分で設定していました。(>_<)
STIME.bas のソース

10080 X1=77-SC!*2:PI!=3.14159:

結局、円周率を表すシステム変数は無いというのが正解だったようです。
確認もしないで間違ったことを言って申し訳ないです。m(__)m

> あぁ、なんだってこんな、いにしえのBASICの文法解説をしているんだろう(笑)。

BASIC地獄、いやさ、天国への道はまだまだこれからですよ。(^^;


10945/10933 BQO00549  konno            Re: オセロ
( 1) 23/11/23 00:13 10943:としきさんへのコメント コメント数:1
> 私もオセロのプログラムを作りかけていて、いまだに完成していないのですが。

おお、良いですね。こういうのはアルゴリズムを考えるのも楽しいですよね。
としきさんはオセロ強いですか? 私はヘタの横好きで。(^^;

> > 面白そうですね、私も昔ポケコンBASICでオセロの対人ゲームのソースを改造して
> > 対コンピュータのオセロを作ったことがあります。恐らく世界最弱のアルゴリズム
>
> これ、とっても気になります。
> どういうアルゴリズムだったか、覚えておられます?

全く覚えていないんですよ。(;_;)
もしかしたらカセットテープにソースが残っているかもですが、今では取り出す方法が・・・
ああ、本当に諸々捨てないで取っておけば良かったなぁ、と思う今日この頃です。(;_;)

> ちなみに、私の作ろうとしていたのは、俗に優先順位法というアルゴリズムです。
> 全てのマスに1から60までの優先順位をふって、優先順位の高い方からおけるか
> 判定して、置ければそこに置く、というやつ。なので、優先順位のふり方次第で、
> それなりに強かったり全く弱かったり、となります。たとえば、四隅の優先度が
> 一番低かったら弱くなる、ということで。

何となくそれに近い考え方で作ったような気がします。
でも出来たのは、世界最弱のコンピュータオセロでした。(>_<)
私自身が頭が悪いせいですね。(;_;)

> そういえば、8ビットの昔も昔、PC-8001用のオセロと対戦したことがあるのです
> が、えらく強かったなぁ。

将棋でもオセロでも、強い人がアルゴリズムを考えることで本当に強いものが出来るのでしょうね。


10946/10933 BQO00549  konno            新祝日対応のデータ形式
( 1) 23/11/23 02:38 10933:konnoさんへのコメント コメント数:2
STIME.EXE は古いプログラムゆえ、カレンダは新祝日法に対応していません。
日曜が祝日の場合に月曜が振替休日になるようには作っているみたいですが。

で、コメントの整理中にふと、カレンダマクロが対応しているから見てみようかと思ったのです。
CALENDAR.DEF Yushi さんのモノクロ版カレンダー拡張wanama版は全く理解できませんでした。
LXCLND.def  Emmettさんのカレンダーは祝日データに工夫がしてありました。

72:	;---- holiday definition -----------------------------------------
	; (6) 日付の位置に半角大文字アルファベットを書くと「?回目の?曜日」
	;     を指定したことになる(回数の数値は A==1, B==2, ...を意味し、曜日
	;     は A==日曜日, B==月曜日 ... を意味すると解する)。

	hh..1  =  "1874>0=1;1874>1948=3;1949>1999=15;2000>0=BB",


これは1月の祝日データですが、注目すべきは後半の成人の日。

	1949>1999=15;	1949年から1999年までは、15日固定
	2000>0=BB",	2000年以降は、B(2回目の)B(月曜日)

この形式は使える!
HOLIDAY.DAT に早速入れてみました。

01/15 1948-1999 成人の日
01/BB 2000-2099 成人の日

これで同じように解釈させれば出来るはず!
と思ったのですが、マクロが全然読めなくて、解釈する部分もわかりません。(;_;)
どうしよう・・・・


10947/10933 CXB00940  としき           Re^2: オセロ
( 1) 23/11/23 13:31 10945:konnoさんへのコメント コメント数:2
参照先:http://toshiki.la.coocan.jp/
> としきさんはオセロ強いですか? 私はヘタの横好きで。(^^;

中学生のころまでは、クラスで3番くらいの強さでした。
でも、大人になったら、平均よりちょっと強いくらい、でしょうか。

> > ちなみに、私の作ろうとしていたのは、俗に優先順位法というアルゴリズムです。
> 何となくそれに近い考え方で作ったような気がします。
> でも出来たのは、世界最弱のコンピュータオセロでした。(>_<)

これ、世間には優先順位のサンプルがいくらでもあったはずなので、そういうのを
そのまま実装すればそこまで弱くはならないはず。
例えば、乱数で手を打つプログラムを作ったら、強い時と弱い時がある、気分屋と
いうか不安定な強さになるだろうし。
本当に安定して弱いプログラムなら、むしろそのアルゴリズムを教えてほしい。
いや、マジで。

> 将棋でもオセロでも、強い人がアルゴリズムを考えることで本当に強いものが出来る

8ビット当時の最強は森田オセロだったはず。
私が対戦したのは、もしかしたらそれかもしれない。
もう覚えていませんが。

10948/10933 CXB00940  としき           Re: BASIC道への入り口
( 1) 23/11/23 14:07 10944:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> > あぁ、なんだってこんな、いにしえのBASICの文法解説をしているんだろう(笑)。
> BASIC地獄、いやさ、天国への道はまだまだこれからですよ。(^^;

うふふふふ〜。
では、もうちょっと文法解説。
PC-8001のN-BASICでは、変数名には2文字までしか使えませんでした。
3文字以上の変数名を使おうとした時にエラーになるのか、それとも最初の2文字
しか認識されず、3文字目が異なる変数名も同一の変数として認識されるのかは
覚えていません。
これが、同じ8ビットマシンでも、PC-8801のN88-BASICでは40文字まで使えました。
ただ、変数名を長くするとそれだけメモリを消費するというデメリットがあったため、
長い変数名は自粛される傾向がありました。
一方、PC-8001よりも古いシャープのMZ-80のBASICでの変数名の最大長はわかりません
が、当時のパソコンサンデーのテキスト(まだ持っている)を見ると、5文字程度の
変数名を使ったプログラムリストが掲載されているので、その程度の長さまでは対応
していたようです。
東芝の場合、PASOPIA7はPC-8801以降の発表だったはずなので、PASOPIA初代向けは
ともかく、16ビット対応などの後期のT-BASICなら長い変数名にも対応していると
思います。
つまり、何が言いたいかというと、もしプログラムをリライトする機会があれば、
意味の分かる長い変数名を使いましょうよ、ということ。
どっかのエディタのマクロじゃないんだから。


10949/10933 BQO00549  konno            曜日を算出する ツェラーの式
( 1) 23/11/23 14:38 10946:konnoさんへのコメント
新祝日法対応のためには指定した曜日を計算して特定する必要があります。
私の頭では全く思いつきません。(;_;)
困ったときのめざら資源、探したらありました! \(^^)/ アッタ-
めざら資源>VZマクロ工房>文字列出力関連>七曜でふ−簡易版日付印字器

sitiyo.def
3:	;指定日の曜日を算出(ツェラーの式)
	(m<3)?{ y--, m+=12, }
	w=((y+ y/4+ y/400+ (m*13+8)/5+ 1- y/100) +d -1) %7,

なるほど、指定日の曜日を算出する、ツェラーの式というのがあるのですね。
マクロをBASICに置き換えてみました。式はほぼそのままですね。

'a1=1〜4(週)	
'a2=1〜7(曜日)
ww=0
for d=1 to 31
if m<3 then y=y-1:m=m+12
w=((y+ y/4+ y/400+ (m*13+8)/5+ 1- y/100) +d -1) mod 7
if w=a2 then ww=ww+1
if ww=a1 then dd=d:goto 30612
next d
30612 return


実際に実装したルーチンも貼り付けます。

30611 '指定日の曜日を算出(ツェラーの式)
AA1=ASC(MID$(A$,4,1))-64					'1〜4(週)	
AA2=ASC(MID$(A$,5,1))-64					'1〜7(曜日)
WW9=0
M9=YASM(YMAX)							'該当祝日の月
Y9=YEAR								'該当祝日の年
for D9=1 to 31
  if M9<3 then Y9=Y9-1:M9=M9+12					'sitiyo.def
  W9=((Y9+ Y9/4+ Y9/400+ (M9*13+8)/5+ 1- Y9/100) +D9 -1) MOD 7	'ツェラーの式
  'W9=(Y9+ Y9/4+ Y9/400+ (M9*13+8)/5+ D9- Y9/100) MOD 7		'同等の式?
  if W9<>AA2 then 30613						'曜日が一致するまで日を進める
  WW9=WW9+1							'曜日が一致したら週を進める
  if WW9<AA1 then 30613						'週が一致するまで進める
  YASD(YMAX)=D9:goto 30614					'日が確定したらデータに入れる
30613 next D9
30614 'print co9;a$;" ";Y9;M9;AA1;AA2;W9;D9			'debug
return


コメントを書くとフローのミスにも気が付きやすいですね。(^^;
一応動くようになったのですが、何故か年を変えても今年の年で計算してしまいます。(>_<)
どうしよう・・・

続く・・・のか


10950/10933 DGF01024  めざら           Re^3: オセロ
( 1) 23/11/23 17:10 10947:としきさんへのコメント コメント数:2
参照先:http://mezala.la.coocan.jp/
森田オセロ! 懐かしいですね。
いや,懐かしいと感じるのは「森田」なのかな……森田将棋の。

ゲームの話題になると夏の虫のように吸い寄せられてしまいますね。

わたしがずっと移植したいと思っているのが XLIS のモノクロ版です。
XLIS とは Zumi氏作成の落ち物で,モノクロ版は色の代わりに形状(●▲■★◆◎)
(カラー版 → http://ozuma.o.oo7.jp/old_game/game/xlis/
作れるとは思うのですが,なかなかまとまった時間と気分が重なりません。

ほかに,ゲームではないですが,迷路を作成するマクロ。
BASICで示されたサンプルもあると思いますが,グラフィックスと罫線の違いもあり
なかなか手を着けられないでいます。

もしかして,老人ホームにブチ込まれた後の楽しみになるのでは?とも思うこのごろ。


10951/10933 BQO00549  konno            Re^3: オセロ
( 1) 23/11/23 19:43 10947:としきさんへのコメント
> > としきさんはオセロ強いですか? 私はヘタの横好きで。(^^;
> 
> 中学生のころまでは、クラスで3番くらいの強さでした。
> でも、大人になったら、平均よりちょっと強いくらい、でしょうか。

それなら確実に私より強いでしょうね。(^^;

> これ、世間には優先順位のサンプルがいくらでもあったはずなので、そういうのを
> そのまま実装すればそこまで弱くはならないはず。

うーん、その当時はオセロゲームの参考書とか見ていなかったもので。(^^;

> 8ビット当時の最強は森田オセロだったはず。
> 私が対戦したのは、もしかしたらそれかもしれない。

有名だったですね、私などパーフェクト負けを食らうほどででしょう。
ところで、VZマクロでもオセロゲームがあったかと見てみました。

VZOTO.DEF v.1.20 ====> 91.9.9 糧 丞 
これは98用とJ31用があり、J31で動かしてみましたが、途中で動かなくなってしまいました。
NP2の98エミュで98版も試しましたが罫線が表示しない? 結局出来ませんでした。
VZ1.57用だからでしょうか、何が悪いのかわかりません。

OTHELLO.def v2.0 ======== by 愛して癒して
これはVz Editor ver 1.6x用ですが、罫線などおかしくて動きませんでした。
過去ログを見ると、としきさんが質問されていて、YASATさんが答えてくれていました。

> 07941/08074 xxxxxxxx  YASAT            RE:OTHELLO ができない
> (14)   03/04/23 21:31  07938へのコメント

> 7行目
>         je[-,mi[=2,ep[+,wt[,jd[-,co[4,#]

> 93行目
>         (wx-1) {' '} (wy) {#m}

>  このゲーム、先攻で中途完勝パターンがあります。

>  なんでこの修正したんだったかなあって思っていたら、過去ログでした。
>  nifty:FGALDC/MES/14/1284


おお、この修正で動きました。\(^^)/ ヤッタ-
1ゲームやって、39対25でなんとか勝ちました。(^^;
私の作ったやつより確実に強いですね。(^^;

とりあえずこのアルゴリズムで組んでみたら良さそうですね。
その先は参考書を頼るしかないのかな。


10952/10933 BQO00549  konno            Re^2: BASIC道への入り口
( 1) 23/11/23 19:54 10948:としきさんへのコメント コメント数:1
> つまり、何が言いたいかというと、もしプログラムをリライトする機会があれば、
> 意味の分かる長い変数名を使いましょうよ、ということ。
> どっかのエディタのマクロじゃないんだから。

(^^; (^^; 耳がいた、いや、汗が。(^^;
私って3文字以上の英語のスペルは中々覚えられないのですよ。(^^;
その点 VZのマクロは記号みたいですが、だいたい2文字なので安心感が。(^^;


10953/10933 CXB00940  としき           Re^3: BASIC道への入り口
( 1) 23/11/24 20:35 10952:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 私って3文字以上の英語のスペルは中々覚えられないのですよ。(^^;

英語はやめて、6文字程度のローマ字にしましょう。



いきなり余談ですが。
昔の経済学って、ケインズだろうがマルクスだろうが、人間は合理的に行動する、
という前提で論理展開されていました。
でも、決してそんなことはないというか、不合理なことは結構多い。
そこで提唱されたのが行動経済学という学問。
ようは、いろいろな判断だとかお金の使い方を心理学の面から分析するものです。

そして、実はプログラム工学だとかソフトウェア工学というものにも、かなり昔から
心理学的な分析は取り入れられていて。そもそも、それらの学問は、どうすれば品質
のよい、すなわち間違えにくいプログラムを書けるか、という学問なのですが、これ
は裏を返すと、人間はどういうときに間違えるか、という、まさに心理学的な分析
から始まっているわけです。
そして、研究の結果、たとえば、長くて意味のわかりやすい変数名を使いましょう、
なんて話になってきたわけです。
ただし、これはあくまでも、一般的なプログラム作成の話。
たとえば、複数人で作る場合、とか。
一人で作る場合でも、そんなに時間をかけず、一気呵成に作り上げる場合とか。
ワンライナーあたりが該当するかな。
つまり、よく言われる「明日の自分は赤の他人」に至らないような状況の場合。
仮に、既存のプログラムを改造するぐらいなら、常に一から新しいプログラムを作る
というのであれば、過去のプログラムを見返すこともないでしょう。
ただし、繰り返しになりますが、これはあくまでも、一般的なプログラム作成の話。
このため、現在では、仮に
「俺は変数名に3文字までしか使わない」
と主張するプログラマがいたとすると、その人は暗に
「俺は一般的ではない、短い変数名でも良いプログラムを書ける天才なんだ」
と豪語しているに他ならない、というのが世間の捉えかた。
もれなく生暖かい目がついてくることでしょう。
とはいえ、中学2年生ぐらい頭が柔軟な人ならそれも可能なのかもしれません。
私はもう無理だなぁ、そんな主張はできない。頭は固いし恥ずかしいし。
この年になってから黒歴史は量産したくないし。


10954/10933 CXB00940  としき           Re^4: オセロ
( 1) 23/11/24 20:35 10950:めざらさんへのコメント
参照先:http://toshiki.la.coocan.jp/
XLISって知らなかったのですが、コラムスのようなゲームですね。
落ち物でいうと、PC-98のDOSでは「ぽろりす」をずいぶんやりました。
http://ozuma.o.oo7.jp/old_game/game/porolith/
こいつには、作者謹製のANSI版があって、モノクロ環境でも実行できたはず。
そういえば、ポケ3では試したことはない。
けど、画面サイズを考えると、絶対に目が死にそう。
試すもんか。


10955/10933 BQO00549  konno            アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/11/24 22:13 10933:konnoさんへのコメント コメント数:1
アナログ時計とカレンダのアクセサリ 11月24日版です。
画像はココログの記事で見てください。
http://tamaneko2.cocolog-nifty.com/vz2/2023/11/post-bf98e3.html

今回の更新内容は

・新祝日法に対応したつもり。
・見栄えも多少直しました。
・カレンダー大の日付の文字を2バイト数字にして見やすく。
・キーによるカレンダーの年月変更機能追加。
・MSDOS Player でもカレンダー表示出来ます(chej jpの時)
・今回からソースも付けます。


新祝日法への対応はEMMETさんとめざらさんのマクロを参考にしました。
先人の知恵に感謝です。m(__)m

カレンダー大の日付の2バイト数字は、TBASICのころは出来ていたのです。
PRINT CDBL$(RIGHT$(STR$(I),2)) 
のように半角文字を2バイト文字に変換するコマンドが使えたのです。
ターボBASICは英語版なのでそんなものは無く、移植時に半角数字にしたのでした。
今回一念発起して対応しましたので、興味ある方はソースを見てください。

キーによるカレンダーの年月変更機能追加は、カレンダマクロで出来ているので
このくらいは出来ないと張り合えないなぁ、と思ったのです。(張り合ってどうする)(^^;

F11: 前月 	前月のカレンダーを表示
F12: 次月 	次月のカレンダーを表示
[Ctrl]+[←]	前年のカレンダーを表示
[Ctrl]+[→]	次年のカレンダーを表示

本当は [Ctrl]+[F11〜F12] で前年と次年のカレンダーを表示したかったのですが、
DOSVAXJ3 ではこのキーが(BIOSレベルで)反応しないのでしかたなくこうしました。

なお、変更前のソースを大量にコメントしているので非常に見づらいです。
TAGLIGHT.EXE をお使いの方は TAGLIGHT.PAT に

#BASIC用
:BA,
A	'	\C\$

これを追加すれば非常に見やすくなります。
TAGLIGHT.PAT についてはバッファ制限があるので近々記事を書くつもりです。


自作、改作アプリの放置部屋  に置いてあります。


10956/10933 BQO00549  konno            Re^4: BASIC道への入り口
( 1) 23/11/25 15:36 10953:としきさんへのコメント
> 英語はやめて、6文字程度のローマ字にしましょう。

ローマ字ならいくらでも長い名前を書けますよ。(^^;
jugemujugemugogounosurikire

お。意外と良いかもしれませんね、でもなんだか恥ずかしいような。(^^;

> そして、研究の結果、たとえば、長くて意味のわかりやすい変数名を使いましょう、
> なんて話になってきたわけです。

その長い名前が覚えられないからこうなってしまったのです。(;_;)
英語は嫌いじゃぁ〜!

> この年になってから黒歴史は量産したくないし。

そんな風に思っていた時期もありました・・・
私の半生は黒(画面)歴史なので。
どうせみんな死ぬんだし、だったら恥ずかしい黒(画面)歴史を晒しちゃえ
ということで今回の企画を出したわけです。(完全後付け)


10957/10933 BQO00549  konno            Re^4: オセロ
( 1) 23/11/25 15:57 10950:めざらさんへのコメント
> わたしがずっと移植したいと思っているのが XLIS のモノクロ版です。
> XLIS とは Zumi氏作成の落ち物で,モノクロ版は色の代わりに形状(●▲■★◆◎)

XLIS は知りませんでしたが、モノクロ版の記号はどこかで見たような気が・・・
ん? これって、Emmettさんのさめがめに似ているような。(^^;
さめがめは何度か遊んでみましたが面白いですね。(^_^)

> (カラー版 → http://ozuma.o.oo7.jp/old_game/game/xlis/

覗いてみたら、98版のゲームなんですね。NP2 で動くかしら。

> もしかして,老人ホームにブチ込まれた後の楽しみになるのでは?とも思うこのごろ。

う、うーん、(^^;

# 俺たちに明日は無い、だから今日のテーマに生きるのだ! なんちて


10958/10958 BQO00549  konno            TAGL + TAGL_F5 マクロ
( 1) 23/11/29 00:00 コメント数:1
 taglight.exe を使用して複数の指定文字列に手軽に色付けできるマクロです。
 環境変数VZDEFと実行ファイルの両フォルダにtaglight.exeとtaglight.patが必要です。
 taglight.patは、tagl.def用に拡張子の後ろにカンマの追加が必要で、専用PATを同梱しています。

 例
 #C,C++コード用
 :C,CP,H,


TAGL_F5.DEF

 [F05] 検索文字列の取得 は私家版[F05]のtaglight.exe対応版です。
 標準の[F05]との違いは,スペース,→で検索文字列範囲拡大出来ます。
 taglight.exe を使用して複数の指定文字列に手軽に色付けできるマクロです。
 環境変数VZDEFと実行ファイルの両フォルダにtaglight.exeとtaglight.patが必要です。
 taglight.patは、tagl.def用に拡張子の後ろにカンマの追加が必要です。
 [F06]はtagl.def で連携します。
 使用変数 a,c,e,k,


TAGL.DEF

・ [F06]で起動すると、taglight.patからTAGL.PATを作成して使用します。
・ ^KT で起動すると、検索窓で検索文字列を繰り返し入力できます。(最大4回まで)
   空Enterで指定終了し、tagl.patとしてセーブし、編集画面に反映させます。
   上記の動作原理により、マクロ実行時は常にtagl.patの設定で動作します。
・ ^\KT でシフト起動すると、taglight.patの設定に切替になります。
・ 使用変数 a,b,c,e,k,

VZマクロの部屋にあります。


10959/10958 BQO00549  konno            TAGLIGHT.EXE の制限
( 1) 23/11/29 00:03 10958:konnoさんへのコメント
TAGLIGHT.EXE 便利に使っていたんですが、最近うまく動かないことがあるようです。
調べてみたら、TAGLIGHT.PAT の容量オーバー、ワードの入れすぎだったようです。(>_<)

パターンが多すぎます
必要なバイト 1469 : 上限バイト 1280

コマンドラインにこのようなメッセージが出ていました。
今まで >NUL でメッセージを消していて気が付かなかったのでした。(>_<)
機能ごとのメモリ消費はこんな感じです。

   機能              メモリ量
--------------------------------------+------
D       TAGLIGHT                        30
B       name="  "                       25
E       (       )                       24
A       \0\0\0\0\0/\0\0\0\0\0   \C\$    23
B       ;       \C\$                    20
A       \^・                            20
A       ●                              20
:DA,                                    5
DA,                                     4

以前世界時計用に追加したパターンが圧迫してしまったようですね。
私のPATは、アセンブラ用やC,C++コード用も追加しているので、少し整理しました。
C,C++コード用をパスカルコード用と合体させるなどして重複分を減らしました。


ついでに、TAGL.DEF や TAGL_F5.DEF に複数文字列色付け機能を改善実装しました。
 [F05]:検索文字列の取得  TAGL_F5.DEF
 [F06]:検索文字列の設定  TAGL.DEF
この2つのマクロに新しい形式の複数文字列色付け機能を実装しました。

そのためにPATファイルも改造しました。(^^;
新しい形式の PATファイルの構造は


1. #デフォルトのコードの下に以下の行を追加

#4#tagl_cfg	#1〜4 検索文字列数 この行は数字以外変更禁止 -----

ここの行頭の "#" の次の数字の数だけ検索文字列を色付けします。
#デフォルト と、該当する拡張子の所に色付けコードが埋め込まれます。
設定数を超えたコードは自動削除されます。
デフォルトを 3 としています。(4 では長い文字列でバッファオーバーする時がある)


2. woldtime 用のコードは通常使用で削除

通常使用では、TAGLIGHT.PATをコピーした TAGL.PAT を使います。
woldtime 用のコードは通常使用では使わないので、削除することにしました。
 
#tagl_end ----  ##k v8 ※これより下は TAGL.PAT にコピーしない(バッファ節約)
#woldtime 用

woldtime 用コードの直前に上の1行を追加しました。この行は変更削除禁止です。
TAGLIGHT.PAT は各自で自由に変更出来ますが、私のマクロを使う場合は、上記のルールを守ってください。


10960/10960 BQO00549  konno            DOSVAXJ3 備忘録  CHEV コマンド
( 1) 23/12/01 00:26 コメント数:2
DOS6 付属の QBASIC.COM は、日本語モードでは動かないので、DOSVAXJ3 英語モードでやってみました。

chev us
Change to the US environment.
Current video mode is 03h

QBASIC.COM
日本語モードでは実行できません.


実際の表示は英語モードなので、文字化けした読めないメッセージになっています。
日本語モードにするとこの表示になっていました。
あれれ? もしかして chev us コマンドでは完全な英語モードになっていない?


chev us を実行すると以下の表示になります。chev コマンド自体は表示されません。

Change to the US environment.
Current video mode is 03h

ここで、chej でモード状態の表示をしてみると

D:\NC>CHEJ.EXE <MultiMode CHEV> ver 6.10 by Natrium.
現在 DOS/V(Normal)、日本語環境です。
現在のビデオモードは 03h です。

こう表示されました。
どうやら chev コマンドでは完全な USモードになっていないようです。

chej us を実行すると

D:\NC>CHEJ.EXE <MultiMode CHEV> ver 6.10 by Natrium.

Change to the US environment.
Current video mode is 03h.

ここで、chej でモード状態の表示をしてみると

CHEJ.EXE <MultiMode CHEV> ver 6.10 by Natrium.

This is the US environment.
Current video mode is 03h.

この状態で QBASIC.COM 実行すると、無事に動きました。
QBASIC.COM は、完全な USモードでないと動かないようです。
実行してもカーソルだけが表示されるので、謎のモードで動いているようです。

そういえば、最新の DOSVAXJ3 の更新では
> 拡張 CGA テキストモード 73h, 71h に対応しました。
とあって、試してみた過去記事が

#10927: Re: DOSVAXJ3 230919 更新 投稿者: konno   2023/09/20(水)

> モード切替を試してみると、CHEV 71 とかではモード70 になってしまって切り替え出来ない?
>
> CHEJ 71
>
> これでモード71 に切り替わりました。
> 見た目は 70 と変らないですね。(^^;

これも同じ原因かもしれないdすね。
関係あるかどうかわかりませんが、過去ログで

#6100: Re^2: DOSBOXでVZはFEP制御不可なのか 投稿者: konno   2012/12/02(日)

> > > VZ側ではまったく制御できていないようですね。
> DOSBOXは本当に日本語環境になっているのか、ふと思いついて、調べてみました。
>
> CHEJ /C で、
>
> Current CodePage is 437.
>
> と出ました。そうです。コードページは英語のままだったのです。
> これですべてのつじつまが合います。VZはDBCSのモードをチェックしているので
> 英語モードと判断してFEP制御していなかったわけですね。
> おそらくキーボードも英語のままなので制限が多いのでしょう。

2012年の古い DOSBOX ですが、モード切替に不備があるようです。
DOSVAXJ3 ではコードページはキチンと切り替え出来ているようですが、何かが足りないのでしょうか。


10961/10933 CXB00940  としき           Re: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/01 11:12 10955:konnoさんへのコメント コメント数:2
参照先:http://toshiki.la.coocan.jp/
実家に置きっぱなしだったVistaマシンと、自宅で時々使っているXPマシンが相次いで
壊れまして。それぞれ、それなりに使うということで修復している最中。とはいえ、
Vistaマシンのほうはまだほとんど手付かずですが。

さて、何とか動き出してきたXPマシンのほうで、気になったのでこの時計を動かして
みました。このマシン、一応VTDOSの古いバージョンも入っていたような気もします
が覚えていません。DOSVAXは入れていなかったはず。
とりあえず、command.comで動かしたら、DOS窓状態で起動したにもかかわらず自動
で全画面に遷移して、きちんとアナログ時計が動きました。
ALT+RETで窓状態にすると、グラフィック関係は全滅ですね。時計の針もそうだし、
カレンダーの罫線だとか時計の枠だとか。
「VGAで動く」とうたっているソフトが動かないので、窓状態はやっぱりちょっと
本当のVGAとは違うみたい。

気になったことがいくつか。
まず、公開時の圧縮ファイルの形式。
最近のアンチウィルスソフトはLZH形式を正しくチェックできないということで、
最近では一般向けに公開されるファイルにはあまり使われなくなっています。
ベクターがLZHでの新規の受付を停止したのは何年前だったかなぁ。
さすがに公開済みのものを再パッキングするほどのことはないと思いますが、
次回からはZIP形式の使用がお勧め。
もちろん、赤の他人にはなるべく使ってほしくない、という希望があるならLZHの
ほうがいいかもしれません。

次、ソースリストについて。
ざっくり読んで、こんなものを処理できる処理系があるんだ、と驚きました。
これ、何でコンパイルしたんでしょうか。QBASIC?
いや、昔ながらの行番号つきの大文字の部分と、行番号なしの小文字の部分が混在
しているものを処理できるなんて、本当、びっくりしました。
慣れれば、あとからパッチを当てた部分がわかりやすいのかもしれません。
でも、慣れていないもので、ちょっと違和感が大きい。
行番号なしの部分でもマルチステートメントがある。できるんだ。
冒頭の「$INCLUDE」というおまじないは知らない。
これは処理系固有のおまじないなんだろうなぁ。
一応、環境変数の取得関数はあるようなので、この辺を工夫すればデータファイルの
置き場所も指定できそうですね。
あと、ON ERROR GOTOが頻出しますが、飛び先をきちんと変えている。
すなわち、有効利用している。こんなコードはじめてみた。すごい!
私、エラー処理なんてひとつしかないようなコードしか書いたことがないもので。

最後。
前にも書いたことですが。
このツリーも、返信フォームの上の部分だけ、ツリー表示が乱れている。
何とかしてほしいというか、何とかできないのならコードをさらしてほしい。


10962/10933 CXB00940  としき           Re^2: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/01 11:25 10961:としきさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> このツリーも、返信フォームの上の部分だけ、ツリー表示が乱れている。
> 何とかしてほしいというか、何とかできないのならコードをさらしてほしい。

と、書いたところですが。
#10961を書き込んで、今、読み直してみると、ツリーの乱れ方が変化している。
#10961を書き込む前。(タイトル部はとしきによって省略しています)

- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
▼ 10933.VGAで動くアナログ時計とカレンダのアクセサリ
  ┣10934.Re: VGAで動くアナログ時計とカレンダのアク
  ┗10935.Re^2: VGAで動くアナログ時計とカレンダのア
  ┃ ┗10936.Re^3: VGAで動くアナログ時計とカレンダ
  ┃  ┣10938.Re^4: VGAで動くアナログ時計とカレン
  ┃  ┗10939.Re^5: VGAで動くアナログ時計とカレン
  ┃  ┃ ┗10940.Re^6: VGAで動くアナログ時計とカ
  ┃  ┃  ┣10941.Re^7: VGAで動くアナログ時計と
  ┃  ┃  ┣10942.Re^7: VGAで動くアナログ時計と
  ┃  ┃  ┃┣10944.BASIC道への入り口 - konno 2
  ┃  ┃  ┃┣10948.Re: BASIC道への入り口 - とし
  ┃  ┃  ┃ ┗10952.Re^2: BASIC道への入り口 -
  ┃  ┃    ┗10953.Re^3: BASIC道への入り口 -
  ┃  ┃     ┗10956.Re^4: BASIC道への入り口
  ┃  ┗10943.オセロ - としき 23/11/22-01:14
  ┃   ┗10945.Re: オセロ - konno 23/11/23-00:13
  ┃    ┗10947.Re^2: オセロ - としき 23/11/23-
  ┃     ┣10950.Re^3: オセロ - めざら 23/11/2
  ┃     ┣10954.Re^4: オセロ - としき 23/11/2
  ┃     ┃┗10957.Re^4: オセロ - konno 23/11/
  ┃     ┣10951.Re^3: オセロ - konno 23/11/23
  ┣10937.VGAで動くアナログ時計とカレンダのアクセサ
  ┗10946.新祝日対応のデータ形式 - konno 23/11/23-0
   ┗10949.曜日を算出する ツェラーの式 - konno 23/
  ┣10955.アナログ時計とカレンダのアクセサリ 11月24

ところが、#10961を書き込んだあと。

- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
▼ 10933.VGAで動くアナログ時計とカレンダのアクセサリ
  ┣10934.Re: VGAで動くアナログ時計とカレンダのアク
  ┃┗10935.Re^2: VGAで動くアナログ時計とカレンダの
  ┃ ┗10936.Re^3: VGAで動くアナログ時計とカレンダ
  ┃  ┣10938.Re^4: VGAで動くアナログ時計とカレン
  ┃  ┃┗10939.Re^5: VGAで動くアナログ時計とカレ
  ┃  ┃ ┗10940.Re^6: VGAで動くアナログ時計とカ
  ┃  ┃  ┣10941.Re^7: VGAで動くアナログ時計と
  ┃  ┃  ┣10942.Re^7: VGAで動くアナログ時計と
  ┃  ┃  ┣10944.BASIC道への入り口 - konno 23/
  ┃  ┃  ┗10948.Re: BASIC道への入り口 - としき
  ┃  ┃   ┗10952.Re^2: BASIC道への入り口 - k
  ┃  ┃    ┗10953.Re^3: BASIC道への入り口 -
  ┃  ┃     ┗10956.Re^4: BASIC道への入り口
  ┃  ┗10943.オセロ - としき 23/11/22-01:14
  ┃   ┗10945.Re: オセロ - konno 23/11/23-00:13
  ┃    ┗10947.Re^2: オセロ - としき 23/11/23-
  ┃     ┣10950.Re^3: オセロ - めざら 23/11/2
  ┃     ┃┣10954.Re^4: オセロ - としき 23/11
  ┃     ┃┗10957.Re^4: オセロ - konno 23/11/
  ┃     ┗10951.Re^3: オセロ - konno 23/11/23
  ┣10937.VGAで動くアナログ時計とカレンダのアクセサ
  ┣10946.新祝日対応のデータ形式 - konno 23/11/23-0
   ┗10949.曜日を算出する ツェラーの式 - konno 23/
  ┗10955.アナログ時計とカレンダのアクセサリ 11月24
   ┗10961.Re: アナログ時計とカレンダのアクセサリ

#10961を書き込むことによって、#10941あたりからの乱れ方が大幅に改善している。
ツリー最後の#10955前後はまだ乱れているけど、乱れ方が変化している。
この辺、コードを追いかける際の手がかりになるかも。


10963/10933 BQO00549  konno            Re^2: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/01 23:24 10961:としきさんへのコメント コメント数:1
> とりあえず、command.comで動かしたら、DOS窓状態で起動したにもかかわらず自動
> で全画面に遷移して、きちんとアナログ時計が動きました。

XPのDOS窓全画面で動きましたか。
元々Win95ノートPCの小さい画面で使うため、全画面にして使っていたのです。

> ALT+RETで窓状態にすると、グラフィック関係は全滅ですね。時計の針もそうだし、
> カレンダーの罫線だとか時計の枠だとか。
> 「VGAで動く」とうたっているソフトが動かないので、窓状態はやっぱりちょっと
> 本当のVGAとは違うみたい。

ターボBASICは古いので、VGA対応してるかどうか。VGAでも何とか動くという感じです。
グラフィックモードは、chej 12 相当です。
DOS窓で chej 12 と打つと、全画面になると思います。

Win98MEのリブレットで確認してみました。
DOS窓で起動すると一瞬全画面になりますが、すぐにDOS窓に戻ります。
小さなデジタル時計が表示されているだけの状態ですね。
ここで、ALT+RET すると全画面になりグラフィックモードで動作しますね。

最新の版はデジタル時計を全角表示して、全画面では毎秒カウントします。
ところがDOS窓では、2秒ごとに表示しますね。
DOS窓では疑似マルチタスクが優先するため描画処理が追い付かないのかも。

> 最近のアンチウィルスソフトはLZH形式を正しくチェックできないということで、
> 最近では一般向けに公開されるファイルにはあまり使われなくなっています。
> 次回からはZIP形式の使用がお勧め。

なるほど、検討してみます。

> もちろん、赤の他人にはなるべく使ってほしくない、という希望があるならLZHの
> ほうがいいかもしれません。

今時DOSを使うもの好きは、LZHに馴染んでいると思ったのですが、やっぱりZIPがいいのかなぁ。(^^;

> ざっくり読んで、こんなものを処理できる処理系があるんだ、と驚きました。
> これ、何でコンパイルしたんでしょうか。QBASIC?

ボーランドのターボBASIC です。すぐに消えたので、幻のコンパイラかも。(^^;

> いや、昔ながらの行番号つきの大文字の部分と、行番号なしの小文字の部分が混在
> しているものを処理できるなんて、本当、びっくりしました。

やってみたらできたので、そういうものかと思っていました。
大文字と小文字を区別する処理系もあるようですね。移植するときには直さなくては。(^^;

> 冒頭の「$INCLUDE」というおまじないは知らない。
> これは処理系固有のおまじないなんだろうなぁ。

これは、ターボBASICのコンパイラ版固有みたいです。

50 $DYNAMIC

これが、東芝BASICのコンパイラ版固有みたいですが、元がMS系なので、MSも同じかも。

> 一応、環境変数の取得関数はあるようなので、この辺を工夫すればデータファイルの
> 置き場所も指定できそうですね。

環境変数を設定すればできそうですが、ちょっと面倒ですよね。
実行ファイルと同じフォルダから自動的に設定ファイルを読めればいいなと思うんですが。
とりあえずは環境変数を設定するようにしてみますか。

> あと、ON ERROR GOTOが頻出しますが、飛び先をきちんと変えている。
> すなわち、有効利用している。こんなコードはじめてみた。すごい!
> 私、エラー処理なんてひとつしかないようなコードしか書いたことがないもので。

これ、3か所に分かれているのは、3つのプログラムを合体させたからです。(^^;
統合化していない超手抜きの悪い例ですね。(^^;

> このツリーも、返信フォームの上の部分だけ、ツリー表示が乱れている。
> 何とかしてほしいというか、何とかできないのならコードをさらしてほしい。

検討します。m(__)m


10964/10933 BQO00549  konno            Re^3: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/02 00:04 10962:としきさんへのコメント
> #10961を書き込むことによって、#10941あたりからの乱れ方が大幅に改善している。
> ツリー最後の#10955前後はまだ乱れているけど、乱れ方が変化している。
> この辺、コードを追いかける際の手がかりになるかも。

なるほど、見てみますね。
でも今まで何度も見ているのにわからなかったので、やっぱりとしきさんにも見てもらおうかなぁ。

# 記事閲覧t #

のルーチンだけ切り出してメールで送ります。

宜しくお願いします。


10965/10933 CXB00940  としき           Re^3: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/03 01:21 10963:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
メールは受け取りました。
が、受け取っただけで、まだ中身はぜんぜん見ていません。

> 今時DOSを使うもの好きは、LZHに馴染んでいると思ったのですが、

その点はまったく同感なのですが

> やっぱりZIPがいいのかなぁ。(^^;

自動でウィルスチェックをしてくれない、という部分をどう捉えるか。
konnoさんを信用できる・信用している人ならLZHでもダウンしてくれると思います。
が、konnoさんをよく知らない赤の他人ならどうするか、という点が疑問。

> ボーランドのターボBASIC です。すぐに消えたので、幻のコンパイラかも。(^^;

ありましたね。
この処理系は、私も触ったことがありません。

> 50 $DYNAMIC
> これが、東芝BASICのコンパイラ版固有みたい

REMがついていたので素通りしていました。
これって、REMがなければ、どういうことをするコマンドなんですか?

> 実行ファイルと同じフォルダから自動的に設定ファイルを読めればいいなと思う

なんかありそうですけどね。
CとかPascalなんかでは、コマンドラインのゼロ番目が実行ファイルのフルパス名、
みたいなことになっていたような気がするので、コマンドラインの取り出し方法を
調べてみるのがいいかも。


10966/10933 BQO00549  konno            Re^4: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/03 21:10 10965:としきさんへのコメント コメント数:1
> メールは受け取りました。
> が、受け取っただけで、まだ中身はぜんぜん見ていません。

私も見れていないのでお手すきの時にでもお願いします。m(__)m

> 自動でウィルスチェックをしてくれない、という部分をどう捉えるか。
> konnoさんを信用できる・信用している人ならLZHでもダウンしてくれると思います。
> が、konnoさんをよく知らない赤の他人ならどうするか、という点が疑問。

そうですね、次からはなるべく ZIP にするようにします。

> > 50 $DYNAMIC
> REMがついていたので素通りしていました。
> これって、REMがなければ、どういうことをするコマンドなんですか?

マニュアルが腐海の底に沈んでしまっているので、NETで検索してみました。
FreeBASIC MetaDynamic
https://makoto-watanabe.main.jp/freebasic/PgMetaDynamic.html#start
このページの解説が近いような気がします。

> 配列を割り当てる方法を変える、メタコマンド
>
> 構文:
> '$Dynamic
> または
> rem $Dynamic
>
> 記述:
> '$Dynamic は、以降に宣言する全ての配列が可変長である、と指定する、メタコマンドです。配列が、添字数が定数指定で宣言されていても、そうでなくてもです。
> この指定は、モジュールで、'$Dynamic を使ったそれ以降の部分に対して有効です。$Static を使って、'$Dynamic 指定を無効にすることができます。

うーむ、REM は必要だったみたいですね。(^^;
多分、エディタで編集領域を拡大するために使ったのだと思いますが、今では覚えていません。(>_<)
なんせ、インタプリタ時代は、3万文字程度が限界で、ガベージコレクションで止まっていたので。(>_<)
コンパイラになっても4万文字程度だったかもですが。(^^;

> CとかPascalなんかでは、コマンドラインのゼロ番目が実行ファイルのフルパス名、
> みたいなことになっていたような気がするので、コマンドラインの取り出し方法を
> 調べてみるのがいいかも。

なるほど、PEEK関数でメモリは読めるかもしれないので、チャレンジしてみます。


10967/10933 CXB00940  としき           Re^5: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/04 12:20 10966:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> FreeBASIC MetaDynamic
> https://makoto-watanabe.main.jp/freebasic/PgMetaDynamic.html#start
> このページの解説が近いような気がします。

なるほど、理解できました。
N-BASICとかN88-BASICでは、DIMで配列宣言をしないで配列を使うと、デフォルトで
配列の添え字は10まで使えたはず。OPTION BASEで添え字の0が使えるかどうかを決定
するという、あまり使われていない機能もありますが。
だけど、これを宣言しておけば、デフォルトで11以降の添え字が使えるということの
ようですね。
ただ、N88-BASICの場合、DIMで配列宣言をしない配列を使うと、例えば要素数が3個
しか必要ない配列でも10個分の要素のメモリが確保されてしまい、メモリが無駄に
なるから必ず配列宣言をしましょう、みたいな事が言われていました。当然、大きな
配列が必要なときは配列宣言は必須でしたし、結論としては、いついかなる場合も
配列宣言をしましょう、みたいな話になっていたように記憶しています。
そういう環境に慣れていたので、AWKやPerlのような、動的に配列がみょ〜んと確保
されるような処理系に始めて触れたときには違和感が強かったものです。もし私が
N88-BASICからいきなりこの$DYNAMIC構文のあるBASICに触れたら、そんな比ではない
ほどの違和感を感じまくったことでしょう。

ところで、この構文が使われているということからの推測すると、元々のコードは
QuickBASICで書かれていたということでしょうか。
そして、REMは必須であったと。

> なるほど、PEEK関数でメモリは読めるかもしれないので、チャレンジしてみます。

FreeBASICのサイトを検索したところ、この処理系だと、COMMAND(0)という関数で
実行ファイル名が取得できるようです。ただ、フルパスが取得できるかは、私には
よくわかりませんでした。
また、このページのQuickBASICとの違いの注記で、QBは引数をとらないとある。
ということは、TIME$で時刻の全体が取得できるように、COMMANDでコマンドライン
の引数全体が取得できるようになっているらしい。
ターボBASICがどうなっているかわかりませんが、QB同様であった場合、例えば空白
の入ったフォルダから起動したようなときに、実行ファイルのパスの取得は難しく
なるかもしれない。


10968/10933 BQO00549  konno            Re^6: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/05 02:04 10967:としきさんへのコメント コメント数:1
書きかけの返信をうっかりセーブし忘れて消してしまいました。(>_<) うう、、


> N88-BASICからいきなりこの$DYNAMIC構文のあるBASICに触れたら、そんな比ではない
> ほどの違和感を感じまくったことでしょう。

私もN88-BASICからTBASICに移植したときは、違いに戸惑いましたね。
当時、「各種BASICの違い」みたいな記事があって、参考に成りました。どこ行ったかなぁ。

> ところで、この構文が使われているということからの推測すると、元々のコードは
> QuickBASICで書かれていたということでしょうか。

元々はTBASIC(7) です。それからTBASIC(16) → コンパイラ版 → TURBO BASIC ですね。
MS系のBASICだから構文がほぼ同じなのでしょう。

> そして、REMは必須であったと。

ですね。メタコマンドみたいなものでしょうか。

> FreeBASICのサイトを検索したところ、この処理系だと、COMMAND(0)という関数で
> 実行ファイル名が取得できるようです。ただ、フルパスが取得できるかは、私には
> よくわかりませんでした。

COMMAND という関数はTURBO BASIC には無いようです。
類似の関数もわからないのでちょっとできなそうですね。


10969/10933 CXB00940  としき           Re^7: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/05 14:03 10968:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 当時、「各種BASICの違い」みたいな記事があって、参考に成りました。

うちの、1985年ごろのベーマガに、その手の記事がありました。
ただ、多くの機種を対象としていた関係で、1機種あたりの分量はたいしたことは
ありませんね。だから

> 元々はTBASIC(7) です。

TBASIC(7)に、この構文があるということも載っていないし。

> COMMAND という関数はTURBO BASIC には無いようです。
> 類似の関数もわからないのでちょっとできなそうですね。

Turbo Pascalだと、予約語としてParamStr。
C言語だと、デフォルトでargvとargc。ただしこれは予約語ではなく、ただの慣例。
とはいえ、正当な理由なくこの慣例を破ると、各方面からけちょんけちょん。
最近のVisual BasicというかVB.NETではCmdArgsだけど、これが予約語か慣例かは
わからない。

このあたりのキーワードでドキュメントを検索するくらいかなぁ。
コンパイル可能な処理系でコマンドライン引数を取得できないって、ありえないと
思うのですが、これはちょっと私が固定観念にとらわれすぎているかも。


10970/10933 BQO00549  konno            Re^8: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/05 23:11 10969:としきさんへのコメント
> うちの、1985年ごろのベーマガに、その手の記事がありました。
> ただ、多くの機種を対象としていた関係で、1機種あたりの分量はたいしたことは
> ありませんね。

もしかしたら私もその本を読んだのかもしれませんね。

> だから
> > 元々はTBASIC(7) です。
> TBASIC(7)に、この構文があるということも載っていないし。

TBASIC(7)に、この構文はありません。時計アクセサリプログラムのルーツという意味で書いていました。
$DYNAMIC は、TBASICのコンパイラ版の構文だったと思います。Turbo BASIC ではどうだか確認できていません。

> コンパイル可能な処理系でコマンドライン引数を取得できないって、ありえないと
> 思うのですが、これはちょっと私が固定観念にとらわれすぎているかも。

コマンドライン引数を取得する関数はあります。
111 FILE$=COMMAND$

ただ、command(0) のようにコマンドラインのゼロ番目は取得できないようなので。
マニュアルが見つかるまでは色々試してみます。


10971/10933 BQO00549  konno            STIME.EXE 12月08日版
( 1) 23/12/08 02:31 10933:konnoさんへのコメント コメント数:1
STIME.EXE 12月08日版をアップしました。

DOSVAXJ3 の VGAで動くアナログ時計とカレンダのアクセサリです。
NCPATH= でデータファイルの置き場所を指定してください。末尾に "\" が無ければ追加します。

DOSVAXJ3 を起動したら、chev jp でVGAモードにして、STIME.EXE を起動してください。
MS-DOS Player では、chej jp でVGAモードにします。文字のデジタル時計とカレンダのみ表示します。
VTDOS では動作しません。

画像は
http://tamaneko2.cocolog-nifty.com/vz2/


更新履歴

231208	環境変数 NCPATH でデータファイルの置き場所を指定。指定無しならカレント
	春分、秋分の日を自動計算
	デジタル時計とカレンダ大の文字を2バイト文字に。
	[↑↓]キーで前年・次年  [←→]キーで前月・次月のカレンダーを表示

これでカレンダマクロに対抗できるでしょう(笑)

[←→]キーで前月・次月のカレンダーを連続で何年分もやるとエラーになります。
もしかしたらループのつじつまが合っていないのかも。
バグ入りなので、ご使用は自己責任でお願いします。

自作、改作アプリの放置部屋に置いてあります。


春分、秋分の日を自動計算する計算式は ネットから拾いました。

> Excelでこれらの日付を求めるには、以下のようにDATE関数とINT関数を数式に組み合わせます。
 春分の日

=INT(20.8431+0.242194*(年-1980))-INT((年-1980)/4) 

 秋分の日

=INT(23.2488+0.242194*(年-1980))-INT((年-1980)/4)


この式がそのまま使えました。ありがたいです。


追記

記事のタイトルと内容の日付を間違えていたのを訂正しました。
m(__)m

10972/10972 DGF01024  めざら           ある現象
( 1) 23/12/10 13:29 コメント数:2
参照先:http://mezala.la.coocan.jp/
■ VTDOS+CKWV 環境で Google IME を起動すると落ちる

気が付いたのは昨日。

・[変換]キーに割り当てた IME 起動キーを押したら即座に VZ が終了した。
・一旦,Windows(10) を再起動してみたが,状況は変わらない。
・[変換]だけでなく,ALT+[半/全|漢字] または [半/全|漢字] でも同様。
・以下のマクロで IME を起動しても,やはり即座に終了。
1 @B "feponoff" &j(0) &m("OFF") (mg.-9)??{ &j(10) &m("ON") }
・VZ を終了させたのちの DOSプロンプトでも同様に落ちる。

Google IME を Microsoft IME に変更すると,いずれも落ちなくなった。

DOSVAXJ3 (JP23707) では不具合は再現しなかった。

∴ VTDOS+CKWV 環境で Google IME を使用した場合の現象と考えられる。

皆さんの環境では,同様の現象は見られませんか?


10973/10972 BQO00549  konno            Re: ある現象
( 1) 23/12/10 21:29 10972:めざらさんへのコメント コメント数:1
> ■ VTDOS+CKWV 環境で Google IME を起動すると落ちる

私は Google IME を使っていないので、インストールしてみました。
設定はすべてデフォルトですが、変換はATOKモードにしました。(^^;

VTDOS155+CKWV11 では、メニュー枠がチラチラと瞬いて見えないほかは普通に使えるようです。
VTDOS155+CKWV12 では、メニュー枠がチラチラしますが見えてはいて、普通に使えるようです。
この辺もCKWVの更新理由なのかも。というか、Google IME を使うには CKWV12 が必須ですね。(^^;
どちらもVZ窓が出ている状態で Google IME をインストールしました
VZは、k07v6k 常駐です。

> ・[変換]キーに割り当てた IME 起動キーを押したら即座に VZ が終了した。

キー割当はなにか別のソフトを使ったのでしょうか。
もしかしたらこのへんが関係している可能性も考えられるので。
って、あれ? 普通に[変換]キーで漢字ON/OFFできるんですね。(^^;

> ・以下のマクロで IME を起動しても,やはり即座に終了。
> 1 @B "feponoff" &j(0) &m("OFF") (mg.-9)??{ &j(10) &m("ON") }

当方では問題なく起動します。

> ・VZ を終了させたのちの DOSプロンプトでも同様に落ちる。

これも問題ないですね。
この文章はVZで書いています。

> DOSVAXJ3 (JP23707) では不具合は再現しなかった。

念のため DOSVAXJ3 でも試してみましたが、問題ないようです。
ここからは DOSVAXJ3 のVZで書いています。

> ∴ VTDOS+CKWV 環境で Google IME を使用した場合の現象と考えられる。

めざらさんの環境では問題が出ているんですね、何が原因かわからないですね。


10974/10972 DGF01024  めざら           Re^2: ある現象
( 1) 23/12/10 21:55 10973:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
わざわざインストールしての確認ありがとうございます。
どうやら,うちの環境だけのようですね。

突然の発現なのでよくわからないのですが,ともかく少し様子を見てみます。

10975/10933 CXB00940  としき           Re: STIME.EXE 12月08日版
( 1) 23/12/11 16:28 10971:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> STIME.EXE 12月28日版をアップしました。

会社の環境だったので、あまり時間がとれず、状況が詰め切れていないので、あまり
参考にはならないかもしれませんが、とりあえずのご報告。
DOSVAXは、今年の7月のバージョンです。
会社なので、Vzも大昔に持ち込んだ高橋版をそのまま使っています。
だからなのか、それとも単に設定をつめていないからなのか、Vzは常駐使用できて
いません。非常駐なら、それなりにきちんと動いてくれているというか、少なくとも
不具合は認識していません。

この環境で非常駐VzのコマンドラインからSTIMEを起動すると、最初は普通に時計を
表示して、特に問題なく動いています。
この状態からファンクションの1〜3を押してカレンダーを表示させると、一応
カレンダーは表示します。が、その下側に「[Enter]キーを押してください。」と
表示され、その表示に従ってEnterを押すと、そこでプログラムが終了してしまい
ました。
ま、こんなこともありました、ということで。

ところで、年の瀬になったら、12月8日版がリリースされるのでしょうか。

10976/10933 BQO00549  konno            Re^2: STIME.EXE 12月08日版
( 1) 23/12/11 20:56 10975:としきさんへのコメント
> ところで、年の瀬になったら、12月8日版がリリースされるのでしょうか。

ああ! 日付を間違えていて気が付きませんでした。
気づかせてくださってありがとうございます。m(__)m

ココログの記事のタイトルと内容の日付を間違えていたのを訂正しました。
掲示板のタイトルも訂正しときます。(^^;

> この状態からファンクションの1〜3を押してカレンダーを表示させると、一応
> カレンダーは表示します。が、その下側に「[Enter]キーを押してください。」と
> 表示され、その表示に従ってEnterを押すと、そこでプログラムが終了してしまい
> ました。

これは環境変数 NCPATHを通していない場合のエラー処理が出来ていないようですね。
修正します。m(__)m


10977/10972 BQO00549  konno            Re^3: Google IME はVZでは使いにくい !?
( 1) 23/12/11 23:00 10974:めざらさんへのコメント コメント数:1
> どうやら,うちの環境だけのようですね。

VTDOS+CKWV 環境では何とか使えるようですが、素のVTDOS では問題ありでした。
VZ編集画面の最下行のファンクション表示
    ファイル  窓換  文換  窓割   記憶  検索  置換  カット    インサート help゙ ページ  タグ

これが、Google IME を入れたら、サジェストなんたらとか

Google 日本語入力インジケータウインドウ  置換  カット    インサート help゙ ページ  タグ

このような表示が張り付いて消えません。(>_<)
サジェストなんたらは、設定で無効にしたら予測変換が出来なくなるようだし。
MS-DOS Player でも同じ状態だったので、これは無理です。(>_<)

切り替えて使おうかと思いましたが、ウザいのでアンインストールしちゃおうかしら。
Windows IME(のATOKモード)に慣れたのもあり、こちらの方が使いやすいと感じました。(^^;


10978/10972 DGF01024  めざら           Re^4: Google IME がVZで使いにくいとは思いません
( 1) 23/12/12 07:29 10977:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
前回のコメントの質問に応えていなかったことがあるので,まとコメで。

わたしが Google IME を愛用している理由は,
・賢い……と言うか,わたしが必要としている固有名詞(人名)に強い
・カスタマイズが簡単で,キーの割当てがかなり自由
・上記のキー設定をテキストファイルで出力でき,他のPCにインポート可能
・変換候補選択キーに数字とローマ字を選べ,後者ならホームポジション維持可能
……といったところです。起動キー[変換]も他のツールを使わずに指定しています。

konno さんのおっしゃる最下行への表示の張り付きとかサジェスト云々が邪魔
という状況に陥ったことは一度もありません。ごく自然に使えていました。

数ヶ月前から変換候補の表示順が少し変わってしまって少しストレスはあるものの,
期待する候補が出なかったり固有名詞に弱くて著名人名も候補に出てこないような
他の IME をメインにしようとは思わないです。【あくまでも個人の感想です】

当面は,dosvaxj3 環境メインで VZ を使おうと思います。


入力するデータの種類によって IME を使い分けるのが賢い使い方だと思いますし,
慣れた入力方式やキーバインドが可能ならそこに安住するのは自然ですから,
決して konno さんの感覚/感触を否定するわけではありません。

10979/10972 BQO00549  konno            Re^5: Google IME がVZで使いにくいとは思いません
( 1) 23/12/12 22:27 10978:めざらさんへのコメント コメント数:1
> わたしが Google IME を愛用している理由は,
> ・賢い……と言うか,わたしが必要としている固有名詞(人名)に強い
> ・カスタマイズが簡単で,キーの割当てがかなり自由
> ・上記のキー設定をテキストファイルで出力でき,他のPCにインポート可能
> ・変換候補選択キーに数字とローマ字を選べ,後者ならホームポジション維持可能
> ……といったところです。起動キー[変換]も他のツールを使わずに指定しています。

こうしてみると、良いことづくめのようですね。私ももう少し試してみようかしら。

> konno さんのおっしゃる最下行への表示の張り付きとかサジェスト云々が邪魔
> という状況に陥ったことは一度もありません。ごく自然に使えていました。

VZでIMEを制御出来ていない環境がこの問題の共通点のようですね。
冷静に考えると、運用上はほとんど問題にならないようです。(^^;

> 数ヶ月前から変換候補の表示順が少し変わってしまって少しストレスはあるものの,
> 期待する候補が出なかったり固有名詞に弱くて著名人名も候補に出てこないような
> 他の IME をメインにしようとは思わないです。【あくまでも個人の感想です】

それぞれに長所や短所があるから、結局は個人の好みで選べばいいんでしょうね。

> 当面は,dosvaxj3 環境メインで VZ を使おうと思います。

dosvaxj3 は私がよく使う一部のキーバインドに問題が有るので、今はサブ窓になっています。(^^;

> 入力するデータの種類によって IME を使い分けるのが賢い使い方だと思いますし,
> 慣れた入力方式やキーバインドが可能ならそこに安住するのは自然ですから,
> 決して konno さんの感覚/感触を否定するわけではありません。

Google IME をインストールする時に、既定のIMEにしたら、切り替えてもすぐに戻ってしまうような。(>_<)
既定の設定を変えられないし。(;_;)
一旦アンインストールして既定のチェックを外そうとしたらPCの再起動になるし。(>_<)
で、既定のチェックを外したら、Google IME に切替が出来なくなりました。(>_<)

# どうなっとるんじゃ〜!! (-_-メ)


10980/10933 BQO00549  konno            STIME.EXE Ver 231212
( 1) 23/12/13 01:12 10933:konnoさんへのコメント
  STIME.EXE Ver 231212 に更新しました。

・DOSVAXJ3 の VGAで動くアナログ時計とカレンダのアクセサリです。
・NCPATH= でデータファイルの置き場所を指定してください。末尾に "\" が無ければ追加します。
・PATH が通っていないとカレントから読み出しますが、無い場合は祝日情報が表示されません。

・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、STIME.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにします。文字のデジタル時計とカレンダのみ表示します。
・VTDOS では動作しません。

23-12-12
・NCPATH が通ってなくてデータファイル読めない場合エラー終了していたのを警告表示に修正。


自作、改作アプリの放置部屋に置いてあります。


10981/10972 DGF01024  めざら           Re^6: Google IME がVZで使いにくいとは思いません
( 1) 23/12/13 08:47 10979:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
いやいや,良いことずくめというわけないじゃないですか。
メリットだけは挙げましたが,ストレスを感じるところを挙げてませんからね。

・部首名入力ができない(MSは部首名[F05]で可能)
・(最近)句読点や中黒を入力したいのに余計な感嘆符が大量に候補に出てくる

こういう長短を考えて,必要なときはすぐ切り替えられるようにしています。
MS IME も昔に比べればとても賢くなっていますよね。


> dosvaxj3 は私がよく使う一部のキーバインドに問題が有る

この問題点はどこかに書いてありましたっけ? 共有したいです。
試用程度にしか使っていなかったもので実感がありません。


> # どうなっとるんじゃ〜!! (-_-メ)

一旦,落ち着きましょうか。(笑)
Windowsの 設定>言語>キーボード (入力方式の切り替え)
 入力言語のホットキー (テキストサービスと入力言語)
 → 入力言語を切り替える 左Alt+shift
  IME ごとにキーシーケンスを設定することもできます。(不要だけど)


上記「入力方式の切り替え」の最初の項目に,
「アプリウィンドウごとに異なる入力方式を設定する」
というのを見つけたので,当面これを適用しておきます。
VZ で固有名詞をたくさん入力するということはないので。
(一応,うまいこと制御できています)

10982/10960 BQO00549  konno            DOSVAXJ3  起動時 NumLk が OFF になってしまう
( 1) 23/12/13 16:30 10960:konnoさんへのコメント コメント数:1
DOSVAXJ3 備忘録 2つ目です。

dosvaxj3 起動時に NumLk が OFF になってしまいます。
NumLk のランプは ON のままなので、ON操作をすると、ランプが消えます。

テンキー付きのPC では、これに気づかず、誤操作してしまいます。
起動時に 自動的に NumLk ON にする方法はわかりません。

NumLk ON コマンドなどは効かないようです。

dosvaxj3 起動時に NumLk の制御を何もしなければ、問題無くなると思うのですが。

次回はキーバインドの問題ですね。
纏めるのに時間が必要です。


10983/10972 BQO00549  konno            Re^7: Google IME がVZで使いにくいとは思いません
( 1) 23/12/13 17:58 10981:めざらさんへのコメント
> ・部首名入力ができない(MSは部首名[F05]で可能)

これはあまり使っていませんが、たまに使うかもしれないので、使える方がいいですね。

> ・(最近)句読点や中黒を入力したいのに余計な感嘆符が大量に候補に出てくる

これは困るかも。(^^; 私はよく中黒を使うので。(^^;

> こういう長短を考えて,必要なときはすぐ切り替えられるようにしています。
> MS IME も昔に比べればとても賢くなっていますよね。

切り替えると操作系の癖が変わるので、却って戸惑いそうですね。(^^;
普段は MS の IME で、必要な時だけ切り替えればいいのかな。

> > dosvaxj3 は私がよく使う一部のキーバインドに問題が有る
> この問題点はどこかに書いてありましたっけ? 共有したいです。
> 試用程度にしか使っていなかったもので実感がありません。

#10960:DOSVAXJ3 備忘録 のツリーで今纏め中です。
・chev 内部コマンドでモード切替が上手くいかない場合がある?
 その場合、chej.exe を使うのがよさそう。
・dosvaxj3 起動時に NumLk が OFF になってしまう。
・Fキーなどの一部のキーバインドが使えない。
 現在纏め中です。(^^;

> 一旦,落ち着きましょうか。(笑)

一応落ち着いたのでまた試してみようという気になっています。(^^;

> Windowsの 設定>言語>キーボード (入力方式の切り替え)
>  入力言語のホットキー (テキストサービスと入力言語)
>  → 入力言語を切り替える 左Alt+shift
>   IME ごとにキーシーケンスを設定することもできます。(不要だけど)

これは試していませんでした。やってみます。

> 上記「入力方式の切り替え」の最初の項目に,
> 「アプリウィンドウごとに異なる入力方式を設定する」
> というのを見つけたので,当面これを適用しておきます。
> VZ で固有名詞をたくさん入力するということはないので。
> (一応,うまいこと制御できています)

なるほど。当面これで運用してみますね。


10984/10960 DGF01024  めざら           Re: DOSVAXJ3  起動時 NumLk が OFF になってしまう
( 1) 23/12/13 19:48 10982:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
Numlock の問題は,自宅のデスクトップ(フルキーボード)では再現できませんでした。

テンキーの付いている幅広ノートで発生するということでしょうか?


10985/10960 BQO00549  konno            Re^2: DOSVAXJ3  起動時 NumLk が OFF になってしまう
( 1) 23/12/13 22:32 10984:めざらさんへのコメント コメント数:1
> Numlock の問題は,自宅のデスクトップ(フルキーボード)では再現できませんでした。
> テンキーの付いている幅広ノートで発生するということでしょうか?

ええ!? まさか!! と思って、デスクトップ機で確認してみました。
本当だ! Numlock が効いています!!

もしかしたら、ノートPCで常用している dosboxj.conf が壊れているかもしれない。
そう思って、最新の dosboxj.conf に、[autoexec] の内容を張り付けてみました。

げげぇ!! Numlock が効いている!!

どうやら今年の怒涛の dosvaxj3更新の時に色々 dosboxj.conf を弄ったのをそのまま使っていたのが原因だったようです。
テキストとしては壊れていないと思うので、どこが原因になったのか調べてみます。
問題が解決できてホッとしました。ありがとうございます。m(__)m


# 作者様に報告していたらまた恥をかくところでした。(^^;;

ていうか、新しい版が出てるし。(^^;


10986/10960 BQO00549  konno            Re^3: DOSVAXJ3  起動時 NumLk が OFF になる原因判明
( 1) 23/12/13 23:09 10985:konnoさんへのコメント
起動時 NumLk が OFF になる原因が判明しました。

dosboxj.conf の [sdl] セクションで
videodriver       = 
これを、

videodriver       = directx

このように変えていたのが原因だったようです。
videodriver       = 
に戻したら正常になりました。
当時は表示が遅いのをなんとか速く出来ないか色々試行錯誤していたのでした。(^^;

お騒がせしてすみませんでした。
問題点に気づかせてくれためざらさんに感謝です。m(__)m


dosboxj.conf は新しい版に変えましたが、デフォルトの状態だとやはりかなり遅いようです。
[cpu] セクションの
cycles    = auto

ここを

cycles= auto 50000 100% limit 100000

こう変更すると、爆速になります。(^_^)
拙作の STIME.EXE のカレンダーを ←→ キー押しっぱなしすると違いがよくわかります。(^^;
カレンダーマクロでもいいかとやってみたら違いがよくわからなかったです。(^^;
STIME.EXE はかなり負荷の高い処理をしているんですね。(^^;

10987/10987 BQO00549  konno            DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/14 00:58 コメント数:1
DOSVAXJ3 JP231212版 (2023/12/12)が更新されていました。
軟式さんのサイトから引用します。

●変更履歴
 build JP231212 (2023/12/12)

    int 21h ax=714eh, 714fh で 2 バイト余計にバッファに書き込みしていたのを修正しました。
    int 21h ax=714eh, 714fh, 71a6h で返されるファイル情報の日時等の値が間違っていたのを修正しました。
    int 21h ax=71a7h の日時変換が正しくなるよう修正しました。
    J-3100 ビデオモード 75h (640×400 16色) に対応しました。


うーん、今回はあまり関係ない更新かと思いましたが

Int 21/AX=714Eh - Windows95 - LONG FILENAME - FIND FIRST MATCHING FILE
Int 21/AX=714Fh - Windows95 - LONG FILENAME - FIND NEXT MATCHING FILE
Int 21/AX=71A6h - Windows95 - LONG FILENAME - GET FILE INFO BY HANDLE
Int 21/AX=71A7h/BL=00h - Windows95 - LONG FILENAME - FILE TIME TO DOS TIME
Int 21/AX=71A7h/BL=01h - Windows95 - LONG FILENAME - DOS TIME TO FILE TIME

これは Win95 の LFN 関係の修正だったのですね。
互換性が益々向上したようで、ありがたいです。作者様に感謝します。m(__)m


10988/10987 DGF01024  めざら           Re: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/14 07:41 10987:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
お,来ましたね。待ってました!

ところで,キーバインドの不具合の問題は konno さんから報告されていますか?

起動時に,ウィンドウの下の方がディスプレイの枠外になってしまうのを何とか
直してもらえないかなとか思っているのですが,メールするしかないのかな……


10989/10960 BQO00549  konno            DOSVAXJ3 備忘録  起動時ウィンドウが枠外にはみ出る場合
( 1) 23/12/14 18:00 10960:konnoさんへのコメント コメント数:1
備忘録のため、#10988 のコメントをこちらでします。m(__)m

> ところで,キーバインドの不具合の問題は konno さんから報告されていますか?

以前気がついた一部のキーは報告して対応していただきました。
今回は、改めて調べ直して纏めてから報告しようと思っていたので、まだ報告できていません。

> 起動時に,ウィンドウの下の方がディスプレイの枠外になってしまうのを何とか
> 直してもらえないかなとか思っているのですが,メールするしかないのかな……

これは以前報告した時のやり取りを引用しますね。

---------------------------------------------------------------------
> いまさらですが、画面の設定が実画面をはみ出す設定の時は、ALT[Enter] でフルスク
> リーンにしようとすると落ちてしまうのですね。
 フルスクリーンの場合、実際のディスプレイの解像度より大きい解像度は
設定できないような気がします。
 フルスクリーンで SXGA の解像度と一致するモードがない場合、それより
大きな解像度を選択して中央に表示といった動作になると思われますが、
SXGA と同じか、より大きい解像度が存在せず、画面解像度の設定でエラー
になっているものと思われます。
 dosboxj.conf で [sdl] fullresolution=1366x768 output=opengl とする
と落ちなくなると思いますが、スケーリングが入るので文字が綺麗にでない
と思います。
---------------------------------------------------------------------

それで、dosboxj.conf の [sdl] セクションを見てみると

#    fullresolution: What resolution to use for fullscreen: original, desktop or a fixed size (e.g. 1024x768).
#                      Using your monitor's native resolution with aspect=true might give the best results.
#                      If you end up with small window on a large screen, try an output different from surface.
#                      On Windows 10 with display scaling (Scale and layout) set to a value above 100%, it is recommended
#                      to use a lower full/windowresolution, in order to avoid window size problems.


これを見て、下のように、画面サイズを指定したらはみでなくなったようです。

fullresolution    = original
#fullresolution    = e.g. 1336x768
#fullresolution    = 100%

今は対応されたのか、元に戻しています。

窓状態の時は

#  windowresolution: Scale the window to this size IF the output device supports hardware scaling.
#                      (output=surface does not!)

これが設定のようですが、読めないので、適当にサイズ指定してみました。

#windowresolution  = original
windowresolution  = 1336x768

これで画面枠からはみ出なくなると思います。
お使いのPCの画面サイズを入れて試してみてください。

 追記

過去記事で設定例を出していました。 
 
 #10765: DOSVAXJ3の dosboxj.conf 設定例 投稿者: konno   2023/04/15(土) 
> [sdl]
> windowresolution  = 1336x768
> # 私の画面サイズ これを入れると画面をはみ出す行サイズでもフルスクリーンモードが使えるかも


12/20 追記

#10997 より
> 以前の設定例は見ていて,手元の画面解像度に合わせて値を入れているのですが,
> それでも下端がはみ出してしまうので,先の発言でした。

これを聞いて私が勘違いしていることに気が付きました。

windowresolution  = 1336x768

この指定では行数制限を入れていないとはみ出てしまうようです。
行数制限とは、[dosbox] セクションで

vtext1        = svga,40
#  vt1          svga,40 解像度  800× 600  文字 100×37〜40 (40行なら画面をはみ出さない)
vtext2        = xga,44
#  vt2          xga     解像度 1024× 768  文字 128×48〜80 (44行なら画面をはみ出さない)
vtext3        = sxga,44
#  vt3          sxga    解像度 1280×1024  文字 160×64〜75 (44行なら画面をはみ出さない)
#vtext4        = vga
#  vt4          vga     解像度  640× 480  文字  80×30〜51 (44行なら画面をはみ出さない)
vtext4        = sxga24,29
#               sxga24  解像度 1280×1024  文字 106×42〜51 (29) 24ドットフォント
#               xga24   解像度 1024× 768  文字  85×32〜60 (29) 24ドットフォント

このように各自のディスプレイで、はみ出ない行数を指定することで、はみ出なくなります。
ややこしいので私は上のようにコメントを入れています。


10990/10990 BQO00549  konno            MS-DOS Player 2023/12/14 更新
( 1) 23/12/14 18:36
MS-DOS Player 2023/12/14 が更新されました。

更新内容を引用します。
-----------------------------------------------------------

INT 10h AH=08hについて、漢字の文字コードを取得できるよう修正しました。

ReadConsoleOutputCharacterAで漢字を1文字だけ取得すると、20hが返るようです。
行全体を取得することで、漢字の第1・2バイトのどちらも読めるようになっているかと思います。

-----------------------------------------------------------

マイナーなファンクションですが、たまたま気が付いてご報告したら対応していただけました。
うれしいです!! \(^^)/ ヤッタ-


きっかけは
古いBASICコンパイラで、SCREEN (C,B) という関数で画面上の文字を読み取れるのですが
DOSVAXJ3 では正常に読み取れましたが、MS-DOS Player では、
1バイト文字は読み取れますが、2バイト文字は、空白文字(文字コード 20h)になって
読み取れません。

そこで、VZマクロで INT10 のBIOSコールの返り値を見てみました。
INT 10/AH=08h VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION

=int10-08.def
*m
80 ^\ "int10-08" ax=$0800, &i($10) &m("int10-08: AX=%04x CF=%d",ax,r).
*

このマクロで、カーソル位置の「★(819Ah)」を見た時の AXの返り値は

VTDOS		1D81
DOSVAXJ3	1F81
MS-DOS Player	1F20

他の2つのエミュでは 漢字の1バイト目のALは 81h ですが、
MS-DOS Player の ALは、20h 空白文字になっています。
念のため 英語モードの VZUS でも見てみました。

MS-DOS Player	1F81  1バイト目
MS-DOS Player	1F9A  2バイト目

どうやら MS-DOS Player での日本語環境で漢字は、INT 10/AH=08h の
返り値が空白になっているように見えます。


興味のある方は、更新前の MS-DOS Player で上のマクロを試してみてください。
これで私が何を弄っていたのかバレてしまったかも。(^^;


作者の武田様に感謝です。m(__)m


10991/10991 BQO00549  konno            VGAで動く アステロイドゲーム ASTE.EXE Ver.231216
( 1) 23/12/16 21:41
・DOSVAXJ3 の VGAで動く アステロイドゲームです。
・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、ASTE.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにすれば動作します。
・VTaste1.zipDOS では動作しません。
・ソースも付けます。

・更新履歴
2023-12-16 公開用に色々弄りました。
1991-02-28 とりあえず作成?

自作、改作アプリの放置部屋に置きました。

 動作保証はでき無いので実行は自己責任で。  


10992/10992 BQO00549  konno            コマンドラインで ZIPファイル作成
( 1) 23/12/18 22:54 コメント数:1
#10961 のとしきさんの発言

> 最近のアンチウィルスソフトはLZH形式を正しくチェックできないということで、
> 最近では一般向けに公開されるファイルにはあまり使われなくなっています。
> 次回からはZIP形式の使用がお勧め。

これを受けて、ZIP形式に変更したんですが
今まで LZHファイルは VZファイラーで作成できたんですが、ZIPファイルは VZではできません。
しかたがないので Windowsのエクスプローラーで作成しましたが、正直面倒くさいです。
何とかコマンドラインで出来ないか検索したら、ありました。7zip のサイトです。

インストールしないでzipや7z圧縮ファイルを作る方法
https://7-zip.opensource.jp/howto/non-install-compress.html

> コマンドライン版を使う方法
> 
> もっとも簡単なのは7-Zipのコマンドライン版を使う方法です。まず、「ダウンロード」のページから「7-Zip コマンドラインバージョン」を選択してファイルをダウンロードします。ファイル名は、
> 
> 7za<バージョン番号>.zip
> 
> のようになっています。これをダウンロードしたら、適当なフォルダに解凍します。zip形式になっていますが、Windows標準の機能だけでも解凍できます。ZIPファイルに含まれるのは以下のファイルです。 


古い版はセキュリティの問題で落とせなかったので、新しい版のコンソール版を落としました。

圧縮・解凍ソフト7-Zip 23.01 (2023-06-20) のダウンロード:
ダウンロード 	.7z 	Windows x86 / x64 	7-Zip Extra: コンソール板, 7z DLL, Plugin for Far Manager

その中の3つのファイル

2023/06/20  17:00           284,160 7za.dll
2023/06/20  17:00           821,248 7za.exe
2023/06/20  17:00           161,792 7zxa.dll

これを PATH の通ったフォルダに入れます。
次にファイラーマクロの改造ですが、LZH と同じ操作環境を作るのに苦労しました。(^^;
エイリアスとかすっかり忘れていました。(;_;)

VZFL.DEF は、マクロメニューで

5	"【圧縮解凍】",20,16
	"Z 7zip圧縮(コピー)	%^7za.EXE a %2%F %@3",#!	;
	"7zip解凍(同名ディレクトリ)	%^7zax %1",#!			;ディレクトリ)作成して展開
	"P LHA圧縮(コピー)	%^lha a -rx %2%F %@3",#!
	"M LHA圧縮(移動)	%^lha m -rx %2%F %@3",#!
	"N LHA圧縮(同名ファイル移動)	%^lham %1",#!
	"N LHA解凍(同名ディレクトリ)	%^lhax %1",#!			;ディレクトリ)作成して展開
	"U LHA解凍		%^lha x %1 %2%G%\",#!
	"V LHA表示		lha l ",#!
	"A 実行ファイル圧縮(com,exe)	%^diet %:*.com %:*.exe",#!
	"S 実行ファイル圧縮(diet)	%^diet %*",#!
	"R 実行ファイル解凍(diet)	%^diet -ra %*",#!
;	"pkunZip 表示	%^pkunzip -v ",#!			;古い!
	"H 7zip 表示	%^7za l ",#!				;7Z / ZIP 表示
	"pKxarc(解凍)	%^pkxarc -x ",#!
	"I ish(作成)	%^ish %1 /sn /m ",#!
	"W wsp(差分作成 old new)	%^wsp %1 %2 ",#!
	"W wsp(com作成 wup com)	%^wsp -s %1 %2 ",#!

このように LHA と同じような設定を 7zip 用に追加しました。
次に VZ.DEF のエイリアスの設定です。

* A エイリアス
lhax	Mkdir %< ; Lha x  %1 %<%\
7zax	Mkdir %< ; 7za x -o%< %1

このように、フルパスで ディレクトリ を作成してからフルパスで指定しないと駄目みたいです。
うまく動作するまで何度も試行錯誤しました。(^^;

公開しているメインDEF は古いものでしたね。(^^;

2017/09/08  00:00            29,016 VZ.DEF
2017/09/08  00:00            12,279 VZ2.DEF
2017/09/08  00:00            12,788 VZFL.DEF

最新の版をアップしましたのでご参考に。


# これで地獄から解放されて天国になるんだ・・・きっと。(^^;


10993/10992 CXB00940  としき           Re: コマンドラインで ZIPファイル作成
( 1) 23/12/19 01:35 10992:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> ZIPファイルは VZではできません。

あ〜、私はVzでは、いにしえのpkzipなんて物を使っていたのですが、そういえば
Windows環境には解凍用のpkunzipしか持ってきていないなぁ。
最近のWindowsだと、圧縮側は動かない、とかあるかも。
7zipは、職場だと、某取引先とのやり取りがこいつに指定されているため、会社の
マシンにGUI版はインストールされている。
そうか、こいつにもコンソール版というのがあるのね。
面白そうだから、今度試してみよう。


10994/10992 BQO00549  konno            Re^2: コマンドラインで ZIPファイル作成
( 1) 23/12/19 16:49 10993:としきさんへのコメント コメント数:1
> あ〜、私はVzでは、いにしえのpkzipなんて物を使っていたのですが、そういえば
> Windows環境には解凍用のpkunzipしか持ってきていないなぁ。
> 最近のWindowsだと、圧縮側は動かない、とかあるかも。

7zip は、pkzip より圧縮効率が良いらしいので、互換性のない部分もありそうですね。

> 7zipは、職場だと、某取引先とのやり取りがこいつに指定されているため、会社の
> マシンにGUI版はインストールされている。

ファイル形式が指定されていると、やはり色々制限がきつくなるのですね。

> そうか、こいつにもコンソール版というのがあるのね。
> 面白そうだから、今度試してみよう。

VZ党はやはりコマンドラインでやるのが粋ですよね。(^^;


10995/10995 BQO00549  konno            書籍 パソコンBASIC命令互換表
( 1) 23/12/20 01:49
ココログとの連携記事です。画像があります。
http://tamaneko2.cocolog-nifty.com/vz2/

最近 BASIC のプログラムを弄っているので、腐海に埋もれている参考書類を発掘しています。

長年埋もれていた中でまず見つけたのがこれ

パソコンBASIC命令互換表です。87年版

表紙
Dsc_0190

裏表紙
Dsc_0191

¥1200

各社のBASICの構文を詳細に比較しており、326ページもあります。

1987年の書籍なので、裏表紙には東芝のビジネスパソコン PASOPIA1600の広告が載っていますね。


掲示板でのとしきさんとのやりとりで
#10968:Re^6: アナログ時計とカレンダのアクセサリ 11月24日版  投稿者:konno   2023/12/05(火)
からのツリーで

> > > 当時、「各種BASICの違い」みたいな記事があって、参考に成りました。どこ行ったかなぁ。
> >
> > うちの、1985年ごろのベーマガに、その手の記事がありました。
> > ただ、多くの機種を対象としていた関係で、1機種あたりの分量はたいしたことは
> > ありませんね。
> >
> もしかしたら私もその本を読んだのかもしれませんね。

こんなふうに言っていましたが、読んだのはこの本でした。
これからは本格的に BASIC の話題を出していきたいと思います。


10996/10987 BQO00549  konno            Re^2: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/20 02:27 10988:めざらさんへのコメント コメント数:1
めざらさんへのコメントを備忘録の方に書いてしまいましたが、リンクが切れてしまいますね。
わかりにくくてすみません。いまさらですが書き直します。

> ところで,キーバインドの不具合の問題は konno さんから報告されていますか?

以前気がついた一部のキーは報告して対応していただきました。
今回は、改めて調べ直して纏めてから報告しようと思っていたので、まだ報告できていません。

"> 起動時に,ウィンドウの下の方がディスプレイの枠外になってしまうのを何とか"
"> 直してもらえないかなとか思っているのですが,メールするしかないのかな……"

これは以前報告した時のやり取りがあるので、
#10989 の備忘録の方に書いたのでそちらを参照してください。


10997/10987 DGF01024  めざら           Re^3: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/20 07:29 10996:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
わざわざ指示すみません。ありがとうございます。
以前の設定例は見ていて,手元の画面解像度に合わせて値を入れているのですが,
それでも下端がはみ出してしまうので,先の発言でした。

想像するところ,FHD のような高解像度だと文字等の拡大率を別に設定するわけですが,
(150%推奨のところを125%にしているけど)こういうのが影響しているかもしれません。

Windows アプリケーションと違って,DOS窓はフォントのサイズが固定なので。
(外してるでしょうけど)

10998/10992 CXB00940  としき           Re^3: コマンドラインで ZIPファイル作成
( 1) 23/12/20 16:32 10994:konnoさんへのコメント
参照先:http://toshiki.la.coocan.jp/
> 7zip は、pkzip より圧縮効率が良いらしいので、互換性のない部分もありそうですね。

こういうのってありそうですね。
zip関係ではGNU版のgzipというのもあって、デフォルトで作成されるファイルは
pkzip互換だし、特にデメリットもないはずですが、なんとなく安心感とでもいう
か、昔、PC-98の時代は解凍の際にしか使わなかったような記憶があります。速度
だったかメモリ効率だったか、何かの面ではメリットもあったはずなんですけどね。
あ、でも、.tarとか.tazといった拡張子のファイルの解凍の際にはgzipを使って
いたのではなかったかな。.tarの場合はkmtarだったかな。

> ファイル形式が指定されていると、やはり色々制限がきつくなるのですね。

制限というか、特定の取引先とやり取りしない大多数の人の場合、単に特定のソフト
を入れるかどうかだけの問題ですから、たいしたことはありません。

> VZ党はやはりコマンドラインでやるのが粋ですよね。(^^;

御意。

10999/10987 BQO00549  konno            Re^4: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/20 16:36 10997:めざらさんへのコメント コメント数:1
> 以前の設定例は見ていて,手元の画面解像度に合わせて値を入れているのですが,
> それでも下端がはみ出してしまうので,先の発言でした。

そうだったんですか、それを聞いて私が勘違いしていることに気が付きました。

windowresolution  = 1336x768

この指定では行数制限を入れていないとはみ出てしまうようです。
行数制限とは、[dosbox] セクションで

vtext1        = svga,40
#  vt1          svga,40 解像度  800× 600  文字 100×37〜40 (40行なら画面をはみ出さない)
vtext2        = xga,44
#  vt2          xga     解像度 1024× 768  文字 128×48〜80 (44行なら画面をはみ出さない)
vtext3        = sxga,44
#  vt3          sxga    解像度 1280×1024  文字 160×64〜75 (44行なら画面をはみ出さない)
#vtext4        = vga
#  vt4          vga     解像度  640× 480  文字  80×30〜51 (44行なら画面をはみ出さない)
vtext4        = sxga24,29
#               sxga24  解像度 1280×1024  文字 106×42〜51 (29) 24ドットフォント
#               xga24   解像度 1024× 768  文字  85×32〜60 (29) 24ドットフォント

このように各自のディスプレイで、はみ出ない行数を指定することで、はみ出なくなります。
ややこしいので私は上のようにコメントを入れています。

> 想像するところ,FHD のような高解像度だと文字等の拡大率を別に設定するわけですが,
> (150%推奨のところを125%にしているけど)こういうのが影響しているかもしれません。

これが影響するかはわかりませんが、上記の設定で試してみてください。
備忘録にも追記しておきます。


11000/10987 DGF01024  めざら           Re^5: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/20 21:44 10999:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
> このように各自のディスプレイで、はみ出ない行数を指定することで、はみ出なくなります。

うーん,そういうことではなくて。

例えば,わたしの場合,xga24,40 で起動する設定をしています。
FHD のディスプレイなら,9割方の高さで十分な余裕があるわけです。
しかし,起動するたびに下端が隠れてしまうので,いちいち移動します。

これは本来 Windows が制御すべき問題なのだろうと思うわけですが,
他のアプリケーションのウィンドウでは,あまりこういうことはないように思います。
もちろん,アプリケーション側できっちり制御している場合もあります。
VTDOS もきっちり制御していますよね。xyzzy なんかもそうです。

ウィンドウのプロパティから「移動」を行っても,その位置は記憶されません。
[Ctrl]や[Shift]押しながらウィンドウを閉じても,やはり位置は記憶されません。
記憶されないと言うか,起動・終了のたびに更新されて,どんどん下がっていきます。

まぁ,極端なことになる前にリセットされる感じなのですが,状況は変わらず。
毎回だとちょっとストレスなのですが,行数を減らすのもなんか負けみたいで(笑)。

11001/10987 BQO00549  konno            Re^6: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/20 22:49 11000:めざらさんへのコメント コメント数:1
> FHD のディスプレイなら,9割方の高さで十分な余裕があるわけです。
> しかし,起動するたびに下端が隠れてしまうので,いちいち移動します。

なるほど、そういうことですか。
私も毎回移動していたので、確かに面倒ですよね。
これは要望していいんじゃないでしょうか。駄目もとで。

私からメールしてみますね。
年末でお忙しいでしょうから対応してくれるかはわかりませんが。


11002/10987 BQO00549  konno            Re^7: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/21 16:08 11001:konnoさんへのコメント
> 私からメールしてみますね。

メールしたらお返事もらえました。
なんとかなりそうです。
備忘録も読んでもらえて、諸々対応してもらえそうです。
ありがたいです。

詳細は備忘録の方に書きます。


11003/10960 BQO00549  konno            起動時の窓位置の問題その他諸々、キーコード
( 1) 23/12/21 16:52 10989:konnoさんへのコメント
作者様からメールのお返事をいただき、掲示板も見てもらえたようです。

起動時の窓位置の問題は

>  起動時の座標については DOSBox-X では設定ファイルの [sdl]
> windowposition で指定できるようになってますので、この処理を持って
> こようかと考えております。

これで解決できそうです。

> また、chev us で qbasic が動作しない件はこちらでも確認しましたの
>で修正します。

これも解決できそうでうれしいです。

> キー入力の不具合等もあるようですので、可能でしたら詳細をご連絡ください。

BIOSコールでVTDOSとの違いを見てみました。★印が相違しています。

F1	F2	F3	F4	F5	F6	F7	F8	F9	F10	F11	F12	
3B00	3C00	3D00	3E00	3F00	4000	4100	4200	4300	4400	8500	8600	VTDOS
3B00	3C00	3D00	3E00	3F00	4000	4100	4200	4300	4400	8500	8600	DOSVAXJ3

\F1	\F2	\F3	\F4	\F5	\F6	\F7	\F8	\F9	\F10	\F11	\F12
5400	5500	5600	5700	5800	5900	5A00	5B00	5C00	5D00	8700	8800	VTDOS
5400	5500	5600	5700	5800	5900	5A00	5B00	5C00	5D00	no★	no★	DOSVAXJ3

^F1	^F2	^F3	^F4	^F5	^F6	^F7	^F8	^F9	^F10	^F11	^F12
5E00	5F00	6000	6100	6200	6300	6400	6500	6600	6700	8900	8A00	VTDOS
keymap★5F00	6000	6100	no★	no★	6400	6500	終了★	IME★	no★	no★	DOSVAXJ3

@F1	@F2	@F3	@F4	@F5	@F6	@F7	@F8	@F9	@F10	@F11	@F12
6800	6900	6A00	6B00	6C00	6D00	6E00	6F00	7000	7100	8B00	8C00	VTDOS
6800	6900	6A00	6B00	6C00	6D00	6E00	6F00	7000	no★	no★	no★	DOSVAXJ3

^1	^2	^3	^4	^5	^6	^7	^8	^9	^0	^-	^^	
02FF	0300	04FF	05FF	06FF	071E	08FF	09FF	0AFF	0BFF	0C1F	0DFF	VTDOS	
0300	no★	no★	no★	no★	071E	no★	no★	no★	no★	0C1F	0D00★	DOSVAXJ3


no★ はキーコードが出ていないところです。
^F1〜 ^F12 は keymap を弄った所もあるので、修正可能な範囲でお願いします。


★印のところはVZで使えません。^F9 はDOSVAXJ3 が強制終了してしまうのでご注意を。
この表をメールしました。


BIOSキーコード表作成は

== KEYin.def ==
*m
80 ^^  "key in?" 
k=ks1, (k>=8)?{(&m("hennkann").}
&w(50)  &m("BIOS key in? ")
:a c0,
:A
ax$0000,&i($16)  a=r,
(c==0)?b=ax,d=dx,
(a!=0&&c==0)?{c++,>A}
 &m("BIOS key in? AX=%04x dx=%04x b=%04x r%d  %c",ax,dx,b,r,ax%256)
&w(20)
(AX==$011B)?>Q	;int16h
(ax==$061B)?>Q	;int21h
(ax==$0600)?>A
 &?("%04x%c",ax,9)		;★ キーコード+TAB を書き込む
>A
:Q  &m("") .
*

これで作りました。


11004/11004 BQO00549  konno            VTDOS155 のプロンプト
( 1) 23/12/21 17:26 コメント数:3
VTDOSの最新版に更新してからプロンプトにパスが表示されなくなりました。
C>
と表示されるだけです。
誰も言わないので、この症状はうちだけなのかしらん。

不便を感じながらそのまま使っていましたが、解決方法を思い出しました。
プロンプト、そうだ! prompt コマンドだ!

ネット検索すると

 PROMPT コマンドの引数では次の特殊コードが使用できます。

$A & (アンパサンド)
$B | (パイプ)
$C ( (左かっこ)
$D 現在の日付
$E エスケープ コード (ASCII コードの 27)
$F ) (右かっこ)
$G > (不等号 (より大))
$H バックスペース (直前の文字を削除します)
$L < (不等号 (より小))
$N 現在のドライブ
$P 現在のドライブとパス
$Q = (等号)
$S   (空白)
$T 現在の時刻
$V Windows のバージョン番号
$_ キャリッジ リターンとラインフィード
$$ $ (ドル記号)


それで

prompt $P$G

起動BATにこう設定しました。
いまさらの TIPS いや、私が忘れているだけか。(^^;


11005/11005 BQO00549  konno            DOSVAXJ3 修正テスト版
( 1) 23/12/21 19:22 コメント数:1
DOSVAXJ3 修正テスト版をメールでいただきました。
あまりに早い対応にびっくりです。ありがたいです。

>  修正テスト版を作成しました。下記よりダウンロードしてください。
>  64bit 版 dosboxj.exe のみです。
>   https://www.nanshiki.co.jp/test/dosboxj1221.zip
>  リンクを掲示板に書いても問題ありません。

ということなので、上記のリンクからテスト版を落とせると思います。
以下丸ごと引用します。

----------------------------------------------------------------
 ファンクションキーと Ctrl 等の組み合わせについては DOSBox の機能
に割り当てられており、そのままでは入力されません。
 Ctrl-F1 でキーマッパーを表示し、機能名をクリックして Del をクリッ
クすると機能を削除できます。詳しくは下記を参照してください。Clipboard
は DOSVAXJ3 独自機能です。
https://www.dosbox.com/wiki/Special_Keys
キー割当  機能名
Ctrl-F1   Mapper
Ctrl-F4   Swap Image
Ctrl-F5   Screenshot
Ctrl-F6   Rec Wave
Ctrl-F7   Dec Fskip
Ctrl-F8   Inc Fskip
Ctrl-F9   ShutDown
Ctrl-F10  Cap Mouse
Ctrl-F11  Dec Cycles
Ctrl-F12  Inc Cycles
Alt-F10   Clipboard
Alt-F12   Speedlock
 ただ、F11, F12 関連や Ctrl-2 等については入力が正しく動作しており
ませんでしたので修正しています。

 起動時の位置については dosboxj.conf の [sdl] に windowposition を
追加してください。
・現行通り
windowposition=-
・画面中央
windowposition=,
・座標指定 x=100 y=0
windowposition=100,0
 となります。

 chev us での qbasic の動作も確認しております。

 上記の修正以外にも DOSBox SVN の修正の取り込み等、いろいろ修正して
おります。
 一通りの動作確認はしておりますが、問題がありましたらご連絡ください。

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  小林隆                                     support@nanshiki.co.jp
                                                     有限会社 軟式
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
----------------------------------------------------------------


11006/11005 DGF01024  めざら           Re: DOSVAXJ3 修正テスト版
( 1) 23/12/21 20:28 11005:konnoさんへのコメント
参照先:http://mezala.la.coocan.jp/
起動時のウィンドウ位置指定についても要望してくださり,有難うございました。

dosboxj.conf の [sdl] に windowposition を追加し,200,40 を指定しました。

素晴らしい! 素晴らしいです。完全に制御されていますね。
軟式の小林様に大感謝です。

11007/11004 DGF01024  めざら           Re: VTDOS155 のプロンプト
( 1) 23/12/21 20:32 11004:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
> prompt $P$G

それ,純DOSの時代からずっとですよ。(^。^)

11008/11004 CXB00940  としき           Re: VTDOS155 のプロンプト
( 1) 23/12/21 22:54 11004:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> VTDOSの最新版に更新してからプロンプトにパスが表示されなくなりました。

めざらさんも書いていますが、これはDOSのころから自分で設定するもののはず。
最新版に更新して変化したとなると、何かが変わってしまっていると考えられます。
プロンプトだけの問題ならいいのですが、ほかに変なものが変わっていないか、
きちんとチェックした方がいいかも。


11009/11004 BQO00549  konno            Re^2: VTDOS155 のプロンプト
( 1) 23/12/21 23:29 11007:めざらさんへのコメント
> > prompt $P$G
> それ,純DOSの時代からずっとですよ。(^。^)

こんなことも思い出せないなんて、もう完全にボケてますね。
ボケても話題を振りまける花咲か爺さんになるのじゃぁ。(^^;


11010/11004 BQO00549  konno            Re^2: VTDOS155 のプロンプト
( 1) 23/12/21 23:37 11008:としきさんへのコメント コメント数:1
> めざらさんも書いていますが、これはDOSのころから自分で設定するもののはず。
> 最新版に更新して変化したとなると、何かが変わってしまっていると考えられます。

自分だけの症状だとすると、更新の時に無意識に prompt C> とか打っちゃったのかも。
マクロのバグでここの設定部分が壊れた可能性が一番高いですね。(^^;


# 俺はバグバグの実を食べて改造王になる!!


11011/11011 BQO00549  konno            CKWV12 + IME でカーソルが見えなくなる 
( 1) 23/12/22 20:42 コメント数:1
CKWV12 環境で Windows IME(ATOKモード)でカーソルが見えなくなる場合があります。
例えば、「誤変換」を間違えて「ごごへんかん」と打ち込むと「午後変換」になります。
BS で「ごごへんかん」に戻るのでカーソルを誤字位置の方に動かすとカーソルが見えなくなります。
VZが無くても同じ状況になります。
見ていると、数十秒に1回くらい一瞬表示されるようです。

10♯さんのBBSで聞いてみましたが、再現しないそうです。

富士通デスクトップPC RAM 16GB Intel Core i5-6500 3.20GHz 64ビット Windows10 Pro 22H2
富士通ノートPC RAM 16GB Intel Core i5-6300U 2.50GHz 64ビット Windows10 Pro 22H2
富士通ノートPC RAM 16GB Intel Core i3-7100U 2.40GHz 64ビット Windows10 Pro 22H2
で確認しましたが、同じ症状でした。
3台とも安い中古PC なのでグラフィックのパワーは弱いと思います。
VZ有り/無しで同じでした。

CKWV.CFG も添付のものにPATH とフォントサイズだけ変更してみましたが変わらないです。
Windowsのカーソル設定も弄ってみましたが変わらないです。
コントロールパネルのカーソル設定で点滅を止めても表示しなかったです。
VZのカーソル設定で Ci0 で点滅を止めても表示しなかったです。

CKWV11 では同じ操作でカーソルが見えているので今は CKWV11 を使用しています。

同じ症状の人がいたら教えてください。
確認していただけるとありがたいです。


11012/11011 DGF01024  めざら           Re: CKWV12 + IME でカーソルが見えなくなる 
( 1) 23/12/23 13:27 11011:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
Microsoft IME を ATOK モードに変更して試してみたところ,konno さんと同様の症状ですね。
変換前状態に戻すと,カーソル(縦線?)は一切見えません。
konno さんの環境ではたまに見えるらしいですが,目を凝らしても全然見えません。

色設定を ATOK に変更して色々いじってみましたが,変換前状態に適用可能な
色や下線の設定はないようですね。

わたしも CKWV は R11 に戻しました。
Google IME が使えないという状況は同じですが……

ところで……
なんで konno さんは ATOK モードなのですか?
ATOK が好きなら ATOK を買うのが一番の解決策じゃないでしょうか。
わたしが愛用した WX はもう買えませんが,ATOK は買えるのでしょう?


11013/11011 BQO00549  konno            Re^2: CKWV12 + IME でカーソルが見えなくなる 
( 1) 23/12/23 16:26 11012:めざらさんへのコメント
> Microsoft IME を ATOK モードに変更して試してみたところ,konno さんと同様の症状ですね。
> 変換前状態に戻すと,カーソル(縦線?)は一切見えません。
> konno さんの環境ではたまに見えるらしいですが,目を凝らしても全然見えません。

私以外にも同様の症状の人がいてホッとしました。(^^;
ATOK モード以外では見えているということですか。
うちでは、普通のモードでも見えなかったように思います。

と、これを書いている時に、CKWV11(R11) で見えない現象が出てしまいました。
Win10 のサポートは2025年に終わるそうなので、更新のたびに色々問題が出てくるのかもしれません。
10♯さんには、R11で運用すると言いましたが、どうもよくない兆候ですね。

> 色設定を ATOK に変更して色々いじってみましたが,変換前状態に適用可能な
> 色や下線の設定はないようですね。

そうですか、残念ですね。

> わたしも CKWV は R11 に戻しました。
> Google IME が使えないという状況は同じですが……

(^^;

> なんで konno さんは ATOK モードなのですか?
> ATOK が好きなら ATOK を買うのが一番の解決策じゃないでしょうか。

初めに使ったのが ATOK だったので、手がそれ以外の操作系を拒否ってしまうようでして。(>_<)
本当は脳が覚えられないのでした。(;_;)
本物の ATOK は今はどうなのか、試すのが怖いです。(^^;


# ちうこでどかな


11019/11004 BQO00549  konno            個人的な VTDOS の挙動あれこれ
( 1) 23/12/29 21:57 11004:konnoさんへのコメント
最近新しい方のノートPCで VTDOS 単独で起動したら、
無効な command.com
とか出て起動できませんでした。
あれ? 今までと同じ環境のはずなのになんで? と思いましたが

実は最近 Visual Studio 2022 Community を入れて CKWV12 をビルドして試したのです。
64ビット版は 7/7 起動中とか出て固まるようです。
86x版は、起動出来た気がしますが、IMEのカーソルが見えない状況は変わらず。
あるいは、無効な command.com
とか出て起動できなかったような気がしました。
うーん、この辺記憶があいまいなので、色々試しているうちに上記の症状が出たのは確かです。

ふと思いついて、Cドライブのルートに command.com を置いたら、起動できたのです。
VTDOS.CFG の設定では別の場所になっているんですがねぇ。
色々弄ったせいで Windows の環境変数とか、何かが変わってしまっていたのかもしれませんね。
多分私だけの症状かもしれませんが、備忘録として書いておきます。

ちなみに、弄っている中で、Visual Studio 2017 で作った CKWV11 の改変版 CKWV111 を試してみたら
IMEの BS(再変換)で出るカーソルが Windowsで設定した幅に反映されたのを見ました。
一時的だったのか、今は縦線になっています。
CKWV は Visual Studio2008 でビルドされているようですが、Visual Studio の版によって挙動が違うこともあるのかな。
と、素人考えで思いました。


11020/11020 BQO00549  konno            軟式サイトに隠された秘宝探しダンジョン
( 1) 23/12/30 18:11 コメント数:1
とあるサイトのリンクに、軟式さんの DOS関連ソフトのリンクがありました。
あれ? 軟式のサイトに DOS関連のリンクなんてあったっけ? と思ってクリックすると、現在の軟式のトップページになります。
そういえばうちの DOSVAXJ3 のリンクページにはトップページへのリンクが無いですね。「軟式」のロゴクリックで行けますが。
トップページの下方には、

 ソフトウェア一覧  その他ソフトウェア一覧(フォントドライバ等) Windows/MS-DOS

こういうリンクがあるんですが、ここをクリックすると

 DOS/V 用フォントドライバ fontn や wxpdosv は MS-DOS/Linux フリーウェア → その他のMS-DOSプログラム の順番でクリックしてください。

こういう表示のみあって、それらしきリンクがどこにも見つかりません。
まさかと思って、ページのソースを表示させると、フリーソフト関連のリンクがいくつもありました。
それをたどると実際に関連ページがありましたので、何らかの理由かミスかわかりませんが、表示していないだけのようです。

内容を見てみると・・・ うおおおおぉぉぉ、、、お宝ザクザク大発見じゃぁ〜!! \(^^)/ ヤッタ-
もしかしたら伝説のお宝、ワンピースもあったりして。(^^;

これって、宝探しダンジョンかよ・・・ ということでタイトルに繋がるのでした。(^^;
せっかく見つけたので、うちのリンクを修正しておきました。

http://tamaneko.world.coocan.jp/bbs/sinn1.cgi

DOSVAXJ3 は、トップページになります。
freedos は、各種お宝へのリンクになっていると思います。


# 年末年始はダンジョン攻略でレベル上げするぞ〜!!

# かいぞうく王に俺はなる!! (^^;


11021/11020 CXB00940  としき           Re: 軟式サイトに隠された秘宝探しダンジョン
( 1) 23/12/30 20:19 11020:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> こういう表示のみあって、それらしきリンクがどこにも見つかりません。

どこかの隠しリンクでも見つけられたということでしょうか。
であるなら、あとでこっそり教えてください。
なお、DOS/V 用フォントドライバ fontn や wxpdosv は、隠されていない公開リンク
から行けましたが、これって旧版なのかな?
つまり、最新版は隠されている、ということか。
ちなみに、私が踏んだリンクは、

 トップページ下のほうの「ソフトウェア一覧」
 →ページ左側「その他のWindowsプログラム」の下の「MS-DOS/Linux フリーウェア」
  (「ライブラリ」の上)
  →ページ左側「tel2com for Linux」の下の「その他のMS-DOSプログラム」
   (「ライブラリ」の上)

という感じでクリックしました。

> # かいぞうく王に俺はなる!! (^^;

konnoさんには、改造が苦になって欲しくはないのが本音。
#個人のご意見です


11022/11020 BQO00549  konno            Re^2: 軟式サイトに隠された驚きの謎
( 1) 23/12/30 23:46 11021:としきさんへのコメント コメント数:1
>  トップページ下のほうの「ソフトウェア一覧」
>  →ページ左側「その他のWindowsプログラム」の下の「MS-DOS/Linux フリーウェア」
>   (「ライブラリ」の上)
>   →ページ左側「tel2com for Linux」の下の「その他のMS-DOSプログラム」
>    (「ライブラリ」の上)
>
> という感じでクリックしました。

げげぇ、行けたのですか。ビックリです。(@.@)
もしかして、と思って、「ソフトウェア一覧」のページで画面を 50% に縮小したらリンク全体が現れました。
私のノートPCは小さいので、ページの下の方が見えなく、スクロールも出来なくて見られなかったのでした。
ファイヤーフォックス、エッジ、クロムで確認しましたが、いずれもこのページは下が見られませんでした。
どうやらこのページは固定画面で作られているようです。

これでわかったことがあります。
としきさんにこっそり言いますね。





# 私の環境はとしきさんより貧弱だったことですぅ。(;_;)


11023/11020 CXB00940  としき           Re^3: 軟式サイトに隠された驚きの謎
( 1) 23/12/31 01:01 11022:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> どうやらこのページは固定画面で作られているようです。

確認しました。どうもそのようですね。
具体的には、CSSで overflow: hidden; という指定があるのですが、これの対象が
htmlとなっている。つまり、サイトのメインの表示で、縦が足りない表示環境でも
縦スクロールバーが出ない設定になっている。こんな指定するサイト、初めて見た。
あんまりこういう指定はしないんですけどね。
私のほうでも、ブラウザの縦を縮めてみたら、容易に再現できました。
さらに、ブラウザのサイズが普段どおりでも、縮尺率を変えたりフォントのサイズを
変えることで再現できました。
また、firefoxだと容易にCSSのOFFということができるので、画面の縦が足りなくて
全部表示できない状況にして、そこからCSSをOFFにしたら、無事にすべてのリンクが
表示できるようになりました。が、そもそも、初めての訪問者の場合、画面に全ての
情報が表示されていないということに気づき得ないわけです。
これはちょっとまずいなぁ。

なので

> # 私の環境はとしきさんより貧弱だったことですぅ。(;_;)

これは当たらない。
だって、画面の縦のサイズが小さくても、それ以上にブラウザ側が小さい文字で表示
するようになっていれば見えたはず。逆に、どんな大画面を使っていても、大きな
文字で表示させるようにしていたら、このリンクは見えない。

これ、ついうっかりやってしまったパターンなんだろうな。
サイトオーナーの側で意識して、というか意図的に一定以下の画面サイズのお客様
を排除するということもあるでしょうけど、それにしたって、こんな方法は普通は
使わない。
時々、凝った見栄えを目指したのでしょう、もっとひどいUIにお目にかかることも
ありますけどね。
そもそも、サイトなんて、誰がどんな環境でアクセスしてくるかわからないのだから、
あまり見栄えを追及しても無駄というか逆効果にしかならない。だからサイト側での
フォントサイズ指定は云々、みたいな話は昔、konnoさんともしたことがあるような
気がする。
今回は、普通の文字サイズでもブラウザのウィンドウサイズによっては、ということ
ですから、珍しい種類の「よろしくないUI」を見させていただいた感じです。

11024/11020 BQO00549  konno            Re^4: 軟式サイトに隠された驚きの謎
( 1) 23/12/31 01:46 11023:としきさんへのコメント コメント数:1
> 具体的には、CSSで overflow: hidden; という指定があるのですが、これの対象が
> htmlとなっている。つまり、サイトのメインの表示で、縦が足りない表示環境でも
> 縦スクロールバーが出ない設定になっている。こんな指定するサイト、初めて見た。

なるほど、そういうことですか、わざとではなく設定ミスのようですね。
メールで報告してみます。読むのが正月明けになると思いますが。

> だって、画面の縦のサイズが小さくても、それ以上にブラウザ側が小さい文字で表示
> するようになっていれば見えたはず。逆に、どんな大画面を使っていても、大きな
> 文字で表示させるようにしていたら、このリンクは見えない。

確かにうちは大きめフォントなので、50%まで縮小しないと見えなくて、気が付きませんでした。
存在にも気が付かなくて、古いDOSソフトはやめちゃったのかなぁ、と思っていました。(^^;
スマホではどう見えるんでしょうね。


11025/11025 BQO00549  konno            2024年 今年もよろしく
( 1) 24/01/03 19:50 コメント数:2
2024年が明けました。
今年は元旦から能登で大地震があったりして、大変な年になりそうです。
亡くなられた方々のご冥福をお祈りいたします。

そんな世相を鑑みて簡単な御挨拶で済ませてしまいますが
今年もよろしくお願いします。


# うう、年末の無理が祟ったか、風邪をひいてしまいました。(゚゜)☆\(--#)ナニモシテナイダロ
  喉は痛いし食欲もなく、1日おじや1杯でしのいでいます。(;_;)


11026/11025 CRG00666  文太             Re: 2024年 今年もよろしく
( 1) 24/01/07 00:03 11025:konnoさんへのコメント コメント数:1
konnoさん

 あけましておめでとうございます。
 バタバタ、ヨロヨロしていて、新年のご挨拶が遅れました。
 まあ、けっこうゆっくりしてるのですけどね。
 年末年始は、一生懸命、1日1時間のダラダラ散歩ができましたし。
 白内障の手術、無事にいってくれることを祈っています。

 まだまだ部屋と頭と心の整理に忙しく(違うな、やりたくないのだろう!)
PC(Vz&ベーシック&DOSエミュ)方面はさっぱりですが、昨年の
konnoさんのご活躍には刺激を受けました。
 まだまだDOS&Vzでいきましょう! 僕はその気ですよ!




11027/11025 DGF01024  めざら           Re: 2024年 今年もよろしく
( 1) 24/01/07 14:29 11025:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
松の内ぎりぎりですが,明けましておめでとうございます。

いろいろな意味で大変な年になりそうな予感がしますが,
思うべきことは思い,言うべきことは言い,淡々と過ごしたいと思います。

今年もよろしくお願い申し上げます。

辰年ですが立ちません,下から支えようと思う今日このごろ。

11028/11025 BQO00549  konno            Re^2: 2024年 今年もよろしく
( 1) 24/01/07 17:09 11026:文太さんへのコメント
文太さん、今年もよろしくお願いします。

>  年末年始は、一生懸命、1日1時間のダラダラ散歩ができましたし。

長生きするには散歩が良いですよね、私も風邪の病み上がりで息切れしてます。(;_;)

>  白内障の手術、無事にいってくれることを祈っています。

お気遣いありがとうございます。OFF会楽しんでくださいね。

>  まだまだ部屋と頭と心の整理に忙しく(違うな、やりたくないのだろう!)
> PC(Vz&ベーシック&DOSエミュ)方面はさっぱりですが、昨年の
> konnoさんのご活躍には刺激を受けました。
>  まだまだDOS&Vzでいきましょう! 僕はその気ですよ!

この年になって振り返ってみると、昔取った杵柄しか残ってないんですよね。
私の場合それがVZとBASICだったということです。
これからは自分の痕跡を残すためにやりたいことだけやっていきますよ。

そんな1年にみなさんでしていきましょう。


11029/11025 BQO00549  konno            Re^2: 2024年 今年もよろしく
( 1) 24/01/07 17:29 11027:めざらさんへのコメント コメント数:1
めざらさん、今年もよろしくお願いします。

> いろいろな意味で大変な年になりそうな予感がしますが,
> 思うべきことは思い,言うべきことは言い,淡々と過ごしたいと思います。

事件、事故も多いので、巻き込まれないように注意深く、慎重にして、1年無事に乗り切れるといいですね。

> 辰年ですが立ちません,下から支えようと思う今日このごろ。

なにやら意味深な書き込みですね。(^^;
私も急速な老化現象を感じて、アレなんですが、
今年の抱負というか、やりたいことの一つに、お願いがあります。
別発言で書きますね。


11030/11025 BQO00549  konno            野ざらし言と板塀に全ログ検索を
( 1) 24/01/07 21:11 11029:konnoさんへのコメント コメント数:1
めざらさん、としきさん
突然ですがお二人にメール送ります。

もう16年前になりますが、うちの掲示板の検索を、全ログの改行またぎ検索に改造しました。

#2794:掲示板の検索機能強化  投稿者:konno   2008/01/04(金)
#2821:掲示板の改行跨ぎ検索  投稿者:konno   2008/01/12(土)

おかげさまで検索が非常に便利になりましたが、実はこの時野ざらし言と板塀にも
全ログ検索を導入してほしいと思っていたのですが、反応が薄くそのままになっていました。
今年は一念発起して、全ログ検索ルーチンをメールで送りつけることにしました。(^^;


find.cgi は、wforum.cgi の中の2つのサブルーチンを抜き出したものです。

# 検索フォーム #
sub find {

# 検索実行 #
sub search {

この2つのルーチンを置き換えるか名前を変えて追加するかして試してみてください。
エラーが出なければたぶん問題なく動作していることと思います。
内容は好きなように改変してください。

この全ログの改行またぎ検索を是非お二人の掲示板に導入してもらいたく、無理やり送りつけてしまいました。
なにとぞよしなに。m(__)m


11031/11025 DGF01024  めざら           Re: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/08 08:40 11030:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
konno さん

細かな理由はメールにて返信しましたが,
要は「気が向いたらネ」ということで.(^^;


11032/11025 BQO00549  konno            Re^2: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/08 23:20 11031:めざらさんへのコメント コメント数:1
> 要は「気が向いたらネ」ということで.(^^;

はい、気が向かれましたらよろしくです。(^_^)


11033/11020 CXB00940  としき           Re^5: 軟式サイトに隠された驚きの謎
( 1) 24/01/09 12:40 11024:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> なるほど、そういうことですか、わざとではなく設定ミスのようですね。
> メールで報告してみます。読むのが正月明けになると思いますが。

さっき見てみたら、問題は解消しているようでした。
konnoさんの報告のおかげでしょう。
ありがとうございました。


11034/11025 DGF01024  めざら           Re^3: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/09 21:28 11032:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
野ざらしのアーカイブが進んでいないというご指摘も頂戴したので,
もう十年以上も放置していたログを上げようとしたところ,
過去ログに破損と番号の重複があることが判明してしまいました。(^^;

いきさつとしては,ちょっと長くなるやつですが……

Web Forum の確定した過去ログをnifty形式にするマクロで整形し,
Siさんの LOGSORT で整列させようとしたところ,
ヘッダの形式が異なるからダメよ……というメッセージで停止してしまいます。
で,いまさら Si さんのお手を煩わせるわけにもいかないと考えたので,
仕方なく LOGSORT.DEF を作ったわけですが,さて処理しようとしたとき
何を考えたのか間違えて元のWFログを指定してしまいました。それなりに待った挙げ句
何も出力されないので,なぁぜ・なぁぜ?と思ったら整形前の元ファイル。
それが判明した瞬間,なんなら元のWFログをソートすればよいのではと気づきました。
だって,先頭に発言番号のある1行1アーティクルなんですから……何故気づかなかった!?

どうせ HSORT を使うのならと三つの元ログをマージして処理したら,これが一瞬です。
しかし,三つも一遍に統合して並べたのにそれなりに空き番号があるではないですか。
実は,番号が飛ぶのが嫌で嫌で,掲示板利用者が自分で削除したような場合,
ログを編集して番号を詰めているんですよ。そういう性分だから仕方がない。
スパムも削除した後に番号をわざわざ詰めているんです。面倒ですけど。
要は,ある人が発言削除したとき,番号を埋めようとログを編集している最中に
その当人がコメントを書き直して書き込むということが発生していたのが原因です。
(ふつうの勤め人は書き込まないような時間帯だったので最悪のタイミングだった)

さて,どうしようかな。重複した一方を削除するのが簡単だけど,
とりあえず空き番号を割り当てられないか検討してみることにします。

そんなわけで,アーカイブも少々先送りという事情を長々と説明しました。

なんでこんなにクドクドしているかというと,ログソート及び空き番号列挙という
ふたつのマクロを久々に仕立て上げたのに,まるで無駄骨になってしまったから。
ちょっとしたリハビリでした,はい。……そんで飲んじゃった。ってわけ。

11035/11020 BQO00549  konno            Re^6: 軟式サイトに隠された驚きの謎
( 1) 24/01/09 22:33 11033:としきさんへのコメント
> さっき見てみたら、問題は解消しているようでした。

確認したら、スクロールが効くようになっていました。
実はメールは暮れのうちに返信が来て、直リンクをつけてくれていたのです。
私は正月早々風邪をひいて、そのことを書けないでいたのでした。

対応していただいた軟式さんに感謝です。


11036/11025 DGF01024  めざら           Re^4: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/10 09:41 11034:めざらさんへのコメント コメント数:2
参照先:http://mezala.la.coocan.jp/
現時点では非公式版となっている2008年版の logsortw の存在を教えていただき,
実行してみたところ,ヘッダ不正問題は解決し,めでたく重複発言番号ありの
エラーによって停止しました。(笑)

さて,どうしようかな。
それに絡んでと思われるログ破損(一部消失)もあるので悩み中。
ログは固定されちゃっているので,ゆっくり考えればいいかな。

有難うございます&御免なさい > konnoさん

11037/11037 DGF01024  めざら           DOSVAXJ3 240110 更新
( 1) 24/01/10 21:48 コメント数:3
参照先:http://mezala.la.coocan.jp/
先月,わたしたちの要望を容れていただいた修正テスト版に,
さらに改善が加えられた正式版として公開されていますね.

build JP240110 (2024/1/10)

    [sdl] windowposition で起動時の位置を指定できるようにしました。
    Ctrl, Alt, Shift との組み合わせで一部のキーコードが正しくなかったのを修正しました。
    英語や日本語モードに切り替えた際に int 2fh ax=4f01h で返されるコードページが切り替わっていなかったのを修正しました。
    DPB (Drive Parameter Block) を正しく設定するよう修正しました。
    パレット設定を RGB 全ての値を設定した所で更新するよう修正しました。
    DOSBox SVN r4483 までの更新分を適用しました。
    DOSVAX Build 4483PS13 までの修正を適用しました。ただし PS/55 関連は適用していません。

……とのことです.
軟式様に感謝.


11038/11025 BQO00549  konno            Re^5: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/11 23:43 11036:めざらさんへのコメント
> 現時点では非公式版となっている2008年版の logsortw の存在を教えていただき,
> 実行してみたところ,ヘッダ不正問題は解決し,めでたく重複発言番号ありの
> エラーによって停止しました。(笑)

メールでのやりとりで、たまたまだったのですが、解決できたようでなによりです。

> さて,どうしようかな。
> それに絡んでと思われるログ破損(一部消失)もあるので悩み中。
> ログは固定されちゃっているので,ゆっくり考えればいいかな。

考えることは老化防止にいいですね。(^^;
私は全ログ検索出来てからは過去ログのアーカイブはこだわらなくなりました。
過去にやったことをなかなか思い出せなくなり、シナプスが繋がるよりも速く
全ログ検索で知りたい結果が出るので、もはやクラウドブレインです。
ブレインスモッグじゃないよ。(^^; タブン


11039/11037 BQO00549  konno            Re: DOSVAXJ3 240110 更新
( 1) 24/01/11 23:55 11037:めざらさんへのコメント
> 先月,わたしたちの要望を容れていただいた修正テスト版に,
> さらに改善が加えられた正式版として公開されていますね.

私、メールはしたのですが、コミュ力が悪すぎてなかなかうまく伝わらず、
結局掲示板を読んでいただいて対応していただいたのでした。
メールでは個人的な要望も出したりして、結局自己解決できたのですが、
相談に真摯に対応いただけたのがうれしかったです。

> 軟式様に感謝.

私も感謝、感謝です。


11040/11025 CXB00940  としき           Re^5: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/12 18:32 11036:めざらさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> それに絡んでと思われるログ破損(一部消失)もあるので悩み中。

ログの一部消失って、何とかなりました?
いや、一瞬だけ野ざらしに何やら書かれていたようですが、現在では削除済みの
ようなので。
なくなったのがどこかにもよりますが、その気になれば、野ざらしに具備されている
スパム対策用の強烈ログから復帰できる部分があるかもしれません。


11041/11025 DGF01024  めざら           Re^6: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/13 09:03 11040:としきさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
あらっ,見られちゃってますね。(笑)
こちらに書くのも変なのですが,流れということでご勘弁ください,konnoさん。

ログをソートしてみたら,3882番から3909番が消失していることに気付いたのですね。
対応する時期としては 2011年のあの大震災の直前にあたる時期だったため,
1個以上のスレッドを現行ログから過去ログに移動するタイミングで,
震災に起因する突然の停電などに巻き込まれたに違いないと思いました。
Internet Archive にも前後数年が保存されておらず,スレッドのタイトルも不明。

ところがですね,手元の古〜いバックアップに残っていたのですよ。
そのバックアップが2012年2月の現行ログのバックアップだったので,
震災などの影響はまったくなかったと考えられるわけです。
そんなわけで消失告知を削除したという経緯です。

いやぁ,バックアップって取っておくものですね。

そもそもバックアップを日々保存していた理由が,
スパムが書き込まれたときに直前バックアップで上書きすると超ラクチンだから。
そのためにも定期的にバックアップをしようとしようと改めて思った次第です。

それでも,現時点で過去ログが不備な状態なので,何とかしないと,
たとえ「気が向いて」も全ログ検索機能を取り込めないという状況なんですね。

11042/11025 CXB00940  としき           バックアップ
( 1) 24/01/13 10:50 11041:めざらさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> そもそもバックアップを日々保存していた理由が,
> スパムが書き込まれたときに直前バックアップで上書きすると超ラクチンだから。

うちの板塀も、同じ理由でまめなバックアップは取っていたのですがね。
目的が目的なんで、バックアップの保存場所は同一サーバー内。
つまり、サーバーマシンがお亡くなりになると一蓮托生。
なので、現在ではそれはやめて、定期的に、lacoocanの非公開エリアにバックアップ
しています。

> そのためにも定期的にバックアップをしようとしようと改めて思った次第です。

定期的に何かをしようと思ったら、コンピュータに仕事をさせましょう。
私は、Windows純正のタスクスケジューラに仕事をさせています。
コマンドラインからサーバにアクセスするftpスクリプトを書いて、それをバッチで
呼び出していますが、そのバッチをタスクスケジューラに登録しています。
これであとはタスクスケジューラの設定次第で、月に1回だろうが週に1回だろうが、
裏で自動的にお仕事をしてくださっています。


11043/11025 DGF01024  めざら           Re: バックアップ
( 1) 24/01/14 11:27 11042:としきさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
確かにタスクスケジューラを使うと手間がないのかもしれませんね。
うちの場合は,常時起きているPCがないのと,日常の必要性もないので,
書き込みのあったタイミングでバックアップすることで十分に思います。


11044/11025 CXB00940  としき           Re^2: バックアップ
( 1) 24/01/15 10:45 11043:めざらさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> うちの場合は,常時起きているPCがないのと,日常の必要性もないので,

ここがポイントか。
たとえば、週に1回、日曜の午前10時、とかに設定する。
普段の日曜なら午前10時にはPCを使っていない。
でも、ごくまれに、たとえばお天気の事情なんかで立ち上げていることもあるかも
しれない。
とすると、両方のアンド条件で、平均して月に1回のバックアップ達成、とか。
ここはあくまでも平均なんで、3週連続バックアップが行われたり、3ヶ月もの間
バックアップされなかったり、ということもおきえますが。
この辺、自分のPCの使い方と条件設定次第で、いかようにもできるかと。


11045/11025 DGF01024  めざら           Re^3: バックアップ
( 1) 24/01/15 18:59 11044:としきさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
実際の話。
常時起きているPCはないけれど,常時起こすことのできるPCはあります。
メインマシンは「休止状態」が有効なので,その気になれば制御可能です。
ただ,野ざらしの書込み頻度は五日に一度。
日常的に自動バックアップの必要性はないんじゃないかな〜


11046/11025 CXB00940  としき           Re^4: バックアップ
( 1) 24/01/16 18:44 11045:めざらさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
頻度の捕らえ方とか、まじめさが違うのかもしれない。
月に1度のバックアップでも頻繁だと感じるか。
週に1度でも、まれなことだと感じるか。
何らかのトリガを元に、必ずバックアップしないとまずいと思うか。
バックアップがないせいで復旧が困難を極めても、まぁいいかで済ませるか。

私自身は昔、PC-98でDOSのころは月に1回、HDDをフルバックアップしていました。
現在、Windowsになったら、フルバックアップなんて数年に1回。
堕落したものです。


11047/11025 DGF01024  めざら           Re^5: バックアップ
( 1) 24/01/17 13:33 11046:としきさんへのコメント
参照先:http://mezala.la.coocan.jp/
頻度はまぁ,痛い目に遭った回数の反映か,性格かというところでしょうか。
ただ,痛い目というのは忘れやすいことも確かで,それこそ命の危険とか,
命よりも大事なデータ(そんなものあるのか?)とかでないと……とも思えます。

バックアップって,ふつうは自分で時間をかけて作成したものをするもので,
要するに時間にかける保険ですね。カネで買えるものは正直どうでもいい。
……はずなのですが,年金生活ともなると,そうも言い切れないわけで。

実際の話。
定期的にバックアップしているのは,メインの NAS。
これには USB で HDD が繋いであり,毎日夜中に自動バックアップしています。
また,半月に一度くらいの頻度で,サブの NAS 及びサブのデスクトップに繋いでいる
USB 接続の外付け HDD の二箇所にフルバックアップしています。
(フルと言ってもエロ動画なんかのディレクトリは対象外ですが)

前者は疑似ミラーですが,後者ニ個所は追加バックアップ。
メインから削除されたものも残っています。
ある意味安心なのですが,容量逼迫の原因なので,管理が面倒です。
少なくとも重複ファイル検索ツールをときどき使う必要があります。
(ディレクトリ名を変更したり,移動したものは重複してゆく)

その一方で,日々作成しているデータファイルのバックアップは怠っている状態。
今回のとしきさんとのやり取りで,そこ何とかしようか……と自覚しました。
要するに,もっともバックアップしなければならないファイルを放置していて,
メインのラップトップが逝ったら数ヶ月分の作業が失われる可能性があるということ。
ここは自動化や習慣化を考えなければいけないでしょうね。
腰を上げるきっかけを作ってくださり,有難うございました。

11048/11048 BQO00549  konno            としきさんの msgview 完璧なツリー
( 1) 24/01/27 16:28 コメント数:1
今までとしきさんに何度も指摘されていた msgview 個別発言のツリーのバグですが
としきさんに私の msgview.cgi を見て頂き、修正していただきました。
おかげさまでツリー表示は完璧になりました。\(^^)/ ヤッタ-

としきさん、ありがとうございました。m(__)m


11049/11037 BQO00549  konno            DOSVAXJ3 240110 の画面モード切替時の挙動
( 1) 24/01/27 16:52 11037:めざらさんへのコメント
新しい DOSVAXJ3 は快適に使用していますが

>     [sdl] windowposition で起動時の位置を指定できるようにしました。

おそらくこれに関連していると思われる挙動に気が付きました。

起動時は設定どおりの位置に表示していますが、窓の位置を移動させて使っていると
CHEV US や VT などで画面モードを切り替えた時に、窓位置が起動時の位置に戻ってしまいます。
仕様なのかもしれませんが、私は画面モード変更時は、窓位置をキープしてほしいです。
みなさんはどうでしょうか。

一応軟式さんにメールしてみます。


11050/11037 DKM01189  鈴木康弘         Re: DOSVAXJ3 240110 更新
( 1) 24/01/27 18:25 11037:めざらさんへのコメント コメント数:2

 はじめまして。鈴木と申します。
 これまで使ってた32bitマシンが壊れたので、新しいWindowsマシンを、ソフマップ静岡店で物色。
 一番安いのが12000円台で64bitで、いそいそと買ってきました。

 しかし、衝撃だったのが、64bitマシンでは素DOSのパーテーションを作れないこと。(^_^;) VZを動かせないぞ..
 それでエミュレーター情報をあさり、ここで評判の DOSVAXJ3 をインストールしてみました。(今年の最新版)

 DOSVAX窓で簡単に、16bitのVZが動くことに感動!
 設定をなんにもいじらずにWindowsのIMEも使える!

 Windows7マシンにDOSパーテーションを作る作業は、これまで1日がかりでしたが、
 こんなに簡単にDOSとVZの環境を再現できるとは思わなかった..!

 ただし、キーボード配列をQWERTYでなくDVORAKJでDvorakにし、CapsキーをCtrlキーにし、かつIMEも動かそうとすると、どれとどれが喧嘩するのか、まだ思うように動きません。

 とりあえずDOSVAXJ3の作者さんと、改善に協力してこられた、ここのみなさんに感謝します。(_ _)
(他の選択肢、MS-DOS Player と VTDOS も、一応ダウンロードだけしましたが、まだ試していません。)

  20年前のNIFTYの人々はここに生き残ってみえたんですね...(^_^;

11051/11037 BQO00549  konno            Re^2: DOSVAXJ3 240110 更新
( 1) 24/01/27 20:48 11050:鈴木康弘さんへのコメント コメント数:1
鈴木康弘さん、はじめまして。
お名前は VZ会議室の初期からお見受けしていました。
私は 2002年1月5日が DCデビューの新参者ですので。(^^;

>  しかし、衝撃だったのが、64bitマシンでは素DOSのパーテーションを作れないこと。(^_^;) VZを動かせないぞ..
>  それでエミュレーター情報をあさり、ここで評判の DOSVAXJ3 をインストールしてみました。(今年の最新版)

みなさんDOS窓でずっとVZを使われていたんですね。
ここの掲示板も読んでいただいてありがとうございます。

>  DOSVAX窓で簡単に、16bitのVZが動くことに感動!
>  設定をなんにもいじらずにWindowsのIMEも使える!
>
>  Windows7マシンにDOSパーテーションを作る作業は、これまで1日がかりでしたが、
>  こんなに簡単にDOSとVZの環境を再現できるとは思わなかった..!

エミュレータでは DOSVAXJ3 が一番手軽にVZ環境を作れるのが良いですよね。

>  ただし、キーボード配列をQWERTYでなくDVORAKJでDvorakにし、CapsキーをCtrlキーにし、かつIMEも動かそうとすると、どれとどれが喧嘩するのか、まだ思うように動きません。

DVORAKJ というのは知りませんでした。キーボードへのこだわりは人それぞれなんですね。
キーが対応出来ない場合は DOSVAXJ3作者様にメールすれば対応してくれるかもしれません。

>  とりあえずDOSVAXJ3の作者さんと、改善に協力してこられた、ここのみなさんに感謝します。(_ _)

私も紹介されて触った初期のころはうまく動かなくてしばらく放置してました。(^^;
みなさんのおかげで劇的に進化したような気がします。ありがたいことです。

> (他の選択肢、MS-DOS Player と VTDOS も、一応ダウンロードだけしましたが、まだ試していません。)

MS-DOS Player でしか動かない DOSコマンドもあるかもしれないので、入れておくと吉です。(^_^)
VTDOSはフォントサイズや行数を自由に変えられるのが老眼には良いですね。(^^;
うまく動かない時は掲示板に気軽に書き込んでもらえばみんなで解決できると思います。

>   20年前のNIFTYの人々はここに生き残ってみえたんですね...(^_^;

そういえば来年Nifty会議室閉鎖から20年になるんですね。
VZマクロの膨大な資産は、めざらさんのところに沢山あります。宝の山です。
VZ会議室の過去ログも 文太さんやみなさんのおかげで完全体になりました。
これからもよろしくお願いします。


11052/11037 DGF01024  めざら           Re^2: DOSVAXJ3 240110 更新
( 1) 24/01/27 21:04 11050:鈴木康弘さんへのコメント
参照先:http://mezala.la.coocan.jp/
きゃ〜〜〜! 鈴木さん!!
昔は,耳而夢斎と称していためざらです。

お久しぶりです。m(_'_)m
何とも,お懐かしや……

11053/11048 CXB00940  としき           Re: としきさんの msgview 完璧なツリー
( 1) 24/01/28 13:58 11048:konnoさんへのコメント コメント数:2
参照先:http://toshiki.la.coocan.jp/
いやぁ、何とか動いてくれたようで助かりました。
一応、かなり複雑なツリー構造も含め、一通りの動作確認はしていますがね。
何せ、使ったデータが、うちの板塀のデータですから。
どんなチェック漏れがあるやら、想像もつきません。
というか、コードを書いた人が想像できないところにバグが忍び込むわけで。
そのうち、異常なパターンが発覚したら、そのたびに直すしか。
だって私、konnoさんのコードを読みきって修正したわけではなく。
正常な出力のallreadと異常なmsgviewを比較しただけなんで。
どういうロジックでツリーを出力しているのか、いまだによくわかっていない。
ま、動けば正義、というのはあるわけで。
とはいえ、動かないとき、だとか、動かなくなってしまったとき、のことを考えて
プログラミングしておいたほうが、いろいろと楽ができるとは思いますけど。
かつて、20年ぐらい前だったかな、同じ職場にいた人で、この人は楽をしたくない
のかな、わざと難しくなることを好んでいるのかな、マゾっ気があるのか? と
思わせられる人がいたことを思い出したりしました。

11054/11048 BQO00549  konno            Re^2: としきさんの msgview 完璧なツリー
( 1) 24/01/28 17:37 11053:としきさんへのコメント コメント数:1
としきさん

> いやぁ、何とか動いてくれたようで助かりました。

としきさんのチェックなら間違いないと思っていました。
ありがとうございました。

> 一応、かなり複雑なツリー構造も含め、一通りの動作確認はしていますがね。
> 何せ、使ったデータが、うちの板塀のデータですから。
> どんなチェック漏れがあるやら、想像もつきません。

なるほど、人任せではなく自分でもチェックはした方がいいということですね。
お送りいただいた msgview3.cgi と自分の wforum.cgi で比較してみました。
wforum.cgi
		($no,$re,$lx,$sub,$eml,$url,$nam,$dat,$msg,$lt,$ho,$pw,$wrap,$oya,$sml,$com) = split(/<>/);
		$j++;
		if ($in{'oya'} == $oya) { push(@new,$_); 

msgview3.cgi
		($no,$re,$lx,$sub,$eml,$url,$nam,$dat,$msg,$lt,$ho,$pw,$wrap,$oya,$sml,$com) = split(/<>/);
		if ($in{'oya'} == $oya) { push(@new,$_); 
			$j++;

うげ、$j++; の位置が分岐前から分岐後になってる!!
他にも $mx=0; が追加されたり "}" の位置が、if の前になったりしていますね。
違いはこのくらいでしょうか。

実は昨日から STIME.EXE のソースを弄っていたのですが、うまく動かなくて・・・
色々調べたら、変数の設定を if 分岐の前にやっていたのが原因でした。(>_<)
どうやら私は分岐で躓く傾向があるようです。

> とはいえ、動かないとき、だとか、動かなくなってしまったとき、のことを考えて
> プログラミングしておいたほうが、いろいろと楽ができるとは思いますけど。

メールで言っていた、インデントや不要なコメントなどですね。
これからは気を付けるようにします。

> かつて、20年ぐらい前だったかな、同じ職場にいた人で、この人は楽をしたくない
> のかな、わざと難しくなることを好んでいるのかな、マゾっ気があるのか? と
> 思わせられる人がいたことを思い出したりしました。

うう、私のソースってそんなふうに見えているのですか・・・ (;_;)


11055/11048 CXB00940  としき           Re^3: としきさんの msgview 完璧なツリー
( 1) 24/01/28 20:01 11054:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
実は私自身、$mxの初期化漏れってそんなに影響があるとは思っていませんでした。
でも、なんかうまく行かなかったので、わりと早い目に追加しました。
そして、$jは配列の添え字。
配列を設定する側で添え字のインクリメントが間違っていたため、配列を読み出す
部分で配列の正しい位置にアクセスしてもデータが取り出せず、未定義の情報で
条件判断するはめになってしまい、"┃"と空白のどちらを出力するかという部分が
うまくいっていなかったのでした。

> メールで言っていた、インデントや不要なコメントなどですね。

不要なコメントの部分、あれはほんと、まるで迷彩のような。
軍事用語でもありますが、私がコードを読んだ第一印象は、マージャン漫画での
この言葉。そして、SFへのマジレスでよくある、透明人間は回りを見ることが
できないとの説から、光学迷彩を放った本人(konnoさん自身)が迷彩にやられて
しまった、という感じも受けました。

インデントのほうはねぇ。こちらはちょっと長くなります。
これは、コーディングスタイルとかいって、スタイル、つまり美学の領域。
美学って確か、文太先生の専門だったような気もする。
それはさておき。
たとえば、最近のkonnoさんのBASICのコード。
最近いじった部分がわかるほうが良い、と思う人なら、昔のコードの部分は行番号
があって大文字、最近いじった部分は行番号無しで小文字にする、とか。一方で
統一感があったほうが美しいと思う人なら、全て大文字で行番号つきに統一、と
いろいろな考え方があるわけです。
でも、どの立場に立とうが、プログラムの論理構造、つまり順次・選択・反復と
いった構造をわかりやすくするためには字下げしかありません。既に30年以上
前から、これは当たり前のこととされています。昭和60年ごろに書かれた本には
「いまや字下げをしないプログラマは・・・」などという記述があったりします。

えぇと、いい機会だから書いてしまおうかな。
上記の本の紹介。#10398でも書いていますね。

林晴比古著「BASICによるプログラミングスタイルブック」
ISBN4-930795-28-1
定価1800円
昭和60年12月25日初版発行

私の持っているのは昭和61年11月の第4刷。
この本が出る2年位前からOh!PCに掲載されていたものがまとめられたのですがね。
この本が出た前後で、Oh!PCに掲載されるサンプルコード、特に学習用の講座などの
コードはみんな、なだれを打って、という感じで、読みやすいコードになりました。
その後、ベーマガのコードはあまり変わったようには見受けられませんでしたが、
ASCIIやI/Oのコードは、数年後には少し変わったかも。


> うう、私のソースってそんなふうに見えているのですか・・・ (;_;)

ま、私がとりわけぐうたら、と言うのもありますが。
プログラムを作るのって、結果が欲しいから作るものだと思っております。
なので、過程は楽をしたい。つまり、デバッグは楽なほうがいいと思っています。
だけど、あのコードは、なんかわざわざデバッグそのものを楽しむためのコードの
ような。
「デバッグ楽しいなぁ〜(;_;)」という経験の多寡でも考え方は変わるかも。

11056/11037 DKM01189  鈴木康弘         DvorakJのこと
( 1) 24/01/28 21:48 11051:konnoさんへのコメント コメント数:1
 Dvorakキー配列はこうです。よく使うキーがほとんどホームポジションの下にあるので、鈴木は30年来これを愛用してます。

 ┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┌──
 ┃1!┃┃2@┃┃3#┃┃4$┃┃5%┃┃6^┃┃7&┃┃8*┃┃9(┃┃0)┃┃[{┃┃]}┃│
 ┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛└──
─┐┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┌
  │┃'"┃┃,<┃┃.>┃┃p ┃┃y ┃┃f ┃┃g ┃┃c ┃┃r ┃┃l ┃┃/?┃┃=+┃│ 
─┘┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛└
──┐┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┌──
    │┃a ┃┃o ┃┃e ┃┃u・┃┃i ┃┃d ┃┃h・┃┃t ┃┃n ┃┃s ┃┃-_┃│
──┘┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛└──
───┐┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┌───┐
 Shift│┃;:┃┃q ┃┃j ┃┃k ┃┃x ┃┃b ┃┃m ┃┃w ┃┃v ┃┃z ┃│    │
───┘┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛└───┘

 DOSVAXJ3上でも、Windowsのコマンドプロンプトでも、DvorakJを使って、Dvorak入力と、MSIMEも動くことは確認できました。

 ただ今日一日、DvorakJの設定保存の方法がわからん、と悩んでいました。
 まさかログインするたびに起動しなおして、設定をやりなおせってんじゃないだろうな、そんなばかな...
 素DOS上のDvorak.comはただ常駐させるだけでよかったのに。


  #11052
 あ、めざらさんは耳而夢斎さんでしたか。
 いまどきVz倉庫の管理を続ける人なんて、誰だろうと思ってました。



11057/11048 BQO00549  konno            Re^4: としきさんの msgview 完璧なツリー
( 1) 24/01/28 22:48 11055:としきさんへのコメント コメント数:1
> 実は私自身、$mxの初期化漏れってそんなに影響があるとは思っていませんでした。
> でも、なんかうまく行かなかったので、わりと早い目に追加しました。
> そして、$jは配列の添え字。
> 配列を設定する側で添え字のインクリメントが間違っていたため、配列を読み出す
> 部分で配列の正しい位置にアクセスしてもデータが取り出せず、未定義の情報で
> 条件判断するはめになってしまい、"┃"と空白のどちらを出力するかという部分が
> うまくいっていなかったのでした。

うう、やっぱり基本がわかっていないとこういうミスを出しやすいのですね。
今回 BASICでも同じようなところで躓いて直すのにえらく時間がかかってしまいました。

> 不要なコメントの部分、あれはほんと、まるで迷彩のような。
> 軍事用語でもありますが、私がコードを読んだ第一印象は、マージャン漫画での
> この言葉。そして、SFへのマジレスでよくある、透明人間は回りを見ることが
> できないとの説から、光学迷彩を放った本人(konnoさん自身)が迷彩にやられて
> しまった、という感じも受けました。

私も義体化が進んできたので、バトーのようになるのでしょうか。(違)
BASICではコメントを緑に表示しているので、マジで迷彩服のようになってます。(^^;

> 上記の本の紹介。#10398でも書いていますね。
> 林晴比古著「BASICによるプログラミングスタイルブック」

うう、いまさら聞けないBASIC みたいに微妙な・・・ 見かけたら読んでみたいですね。(^^;

> だけど、あのコードは、なんかわざわざデバッグそのものを楽しむためのコードの
> ような。
> 「デバッグ楽しいなぁ〜(;_;)」という経験の多寡でも考え方は変わるかも。
       ↑     ↑
ククッ、、思わず吹いてしまいました。
まさに私のことを的確に言い当てているような。(^^;


11058/11037 BQO00549  konno            Re: DvorakJのこと
( 1) 24/01/28 23:05 11056:鈴木康弘さんへのコメント コメント数:1
>  Dvorakキー配列はこうです。よく使うキーがほとんどホームポジションの下にあるので、鈴木は30年来これを愛用してます。

おお、キーボードの絵が凄い! 全然違う配列になるんですね。

>  DOSVAXJ3上でも、Windowsのコマンドプロンプトでも、DvorakJを使って、Dvorak入力と、MSIMEも動くことは確認できました。
>  ただ今日一日、DvorakJの設定保存の方法がわからん、と悩んでいました。
>  まさかログインするたびに起動しなおして、設定をやりなおせってんじゃないだろうな、そんなばかな...

私は使ったことが無いので設定方法はわからないですが、ネット検索では Win10で使う方法などが出ていますね。

>  素DOS上のDvorak.comはただ常駐させるだけでよかったのに。

これは、DOSVAXJ3 の中で動作するのでしょうか。
お役に立てなくて申し訳ないです。

>  いまどきVz倉庫の管理を続ける人なんて、誰だろうと思ってました。

30年前のDOSソフトを使い続けている時点で我々は極少数派、天然記念物かもしれませんね。(^^;
でもそれが楽しくてやめられないのです。(^^;


11059/11048 CXB00940  としき           Re^5: としきさんの msgview 完璧なツリー
( 1) 24/01/29 01:43 11057:konnoさんへのコメント コメント数:2
参照先:http://toshiki.la.coocan.jp/
追伸というか。
きちんと理解できていないというのもあって。
もしかしたら、$mxの初期化って、それほど重要ではないかもしれない。
ただ、少なくとも、allreadのほうでは初期化してあったような。
それに、初期化しておいて害になることもないし。

> > 上記の本の紹介。#10398でも書いていますね。
> > 林晴比古著「BASICによるプログラミングスタイルブック」
> うう、いまさら聞けないBASIC みたいに微妙な・・・ 

私には、文体が引っかかるんですよ。
ただ、この時代のコンピュータの本を書く人って、特徴的な文体の人が何人かいて。
もう一人、ナツメ社あたりからアセンブラか何かの本を出していた人で、どうにも
文体が肌に会わなかった人がいたような記憶もある。
さて。
よく見たらタイトルが微妙に違う。
「BASICによるプログラミング・スタイルブック」
と、中黒があるのが正解。
章立ては

STEP1 基本を知る
STEP2 型にはめる
STEP3 サブルーチンの整理
STEP4 視点を変える
STEP5 工夫に、工夫を

となっている。中身に文法解説はほとんどない。
章の中の各節は、抜粋ですがたとえば

1 BASICの能力を見直そう
5 字下げをしよう
9 意味のわかる変数名にしよう
12 ブロック構造にしよう
15 マルチステートメントは上手に使おう
16 空白を入れよう
19 行番号をそろえよう

といった項目が46個あり、各節の中でそれぞれ根拠と共に例示がなされている。
当時の普通科高校生でも十分読める文章でしたから、文章としては今なら中学生
にも理解できると思う。いや、BASICのほうを解説してやらんとダメか。


さて、それでは、ちょっと一休みして。
つぎはいよいよ、konnoさんご希望の、掲示板検索ルーチンに取り掛かってみますか。
って、いつ開始するか全くめどは立っていませんが。


11060/11037 DKM01189  鈴木康弘         Re^2: DvorakJのこと
( 1) 24/01/29 07:24 11058:konnoさんへのコメント コメント数:3

> >  素DOS上のDvorak.comはただ常駐させるだけでよかったのに。
>
> これは、DOSVAXJ3 の中で動作するのでしょうか。
> お役に立てなくて申し訳ないです。


 いえ、これが動くのはWindows98付属の(Win98起動用の)MS-DOSです。
(僕が素DOSと呼んだもの)

 素MS-DOSでならdvorak.comでDvorak配列にできますが、
・dosvaxj31では、インストールされたふりをして無効、
・MS-DOS Player と VTDOS は、"This machine may not support Int15h ah=4Fh" と表示して使えませんでした。

 それで、Windows上で動くDvorakツールでないとだめだなと、DvorakJを見つけてあれこれやってたのです。



11061/11048 CRG00666  文太             Re^6: としきさんの msgview 完璧なツリー
( 1) 24/01/29 11:46 11059:としきさんへのコメント コメント数:1
 ククッ、、思わず吹いてしまいました。
 会話の意味がまったく分からない。これが日本語であることは認知して
おりますが。

 それより、おお、そんな会話があったのか、1年ちょっと前。すごい
記憶力 >としきさん。もちろん、検索したのは分かりますが。
 というわけで、 林晴比古著『BASICによるプログラミング・スタイルブック』
を図書館で探してみましょう。(注)

解説:まったく本腰が入ってませんが、僕は BASIC に興味をもっている
のですね。だから、この前のオフ会にも岡田元治さんの BASIC コンパイラの
マニュアル・プリントアウトを持って行ったのです。「ハノイの塔」の
コード・プリントアウトとともに。

 学習は「ハノイの塔」とは何か? から始まる予定。まだ始まらない……。

>小さい円盤の上に大きいものを重ねることはできない。 [補説]フランスの数学者
>リュカによって1883年に考案された。 発売時に、アジアに伝わるパズルという
>架空の設定で宣伝されたため名付けられた。

 という語源だそうです。ベトナムはベトナム戦争の前までフランスの
植民地でした。日本もほぼ瞬間的に植民地化しましたけれど。
 ああ、インパール作戦。

konnoさん、
 konnoさんのお祈りのおかげで、例の地獄の作業、あの日のうちに終わりました。
いまは次の修羅場に備えております。ふらっふらになった記憶は新しいのですが、
そのとき、ちゃんと konnoさんに感謝し、お祈り返しもいたしました。m(__)m

鈴木康弘大先輩、
 お初です! いらっしゃいませ!!! Win7マシンでパーティション切り、DOS
(FAT16)ドライブ!!! やるぅ。
 「Vzマクロほんとの入門」の作者さんですよね!!! お世話になりました。

 江戸地方、今日は晴れです。(う、孝義さんだった。弟さん?)


(注)しかし、こういうのばっかですねぇ、>己。_Software Tools in Pascal_は、
Vz黒本の隣に鎮座している。ここから1メートル以内。


11062/11048 BQO00549  konno            Re^6: としきさんの msgview 完璧なツリー
( 1) 24/01/29 15:41 11059:としきさんへのコメント
> もしかしたら、$mxの初期化って、それほど重要ではないかもしれない。
> ただ、少なくとも、allreadのほうでは初期化してあったような。
> それに、初期化しておいて害になることもないし。

変数の初期化は最近の速いCPUでは特に必要かもしれませんね。
初期化してないせいでタイミングが狂い挙動がおかしくなることもありそうで。

> よく見たらタイトルが微妙に違う。
> 「BASICによるプログラミング・スタイルブック」
> と、中黒があるのが正解。

内容の紹介を見て、読んでみたくなりました。
ちょっと前までは本を読む気にもならなかったのが、目が復活したら読書欲も復活?

> さて、それでは、ちょっと一休みして。
> つぎはいよいよ、konnoさんご希望の、掲示板検索ルーチンに取り掛かってみますか。
> って、いつ開始するか全くめどは立っていませんが。

おお、期待しています。(^_^)
ログ形式が同じならそのまま動くのではないかと思っています。


11063/11037 BQO00549  konno            Re^3: DvorakJのこと
( 1) 24/01/29 16:00 11060:鈴木康弘さんへのコメント
>  素MS-DOSでならdvorak.comでDvorak配列にできますが、
> ・dosvaxj31では、インストールされたふりをして無効、
> ・MS-DOS Player と VTDOS は、"This machine may not support Int15h ah=4Fh" と表示して使えませんでした。

なるほど、Int 15/AH=4Fh は、ブラウンデータでは

Int 15/AH=4Fh - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)

インターセプトって横取りするという意味ですかね。
どのエミュも対応していませんでしたか。残念。
どうしても必要であれば、エミュ作者様にメールしてみれば、検討してもらえる余地はあるかと思います。

>  それで、Windows上で動くDvorakツールでないとだめだなと、DvorakJを見つけてあれこれやってたのです。

逆に DOS窓だけ Dvorak キーだと、混乱しそうな気がするのは素人考えなんでしょうね。(^^;


11064/11037 CXB00940  としき           Re^3: DvorakJのこと
( 1) 24/01/29 16:08 11060:鈴木康弘さんへのコメント
参照先:http://toshiki.la.coocan.jp/
キーボード関係は昔、ちょっとだけ手を出したことがあります。
といっても、ドボラックは憧れだけ。
親指シフトには20代前半にまじめに取り組んだけど、結局挫折。
でも、自分は挫折したくせに、他人には薦めていたりするけど。
だって、理論的には、入力速度がものすごく向上するから。
同じ理由で、英文の入力速度が向上するドボラックは、どこぞの英語の先生に
お薦めしたことがあるようなないような。

それはさておき。
ほとんどのDOSのエミュレータは、Windowsからキーをそのままもらっています。
なので、IMEとかキー配列は、Windowsで設定することになっているというか、
Windowsのドライバ設定が有効のはず。
ただ、DOSVAXはデフォルトではAT互換機ではなくAX互換機のエミュレータだった
はず。なので、この辺の設定をいじれば、もしかしたらキーのバインドがうまく
通るようになるかもしれません。
つまり、Windows側でのキーボード設定をそのままもらえるようになる、という意味。
キーボードのハードウェア的な押下信号をそのままアプリ(エミュレータ側)で
解釈するということはほとんどないはずというか、Windowsアプリではえらくお行儀
が悪いソフトということになるので、やらないと思うんですよね。すなわち、システム
(Windows)からもらった入力をリマッピングしている、というのが素直なつくり。

Windows側で、例えばメモ帳ならドボラックになっているのなら、エミュレータでも
ドボラックにするのはもう一息なはずです。


11065/11037 BQO00549  konno            Re^3: DvorakJのこと
( 1) 24/01/29 19:22 11060:鈴木康弘さんへのコメント コメント数:1
鈴木康弘さん

> > >  素DOS上のDvorak.comはただ常駐させるだけでよかったのに。
> > これは、DOSVAXJ3 の中で動作するのでしょうか。
> > お役に立てなくて申し訳ないです。
>  いえ、これが動くのはWindows98付属の(Win98起動用の)MS-DOSです。
> (僕が素DOSと呼んだもの)

この DOS用の Dvorak.com はネットでダウンロード出来るものですか?
参考のために見てみたいと思ったもので。


11066/11048 CXB00940  としき           Re^7: としきさんの msgview 完璧なツリー
( 1) 24/01/30 12:45 11061:文太さんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
>  学習は「ハノイの塔」とは何か? から始まる予定。まだ始まらない……。

「ハノイの塔」って、再帰のサンプルとしては非常に有名。
プログラム初心者に再帰を説明するのは「ハノイの塔」かフィボナッチ数列か、
というくらい。再帰を使ったほうがシンプルなものって、実生活ではあまり
見かけませんからね。
また、再帰でできるものは必ずループでもできるらしい。
なので、再帰からループへコードを変更するための題材にも使われるらしい。
で、ループならどうということもないのですが。
8ビットパソコンの時代のBASICでは、再帰というものが使えませんでした。
なので、そこでわざとループを使わず、いかに擬似的な再帰を実現するか、という
のも、ちょっと気取ったプログラマたちの力試しの例題に使われていたりして。
ま、再帰が使えない、という意味ではVzのマクロも同様。
だけど、Vzのマクロでも「ハノイの塔」はしっかりあるわけで。
結局、アルゴリズムなんて、どんな言語で実現しようが大差はないはず。
もちろん、向き不向きはあるでしょうが。


11067/11037 DKM01189  鈴木康弘         Re^4: DvorakJのこと
( 1) 24/01/30 22:23 11065:konnoさんへのコメント コメント数:1
 
> この DOS用の Dvorak.com はネットでダウンロード出来るものですか?
> 参考のために見てみたいと思ったもので。

 昔NIFTYでダウンロードしたものです。タイムスタンプは 92-5-29 作者はNIFTY QFH01025     bincnchanさん。メールします。


11068/11037 DKM01189  鈴木康弘         Re^5: DvorakJのこと
( 1) 24/01/30 22:38 11067:鈴木康弘さんへのコメント コメント数:1
 あれ?konno@nifty.comじゃだめなのかな?メールが帰ってきてしまった..。

11069/11037 BQO00549  konno            Re^6: DvorakJのこと
( 1) 24/01/30 23:00 11068:鈴木康弘さんへのコメント コメント数:1
>  昔NIFTYでダウンロードしたものです。タイムスタンプは 92-5-29 作者はNIFTY QFH01025     bincnchanさん。メールします。

あ、niftyのライブラリでしたか.

>  あれ?konno@nifty.comじゃだめなのかな?メールが帰ってきてしまった..。

私のメールはこの発言の名前をクリックすれば出ると思います。
アンダーバーがあるんですよね。(^^;


追記

あれ? メールを表示にしたら新着情報がおかしくなってしまいました。
名前欄のメールは非表示にしますね。

konno_  +  @nifty.com    です。

11070/11070 BQO00549  konno            DOSVAXJ3 240130 更新
( 1) 24/01/30 23:22 コメント数:1
DOSVAXJ3 240130版が更新されました。
以下更新内容です。

build JP240130 (2024/1/30)
[sdl] windowposition の位置指定が画面モード変更でも有効になっていたのを修正しました。


想像ですが、windowposition は本来画面モード設定時の位置情報なのでしょうね。
私の使い方では起動時のみ指定した位置に固定されているほうがありがたいです。
作者様に感謝です。


11071/11037 DKM01189  鈴木康弘         DvorakJはやめて、AutoHotKeyでDvorak
( 1) 24/01/31 06:49 11069:konnoさんへのコメント コメント数:1
> konno_  +  @nifty.com    です。

  おはようございます。今度はkonnoさんにメールは届いたかな。

 結局、DvorakJという、ちょっと使いにくいソフトはやめて、AutoHotKey という、もっと汎用性のあるキー切替ソフトでDvorak配列にしました。

 設定ファイルは以下。Windows上でこのファイルをクリックすればキーボードはDvorak配列になります。 これをスタートアップフォルダに入れておけばいいわけだ。

----------------------------
#Requires AutoHotkey v2.0

q::'
w::,
e::.
r::p
t::y
y::f
u::g
i::c
o::r
p::l
;@::/
@::@
;[::=


;a::a
s::o
d::e
f::u
g::i
h::d
j::h
k::t
l::n
`;::s
sc28::-		;	sc28 = :
]::\

z::`;
x::q
c::j
v::k
b::x
n::b
;m::m
,::w
.::v
/::z
sc73::Send "+@"	;	sc73 = \ , "+@" = `

;1::1
;2::2
;3::3
;4::4
;5::5
;6::6
;7::7
;8::8
;9::9
;-::[
;^::]

;-----------------------------
; Modifier Key
; 
; # Win
; ^ CTRL
; + SHIFT
; ! ALT
;
;-----------------------------

+q::"
;+[::+

+sc28::_	;	sc28 = :
;+]::|

+z:::
+sc73::~	;	sc73 = \

;+1::!
;+2::@
;+3::#
;+4::$
;+5::%
;+6::^
;+7::&
;+8::*
;+9::(
;+0::)

; 以下はCTRL KEY。つまりCTRLキーを押した場合はQWERTYのまま。
; もっとスマートに書けそうな気がする。(^^;)


^[::^[
^]::^]
     
^'::^'
^,::^,
^.::^.
^p::^p
^y::^y
^f::^f
^g::^g
^c::^c
^r::^r
^l::^l
^/::^/
^=::^=
     
^o::^o
^e::^e
^u::^u
^i::^i
^d::^d
^h::^h
^t::^t
^n::^n
^s::^s
^-::^-
     
^`::^`
^q::^q
^j::^j
^k::^k
^x::^x
^b::^b
^m::^m
^w::^w
^v::^v
^z::^z

;end of dvorak.ahk
----------------

 Windows上のソフトも、VTDOS窓も、MS-DOS playerも、これでDvorak配列になってくれました。

 しかし、なぜか、DOSVAXJ3だけは、英語のままで打つとDvorakになってくれない。
(IMEでの日本語入力はDvorakになってくれます。不思議。)

 QWERTYUIOP ASDFGHJKL ZXCVBNM のQWERTYキーボードが、
 :,.PYFGCRL AOEUIDHTN ;QJKXBM のDvorakになってほしいのに
 'WVLFUIJPN AR.GCEDYB S:HTQXM に、IMEがoffだとなってしまいます。

 何バイトずれてるとか、規則性もないみたいだし?
 当面DOSVAXJ3内では、Dvorakで英語文は書かないことにしよう。(もともと書かないって。)

11072/11037 BQO00549  konno            Re: DvorakJはやめて、AutoHotKeyでDvorak
( 1) 24/01/31 14:15 11071:鈴木康弘さんへのコメント コメント数:1
>  おはようございます。今度はkonnoさんにメールは届いたかな。

おはようございます、私は宵っ張りなのでもう昼過ぎですね。(^^;
メールはいただきました。ありがとうございます。

>  結局、DvorakJという、ちょっと使いにくいソフトはやめて、AutoHotKey という、もっと汎用性のあるキー切替ソフトでDvorak配列にしました。

より良いものが見つかったならなによりです。
メールの返信にも書きましたが、あらためて報告します。


いただいた DVORAK.COM を DOSVAXJ3 に入れてみました。
結果としては、動作したみたいです。

DOSVAXJ3 のVZで、"v" を打ったら、"k" が表示されました。
これはキー配列が DVORAK に変わったのだと思います。
私は DVORAK の配列を知らないのでこれだけで止めました。(^^;

設定は、dosboxj.conf の [autoexec] セクションに

path=c:\ut;c:\hx;%path%;
DVORAK.COM

これだけです。
PATH の通ったディレクトリに DVORAK.COM を入れておく必要があります。
VTDOSも、MS-DOS playerも試しましたが、DVORAK.COM は常駐しなかったようです。

DVORAK.COM はアセンブラで作られているようですね。
逆汗で覗いてみたいと思います。(^^;


11073/11037 DKM01189  鈴木康弘         Re^2: DvorakJはやめて、AutoHotKeyでDvorak
( 1) 24/01/31 19:58 11072:konnoさんへのコメント コメント数:1
> いただいた DVORAK.COM を DOSVAXJ3 に入れてみました。
> 結果としては、動作したみたいです。
>
> DOSVAXJ3 のVZで、"v" を打ったら、"k" が表示されました。
> これはキー配列が DVORAK に変わったのだと思います。

 あ、そうでした。
 DOSVAXJ3では、DOSのdvorak.comをインストールすると、英語入力ではDvorakになります。
 でもIMEで日本語を書こうとすると、QWERTYのままで、だめだこりゃ、と思ったのでした。

11074/11048 CRG00666  文太             Re^8: としきさんの msgview 完璧なツリー
( 1) 24/01/31 20:21 11066:としきさんへのコメント コメント数:2
としきさん、

 詳細にありがとうございます。もともと「再帰」を狙ってあのサンプルを
選んだわけではなくて、単に「BASIC って読みやすいね。英語じゃん」という
だけだったのですが、この際ですから、「再帰」と「ループ」がどう違うのか
分かってやろうじゃないの、という気分になっています。
 多謝です。

 とはいえ、もうちょい待って。次々いろいろ起こるのですよねぇ、、、。
とほほ。

 ま、岡田元治さんのコンパイラに通るコードは、構造化もできるし、
「再帰」もできるし、十分にモダンなもの、ということですね。
 あ、マニュアルにね、FortranとかPascalとか出てきて(もちろん、
過去と歴史の話として)、そしてCは出てこなくて、そうですかぁ、よい
ですねぇ、その語り口というものでした。
 まったく無駄話をしない学者肌な方ですが。

 行くぞ、ハノイ! 3月あたり。「ハノイへ行ってみよう!」とかいう
タイトルで、少しは勉強してから、再帰いたします。

 ありがとうございます。

 そうそう、BASIC のユーザ変数に「型」がある、そのトークンがある、
というけっこう前の解説にも感謝していました。重ねてありがとうございます。

 血糖値(糖尿)のあとは、胃がんか? やれやれ。
 長生きするぞ!



11075/11037 DKM01189  鈴木康弘         Re^3: DvorakJはやめて、AutoHotKeyでDvorak
( 1) 24/01/31 20:59 11073:鈴木康弘さんへのコメント コメント数:1
>  DOSVAXJ3では、DOSのdvorak.comをインストールすると、英語入力ではDvorakになります。
>  でもIMEで日本語を書こうとすると、QWERTYのままで、だめだこりゃ、と思ったのでした。
と書いていて、はっと気がつく僕。

 僕は素DOSのautoexec.batで、dvorak.comが自動的に常駐するようにしてました。
 DOSVAXJ3でも、立ちあげると自動的にdvorak.comを常駐するようにautoexecを設定してました。

 このdvorak.comの常駐をはずして、AutoHotKeyだけ動かせば...

 そのとおり、DOSVAXJ3は、英語入力でちゃんとDvorak入力になりました。
 #11071 に書いた現象は、AutoHotKeyに加えてdvorak.com を常駐して、二重にキーを変えたのが原因でした。ちゃんちゃん。

 DOSVAXJ3の作者さん、あらぬ疑いをかけてごめんなさい。


11076/11037 BQO00549  konno            Re^4: DvorakJはやめて、AutoHotKeyでDvorak
( 1) 24/01/31 21:41 11075:鈴木康弘さんへのコメント
>  DOSVAXJ3でも、立ちあげると自動的にdvorak.comを常駐するようにautoexecを設定してました。
>  このdvorak.comの常駐をはずして、AutoHotKeyだけ動かせば...
>
>  そのとおり、DOSVAXJ3は、英語入力でちゃんとDvorak入力になりました。
>  #11071 に書いた現象は、AutoHotKeyに加えてdvorak.com を常駐して、二重にキーを変えたのが原因でした。ちゃんちゃん。

なるほど、それで

>  何バイトずれてるとか、規則性もないみたいだし?

こうおっしゃっていたのですね。
謎が解けてよかったです。


11077/11048 CRG00666  文太             『スタイルブック』
( 1) 24/02/01 11:16 11074:文太さんへのコメント コメント数:1

 どうでもよい追記です。書くのを忘れていました。少し古い話。
 近場のも都立のも、図書館にはありませんでした。PC関係の古い本って
わりと廃棄される可能性が高いような印象。
 というわけで、いちおう古書店をサーチ。ビンゴ! 送料込み \1220 。
 こうして、書庫の肥やしが、いえ、さらなる幸福コレクションがもう1冊、
本棚に追加される予定です。今日か明日には、着くのではないかしら。
 ま、どうでもよいことですが。



11078/11070 DGF01024  めざら           Re: DOSVAXJ3 240130 更新
( 1) 24/02/04 17:38 11070:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
有り難いですね.
こういうちょっとしたことが毎回だとストレスになってしまう可能性があるので,
実に嬉しい更新です。位置情報保存を要望してくださった konno さんにも感謝。


11079/11048 CXB00940  としき           Re: 『スタイルブック』
( 1) 24/02/05 18:20 11077:文太さんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 本棚に追加される予定です。今日か明日には、着くのではないかしら。

もう届いていそうですね。
ま、気が向いたら本文を読みましょう。
推理小説でもありませんから、結末から読まなくても大丈夫。
#おいこら
とりあえず、序文と目次くらいは読んでおいてもいいかも。
内容に対する批判はあったかもしれないけど、文体が合わない、というのは私くらい
のものでしょう。あ、でも、雰囲気が合わなくて上村さんの本に手を出さなかった、
というのはめざらさんでしたっけ。
そして、私の場合、文体ではなく内容のほうは、とても勉強になりました。
本文で作者は

> だから、筆者の書くプログラムは使用する言語がBASICだろうがCだろうがPascal
> だろうが、ほとんど同じスタイルをしている。

と書いていますが、私も、BASICだろうがPerlだろうがVzマクロだろうが、ほとんど
同じようなスタイルのプログラムになっています。この辺はまさに、この本からの
影響でしょう。


11080/11048 BQO00549  konno            ハノイを目指して
( 1) 24/02/05 23:23 11074:文太さんへのコメント コメント数:1
文太さん

>  行くぞ、ハノイ! 3月あたり。「ハノイへ行ってみよう!」とかいう
> タイトルで、少しは勉強してから、再帰いたします。

ハノイの塔の話題が出たので、見てみたら VZマクロと Turbo Basic のサンプルソースにありました。

Turbo Basic のはそのままコンパイルできて、USモードで実行出来ました。
プレート 17枚でも数秒で完了するほど高速で、目に見えないので ウエイトを入れました。
自分好みの改造が整ったら公開しようかな。?

VZマクロは、軟体にある田野村さんのマクロで、プレート12枚まで実行出来ますが、流石に遅いです。
枚数を 14枚まで増やしたり、高速化の改造をして、ある程度形になりました。
秒数の比較

		 オリジナル   	 改造
数n	回数i	W80*25	W136*35		W80*25	W136*35

12	4095	89秒	95秒		47秒	52秒
13	8191					112秒
14	16383					240秒

    ↑
1枚増えるごとに約2倍の回数というのが面白いですね。

さて、これらのマクロや BASIC(実行ファイルのみ)をアップしたら
文太さんの勉強にかえって邪魔になってしまうかな。(^^;


# タイトル変更した。これで安心。(^^;;


11081/11048 CRG00666  文太             Re^2: 『スタイルブック』
( 1) 24/02/06 17:20 11079:としきさんへのコメント コメント数:1
 ハノイへようこそ、じゃないな。
 手を動かさず、クチばっかり動かしている文太です。
 目で活字を追うだけの日常は、まだまだ続くのですが。
 あ、体ぜんぶを使って、雪かきはしましたよん。

 さてさて、良書だろうと思います。ちらちら眺めただけですが。

>私も、BASICだろうがPerlだろうがVzマクロだろうが、ほとんど
>同じようなスタイルのプログラムになっています。

 こうなるでしょうね、この抽象度の高さだと。
 えーと、あれだけ詳細に内容を紹介していたので、あ、わたくしに
買えと仰ってる、と誤解したのです。これは、konnoさんが勧められて
いる本でした。
 が、僕も楽しくよめそうですよ。BASICのコードを覚えながら。

 konnoさんが勧められている点とは違いますが(?)、−−ごめん
なさい、長すぎて引用できません >konnoさん−−、たとえば、
p.231。まあ、広義に文体と言ってもいいですが、この作者の読者
への姿勢みたいなのは、僕も鼻につきました。僕は、何かを伝える
人が偉そうなのは好きです。僕に何かを教えてくれる人はみな先生で、
「先生はいつも偉い、絶対的にエライ」と思っています。

 が、ここ、しつこい。「自己満足におちいり、自己陶酔にひたる」。
ここでお仕舞でいい。この上の段落も4行ぐらい削除したい。この
段落も残り全部カットしたい。説教がうるさすぎ、という印象ですね。
 具体的に中身のあることを語れ。

 ま、これも一度はまると、このムチが快感、となることもあるので、
こちらの気分次第という面もあろうかと思いますが。

 と、同調して批判的なことを書きましたが、これがなければ、という
気持ちです。ゆっくり3回読む価値はあるな、と思っています。

 本を手に取れる人にしか通じない書き方でごめんなさい。
 konnoさん、僕はちょっと時間がかかりそうですので、熱いうちに、
としきさんに借りてみましょう!

 田野村さんでしたか、そんな記憶がおぼろげにありましたが……。
 あの人、そういう本格的な王道を生きた人でしたね。
 が、僕の手、動かず。


11082/11048 BQO00549  konno            Re: ハノイを目指して
( 1) 24/02/06 23:52 11080:konnoさんへのコメント
タイトルに合わせてこちらにレスします。

ハノイの塔のマクロ関連情報を得ようとnifty会議室の過去ログを検索しましたら
としきさんの書き込みがありました。

> 18134/19000 PEB03250  としき           再帰マクロ
> (15)   01/03/24 00:49                     コメント数:2
> マクロで再帰を使う実験をしてみました。
> = フィボナッチ数
> 
> では、ついでにもう一つ。
> 昔、再帰が使えない N88-BASIC で使った、配列を擬似的なスタックとして使うと
> いう技をマクロで使ってみました。別にスタック領域が足りない訳でもないのだ
> から、素直な push pop でもいいと思いますが。
> = ハノイの塔

今回はソースは省略しますが、#11066 の としきさんの書き込みを思い出しました。

> プログラム初心者に再帰を説明するのは「ハノイの塔」かフィボナッチ数列か、
> というくらい。再帰を使ったほうがシンプルなものって、実生活ではあまり
> 見かけませんからね。
> また、再帰でできるものは必ずループでもできるらしい。
> なので、再帰からループへコードを変更するための題材にも使われるらしい。

23年前に実際にマクロコードを書いていたのですね。流石です。

> で、ループならどうということもないのですが。
> 8ビットパソコンの時代のBASICでは、再帰というものが使えませんでした。
> なので、そこでわざとループを使わず、いかに擬似的な再帰を実現するか、という
> のも、ちょっと気取ったプログラマたちの力試しの例題に使われていたりして。
> ま、再帰が使えない、という意味ではVzのマクロも同様。

この再帰というのが私はいまいち理解できていなくて。
BASIC で言えば、サブルーチンの中でそのルーチンの先頭に飛んで条件を満たすまで繰り返す。
みたいな感じでいいのかしら。
実際VZマクロでもそういう動作をしているように思いました。

としきさんのコード、わかりやすそうですね。
いつか使わせてもらうかもしれません。


11083/11048 CXB00940  としき           Re^3: 『スタイルブック』
( 1) 24/02/07 02:12 11081:文太さんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
雪は夜更けすぎに、雨へと変わるだろう、サイレ(以下略)

俺は何を歌っているのだ。
いやぁ、2月5日は深夜、23時ごろになって大雪も峠を越えて、みぞれか雨か、
というものが弱く降ってくるだけになったので、そこから雪かき開始。
だって、6日は日勤で出社しないといけないのだもの。
結局、1時間あまり汗を流して、自宅前の道路の雪は概ね撤去。
撤去した雪のほとんどは、自宅の庭に放り込みました。他に置く場所がないから。
多少は側溝にも押し込みましたけどね。
それから入浴して就寝は2時過ぎ。
だけど、夜通し続いた落雪の音がまるで爆撃のようで、一晩中まんじりとせず。
6日は普通に5時起きして、いつもより5分早く6時前には出社。眠い。
ちなみに、7日も日勤なので5時起き予定。
あぁ、掲示板に書き込んでる余裕なんてない。はず。
7日も眠そうだ。


それはさておき。

>  さてさて、良書だろうと思います。ちらちら眺めただけですが。

以前にも書きましたが、内容については、王道も王道。
重箱の隅はともかく、全体的には、あまり批判できない。

ところで、この本、雑誌連載をまとめたものです。
不定期連載みたいな形で、1年ぐらいに渡って書かれたものだったかと。
当然、読者からの感想みたいなものが編集部に届くわけですよ。
そんな中に「これはもはや宗教だ」みたいな内容が混じっていたことがあったらしい。
でも、決してそんな事はない。
他のえらい学者さんたちが唱えたことのBASICでの実装例をひたすら紹介しているだけ
の、単なる工学の本です。
ただ、対象とする読者層の設定には苦労したと思う。
だって、中身は大学の学部情報科の初級クラス。
だけど、実際にその雑誌を読んでいる人や読んでほしい人といったら、プログラムを
専門としていないけど業務命令その他でプログラムを作成するハメになった社会人
から小中学生まで、多岐に渡るわけです。そして、それら全ては素人前提。
いわば、英語の先生が、大学英文科で教えるような正当な文法を、小学生から社会人
までをすべて対象とする1冊の教科書を作る、みたいなもので、ある程度の無理が
発生するのは当然かもしれません。そして、そのしわ寄せとか作者へのプレッシャー
といったものが、どこかで発現してもおかしくはないと思います。
だけど、雑誌連載時も否定的な意見は届いたはずだけど、そこそこ少ないはず。
なぜなら、連載継続とか単行本出版という結果に至ったわけだから。
ということは、ある程度の成功と推測してもいいんでしょうね。

11084/11048 CRG00666  文太             Re^4: 『スタイルブック』
( 1) 24/02/08 00:27 11083:としきさんへのコメント コメント数:1
としきさん

 雪かきと落雪の爆撃への守り(寝れんぞ)、お疲れ様でした。
 すごいなぁ、その体力。うらやまし。

>他のえらい学者さんたちが唱えたことのBASICでの実装例をひたすら
>紹介しているだけの、単なる工学の本です。

 はい、「構造化は BASIC でも十分できる」という本ですね。
 「えらい学者さんたち」とは、クヌース、カーニハン、リッチー、
ダイクストラ、N・ヴィルトなんて人たちです。
 プログラミングって何? と思ったことのある人なら、聞いたこと
のある名前たち。
 王道。
 (僕的には、〔少し嘘かもしれないけど〕榊原さんがsyoさんに
教えていたことの反復、という印象でした。自己評価、高すぎかな?)

 僕としては、ここ3年くらい、楽しく考えてきたこと(Fortran, Pascal,
Ratforなどを題材に)が、きれいに整理されてるな、というのが
『プログラミング・スタイル』についての最初の感想でした。

>いわば、英語の先生が、大学英文科で教えるような正当な文法を、
>小学生から社会人までをすべて対象とする1冊の教科書を作る、
>みたいなもので、

 あまり良い比喩とは言えないかと愚考いたします。そんなの、まず
僕には無理で、嫌だ、そんな仕事、やらないからね、と言うような
問題設定。

 でも、初出雑誌が何だったか思い出せませんが、やっぱり
「プログラミングって何?」という興味と動機のある人たちが読者
だったんじゃないのかな、と想像します。
 「動いた、楽しい!」という経験がある人たち。

 おお、Cも出てきた。林先生、この時期にコンピュータの全体像を
把握されていらっしゃったのですね、と思いました。
 この本の初版は、「昭和60年12月」=1985年。僕の本は、
2刷(昭和61年)。僕が、将来まさかPC方面に関心をもつなんて、
夢にも思わなかった時代の本。

 すごい本ですね。自信はありませんが、色あせない本です。



11085/11048 CXB00940  としき           Re^5: 『スタイルブック』
( 1) 24/02/10 20:45 11084:文太さんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
>  あまり良い比喩とは言えないかと愚考いたします。そんなの、まず
> 僕には無理で、嫌だ、そんな仕事、やらないからね、と言うような
> 問題設定。

確かによい比喩ではないと思う。
でも、ならどう例えればよいかというと、あまり思いつかない。
文太さんは知っていると思うけど、私、あまり例え話が得意ではないので。

ちなみに、初出雑誌は、当時の日本ソフトバンク社の月刊「Oh!PC」。
当時のソフトバンクが出していた、いわゆる機種別誌というヤツですね。
広告によると、当時は他に
月刊「Oh!MZ」
隔月刊「Oh!FM」
季刊「Oh!HC」「Oh!55」
などといった雑誌が出ていたようです。
最初の掲載は1983年10月。本棚から引っ張り出してきました。
懐かしいですね。というか、しまいこまれず本棚にあると言うのがなんとも。
最初の掲載時は、まだその後が続くとは思われておらず、特集扱いでした。
あ〜、読み直しているうちにだんだん思い出してきた。
最初のうちは、それほど文体にも引っ掛かりを覚えなかったんですよ。
単なる、淡々とした文章だ、と言うだけで。
なので、単行本化されたときも大して加筆されていないという評判を聞いたもので、
なら雑誌掲載記事は全て持っているわけだからわざわざ買うには及ばないな、と判断
して、すぐには購入しなかったのですよ。ただ、やはり毎回大きいサイズの雑誌を
引っ張り出すよりは小さくまとまった単行本のほうがいいという判断で、最初に発売
されてから2〜3年ぐらいしてから購入したのでした。
だから、私の持っているのは昭和61年11月の第4刷。
たぶん、62年か63年になってから買ったはず。

上記、1983年10月号の目次をみると、以下のような記事があります。
まず、目次で特集の次に並んでいるのは、海外のCG展示会の記事。
次が「新作ゲーム画面集」。やっぱりみんな、ゲームが好きなんですよ。
ついで「超大型オリジナルプログラム第1部」としてPC-9801用の家計簿プログラム
が「パーソナルバランスシート」なる大仰なタイトルで載っている。
これは連載というより、複数回掲載の初回、という感じ。
そして「4つのBASICへの入門」というサブタイトルのついている講座。おそらく、
NECの各機種用のBASICの差異の解説まで踏み込もうとしているのではないかなぁ。
でも、このときはまだ第3回。
さらに「マシン語超入門講座」や「機械語熟語集」といった連載では8ビットのZ80が
対象。
「ミニフロッピーの活用法」という連載もあるけど、この号は番外編で、拡張メモリ
をフロッピー的に扱うソフトが掲載。ま、RAMディスクですね。しかも、これの対象は
8ビットパソコンであるPC-8001とPC-8801。他の号をみていないけど、この連載が
そもそも8ビットパソコン対象なのかも。
そして、ハードウェア工作の「PC工作入門」は、この号ではPC-9801用の記事だけど、
それまでの記事はみんな8ビットパソコン用だったらしい。
さらに、機種別のページも、取り上げられているのは8ビットマシンだけ。
つまり、業務にもバリバリ使える16ビットパソコンは、まだまだ黎明期。
この時期のこの雑誌が、ソフトウェア工学の、ある意味で理論的な記事を掲載すると
いうのは、少なくともニーズとしては顕在化していないはず。
というか、ミスマッチもいいところ。
また、商業的な意味では冒険というか、よく掲載に踏み切ったものだと思います。
そして実際、このときか2回目の掲載のときか、連載陣の一人がけんかを吹っかけた
というか婉曲に批判したけど、そもそもけんかにならず、逆にその人の連載が終了
するハメになっていたり。さすがに打ち切りではなく、最終回まで掲載されたけど。

ということで

> 「プログラミングって何?」という興味と動機のある人たちが読者
> だったんじゃないのかな、と想像します。

これはどうなんだろう。
konnoさんならあのころのベーマガとかの雰囲気を覚えているかもしれない。
みんな、いかに自分のアイディアを実装するかしか考えていないような感じ。
なので、その先、というか、どうすれば効率的にバグなく実装できるか、などという
ところまでは思い至っていないんですよ。
特にゲームなんかはある意味で一発勝負のようなところもあったし。


11086/11048 BQO00549  konno            Re^6: 『スタイルブック』
( 1) 24/02/10 22:48 11085:としきさんへのコメント コメント数:1
> > 「プログラミングって何?」という興味と動機のある人たちが読者
> > だったんじゃないのかな、と想像します。
>
> これはどうなんだろう。
> konnoさんならあのころのベーマガとかの雰囲気を覚えているかもしれない。

このころベーマガとか読んでいたかは覚えていませんが、BASICはやってましたね。
当時円弧と直線の交点だったかを求めるのに方程式がわからなくて困ってしまい
ポケコンのBASICで2分法というのを使って、それですました記憶があります。(^^;

> みんな、いかに自分のアイディアを実装するかしか考えていないような感じ。
> なので、その先、というか、どうすれば効率的にバグなく実装できるか、などという
> ところまでは思い至っていないんですよ。

まさにそのとおりで、プログラムを組めば仕事が楽になるという思いで必死でした。

パソピア16を見つけた時は、「こいつ、動くぞ」とつぶやきながらマニュアルをめくり
「武器はないのか」と見たら、BASIC で動いているのがわかり、自分でテキをやっつける
武器を作り、大危険に突入していったのでした。(^^;


11087/11070 BQO00549  konno            DOSVAXJ3 の キーマッピング
( 1) 24/02/13 00:24 11078:めざらさんへのコメント
DOSVAXJ3 では Ctrl+[F01] は Key Mapperに割り当てられていて
今まで それで運用していたんですが、もうどうにも我慢できなくなり
Mapper の起動キーを変更することにチャレンジしました。

DOSVAXJ3 の作者からいただいたメールの内容を以下に貼り付けます。

--------------------------------------------------------------

 ファンクションキーと Ctrl 等の組み合わせについては DOSBox の機能
に割り当てられており、そのままでは入力されません。
 Ctrl-F1 でキーマッパーを表示し、機能名をクリックして Del をクリッ
クすると機能を削除できます。詳しくは下記を参照してください。Clipboard
は DOSVAXJ3 独自機能です。
https://www.dosbox.com/wiki/Special_Keys
キー割当  機能名
Ctrl-F1   Mapper
Ctrl-F4   Swap Image
Ctrl-F5   Screenshot
Ctrl-F6   Rec Wave
Ctrl-F7   Dec Fskip
Ctrl-F8   Inc Fskip
Ctrl-F9   ShutDown
Ctrl-F10  Cap Mouse
Ctrl-F11  Dec Cycles
Ctrl-F12  Inc Cycles
Alt-F10   Clipboard
Alt-F12   Speedlock

--------------------------------------------------------------

Alt-F10 で Clipboard から張り付けが出来るのは良いですね。
Alt-F11 が空いているので、そこに Mapper を割り当てたいと思います。

さて、wiki を見てもキーマップの変更の仕方がよくわからなくて試行錯誤した結果
mapperj.map ファイルを作ってそれを編集するのが一番わかりやすそうです。
手順は

1.Ctrl-F1 で Mapper を表示させます。
2.[Save]ボタンをクリックすると DOSVAXJ3 のフォルダに mapperj.map が出力されます。
3.mapperj.map ファイルを開き、4行目

hand_mapper "key 282 mod1" 

これを

hand_mapper "key 293 mod2" 

こう変更します。

  key 282 は [F01]
  key 293 は [F11]
  mod1 は Ctrl
  mod2 は Alt

これで、Alt+[F11] で Mapper が表示されるはずです。
Ctrl+[F01] はフリーになり、VZで使えるようになるはず。

っと思ったら、VZで動かない。(;_;)
あれえ? と思ったら、VZ.DEF で無効にしてたという。(>_<)
VZ.DEF を元に戻したら VZで使えるようになりました。\(^^)/ ヤッタ-
やれやれです。<(^^;)


11088/10972 DGF01024  めざら           Re: ある現象
( 1) 24/02/15 07:40 10972:めざらさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
> ■ VTDOS+CKWV 環境で Google IME を起動すると落ちる

今朝,Windows 10 のアップデートが(勝手に)行われたのですが,
上記現象は発現しなくなりました。

結局,原因はわからずじまいでしたが,Windows のせいだった……
……という結論にならざるを得ないですね。

……と思ったら,Google IME の候補一覧がちらちら消えてしまう現象に対処する
タスクマネージャからレンダラーをリセットするという方法が効かなくなってしまい,
なんともはや使いにくいという状況に陥っているところであります。
ところが,これは VZ の方は問題なし。最高!\(^o^;)/


11089/11048 CXB00940  としき           Re^7: 『スタイルブック』
( 1) 24/02/16 17:00 11086:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> まさにそのとおりで、プログラムを組めば仕事が楽になるという思いで必死でした。

最近公開されたBASICのコードを見ても、必死さはにじみ出ているというか。
だけど

> 「武器はないのか」と見たら、BASIC で動いているのがわかり、自分でテキをやっつける
> 武器を作り、大危険に突入していったのでした。(^^;

作った武器が手作りの竹やり同然、かもしれず。
#この艦では勝てない・・・

先般、見せていただいたPerlのコードなんかも、工夫の跡は見て取れるのですが、
これ以上、どこにどう手を入れてよいかわからない。
いや、高度に完成されて手を入れる余地がない、という意味ではなく。
ちょっと手を入れたらすべて崩壊しそうなジェンガというか砂上の楼閣というか。
ソフトウェア工学の教育を受けていないから仕方ないのですが。
全面的なリファクタリングをしたくなってしまう。
逆にいうと、konnoさん、伸びしろは無限大。
今からでもきちんとソフトウェア工学の基礎を勉強してみるのも一興かと。


11090/10972 CXB00940  としき           Re^2: ある現象
( 1) 24/02/16 17:01 11088:めざらさんへのコメント
参照先:http://toshiki.la.coocan.jp/
> 今朝,Windows 10 のアップデートが(勝手に)行われたのですが,

2〜3日前、Windows7の電源を入れたら、アップデートが行われました。
まだやってたんだと、ちょっとびっくり。
それはともかく、久しぶりというか、Win7の挙動を忘れていまして。
アップデート後、シャットダウンを求めてくるのは当たり前、なんですが。
私の記憶では、更新して再起動というのがあったはずなんですね。
でも、終了オプションにそういう選択肢がない。
普通に再起動を選択したら、更新が当たってくれていない。
つまり、更新して終了という選択肢が出続けてくれやがる。
仕方なく、一旦終了を選んで、落ちてから再び電源投入。
なんかめんどくせ〜。


11091/11048 BQO00549  konno            Re^8: 『スタイルブック』
( 1) 24/02/17 00:43 11089:としきさんへのコメント コメント数:1
> 作った武器が手作りの竹やり同然、かもしれず。

ランボーなら竹槍でテキを全部やっつけられるかも。(^^;
私はランボーではないので、乱暴なコードになってしまうのです。

> ちょっと手を入れたらすべて崩壊しそうなジェンガというか砂上の楼閣というか。
> ソフトウェア工学の教育を受けていないから仕方ないのですが。

まったくそのとおりです。
なんせ自分で昨日書いたコードが読めないのですから。(-_-;)

> 今からでもきちんとソフトウェア工学の基礎を勉強してみるのも一興かと。

最近物忘れが地方レベルになってきてるので、難しいですね。(^^;


11092/11048 CXB00940  としき           Re^9: 『スタイルブック』
( 1) 24/02/17 11:33 11091:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 最近物忘れが地方レベルになってきてるので、難しいですね。(^^;

アップル認定の世界最高齢のプログラマは現在88歳だとか。
そういう人にkonnoさんのせりふを聞かせたら「最近の若い者は〜」とか言いそう。

それはさておき。
konnoさんに勉強してもらってきれいなコードを書いてもらいたい、というのは決して
konnoさんのためではなく。
ざっくりレベルで、今のままのkonnoさんがバグのありそうなコードを3つ書き上げる
のに要する同じ所要時間で、勉強したkonnoさんならバグのなさそうなコードを5つは
書き上げられそう、という見積もりをしたのですよ。
つまり、それだけアウトプットの質・量が向上すると、私を始めみんながうれしい、
ということ。つまるところ、私利私欲なわけですよ。
あるいは、先日BASICのコードを公開されたように、今後はオープンソースの方向に
舵を切っていく、とか。


11093/10933 DGF01024  めざら           Re: 新祝日対応のデータ形式
( 1) 24/02/17 13:33 10946:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
古いところにぶら下げを御免なさい。

> CALENDAR.DEF Yushi さんのモノクロ版カレンダー拡張wanama版は
……を見て,そう言えば令和対応ってどうなってたっけ?と思ったら何処にも
情報が出ていなかったので,野ざらし言#5481 に使用中のを貼り付けておきました。

機能は変わらずデータ追加だけなので版に変更はありませんが,
何か識別子がないと紛らわしいため v1.08wm と仮表示してあります。


和生師匠は元気にしてますかねぇ……
……と言うことがあまり現実的でないことは承知しています。

以前,うちの大根と秩父の杓子菜漬をお送りしたところが大層なお返しをいただいて
尻込みしてしまい,その後ほとんど連絡も途絶えてしまっているのですが,
お便りくらいは出してもばちは当たらないですよね。……暖かくなったら……

11094/11048 BQO00549  konno            Re^10: 『スタイルブック』
( 1) 24/02/18 15:10 11092:としきさんへのコメント
> アップル認定の世界最高齢のプログラマは現在88歳だとか。
> そういう人にkonnoさんのせりふを聞かせたら「最近の若い者は〜」とか言いそう。

うう、それを言われたら弱音を吐けないではないですか。(^^;
まあ、何故か今は色々プログラミング欲が出てきて同時に2〜3種のコードを見てたり。(^^;

> ざっくりレベルで、今のままのkonnoさんがバグのありそうなコードを3つ書き上げる
> のに要する同じ所要時間で、勉強したkonnoさんならバグのなさそうなコードを5つは
> 書き上げられそう、という見積もりをしたのですよ。
> つまり、それだけアウトプットの質・量が向上すると、私を始めみんながうれしい、
> ということ。つまるところ、私利私欲なわけですよ。

そ、そんなこと言われたって木に登ったりなんかしないんだからね! (^^;

> あるいは、先日BASICのコードを公開されたように、今後はオープンソースの方向に
> 舵を切っていく、とか。

私はあくまで個人的な趣味でやっているので、その辺は変わらないかもしれないです。


11095/10933 BQO00549  konno            Re^2: 新祝日対応のデータ形式
( 1) 24/02/18 21:38 11093:めざらさんへのコメント
> > CALENDAR.DEF Yushi さんのモノクロ版カレンダー拡張wanama版は
> ……を見て,そう言えば令和対応ってどうなってたっけ?と思ったら何処にも
> 情報が出ていなかったので,野ざらし言#5481 に使用中のを貼り付けておきました。

めざらさん、ありがとうございます。
うちの BASIC カレンダーも2月23日が平日のままだったので、データを更新しました。

02/23 2024-2099 天皇誕生日 (令和天皇)

> 機能は変わらずデータ追加だけなので版に変更はありませんが,
> 何か識別子がないと紛らわしいため v1.08wm と仮表示してあります。

結構修正箇所が多いのですね、これはもう VerUP レベルですね。

> 和生師匠は元気にしてますかねぇ……
> ……と言うことがあまり現実的でないことは承知しています。

みなさん音沙汰がないので、卒業されたのならいいのですが。
私は Emmett さんの LXCLND.DEF を愛用しているので、Vector の VZマクロ関連を覗いてみました。
私の VZk07p 2005年 のが最新になっていました。(^^;
うーん、まだパスワード更新出来るなら、新しい版と入れ替えようかな。
うちのホームページのURLももう繋がっていないので、リンクを新しくしないと。(^^;

> お便りくらいは出してもばちは当たらないですよね。……暖かくなったら……

ぜひともよろしくお願いします。m(__)m


11096/11096 BQO00549  konno            MS-DOS Player の更新 2024/2/19
( 1) 24/02/20 22:06 コメント数:3
MS-DOS Player が立て続けに更新されていました。
http://takeda-toshiya.my.coocan.jp/msdos/index.html

---------------------------------------------------------------------

2024/2/19
strcpy_s()で、指定したバッファ長よりも長い文字列をコピー元として指定したときに、
例外0xc0000417が発生することがあるようです。
ひとまずstrncpyで処理をするように対策をいれました。

2024/2/18
cracyc様のforkから、更に修正を取り込ませていただきました。
INT 67h, AX=5B00h/5B01h/5B04hについて、BHに00h以外を指定したときにエラーを返すようにしました。
MDA(Monochrome Display Adopter)をサポートしました。
その代わりに、コンベンショナルメモリの上限がB8000hからB0000hとなり、32KBだけ減少しています。
(それでも、VGAのVRAMがない分だけ、通常の環境より64KB大きいのですが)
CRTC, Status Registerも、MDAのアドレスでアクセス出来るようにしたのと、同期信号を50Hzにしました。

2024/2/15
cracyc様とroytam様のforkから、修正を取り込ませていただきました。
FCBを使ったファイルアクセスと、MAME版i386コアのFPU周りの例外の修正などです。
また、MAME版i386コアのDAA/DAS/AAA/AAS/AAM/AAD命令を、DOSBoxの実装を基に修正しました。
Pentium4版で、testi386.exeが実機と同じ結果が得られるようになっています。

NP21/WのI386コアを、ver0.86 rev92 beta2相当に更新しました。
また、ビルド時のワーニングが出ないように修正しました。

環境変数のアクセス時に、正しくない環境テーブルを参照したときのチェックを強化しました。
最近のビルドでtesti386.exeが動かなくなっていた問題が解決しています。
メモリアクセスの処理を効率化しました。
基本メモリ、拡張メモリ、予約領域(VRAMなど)の順に、少ない条件分岐でアクセスできるようにしています。
微妙に処理速度が上がっているかもしれません。

---------------------------------------------------------------------

主にメモリやCPU関係の修正のようです。
処理速度が上がっていたらうれしいですね。
作者様に感謝します。


11097/11097 BQO00549  konno            素数を表示、カウントするテスト
( 1) 24/02/20 23:45 コメント数:3
TurboBasicで素数を表示、カウントするテストプログラムを作りました。
DOSVAXJ3 や MS-DOS Player の JP モードで動きます。

自己流で考えて作ったので間違いがある可能性はあります。
指定範囲は20から 10万まです。配列数や時間的な限界がこの辺ということで。
一応、1000 までは 合っていました。

Wikipediaを見ると
--------------------------------------------------------------------------
最も素朴な方法は、2 から √n 以下の素数まで順番に割っていく、試し割り法と呼ばれる方法である。
n が √n 以下の全ての素数で割り切れなければ n は素数である。
試し割り法は、n が大きくなるに従って、急速に速度が低下するため、実用的ではない。
--------------------------------------------------------------------------

私が考えた方法は、どうやらこの方法と同じようですね。
1万を超えると急速に速度が落ちて、10万くらいが限界のようなので。(^^;


  SOSU4.EXE Ver.240220

・DOSVAXJ3 の VGAで動く 素数表示テストです。
・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、SOSU4.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにすれば動作します。
・VTDOS では動作しません。
・ソースも付けます。
・1000までは合っていると思いますが、それ以上は保証できないので表示しません。
・1000を超えたら 数字や時間情報を SOSU.DAT に追加出力します。
・数字が大きくなると急速に速度が落ちるので、初めは 100くらいから始めてください。

・更新履歴
2024-02-20 公開用に色々弄りました。
2024-02-17 とりあえず作成?

 動作保証はでき無いので実行は自己責任で。  

自作、改作アプリの放置部屋に置きました。
http://tamaneko.world.coocan.jp/execom.htm


11098/11098 BQO00549  konno            ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/22 01:27 コメント数:3
ハノイの塔マクロ HANOI.DEF を改造しました。
オリジナルは、T.Tanomura さんの名作です。作者様に感謝です。


===== hanoi_k.def ハノイの塔 =====

; ハノイの塔マクロ HANOI.DEF
; (VZ Editor version 1.5/1.6 共通)
; (C) T.Tanomura, 1992/7/5, 1994/7/31
;   h.konno 2024-02-22  円盤の枚数 1〜15 に改造、速度アップ


【機能】
 ハノイの塔の問題を解きます。

【用法】
 編集モードで起動し、円盤の枚数として 1〜15 の数を入力してください。
ハノイの塔の問題を知らない方は、最初は 3 にするといいでしょう。

【補足】
 'Q' を押すと、中止になります。★##k
 'G'(=go)を押すと、残りの移動を一気に行います。
 マクロの連続実行を中止するには [ESC] を押せば止まります。★##k
 マクロを中断したり実行後おかしくなったらオプション初期化してください。
 改造して速度が倍近く上がっています。(当社比)★

下のリンクをクリックすると hanoi_k.def のソースが表示されます。
当社の新リンク機能です。(^_^)

#txt:hanoi_k.def 



11099/11099 BQO00549  konno            オートリンクで新機能 ファイルへのリンク
( 1) 24/02/22 17:37
BBSのオートリンク機能を応用して新リンク機能が出来ました。(^_^)
#11098 で使っています。

ソースは、wforum.cgi の最後の方

#--------------#
#  自動リンク  #
#--------------#
sub auto_link {

#	#txt:FILE  text macro doc etc
	$_[0] =~ s/(^|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]|[^0-9a-zA-Z\/\#\"]+)#txt:([A-Za-z0-9_-]+\.[A-Za-z0-9]+)/$1<a href='http:\/\/tamaneko.world.coocan.jp\/bbs\/count\/count.cgi?mode=download;target=http:\/\/tamaneko.world.coocan.jp\/vz\/$2' title='Text'>#txt:$2<\/a>/g;

このように、サーバーのフォルダに置いたファイル名を指定すれば $2 の変数に置き換えて表示出来ます。
書式は

#txt:ファイル名

この機能を実現することでいくつかのメリットがあります。

・長いソースファイルも5文字のコマンド+ファイル名の直リンクで手軽に見ることができる。
・長いソースを張り付けて掲示板の閲覧性を損ねることを防げる。
・長いソースを張り付けてコピペするよりこのリンクを右クリックで即ファイル保存のほうが楽かも。
・長いソースやドキュメント類を見たくない人にも優しい。
・リンク済みのファイルは誰でも記事中に直リンクして手軽に参照できるので便利。
・手持ちのソースやドキュメント類を記事中で参照希望のメール送付等は前向きに検討します。
・オートリンクにカウンタを仕込んであるので閲覧数を確認できる。

この機能を思いついた動機は、上に書いていますが、本当は個人的趣味で不純なので内緒。(^^;

この機能が便利だと思ったらぜひとも他の掲示板でも採用願いたいです。(^^;


11100/11098 CXB00940  としき           Re: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 00:33 11098:konnoさんへのコメント コメント数:2
参照先:http://toshiki.la.coocan.jp/
> ハノイの塔マクロ HANOI.DEF を改造しました。
> オリジナルは、T.Tanomura さんの名作です。作者様に感謝です。

実行してみました。gコマンドの速度は速いですね。
ただ、画面の表示が正しくないです。何が悪いのかな。
konnoさんのところではきちんと表示されているのでしょうから、私の環境かな。
Tanomuraさんのマクロは、正しく表示されています。

で、まぁ、マクロコードを読もうとしたのですが。
あきらめました。
なぜって、コードとコメントの混在で。
一応、読もうと努力はしたんですよ。
だけど、例えばコードの最初のほう、属性などのいくつかの変数をプッシュする
コードがコメントアウトされていて、でもその理由が明記されているわけでもなし、
明記せずとも暗黙で理解できるようなコードでもなし。
まぁ、コード本体というか内部ではこれらの属性が変更されていないからプッシュ
されていないのだろうな、とは想像できますが、ならばなぜ、わざわざ記載した
上でコメントアウトされているのか、全くの謎。
おそらく、konnoさん的にはこういうコードが理解しやすいのでしょう。
でも、申し訳ない、私は脱落しました。
もっとも、世の中には、いわゆる「汚いコード」というのがいくらでもあって、
そういうのに比べればkonnoさんのコードは、まだまし、といったところでしょう。


11101/11098 DGF01024  めざら           Re: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 08:45 11098:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
実行してみたところ,数回の移動でコマンドラインに降り,最終的に VZ が落ちました。
(「落ちた」は正確ではなく,VZの子プロセスから離脱……かな。戻れず強制終了。)

まず,最初にきれいに積み上がっていないです。

次のコードがあります……
#E #m #[ &k
……が,実行中にコマンドラインに降りるのは何故なのですか?
ここの意図についてコメントがないので,想像もつきませんが……

11102/11098 DGF01024  めざら           Re^2: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 11:29 11100:としきさんへのコメント コメント数:2
参照先:http://mezala.la.coocan.jp/
> なぜって、コードとコメントの混在で。

(外野の言い訳になってしまうけれど)他の方のプログラムを改造する場合,
わたしも元の行をコメントアウトした上で,改造コードを記載してしまいます。
「ここをこうしたよ」ということを明示しているつもりなんですよね。
そういうのは,プログラミングに慣れた人には嫌われるのでしょうか。

田野村さんはタブを使わず4字下げだったので,それをそのまま行にコメントすると,
字下げが4の倍数にならずにグチャグチャした印象を与えてしまいますね。

> 属性などのいくつかの変数をプッシュするコードがコメントアウトされていて、
> でもその理由が明記されているわけでもなし、

グローバル変数のプッシュ/ポップの辻褄を合わせる努力をするよりも,
ローカル変数にしてしまえば他に影響はないという考え方なのでしょう。

ただ,はっきり言ってしまうと,典型的な「スパゲティ」になっているコードを
改善する気がない表明とも受け取られかねないわけで,見た目の印象以上に
コードを追う気力を失わせることはままあることかもしれないと思います。(自省)

上記は,自分への反省とか注意喚起という意味あいの方が強いかもしれません。

それより,わたしがちょっと引いたのは,
「マクロを中断したり実行後おかしくなったらオプション初期化してください。」
かな。

中断が予想される場合は,その処理を入れておくのがふつうかなと思います。
(まぁ,&k で拾う場合は終了処理が無理なことも多いんですけどね。)

11103/11098 BQO00549  konno            Re^2: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 13:21 11100:としきさんへのコメント コメント数:1
> 実行してみました。gコマンドの速度は速いですね。
> ただ、画面の表示が正しくないです。何が悪いのかな。
> konnoさんのところではきちんと表示されているのでしょうから、私の環境かな。

試していただきありがとうございます。
画面表示は具体的にはどんな感じになるのでしょうか。

> Tanomuraさんのマクロは、正しく表示されています。

Tanomuraさんのマクロの回数の数字だけ増やしても80*25画面で平気で動作しますね。
環境に左右されないようしっかり作られているのは流石です。

> で、まぁ、マクロコードを読もうとしたのですが。
> あきらめました。
> なぜって、コードとコメントの混在で。

す、すみません、公開するなら修正前の不要なコメントは消すべきでしたね。
修正して差し替えます。m(__)m


11104/11098 BQO00549  konno            Re^2: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 13:41 11101:めざらさんへのコメント
> 実行してみたところ,数回の移動でコマンドラインに降り,最終的に VZ が落ちました。
> (「落ちた」は正確ではなく,VZの子プロセスから離脱……かな。戻れず強制終了。)

げげ、これはヤバいですね、オプション絡みでしょうか。
スタートして直ぐと終了時に時間計測のためにコマンドラインに降りていますが
移動中は関係ないし、もしかして EP かなぁ。
時間計測部分はコメントにします。

> まず,最初にきれいに積み上がっていないです。
オリジナルで問題無いなら何かのオプションの影響ではないかと思いますが・・・

> #E #m #[ &k
> ……が,実行中にコマンドラインに降りるのは何故なのですか?
> ここの意図についてコメントがないので,想像もつきませんが……

上に書いたように時間計測のために追加したのをそのままにしていました。
プロンプトを $t$p$g にして時間表示させ、マクロの実行時間を測定しています。
これが悪さをしている可能性があるのでこの部分はコメントにします。
不完全なままアップしてすみませんでした。m(__)m


11105/11098 CXB00940  としき           Re^3: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 13:42 11102:めざらさんへのコメント
参照先:http://toshiki.la.coocan.jp/
めざらさんのところでも同じようですが、うちも最初が正しく積みあがっていません。

> わたしも元の行をコメントアウトした上で,改造コードを記載してしまいます。
> 「ここをこうしたよ」ということを明示しているつもりなんですよね。
> そういうのは,プログラミングに慣れた人には嫌われるのでしょうか。

コメントアウトされているのが全て改造前、ということがわかれば私はOKです。
それでも見づらいことは見づらいので、プログラミングに慣れた多くの人は嫌う
かもしれない。
概ね、プログラミングの世界では、例えばバグの混入を避けるなどの目的で、可読性
というものが重視されます。これもある種の理想論なんで、現実にはメモリ量とか
速度とかを目的として最適化というものも行われますが、でも最適化は最後の段階。
実際、遅いのはアルゴリズムが悪いことが多いので、アルゴリズムの見直しを行い、
それでも所要の性能が出ない場合に最適化する、というのが通常の段取り。

そういう潮流なので、コードが読みやすいことが尊ばれるのですよ。
ある種、読みやすさは正義、みたいな。
そして、読みやすくするためにはどうするか、という様々な研究もあって。
その中に、余分な情報は少なければ少ないほうが良い、というのもあります。
余分な情報は正しい認識を阻害する、ということから、私は迷彩という表現を使って
います。そして、このコードは何をする、というコメントなら多くの場合問題はない
のですが、旧のコードと新のコードが並列されていて、単にコメントアウトされて
いるだけ、という場合、混乱を招きやすいのではないかなぁ。
だって、行の途中を読んでいて、その行がコメントであるか確認するために行の先頭
に視線を戻して、という手間が発生するので、少なくとも私には心理的負担。

あるいは、例えばウィルスなんかだと「コードの難読化」なんていう技術が使われて
いたりします。つまり、わざと読みづらくすることにより、どういう挙動を示すか
わからないようにしているのですが、だから一部の口の悪いプロのプログラマーは
「そんなウィルスのようなコードを書くな」
などと後輩に指導して、もはやこの表現はパワハラ案件だという冗談もあるくらい。

> > 属性などのいくつかの変数をプッシュするコードがコメントアウトされていて、
> > でもその理由が明記されているわけでもなし、
> グローバル変数のプッシュ/ポップの辻褄を合わせる努力をするよりも,
> ローカル変数にしてしまえば他に影響はないという考え方なのでしょう。

すごい、きちんと読まれたのですね。
もう私、プッシュポップをしていないということは、これらは内部では使われて
いないんだ、というところでそれ以上読むことをあきらめていました。

> それより,わたしがちょっと引いたのは,
> 「マクロを中断したり実行後おかしくなったらオプション初期化してください。」
> かな。

私は逆というか、この表現を見た瞬間、画期的だと思いました。
積極的にオプションを初期化するって発想がなかったもので。
でも、過去の多くのコードを見てきためざらさんがそういう反応をするということ
は、これはいわゆるマクロ師的には邪道なのかもしれませんね。


11106/11098 CXB00940  としき           Re^3: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 13:50 11103:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
まず、うちの環境では、めざらさんのところと違い、落ちたことは一度もありません。

> 画面表示は具体的にはどんな感じになるのでしょうか。

円盤が3枚のときの初期画面。(右側省略)

■
             ■■
■■■
 ~~~~~~~~~~~~~~~~~~~

円盤が3枚のときのgコマンドでの終了画面。(右端まで)

■  ■
                                                             ■■
■■■■■■      ■■■
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

円盤の表示位置が正しくないようですが、空白での上書き消去は正しく行えているので
ゴミが残っている、というようにも見えます。


11107/11098 BQO00549  konno            Re^3: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 14:03 11102:めざらさんへのコメント
> (外野の言い訳になってしまうけれど)他の方のプログラムを改造する場合,
> わたしも元の行をコメントアウトした上で,改造コードを記載してしまいます。
> 「ここをこうしたよ」ということを明示しているつもりなんですよね。

そのとおりなんですが、私の場合統一性が無く文字通りぐちゃぐちゃになってました。
流石にこのままアップしたのは不味かったですね。m(__)m

> 田野村さんはタブを使わず4字下げだったので,それをそのまま行にコメントすると,
> 字下げが4の倍数にならずにグチャグチャした印象を与えてしまいますね。

これは公開を考えたら統一するべきでしたね、修正します。m(__)m

> > 属性などのいくつかの変数をプッシュするコードがコメントアウトされていて、
> > でもその理由が明記されているわけでもなし、

修正前のコードをコメントして残すなら理由を明記するべきでしたね。

> グローバル変数のプッシュ/ポップの辻褄を合わせる努力をするよりも,
> ローカル変数にしてしまえば他に影響はないという考え方なのでしょう。

そのとおりですが、実際には不具合が出たようで、難しいですね。

> ただ,はっきり言ってしまうと,典型的な「スパゲティ」になっているコードを
> 改善する気がない表明とも受け取られかねないわけで,見た目の印象以上に
> コードを追う気力を失わせることはままあることかもしれないと思います。(自省)

m(__)m m(__)m m(__)m

> それより,わたしがちょっと引いたのは,
> 「マクロを中断したり実行後おかしくなったらオプション初期化してください。」
> かな。
> 中断が予想される場合は,その処理を入れておくのがふつうかなと思います。

中断とは、マクロを Ctrl Break などで強制的に止めるという意味だったのですが
このマクロは止まらないみたいですね。
なので、中止のコードを追加したのですが、そうするとプッシュポップの辻褄が合わなくなります。
変なところにポップしてメモリを壊すよりは変数保存のプッシュポップをやめるのがいいかと。
プッシュポップの辻褄が合わなくてもマクロを終了したら SP は初期化するかな。
と思ったのです。

不要なコメントを整理してコードも見直しますのでしばしお待ちください。m(__)m


11108/11098 BQO00549  konno            Re^4: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 14:52 11106:としきさんへのコメント
> > 画面表示は具体的にはどんな感じになるのでしょうか。
>
> 円盤の表示位置が正しくないようですが、空白での上書き消去は正しく行えているので
> ゴミが残っている、というようにも見えます。

げげ、これはひどいバグですね。すみませんでした。m(__)m
80*25の画面でスペースがはみ出てしまってますね。
途中で数値変更して確認していませんでした。お恥ずかしい。m(__)m

諸々修正して再アップします。しばしお待ちください。m(__)m


11109/11098 BQO00549  konno            ハノイの塔マクロ 改造差替え版
( 1) 24/02/23 18:09 11098:konnoさんへのコメント コメント数:2
ハノイの塔マクロ HANOI.DEF 改造の差し替え版です。
オリジナルは、T.Tanomura さんの名作です。作者様に感謝です。

バグバグの物を上げてしまいすみませんでした。m(__)m
コメントも整理しました。
これでめざらさんのところで問題なく動きますように。(-人-)


下のリンクをクリックすると hanoi_k.def 差替え版のソースが表示されます。

#txt:hanoi_k.def



11110/11098 DGF01024  めざら           Re: ハノイの塔マクロ 改造差替え版
( 1) 24/02/23 21:03 11109:konnoさんへのコメント コメント数:1
参照先:http://mezala.la.coocan.jp/
ふつうに実行できました。

結局,何が問題だったのか分からないままでしたが……

11111/11098 BQO00549  konno            Re^2: ハノイの塔マクロ 改造差替え版
( 1) 24/02/23 23:27 11110:めざらさんへのコメント コメント数:1
> ふつうに実行できました。
> 結局,何が問題だったのか分からないままでしたが……

問題なさそうで、ホッとしました。(^^;
コマンドラインに降りたのがまずかったと思い、EP0 にしたくらいですが
多分違いますよね。(^^;
ともあれ良かったです。(^_^)


11112/11098 CXB00940  としき           ゾロ目を踏んだのはやっぱり管理人
( 1) 24/02/23 23:48 11111:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
いや、ほとんどT/Oで申し訳ない。
酔ってるもんで。

11113/11098 BQO00549  konno            Re: ゾロ目を踏んだのはやっぱり管理人
( 1) 24/02/24 00:08 11112:としきさんへのコメント
> いや、ほとんどT/Oで申し訳ない。
> 酔ってるもんで。

あ、全然気が付きませんでした。(^^;

おめでとうございます。(って、自分に言うか)


11114/11098 CXB00940  としき           Re: ハノイの塔マクロ 改造差替え版
( 1) 24/02/26 01:37 11109:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> ハノイの塔マクロ HANOI.DEF 改造の差し替え版です。

やっと試すことができました。
きれいに動いています。
ただ、うちでは、マシンのせいなのか、konnoさんのところほどTanomura版との差は
大きくなっていません。12枚で、Tanomura版だと45秒強、konno版だと35秒弱、
といったところです。
なお、実行したのはVTDOS、画面サイズは横80桁、縦50行です。
でも、konnoさんのところでは、画面サイズで実行速度が変わる、というのは面白い
ですね。速度が画面サイズに依存しないようにする、という改造もいいかも。

11115/11097 CXB00940  としき           Re: 素数を表示、カウントするテスト
( 1) 24/02/26 13:22 11097:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> TurboBasicで素数を表示、カウントするテストプログラムを作りました。

中身を見させていただきました。
どうも解せない部分がいくつか。
冒頭、「DEFINT A-Z」と宣言されています。
これはいわば、ある意味お約束のようなものかもしれません。
でも、実際にコードの中で使っている変数は、整数の範囲外までサポートするため
実数型。だもので、いちいち実数指定の「!」が必要になっています。
これ、冒頭の整数宣言を外してしまったほうがよくありませんか?
コード全体をざっくり見た範囲で、整数型の変数は末尾の時間計測ルーチンで使って
いる変数ぐらい。なら、こちらのほうに整数指定をするほうがいいような。

で、尻尾から見ていって。
9050行、もしIERLが10000より大きければ、THENそのとき10000となっていますが、
THEN直後の数値はその行番号へのジャンプ。でも10000行ってないのですが、これで
いいのですか?
って、これ、コメント文になっているぅ〜!
またぞろ、konnoさんお得意の迷彩にやられちまったぜ。

9030行、「RESUME 9032」となっていますが、RESUME文て指定した行番号に処理を
飛ばす、という挙動だったはず。この処理系ではその他の副作用があるかもしれない
のですが、このステートメント、本当に必要ですか?
あ、ERRとERLがクリアされてしまうとかあるのかな。
であってもなくても、わざわざIERRとIERLに代入せず、そのまま表示してしまえば
余分な変数も使わずに済むし、コードはよりシンプルになる気がする。
ま、私のような処理系の挙動を把握していない人向けのコメントは不要として、
処理系の挙動を知っている人ですら疑問を抱きそうな部分にはきちんとコメントを
つけたほうが言いと思う。

と、言うところで、根性と時間がつきました。
今日のところはそんなところで。


11116/11098 BQO00549  konno            Re^2: ハノイの塔マクロ 改造差替え版
( 1) 24/02/26 21:58 11114:としきさんへのコメント
> やっと試すことができました。
> きれいに動いています。

無事に動いたようでなによりです。(^_^)

> ただ、うちでは、マシンのせいなのか、konnoさんのところほどTanomura版との差は
> 大きくなっていません。12枚で、Tanomura版だと45秒強、konno版だと35秒弱、
> といったところです。
> なお、実行したのはVTDOS、画面サイズは横80桁、縦50行です。

うーむ、差が少ないのは気になるところですね。私の各種環境で比較してみました。

VTDOS       org  69秒
VTDOS       kon  33秒
CKWV+VTDOS     org  63秒  80*25
CKWV+VTDOS     org  69秒  136*34
CKWV+VTDOS     kon  33秒  80*25
CKWV+VTDOS     kon  36秒  136*34
DOSVAXJ3 64    org  70秒
DOSVAXJ3 64    kon  34秒
M Player pen4_x64 org 171秒
M Player pen4_x64 kon  71秒

ckwv のが時間が掛かると思いましたがそうでもないですね。

> でも、konnoさんのところでは、画面サイズで実行速度が変わる、というのは面白い
> ですね。速度が画面サイズに依存しないようにする、という改造もいいかも。

移動のたびに &d で全画面表示しているので大画面の方が不利かと思いましたが
オリジナルでも大画面の方が遅いですね。
MS-DOS Player は画面表示が遅いのかな、また検証してみます。


11117/11097 BQO00549  konno            Re^2: 素数を表示、カウントするテスト
( 1) 24/02/26 22:12 11115:としきさんへのコメント コメント数:1
> 冒頭、「DEFINT A-Z」と宣言されています。
> これはいわば、ある意味お約束のようなものかもしれません。
> でも、実際にコードの中で使っている変数は、整数の範囲外までサポートするため
> 実数型。だもので、いちいち実数指定の「!」が必要になっています。
> これ、冒頭の整数宣言を外してしまったほうがよくありませんか?
> コード全体をざっくり見た範囲で、整数型の変数は末尾の時間計測ルーチンで使って
> いる変数ぐらい。なら、こちらのほうに整数指定をするほうがいいような。

全くその通りです、手抜きのために既存のルーチンを stime などから寄せ集めたもので。
冒頭の「DEFINT A-Z」も、
ON ERROR GOTO 9000:DEFINT A-Z
このように、エラールーチンにくっ付いていたのをそのままにしていたのでした。

> 9050行、もしIERLが10000より大きければ、THENそのとき10000となっていますが、
> THEN直後の数値はその行番号へのジャンプ。でも10000行ってないのですが、これで
> いいのですか?
> って、これ、コメント文になっているぅ〜!
> またぞろ、konnoさんお得意の迷彩にやられちまったぜ。

これも同じで、エラー処理が無いといきなり終了するので、とりあえず張り付けたのでした。
としきさんは、TAGLIGHT.EXE はお使いではないですか。
コメントなどが色分けされて非常に見やすくなります。って言い訳。

> 9030行、「RESUME 9032」となっていますが、RESUME文て指定した行番号に処理を
> 飛ばす、という挙動だったはず。この処理系ではその他の副作用があるかもしれない
> のですが、このステートメント、本当に必要ですか?
> あ、ERRとERLがクリアされてしまうとかあるのかな。
> であってもなくても、わざわざIERRとIERLに代入せず、そのまま表示してしまえば
> 余分な変数も使わずに済むし、コードはよりシンプルになる気がする。
> ま、私のような処理系の挙動を把握していない人向けのコメントは不要として、
> 処理系の挙動を知っている人ですら疑問を抱きそうな部分にはきちんとコメントを
> つけたほうが言いと思う。

これも同じ手抜きで、以下同文。m(__)m


11118/11096 BQO00549  konno            素数計算 SOSU4で MS-DOS Playerの速度計測
( 1) 24/02/26 23:05 11096:konnoさんへのコメント
MS-DOS Player の更新でメモリ関連が速くなったかもしれないので、
素数計算 SOSU4 で、各CPUのエミュレーション速度を計測してみました。


23-12-14版                      24-02-19版
PC1  MS-DOS Player 231214       PC1  MS-DOS Player 240219   
                                                            
ia32_x64                        ia32_x64                    
Number = 10000      0: 0' 3     Number = 10000     0: 0' 2  
Number = 20000      0: 0' 9     Number = 20000     0: 0' 6  
                                                            
                                pentium4_x64                
  無し                          Number = 10000     0: 0' 5  
                                Number = 20000     0: 0'14  
                                                            
i486_x64                        i486_x64                    
Number = 10000      0: 0' 4     Number = 10000     0: 0' 2  
Number = 20000      0: 0'14     Number = 20000     0: 0'14  
                                                            
i386_x64                        i386_x64                    
Number = 10000      0: 1'40     Number = 10000     0: 1'39  
Number = 20000      0: 5'31     Number = 20000     0: 5'27  
                                                            
i286_x64                        i286_x64                    
Number = 10000      0: 0'45     Number = 10000     0: 0'50  
Number = 20000      0: 2'29     Number = 20000     0: 2'42  
                                                            
v30_x64                         v30_x64                     
Number = 10000      0: 0'43     Number = 10000      0: 0'45 
Number = 20000      0: 2'21     Number = 20000      0: 2'30 
                                                            
ia32_x86                        ia32_x86                    
Number = 10000      0: 0' 3     Number = 10000      0: 0' 3 
Number = 20000      0: 0' 9     Number = 20000      0: 0' 9 
                                                            
                                pentium4_x86                
  無し                          Number = 10000      0: 0' 6 
                                Number = 20000      0: 0'20 
                                                            
i486_x86                        i486_x86                    
Number = 10000      0: 0' 6     Number = 10000      0: 0' 6 
Number = 20000      0: 0'18     Number = 20000      0: 0'18 
                                                            
i386_x86                        i386_x86                    
Number = 10000      0: 2' 4     Number = 10000      0: 2'13 
Number = 20000      0: 6'51     Number = 20000      0: 7'22 
                                                            
i286_x86                        i286_x86                    
Number = 10000      0: 0'47     Number = 10000      0: 0'56 
Number = 20000      0: 2'33     Number = 20000      0: 3' 6 
                                                            
v30_x86                         v30_x86                     
Number = 10000      0: 0'36     Number = 10000      0: 0'45 
Number = 20000      0: 2' 2     Number = 20000      0: 2'28 
                                

こうしてみると、新しい版が少し速くなっているようですね。
でも i286 以下では逆に旧版より遅くなっているような。
計算式のアルゴリズムとの相性もあるかもです。
私が間違えてる可能性もあります。

i386 以下は CPU エミュレーション率が高いのか、遅くなっていますが
特に i386 が突出して遅いのが気になります。

CPUエミュレーションのルーチンはいくつか種類があると思いますが、
速さより正確さを優先した結果ということでしょうか。
うーん、この結果を武田さんに送ってみようかなぁ。

新しい版の ia32_x64 がメモリ速度では良さそうですね。
みなさん、CPUを選ぶときはこの表も参考にしてね。


11119/11097 CXB00940  としき           Re^3: 素数を表示、カウントするテスト
( 1) 24/02/27 23:55 11117:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
私のようなずぼらと違って、konnoさんはまめな人なのか。
私の場合、何回も登場する実数型変数にいちいち型指定の接尾辞をつけるくらいで
あれば、何とかしてそれを省略できる方法を考えたりするわけですよ。打鍵数の節約
を含めて。そして、DEFINTの型指定範囲をどうにかできないか、というのが最初の
候補になる。
あるいは、konnoさんは昔の遅いインタプリタ時代のBASICに苦しめられた経験が
少ない、とか。
少しでも速度を稼ごうと思ったら、ループの中で多用される変数を整数型にする、
というのは基本として、もし実数型不可避となったら、短い変数名にしたり、とか、
いちいち型指定の接尾辞をつけずに済ませようとしたり、とか考えるわけです。
今回のコンパイラでは大丈夫、と読みきってそうしているのであれば、私の言って
いることは余計なお世話なので、大変申し訳ない。

手抜きというか楽をするために既存のルーチンをかき集める、というのは私もよく
やるし正しい行いだとは思いますが、でも、寄せ集めのそれらのルーチンがそれぞれ
何をやっているか把握しないでただくっつけるだけだと、しつこく取れないバグの
巣窟になることが多い。それはあとからボディブローのように効いてきて、トータル
では全く楽にならない、むしろ複雑になる、というのが非常によくある結末。
やっぱりkonnoさん、深層心理では楽をすることを嫌っているとしか思えない。
私のように、骨の髄まで楽をする事を考える人間とは大違い。
あるいは、バグが取れたという結果よりもバグ取りという過程のほうが好き、とか。
世間一般の多くのプログラマは、コーディングが楽しいとか完成してきちんと動いた
ときに満足感を感じる、という人のほうが多いらしいし、私もそうなのですが、何が
楽しいかなんていうのは当然ながら人それぞれ。
いつまでたっても動かないプログラムを永遠にデバッグしているのが楽しい、という
人がいたっておかしくないし、実際にkonnoさんのコードを見ると、konnoさんは
そういうタイプに見える。
プログラムが簡単に完成したらつまらないんでしょう。

TAGLIGHTは、HTMLの編集が楽になりそうなんで気にはなっているんですけどね。
色物はあんまり好きではないんですが、導入したほうがいいかなぁ。
でも、最終的なプログラムコードは、そういうものに依存するべきではないと思う。
ま、これは私の個人的な意見なんで、異論は認める。
私、昔はBASICだったし、あるいはポケ3でコードを組んでいたこともあって、白黒
がデフォルト。紙とペンでコーディングするときも、せいぜい赤ペン止まり。
プロのプログラマだと、紙とペンでコーディングする場合でも多色のマーカーを
使っていた、なんていう話は聞いたことがあります。
だから、以下のような替え歌ができたんだ、そうです。

 胸につけてるマーカーで修正
 自慢のデバッガでバグを撃つ
 派遣の会社から僕らのために
 来たぞ我らのプログラマー

20年とか30年前に聞いた歌詞なんで、もはやうろ覚え。
元歌に沿って、替え歌のほうも3番とか4番まであったはず。
上記の1番も、1行目はたぶん間違いないと思うけど、2行目以降はかなり妖しい。
だからなんだ、という話ですが。


11120/11097 BQO00549  konno            素数表示、カウント SOSU5.EXE 更新
( 1) 24/02/28 00:47 11097:konnoさんへのコメント コメント数:2
TurboBasicで素数を表示、カウントするプログラム SOSU5 に更新しました。
DOSVAXJ3 や MS-DOS Player の JP モードで動きます。

自己流で考えて作ったので間違いがある可能性はあります。
指定範囲は20から 30万まです。配列数や時間的な限界がこの辺ということで。
一応、300000 までは 合っていると思います。

今回指定数を3倍までにし、速度アップもしました。
起動時オプションで動作変更できます。


SOSU5.ZIP サイズ 30297bytes  24-02-27 new!

  SOSU5.EXE Ver.240227

・DOSVAXJ3 の VGAで動く 素数表示テストです。
・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、SOSU4.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにすれば動作します。
・VTDOS では動作しません。
・ソースも付けます。
・300000までは合っていると思いますが時間が掛かりすぎるので注意。
・数字や時間情報を SOSU.DAT に追加出力します。
・起動時オプション 1 で S000.DAT に素数を出力します。
・起動時オプション 2 で 表示もファイル出力もしません。カウントのみ。
・数字が大きくなると急速に速度が落ちるので、初めは 100くらいから始めてください。

・更新履歴
2024-02-27 V5 バグ取りや速度アップやファイル出力など。
2024-02-20 V4 公開用に色々弄りました。
2024-02-17 V1 とりあえず作成?

 動作保証はでき無いので実行は自己責任で。  

http://tamaneko.world.coocan.jp/execom.htm



11121/11097 BQO00549  konno            Re^4: 素数を表示、カウントするテスト
( 1) 24/02/28 01:23 11119:としきさんへのコメント コメント数:1
> 私のようなずぼらと違って、konnoさんはまめな人なのか。

逆に私はずぼらで、としきさんはマメな人だと思っていました。

> 私の場合、何回も登場する実数型変数にいちいち型指定の接尾辞をつけるくらいで
> あれば、何とかしてそれを省略できる方法を考えたりするわけですよ。打鍵数の節約
> を含めて。そして、DEFINTの型指定範囲をどうにかできないか、というのが最初の
> 候補になる。

昔は私もそういうことを考えていた気がします。今は劣化して考えられなくなっただけかも。

> あるいは、konnoさんは昔の遅いインタプリタ時代のBASICに苦しめられた経験が
> 少ない、とか。

としきさんには私はそう見えるわけですね。
私は私なりに遅いインタプリタでいかに処理速度を上げるかで必死だったんですけどね。
そのために「スーパーBASIC」という本を買って、色々参考にした覚えがあります。

> 少しでも速度を稼ごうと思ったら、ループの中で多用される変数を整数型にする、
> というのは基本として、もし実数型不可避となったら、短い変数名にしたり、とか、
> いちいち型指定の接尾辞をつけずに済ませようとしたり、とか考えるわけです。

昔はそういう考えが基本的にあったと思います。今は何も考えていないですね。(^^;

> 今回のコンパイラでは大丈夫、と読みきってそうしているのであれば、私の言って
> いることは余計なお世話なので、大変申し訳ない。

コンパイラになって、変数名の長さとか関係なくなってあまり気にしなくなったのはあります。

> 何をやっているか把握しないでただくっつけるだけだと、しつこく取れないバグの
> 巣窟になることが多い。それはあとからボディブローのように効いてきて、トータル
> では全く楽にならない、むしろ複雑になる、というのが非常によくある結末。

確かにその通りですが、私はとりあえず動くのを優先に考えてしまう癖があるようです。

> やっぱりkonnoさん、深層心理では楽をすることを嫌っているとしか思えない。

これは無いと思いますが、そう見えるのですか。

> 私のように、骨の髄まで楽をする事を考える人間とは大違い。

私にはそうは見えなかったり、考え方が人それぞれなゆえですかね。

> あるいは、バグが取れたという結果よりもバグ取りという過程のほうが好き、とか。

私はバグが無い方がいいし、バグ取りは基本嫌です。

> いつまでたっても動かないプログラムを永遠にデバッグしているのが楽しい、という
> 人がいたっておかしくないし、実際にkonnoさんのコードを見ると、konnoさんは
> そういうタイプに見える。

見え方は人それぞれですから、しかたがないですね。

> プログラムが簡単に完成したらつまらないんでしょう。

そういう境地になれたらいいなとは思います。絶対になれないので。

> TAGLIGHTは、HTMLの編集が楽になりそうなんで気にはなっているんですけどね。
> 色物はあんまり好きではないんですが、導入したほうがいいかなぁ。

Windowsの高機能エデイタは大抵色分け機能を持っていますね。
そういうのを使ってみたいとは思うのですが、VZの使い勝手は別格と思うので。

> だから、以下のような替え歌ができたんだ、そうです。

替え歌がさくっと出来るのもクリエイターならではですね。(^_^)


11122/11097 CXB00940  としき           Re^5: 素数を表示、カウントするテスト
( 1) 24/02/28 17:45 11121:konnoさんへのコメント
参照先:http://toshiki.la.coocan.jp/
コードからにじみ出てくる人柄なんて当てにならない、というのが結論でしょうか。

> 逆に私はずぼらで、としきさんはマメな人だと思っていました。

この辺は相対的なものもありますがね。
親戚一同から学生時代の友人、会社での知り合いにいたるまで、他人からの評価
では、世間一般の平均からすると私はずぼらの範疇に入るらしい。マスコミなんか
の報道やネットニュースを参照することによる自己評価でも、やっぱり私はずぼら
だと思っています。
うちの父はマメな人でしたが、うちの母は
「うちの子供たちはみんな私の血を継いだ」
なんていっていて、自分でもそのとおりだと思っています。

> 昔は私もそういうことを考えていた気がします。今は劣化して考えられなくなっただけかも。

> 昔はそういう考えが基本的にあったと思います。今は何も考えていないですね。(^^;

もしかしたら、この辺がキモなのかも。
私も、最近になってプログラミングのスタイルが変わったというところはありません
けどね。かつては、特にインデントの桁数で、いろいろと変遷があったはず。
昔、N88-BASICでは、タブ幅が8桁固定で、さすがにこれは下げすぎだと思い、面倒
だったけど、空白3桁のインデントで、一生懸命スペースバーを叩いていた。
学生時代、PascalはTurboPascalと大学の大型機を使ったけど、両方でソースを統一
したくて、確かインデントは6桁。
その後、TurboCとVisualCの統合環境では、何桁だったかなぁ。
とくに、VisualCに触れたことって、ほとんど一瞬のようなものだったし。
両方とも、確か4桁だったと思うけど、全く自信なし。
その後すぐにVzに触れて、拡張子ごとにタブを4桁と8桁に設定できるようになって、
今ではこれなしにはいられない。

> 確かにその通りですが、私はとりあえず動くのを優先に考えてしまう癖があるようです。

あ〜、なんとなくわかるような。
なんと言えばいいかな。
私の場合は「長期的ずぼら」とか「ライフサイクルずぼら」。
konnoさんの場合は「近視眼的ずぼら」。
なので、konnoさん、トータルでの労力がかえって増えてしまうと思う。


11123/11097 BQO00549  konno            Re: 素数表示、カウント SOSU5.EXE 更新
( 1) 24/02/29 18:45 11120:konnoさんへのコメント
SOSU5 の速度アップとバグ取りですが、他の素数計算プログラムを参考にしました。
旧版は、一桁の素数を決め打ちでやっていました。

for i!=2 to 10
  if i!=2 then gosub print1:co!=co!+1:co1%(co!)=i!
  if i!=3 then gosub print1:co!=co!+1:co1%(co!)=i!
  if i!=5 then gosub print1:co!=co!+1:co1%(co!)=i!
  if i!=7 then gosub print1:co!=co!+1:co1%(co!)=i!
next i!

これを全部コメントにして、2だけ決め打ちにしました。
さらに、偶数チェックを FOR STEP 2 で出来ることがわかり、以下のように

i!=2:gosub print1 :co!=co!+1:co1%(co!)=i!		'★ 2は素数に決め打ち
a!=0
for i!=3 to no!-1 step 2				'★ 偶数をスキップ
loop1:
'  no1$=str$(i!)					'★ FOR steo 2 の
'  le=len(no1$)						'★スキップにより
'  a!=val(right$(no1$,1))				'★この4行が
'  b!=int (a!/2):if b!=a!/2 then i!=i!+1:goto loop1	'★要らなくなった
  gosub loop2		'
next i!

これで少し速度アップ出来たようです。

SOSU4.EXE
Number = 50000 	  0: 0'34 	Prime Number = 5133 
SOSU5.EXE
Number.50000	  0: 0'32 	Prime Number = 5133 

うーん、誤差範囲かな。(^^;
あとは配列の見直しで、10万までだったのを30万まで拡大出来ました。
速度的にも

Number.300000	  0:12'20   Prime Number = 25997 

12分もかかるので、この方式はこの辺が限界ですね。(^^;
さて、次はもっと速い別のアルゴリズムにしましょう。


11124/11096 BQO00549  konno            MS-DOS Player の更新 2024/2/28
( 1) 24/02/29 19:03 11096:konnoさんへのコメント コメント数:1
MS-DOS Player がまた更新されていました。
http://takeda-toshiya.my.coocan.jp/msdos/index.html

---------------------------------------------------------------------

2024/2/28
INT 21h, AX=4404h/4405h/440Ahを修正しました。
BXでハンドルを指定するか、BLでドライブを指定するか、間違えて処理していました。
AX=440Ahはハンドル指定、AX=4404h/4405hはドライブ指定に修正しています。

内蔵デバッガを改良しました。
プロテクトモード時のコードページの処理を修正しました。
また実行トレースに、各命令を16bit/32bitのどちらで実行したか記録するようにしました。
(V30の場合は8080モードか否かを記録)
Uコマンド、UTコマンドで正しく命令を表示できるようになっているかと思います。

roytam様のforkを参考に、conhost-v2のクラッシュ対策を入れました。
カーソルが最後の行にあるときにウィンドウサイズを変更するとクラッシュし易いようです。
また未確認ですが、Windows NT4.0 / 2000で動作するための修正も取り込んでいます。

---------------------------------------------------------------------

VZにはあまり影響無さそうですが、更新が続いていることに感謝します。


11125/11096 BQO00549  konno            SOSU4で MS-DOS Playerの速度計測 2
( 1) 24/02/29 19:38 11124:konnoさんへのコメント
MS-DOS Player の更新で CPU速度の変化が気になったので、
素数計算 SOSU4 で 各CPUのエミュレーション速度計測しました。

23-12-14版                      24-02-19版  24-02-28版
MS-DOS Player 231214            240219      240228
                                         
ia32_x64                        ia32_x64    ia32_x64 
Number = 10000      0: 0' 3     0: 0' 2     0: 0' 3  
Number = 20000      0: 0' 9     0: 0' 6     0: 0'10  
                                         
i486_x64                        i486_x64    i486_x64 
Number = 10000      0: 0' 4     0: 0' 2     0: 0' 5  
Number = 20000      0: 0'14     0: 0'14     0: 0'18  
                                         
i386_x64                        i386_x64    i386_x64 
Number = 10000      0: 1'40     0: 1'39     0: 1'56  
Number = 20000      0: 5'31     0: 5'27  
                                         
i286_x64                        i286_x64    i286_x64 
Number = 10000      0: 0'45     0: 0'50     0: 1' 4  
Number = 20000      0: 2'29     0: 2'42  

最新版の速度計測は手抜きですが、少し遅くなったような気がします。
条件判定などが増えたからでしょうか。


11126/11097 CXB00940  としき           Re: 素数表示、カウント SOSU5.EXE 更新
( 1) 24/03/01 01:28 11120:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
sosu5.bas を読ませてもらっています。
まだ冒頭のほうだけなんですけどね。

で、質問。
配列の確保で
dim co1%(32700)
と宣言されています。
その少しあとで入力プロンプトだと思いますが
  PRINT "Prime Number (20 TO 327000)";
とあったり
    if no!>327000 then inp1
となっているのですが、これはそれぞれ値は正しいのですか?
いや、似たような数値なので、ミスタイプを疑ってみました。
というか、できればこういうのは変数に定義したほうがよろしいかと。
例えば、

max=32700
dim co1%(max)
  PRINT "Prime Number (20 TO "; max*10; ")";
    if no!>max*10 then inp1

みたいなコードになっていれば、いらぬ疑問は招かないかと。
バグの混入も防止できるし。
アセンブラですら数値を定義して名前をつけるという機能があるのに、高級言語の
BASICでそういう機能を使わないのはもったいないと思う。
また、最近のC言語なんかでは、文法書に、この手の即値はマジックナンバーであり
使うことは悪い習慣だと書かれてしまっているらしい。そうだろうねぇ。


11127/11097 BQO00549  konno            Re^2: 素数表示、カウント SOSU5.EXE 更新
( 1) 24/03/01 23:46 11126:としきさんへのコメント
> 配列の確保で
> dim co1%(32700)  と宣言されています。
> その少しあとで入力プロンプトだと思いますが
>   PRINT "Prime Number (20 TO 327000)";
> とあったり
>     if no!>327000 then inp1
> となっているのですが、これはそれぞれ値は正しいのですか?

正しくはないというか、適当です。(^^;

> いや、似たような数値なので、ミスタイプを疑ってみました。
> というか、できればこういうのは変数に定義したほうがよろしいかと。

配列の数字と入力最大値とは関連はありません、たまたま同じ数値にしただけです。
なので、例題のようには出来ないです。

> バグの混入も防止できるし。
> アセンブラですら数値を定義して名前をつけるという機能があるのに、高級言語の
> BASICでそういう機能を使わないのはもったいないと思う。
> また、最近のC言語なんかでは、文法書に、この手の即値はマジックナンバーであり
> 使うことは悪い習慣だと書かれてしまっているらしい。そうだろうねぇ。

ご意見に従い、入力の最大値は max! にしてみました。
なるほど、修正が楽になりますね。
SOSU5 で最終と思っていましたが、修正ついでにもっと限界まで攻めてみました。

dim co1%(32766)			' これ以上は64Kオーバーエラー

  max!=1000000
  PRINT "Prime Number (20 TO ";max!;")";

最大値はもっといけるかもですが、時間的に100万までにしました。(^^;
こんどこそ打ち止めです。(^^;


11128/11097 BQO00549  konno            SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/02 00:03 11097:konnoさんへのコメント コメント数:2
TurboBasicで素数を表示、カウントするプログラム SOSU5 に更新しました。
DOSVAXJ3 や MS-DOS Player の JP モードで動きます。

自己流で考えて作ったので間違いがある可能性はあります。
指定範囲は20から 100万まです。配列数や時間的な限界がこの辺ということで。
一応、1000000 までは 合っていると思います。

今回指定数を100万までに拡大しました。
起動時オプションで動作変更できます。


SOSU6.ZIP サイズ 30299bytes  24-03-01 new!

  SOSU6.EXE Ver.240301

・DOSVAXJ3 の VGAで動く 素数表示テストです。
・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、SOSU4.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにすれば動作します。
・VTDOS では動作しません。
・ソースも付けます。
・1000000までは合っていると思いますが時間が掛かりすぎるので注意。
・数字や時間情報を SOSU.DAT に追加出力します。
・起動時オプション 1 で S000.DAT に素数を出力します。
・起動時オプション 2 で 表示もファイル出力もしません。カウントのみ。
・数字が大きくなると急速に速度が落ちるので、初めは 100くらいから始めてください。

・更新履歴
2024-03-01 V6 指定できる最大値を100万までに拡大。
2024-02-27 V5 バグ取りや速度アップやファイル出力など。
2024-02-20 V4 公開用に色々弄りました。
2024-02-17 V1 とりあえず作成?

 動作保証はでき無いので実行は自己責任で。  
http://tamaneko.world.coocan.jp/execom.htm


11129/11097 BQO00549  konno            Re: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/03 16:48 11128:konnoさんへのコメント
> 最大値はもっといけるかもですが、時間的に100万までにしました。(^^;

SOSU6.EXE の実行時間です。

SOSU6.EXE
Number.10000	  0: 0' 2   Prime Number = 1229 
Number.100000	  0: 1'40   Prime Number = 9592 
Number.400000	  0:23'20   Prime Number = 33860 
Number.600000	  0:52'55   Prime Number = 49098 
Number.1000000	  1:52'40   Prime Number = 78498 

これだけ時間が掛かりますが、他の計算プログラムと結果は一致しています。
うっかり計測開始してしまったときは、Ctrl+Break で止まる設定ならあるいは。(^^;
まあ、いざという時は DOSVAXJ3 の窓を閉じればいいんだし。(^^;


11130/11096 BQO00549  konno            MS-DOS Player の更新 2024/3/02
( 1) 24/03/04 00:07 11096:konnoさんへのコメント
MS-DOS Player がまた更新されていました。
http://takeda-toshiya.my.coocan.jp/msdos/index.html

---------------------------------------------------------------------

2024/3/2
INT 21h AH=43h, BL=08hが、BL=06hと同じ動作になっていた問題を修正しました。

内蔵デバッガを改良しました。
Rコマンドでレジスタ以外にフラグの値の変更もできるようにしました。
また、V30のディスアセンブラを、i386用のディスアセンブラと統合しました。
V30専用命令以外で正しく認識されない命令があったのが解決しています。
レジスタ名も標準的な名前で表示されるようになっています。

conhost-v2のクラッシュ対策の改良と、WindowsNT 3.51/4向けの修正をしています。

---------------------------------------------------------------------

クラッシュ対策とは、最近のWindowsのIMEの問題などでしょうか。
エミュレータ作者の影の苦労がうかがわれますね。
更新に感謝です。


11131/11097 CXB00940  としき           Re: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/04 23:23 11128:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> TurboBasicで素数を表示、カウントするプログラム SOSU5 に更新しました。

N88-BASICもあらかた忘れ始めているので手元のDISK BASICのリファレンスを見ながら
ですが、TurboBasicはやっぱりかなり違うようです。
上のほうから見ていって、まず気がついたのがLOCATE文。
LOCATE 1, 26, ,1
というのがありましたが、N88では引数は3つまで。
つまり、カンマの数は2つまででした。
次がCOLOR文。
COLOR 14, 0
とありますが、N88では最初の引数は0から7までだけでした。
2番目と4番目の引数なら14も使えるようです。

あ、なんか、消し忘れのようなもの見つけてしまった。
a!=0
ってあるんですが、この変数、他では使われていないっぽい。

あ〜、なんか、N88-BASIICに移植したくなってきた。
といっても、動作環境は手元にはない。
実家にはDOS BASICはあるはずだけど、DOS BASICとDISK BASICって何が違っていたか
もう思い出せない。
ちょっと無謀だな。


11132/11048 CXB00940  としき           Re^2: としきさんの msgview 完璧なツリー
( 1) 24/03/04 23:32 11053:としきさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> どんなチェック漏れがあるやら、想像もつきません。

いやぁ、やっぱりまだ何かおかしいですね。
#11097とか#11098からのツリーの、本来「┗」でなければいけないところがいくつか
「┣」になっていますね。
OKなところとNGなところの条件から追いかけてみましょう。
とはいえ、今日はもう終わり。
明日以降でね。


11133/11097 BQO00549  konno            Re^2: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/05 00:03 11131:としきさんへのコメント コメント数:1
> 上のほうから見ていって、まず気がついたのがLOCATE文。
>   LOCATE 1, 26, ,1
> というのがありましたが、N88では引数は3つまで。
> つまり、カンマの数は2つまででした。

Turbo Basic と TBasic のマニュアルが腐海から救い出せました。
思いもよらぬところの奥底に沈んでいました。(^^;
それによると、LOCATE 文の引数は 5個まであります。

LOCATE 縦位置,横位置,カーソル表示スイッチ,カーソル開始位置,カーソル終了位置

私がN88系と違うと思ったのは、縦と横が逆なところです。
他の構文は、横、縦なので、間違えやすいですね。MS系の歴史でしょうか。

> 次がCOLOR文。
>   COLOR 14, 0
> とありますが、N88では最初の引数は0から7までだけでした。
> 2番目と4番目の引数なら14も使えるようです。

これもMS系と大きく違うところですね。
詳しくは以下略。(^^;

> あ、なんか、消し忘れのようなもの見つけてしまった。
> a!=0
> ってあるんですが、この変数、他では使われていないっぽい。

う、消し忘れてましたね。(^^;

> あ〜、なんか、N88-BASIICに移植したくなってきた。
> といっても、動作環境は手元にはない。
> 実家にはDOS BASICはあるはずだけど、DOS BASICとDISK BASICって何が違っていたか
> もう思い出せない。
> ちょっと無謀だな。

ネットには、N88系準拠のフリーなBASICもありそうです。
移植するなら、他の素数プログラムが良いと思います。
私のは全く実用的でないので。(^^;
これからアップしますね。


11134/11048 BQO00549  konno            Re^3: としきさんの msgview 完璧なツリー
( 1) 24/03/05 00:07 11132:としきさんへのコメント コメント数:1
> #11097とか#11098からのツリーの、本来「┗」でなければいけないところがいくつか
> 「┣」になっていますね。

見てみましたが、これは正しいツリーだと私は思います。
うちのツリーは横幅を狭くしたくて見た目がいまいちなのです。(^^;


11135/11135 BQO00549  konno            TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/05 00:40 コメント数:2
TurboBasicで素数を表示、カウントするプログラム PRIME2.EXE です。
元にしたのは、十進BASIC に入っていた サンプルソースです。

https://hp.vector.co.jp/authors/VA008683/
ここのダウンロードページの Windowsアーカイブ版の中の
 BASIC7868.zip (1,292,876バイト)を落として展開すると
Mathフォルダがあり、その中にある
PRIME.BAS  319bytes
を Turbo Basic で動くように改造しました。

特徴は、処理が非常に速く、桁数の制限がほぼ無いことです。
DOSVAXJ3 や MS-DOS Player の JP モードで動きます。

自己流で改造したので間違いがある可能性はあります。
指定範囲は20から 1億までにしました。
起動時オプションで動作変更できます。


PRIME.ZIP サイズ 30299bytes  24-03-01 new!

  PRIME2.EXE Ver.240301

・DOSVAXJ3 の VGAで動く 素数表示テストです。
・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、PRIME2.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにすれば動作します。
・VTDOS では動作しません。
・ソースも付けます。
・20000000までは実行できると思います。
・数字や時間情報を SOSU.DAT に追加出力します。
・起動時オプション 1 で P000.DAT に素数を出力します。
・起動時オプション 2 で 表示もファイル出力もしません。カウントのみ。
・起動時オプション 100以上で 指定した数字で間欠カウント表示。若干速くなるかも。
・数字が大きくなると時間が掛かるので、初めは 1000くらいから始めてください。

・更新履歴
2024-03-03 V2 バグ取りやファイル出力やオプション追加など。
2024-02-27 V1 とりあえず作成

 動作保証はでき無いので実行は自己責任で。  
http://tamaneko.world.coocan.jp/execom.htm


11136/11048 CXB00940  としき           Re^4: としきさんの msgview 完璧なツリー
( 1) 24/03/05 12:06 11134:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 見てみましたが、これは正しいツリーだと私は思います。

あれ?
うちとkonnoさんのところでは、表示のされ方が違うのかな?
そんなことはないと思うけど。

たとえば、#11097から始まるツリーの#11117とか#11126が、本来は「┗」でなければ
いけないけれど「┣」になっているように見えます。
これ、konnoさんのところでは正しく「┗」になっているのか。
それとも私の勘違いで「┣」が正しいのか。
ちょっと混乱しています。


11137/11135 CXB00940  としき           Re: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/05 13:22 11135:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 自己流で改造したので間違いがある可能性はあります。

プログラムの中身はぜんぜん読めていませんが。

> ・起動時オプション 1 で P000.DAT に素数を出力します。
> ・起動時オプション 2 で 表示もファイル出力もしません。カウントのみ。

ソースリスト冒頭のコメントで

'  IF DSP=1 THEN 	print			'画面出力
'  IF DSP=1 THEN 	print out dat		'ファイル出力
'  IF DSP=2 THEN 	no print		'カウントのみ

となっているのですが、これはコメントが間違っているのかな。


11138/11097 CXB00940  としき           Re^3: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/05 14:12 11133:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
LOCATEなんていう、割と基本的なところからして違うものなのですね。

> LOCATE 縦位置,横位置,カーソル表示スイッチ,カーソル開始位置,カーソル終了位置
> 
> 私がN88系と違うと思ったのは、縦と横が逆なところです。
> 他の構文は、横、縦なので、間違えやすいですね。MS系の歴史でしょうか。

えと、LOCATEが縦、横の順というのは、Turbo Basic と TBasic の両方ですか?
それともどちらかだけ?
ちなみに、N88の場合は

LOCATE 横位置,縦位置,カーソル表示スイッチ

だけです。
カーソルの開始位置、終了位置ってなんだろう。
横長のカーソルを表示できるのかな。
それとも、その制限の範囲にカーソルがこない場合は表示されない、とか。

> 移植するなら、他の素数プログラムが良いと思います。

konnoさんの新しいのもリリースされたし、そっちを狙おうかな。
とりあえず、SOSU6の方を移植するとなると気になる部分がひとつ。
もしかしたら16ビットのBASICでは改善されているかもしれませんが。

loop2:			' 数値を確定した素数で割り切れれば合成数
  for ii!=1 to co!-1
    b!=int(i!/co1%(ii!)):if b!=i!/co1%(ii!) then noflg=1:goto lpend2
  next ii!
lpend2:

8ビット時代のBASICでは、こういうループの脱出方法をは推奨されなかった。
FORのループを完了させずに途中で脱出すると、スタックにデータが詰みあがった
ままになってしまうのだそうで。
たしか、新しくRUNするとクリアされるのだったかなぁ。
もしかしたら、明示的にCLEARというコードを書かないとクリアされなかったかも
しれない。
この辺は処理系によって違うかもしれないし、当時のBASICのリストを見ると、DEFINT
と同様、ソースの先頭でおまじないのようにCLEARを入れているものが多かったので、
この辺で混同している部分もあるかもしれない。
で、結局どうするのがよいかというと

*LOOP2
FOR II!=1 TO CO!-1
    IF INT(I!/CO1%(II!))=I!/CO1%(II!) THEN NOFLG=1:II!=CO!-1
NEXT

こんな感じで無理やり強制的にループの制御変数の値を書き換えてしまう、という
ワザが使われていました。


11139/11048 BQO00549  konno            Re^5: としきさんの msgview 完璧なツリー
( 1) 24/03/05 15:24 11136:としきさんへのコメント コメント数:1
> たとえば、#11097から始まるツリーの#11117とか#11126が、本来は「┗」でなければ
> いけないけれど「┣」になっているように見えます。

あうう、リンク先をそのまま見ていました。頭が他に行っていたみたいです。(>_<)
msgview のツリーは「┣」になっていますね。失礼しました。m(__)m
何が悪いのかはわかりません。m(__)m


11140/11135 BQO00549  konno            Re^2: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/05 15:56 11137:としきさんへのコメント コメント数:1
> ソースリスト冒頭のコメントで
> '  IF DSP=1 THEN 	print			'画面出力
> '  IF DSP=1 THEN 	print out dat		'ファイル出力
> '  IF DSP=2 THEN 	no print		'カウントのみ
> となっているのですが、これはコメントが間違っているのかな。

コメントの間違いにコメントするなんて、鬼畜ですぅ。(;_;)
もちろん1行目は ゼロのつもりだったんですぅ。
日付や指定範囲などもおかしいような気がするけど気にしない。(^^;


11141/11097 BQO00549  konno            Re^4: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/05 16:55 11138:としきさんへのコメント コメント数:1
> > LOCATE 縦位置,横位置,カーソル表示スイッチ,カーソル開始位置,カーソル終了位置

見直したらおかしなところに気が付きました。
  LOCATE 1, 26, ,1
とありますが、おしりの1はカーソル開始位置なので、終了位置が無い?
これも元は何かのサンプルソースで
  LOCATE 1, 26, ,1 '%CursorOff
多分これが元だと思います。
TBasicのマニュアルでは、終了位置を省略すると開始位置と同じ数値が入るらしいですが
このコメントでは、カーソルオフになっていますね? わからん。
サンプルが間違えているかもですね。(^^;

> えと、LOCATEが縦、横の順というのは、Turbo Basic と TBasic の両方ですか?

両方です。TBasicはもろMS系だと思いますが、TurboBasicもMS系準拠ということですかね。

> カーソルの開始位置、終了位置ってなんだろう。

カーソルの高さ指定だと思います。TBasicでは、0が上で 15が下みたいです。


> FORのループを完了させずに途中で脱出すると、スタックにデータが詰みあがった
> ままになってしまうのだそうで。

うげ、これは知らなかったです。ヤバイかも・・・(>_<)
STIME でたまに問題が出るのはこれかもしれないですね。

> FOR II!=1 TO CO!-1
>     IF INT(I!/CO1%(II!))=I!/CO1%(II!) THEN NOFLG=1:II!=CO!-1
> NEXT
> こんな感じで無理やり強制的にループの制御変数の値を書き換えてしまう、という
> ワザが使われていました。

これも良くやっていますが、これからはループを抜ける時は気を付けます。


11142/11048 CXB00940  としき           Re^6: としきさんの msgview 完璧なツリー
( 1) 24/03/05 17:24 11139:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
>  何が悪いのかはわかりません。m(__)m

私にも何が悪いのか、今のところは全くわかっていません。
一応、1月にkonnoさんにお送りしたコードを再び引っ張り出してみました。
そして、うちの板塀の現行ログを表示してみたのですが、全て正常な表示に見える
のですよ。かなり複雑そうなツリーであっても。
う〜ん、まさかデータというかログファイルのほうに原因があるのか?
それとも、私がkonnoさん的なコードに転記する際にどこかを誤ったとか。
いささか複雑というか統一性に欠けたコーディングスタイルでしたから。
あるいは、konnoさんがご自分でコードをきれいにしようとして失敗したとか。

一応、ざっくりみたところ。
msgviewの中で「┗」「┣」が表示されるルーチンは以下のような感じ。

if ($tx[$lx] == 0 && $lx != 0) { print "┗"; }
else {
    $jj=1;
    while ( $tlx[$j+$jj] > 0 ) {
        if ( $tlx[$j] == $tlx[$j+$jj] ) { $jj=0; last; }
        if ( $tlx[$j] > $tlx[$j+$jj] ) { $jj=1; last; }
    $jj++;
    }
    if ( $jj == 0 ) { print "┣"; }
    elsif ($lx != 0 ) { print "┗"; }
}

一方で、正しく表示される一括表示のツリー表示部分は以下のような感じ。

if ( $tx[$lx] == 0 ) { print "┗"; }
else {
    $jj=1;
    while ( $tlx[$j+$jj] > 0 ) {
        if ( $tlx[$j] == $tlx[$j+$jj] ) { $jj=0; last; }
        if ( $tlx[$j] > $tlx[$j+$jj] ) { $jj=1; last; }
        $jj++;
    }
    if ( $jj == 0 ) { print "┣"; }
    else { print "┗"; }
}

条件式が違うじゃない。
何でこんなところを見落としたんだろう。
テストデータというか板塀のデータで正常に表示されていたからだろうなぁ。

ということで、もしかしたらこれでうまくいくかも。
もうkonnoさんのところでも不要なコメントは全部落としているでしょうから、場所は
すぐに見つかることでしょう。
とりあえず試してみてください。


11143/11097 CXB00940  としき           Re^5: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/05 17:58 11141:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> これも元は何かのサンプルソースで
>   LOCATE 1, 26, ,1 '%CursorOff
> 多分これが元だと思います。
> TBasicのマニュアルでは、終了位置を省略すると開始位置と同じ数値が入るらしいですが
> このコメントでは、カーソルオフになっていますね? わからん。

値を省略するとカーソルオフなんですかね。
N88だと、最後のパラメータなんでよく省略されていましたが、省略時は単にそれ以前
の値を引き継いでいました。

> カーソルの高さ指定だと思います。TBasicでは、0が上で 15が下みたいです。

あ、横方向ではなく、1つの文字の中の縦方向でしたか。
ということは、開始位置が0、終了位置を1と指定すると、アッパーラインのような感じ
になるということですね。これはVzのCiとCoみたいに変更できるということですから、
使い方によっては便利かもしれない。

> > FORのループを完了させずに途中で脱出すると、スタックにデータが詰みあがった
> > ままになってしまうのだそうで。
> うげ、これは知らなかったです。ヤバイかも・・・(>_<)

いや、昔のインタプリタの時代の話ですから。
コンパイル型言語なら大丈夫なんじゃないかなぁ。
ただ、ループをまわす回数が増えても問題がないのに、ループの回数そのものが少ない
にもかかわらず、そのループを呼び出す回数が増えると問題が出るという、謎の不具合
につながることがあって。
苦労させられた人はそれなりにいるはず。


ところで、それよりも、変なことに気がつきました。
#11097によると

> 最も素朴な方法は、2 から √n 以下の素数まで順番に割っていく

とあるのですが、コードの中にSQRT関係の関数がないようです。
これ、本当にこのアルゴリズムであっていますかね。
例えば、23が素数であるかを確認するためには√23以下の素数、つまり2と3で確認
すれば事足りるわけです。
コードを追いかけていませんが、まさか、5とか7でも割っているから余計に時間が
かかっている、ということはないでしょうか。


11144/11048 BQO00549  konno            Re^7: としきさんの msgview 完璧なツリー
( 1) 24/03/05 20:04 11142:としきさんへのコメント コメント数:1
> あるいは、konnoさんがご自分でコードをきれいにしようとして失敗したとか。

私は頂いたソースをそのまま張り付けただけだったと思います。(^^;
今見たら私のバグバグなトンでもコードのコメントがそのまま大量に残っていますね。(^^;
よくこの状態で修正できたと感心します。いや、ありがたいです。

> msgviewの中で「┗」「┣」が表示されるルーチンは以下のような感じ。
> if ($tx[$lx] == 0 && $lx != 0) { print "┗"; }

ここは探してみたところ、以下のようになっていましたが修正しました。

#       if ($tx[$lx] == 0 && $lx != 0) { print "┗"; }
        if ( $tx[$lx] != 0 ) { print "┣"; }
    ↓
	if ( $tx[$lx] == 0 ) { print "┗"; }

     elsif ($lx != 0 ) { print "┗"; }
    ↓
     else { print "┗"; }

最初下の1行だけ修正しましたが変わりませんでした。
それで上側も修正したら、キチンとツリー表示出来ました。\(^^)/ ヤッタ-

> もうkonnoさんのところでも不要なコメントは全部落としているでしょうから、場所は
> すぐに見つかることでしょう。

不要なコメントはまだそのままですが、これを機に削除しようと思います。(^^;
本当にありがとうございました。m(__)m


11145/11097 BQO00549  konno            Re^6: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/05 23:15 11143:としきさんへのコメント
> 値を省略するとカーソルオフなんですかね。
> N88だと、最後のパラメータなんでよく省略されていましたが、省略時は単にそれ以前
> の値を引き継いでいました。

試しに
LOCATE 1, 26, ,10
にして実行してみたら、カーソル高さが半分くらいになっていました。
省略時はそれ以前の値を引き継ぐようですね。

> コンパイル型言語なら大丈夫なんじゃないかなぁ。
> ただ、ループをまわす回数が増えても問題がないのに、ループの回数そのものが少ない
> にもかかわらず、そのループを呼び出す回数が増えると問題が出るという、謎の不具合
> につながることがあって。
> 苦労させられた人はそれなりにいるはず。

やっぱりむやみにループを抜けるのは避けた方が良さそうですね。

> ところで、それよりも、変なことに気がつきました。
> #11097によると
> > 最も素朴な方法は、2 から √n 以下の素数まで順番に割っていく
> とあるのですが、コードの中にSQRT関係の関数がないようです。

気が付いてしまいましたか、そうです、私はWikiを見ないで自分で考えたのです。
素数を調べるには確定した素数で割ればいいんじゃないかと思ったのです。
それで配列に確定した素数を入れたのですが、数字が大きくなると割る回数が増えるので
時間が掛かったのでした。

> これ、本当にこのアルゴリズムであっていますかね。

PRIME2.EXE は、SQR関数を使っているので、これが本来のアルゴリズムなのでしょうね。
でも結果は一致していたので、考え方はあながち間違ってはいなかったかなと思います。

> 例えば、23が素数であるかを確認するためには√23以下の素数、つまり2と3で確認
> すれば事足りるわけです。
> コードを追いかけていませんが、まさか、5とか7でも割っているから余計に時間が
> かかっている、ということはないでしょうか。

その通りですね、ですから、SOSUシリーズは私の個人的仮説の実験だったのです。(^^;
PRIME.BAS のサンプルは学校でも使える模範的コードなのだと思います。


11146/11048 CXB00940  としき           Re^8: としきさんの msgview 完璧なツリー
( 1) 24/03/07 02:17 11144:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> それで上側も修正したら、キチンとツリー表示出来ました。\(^^)/ ヤッタ-

無事に正常表示になりましたね。よかったよかった。

> 今見たら私のバグバグなトンでもコードのコメントがそのまま大量に残っていますね。(^^;
> よくこの状態で修正できたと感心します。いや、ありがたいです。

だから前にも言ったけど、ほとんど迷彩のような。
あたかも、プログラムからバグを除去することを拒むかのような。
このコードを書いた人は、プログラムの完成を見ることなく、永遠にデバッグのぬるま湯に
浸かっていたいのか。
と、誤解してしまいそうなわけですよ。誤解ですよね?
#本心だったらいやすぎ


コメントが多いというのは、決して悪くはないんですよ。
問題は、それが何を意味しているかがわからないこと。
例えば、コードの右側のほうに
「この行のコメントをはずすと××になる」
とか
「※参考 ○○氏のコード」
などときちんと記載されていればいいのですよ。
あるいは、ymfcstなんかでも採用されているような感じで
「★マークの5行のコメントをはずすとほにゃらら」
みたいなものとか。
要は、konnoさんのコードの場合、有効な情報が全くないのがイマイチ。

プログラムにおけるコメントって、コンピュータではなく人間に対して書くものですから、
人間に対して意味のない情報は少ないほうがいい。
私も、プロの書いたコードなんてあんまり見たことがありませんが、まずは目標として
コードだけで、つまりコメント全くなしで、ここは何をやっているかがわかるような
ものを目指すらしい。そうすれば、そもそもコメントを入れなくてすむから。
おおむね、人はみな横着ですからね。コメントを考える手間も省きたいわけですよ。
ただ、それはある種の理想。そんなものが実現することはまずない。
ということで、次善の策。コメントだけを追いかけることで、そのコードが何をやって
いるかがわかるようにする。
つまり、それなりにプログラムを読んできた経験のある人の場合、初めて触れる言語で
あっても、コメントのあるコードであれば、まずコメントを読む。
私も、Vzのマクロを勉強するとき、ikubohさんだったかな、もう忘れましたが、誰かの
マクロコードのコメントを見て勉強した記憶があります。

ということで、必要なコメントはバシバシ入れましょう、ということでした。


11147/11135 CXB00940  としき           Re^3: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/07 02:18 11140:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> コメントの間違いにコメントするなんて、鬼畜ですぅ。(;_;)

いや、なんとなく間違っていそうだとは思ったけど、確信がもてなかったのですよ。
だって、#11135

> ・起動時オプション 1 で P000.DAT に素数を出力します。
> ・起動時オプション 2 で 表示もファイル出力もしません。カウントのみ

とはあったけど、起動時オプション 0 があるとは書いてなかったもので。

> 日付や指定範囲などもおかしいような気がするけど気にしない。(^^;

日付や範囲指定については、まだ見てもいない。
それより気になった部分がいくつかあって。
例えば、表示する素数の数の入力を求めるプロンプト、日本語の部分がコメント
になっていますが、これはなぜそうしているのか、とか。
メインというか j のループからは結構強引な脱出をしているな、とか。
そのループのコメントの「i;:c=c+1」っていったいなんだろう、とか。
outputのコメント、なんで素数が1個でも10000000個でも時間が同じなのかな、
とか。もしかしたら違うのかもしれないけど、この表現ではそれ以外の意図は
読み取れない。
タイマーのサブルーチンの冒頭、謎のif文がコメントアウトされているけど、
これはいったいなんだろう、とか。

一般にコードの概要をつかむにはコメント文が有効のはずなんだけど、全く有効に
見えない気がする。


11148/11048 BQO00549  konno            Re^9: としきさんの msgview 完璧なツリー
( 1) 24/03/07 22:04 11146:としきさんへのコメント コメント数:1
> このコードを書いた人は、プログラムの完成を見ることなく、永遠にデバッグのぬるま湯に
> 浸かっていたいのか。
> と、誤解してしまいそうなわけですよ。誤解ですよね?
> #本心だったらいやすぎ

もちろん誤解ですよ。(^^; ただ世の中変人が多いのでそういう人もいるかも。(いねえよ)

> コメントが多いというのは、決して悪くはないんですよ。
> 問題は、それが何を意味しているかがわからないこと。

超絶ハイテク技などはそういうコメントが欲しいものですね。

> 要は、konnoさんのコードの場合、有効な情報が全くないのがイマイチ。

うう、これは BASIC コードのことを言っているのですよね。
アセンブラやVZマクロにはかなりコメントを入れているつもりです。(^^;

> ということで、次善の策。コメントだけを追いかけることで、そのコードが何をやって
> いるかがわかるようにする。

これは上で書きましたが、BASICは自分で読めるものだからあまりコメントを入れないのですね。
でも後で読むと何をやっているのかわからなくなってしまっています。(>_<)
ということで、今はサブルーチンのタイトルや説明、各行のコメントを
なるべく入れるようにやっている最中です。(^^;
達人のコードにコメントが無いのは必要を感じないからなんでしょうね。

> 私も、Vzのマクロを勉強するとき、ikubohさんだったかな、もう忘れましたが、誰かの
> マクロコードのコメントを見て勉強した記憶があります。
> ということで、必要なコメントはバシバシ入れましょう、ということでした。

ikubohさんなど達人のマクロはコメントがないと何をやっているのか全く分からないレベルですからね。
私もこれからは他人が読むことを念頭に入れてコメントを入れるようにします。

# 昨日の自分は他人と言いますからね。(゚゜)☆\(--#) それはおのれじゃ


11149/11135 BQO00549  konno            Re^4: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/07 22:28 11147:としきさんへのコメント コメント数:1
> だって、#11135
> > ・起動時オプション 1 で P000.DAT に素数を出力します。
> > ・起動時オプション 2 で 表示もファイル出力もしません。カウントのみ
> とはあったけど、起動時オプション 0 があるとは書いてなかったもので。

お察しの通りオプション 0 はありません。(^^;
あ、P000.DAT も S000.DAT の間違いですね。P000 は PRIME2 の方でした。(>_<)

> 例えば、表示する素数の数の入力を求めるプロンプト、日本語の部分がコメント
> になっていますが、これはなぜそうしているのか、とか。

最初日本語で書いたけどUSモードだと表示しないとか色々面倒なのでコメントにしてしまい
そのまま放置してました。(^^;

> メインというか j のループからは結構強引な脱出をしているな、とか。

これは良くない抜け方でしたね、気が向けば直します。(^^;

> そのループのコメントの「i;:c=c+1」っていったいなんだろう、とか。

これは元は PRINT文だったのを、PRINT1: というサブルーチンに変更したので

  IF j>SQR(i) THEN gosub PRINT1 i;:c=c+1	' 素数
             ↓
  IF j>SQR(i) THEN gosub PRINT1  'i;:c=c+1	' 素数

こういうように、コメントで手抜きをしてました。(^^;
まあ、飛び先でやってることをコメントに残したとも言えなくもないし。(^^;

> outputのコメント、なんで素数が1個でも10000000個でも時間が同じなのかな、
> とか。もしかしたら違うのかもしれないけど、この表現ではそれ以外の意図は
> 読み取れない。

'Number.1	    0: 0' 4 	Prime Number = 9592 
'Number.10000000	    0: 0' 4 	Prime Number = 9592 

これですね、Prime Number が同じということでお察しください。(^^;
手抜きの残骸だったのかなんなのか、今はもうわからないです。(^^;

> タイマーのサブルーチンの冒頭、謎のif文がコメントアウトされているけど、
> これはいったいなんだろう、とか。

これも借り物のルーチンの残骸ですね。他人に見せることは全く意識してないのです。

> 一般にコードの概要をつかむにはコメント文が有効のはずなんだけど、全く有効に
> 見えない気がする。

私のソースはこんなのばっかりなので、元々は公開する気も無かったんですがねぇ。(^^;
出来る範囲で改善するようにします。m(__)m


11150/11135 BQO00549  konno            オリジナルの prime.bas のソース
( 1) 24/03/07 22:43 11135:konnoさんへのコメント コメント数:1
オリジナルの prime.bas のソースはこれだけです。

INPUT n
IF MOD(n,2)=0 THEN
  IF n=2 THEN PRINT "素数" ELSE PRINT "合成数"
ELSE
  FOR i=3 TO SQR(n) STEP 2
    IF MOD(n,i)=0 THEN EXIT FOR 
  NEXT i
  IF i<=SQR(n) THEN PRINT "合成数" ELSE PRINT "素数"
END IF
END


IF 〜 ELSE 〜 END IF をうまく使ってシンプルでエレガントですね。
TurboBasic で同じやり方はわからなかったので、自分なりに改造したのが以下

FOR i=2 TO n 
  IF i=2 THEN gosub PRINT i;:c=c+1		' 2 素数
  i2=i/2:i3=int(i/2):IF i2=i3 THEN goto EXIT2	' 合成数
  FOR j=3 TO SQR(i) STEP 2			' 偶数をスキップ
    i2=i/j:i3=int(i/j):IF i2=i3 THEN goto EXIT1 ' 合成数
  NEXT j
EXIT1:
  IF j>SQR(i) THEN gosub PRINT i;:c=c+1		' 素数
EXIT2:
NEXT i:i=i-1

としきさんにループの抜け方が強引と言われたけど、うーむ・・・

    IF MOD(n,i)=0 THEN EXIT FOR 
ここは
    i2=i/j:i3=int(i/j):IF i2=i3 THEN goto EXIT1 ' 合成数
             ↓
    i2=i/j:i3=int(i/j):IF i2=i3 THEN i=i+1	' 合成数
にすればよかったのかな。
つい、EXIT という構文に引っ張られたような・・・(^^;


11151/11048 CXB00940  としき           Re^10: としきさんの msgview 完璧なツリー
( 1) 24/03/08 01:08 11148:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> > 要は、konnoさんのコードの場合、有効な情報が全くないのがイマイチ。
> うう、これは BASIC コードのことを言っているのですよね。

BASICもそうですが、先日お送りいただいたperlのコードも含めて、です。

> ということで、今はサブルーチンのタイトルや説明、各行のコメントを
> なるべく入れるようにやっている最中です。(^^;

うん、まぁ、最終的な完成品を作るにあたってそういうことは必要ですけどね。
私のような横着な人間はどうするかというと、プログラムを作る前に、日本語で
設計します。そして、その設計をそのままコードの中にコメントとして残しておく。
例えば、今回のkonnoさんのprime2.basを作ろうとするなら、私の書きそうな設計
は以下のような感じ。

 初期設定
 求める素数上限入力
 メインルーチン(サンプルコードを最大限流用)
 終了処理(キー入力待ち必須)

 出力サブルーチン
 ファイル出力
 エラー終了ルーチン(自作の××からコピペ)
 タイマールーチン(自作の○○からコピペ)

こんな感じで設計ができたら、あとは切った貼った、コピペできないところは仕方
ない作るか。
という風にするわけです。
そうすれば、わざわざコメントを書くということはなくなります。
その上、設計をじっと見つめて、例えば、出力部分はもうちょっと整理できそうだ、
とか、エラーのルーチンはそのままコピペだとイマイチかも、みたいなことも考え
付いたりするわけですよ。
そういえば昔、どこかに似たようなことも書いた気が、と思って検索したら。
nifty:FGALDC/MES/15/#19030
に似たようなことを書いていた。
そうか、ikubohさんではなくてEmmettさんのマクロで勉強したのか。

いろいろなことを書きましたが。
結論は、楽をしましょうよ、ということに尽きるわけで。


11152/11048 BQO00549  konno            Re^11: としきさんの msgview 完璧なツリー
( 1) 24/03/09 01:38 11151:としきさんへのコメント コメント数:1
> BASICもそうですが、先日お送りいただいたperlのコードも含めて、です。

そうでした、直してもらったばかりなのに perl のことを忘れていました。m(__)m

> 私のような横着な人間はどうするかというと、プログラムを作る前に、日本語で
> 設計します。そして、その設計をそのままコードの中にコメントとして残しておく。
> 例えば、今回のkonnoさんのprime2.basを作ろうとするなら、私の書きそうな設計
> は以下のような感じ。

なるほど、これをそのまま各ルーチンのタイトルに使うのですね。
私は手を付けてからどうするか考える癖があるみたいで、
今すぐこのスタイルに切り替えるのは難しそうです。(^^;
でも参考になりました。やってみたいと思います。

> そういえば昔、どこかに似たようなことも書いた気が、と思って検索したら。
> nifty:FGALDC/MES/15/#19030
> に似たようなことを書いていた。
> そうか、ikubohさんではなくてEmmettさんのマクロで勉強したのか。

そうでしたか、実は私も「コメントの多いマクロ」で Emmettさんを思い出してました。(^^;
その Emmettさんの発言を見ると

> 》 僕は、マクロを書く時はとりあえずグローバルマクロからとにかく書き始めます。
> 》 僕は、アルゴリズムを最初にどこかにメモしておいて、それに従ってプログラム
> 》 を組んで行くということはやったことがありません。いつでもいきなり、グロー
> 》 バルの1行目から、じかに書き始めます。

私とおんなじですね。(^^;
それに対してとしきさんも

> あぁ、なるほど、やっと Emmett さんのマクロ作法がわかったような気がします。
> 基本的な考え方としては、私も Emmett さんとほとんど変わりません。
> とっても安心しました。

このように同意していますが、その後に

> でも、大きく異なるところは、私の場合、仮想プログラム言語というかメタ言語
> というか、まぁ日本語のようなもので書いているのです。で、大体まとまったら
> マクロに翻訳する、と。

こう書いていますね。やっぱりスタイルが違うと感じます。(^^;
もちろん、としきさんの方が正統派だと思います。

> いろいろなことを書きましたが。
> 結論は、楽をしましょうよ、ということに尽きるわけで。

楽をする、という意味では、としきさんのような正統派のやりかたが良いと思います。
それが出来ない私は、やっぱり楽をしようと思っていないのかもですね。(^^;
それよりも早く頭の中のアイデアをコードにしたいという欲求が強いのでしょう。(^^;
# そうしないとアイデアが消えてしまいそうだから。(^^;;

11153/11048 CXB00940  としき           Re^12: としきさんの msgview 完璧なツリー
( 1) 24/03/09 11:17 11152:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
多分、最大というか基本的な違いはここ。

> それよりも早く頭の中のアイデアをコードにしたいという欲求が強いのでしょう。(^^;
> # そうしないとアイデアが消えてしまいそうだから。(^^;;

私はアイディアをコードではなく日本語で考えている、ということ。
だから、日本語でメモをしている。
逆に言うと、ナイスなコードを思いつく、ということはあんまりなさそうです。

あと、前述のEmmettさんとの対話の部分、読み直して、もしかしたら私に誤解が
あったかもしれないというのがkonnoさんの指摘で気がついた。

> > 》 僕は、アルゴリズムを最初にどこかにメモしておいて、それに従ってプログラム
> > 》 を組んで行くということはやったことがありません。いつでもいきなり、グロー
> > 》 バルの1行目から、じかに書き始めます。
>
> > あぁ、なるほど、やっと Emmett さんのマクロ作法がわかったような気がします。
> > 基本的な考え方としては、私も Emmett さんとほとんど変わりません。
> > とっても安心しました。
>
> このように同意していますが、その後に

このときの薄らぼんやりとした記憶では、私、サブルーチンから書き始めるのでは
なく、全体の大枠から書き始める、という意味でEmmettさんと同じだな、と感じた
ように覚えています。
確かにこの部分、解釈によってはいろいろと怪しいかもしれない。


11154/11048 BQO00549  konno            Re^13: としきさんの msgview 完璧なツリー
( 1) 24/03/09 23:45 11153:としきさんへのコメント コメント数:1
> 私はアイディアをコードではなく日本語で考えている、ということ。
> だから、日本語でメモをしている。
> 逆に言うと、ナイスなコードを思いつく、ということはあんまりなさそうです。

うーむ、私もアイデアが浮かんだ時点では、コードではなく日本語な気もしますが
コード的な、パズルのピース的な漠然としたイメージなのかもしれませんね。

> このときの薄らぼんやりとした記憶では、私、サブルーチンから書き始めるのでは
> なく、全体の大枠から書き始める、という意味でEmmettさんと同じだな、と感じた
> ように覚えています。
> 確かにこの部分、解釈によってはいろいろと怪しいかもしれない。

普通、枝葉であるサブルーチンから書き始める人はいませんよね。(^^;
私も Emmettさんの書き込みを読み直したら、何か違う気がしてきました。

> 》 いつでもいきなり、グローバルの1行目から、じかに書き始めます。

ここ、私なら始めに類似したプログラムを探してそれを修正して使おうとします。
ゼロから書き始めるなんて面倒だと思うので私はほとんどやったことがないのですよ。
# それが改造人間の定めなのさ・・・・ ルルルー・・・


11155/11048 CXB00940  としき           Re^14: プログラムの作り方
( 1) 24/03/10 13:59 11154:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
いいかげん、タイトルを変えるべきだということに遅まきながら気がつきました。
いまさら、という気も大いにしますが。
そして、たいそうな内容を書くわけでもない。

> ここ、私なら始めに類似したプログラムを探してそれを修正して使おうとします。
> ゼロから書き始めるなんて面倒だと思うので私はほとんどやったことがないのですよ。

類似したプログラムが見つからないとき、というのも私の場合はたまにある。
ん〜、最近はあんまりそういうこともありませんが。
例えば、野ざらし言#569 からのツリーで作ったマクロ。
こういう案件、konnoさんはあまり手を出さないということでしょうか。
私も最近はそういうことがなくなったということは、年をとったせいかも。
いかんなぁ。


11156/11135 CXB00940  としき           Re: オリジナルの prime.bas のソース
( 1) 24/03/10 18:50 11150:konnoさんへのコメント コメント数:2
参照先:http://toshiki.la.coocan.jp/
> オリジナルの prime.bas のソースはこれだけです。

なるほど、MODって関数なんですね。
N88-BASICでは演算子なんですけどね。

> INPUT n
> IF MOD(n,2)=0 THEN
>   IF n=2 THEN PRINT "素数" ELSE PRINT "合成数"
> ELSE
>   FOR i=3 TO SQR(n) STEP 2
>     IF MOD(n,i)=0 THEN EXIT FOR 
>   NEXT i
>   IF i<=SQR(n) THEN PRINT "合成数" ELSE PRINT "素数"
> END IF
> END

これをそのままN88-BASICに移植すると、こんな感じかなぁ。
実行していないので、そのまま動くかどうかはわかりません。

100 INPUT N
110 IF N MOD 2=0 THEN 120 ELSE *ELSE1
120     IF N=2 THEN PRINT "素数" ELSE PRINT "合成数"
130     GOTO *ENDIF1
140 *ELSE1
150     I=3
160     WHILE (I<=SQR(N)) AND (N MOD I<>0)
170         I=I+2
180     WEND 
190     IF I<=SQR(N) THEN PRINT "合成数" ELSE PRINT "素数"
200 *ENDIF1
210 END

解説すると

・MODは演算子に変更した。
・110行目のTHENの行番号は省略できたかもしれない。
 つまり、NULLの行番号が許容されるのなら、その場合は単に次の行に制御が移る。
・ループの脱出条件が複数あるので、FORループからWHILEループに変更した。


> TurboBasic で同じやり方はわからなかったので、自分なりに改造したのが以下

TurboBasicって、MOD関数またはMOD演算子ってないんですか?
あと、NEXTの後ろの変数って省略できないんですか?
でもコンパイラ言語だからあんまり関係ないのか。
8ビットのBASICのころは、NEXTの後ろの変数を省略するとマイクロ秒の単位で速く
なると信じられていて、だから私も省略するのが癖になっているのですよ。
高速化といえば、最初のFORの直下のIF文。
これはループの中に入れておくのはもったいない。
だって、1回しか比較する必要がないものを何回も比較することになるわけだから。

> i=2:gosub PRINT i;:c=c+1		' 2 素数
> FOR i=3 TO n 

こんな感じで十分だと思う。


11157/11048 BQO00549  konno            Re^15: プログラムの作り方
( 1) 24/03/11 00:19 11155:としきさんへのコメント
> いいかげん、タイトルを変えるべきだということに遅まきながら気がつきました。

私も途中で思ったのですが、まあいいかと。(^^;

> 類似したプログラムが見つからないとき、というのも私の場合はたまにある。
> ん〜、最近はあんまりそういうこともありませんが。
> 例えば、野ざらし言#569 からのツリーで作ったマクロ。
> こういう案件、konnoさんはあまり手を出さないということでしょうか。

そういう案件も多いと思います。その場合でも入出力など使えるルーチンは切り貼りで済まします。
そういえばテレビドラマ「ガリレオ」の教授は思いついたらいきなり数式を書きなぐっていましたね。
そういうやり方ができるのは、c.mosさんくらいではないかと。

> 私も最近はそういうことがなくなったということは、年をとったせいかも。

私も年を取って、昔のやり方でしか出来なくなったような気がします。
BASICのソースは普通大文字で書きますが、最近小文字の行を混在させてますよね。
そこは、自分で一から書いているよという自己主張なのかもしれません。(^^;


11158/11135 BQO00549  konno            Re^2: オリジナルの prime.bas のソース
( 1) 24/03/11 00:45 11156:としきさんへのコメント コメント数:1
> なるほど、MODって関数なんですね。
> N88-BASICでは演算子なんですけどね。

あう、MOD は演算子でしたね、失礼しました。

> これをそのままN88-BASICに移植すると、こんな感じかなぁ。
> 実行していないので、そのまま動くかどうかはわかりません。

> TurboBasicって、MOD関数またはMOD演算子ってないんですか?

もちろんありますが、32767以上は駄目みたいです。

> あと、NEXTの後ろの変数って省略できないんですか?
> でもコンパイラ言語だからあんまり関係ないのか。

省略できると思います。指定した方がわかりやすいと思うので。

> 8ビットのBASICのころは、NEXTの後ろの変数を省略するとマイクロ秒の単位で速く
> なると信じられていて、だから私も省略するのが癖になっているのですよ。

コンパイラ言語ではあんまり関係ないのかもしれないなと思います。

> 高速化といえば、最初のFORの直下のIF文。
> これはループの中に入れておくのはもったいない。
> だって、1回しか比較する必要がないものを何回も比較することになるわけだから。

これはその通りですね、最初の FOR文はいらなかったですね。
うっかりしていました。(^^;
 SOSU のソースから切り貼りしたのをそのまま残してしまったのかなぁ。(^^;



11159/11135 CXB00940  としき           Re^3: オリジナルの prime.bas のソース
( 1) 24/03/12 02:16 11158:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> あう、MOD は演算子でしたね、失礼しました。

???
オリジナルの prime.bas では関数になっていますよね。
ということは、十進BASICでは関数である、ということだと思いますが?
もしかしたら演算子にもあるかもしれませんけどね。

> > TurboBasicって、MOD関数またはMOD演算子ってないんですか?
> もちろんありますが、32767以上は駄目みたいです。

N88-BASICのリファレンスでは、演算前に小数点以下は切り捨てられるとはあります
が、上限については記載がありません。試してみたいところではあります。


11160/11135 CXB00940  としき           Re^5: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/12 12:32 11149:konnoさんへのコメント コメント数:2
参照先:http://toshiki.la.coocan.jp/
> これですね、Prime Number が同じということでお察しください。(^^;
> 手抜きの残骸だったのかなんなのか、今はもうわからないです。(^^;

いや、konnoさんがわからないくらいですから、私にも察することはできません。
それはさておき。
マジでN88-BASICに移植することを考えています。
で、まだ逐語的な変換には手をつけていないのですが。
気になったのがここ。

if dsp=1 then print#1,"":gosub 1010
if n>2000 then gosub 1000			'output

dsp=1 かつ n>2000 のときは2回出力されるようなんですが、これって仕様的に
なんとなく妙な気がします。これで正しいのですよね?
あと、変数 j2 と j3 も、何をやっているのかよくわからない。
この2つを足し算しているところもあるし。


11161/11135 BQO00549  konno            MOD と ¥ の有効範囲
( 1) 24/03/12 22:45 11159:としきさんへのコメント コメント数:1
> オリジナルの prime.bas では関数になっていますよね。
> ということは、十進BASICでは関数である、ということだと思いますが?
> もしかしたら演算子にもあるかもしれませんけどね。

あうう、キチンと読んでいませんでした。
てっきり私がまた間違った言い方をしてしまったのかと。(^^;

> > > TurboBasicって、MOD関数またはMOD演算子ってないんですか?
> > もちろんありますが、32767以上は駄目みたいです。
> N88-BASICのリファレンスでは、演算前に小数点以下は切り捨てられるとはあります
> が、上限については記載がありません。試してみたいところではあります。

十進BASICで関数を使っているのは、MOD に制限があるからかも。
思いついて TurboBasicでテストプログラムを作ってみました。

'tmod.bas
screen 0
print " input ";:input a					'
OPEN "mod.dat" FOR append AS#1			'ファイル出力
print "  a    MOD i ","2bytes "," Froat   "," a / i"
for i=2 to 5
  bb=int((a/i-int(a/i))*i+.5)			' MOD 代替式
  print a;"mod";i,a mod i,bb,a/i 
  print#1, a;"mod";i,a mod i,bb,a/i '
next
print "  a     \  i","2bytes "," Froat   "," a / i"
for i=2 to 5
  cc=int(a/i)					' \ 代替式
  print a;" \ ";i,a \ i,cc,a/i  '
  print#1,a;" \ ";i,a \ i,cc,a/i  '
next

PRINT#1,""
CLOSE#1
100 '入力待ち
print "  push eny key  ";
a$=input$(1)
if a$="" then 100
end

結果

  a  MOD/\ i  2bytes        Froat         a / i"
 32767 mod 2   1             1             16383.5 
 32767 mod 3   1             1             10922.33333333333 
 32767 mod 4   3             3             8191.75 
 32767 mod 5   2             2             6553.4 
 32767  \  2   16383         16383         16383.5 
 32767  \  3   10922         10922         10922.33333333333 
 32767  \  4   8191          8191          8191.75 
 32767  \  5   6553          6553          6553.4 

 32768 mod 2   0             0             16384 
 32768 mod 3  -2             2             10922.66666666667 
 32768 mod 4   0             0             8192 
 32768 mod 5  -3             3             6553.6 
 32768  \  2  -16384         16384         16384 
 32768  \  3  -10922         10922         10922.66666666667 
 32768  \  4  -8192          8192          8192 
 32768  \  5  -6553          6553          6553.6 

 32769 mod 2   0             1             16384.5 
 32769 mod 3  -2             0             10923 
 32769 mod 4   0             1             8192.25 
 32769 mod 5  -3             4             6553.8 
 32769  \  2  -16384         16384         16384.5 
 32769  \  3  -10922         10923         10923 
 32769  \  4  -8192          8192          8192.25 
 32769  \  5  -6553          6553          6553.8 

これを見るとやはり 32768 以上では MOD も ¥ も使えないようですね。
実は今 STIME のタイマーで計算がバグって困ってたんですが、これが原因だったようです。
テストプログラム作成は無駄ではなかった。(~~;


11162/11135 BQO00549  konno            Re^6: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/12 23:45 11160:としきさんへのコメント
> マジでN88-BASICに移植することを考えています。
> で、まだ逐語的な変換には手をつけていないのですが。

私も気になったので、NP2 でやってみました。(^^;
N88BASIC.EXE は画面がピンクになって動かないみたいです。(>_<)
BASIC.COM がコンパイラなんですね。無事コンパイルしたのを実行したら、
入力した数字が素数かどうかを表示するのですね。(^^;

> 気になったのがここ。
> if dsp=1 then print#1,"":gosub 1010
> if n>2000 then gosub 1000			'output
> dsp=1 かつ n>2000 のときは2回出力されるようなんですが、これって仕様的に
> なんとなく妙な気がします。これで正しいのですよね?

もちろんまずいです。(^^; いい加減なだけでした。

> あと、変数 j2 と j3 も、何をやっているのかよくわからない。
> この2つを足し算しているところもあるし。

これですね。

810 if i<j2 then return 			'dsp2でカウント表示
j2=j2+j3  
820 LOCATE 5,1:PRINT i;	'

j2 は表示するまでのカウント数かな?
j3 はオプションの数字で、カウントがこの数字以上になったら次の数字ぶん表示しない
という感じですかね。ほとんど意味がないようですが。(^^;


11163/11135 CXB00940  としき           Re^2: オリジナルの prime.bas のソース
( 1) 24/03/17 17:09 11156:としきさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
お彼岸の墓参りの相談で実家に顔を出してきました。
その折に、30分ほどですが、PC-98に触れて。

> これをそのままN88-BASICに移植すると、こんな感じかなぁ。
> 実行していないので、そのまま動くかどうかはわかりません。

動きました。
細かくはチェックしていませんが、概ね、一発完動。
一発完動教徒なら、このくらい当たり前、というかもしれませんけどね。

> ・110行目のTHENの行番号は省略できたかもしれない。
>  つまり、NULLの行番号が許容されるのなら、その場合は単に次の行に制御が移る。

あ、ここが省略できるかは確認してこなかった。
次に行ったときには確認してこよう。といいつつ、忘れそうだけど。

次の週末、金曜日から土曜日にかけて実家に泊まることになったので、それまでには
prime2.basのN88-BASICへの移植を終わらせたいなぁ。


11164/11135 CXB00940  としき           Re^6: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/17 17:26 11160:としきさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> マジでN88-BASICに移植することを考えています。
> で、まだ逐語的な変換には手をつけていないのですが。

ぼちぼち、移植を始めています。

・コマンドラインオプションは取得できないので、プログラム冒頭で入力するように
 した
・まず真っ先にやったのは、locateのxとyの総入れ替え
・N88-BASICでは、実数型も倍精度型も扱える上限は 1.7*10^38 で差がないため、
 変数は全て単精度実数に変更
 →実は覚えていなかったけど、FOR文のカウントに使うループ変数に倍精度型は
  使えないのだとか。マニュアルに明記してあった
・私の趣味でファイル番号指定の「#1」の前には全て半角空白を入れた
 (たぶん、文法的には不要だと思うけど覚えていない)
#11160で私が指摘した謎の2つのif文はdsp=1のほうだけ残した
・ファイル出力の際に、ループ内でいちいちOPEN/CLOSEするのは非効率的だと思う
 ので、最初で開いて最後に閉じるだけにした

今の所はそんな感じ。
とりあえず、机上デバッグでどこまでできるか。
忘れていることが多すぎるなぁ。


11165/11135 BQO00549  konno            Re: MOD と ¥ の有効範囲
( 1) 24/03/18 00:36 11161:konnoさんへのコメント コメント数:1
MOD と \ の有効範囲テストを NP2 でやってみました。
結果は 32767 を超えると オーバーフローエラーになりました。
また、N88BASICでは行番号が必要で、タブは使えなかったので
以下のようにプログラムを修正しました。

10 'N88mod.bas
14 print " input ";
20 input a                              '
30 OPEN "mod.dat" FOR append AS#1                       'ファイル出力
40 print "  a    MOD i ","2bytes "," Froat   "," a / i"
50 for i=2 to 5
60   bb=int((a/i-int(a/i))*i+.5)                        ' MOD 代替式
70   print a;"mod";i,
72   if a>32767 then print "over! ", else print a mod i, '32767 over
74   print bb,a/i 
80   print#1, a;"mod";i,
82   if a>32767 then print#1,"over! ", else print#1, a mod i, ' 32767 over
84   print#1, bb,a/i '
90 next i
100 print "  a     \  i","2bytes "," Froat   "," a / i"
110 for i=2 to 5
120   cc=int(a/i)                                       ' \ 代替式
130   print a;" \ ";i,
132   if a>32767 then print "over! ", else print a \ i, ' 32767 over
134   print cc,a/i  '
140   print#1,a;" \ ";i,
142   if a>32767 then print#1,"over! ", else print#1, a \ i, ' 32767 over
144   print#1,cc,a/i  '
150 next i
160 PRINT#1,""
170 CLOSE#1
180 '入力待ち
190 print "  push eny key  ";
200 a$=input$(1)
210 if a$="" then 180
220 end


エラーになるのと不正な結果になるのとどっちが良いかはともかく
MOD と \ の有効範囲は 普通は 32767 までのようですね。
だから素数のような桁数が多くなる計算は UBASIC などを使うのが良いのでしょうね。


11166/11135 CXB00940  としき           Re^2: MOD と ¥ の有効範囲
( 1) 24/03/20 01:44 11165:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> また、N88BASICでは行番号が必要で、タブは使えなかったので
> 以下のようにプログラムを修正しました。

うわぁ、ものすごく違和感がある見た目のプログラムになるんだな。
最大の理由は、おそらく、行番号のあるBASICにもかかわらず、コードが小文字だと
いうところからくるものだと思います。
行番号の不要なBASICなら小文字のコードでも全く違和感は感じないんですけどね。
どうやら、完全に、行番号のあるBASICは大文字、という感性に毒されている模様。
あと、もしかしたら些細かもしれないけど、行番号が等間隔ではないところにも、
まぁまぁ違和感を感じる。これは、同じN88であっても、インタプリタ型と違って
コンパイラ型の場合、テキストエディタでソースを書くことになるわけですから、
行番号の振り直しには手間がかかりますので、ある程度は仕方ないか。

ちょっとここで、行番号に関する昔話でも。
日本では、8ビットパソコンの草創期から、BASICのリストでは、行番号は10から
始まって10番ごと、というのがデファクト。なぜ10番ごとかというと、コードの追加
をする場合、その間の番号が使えるから、ということのようです。これは、日本に
BASICがやってくる前から、そういうのが普通だったらしい。
ただ、コードを追加すると当然、それは10番ごとにはならない。
そこで、BASICインタプリタにはRENUMというコマンドが用意されました。
renumberの略で、要するに行番号を振りなおしてくれるわけです。
これはNECのBASICにもシャープのBASICにもあったので、おそらく、東芝のBASICにも
あったのではないかなぁ。そしてたぶん、どこのものもほとんど同じだと思いますが、
NECの場合はデフォルトで、新しく付け直した行番号の開始番号は10からで、間隔も
10ごとに付け直してくれました。
コンパイラの場合は当然、こういう便利な機能があるわけではありませんから、番号
の振り直しは自前で人間がやらなければならないので、いろいろと面倒。

その後、BASICでもループなどをきちんとインデントするのが当たり前の時代になる
と、ここで問題になったのが、行番号の桁数。せっかくインデントを整えても、
90から100とか、990から1000といった行番号の桁数が変わるところでインデントが
崩れてしまう。そこでどうするかというと、例えば990行までに収まらないプログラム
なら1000行からはじめればよい、ということになりました。この部分、私ならなにも
10番間隔にこだわらず5番間隔でもいいじゃないか、それこそ最終的な完成形はもう
これ以上追加削除をしないということを強調する意味で1番間隔でいいのではないか、
と思うのですが、どうも世の中の大勢は10番間隔が好きみたい。
あと、間隔はいくつでもいいのですが、プログラムの最初から最後まで等間隔は
守るべき、というのも世間の多数派のようです。というか、RENUMコマンドを使えば
必然的に等間隔になるわけです。ここで例えば、いろいろとコードを追加した際に
その部分を追加したということを目立たせるためにあえて残すべき、という流派の
人もいたらしいですが、これはその後、少数派になりました。なぜかというと、
当時のBASICの編集画面だと、最近のテキストエディタと違い、それが何行目かと
いうことが表示されないわけです。ここで、例えば200行に GOTO 800 とあれば、
もし10番ごとの等間隔なら、ジャンプの飛び先はプログラムリスト上で60行先に
なるわけで、プリントアウトされた紙で追いかけやすい、という実利的な理由が
あったわけです。

と、いうことで。
もしBASICのプログラムをインタプリタに読み込ます機会があったら、RENUMコマンド
をかけた結果を保存しておくべきでしょう。


11167/11135 BQO00549  konno            Re^3: MOD と ¥ の有効範囲
( 1) 24/03/21 00:00 11166:としきさんへのコメント コメント数:1
> うわぁ、ものすごく違和感がある見た目のプログラムになるんだな。
> 最大の理由は、おそらく、行番号のあるBASICにもかかわらず、コードが小文字だと
> いうところからくるものだと思います。

なるほど、そう言われればそんな感じもしますが、私はもう気にしてなかったので。(^^;

> 行番号の不要なBASICなら小文字のコードでも全く違和感は感じないんですけどね。
> どうやら、完全に、行番号のあるBASICは大文字、という感性に毒されている模様。

私はbasic歴が長いので、他の言語が小文字なのに違和感を感じました。今は無いですね。

> そこで、BASICインタプリタにはRENUMというコマンドが用意されました。
> renumberの略で、要するに行番号を振りなおしてくれるわけです。
> これはNECのBASICにもシャープのBASICにもあったので、おそらく、東芝のBASICにも
> あったのではないかなぁ。そしてたぶん、どこのものもほとんど同じだと思いますが、
> NECの場合はデフォルトで、新しく付け直した行番号の開始番号は10からで、間隔も
> 10ごとに付け直してくれました。

TBasicインタプリタは、RENUM 開始行番号,旧行番号,増分 となっています。
開始行番号は、新しくつける先頭の行番号の数値を指定します。
旧行番号は、付け替える初めの行を指定します。
でも私は使ったおぼえが無いですね。試したことはあるかもですが。

私の場合、行番号を振り直すと逆に頭の中のソースのイメージが壊れて混乱してしまう
気がしたので使わなかったのかもですね。再印刷もなかなか出来なかったし。(^^;

> と、ここで問題になったのが、行番号の桁数。せっかくインデントを整えても、
> 90から100とか、990から1000といった行番号の桁数が変わるところでインデントが
> 崩れてしまう。そこでどうするかというと、例えば990行までに収まらないプログラム
> なら1000行からはじめればよい、ということになりました。

これ、私はインデントなどしてなかったので、全く気になりませんでしたね。(^^;
だから今回のテストプログラムも 10番から付けてしまったのです。(^^;

> 必然的に等間隔になるわけです。ここで例えば、いろいろとコードを追加した際に
> その部分を追加したということを目立たせるためにあえて残すべき、という流派の
> 人もいたらしいですが、これはその後、少数派になりました。

どうやら私は少数派のようですね。(^^;

> 当時のBASICの編集画面だと、最近のテキストエディタと違い、それが何行目かと
> いうことが表示されないわけです。ここで、例えば200行に GOTO 800 とあれば、
> もし10番ごとの等間隔なら、ジャンプの飛び先はプログラムリスト上で60行先に
> なるわけで、プリントアウトされた紙で追いかけやすい、という実利的な理由が
> あったわけです。

私がNCプログラムを書いていた当時は、紙にプログラムを手書きしてからタイプライタに打ち込む形でした。
それが面倒に感じたのでパソコンに直接打ち込むスタイルを私が始めたのです。
紙テープに出力、印刷する時は行番号を N001 の形に自動変換していたので
もしかしたら行番号は RENUM していたかもしれません。もう忘れてしまいました。
私にとっては行番号は飾りでした。
# 偉い人にはそれがわからんのですよ。

それで狭い画面で行番号を頼りに確認するのが煩わしくて、スクリーンエデイタを欲したのです。
当時スクリーンエデイタといえば、ワードマスターとか10万以上もするようなのしか無かったと思います。
それで、結局自作のBASICインタプリタ用スクリーンエデイタもどきを作ったのでした。
そのために買ったのが、パソピア7だったという。(^^;
それが J3100SL に変わったころ、PSE や VZエデイタが出てきたのでした。

> もしBASICのプログラムをインタプリタに読み込ます機会があったら、RENUMコマンド
> をかけた結果を保存しておくべきでしょう。

その機会があればやってみたいと思います。
NP2 では、BASIC.COM は動かないみたいですが、これがインタプリタなのですよね。


11168/11135 CXB00940  としき           Re^4: MOD と ¥ の有効範囲
( 1) 24/03/21 11:14 11167:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 私はbasic歴が長いので、他の言語が小文字なのに違和感を感じました。

私もBASIC歴はそれなりに長いのですがね。
複数言語に触れたというのが大きな違いでしょうか。

> TBasicインタプリタは、RENUM 開始行番号,旧行番号,増分 となっています。

これはN88-BASICでもN-BASICでも同じです。

> でも私は使ったおぼえが無いですね。試したことはあるかもですが。

ここは逆というか、私は使いまくりでした。
特に便利に使っていたのが、GOTOの飛び先の行番号が実在しないときにはエラーを
表示してくれる機能。行の追加・削除を頻繁に行う場合には、これは必須という
くらいに便利でした。

> 私の場合、行番号を振り直すと逆に頭の中のソースのイメージが壊れて混乱してしまう
> 気がしたので使わなかったのかもですね。再印刷もなかなか出来なかったし。(^^;

この辺はよく理解できない。ということは、私の場合はあまり行番号に依存しないで
ソースをイメージしていたのかな。つまり、私にとっては、行番号なんて単なる飾り
だった、とか。
#私は偉くないから。

> これ、私はインデントなどしてなかったので、全く気になりませんでしたね。(^^;
> だから今回のテストプログラムも 10番から付けてしまったのです。(^^;

ここは私にとって大きな違い。
BASICでもバグの入りにくいコードを書こうと思っていたのでインデントしまくり。

> どうやら私は少数派のようですね。(^^;

別に少数派だからといって恥じる必要はさらさらありませんけどね。
ただ、多数派の言い分としては、そちらのほうがバグ取りがしやすい、というもの。
実際、私の経験からも、多数派のほうが正しそうな気がする。
ということで、バグ取りに悩まされたくないので、私も行番号をそろえていました。
あくまでも、実利優先、ということで。


11169/11135 CXB00940  としき           Re^3: オリジナルの prime.bas のソース
( 1) 24/03/22 23:02 11163:としきさんへのコメント
参照先:http://toshiki.la.coocan.jp/
宿直の際にものすごく多忙で。
1時間半ぐらいしか仮眠を取れなかったのですが、帰宅後すぐに実家から墓参り。
墓までの往路はいささか危なかったのですが、それでもおおむね安全運転。
墓掃除その他もろもろですっかり眠気は取れて、実家への復路はほぼ問題なし。

それはさておき、現在、実家です。

> > ・110行目のTHENの行番号は省略できたかもしれない。
> あ、ここが省略できるかは確認してこなかった。

省略できることを確認しました。
これでまた少しコードサイズが節減。


11170/11135 CXB00940  としき           Re^7: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/22 23:15 11164:としきさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> ぼちぼち、移植を始めています。

ん〜、なんとなく動いているっぽい。
といいつつ、特にファイル書き込みの部分はろくに動作確認をしていないのだけど。

・N88-BASICだと、デフォルトは白黒モードなので、COLORでの色表示がうまくない。
 →おやくそくのCONSOLEでカラーモードにした。
・時間表示の部分、私の趣味で分と秒の間もコロンにした。
・エラー処理ルーチンの最後、CLSがあるとエラーで終わったことがわからなく
 なりそうだったので、これは除去した。

明示的にkonnoさんのコードに手を加えたのはこんなところかな。
あとは、各行にきちんと行番号をつけてやれば完成。
自宅に戻ったらアップロードしたいな。


11171/11135 BQO00549  konno            Re^5: MOD と ¥ の有効範囲
( 1) 24/03/24 00:08 11168:としきさんへのコメント
> 別に少数派だからといって恥じる必要はさらさらありませんけどね。
> ただ、多数派の言い分としては、そちらのほうがバグ取りがしやすい、というもの。
> 実際、私の経験からも、多数派のほうが正しそうな気がする。
> ということで、バグ取りに悩まされたくないので、私も行番号をそろえていました。
> あくまでも、実利優先、ということで。

考えてみたら行番号必須のBASICインタプリタはプログラム言語全体では少数派なんですよね。
行番号付きのBASICインタプリタは作ったその場ですぐ実行できる初心者向きのお手軽な言語だと思います。
だから今でも教育用には使われているのでしょう。
本格的なプログラム言語には行番号は無いので、ラベルでジャンプしますよね。VZマクロも。

ということで、N88BASICなどと共用する場合を除いて行番号は無くす方向で行きたいと思います。
インデントは読みやすくなるのでなるべく心がけるようにします。


11172/11135 CXB00940  としき           Re^8: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/24 15:59 11170:としきさんへのコメント コメント数:2
参照先:http://toshiki.la.coocan.jp/
> 自宅に戻ったらアップロードしたいな。

アップロードしました。

tp://toshiki.la.coocan.jp/prime88.zip

期間限定。そのうちに削除します。

> といいつつ、特にファイル書き込みの部分はろくに動作確認をしていないのだけど。

こんな短いコードなのに、全ての条件分岐を網羅するホワイトボックステストは
行っていない。面倒になっちゃって。あぁ、横着。
とはいえ、画面表示とファイル出力の、最低限のチェックはしたので、少なくとも
一部はPC-98のDOS BASICで動作確認済み。
GOTOとGOSUBのジャンプはほとんどラベル化したので、行番号はなくても論理構造は
理解可能なはず。konnoさんのお持ちのTurboBasicなら、例えばcols.defのようなもの
を使って全ての行番号を削除しても、もしかしたらコンパイル可能かも。
ラベルの文法が違うからダメ、かな。

あと、もしかしたらほんのちょっとだけ高速化するかもしれない技術を一つ、導入
してみました。

1360     IF INT(I/2)*2 = I THEN *EXIT2
1380         WHILE (J<SQR(I)) AND (INT(I/J)*J<>I)

ここ、多くの処理系では割り算よりも掛け算のほうが速いと聞いたことがあるので、
割り算を2回するのではなく掛け算と割り算の組み合わせに変更してみました。
これでどのくらい早くなるかは測定していないからわからない。
処理系によっては、むしろ遅くなったりして。
konnoさんオリジナルのロジックよりは、使う変数も少なくなっている分だけ速く
なってるかもしれないけど、こんなもん、最近のコンパイラなら最適化してくれる
でしょ、という範囲かもしれない。
あとはまぁ、PC-88などの8ビットマシンならDMAを停めるとか、ナノピコ秒単位で
速度を稼ぐためにインデントを全て削除してマルチステートメント化するとか、
他にもいろいろと思いつく技はいくつかありますけどね。そこまではしていません。


11173/11135 BQO00549  konno            Re^9: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/25 02:00 11172:としきさんへのコメント コメント数:3
> アップロードしました。
> tp://toshiki.la.coocan.jp/prime88.zip

早速落として NP2 で動かしてみました。
#11162> BASIC.COM がコンパイラなんですね。
なんて書きましたが、正しくは BACICC.COM でした。
BASIC Compiler ということなのですね。(^^;

B.BAT
basicc %1.bas %1.exe %1.lib
%1.exe

これを見て間違いに気が付きました。(^^;

さて、実行してみてまず気が付いたのは、変数 MAX の表示が
1E+08
になっていました。浮動小数点の表示形式ですね。

1070 MAX=100000000#

えーと、定数の末尾に # を付けているのは倍精度指定なのですか?
変数 MAX は単精度のように思われます。

> > といいつつ、特にファイル書き込みの部分はろくに動作確認をしていないのだけど。

オプション指定 1 で ファイルがキチンと出来ました。
ただ、素数の個数が私のと違いますね。

p1000.DAT
Number.1000	  0: 0' 0   Prime Number = 168 

n1000.DAT  N88
Number.1000	  0: 0: 1   Prime Number = 169 

どちらかがカウント数を間違っているかと思い、VZで比較したら

p1000.DAT
 167 
 173 

n1000.DAT  N88
 167 
 169 		※ この行が多い
 173 

169 は、13*13=169 なので、素数では無いと思います。
今日は眠いのでこれ以上の調査は明日以降ということで。(^^;


11174/11135 CXB00940  としき           Re^10: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/25 23:13 11173:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> えーと、定数の末尾に # を付けているのは倍精度指定なのですか?
> 変数 MAX は単精度のように思われます。

おっしゃるとおりです。
変数を全て単精度指定に変更するときに修正をもらしたようです。
ただ、こちらは大勢に影響がありませんが

> 169 は、13*13=169 なので、素数では無いと思います。

こっちは大問題ですね。仕様どおりの挙動をしないのですから。
倍精度から単精度に精度を落としたことが悪いのか、それとも割り算と掛け算の
誤差の問題か。
いつ調査できるかわかりませんが、解決は図りたいと思います。


11175/11135 BQO00549  konno            PRIME88.BAS で 「169=素数?」問題
( 1) 24/03/26 20:11 11174:としきさんへのコメント コメント数:2
> > 169 は、13*13=169 なので、素数では無いと思います。
> 
> こっちは大問題ですね。仕様どおりの挙動をしないのですから。
> 倍精度から単精度に精度を落としたことが悪いのか、それとも割り算と掛け算の
> 誤差の問題か。

私は当初 NP2 のCPUエミュレーション等のバグを疑いました。
それで、anex86 でも試したのですが、結果は同じ。98NEXT では固まってしまいました。

次に疑ったのが、BASICコンパイラが壊れていないか。
1988/08/24  00:00            61,440 BASICC.COM
中身が壊れているることもありうるので、98実機での結果が知りたいところですね。

条件を色々変えて試しても結果は変わらなかったのですが、ひとつだけ

N88P.BAS
100 INPUT N
110 IF N MOD 2=0 THEN 120 ELSE *ELSE1
120     IF N=2 THEN PRINT "素数" ELSE PRINT "合成数"
130     GOTO *ENDIF1
140 *ELSE1
150     I=3
160     WHILE (I<=SQR(N)) AND (N MOD I<>0)
170         I=I+2
180     WEND 
190     IF I<=SQR(N) THEN PRINT "合成数" ELSE PRINT "素数"
200 *ENDIF1
202 input a
210 END

このプログラムでは、169 は「素数」と表示されます。
ところがオリジナルを若干修正した以下

PN88.BAS
100 'pn88.bas 
110  defdbl a-z                                 '倍精度指定
1000 INPUT n
1010 IF (n MOD 2)=0 THEN IF n=2 THEN PRINT "素数" ELSE PRINT "合成数"
1020 j!=sqr(n) 'ELSE
1030   FOR i!=3 TO SQR(n) STEP 2
1040     IF n MOD i!=0 THEN *EXIT1 
1050   NEXT i!
1052   *EXIT1
1060   IF i!<=SQR(n) THEN PRINT "合成数";i!;j! 
1062   IF i!>SQR(n) THEN PRINT "素数";i!;j!
1070 input a 'END IF
1080 END

このプログラムでは、169 は「合成数」と表示されます。
違いは、変数全体を倍精度にし、FOR 文の変数を単精度にしただけかな。
# うーん、これを反映させても改善しない。何故だー! (;_;)


11176/11135 BQO00549  konno            Re^10: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/27 00:26 11173:konnoさんへのコメント コメント数:2
> ここ、多くの処理系では割り算よりも掛け算のほうが速いと聞いたことがあるので、
> 割り算を2回するのではなく掛け算と割り算の組み合わせに変更してみました。
> これでどのくらい早くなるかは測定していないからわからない。
> 処理系によっては、むしろ遅くなったりして。

なるほど、そういうやり方もあるのですね。
このプログラムで 10000 指定の実行結果は

Number.10000	  0: 0:30   Prime Number = 1233 

このソースを私の FOR 文のに置き換えてみた結果は

Number.10000	  0: 0: 8   Prime Number = 1233 

実行時間が短縮されました。
コンパイラでは最適化でインタプリタと違う結果になるようです。
どこがどう効いたかわからないので、変更ソースを上げます。

1320 *START
1330 TM$=TIME$
1340 I=2:GOSUB *PRINT1
1350 FOR I=3 TO N                                        '★
1360  ' IF INT(I/2)*2 = I THEN *EXIT2                    '☆
1362   i2=i/2:i3=int(i/2):IF i2=i3 THEN goto *EXIT2      ' 合成数
1370 '    J=3                                            '☆
1380 '    WHILE (J<SQR(I)) AND (INT(I/J)*J<>I)           '☆
1382      FOR J=3 TO int(SQR(I)) STEP 2                  '★ 偶数をスキップ
1390 '      J=J+1                                        '☆
1392        I2=I/J:I3=INT(I/J):IF I2=I3 THEN GOTO *EXIT1 '★ 合成数
1400 '      WEND                                         '☆
1402      NEXT J                                         '★
1404      *EXIT1                                         '★
1406 '     if i=169 then print "   13 =";i;sqr(i);j:goto *exit2
1408 '     IF i=169 then if J=SQR(I) THEN *EXIT2
1410      IF SQR(I)<J THEN GOSUB *PRINT1
1420   *EXIT2
1430 NEXT I
1440 I=I-1

ちなみに、VGA版の結果は

Number.10000	  0: 0' 1   Prime Number = 1229 

結果の素数の数が 4 違いますね。

---  N88  --- 
 169 	13*13
 5041 	71*71
 6241 	79*79
 9409 	97*97

10000 で 4 箇所 合成数が含まれています。
何が原因かわからないです。


11177/11135 BQO00549  konno            Re: PRIME88.BAS で 「169=素数?」問題解決か
( 1) 24/03/27 22:56 11175:konnoさんへのコメント
不具合の原因がわかりました。
SQR() 関数の結果判定に問題が有ったようです。

PRIME98.BAS

1320 *START
1330 TM$=TIME$
1340 I=2:GOSUB *PRINT1
1350 FOR I=3 TO N                                   '
1360   i2=i/2:i3=int(i/2):IF i2=i3 THEN *EXIT2      ' 合成数
1370      j2=int(SQR(I))                            '
1380      FOR J=3 TO j2 STEP 2                      ' 偶数をスキップ
1390        I2=I/J:I3=INT(I/J):IF I2=I3 THEN *EXIT2 ' 合成数
1400      NEXT J                            
1410    IF J>SQR(I)+.0001 THEN GOSUB *PRINT1        '★
1420 *EXIT2
1430 NEXT I
1440 I=I-1

このように、SQR() に +0.0001 を足したら問題が解消されました。
計算精度の問題か、最小桁が切り捨てられているのでしょうか。
いくつ足せばいいのか桁を変えて試してみました。

1410    IF J>SQR(I)+.000001 THEN GOSUB *PRINT1		ng
Number.10000	  0: 0:29   Prime Number = 1233 
169  5041  6241  9409 	ng

1410    IF J>SQR(I)+.00001 THEN GOSUB *PRINT1		ng
Number.10000	  0: 0:30   Prime Number = 1232 
5041  6241  9409 	ng

1410    IF J>SQR(I)+.0001 THEN GOSUB *PRINT1		ok
Number.100000	  0: 2:29   Prime Number = 9592 

どうも N88BASIC の問題のような気がしますが、実機でどうなるか知りたいですね。


11178/11135 CXB00940  としき           Re^11: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/28 00:43 11176:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
あ、これはまずい。

> このプログラムで 10000 指定の実行結果は
> Number.10000	  0: 0:30   Prime Number = 1233 
> このソースを私の FOR 文のに置き換えてみた結果は
> Number.10000	  0: 0: 8   Prime Number = 1233 
> 実行時間が短縮されました。

この差は大きすぎる。プログラムに間違いがあるから。

> 1382      FOR J=3 TO int(SQR(I)) STEP 2                  '★ 偶数をスキップ
> 1390 '      J=J+1                                        '☆

ここのところ、STEP 2 なんだから、J=J+2 でなければならない。
単純にループ回数が2倍になってしまう。
ということで、おそらく、30秒は15秒ぐらいまで短縮できるはずだけど、それでも
やっぱり8秒までは縮まらないと思う。

SQR関数の精度のほうは、どうしようかな。


11179/11135 BQO00549  konno            SQRの計算式
( 1) 24/03/30 15:58 11178:としきさんへのコメント コメント数:1
SQRの計算を自前で出来ないか検索してみました。
「本の虫」のサイトの「平方根のアルゴリズム 」
https://cpplover.blogspot.com/2010/11/blog-post_20.html

ここがわかりやすかったのでここから引用します。
-----------------------------------------------------------

ここで使うのは、バビロニア人の方法(Babylonian method)と呼ばれている、歴史あるアルゴリズムである。
この方法は、手動でも、プログラミングでも、非常に簡単に計算できる、大変便利で汎用的なアルゴリズムである。
しかも、速度もそれほど遅くない。 

double sqrt( double s )
{
    double x = s / 2.0 ; // Is there any better way to determine initial value?
    double last_x = 0.0 ; // the value one before the last step

    while ( x != last_x ) // until the difference is not significant
    { // apply Babylonian method step
        last_x = x ;
        x = (x + s / x) / 2.0 ;
    }
    
    return x ;
}

-----------------------------------------------------------

これを TurboBasic に置き換えたテストが

3000 ' SQR1.BAS
3010 'defdbl a-z
3020 screen 0
3030 cls
3040 input s
3050 x = s / 2.0  '; // Is there any better way to determine initial value?
3060 lastx = 0.0 '; // the value one before the last step
3070 '    while ( x != lastx ) '// until the difference is not significant
3080 'loop1:
3090        lastx = x 
3100        x = (x + s / x) / 2.0 
3110   if   x <> lastx  then 3080 'loop1
3120   print "SQR(";s;")=";x,lastx
3130   input a
3140 end

3020行をコメントにすれば N88BASIC でも動作します。
これをサブルーチンにして PRIME88.BAS に貼り付けて

1320 *START
1330 TM$=TIME$
1340 I=2:GOSUB *PRINT1
1350 FOR I=3 TO N
1360     IF INT(I/2)*2 = I THEN *EXIT2
1370         J=3
1375         s=I:gosub 3050:s=xx                '★
1380         WHILE (J<s) AND (INT(I/J)*J<>I)    '★
1390             J=J+1                          '★★
1400         WEND
1410         IF J>s THEN GOSUB *PRINT1          '★
1420     *EXIT2
1430 NEXT I
1440 I=I-1

この結果は
Number.10000	  0: 0:14   Prime Number = 1229 

おお、素数が合ってるし、時間が半分になりました。
SQR()関数を2回実行していたのをサブルーチン1回にしたのが効いたみたいです。

さらに、★★ のところを
1390             J=J+2                          '★★
このように +2 に変更した結果
Number.10000	  0: 0: 9   Prime Number = 1229 

おお、時間がさらに短縮して、FOR文のループとほぼ同じになりました。
ちなみに FOR文のソースにこのサブルーチンを組み込んだら
Number.10000	  0: 0:11   Prime Number = 1229 

2〜3秒遅くなりましたね。これが関数とサブルーチンの速度差と思われます。
思ったよりも差が無いなぁ、というのが感想です。(^^;

素数のネタはこの辺でしまいにしたいところですね。


11180/11135 CXB00940  としき           Re: SQRの計算式
( 1) 24/03/30 23:41 11179:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> これを TurboBasic に置き換えたテストが

えと、whileのループをifのジャンプに変更したのはなぜでしょうか。
こちらのほうが速いのですか?

> 素数のネタはこの辺でしまいにしたいところですね。

そうですね。
明日、31日に実家へ行くので、時間が取れたら実機でいくつか試したいところ。
実は、父の命日が31日なんですよ。
ただ、日が近いということで、多くの場合、墓参りはお彼岸に集約されています。
天候だとか諸事情でお彼岸に墓参りできないときだけ命日に墓参り、と言う感じ
なのですが、まぁいろいろと存在しない事情をでっち上げて実家に顔を出すところ
まではアポイント済み。ただ、時間が取れるかどうかは別問題なんで。


11181/11135 CXB00940  としき           Re^10: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/31 14:09 11173:konnoさんへのコメント
参照先:http://toshiki.la.coocan.jp/
実家に来ています。
まず、先日アップしたあのプログラムをそのまま実行したのですが

> Number.1000	  0: 0' 0   Prime Number = 168 

うちのN88-BASICでは、素数の数が168になりました。
169は素数としてカウントされませんでした。
どうやらSQR関数、うちの環境のほうが精度が高いらしい。
ちなみに、ファイル出力ではなく画面表示で、所要時間は0秒〜1秒くらい。
あまり違いはないですね。

とりあえず時間切れ、続きは後ほど。

11182/11135 CXB00940  としき           Re^11: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/31 15:48 11176:konnoさんへのコメント
参照先:http://toshiki.la.coocan.jp/
続いて、先日上げたプログラムのまま、すなわち、SQR関数の部分もいじらず、
変数Jのカウントアップも1ずつのままで10000までの結果。

> Number.10000	  0: 0' 1   Prime Number = 1229 

素数の数は1229と出ました。やっぱりうちの環境では誤差がないみたい。
ちなみに、所要時間は、画面表示だと12秒、ファイル出力だと13秒。
これはいささか直感と記憶に反している。
記憶だと、画面表示のほうがスクロールアップに時間がとられるので遅くなったはず
なのですがね。ま、でも、誤差の範囲。

次、変数 J のカウントアップを J=J+2 としたら所要時間は7秒まで短縮。
やっぱりループ回数が2倍というのは大きかった模様。
素数の数は1229なので、計算誤差の問題もないですね。

ところで、うちのBASICインタープリタは1987年製のVer5.0というやつです。
konnoさんのところの版数とかはわかりますか?


11183/11135 CXB00940  としき           Re^9: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/31 16:08 11172:としきさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
実家での検証、最後。

> ここ、多くの処理系では割り算よりも掛け算のほうが速いと聞いたことがあるので、
> 割り算を2回するのではなく掛け算と割り算の組み合わせに変更してみました。
> これでどのくらい早くなるかは測定していないからわからない。

メインのループを

1350 FOR I=3 TO N
1360     IF INT(I/2)*2 = I THEN *EXIT2
1370         J=3:I2=I/J:I3=INT(I/J)
1380         WHILE J<SQR(I) AND I2<>I3
1390             J=J+2:I2=I/J:I3=INT(I/J)
1400         WEND
1410         IF J>SQR(I) THEN GOSUB *PRINT1
1420     *EXIT2
1430 NEXT I

こうやって、割り算2回で20000までの素数を求めたら21秒で2262個。
元のままの、割り算と掛け算だと17秒、2262個。
うん、やっぱりうちでは、誤差というには差が大きいくらい、掛け算のほうが早い
模様。


以上、レス元が分散して申し訳ありませんが、実家での検証3連発でした。


11184/11135 BQO00549  konno            Re^2: SQRの計算式
( 1) 24/03/31 22:26 11180:としきさんへのコメント
> えと、whileのループをifのジャンプに変更したのはなぜでしょうか。
> こちらのほうが速いのですか?

私は while文をあまり使わないので、無意識に 慣れた IF文に変えてしまってました。(^^;
オリジナルのソースに wend を入れるだけでしたね。(^^;

#11179 で書きましたが
> ちなみに FOR文のソースにこのサブルーチンを組み込んだら
> Number.10000	  0: 0:11   Prime Number = 1229 
> 2〜3秒遅くなりましたね。これが関数とサブルーチンの速度差と思われます。

同じ条件では、while文の方が速いと思われます。
そこで、このサブルーチンの while と FOR で比較してみました。

FOR文     Number.100000   0: 2:51   Prime Number = 9592 
WHILE文   Number.100000   0: 2:47   Prime Number = 9592 

10万で4秒の差でした。思ったよりも差が小さかったですね。
SQR 1回あたり7〜10回程度のループで済んでいるから差が小さいのでしょう。

> なのですが、まぁいろいろと存在しない事情をでっち上げて実家に顔を出すところ
> まではアポイント済み。ただ、時間が取れるかどうかは別問題なんで。

お手間を取らせて申し訳ないですが、よろしくお願いします。


11185/11135 BQO00549  konno            Re^10: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/04/01 00:27 11183:としきさんへのコメント コメント数:2
ここにまとレスします。

> > Number.1000	  0: 0' 0   Prime Number = 168 
> うちのN88-BASICでは、素数の数が168になりました。
> 169は素数としてカウントされませんでした。
> どうやらSQR関数、うちの環境のほうが精度が高いらしい。

これは驚きです! ということは、98エミュの問題か、ファイルが壊れているかですね。

> ちなみに、所要時間は、画面表示だと12秒、ファイル出力だと13秒。
> これはいささか直感と記憶に反している。

TurboBasic でも同じような結果です。画面表示は遅いというのは思い込みなのでしょう。

> ところで、うちのBASICインタープリタは1987年製のVer5.0というやつです。
> konnoさんのところの版数とかはわかりますか?

88-BASIC(86) Compiler version 6.0 
1988/08/24  00:00            61,440 BASICC.COM

うちで使用したコンパイラ版はこれですね。

> こうやって、割り算2回で20000までの素数を求めたら21秒で2262個。
> 元のままの、割り算と掛け算だと17秒、2262個。
> うん、やっぱりうちでは、誤差というには差が大きいくらい、掛け算のほうが早い
> 模様。

なるほど。やはり掛け算が速いのですね。

> 以上、レス元が分散して申し訳ありませんが、実家での検証3連発でした。

お忙しい中色々検証していただき、ありがたいです。
N88BASICの精度疑惑も晴れたので、98エミュの検証が必要そうですね。


11186/11135 BQO00549  konno            T98-NEXT でN88BASIC検証
( 1) 24/04/02 00:16 11185:konnoさんへのコメント
以前N88BASICが動かなかったT98-NEXT で再挑戦しました。
コンパイラ版が動かなかったのはメモリ不足だったようです。
ATOK8がメインメモリに居座っていたので削除したら動きました。(^^;
ただし、BATのオプションが効かなくて、ソースファイル名を手打ちしました。(^^;
結果はほかのエミュと同じで駄目でした。

インタプリタも、実機ROMにチェックを入れたら動きました。
結果はやっぱり駄目でした。
98エミュは全滅です。

うーむ、このバージョンの N88BASIC に問題がある可能性があるのでしょうか。


11187/11135 CXB00940  としき           Re^11: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/04/03 16:20 11185:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> これは驚きです! ということは、98エミュの問題か、ファイルが壊れているか

エミュの問題、というのは考え易いところです。
が、ファイルの破壊となった場合、そんな精度に関係するところが絶妙に壊れる、
というのはなかなか考えにくい。
ただ、N88(86)では使っていない技術だとは思いますが、いくつかの処理系では、
関数の速度と精度向上のため、全てを計算で求めるのではなく、大きな定数表を
使う場合がある、と聞いたことはあります。とはいっても超巨大というほどの表
ではなく、引数のいくつかに分解して、それぞれの結果を足すとかかけるとかで
速度と精度を両立させます。
その場合は、その定数表の一部だけが間違っているとか精度が足りないことが発生
しうるわけです。でも、これって、三角関数とか対数関係の関数で使うワザだった
ような気がする。
平方根でも使うことがあるのかなぁ。

> 88-BASIC(86) Compiler version 6.0 
> 1988/08/24  00:00            61,440 BASICC.COM

これ、頭のNが欠けているのは転記ミスですよね。
実は、私の記憶でも、88年のVer6が最終版、ということになっているからです。
そして私の手元には87年のVer5しかないわけですが、バージョンアップするかどうか
という判断に際して、どこが変わったかという情報がなくてバージョンアップを
しなかった、というおぼろげな記憶があります。
ところでkonnoさんのところでは、TurboBasicではなく、N88BASICのコンパイラと
インタプリタで同じ結果になります?
あと、インタプリタとコンパイラでバージョンは同じですか?


11188/11188 CXB00940  としき           「全部表示 会議室風」が何かおかしい
( 1) 24/04/03 17:29 コメント数:1
参照先:http://toshiki.la.coocan.jp/
こちらの掲示板での過去ログ表示で気がつきました。
[全部表示 会議室風]のリンクを押して表示される発言の中に、そのログのトップの
ツリーのルートの発言が含まれていないようです。
具体的には

過去ログ26では#10734
過去ログ25では#10632
過去ログ24では#10229
・・・
過去ログ2では#974
過去ログ1では#418

が表示されないようです。
ご確認をお願いします。


11189/11135 BQO00549  konno            Re^12: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/04/04 01:01 11187:としきさんへのコメント コメント数:1
> その場合は、その定数表の一部だけが間違っているとか精度が足りないことが発生
> しうるわけです。でも、これって、三角関数とか対数関係の関数で使うワザだった
> ような気がする。
> 平方根でも使うことがあるのかなぁ。

原因が分かったような気がします。
N88BASIC(86) では、FOR文が倍精度では動かないので単精度でやって NG だったのですが
1030 defdbl A-Z と変数を倍精度にし、FOR文の I だけ I! で単精度でやってみました。

1340 I=2:GOSUB *PRINT1
1342 i=3
1350 FOR I!=3 TO N
1360     IF INT(I/2)*2 = I THEN *EXIT2
1370         J=3
1380         WHILE (J<SQR(I)) AND (INT(I/J)*J<>I)
1390             J=J+1
1400         WEND
1410         IF J>SQR(I) THEN GOSUB *PRINT1
1420     *EXIT2
1422 i=i+1
1430 NEXT I!
1440 I=I-1

他は変えていませんが、このプログラムでは 169 が表示されず、正常になりました。
# 汚れていたのは SQR(I) だったんです。(By now shika)

変数 I が倍精度だと数値の比較が正常なのに、単精度だと 表示は整数でも内部の計算がズレる模様。
想像ですが、例えば比較計算は倍精度で、表示は単精度に丸められているとか。

> > 88-BASIC(86) Compiler version 6.0 
> > 1988/08/24  00:00            61,440 BASICC.COM
> これ、頭のNが欠けているのは転記ミスですよね。

はい、そうです。失礼しました。m(__)m

> ところでkonnoさんのところでは、TurboBasicではなく、N88BASICのコンパイラと
> インタプリタで同じ結果になります?

同じ結果になります。上の実験はインタプリタではしてないですが。

> あと、インタプリタとコンパイラでバージョンは同じですか?

同じだと思います。起動メッセージが同じなので。
日付は少し違いますね。


11190/11188 BQO00549  konno            Re: 「全部表示 会議室風」が何かおかしい
( 1) 24/04/04 01:07 11188:としきさんへのコメント コメント数:1
> こちらの掲示板での過去ログ表示で気がつきました。
> [全部表示 会議室風]のリンクを押して表示される発言の中に、そのログのトップの
> ツリーのルートの発言が含まれていないようです。

げげげ、・・・・・・

確認しました。しばしお待ちください。m(__)m


11191/11135 CXB00940  としき           Re^13: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/04/04 12:15 11189:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
「妙だな」というのは、どこぞの小学生のよく言うせりふですが、それはさておき。
#11164にも書きましたが、N88だと単精度でも倍精度でも上限は同じです。
また、演算速度が単精度の方が速いという理由から私は全て単精度でやっているの
ですが、konnoさんが倍精度を選ばれている理由は何ですか?
他のBASICだと上限が違うとかあるのでしょうか。

さて、私のコードでは全て単精度でやっています。なので、精度変換の問題は出ない
はず。実際、うちでは問題が出ていません。
でも、#11173では、同じコードで問題が出ているということです。
なので、これは精度変換の問題ではないと思われます。


> 他は変えていませんが、このプログラムでは 169 が表示されず、正常になりました。

このプログラムだと、単精度の I! と倍精度の I の両方でカウント処理が発生します。
倍精度の I だけ使って WHILE のループにしたほうがいいような気がします。


> 想像ですが、例えば比較計算は倍精度で、表示は単精度に丸められているとか。

N88のマニュアルでは、異なる型同士での演算の場合は高い精度のほうに合わせて
行われるとのこと。これは比較演算でも同じはず。

で、私の疑っていた、konnoさんのところのコンパイラとインタプリタのバージョン
違いという疑いは晴れたので、するとあとは、私のところのバージョンとkonnoさん
のところのバージョンが異なる、という問題は残ります。
とりあえず、出発点は#11173。同じコードなのに結果が異なる、ということ。
あ、重要な問題がある。
私がもしかしたら、アップしたのとは異なるコードを実行していた可能性。
実はこの可能性が一番高いかも。


11192/11135 CXB00940  としき           Re: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/05 02:07 11175:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
自分で実験できないのにあれこれ言って申し訳ありません。

> 条件を色々変えて試しても結果は変わらなかったのですが、ひとつだけ
> N88P.BAS
> ところがオリジナルを若干修正した以下
> PN88.BAS

N88P.BASとPN88.BAS、konnoさん的には「若干修正」かもしれませんが、内部的には
もしかしたら大幅な修正かもしれません。
そこで結果を教えていただきたいのが、

> PN88.BAS
> 110  defdbl a-z                                 '倍精度指定

ここを単精度指定にしたらどうなるか、ということ。
とても興味があります。


11193/11188 BQO00549  konno            Re^2: 「全部表示 会議室風」が何かおかしい
( 1) 24/04/06 00:30 11190:konnoさんへのコメント コメント数:1
> > [全部表示 会議室風]のリンクを押して表示される発言の中に、そのログのトップの
> > ツリーのルートの発言が含まれていないようです。
> 確認しました。しばしお待ちください。m(__)m

ううう、3日間腐海暗闇の中で藻掻いていました。(;_;)

wforum.cgi を色々弄ってみましたがどうやってもルート発言が表示されません。(>_<)
仕方がないので過去ログの先頭に改行を追加してみたら表示されました。
うげぇ、今までの苦労は何だったんだ・・・・

唯の改行だとツリー表示にゴミが表示されるので、現行ログの形式でダミーを入れました。

0001<>00.00.00.00<>1097421569<>
番号 IPアドレス 書き込み時間(古ければスキップ?)

このように、書き込み時間が古ければ自動的にスキップしてくれるようです。
この処理をどこでやっているのかはわかりません。
色々弄った版はツリー表示がおかしくなったので、修正前のに戻したら直りました。

結局 cgi は弄らずに、過去ログ形式を変更することで解決しました。(-_-;) ヤレヤレダゼ
何かおかしなところに気が付いたら教えてください。m(__)m


11194/11135 BQO00549  konno            Re^14: N88-BASICで素数表示の問題
( 1) 24/04/06 01:40 11191:としきさんへのコメント コメント数:1
> #11164にも書きましたが、N88だと単精度でも倍精度でも上限は同じです。
> また、演算速度が単精度の方が速いという理由から私は全て単精度でやっているの
> ですが、konnoさんが倍精度を選ばれている理由は何ですか?

N88 は FOR文のカウントに倍精度が使えない制限があるようです。
それで単精度でやったら問題が出たので、倍精度でやり直してみたという経緯です。

> さて、私のコードでは全て単精度でやっています。なので、精度変換の問題は出ない
> はず。実際、うちでは問題が出ていません。
> でも、#11173では、同じコードで問題が出ているということです。
> なので、これは精度変換の問題ではないと思われます。

私は N88BASIC の特定のバージョン(V6.0)の問題なのではないかと疑っています。
もちろん 98エミュの問題の可能性も排除できないので実機で確認したいのです。

> > 他は変えていませんが、このプログラムでは 169 が表示されず、正常になりました。
> このプログラムだと、単精度の I! と倍精度の I の両方でカウント処理が発生します。
> 倍精度の I だけ使って WHILE のループにしたほうがいいような気がします。

私は while の入れ子は特に間違えやすいので、FOR文でやりました。
結果は同じになると思います。

> N88のマニュアルでは、異なる型同士での演算の場合は高い精度のほうに合わせて
> 行われるとのこと。これは比較演算でも同じはず。

なるほど、それで謎の挙動がわかったような気がします。
比較の実験結果をあげてみます。


11195/11135 BQO00549  konno            Re^2: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/06 02:05 11192:としきさんへのコメント コメント数:2
> > PN88.BAS
> > 110  defdbl a-z                                 '倍精度指定
> 
> ここを単精度指定にしたらどうなるか、ということ。
> とても興味があります。

丁度良いテストプログラムを作ったので上げます。

3000 ' SQR88.BAS
3010 'defdbl a-z
3012 defsng a-z
3020 'screen 0
3030 cls
3040 input s
3042 OPEN "SQR.dat" FOR OUTPUT AS #1
3046 cc=0
3050 x = s / 2.0  '; // Is there any better way to determine initial value?
3060 lastx = 0.0 '; // the value one before the last step
3070 'while ( x != lastx ) '// until the difference is not significant
3090      lastx = x 
3100      x = (x + s / x) / 2.0 
3112      cc=cc+1
3114      print x;lastx,cc
3116      print#1, x;lastx,cc
3110  if   x < lastx  then 3070
3120  print "SQR(";s;")=";x,lastx,cc
3122  print#1, "SQR(";s;")=";x,lastx,cc
3124  close
3130  input a
3140 end

このプログラムで、TurboBasic の結果は

単精度
 43.25              84.5                   1 
 23.57875633239746  43.25                  2 
 15.37311267852783  23.57875633239746      3 
 13.18316555023193  15.37311267852783      4 
 13.00127220153808  13.18316555023193      5 
 13                 13.00127220153808      6 
 13                 13                     7 
SQR( 169 )= 13   13      7 回

倍精度
 43.25              84.5                   1 
 23.57875722543352  43.25                  2 
 15.37311286945074  23.57875722543352      3 
 13.18316604902914  15.37311286945074      4 
 13.00127244856782  13.18316604902914      5 
 13.00000006226796  13.00127244856782      6 
 13                 13.00000006226796      7 
 13                 13                     8 
SQR( 169 )= 13   13       8 回

倍精度の方が収束するのに1回多く掛かっています。
どちらでも計算は倍精度でやっているのがわかります。
一方、N88BASIC の結果は

単精度
 43.25            84.5             1 
 23.5788          43.25            2 
 15.3731          23.5788          3 
 13.1832          15.3731          4 
 13.0013          13.1832          5 
 13               13.0013          6 
 13               13               7 
SQR( 169 )= 13  13    7 回

倍精度
 43.25              84.5                   1 
 23.57875722543353  43.25                  2 
 15.37311286945074  23.57875722543353      3 
 13.18316604902914  15.37311286945074      4 
 13.00127244856782  13.18316604902914      5 
 13.00000006226796  13.00127244856782      6 
 13                 13.00000006226796      7 
 13                 13                     8 
 13                 13                     9 
SQR( 169 )= 13   13      9 回

おや、単精度の場合は SQR の計算も単精度なのか、それとも表示だけなのか?
倍精度では収束したのにさらにもう1回多く計算しています。???
この結果は、WHILE 文にしても同じでした。
そして、単精度の時だけ 169 が素数と誤判定しているのです。

このことから私は、「>」や「>=」などの比較式で単精度の時だけ誤差が出ていると疑ったのです。
V6.0に問題が有るかどうかは、実機で確認する以外にわからないと思います。


11196/11188 CXB00940  としき           Re^3: 「全部表示 会議室風」が何かおかしい
( 1) 24/04/06 10:50 11193:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 仕方がないので過去ログの先頭に改行を追加してみたら表示されました。

この現象から見ると、過去ログと現行ログでの分岐に問題がありそうですね。
まさかと思いますが、そもそも分岐していない、とか。

> この処理をどこでやっているのかはわかりません。

もともとこのルーチン、作ったのはkonnoさんですから。
作った本人がわからないようではどうしようもありません。
もう大丈夫だとは思いますが、不要なコメント、とかいう目くらましにやられて
いる、ということはないでしょうか。

とりあえず、今のところは問題ないような感じです。


11197/11135 CXB00940  としき           Re^15: N88-BASICで素数表示の問題
( 1) 24/04/06 11:26 11194:konnoさんへのコメント
参照先:http://toshiki.la.coocan.jp/
> N88 は FOR文のカウントに倍精度が使えない制限があるようです。

そです。
これはマニュアルにも明記されている仕様です。

> それで単精度でやったら問題が出たので、倍精度でやり直してみたという経緯です。

なるほど、いきさつが理解できました。

> 私は N88BASIC の特定のバージョン(V6.0)の問題なのではないかと疑っています。

現時点では、私もこの線が濃厚だと思っております。

> 私は while の入れ子は特に間違えやすいので、FOR文でやりました。

BASICを極めたいのならWHILEは避けて通れません。
私もかなり錆付いてはいますが、まだkonnoさんより私のほうが、BASICに関しては
一日の長がありそうな感じ。

> 結果は同じになると思います。

いや、結果の問題ではなく速度の問題。
加算するのはループカウンタだけでいいでしょう、ということです。


11198/11135 CXB00940  としき           Re^3: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/06 11:27 11195:konnoさんへのコメント
参照先:http://toshiki.la.coocan.jp/
> 3000 ' SQR88.BAS

これ、あとで私も検証してみます。最短で今日の午後。

> このプログラムで、TurboBasic の結果は

> どちらでも計算は倍精度でやっているのがわかります。

ダウト。

> 単精度
>  43.25              84.5                   1 
>  23.57875633239746  43.25                  2 

> 倍精度
>  43.25              84.5                   1 
>  23.57875722543352  43.25                  2 

もうここですでに値が異なります。
すなわち、表示だけ倍精度、という可能性が濃厚。

> おや、単精度の場合は SQR の計算も単精度なのか、それとも表示だけなのか?

N88の場合、仕様では、引数の型が結果の型、ということになっています。
このプログラムでは、2.0 という単精度型で割り算をしています。
ここを 2# としてみたら、もしかしたら違いが出てくる可能性があります。


11199/11135 CXB00940  としき           Re^3: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/06 14:51 11195:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
実家に来ています。
うちの母、風邪気味だというのに買い物に行きたいのだとか。
母と同居しているうちの弟、免許すら持っていないので、その手の案件は私が対応。
ということで、まもなく連れ出されてしまいますが、その前に。

まず、うちのN88BASIC、コンパイラはありません。
タイムスタンプは以下。

N88BASIC EXE       161,280 87-10-30    0:00
N88BASIC LIB       178,176 86-08-14   13:51

ん〜、ライブラリのほう、もしかしたらバージョンが古いかも。
そして、この環境で

> 丁度良いテストプログラムを作ったので上げます。
> 3000 ' SQR88.BAS

このプログラムを load して list をみたら、

3050 X = S / 2!  '; // Is there any better way to determine initial value?
3100      X = (X + S / X) / 2! 

と、自動で変換されてしまっていました。
もしかしたらkonnoさんのところでも、この手の意図せざる自動変換が発生している
かもしれません。当然、コンパイラのほうでも。
一度、インタプリタのほうで list をたたいて、自動変換の有無を確認されたほうが
いいでしょう。

そして、読み込ませてすぐに run させたら、あれ?
konnoさんのところと実行結果が異なる。
何が異なるって、途中経過が一切表示されない。妙だな。
よくリストを見たら、結果表示がループの外に出ている。
こういうトリックはやめて欲しいけど、でも私も良くやるので人のことは言えない。
とりあえず、3110行の if 文を3123行に持ってきて、ここで時間切れ。

続きは帰宅後。
何時ぐらいになるかなぁ。


11200/11135 CXB00940  としき           Re^4: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/06 23:09 11199:としきさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 続きは帰宅後。

続きです。

> よくリストを見たら、結果表示がループの外に出ている。
> こういうトリックはやめて欲しいけど、でも私も良くやるので人のことは言えない。

違う。
結果表示が改行されず、同一行に上書きされているような感じ。
つまり、トリックは私が仕掛けた、ということで。
大変失礼しました。
そして、私が悪かったにもかかわらず

> とりあえず、3110行の if 文を3123行に持ってきて、ここで時間切れ。

こんなことをやったから、出力書式がめちゃくちゃ。
とりあえず、konnoさんと同じような書式にVzでそろえた結果です。

単精度2.0
 43.25  84.5   1 
 23.5788  43.25              2 
 15.3731  23.5788            3 
 13.1832  15.3731            4 
 13.0013  13.1832            5 
 13  13.0013   6 
 13  13        7 
SQR( 169 )= 13               13            7 

倍精度2.0
 43.25  84.5   1 
 23.57875722543353  43.25    2 
 15.37311286945074  23.57875722543353      3 
 13.18316604902914  15.37311286945074      4 
 13.00127244856782  13.18316604902914      5 
 13.00000006226796  13.00127244856782      6 
 13  13.00000006226796       7 
 13  13        8 
 13  13        9 
SQR( 169 )= 13               13            9 

念のため、2! のところを全て 2# にしてみたけど、結果は同じでした。

どうも、見たところ、結果は全て同じ。
収束したのに1回多くループを回っているところも同じ。
にもかかわらず、うちの環境では、169は素数にならない。
まだアップしたままのprime88.zipを再度落としてみて、ファイル比較して同じもので
あることも確認済み。そして、名前を変えて、新しく落としたほうを実行してみて
169が素数にならないことも確認済み。

何じゃこりゃ。


11201/11188 BQO00549  konno            Re^4: 「全部表示 会議室風」が何かおかしい
( 1) 24/04/07 00:51 11196:としきさんへのコメント
> > 仕方がないので過去ログの先頭に改行を追加してみたら表示されました。
> 
> この現象から見ると、過去ログと現行ログでの分岐に問題がありそうですね。
> まさかと思いますが、そもそも分岐していない、とか。

うう、そのまさかでした。(>_<)

	open(IN,"$logfile") || &error("Open Error: $logfile");
	$top = <IN>;

こうなっていたところを
#	$top = <IN>;
	$top = <IN> if ($in{'act'} ne "past");

こう変更したら今までの過去ログファイルのままでも正常になりました。
うう、これも試していたのに弄りすぎておかしくなっていたようです。(>_<)
アドバイスありがとうございました。m(__)m


11202/11135 CXB00940  としき           Re^5: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/07 01:17 11200:としきさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
訂正、ではないような。
補足、かな。

> > よくリストを見たら、結果表示がループの外に出ている。
> > こういうトリックはやめて欲しいけど、でも私も良くやるので人のことは言えない。
> 
> 違う。
> 結果表示が改行されず、同一行に上書きされているような感じ。
> つまり、トリックは私が仕掛けた、ということで。

結果表示が上書きのよう、というのはそのとおりなんですが。
結果表示がループの外、というトリックは、やっぱりkonnoさんだった。

#11195より

> 3070 'while ( x != lastx ) '// until the difference is not significant
> 3090      lastx = x 
> 3100      x = (x + s / x) / 2.0 
> 3112      cc=cc+1
> 3114      print x;lastx,cc
> 3116      print#1, x;lastx,cc
> 3110  if   x < lastx  then 3070
> 3120  print "SQR(";s;")=";x,lastx,cc
> 3122  print#1, "SQR(";s;")=";x,lastx,cc

これ、行番号順に並んでいないじゃないのよさ。
BASICの場合、行番号順に実行されるわけですから、実行時には

> 3070 'while ( x != lastx ) '// until the difference is not significant
> 3090      lastx = x 
> 3100      x = (x + s / x) / 2.0 
> 3110  if   x < lastx  then 3070
> 3112      cc=cc+1
> 3114      print x;lastx,cc
> 3116      print#1, x;lastx,cc
> 3120  print "SQR(";s;")=";x,lastx,cc
> 3122  print#1, "SQR(";s;")=";x,lastx,cc

となるわけでして。
まったくもう。
前にも書いたと思いますが、もうちょっと行番号の並びとかインデントに気を配って
プログラムを書いていただけないでしょうか。
バグが混入し易くなりますよ、と、繰り返しお伝えしていますよね。
こうやって、残り少ない人生を無駄にしてしまうわけですから。

でも、このプログラムだと、N88なら、ループ内での途中表示は全くないはず。
つまり、#11195の結果は出ないはず。
すると、あの結果はどうやって出したのだろう。
結果の出たあと、プログラムを書き換えてからアップした?
違う処理系での結果をN88での結果と間違えて書いた?



それはさておき。
ゆっくり入浴していたときにつらつらと思い出したこと。
大学時代の情報処理初級の授業で、丸め誤差と打切り誤差、桁落ち、情報落ちの
違い、なんてことをやったわけですよ。もはやほとんど覚えていませんがね。
そして、そういった誤差をなくすための方法として多倍長精度演算というのがある、
ということも思い出しました。こいつをやるとてきめんに遅くなるのですが、誤差も
非常に少なくなる。多倍長用のuBASICというのを知ったのは、確か私が大学を卒業
した直後ぐらいだったか。
多倍長っていうのは、例えば、1バイトに数字一桁しか格納しない、という方法。
実際の実装では、そんなことやっていたらメモリ効率が悪いので、1バイトに0から
99までの2桁の数字を格納する、なんていうのが多いかな。86のアセンブラにも
それようの命令があったんじゃないかな、BCD演算、というやつ。Z80にはあった
ような気がする。
そしてアセンブラにあるくらいだからBASICにもあるわけでして、もしかしたら上記
のuBASICがそうだったかもしれないけど、10進BASICという実装があったはず。

で、話を戻して、誤差。

> 3110  if   x < lastx  then 3070

こいつを

> 3110  if   x < lastx  then print "div=",lastx-x:goto 3070

とやってみたらどうでしょう。
1回多くループするところで、いったい何がおきているのか見えてくるかも。


11203/11135 BQO00549  konno            Re^6: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/07 20:41 11202:としきさんへのコメント コメント数:1
まとレスで失礼します。

> ダウト。
> >  23.57875633239746  43.25                  2 
> >  23.57875722543352  43.25                  2 
> もうここですでに値が異なります。
> すなわち、表示だけ倍精度、という可能性が濃厚。

うう、眠くてよく見てませんでした。(>_<)
表示だけ倍精度、が正解のようですね。(^^;

> N88の場合、仕様では、引数の型が結果の型、ということになっています。
> このプログラムでは、2.0 という単精度型で割り算をしています。
> ここを 2# としてみたら、もしかしたら違いが出てくる可能性があります。


> このプログラムを load して list をみたら、
> 3050 X = S / 2!  '; // Is there any better way to determine initial value?
> 3100      X = (X + S / X) / 2! 
> と、自動で変換されてしまっていました。

なんと! インタプリタでは精度指定の無い定数は自動的に単精度になるのですね。

> もしかしたらkonnoさんのところでも、この手の意図せざる自動変換が発生している
> かもしれません。当然、コンパイラのほうでも。
> 一度、インタプリタのほうで list をたたいて、自動変換の有無を確認されたほうが
> いいでしょう。

T-98NEXT で確認しました。やはり自動変換されます。

> よくリストを見たら、結果表示がループの外に出ている。
> 結果表示が上書きのよう、というのはそのとおりなんですが。
> 結果表示がループの外、というトリックは、やっぱりkonnoさんだった。

げげ、他のソースからコピペして行番号を変えるのを忘れてました。m(__)m
申し訳ないです。m(__)m

> 前にも書いたと思いますが、もうちょっと行番号の並びとかインデントに気を配って
> プログラムを書いていただけないでしょうか。
> バグが混入し易くなりますよ、と、繰り返しお伝えしていますよね。
> こうやって、残り少ない人生を無駄にしてしまうわけですから。

インタプリタを弄るのはもう何十年ぶりなもので、うっかりやらかしてしまいました。m(__)m
気を付けます。m(__)m

> でも、このプログラムだと、N88なら、ループ内での途中表示は全くないはず。
> つまり、#11195の結果は出ないはず。

3110番を 3118 に変更すれば正常に出力されると思うのですが
私が何か勘違いしている?

> > 3110  if   x < lastx  then print "div=",lastx-x:goto 3070
> とやってみたらどうでしょう。
> 1回多くループするところで、いったい何がおきているのか見えてくるかも。

重複部分は以下のようになりました。

div 6.226795723485168D-08  13  13          8 
div 2.220446049250313D-16  13  13          9 
SQR( 169 )= 13               13            9 

比較はほぼ間違いなく単精度でしょうね。(^^;


11204/11135 BQO00549  konno            Re^7: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/08 01:46 11203:konnoさんへのコメント コメント数:1
> 重複部分は以下のようになりました。
> div 6.226795723485168D-08  13  13          8 
> div 2.220446049250313D-16  13  13          9 

これ間違っていました。m(__)m  正しい数値を各社で比較します。

----- 単精度  -----
N88BASIC
div= 1.27316E-03             13                  13.0013            6 
TurboBasic
div= 1.272201538085938E-003  13                  13.00127220153808  6 
T-BASIC
div= 1.272201538085938E-003  13                  13.00127220153808  6 

N88BASICは精度もいまいちな感じですね。


-----  倍精度  -----
N88BASIC
div= 1.272386299866479D-03   13.00000006226796   13.00127244856782  6 
div= 6.226795723485168D-08   13                  13.00000006226796  7 
div= 2.220446049250313D-16   13                  13                 8 
div= 0                       13                  13                 9 

TurboBasic
div= 1.272386299866923E-003  13.00000006226796  13.00127244856782   6 
div= 6.226795790098552E-008  13                 13.00000006226796   7 
div= 0                       13                 13                  8 

T-BASIC
div= 1.272386299866479D-03   13.00000006226796  13.00127244856782   6 
div= 6.226795745689628D-08   13                 13.00000006226796   7 
div= 0                       13                 13                  8 

全部違うと思ったら、6回目の N88 と T が同じ数値ですね。
これでなにかわかるでしょうか。


11205/11135 CXB00940  としき           Re^8: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/08 12:28 11204:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
いろいろと見えてきたようです。

> N88BASICは精度もいまいちな感じですね。

私が仕様を知っているのはN88だけですが、N88に関していえば、まさに仕様どおり。
N88の単精度は、6桁までしか表示されないのですよ。
そして、計算されるのは7桁目まで。
他の処理系の単精度は16桁も表示されるのですね。


> ----- 倍精度 -----
> これでなにかわかるでしょうか。

いくつかわかることがあります。
まず、N88から。
前回の単なる出力結果だと、x も lastx も13で等しいのに次のループに回っている
のが不思議に思えました。でも実際には 2.220446049250313D-16 だけの差があった
わけであり、次のループに回っているのが正当でした。一方で、あまりにも差が
少なすぎたのでしょう、表示は13で打ち切られてしまっている。
ここ、私が前に書いたように print using を使えば、もしかしたら表示されていた
可能性はあります。

つぎ、TurboBasic。
N88やT-BASICだと、単精度指数の表記はEですが、倍精度指数はDを使っています。
でも、TurboBasicは、倍精度でもEで表示されている。
なんか違和感。これが仕様なんだろうなぁ。
ちなみにEは指数(exponent)の略といわれています。Dは倍(double)の略らしい。
なお、表記は同じでも値は異なっているので、計算そのものはきちんと倍精度で
行われている模様。
ところで、Wikipediaによると、指数表示でEを使うのは国際規格らしい。
実際、Excelとかでもそうなっているし。
もしかしたら倍精度でDを使うって、日本のどこかが始めたことかも。
NECとかシャープとか。
昔のMS-BASICでそうだったのかもしれないけど。

そして、T-BASICを含めて、細かい桁数の計算ではいくらかの精度差が発生すること
がわかります。
今回の話題の出発点の169が素数になってしまうという問題も、konnoさんのところの
エミュ環境のN88で起こっている話ですから、うちの実機のPC98だと、konnoさんの
ところのN88とは結果が異なる可能性がありそう。
ということで、今回の結果を出した検証プログラム、#11195に載っているものと
大体同じものだと思いますが、念のため、もう一度示してください。重要なのは表示
でして、同じような表示にしたいので表示部は必須。
なにとぞよろしくお願いします。

11206/11135 BQO00549  konno            SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/08 23:33 11205:としきさんへのコメント コメント数:1
> ということで、今回の結果を出した検証プログラム、#11195に載っているものと
> 大体同じものだと思いますが、念のため、もう一度示してください。重要なのは表示
> でして、同じような表示にしたいので表示部は必須。

DOSVAXJ3 の32ビット版をJ31モードにして TBasicインタプリタが起動できました。
結構互換性があるのね。
それで、ソースをリナンバーしてみました。
 RENUM 3000
これで、3000 から始まる行番号にキチンと並べ替えられました。\(^^)/ ヤッタ-
ではそのソースを貼り付けます。

3000 ' SQR-3.BAS
3010   DEFDBL A-Z
3020  'defsng a-z
3030 'screen 0
3040 CLS
3050 INPUT S
3060 OPEN "SQR.dat" FOR OUTPUT AS #1
3070 CC=0
3080 X = S / 2!  '; // Is there any better way to determine initial value?
3090 LASTX = 0! '; // the value one before the last step
3100 'while ( x != lastx ) '// until the difference is not significant
3110      LASTX = X 
3120      X = (X + S / X) / 2! 
3130      CC=CC+1
3140      PRINT "div=";LASTX-X, X,LASTX,CC
3150      PRINT#1,"div=";LASTX-X, X,LASTX,CC
3160  IF   X < LASTX  THEN 3100
3170  PRINT "SQR(";S;")=";X,LASTX,CC
3180  PRINT#1, "SQR(";S;")=";X,LASTX,CC
3190  CLOSE
3200  INPUT A
3210 END

このままで J31 と PC-98 で動くと思います。


11207/11135 CXB00940  としき           Re: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/09 15:06 11206:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> このままで J31 と PC-98 で動くと思います。

ありがとうございます。
次に実家に行ったときに、このコードを走らせたいと思います。
これをこのまま、といいたいところですが、おそらく、ファイル出力のところ、
OUTPUTはAPPENDに変更させていただく予定。

あと、もともとの#11175に立ち返って。

> 条件を色々変えて試しても結果は変わらなかったのですが、ひとつだけ
> N88P.BAS
> ところがオリジナルを若干修正した以下
> PN88.BAS

#11192にも書きましたが、内部的には若干の修正ではない可能性があります。
なので、しつこくてもうしわけありませんが

> PN88.BAS
> 110  defdbl a-z                                 '倍精度指定
> ここを単精度指定にしたらどうなるか、

この結果を教えてください。
よろしくお願いいたします。


11208/11135 BQO00549  konno            Re^2: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/09 22:44 11207:としきさんへのコメント コメント数:1
> > 110  defdbl a-z                                 '倍精度指定
> > ここを単精度指定にしたらどうなるか、
> この結果を教えてください。
> よろしくお願いいたします。

もちろん 169 が素数と表示されます。
元々単精度でそういう表示になるところから始まった話題ですから。
色々試していった結果結構ソースが変わってしまいましたが。(^^;

ところで、USING を使ってみたら違いが表示されました。

1000 'pn88.bas 
1010 ' defdbl a-z                                 '倍精度指定
1020  'defdbl n                                 '倍精度指定
1030  OPEN "SQR.dat" FOR OUTPUT AS #1
1040 INPUT N
1050 IF (N/2 <> INT(N/2))=0 THEN IF N=2 THEN PRINT "素数" ELSE PRINT "合成数"
1060 J!=SQR(N) 'ELSE
1070   FOR I!=3 TO SQR(N) STEP 2
1080     IF N/I! = INT(N/I!) THEN 1100 '*EXIT1 
1090   NEXT I!
1100 '  *EXIT1
1110    PRINT USING  " .##################";I!-SQR(N) '.14
1120    PRINT#1, USING  " .##################";I!-SQR(N) '.14
1130   IF I!<=SQR(N) THEN PRINT "合成数";I!;J! 
1140   IF I!<=SQR(N) THEN PRINT#1, "合成数";I!;J! 
1150   IF I!>SQR(N) THEN PRINT "素数";I!;J!
1160   IF I!>SQR(N) THEN PRINT#1, "素数";I!;J!
1170 INPUT A
1180 END


この結果は

 .000001907350000000
素数 13  13 

このように単精度の時
I!-SQR(N)
で誤差が表示されました。
倍精度ではゼロになりました。

98実機ではどうなるでしょうね。


11209/11135 CXB00940  としき           Re^3: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/10 17:44 11208:konnoさんへのコメント コメント数:2
参照先:http://toshiki.la.coocan.jp/
> もちろん 169 が素数と表示されます。

ちょっと残念というか、当然と思えることがおきなければそれも手がかりになる
かな、と思っていたわけですよ。
それで、しつこくお尋ねしていた次第。

> ところで、USING を使ってみたら違いが表示されました。

やっぱりそうでしたか。

> 98実機ではどうなるでしょうね。

とりあえず、試したいことリスト。
すでに試し済みのものもあるかも。

#11208のpn88.bas、倍精度と単精度
#11175のPN88.BASでNを単精度にしただけのもの
そして、#11175のN88P.BASの改造版、以下。

N88P0410.BAS
100 INPUT N
110 IF N MOD 2=0 THEN ELSE *ELSE1
120     IF N=2 THEN PRINT "素数" ELSE PRINT "合成数"
130     GOTO *ENDIF1
140 *ELSE1
150     I=3
160     WHILE (I<=SQR(N)) AND (N MOD I<>0)
165         PRINT I,SQR(N)
170         I=I+2
180     WEND 
190     IF I<=SQR(N) THEN PRINT "合成数" ELSE PRINT "素数"
200 *ENDIF1
210 END

これも、Nを単精度と倍精度にしたものの2つ。
今のところ、思いつくのはこのくらい。
あ、そうだ、konnoさんのコードだとプログラム終了のところに必ずinputがあるの
ですが、これ、コンパイラだとあったほうがいいのですか?
それとも他の事情?
いえ、うちのインタプリタだと、必ず最後に入力プロンプトの「?」がはいるのが
うざいというかうっとうしくて。


11210/11135 BQO00549  konno            Re^4: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/10 21:56 11209:としきさんへのコメント コメント数:1
> そして、#11175のN88P.BASの改造版、以下。
> N88P0410.BAS

これ、実行してみました。NP2 では、169 は素数と表示されました。

> あ、そうだ、konnoさんのコードだとプログラム終了のところに必ずinputがあるの
> ですが、これ、コンパイラだとあったほうがいいのですか?

コンパイラでは終了すると画面が消えてしまい、表示の確認が出来ないのですよ。
インタプリタでは消えないんですが、ソース共通化のために入れています。


11211/11135 CXB00940  としき           Re^5: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/10 23:25 11210:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> これ、実行してみました。NP2 では、169 は素数と表示されました。

あ〜、いやいや、そこではなくて。
いや、そこなのか?
#どっちだよ

ループの最後というか、誤判定されるわけですよね。
その、最後とそのもうひとつ前というか、単精度型と倍精度型でどうなっているのか
見たいな、ということです。

プログラム最後のinputについては了解しました。
やはり、環境によって、こういう差異が発生するものなのですね。
想像はできても、実際にお話を聞けたことがありがたいというか。


11212/11212 DGF01024  めざら           DOSVAXJ3 JP240410 更新
( 1) 24/04/11 05:56 コメント数:2
参照先:http://mezala.la.coocan.jp/
DOSVAXJ3 が 240410版に更新されました。
以下更新内容です。

build JP240410 (2024/4/10)
・J-3100モードが動作していなかったのを修正しました。
・Linux, macOS でビルドできなくなっていたのを修正しました。

……ということなんで,われわれにはあまり関係ないかな(^^;

11213/11135 BQO00549  konno            Re^6: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/11 20:13 11211:としきさんへのコメント
> ループの最後というか、誤判定されるわけですよね。
> その、最後とそのもうひとつ前というか、単精度型と倍精度型でどうなっているのか
> 見たいな、ということです。

実行結果(数値はVTDOSの結果を張り付けたが表示は同じ)
? 169
 3             13
 5             13
 7             13
 9             13
 11            13
 素数

NP2の結果は単精度型は「素数」、倍精度型は「合成数」と表示だけ違います。

110番の THEN ELSE はこれでいいんでしょうか。
まあ 2 の表示を省いたのだと思うけど。

> 110 IF N MOD 2=0 THEN ELSE *ELSE1


11214/11212 BQO00549  konno            Re: DOSVAXJ3 JP240410 更新
( 1) 24/04/11 21:05 11212:めざらさんへのコメント
> DOSVAXJ3 が 240410版に更新されました。

更新されていたのですね、お知らせいただきありがとうございます。

> build JP240410 (2024/4/10)
> ・J-3100モードが動作していなかったのを修正しました。
> ・Linux, macOS でビルドできなくなっていたのを修正しました。

うげ、今ちょうど J31モードを使っている所なんですよね。
それで、3月15日に更新があったのは知っていたのですが、32ビット版は落としてなかった。OTL
ちなみに、3月15日の更新内容は

---------------------------------------------------------------
build JP240315 (2024/3/15)

    J-3100 ビデオモード 64h (640×400 2色 文字 80×20)に対応しました。
    MS-DOS/V 6.2 をイメージファイルからブートした場合に jkeyb.sys の /106 設定が有効にならず
    英語キーボード配列になっていたのを修正しました。
    [dosbox] kanjikey を追加しました。漢字キーを ALT+半角全角、半角全角、右 ALTに割り当てる事ができます。
    int 21h ah=5ch に対応しました。Windows 3.1 用の MS-Office が起動可能になります。
    内蔵 BIOS 割り込みのエントリアドレスを F000:C000 以降に変更しました。

---------------------------------------------------------------

> J-3100 ビデオモード 64h (640×400 2色 文字 80×20)に対応しました。

これは、20行表示モードが使えるということかと思って VZJ31の ^KL でやってみました。
が、白画面が真っ黒になって、縦400ドットが、480ドットに伸びました。
カーソルは動きますが、文字は全く表示されません。
もう一度 ^KL で元に戻りましたが、これは使えないようです。
CHEV 64 でも同じ結果です。
黒画面はどうも VGA ぽいですね。

うーん、私の設定か解釈が間違っているのでしょうか。軟式さんに聞いてみようかしら。

それはともかく、これがきっかけで J31 用のBASICコンパイラを試してみたら
なんと! 生成した実行ファイルが VTDOS で動くではないですか。\(^^)/ ヤッタ-
MS-DOS Player と同じく テキスト表示だけなら問題なく動作します。
この実行ファイル一つで、VTDOS、MS-DOS Player、DOSVAXJ3のVGA,J31モード全部動きます!!

> ……ということなんで,われわれにはあまり関係ないかな(^^;

関係ないどころか、埋もれていたお宝が完全復活しました!!
それだけではなく、今までのエミュの壁を突破できる切り札として蘇ったのです!!

これはめざらさんのおかげですね。ありがとうございます。
としきさんとの素数プログラムのやりとりも助けになっています。
軟式さんの J31モードのまめな更新のおかげで、古代の遺産が復活出来ました!
みなさまに感謝です。m(__)m

# 伝説巨神 出でよん 発動編(壮絶な戦いになりそうな悪寒)


11215/11135 CXB00940  としき           Re^4: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/13 01:13 11209:としきさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> とりあえず、試したいことリスト。

試してきました。

> #11208のpn88.bas、倍精度と単精度

pn88単精度
 .000000000000000000
合成数 13  13 

pn88b倍精度
 .000000000000000000
合成数 13  13 

> #11175のPN88.BASでNを単精度にしただけのもの

合成数と出ました。

> そして、#11175のN88P.BASの改造版、以下。

単精度でも倍精度でも同じ、

 3             13 
 5             13 
 7             13 
 9             13 
 11            13 
合成数

と出ました。単精度でも倍精度でも同じです。
うむ、興味深いぞ。

> 190     IF I<=SQR(N) THEN PRINT "合成数" ELSE PRINT "素数"

Iも13、SQR(N)も13なのだから、合成数と表示されるのが正当。
そして実際、うちでは想定どおり動いています。
ところが、konnoさんのところでは、単精度型ではこの比較式が成り立たず、ELSEに
落ちてしまっている。そして、倍精度型ではきちんと動いている。
なんか、エミュの挙動がおかしいとしか思えない。
前にも書きましたが、N88BASICの仕様では、関数の結果は引数と同じ型になることに
なっています。つまり、Nが単精度ならSQR(N)の結果も単精度のはず。だから、小数点
以下の細かいところの値が出てくることがおかしい。
もしかしたら、次のような簡単なプログラムでも、実機とエミュで差が出たりして。

10 A#=1.23456789#
20 B!=A#
30 PRINT A#,B!

これ、実はN88のマニュアルに載っているサンプルです。
そして、仕様上のこの実行結果は

RUN
1.23456789  1.23457

となるべきなのだそうです。
もしエミュでこうならないとしたら、それはどこかがおかしい。
エミュの作者に調査を依頼してもいいかも。



追伸
#11213

> 110番の THEN ELSE はこれでいいんでしょうか。
> 110 IF N MOD 2=0 THEN ELSE *ELSE1

N88BASICでは、言語仕様として、THEN節に空文を許します。
つまり、THEN のときは、何もせずに、次の行に進むことになります。
これ、#11169で触れているとおりです。


11216/11135 BQO00549  konno            Re^5: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/13 22:03 11215:としきさんへのコメント コメント数:1
> これ、実はN88のマニュアルに載っているサンプルです。
> そして、仕様上のこの実行結果は
> 
> 1.23456789  1.23457
> 
> となるべきなのだそうです。

NP2でやってみた結果です。

 1.23456789    1.23457

表示は全く同じですね。やっぱり表示と内部の数値がズレているのかなぁ。
他のエミュの結果は全て以下の数値でした。

 1.23456789    1.234568

98エミュの表示が上の数値で内部的には下の数値だとしたら、計算が合わないのも合点ですね。
でも何故こうなるのかがわからないので、とっても気になります。

> もしエミュでこうならないとしたら、それはどこかがおかしい。
> エミュの作者に調査を依頼してもいいかも。

表示は全く同じなので、おかしくないということですね。(違う!)

> N88BASICでは、言語仕様として、THEN節に空文を許します。
> つまり、THEN のときは、何もせずに、次の行に進むことになります。
> これ、#11169で触れているとおりです。

なるほど、つまり想定どうりということですね。


11217/11212 BQO00549  konno            DOSVAXJ3 JP240410 20行表示がおかしい?
( 1) 24/04/13 23:28 11212:めざらさんへのコメント
> それで、3月15日に更新があったのは知っていたのですが、32ビット版は落としてなかった。OTL

実は寝室のPCでダウンロードしていました。(^^;
ダウンロードだけして寝落ちしてそのまま忘れていたようです。(^^;;
ということで

> build JP240410 (2024/4/10)
> ・J-3100モードが動作していなかったのを修正しました。

これがどういうことかと疑問だったので確認してみました。
・・・J31モードにすると、起動中に固まってしまいました、(>_<)
そういうことでしたか・・・

> > J-3100 ビデオモード 64h (640×400 2色 文字 80×20)に対応しました。
> これは、20行表示モードが使えるということかと思って VZJ31の ^KL でやってみました。
> が、白画面が真っ黒になって、縦400ドットが、480ドットに伸びました。
> カーソルは動きますが、文字は全く表示されません。
> もう一度 ^KL で元に戻りましたが、これは使えないようです。
> CHEV 64 でも同じ結果です。

これ、CHEJ 64 だとモードが変わりました。
CHEV コマンドに反映されていないみたいです。デジャブのような。(^^;

D:\NC>chev 64

V - Video mode information    R1.0  (C)ChaN,1993

Current Video Mode = 74h
Screen Size        = 80x25
Character Height   = 16
VRAM Mode          = A/N
VRAM Address       = B800:0000 (Real VRAM)

それで、CHEJ コマンドを試したら

D:\NC>chej 64
CHEJ.EXE <MultiMode CHEV> ver 6.10 by Natrium.

J-3100(DCGA)、日本語環境に切り替えました。
現在のビデオモードは 64h です。

V - Video mode information    R1.0  (C)ChaN,1993

Current Video Mode = 64h
Screen Size        = 80x20
Character Height   = 20
VRAM Mode          = A/N
VRAM Address       = B800:0000 (Real VRAM)

おお、画面モードが 20行に変わりました。
それで、VZJ31 の編集画面を見ると
行数は 25行のまま、アンダーラインカーソルも追随します。
点滅カーソルは 20行になったようで、下に行くほどズレます。

うーむ、これは VZが対応できていないのかしら?
やっぱり軟式さんに聞いてみようかな。


11218/11135 CXB00940  としき           Re^6: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/14 12:14 11216:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> NP2でやってみた結果です。
> 他のエミュの結果は全て以下の数値でした。
> 表示は全く同じなので、おかしくないということですね。(違う!)

NP2と他のエミュで差が出る、というところは一つの突破口かも。
少なくともNP2以外のエミュは仕様どおりではないということで、バグ報告は可能
だと思います。おそらく、四捨五入するときの桁数を誤っていると想定されます。
仕様上は、有効桁7桁、出力のときは7桁目が四捨五入されて6桁で表示、という
ことになっているのですから。
なので、以後は、NP2と実機の差異をどうするか。
どうも、本来は7桁以上は格納してはいけないものを7桁以上格納している、その上
7桁以上で比較してはいけないものを7桁以上で比較している、というように見える
わけですよ。
print usingを使う以外に、何かいい方法はあるかなぁ。


実際、この程度の小数の誤差がどの程度影響するかはわかりませんがね。
でも、もしかしたら、昔からゲームなんかでも使われている可能性はあるわけで。
konnoさんは、例えばバルーンパンチなんてゲームを覚えておられませんかね。
シーソーに乗った人が交互にジャンプして上のほうで動いている風船を割っていく、
というゲームです。
このゲームで飛んでいる人間は、まるで重力で引かれるような感じで頂点に向かって
減速して、また落下するときは加速するわけです。このゲームに限らず、まるで重力
に引かれたような動きをする、だとか、慣性が働いているようになかなか加速しない
上に速度が乗ったらすぐには止まれない、といった動きをするようなゲームでは、
もしもそれなりに理論的なアルゴリズムを使うならば、物体の位置決定に二次関数を
使う必要があるわけです。実際に使っているアルゴリズムがどこまで理論的に正しい
ものになっているかはわかりませんけどね。
そして、二次関数を解くためにはSQR関数が必要。
あるいは、ゲームによっては三角関数を使っているものもあるかもしれない。
そして、画面のXとYの座標は当然整数。
ときどき、当たり判定がバグっているゲームというのが話題になることがありますが、
あれっていうのはもしかしたら、小数と整数の比較の際の誤差の問題かも。そして、
実機だと正常に動いていたのにエミュだとおかしい、というゲームなどがあった場合、
それこそこのような小数の誤差の可能性は高いかも。
もちろん、倍精度を使えば誤差は少なくなりますが、リアルタイムの計算の場合、
倍精度だとやっぱり重くなるので、たいていは単精度を使うでしょうし。


11219/11135 BQO00549  konno            Re^7: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/15 01:15 11218:としきさんへのコメント コメント数:1
> NP2と他のエミュで差が出る、というところは一つの突破口かも。
> 少なくともNP2以外のエミュは仕様どおりではないということで、バグ報告は可能
> だと思います。おそらく、四捨五入するときの桁数を誤っていると想定されます。
> 仕様上は、有効桁7桁、出力のときは7桁目が四捨五入されて6桁で表示、という
> ことになっているのですから。

もしかしたら誤解させてしまったかもしれません。
他のエミュとは、98エミュ以外の、J31とかDOS/V系のエミュのことです。
今回 NP2以外の98エミュは確認していません。同じ結果になると思ったので。

ということで、ANEX86 や T98-NEXT のN88コンパイラ、インタプリタでも確認しました。
結果は NP2と 表示は全く同じでした。

> どうも、本来は7桁以上は格納してはいけないものを7桁以上格納している、その上
> 7桁以上で比較してはいけないものを7桁以上で比較している、というように見える
> わけですよ。

これが実際どうなのかはわかりませんが、BASICのルーツは MSのGW-BASICだと思います。
T-BASICなどは漢字処理を覗けば恐らくほとんどそのままの互換性だと思っているのですが
NECのN88BASICは、あちこち変えているようですが、単精度の精度もわざと落としているように見えます。
その辺がエミュでの誤動作の原因になっているのではないかと愚考します。

> konnoさんは、例えばバルーンパンチなんてゲームを覚えておられませんかね。
> シーソーに乗った人が交互にジャンプして上のほうで動いている風船を割っていく、
> というゲームです。

私はこの手のゲームはあまりやっていないので覚えていません。

> ときどき、当たり判定がバグっているゲームというのが話題になることがありますが、
> あれっていうのはもしかしたら、小数と整数の比較の際の誤差の問題かも。そして、
> 実機だと正常に動いていたのにエミュだとおかしい、というゲームなどがあった場合、
> それこそこのような小数の誤差の可能性は高いかも。

今回のことを踏まえるとそう考えられますね。

> もちろん、倍精度を使えば誤差は少なくなりますが、リアルタイムの計算の場合、
> 倍精度だとやっぱり重くなるので、たいていは単精度を使うでしょうし。

N88BASICは8ビット時代の互換性重視ではないかと思いますが、8ビットの貧弱なCPUで
ゲームの速度を上げるためにわざと単精度の桁を落としたのではないかと思います。
そして、16ビット版になっても互換性のためにそこを変えることが出来なかったのかも。


11220/11135 CXB00940  としき           Re^8: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/15 13:56 11219:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> もしかしたら誤解させてしまったかもしれません。
> 他のエミュとは、98エミュ以外の、J31とかDOS/V系のエミュのことです。

はい、誤解しました。
続報をいただいたことで、誤解は氷解しました。

> NECのN88BASICは、あちこち変えているようですが、

うん、まぁ、その前のN-BASICからの互換性というのがありますからね。
そちらのほうでいろいろと変えていたところはあるかもしれません。

> 単精度の精度もわざと落としているように見えます。

こちらについてはどうなんだろう。
そうではないというわけではなく、根拠不足というか、これまでのところでは、私
にはそう思えるだけの挙動はないような気がしています。
ということで、ちょっと調べてみました。
まず、単精度は4バイトであらわす実数、倍精度は8バイトであらわす実数。
これは、調べた範囲では、どこも同じみたい。80年代の8ビットパソコンのBASIC
でも、21世紀の64ビットパソコンのCコンパイラでもおおむね一緒。
ところが、倍精度のほうが、最近の国際規格とN88BASICで異なるみたい。
#11164に書いたように、N88BASICでは倍精度の扱える上限は 1.7*10^38 ですが、
最近の規格では 1.8*10^308 まで扱えるらしい。
一方で単精度の方は最近の規格でも 1.7*10^38 で同じ。
内部表現についても、仮数部23ビット、指数部8ビット、符号1ビットという部分
に変化はない。
でも、だからN88の単精度では精度を落としていないかというといささか怪しいと
いうか断言はできない。
なにかというと、十進数との変換部分。
#11135にも書きましたが、仕様としては有効桁7桁、出力のときは7桁目が四捨五入
されて6桁で表示、となっているわけですよ。でも、他の処理系では例えば、有効桁
7桁で表示も7桁、となっているかもしれない。もしそうであれば少なくとも見かけ
の精度は落ちているわけです。あるいは、他の処理系では、7桁目で四捨五入では
なく切り捨て表示となっているかもしれないし。
ただ、あまりにも他のマシンと差があるようであれば、当時、大騒ぎになっている
のではないかなぁ。あの時代、ネットはなくてもパソコン雑誌はあったし、8ビット
のころはともかく16ビットの時代はパソコン通信もあったし。
ということで、とりあえず現時点では根拠不足としてkonnoさんのご意見に賛同は
しないでおきます。
#つまり、何かあればすぐに意見は変わる

ただ、エミュという意味では、よく言われる「バグまで再現した」というものが評価
が高いわけで、現状、実機と差異が出るエミュは、完成度としてはもう一歩、という
のが現実的な評価だと思われます。


11221/11135 BQO00549  konno            Re^9: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/16 00:04 11220:としきさんへのコメント コメント数:1
> 続報をいただいたことで、誤解は氷解しました。

紛らわしい表現で誤解させてしまい申し訳ないです。
とりあえずホッとしました。

> > 単精度の精度もわざと落としているように見えます。

考えてみたら、これは表示だけなのかもしれませんね。
N88BASICは、インタプリタもコンパイラも中間コードの LIB を使用しているように見えます。
ということは、そのバイナリコードは BIOS.ROM の中なのではないですか。

私の手持ちのNP2の BIOS.ROMは、実機のものではなく、互換BIOS かもしれません。
その互換BIOSを作る時、N88BASICの仕様に忠実に作るために、#11215

> 10 A#=1.23456789#
> 20 B!=A#
> 30 PRINT A#,B!
>
> これ、実はN88のマニュアルに載っているサンプルです。
> そして、仕様上のこの実行結果は
>
> RUN
> 1.23456789 1.23457
>
> となるべきなのだそうです。

この結果を忠実に再現するために、わざと内部数値まで桁落ちさせたのではないかと疑い始めました。
つまり、問題なのは、互換BIOS.ROM なのかもしれないと思うようになりました。

これは、実機を持たない人たちにとって無くてはならない非常にありがたい福音ですが
互換BIOS を作ったのは、著作権の問題回避の為なので、バイナリレベルで違うものでなければならないわけです。
もしかしたら、この部分がそのための直せない生贄だったりして。あくまで妄想ですが。

> ただ、エミュという意味では、よく言われる「バグまで再現した」というものが評価
> が高いわけで、現状、実機と差異が出るエミュは、完成度としてはもう一歩、という
> のが現実的な評価だと思われます。

NP2は、細部の再現性にこだわったエミュという評価があるようなのですが
先のサンプルプログラムの結果は忠実に再現していますね。(^^;


11222/11135 CXB00940  としき           Re^10: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/16 12:22 11221:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
> ということは、そのバイナリコードは BIOS.ROM の中なのではないですか。

確かに .LIB のファイルのサイズが小さ目というところから、実際に LIB がやって
いることは ROM の中身の呼び出しのみ、という可能性は高そうです。

> この結果を忠実に再現するために、

ある意味、この結果「だけ」を忠実に再現している、という感じ。
もし「実機を忠実に再現」するのであれば、169は合成数と表示される必要がある。
この点がなされない限り、実機に対するエミュとしての完成度は今一歩、という
ところで終わってしまいそうです。
もっとも世の中には、既知のバグどころか未知のバグまで再現したエミュレータと
いうものもある模様。実機で新たなバグが発見されてから、エミュレータでも同じ
バグが発現した、なんて話もあるようで、とても不思議。こういうのが、いわゆる
「完璧なエミュレータ」というやつでしょう。なぜ作れるんだろう。

> 互換BIOS を作ったのは、著作権の問題回避の為なので、

これはそのとおりだと思いますが、その一方で、実数のバイナリ表現というものは
ある意味で規格化されているわけです。つまり、実数演算とかバイナリと十進数の
変換とかの部分は世の中にいくらでもサンプルコードとかライブラリとかのフリーで
使えるものが存在しているわけで、そしてそういうものを使えば少なくとも著作権の
問題は回避できるはず。さらに、その手のコードって世界中の人が見ているわけです
から、精度を落とす方向にいじることは少ないのではないかなぁ。というか、わざと
精度を落とす、なんてことに時間をかけるくらいならとっととリリースしてくれよ、
という気もする。
もちろん、そういうものを使わずに1からコードを書いていたら、十分な精度を確保
できていなくても不思議はないけど。
あ、でも、ありうるかな。
倍精度のほうが現在のありふれたものとは内部表現が異なっているようだから、そちら
のほうに合わせて、ということはあるかも。



実は私、実数演算についてはちょっとだけやかましい。
#2066とか#10367にも書いたけど、大昔、8ビットマシンの時代、実数演算のマシン語
ルーチンを書いてハンドアセンブルしていたもので。
といっても四則演算だけですけどね。


11223/11135 BQO00549  konno            Re^11: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/16 23:58 11222:としきさんへのコメント コメント数:1
> もっとも世の中には、既知のバグどころか未知のバグまで再現したエミュレータと
> いうものもある模様。実機で新たなバグが発見されてから、エミュレータでも同じ
> バグが発現した、なんて話もあるようで、とても不思議。こういうのが、いわゆる
> 「完璧なエミュレータ」というやつでしょう。なぜ作れるんだろう。

それはきっと、リバーs^ ・・・ いや、なんでもないです。(^^;

> 実は私、実数演算についてはちょっとだけやかましい。
> #2066とか#10367にも書いたけど、大昔、8ビットマシンの時代、実数演算のマシン語
> ルーチンを書いてハンドアセンブルしていたもので。
> といっても四則演算だけですけどね。

鶴亀算みたいなものでしたっけ? 結構面倒くさいんですよね。
丁度 DANNYさんの浮動小数演算ライブラリを目にしていたので見てみました。
ASMは1531行ありましたね。
バイナリは恐らく2千バイトくらいになるのかなぁ。

J3100用BASICコンパイラの続報も書かなくてはいけないのでこの辺で。


11224/11135 CXB00940  としき           Re^12: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/17 02:14 11223:konnoさんへのコメント コメント数:1
参照先:http://toshiki.la.coocan.jp/
konnoさん、なんか他のものを連想している。

> 鶴亀算みたいなものでしたっけ? 結構面倒くさいんですよね。

鶴亀算は整数演算です。
何だろう、何と勘違いしたんだろう。おいらにはわからない。


11225/11135 BQO00549  konno            Re^13: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/17 23:21 11224:としきさんへのコメント
> 鶴亀算は整数演算です。
> 何だろう、何と勘違いしたんだろう。おいらにはわからない。

あう、多分整数演算の事だと思います。(>_<)
私は算数も数学も苦手というか、数字の計算や記憶が全くダメなんですね。
だからパソコンにやらせようと思うのです。(^^;


11226/11226 BQO00549  konno            J31用BASICコンパイラの各エミュ対応沼
( 1) 24/04/23 01:23
STIME のTurboBasic用のBASICソースを J31BASICに逆移植しました。
元々は J3100で開発、運用していたので、動くようになるまで1時間も掛かりませんでした。
ところが、その後の各エミュでの挙動が違いすぎてその対応は非常に困難なものでした。
まるで底なし沼に落ちたような、藻掻けば藻掻くほど深くなるその深淵は、地獄か。

ということで、地獄から生還した私の地獄巡り体験記(違う)改造遍歴を書いてみたいと思います。(^^;
始めに両コンパイラの違いの説明です。
ソースの冒頭

TurboBasic
1  'STIME5  Menu   1994-08-10 96-05-27 97-9-12 98-04-23 09- 24-04-21
10 'TB
50 REM $DYNAMIC
55 $INCLUDE "REGNAMES.INC"

J31BASIC
1  'STIME6  Menu   1994-08-10 96-05-27 97-9-12 98-04-23 09- 24-04-22
10 'J31
50 REM $DYNAMIC
55 rem '$INCLUDE "REGNAMES.INC"

1994年頃は J3100で運用していましたが、Windows95が出てPCもWinノートに変わりました。
DOSの画面モードは VGAになり、J31用のプログラムは動かない。(>_<)
仕方なく手持ちのTurboBasicに移植することに。それが恐らく 96年以降の日付。

50行は J31用の設定ですが、TurboBasicでも同じようです。REM も含めてメタコマンドか。
55行は、TurboBasic用で、J31コンパイラではエラーになります。

55 '$INCLUDE "REGNAMES.INC"
55 rem $INCLUDE "REGNAMES.INC"

実は上のどちらにしてもエラーになるので、REM ' としてやっとコメントになりました。

後はテキストカラー属性指定かな。
TurboBasicは、
COLOR 7,0	グラフィックモード
COLOR 7,0,0	テキストモード

J31
COLOR 7,0	グラフィック
COLOR @7,0,0	テキスト

"@" だけの違いのように見えますが、実は TurboBasicでは文字の反転はテキストモードだけ
つまり、SCREEN 0 の英語テキストモードでしか使えないようです。
J31は基本グラフィックモードだけなので、@でテキスト文字用に使い分けできます。

他にもあったかもですが、僅かの変更でコンパイラは通るようになり、動き始めました。
だが本当の地獄はこれから始まるのであった。


続く ・・・のか