[HOME]  [現在掲示板へもどる] 

 番号順 全部表示   FGALVZ  


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 で動くかしら。

> もしかして,老人ホームにブチ込まれた後の楽しみになるのでは?とも思うこのごろ。

う、うーん、(^^;

# 俺たちに明日は無い、だから今日のテーマに生きるのだ! なんちて


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 で固有名詞をたくさん入力するということはないので。
(一応,うまいこと制御できています)

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 で固有名詞をたくさん入力するということはないので。
> (一応,うまいこと制御できています)

なるほど。当面これで運用してみますね。


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さん) コメント数:2
めざらさん、としきさん
突然ですがお二人にメール送ります。

もう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
> 要は「気が向いたらネ」ということで.(^^;

はい、気が向かれましたらよろしくです。(^_^)


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 を使うのならと三つの元ログをマージして処理したら,これが一瞬です。
しかし,三つも一遍に統合して並べたのにそれなりに空き番号があるではないですか。
実は,番号が飛ぶのが嫌で嫌で,掲示板利用者が自分で削除したような場合,
ログを編集して番号を詰めているんですよ。そういう性分だから仕方がない。
スパムも削除した後に番号をわざわざ詰めているんです。面倒ですけど。
要は,ある人が発言削除したとき,番号を埋めようとログを編集している最中に
その当人がコメントを書き直して書き込むということが発生していたのが原因です。
(ふつうの勤め人は書き込まないような時間帯だったので最悪のタイミングだった)

さて,どうしようかな。重複した一方を削除するのが簡単だけど,
とりあえず空き番号を割り当てられないか検討してみることにします。

そんなわけで,アーカイブも少々先送りという事情を長々と説明しました。

なんでこんなにクドクドしているかというと,ログソート及び空き番号列挙という
ふたつのマクロを久々に仕立て上げたのに,まるで無駄骨になってしまったから。
ちょっとしたリハビリでした,はい。……そんで飲んじゃった。ってわけ。

11036/11025 DGF01024  めざら           Re^4: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/10 09:41 11034へのコメント(めざらさん) コメント数:2
参照先:http://mezala.la.coocan.jp/
現時点では非公式版となっている2008年版の logsortw の存在を教えていただき,
実行してみたところ,ヘッダ不正問題は解決し,めでたく重複発言番号ありの
エラーによって停止しました。(笑)

さて,どうしようかな。
それに絡んでと思われるログ破損(一部消失)もあるので悩み中。
ログは固定されちゃっているので,ゆっくり考えればいいかな。

有難うございます&御免なさい > konnoさん

11038/11025 BQO00549  konno            Re^5: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/11 23:43 11036へのコメント(めざらさん)
> 現時点では非公式版となっている2008年版の logsortw の存在を教えていただき,
> 実行してみたところ,ヘッダ不正問題は解決し,めでたく重複発言番号ありの
> エラーによって停止しました。(笑)

メールでのやりとりで、たまたまだったのですが、解決できたようでなによりです。

> さて,どうしようかな。
> それに絡んでと思われるログ破損(一部消失)もあるので悩み中。
> ログは固定されちゃっているので,ゆっくり考えればいいかな。

考えることは老化防止にいいですね。(^^;
私は全ログ検索出来てからは過去ログのアーカイブはこだわらなくなりました。
過去にやったことをなかなか思い出せなくなり、シナプスが繋がるよりも速く
全ログ検索で知りたい結果が出るので、もはやクラウドブレインです。
ブレインスモッグじゃないよ。(^^; タブン


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


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のコードは、数年後には少し変わったかも。


> うう、私のソースってそんなふうに見えているのですか・・・ (;_;)

ま、私がとりわけぐうたら、と言うのもありますが。
プログラムを作るのって、結果が欲しいから作るものだと思っております。
なので、過程は楽をしたい。つまり、デバッグは楽なほうがいいと思っています。
だけど、あのコードは、なんかわざわざデバッグそのものを楽しむためのコードの
ような。
「デバッグ楽しいなぁ〜(;_;)」という経験の多寡でも考え方は変わるかも。

11057/11048 BQO00549  konno            Re^4: としきさんの msgview 完璧なツリー
( 1) 24/01/28 22:48 11055へのコメント(としきさん) コメント数:1
> 実は私自身、$mxの初期化漏れってそんなに影響があるとは思っていませんでした。
> でも、なんかうまく行かなかったので、わりと早い目に追加しました。
> そして、$jは配列の添え字。
> 配列を設定する側で添え字のインクリメントが間違っていたため、配列を読み出す
> 部分で配列の正しい位置にアクセスしてもデータが取り出せず、未定義の情報で
> 条件判断するはめになってしまい、"┃"と空白のどちらを出力するかという部分が
> うまくいっていなかったのでした。

うう、やっぱり基本がわかっていないとこういうミスを出しやすいのですね。
今回 BASICでも同じようなところで躓いて直すのにえらく時間がかかってしまいました。

> 不要なコメントの部分、あれはほんと、まるで迷彩のような。
> 軍事用語でもありますが、私がコードを読んだ第一印象は、マージャン漫画での
> この言葉。そして、SFへのマジレスでよくある、透明人間は回りを見ることが
> できないとの説から、光学迷彩を放った本人(konnoさん自身)が迷彩にやられて
> しまった、という感じも受けました。

私も義体化が進んできたので、バトーのようになるのでしょうか。(違)
BASICではコメントを緑に表示しているので、マジで迷彩服のようになってます。(^^;

> 上記の本の紹介。#10398でも書いていますね。
> 林晴比古著「BASICによるプログラミングスタイルブック」

うう、いまさら聞けないBASIC みたいに微妙な・・・ 見かけたら読んでみたいですね。(^^;

> だけど、あのコードは、なんかわざわざデバッグそのものを楽しむためのコードの
> ような。
> 「デバッグ楽しいなぁ〜(;_;)」という経験の多寡でも考え方は変わるかも。
       ↑     ↑
ククッ、、思わず吹いてしまいました。
まさに私のことを的確に言い当てているような。(^^;


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さんご希望の、掲示板検索ルーチンに取り掛かってみますか。
って、いつ開始するか全くめどは立っていませんが。


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さんご希望の、掲示板検索ルーチンに取り掛かってみますか。
> って、いつ開始するか全くめどは立っていませんが。

おお、期待しています。(^_^)
ログ形式が同じならそのまま動くのではないかと思っています。


11066/11048 CXB00940  としき           Re^7: としきさんの msgview 完璧なツリー
( 1) 24/01/30 12:45 11061へのコメント(文太さん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
>  学習は「ハノイの塔」とは何か? から始まる予定。まだ始まらない……。

「ハノイの塔」って、再帰のサンプルとしては非常に有名。
プログラム初心者に再帰を説明するのは「ハノイの塔」かフィボナッチ数列か、
というくらい。再帰を使ったほうがシンプルなものって、実生活ではあまり
見かけませんからね。
また、再帰でできるものは必ずループでもできるらしい。
なので、再帰からループへコードを変更するための題材にも使われるらしい。
で、ループならどうということもないのですが。
8ビットパソコンの時代のBASICでは、再帰というものが使えませんでした。
なので、そこでわざとループを使わず、いかに擬似的な再帰を実現するか、という
のも、ちょっと気取ったプログラマたちの力試しの例題に使われていたりして。
ま、再帰が使えない、という意味ではVzのマクロも同様。
だけど、Vzのマクロでも「ハノイの塔」はしっかりあるわけで。
結局、アルゴリズムなんて、どんな言語で実現しようが大差はないはず。
もちろん、向き不向きはあるでしょうが。


11070/11070 BQO00549  konno            DOSVAXJ3 240130 更新
( 1) 24/01/30 23:22 コメント数:1
DOSVAXJ3 240130版が更新されました。
以下更新内容です。

build JP240130 (2024/1/30)
[sdl] windowposition の位置指定が画面モード変更でも有効になっていたのを修正しました。


想像ですが、windowposition は本来画面モード設定時の位置情報なのでしょうね。
私の使い方では起動時のみ指定した位置に固定されているほうがありがたいです。
作者様に感謝です。


11074/11048 CRG00666  文太             Re^8: としきさんの msgview 完璧なツリー
( 1) 24/01/31 20:21 11066へのコメント(としきさん) コメント数:2
としきさん、

 詳細にありがとうございます。もともと「再帰」を狙ってあのサンプルを
選んだわけではなくて、単に「BASIC って読みやすいね。英語じゃん」という
だけだったのですが、この際ですから、「再帰」と「ループ」がどう違うのか
分かってやろうじゃないの、という気分になっています。
 多謝です。

 とはいえ、もうちょい待って。次々いろいろ起こるのですよねぇ、、、。
とほほ。

 ま、岡田元治さんのコンパイラに通るコードは、構造化もできるし、
「再帰」もできるし、十分にモダンなもの、ということですね。
 あ、マニュアルにね、FortranとかPascalとか出てきて(もちろん、
過去と歴史の話として)、そしてCは出てこなくて、そうですかぁ、よい
ですねぇ、その語り口というものでした。
 まったく無駄話をしない学者肌な方ですが。

 行くぞ、ハノイ! 3月あたり。「ハノイへ行ってみよう!」とかいう
タイトルで、少しは勉強してから、再帰いたします。

 ありがとうございます。

 そうそう、BASIC のユーザ変数に「型」がある、そのトークンがある、
というけっこう前の解説にも感謝していました。重ねてありがとうございます。

 血糖値(糖尿)のあとは、胃がんか? やれやれ。
 長生きするぞ!



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/
> まさにそのとおりで、プログラムを組めば仕事が楽になるという思いで必死でした。

最近konnoさんが公開された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 コメント数:4
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は基本グラフィックモードだけなので、@でテキスト文字用に使い分けできます。

他にもあったかもですが、僅かの変更でコンパイラは通るようになり、動き始めました。
だが本当の地獄はこれから始まるのであった。


続く ・・・のか


11227/11227 BQO00549  konno            STIMEでリアルタイムのタイマー
( 1) 24/04/24 22:01
ココログからの転載記事です。
http://tamaneko2.cocolog-nifty.com/vz2/2024/04/post-6e6da8.html
これは、TurboBasic の STIME です。
先にこちらを上げないといけないので。(^^;


STIMEでリアルタイムのタイマー機能を追加しました。
きっかけは白内障の手術です。
術後点眼薬を3種類1日に4回または2回挿すことになりました。
3種類を5分間隔で、4時間以上空けて1日に4回を毎日3カ月間続けるのです。

忘れっぽい私は、STIMEのタイマー機能を使えば点眼管理が楽になると思ったのですが
キーを押した時に経過時間を表示するだけの簡易タイマーなので、あまり便利に思えません。
経過時間をリアルタイムに表示出来れば便利だろうと思い、機能追加しました。

STIME41 画像参照

以前はこのように2系統のタイマーを2列表示していましたが
リアルタイマーは上下2系統にし、黄色で表示します。

STIME51 画像参照

これで5分間隔の点眼は便利になったのですが、4時間以上経過したかわかりにくいので
アナログ時計にマーキングすることを思いつきました。

STIME556 画像参照

黄色の丸が [F06] で、ピンクの丸が [F07] です。
時計の丸枠に掛かっている丸は短針の位置で時間を示します。
時計の丸枠の内側の丸は長針の位置で、分を示します。

やってみると、分の表示はごちゃごちゃしてわかりにくいですね。
そこで、5分とか指定時間が経過したらカラー表示で知らせるビジブルベルを追加。

STIME557 画像参照

指定所間を経過するとカラーバーを色を変化させて表示します。

[ESC] でカラー表示のビジブルベルを解除できます。
時間など各種設定のために、STIME.DAT で設定できるようにしました。

MS-DOS Playerではこのように表示します。

STIME558 画像参照

これだとPC画面の隅に1文字分でも表示させておけばほかの作業中でもわかります。

これはいい!


11228/11228 BQO00549  konno            LXCLND.DEF の祝日変更対応版
( 1) 24/04/27 23:07 コメント数:1
STIME のカレンダ表示などを弄っていて、LXCLND.DEF と表示を比べてみたら
2月23日とか12月23日など違っている日がいくつかありました。
STIMEの HOLIDAY.DAT を見てみると

02/23 2020-2099 天皇誕生日  (令和天皇)
12/23 1989-2018 天皇誕生日  (平成天皇)

なるほど、最近変更された祝日に LXCLND.DEF が対応してないのですね。
STIME のバグでなくてほっとしました。(^^;

見たついでに、LXCLND.DEF の祝日テーブルを修正しました。
LXCLND.DEF には HOLIDAY.DAT のデータ形式で参考にさせてもらいましたからね。

LXCLND.DEF  431行目

72:	;---- holiday definition -----------------------------------------

;	hh..2  =  "1874>1948=11;1967>0=11",
	hh..2  =  "1874>1948=11;1967>0=11;2020>0=23",

;	hh..4  =  "1874>1948=3;1928>0=29",
	hh..4  =  "1874>1948=3;1928>1988=29;1989>2006=29;2007>0=29",

;	hh..5  =  "1949>0=3;1985>0=4;1949>0=5",
	hh..5  =  "1949>0=3;1985>2006=4;2007>0=4;1949>0=5",

	hh..8  =  "2016>0=11",

;	hh..10 =  "1874>1948=17;1966>1999=10;2000>0=BB",
	hh..10 =  "1874>1948=17;1966>1999=10;2000>2019=BB;2020>0=BB",

;	hh..12 =  "1989>0=23",
	hh..12 =  "1989>2018=23",


該当する HOLIDAY.DAT の祝日は

02/23 2020-2099 天皇誕生日  (令和天皇)

04/29 1948-1988 天皇誕生日 (昭和天皇)
04/29 1989-2006 みどりの日
04/29 2007-2099 昭和の日

05/04 1985-2006 国民の休日
05/04 2007-2099 みどりの日

08/11 2016-2099 山の日

10/10 1966-1999 体育の日
10/BB 2000-2019 体育の日
10/BB 2020-2099 スポーツの日

12/23 1989-2018 天皇誕生日  (平成天皇)

修正した LXCLND.DEF を VZマクロの部屋に置きました。
以下の直リンクでも見ることができます。

#txt:LXCLND.DEF



11229/11229 BQO00549  konno            STIME.EXE Ver 240428
( 1) 24/04/28 22:21
STIME.EXE Ver 240428 を「自作、改作アプリの放置部屋」に置きました。

STIME5.ZIP サイズ 84098bytes  24-04-28 new!

  STIME.EXE Ver 240428

・DOSVAXJ3 の VGAで動くアナログ時計とカレンダとタイマーのアクセサリです。
・NCPATH= でデータファイルの置き場所を指定してください。末尾に "\" が無ければ追加します。

・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、STIME.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにします。文字のデジタル時計とカレンダのみ表示。
・VTDOS では動作しません。
・タイマーモード(6)の時は[F03]や[←]キーで小窓のカレンダー当月を表示します。
・ビジブルベルは[F06]だけの機能です。STIME.DAT で動作設定します。[ESC]でカラー表示消去。

STIME5 24-04-28
 240428 タイマーモード(6)の時は[F03]や[←]キーで小窓のカレンダー当月を表示。
 240315 指定時間経過でビジブルベル タイマー画面復帰
 240306 アナログ時計にタイマーのマーキング 設定ファイル STIME.DAT で各種設定可能に
 240202 タイマーの時間表示文字を大きく・経過時間をリアル表示、スリープモードにも対応。
STIME4 23-12-12
 231212 NCPATH が通ってなくてデータファイル読めない場合エラー終了していたのを警告表示に。
 231208 環境変数 NCPATH でデータファイルの置き場所を指定。指定無しならカレント
 春分、秋分の日を自動計算
 デジタル時計とカレンダ大の文字を2バイト文字に。
 [↑↓]キーで前年・次年 [←→]キーで前月・次月のカレンダーを表示

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


※今回は DOSVAXJ3 で TOUCH を使いファイルの日時を合わせました。
 使い慣れたDOSツールが使えるのは気持ちいいですね。
 今回の版は TurboBasic でコンパイルしています。
 VTDOSでは動かないので注意してください。


11230/11228 DGF01024  めざら           Re: LXCLND.DEF の祝日変更対応版
( 1) 24/04/29 07:36 11228へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
わたしもオリ・パラ関連特別措置法による移動は無視しました。
四月と五月は敢えて弄りませんでした。祝日名を表示するわけでもないので。


11231/11228 BQO00549  konno            Re^2: LXCLND.DEF の祝日変更対応版
( 1) 24/04/29 23:16 11230へのコメント(めざらさん) コメント数:1
> わたしもオリ・パラ関連特別措置法による移動は無視しました。

これは Wikipedia でも参考程度になっていますね。

> 四月と五月は敢えて弄りませんでした。祝日名を表示するわけでもないので。

そうなんですよね、表示は同じなんですが、オリジナルでも分けているところがありましたので。

ところで、今回 LXCLND.DEF で気が付いたところがあります。
中央のカレンダに今日の日付が () に囲われてわかりやすくなっていますが
表示月を移動しても同じ日付に () が付いたままになっていますね。

これはバグという見方もできますが、仕様かもしれないと思いました。
このマクロはスケジュール管理のために月を変えてカレンダを参照しやすくなっています。
その時、今日は何日だっけ?と思うこともありそうなので、その確認になるかなと。
なので、この仕様はこのままにしておきます。

STIME でも現在の日付に色付けしていますが、改編時バグって毎月同じ日付に色がついて
修正に苦労したりして。いや、年取って頭が働かなくなっただけなんですけどね。(^^;

う、そういえば今日は祝日なのに今日の日付が赤になっていない。(>_<)
うーん、直せるかしら・・・(^^;


11232/11228 DGF01024  めざら           Re^3: LXCLND.DEF の祝日変更対応版
( 1) 24/04/30 08:26 11231へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
> 表示月を移動しても同じ日付に () が付いたままになっていますね。

日付出力のために疑似カーソルを表示しています。
これは当日であるとは限らないです。(当日は[TAB]入力直後の表示)


11233/11228 BQO00549  konno            Re^4: LXCLND.DEF の祝日変更対応版
( 1) 24/05/01 16:02 11232へのコメント(めざらさん) コメント数:1
> > 表示月を移動しても同じ日付に () が付いたままになっていますね。
> 日付出力のために疑似カーソルを表示しています。
> これは当日であるとは限らないです。(当日は[TAB]入力直後の表示)

疑似カーソルって、Shift+カーソルキーで () の日を移動出来るんですね。
凄いテクニックです。ソースを見てみました。

LXCLND.DEF 189行目以降

10:	;---- make menu --------------------------------------------------

	pr..15 = "$$3($$7",		;right of today
	pr..16 = "$$3)$$7",		;left of today

ここが多分メニューの中で () を表示するところでしょうか。
実際のメニュー表示はその下のマシン語かな。

10:	;---- mklxclnd.asm ----

こうなると全く読めないので追及は諦めます。(^^;


11234/11226 BQO00549  konno            C000h VRAM領域と CDBL$() の問題
( 1) 24/05/01 17:48 11226へのコメント(konnoさん) コメント数:2
新しい STIME では、TIMER.DAT にタイマー画面を退避させています。
J31用BASICコンパイラを動作させてみると、その画面がおかしい。
ぐちゃぐちゃになっているのです。

TurboBasic では、48桁 23行で以下のように表示されます。
1行目は、d-他の受け渡しに使っています。

 1             1 
>                                               
 1日 17:16:31   0: 0: 0    0: 0: 9        
                                                
  中略
                                                
     1日 17:16:33   0: 0: 0   0: 0: 7     


J31BASIC では、各エミュごとに全部違っています。

VTDOS 4/13
13 把  0Oマ: 4Sマ: 4Sツ   8:12'45    0: 0:19        
                                                
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

VTDOS 4/21
21日^@^@02:38:31  0: 0: 0   0: 6:48 ^@^@^@^@^@^@
                                                
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

VTDOS 5/1
 1日  17:22:54  0: 0: 0   0: 0: 8       
                                                

最初は2バイト文字が変に文字化けして、背景のスペースがヌルになっています。
現在は正常表示になっていますが、ここまでするのに一苦労でした。

DOSVAXJ3 VGAモード
12日cc 1PP6UU:2QQ9XX:1PP0OO   0  8:40:54 0: 0: 3
                                                
ロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロ
ロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロ

DOSVAXJ3 J31モード
13日日 0011:0077:4477   0: 0'26    0: 0:13        
                                                
                                                
MS-DOS Player
13日c 0O0O:5T3R:3R0O   0: 0' 0    0: 0:11        
                                                
                                                
このように、どのエミュでも2バイト文字が化けたり2重になったりしています。
その原因は、J31BASIC の CDBL$() という、1バイトの数字を2バイト文字に変換する関数でした。
元々は J3100 でこの関数を使って表示していたので元に戻してみたらこうなったということです。
しかたがないので、TurboBasic と同じやり方に戻しました。

背景の空白が ヌル文字になったり、DOSVAXJ3 VGAモード では、$DB で埋められています。
これは、VRAM領域のメモリの状況によると思われます。
C000h セグメントは VGAの領域で確保されていると思いますが、初期化の問題なのかな。
VTDOS では、TPAEXT などでメモリ拡張していると干渉すると思われるので要注意です。

ともかく、動くのが不思議な状態なので、このまま使うのがよろしいようです。
                                                


11235/11228 DGF01024  めざら           Re^5: LXCLND.DEF の祝日変更対応版
( 1) 24/05/02 13:17 11233へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
> 疑似カーソルって、Shift+カーソルキーで () の日を移動出来るんですね。

メニュー表示中のコマンドキーを受けるもののうち,以下の四つですね。

(#37)	{ r=7, &11 }
(#38)	{ r=7, &12 }
(#a)	{ r=1, &11 }
(#f)	{ r=1, &12 }

これらのキーを受け取ったときに「日付」を再設定します。
再設定する値は現在の値に1日(左右)か7日(上下)を増減して再表示します。

再表示のしかたについては,多くのカレンダーマクロで当日の背景色を変えたり
括弧でくくったりするのとまったく同じで,メニューアイテムへの埋込みです。
(括弧の場合は前後の空白に上書きすることになりますが)

メニューアイテムの書換えというのはトンでもなく面倒なわけで,
オリジナルのnomad版ではテキストに書き出すという手法をとっていたため
konnoさんのようにキーを押しっぱなしにしたりする人(^^;はとても使えなかった。

Yushiさんはメモリ(ラインバッファ)上に出力することと機械語化で高速化し,
Emmettさんは機械語化をさらに徹底的に行なって超高速化しています。

メニュー内でカーソルを動かすというのは確かに高度なテクニックですが,
(アセンブラに馴れ親しんでいるkonnoさんには釈迦に説法に違いないのですが)
とにかくひたすら面倒な「低級」テクニックとも言えると思います。

Yushiさんなんか,メニューで十字カーソルですぜ。
そんな面倒なコードをよく書くものだなぁとひたすら感心します。

あ,元に戻って,「日付」というのは保持している値なので,あまり意味はなく,
「当日」を指示されたときだけリセットするというイメージですね。

11236/11228 BQO00549  konno            Re^6: LXCLND.DEF の祝日変更対応版
( 1) 24/05/03 22:01 11235へのコメント(めざらさん)
> > 疑似カーソルって、Shift+カーソルキーで () の日を移動出来るんですね。
> メニュー表示中のコマンドキーを受けるもののうち,以下の四つですね。
> (#37)	{ r=7, &11 }
> (#38)	{ r=7, &12 }
> (#a)	{ r=1, &11 }
> (#f)	{ r=1, &12 }

なるほど、詳細な解説ありがとうございます。
これなら改造も出来そうな気がしてきました。(やらないけど。(^^;)

> メニューアイテムの書換えというのはトンでもなく面倒なわけで,
> オリジナルのnomad版ではテキストに書き出すという手法をとっていたため
> konnoさんのようにキーを押しっぱなしにしたりする人(^^;はとても使えなかった。

い、いやぁ、、、そんなことは・・・ない、と思いますです。(^^;
実際のところ今カレンダ表示をモードによって分岐を変えるので四苦八苦してます。
とんでもないスパゲッティが出来上がりつつあり、ソースでごまかせるのかと。(^^;

> あ,元に戻って,「日付」というのは保持している値なので,あまり意味はなく,
> 「当日」を指示されたときだけリセットするというイメージですね。

これ、勘違いしていました。疑似カーソルの意味がやっとわかりました。
スケジュールとのリンクとか日付出力とかでこの機能が必要だったのですね。


11237/11237 DGF01024  めざら           DOSVAXJ3 Build JP240502 更新
( 1) 24/05/05 00:19 コメント数:1
参照先:http://mezala.la.coocan.jp/
DOSVAXJ3 が 240502版に更新されました。
以下更新内容です。

・J-3100 モードの場合、int 10h ah=02h のカーソル位置指定で bh のページ番号は使用せず常に 0 となるよう修正しました。
・J-3100 の int 10h ax=8200h でスクロールモードを変更した後に画面クリアするよう修正しました。
・macOS 上での SDL-IM+ の不具合を修正しました。

……てことで,あまり関係ないかしら(^^;)

11238/11237 BQO00549  konno            Re: DOSVAXJ3 Build JP240502 更新
( 1) 24/05/05 02:37 11237へのコメント(めざらさん)
> ……てことで,あまり関係ないかしら(^^;)

あうう、更新の記事を上げようとしたら先を越されてしまいました。(^^;

問題無く動作しますが、特に変化は感じないです、(^^;
この機会にJ31関連でちょっと要望などしてみようかしら。(^^;


11239/11226 BQO00549  konno            C000h セグメントは間違い、A000h でした。m(__)m
( 1) 24/05/06 01:56 11234へのコメント(konnoさん)
> C000h セグメントは VGAの領域で確保されていると思いますが、初期化の問題なのかな。
> VTDOS では、TPAEXT などでメモリ拡張していると干渉すると思われるので要注意です。

C000h セグメントはパソピア16 でした。思い込みで間違えました。m(__)m
J3100用BASICコンパイラでは、画面モード 75 (SCREEN 4) でカラーモードが使えます。
J3100テクニカルブックによるとこのモードでは VRAM領域 A000h - AFFFh となっています。

確認のために STIME実行中に SHELL で画面情報を見てみました。

・DOSVAXJ3 J31
CHEJ.EXE <MultiMode CHEV> ver 6.10 by Natrium.

現在 DOS/V(Normal)、日本語環境です。
現在のビデオモードは 03h です。

V - Video mode information    R1.0  (C)ChaN,1993

Current Video Mode = 03h
Screen Size        = 80x25
Character Height   = 19
VRAM Mode          = APA
VRAM Address       = C741:0000 (Virturl VRAM)


・DOSVAXJ3 VGA
現在 DOS/V(Normal)、日本語環境です。
現在のビデオモードは 03h です。

Current Video Mode = 03h
Screen Size        = 80x25
Character Height   = 19
VRAM Mode          = APA
VRAM Address       = C679:0000 (Virturl VRAM)


・VTDOS
現在 DOS/V(V-Text)、日本語環境です。
現在のビデオモードは 70h です。

Current Video Mode = 70h
Screen Size        = 110x35
Character Height   = 12
VRAM Mode          = A/N
VRAM Address       = D000:0000 (Real VRAM)


・MS-DOS Player
現在 DOS/V(V-Text)、日本語環境です。
現在のビデオモードは 75h です。

Current Video Mode = 75h
Screen Size        = 80x25
Character Height   = 22
VRAM Mode          = A/N
VRAM Address       = B800:0000 (Real VRAM)


うーむ、どのエミュも A000h - AFFFh の領域は使用していないようですが
VRAMアドレスがバラバラですね。


11240/11226 CXB00940  としき           Re: C000h VRAM領域と CDBL$() の問題
( 1) 24/05/09 22:22 11234へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
ごめんなさい、ここのところがよくわからないので解説希望。

> その原因は、J31BASIC の CDBL$() という、1バイトの数字を2バイト文字に変換する関数でした。
> 元々は J3100 でこの関数を使って表示していたので元に戻してみたらこうなったということです。
> しかたがないので、TurboBasic と同じやり方に戻しました。

(1)J31BASICではCDBL$()を使っていた
(2)でも何らかの理由でJ3100ではCDBL$()を使わなくなった
(3)だけどやっぱりCDBL$()を使ったら文字化け
(4)TurboBasicと同じCDBL$()を使わない方法に戻した

という理解でよろしいのでしょうか。それとも

(1)J31BASICではCDBL$()を使っていた
(2')でもJ3100以外の機械で使うためにCDBL$()を使わなくなった
(3)だけどやっぱりCDBL$()を使ったら文字化け
(4)TurboBasicと同じCDBL$()を使わない方法に戻した

こっちの理由かな。
つまり、(2)なのか(2')なのかで違いがあるかも、というお話。


余談ですが、N88-BASICにはCDBL$()という関数はありません。
数値型のCDBL()という関数はあります。
引数を倍精度型に変換するという関数です。
文例として
A#=CDBL(256%)
なんていうのが載っていますが、仮に
A#=256%
とした場合と何が違うのか、あまり知られていません。違いはないのかも。
積極的には使われない関数であることは間違いありません。


11241/11226 BQO00549  konno            Re^2: C000h VRAM領域と CDBL$() の問題
( 1) 24/05/10 01:02 11240へのコメント(としきさん) コメント数:1
> (2')でもJ3100以外の機械で使うためにCDBL$()を使わなくなった

こちらですね。
経緯は書いていますが、もう一度整理すると

・元々J3100 で使うために J31BASICでCDBL$()(2バイト数字文字)を使っていた。
・でも、PCがWin95ノートに変わってしまい、J3100のプログラムが動かなくなったので
 TurboBasicに移植して、CDBL$()が使えないので、1バイト数字文字で運用した。
・今回このプログラムを公開するために、2バイト数字文字表示を実現させた。
・その後 J31BASICで各種エミュで動くことが分かったので、CDBL$()(2バイト数字文字)を復活させた。
・だけど CDBL$()を使ったら文字化け。
・結局TurboBasicと同じCDBL$()を使わない方法に戻した

で、文字化け等の原因ですが、J3100と IBM-PCの VGAで同じBIOSコールを使っていても
機能が微妙に違ったり VRAMへの描画形式が違うためと思われます。
VRAM領域は、VGAと J31の画面モード 75 が同じ A000h セグメントなので動くみたいです。
実機では動かないと思っていましたが、エミュでは何故か動くのです。

> 余談ですが、N88-BASICにはCDBL$()という関数はありません。
> 数値型のCDBL()という関数はあります。
> 引数を倍精度型に変換するという関数です。

この関数は J31BASIC にもあります。機能的にも同じようです。

> 積極的には使われない関数であることは間違いありません。

私も使ったことが無いです。(^^;


11242/11226 CXB00940  としき           Re^3: C000h VRAM領域と CDBL$() の問題
( 1) 24/05/10 13:07 11241へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> > (2')でもJ3100以外の機械で使うためにCDBL$()を使わなくなった
> こちらですね。

理解できました。ありがとうございます。
ところで、CDBL$()を使わない方法ってどんなものですか?
Vzでよくやる、$824fを足しこむ、みたいなものかな。


11243/11226 BQO00549  konno            Re^4: C000h VRAM領域と CDBL$() の問題
( 1) 24/05/11 01:03 11242へのコメント(としきさん) コメント数:1
> ところで、CDBL$()を使わない方法ってどんなものですか?
> Vzでよくやる、$824fを足しこむ、みたいなものかな。

Vzでよくやる、$824fを足しこむ、みたいなやりかたはしてないです。
「0」のコード $30 を「0」のコード $824f に変換ですか、出来そうですね。

私は単純に配列を使ってみました。

DIM BB$(10)
BB$(1)="1"
BB$(2)="2"
BB$(3)="3"
BB$(4)="4"
BB$(5)="5"
BB$(6)="6"
BB$(7)="7"
BB$(8)="8"
BB$(9)="9"
BB$(0)="0"
PRINT BB$(VAL(MID$(TIME$,1,1)));BB$(VAL(MID$(TIME$,2,1)));

これで2桁の2バイト数字表示になります。
VZ式だと配列を使わないで

k!=&h824f
PRINT chr$(k!)

こんな感じ? 結果はエラーになりました。(>_<)


11244/11226 CXB00940  としき           Re^5: C000h VRAM領域と CDBL$() の問題
( 1) 24/05/11 11:11 11243へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
配列方式は、わかり易くていいんですけどね。
やっぱり、初期設定がちょっと手間がかかる気がして。
単なる気のせいなんでしょうけど。

> こんな感じ? 結果はエラーになりました。(>_<)

あぁそうか。
chr$だと1バイト値しか取れませんからね。
N88-BASICだとAKCNV$かKNJ$を使う、ということになっているのですが、私、KNJ$って
使った記憶がない。これは純粋に文字コードの変換しかしてくれなくて、表示の際には
もう一手間かかるので。


11245/11226 BQO00549  konno            Re^6: A000h VRAM領域と CDBL$() の問題
( 1) 24/05/12 02:04 11244へのコメント(としきさん)
> chr$だと1バイト値しか取れませんからね。
> N88-BASICだとAKCNV$かKNJ$を使う、ということになっているのですが、私、KNJ$って
> 使った記憶がない。これは純粋に文字コードの変換しかしてくれなくて、表示の際には
> もう一手間かかるので。

それらの関数は J31BASICには無いですね。調べてみたら、「0」は、KTN$("0") 
これで区点コードで &K0316 が得られました。この形式なら CHR$() で表わせるようです。
PRINT CHR$(&K0316)
0

&K は定数なので、これではちょっと使えないなぁ。
さらに調べてみたら、「0」は、内部連続コードなら CHR$() で表わせるようです。
その換算表が手元に無いのでさらに調べたら、ASC("0") で連続コードが得られるようです。
PRINT ASC("0")
459

PRINT CHR$(459)
0

おお、これなら使えるかもしれない。0〜9までの数値は

2バイト 区点コード	連続コード
0	&K0316		459
1	&K0317		460
2	&K0318		461
3	&K0319		462
4	&K0320		463
5	&K0321		464
6	&K0322		465
7	&K0323		466
8	&K0324		467
9	&K0325		468

こうなりました。この内部連続コードを使えば配列がいらなくなりますね。
早速 BB$(I) を CHR$(I+459) に入れ替えてみました。
おお、動いた。\(^^)/ ヤッタ-

でも、考えてみたら、TurboBasic ではこの関数使えないですね。
ということで、互換性を考えてこの案は没にします。(;_;) 時間を返せ〜


11246/11226 BQO00549  konno            VTDOSは 2バイト文字の表示に難有り
( 1) 24/05/13 15:07 11226へのコメント(konnoさん) コメント数:1
各種DOS/V系エミュのテキストモードで J31BASIC が動作する仕組みは大体わかりました。
J31BASIC では文字の読み書きなどを BIOSコールで行っていると思われます。
なので、BIOSレベルではほぼ互換なのでテキストが正常に表示出来ていると。

ところが VTDOSの場合、2バイト文字の表示にいくつか問題がありました。

・文字列の中で2バイト文字だけ表示位置が1バイト後ろにズレる。
 その後ろが1バイト文字の場合2バイト文字が表示されなくなる。

・CHR$()で文字表示の場合改行しないと(カーソル点滅で?)最後の文字が消えることがある。
 1バイト罫線文字などでもこの現象は起こる。必ず起こるわけではないのは点滅のせい?

・"日 月 火 水 木 金" これらの文字が特に表示されにくい("土"はそうでもない)
 カレンダーでは必須の文字なのでCHR$()を使って苦労して体裁を整えた。

いずれも結構な難題補間形書くで、どうにかこうにか見た目だけは正常に出来ました。(^^;
VTDOSだけ何故こうなるのかは謎ですね。

ちなみに DOSVAXJ3のVGAモードならカラーグラフィックも表示されます。
640*400 の範囲だけどね。(^^;


11247/11226 CXB00940  としき           Re: VTDOSは 2バイト文字の表示に難有り
( 1) 24/05/13 22:24 11246へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
なんか昔、1バイト幅の2バイト文字、というのが話題になったようなおぼろげな
記憶が。PC-98でしたっけ?


11248/11226 DGF01024  めざら           Re^2: VTDOSは 2バイト文字の表示に難有り
( 1) 24/05/14 16:47 11247へのコメント(としきさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
文字だとちょっと思い出せないんですが……,
確か罫線で半角の2バイト素片があったように思います。

大昔のPC8801のN88-BASIC のマニュアルなんか見たら,
1/4角文字コードなんて掲載があって凄く笑った。
実は,カセットテープの背ラベルとかに割と重宝してたの思い出して,
なんだか切ないような愛おしさまで感じた。(PC88専用ワープロで対応してた)
データベースが使えなくて印字で現物管理していた遠い昔の話です。

11249/11226 BQO00549  konno            Re^3: VTDOSは 2バイト文字の表示に難有り
( 1) 24/05/14 22:08 11248へのコメント(めざらさん)
としきさん
> なんか昔、1バイト幅の2バイト文字、というのが話題になったようなおぼろげな
> 記憶が。PC-98でしたっけ?

PC98で 2バイト半角というのは聞いたことがあります。

めざらさん
> 大昔のPC8801のN88-BASIC のマニュアルなんか見たら,
> 1/4角文字コードなんて掲載があって凄く笑った。

そんなのもあるんですか、面白いですね。

> 実は,カセットテープの背ラベルとかに割と重宝してたの思い出して,
> なんだか切ないような愛おしさまで感じた。(PC88専用ワープロで対応してた)
> データベースが使えなくて印字で現物管理していた遠い昔の話です。

私も8ビットのパソピア7に漢字パック入れてドットプリンタで漢字印字とかやってたような。
5インチFDDも買っていたので凄い出費でしたが、全部捨ててしまったのは惜しいことしたかなぁ。


11250/11250 BQO00549  konno            DOSVAXJ3 Build JP240514版 更新
( 1) 24/05/15 00:34 コメント数:2
DOSVAXJ3 Build JP240514版 (2024/5/14)が更新されました

内容は

build JP240514 (2024/5/14)

    タイトルバーに表示する文字列を指定する [sdl] titlebar が有効になっていなかったのを修正しました。
    タイトルバーに表示する文字列を変更するコマンド title を追加しました。
    macOS Sonoma 上での SDL-IM+ の不具合を修正しました。


[sdl] セクションで

titlebar          =
     ↓
titlebar          = DOS/V

このように変更すると、窓のタイトルバーに表示されて、DOS/V モードか J31 モードか判別しやすくなります。
私は常時複数窓を開けて使い分けているので、コマンドラインで

title J31

等とすればその窓のタイトルが変わります。
タスクバーの表示も変わるので使い分けに便利です。

わがままな要望に応えてくださった軟式さんに感謝です。


11251/11226 BQO00549  konno            VTDOSの vtd_err.log のサイズが超巨大になってた件
( 1) 24/05/18 23:57 11226へのコメント(konnoさん) コメント数:2
最近 Cドライブの空き容量が急激に減少してほとんど無くなってきました。
色々不要なファイルを削除したり移動させても追いつきません。

ふと、VTDOSのエラーログ、vtd_err.log を確認してみたら、、、げげぇ、なんと!!
ギガ越えの超巨大ファイルになっているではないですか!! なんじゃこりゃぁ!!
その原因は、J31BASICコンパイラの実行ファイル、STIME.EXE でした。

2024-04-16 10:01:41 STIME(09BA) 1876:4778 'サポート外 VIDEO BIOS(Int10h) 機能: AX=8500'
2024-04-16 10:01:42 STIME(09BA) 1876:47F1 'サポート外 VIDEO BIOS(Int10h) 機能: AX=8582'
2024-05-08 07:47:20 STIMEJ(2797) 433A:5982 'サポート外 KEYBOARD BIOS(int16h) 機能 F6'
2024-04-16 10:02:00 STIME(09BA) 1876:4D68 'サポート外 Int6F'

このようなエラーログが延々と出続けていたのです。
特に、Int10h AX=8500 〜 AX=8582 は毎秒30くらい出続けていました。
なんてこった、これでは VTDOSで使えないではないか。(>_<)

この割り込みは、ブラウンデータにも載っていない J31独自機能のようです。
J3100テクニカルブックを発掘したので見ると、カーソル位置のアトリビュート読み込みのよう。
int16h 機能 F6 は、キーバッファのチェックのようです。
Int6F は、ATOK5制御割り込みのようです。

VTDOSには エラーログ抑制オプションとかは無さそうだし、どうしたものか・・・・


11252/11226 BQO00549  konno            DOSVAXJ3の超巨大ファイルで C:の空きがゼロになった件
( 1) 24/05/21 00:15 11251へのコメント(konnoさん)
> ふと、VTDOSのエラーログ、vtd_err.log を確認してみたら、、、げげぇ、なんと!!
> ギガ越えの超巨大ファイルになっているではないですか!! なんじゃこりゃぁ!!
> その原因は、J31BASICコンパイラの実行ファイル、STIME.EXE でした。

このVTDOSのエラーログを削除しても Cドライブの空き容量の減少が止まりません。
そして、ついに Cドライブの空き容量がゼロになってしまいました。
その時ふと、DOSVAXJ3のフォルダを覗いてみたら、capture フォルダが出来ていて
こんな感じになっていました。げげぇ!!!

2024/04/26  05:15     5,866,799,616 stime_000.wav
2023/04/10  16:46             7,343 dosbox_000.png
2023/04/10  16:54         1,892,112 dosbox_000.wav
2023/04/10  16:54             7,202 dosbox_001.png
2024/03/06  14:10             5,300 stime510_000.png
2024/03/06  07:40         2,311,592 stime510_000.wav
2024/03/06  07:41         4,845,752 stime510_001.wav
2024/03/06  13:51         1,952,792 stime510_002.wav
2024/03/06  13:57        52,911,756 stime510_003.wav
2024/03/06  13:58         6,592,112 stime510_004.wav
2024/03/06  14:00        23,988,684 stime510_005.wav
2024/03/06  14:10        46,314,040 stime510_006.wav
2024/03/06  14:33       158,472,688 stime510_007.wav
2024/03/06  14:33         5,609,564 stime510_008.wav
2024/03/09  23:59     3,240,653,264 stime_000.wav
2024/03/09  23:59         1,792,092 stime_001.wav
2024/03/09  23:59            66,900 stime_002.wav
2024/03/09  23:59         1,114,112 stime_003.wav
2023/04/10  16:54         1,892,112 dosbox_000.wav

※ これはもう1台のPCの中身。件のデータはもっと巨大で、緊急事態につき速攻で削除しました。

どうやら DOSVAXJ3 の機能キーを不用意に押してしまったようです。

キー割当  機能名
Ctrl-F5   Screenshot
Ctrl-F6   Rec Wave

この辺のキー割り当てを弄ったので、その時に押してしまったと思われます。

# C部の空き丸ごと消滅だと!
  良くわからないものを無理して使うからよ・・・

PCの警告が出て、Cドライブのクリーンアップが推奨されたので、しかたなく OK しました。
その結果、3分の1くらい空きができました。(大丈夫なのか)
その後は問題なく動作しているようなので、まあいいか。(^^;


11253/11226 BQO00549  konno            エラーが出るなら元を絶ってしまえばいいじゃない
( 1) 24/05/22 00:14 11251へのコメント(konnoさん)
> 2024-04-16 10:01:41 STIME(09BA) 1876:4778 'サポート外 VIDEO BIOS(Int10h) 機能: AX=8500'
> 2024-04-16 10:01:42 STIME(09BA) 1876:47F1 'サポート外 VIDEO BIOS(Int10h) 機能: AX=8582'
> 2024-05-08 07:47:20 STIMEJ(2797) 433A:5982 'サポート外 KEYBOARD BIOS(int16h) 機能 F6'
> 2024-04-16 10:02:00 STIME(09BA) 1876:4D68 'サポート外 Int6F'
> 
> このようなエラーログが延々と出続けていたのです。

これを何とかしないと J31BASICコンパイラは使い物にならないですね。
それで考えたのは、常駐プログラムでこれらの割り込みを横取りして無効化すること。

私がいつもお世話になっている、アセンブラ入門のサイトから
トップ-> アセンブラ 第2章-> 第2章.メモリー管理-> 2-7. 常駐プログラム(TSR)
https://programmer.main.jp/assembler2/assembler10.html

このページの、「HOOK21」完成版(?) のソースを元に、INT10h でやってみたら出来ました。
ところが常駐解除が出来ないのです。
色々やってみてわかったのは、ソースの解放チェックルーチンで

STAY_CHEK:
	mov	ax,3521h
	int	21h             	;割り込みベクター取得

	mov	ax,es           	;解放できるかのチェック
	dec	ax
	mov	es,ax
	mov	di,8
	cld
	mov	si,offset PRCNAME
;	mov	cl,7			;★ cl ではうまくいかない、
	mov	cx,7			;★ cx ならうまくいく

	repz	cmpsb            	;名前が一緒かのチェック
	or	cx,cx
	jz	_STAY
	stc                     	;解放できない
	ret
_STAY:                           	;解放できる
	clc
	ret

★印のところの cl を cx に変えたら常駐解除できました。

# 汚れていたのは ch だったのです。

これで調子に乗って、INT16h  INT6Fh  も一緒にしてしまいました。
でもまたもや常駐解除が出来ない。(>_<)
プログラムの仕組みがわかってないからでしょうね。(;_;)


11254/11254 CXB00940  としき           新着情報にバグがある
( 1) 24/05/26 21:57 コメント数:1
参照先:http://toshiki.la.coocan.jp/
どうも、新着情報のページの表示がおかしいですね。
すぐにプッシュアウトされてしまいそうなので具体的に言うと、野ざらし言の
新着情報の部分、野ざらし言#5602の発言のところ。
ざっくり見てみたところ、野ざらし言#5602の発言本文の中のリンク情報を
拾って、偽のリンク情報を無理やり構築している模様。

ご確認いただけると幸いです。



11255/11254 BQO00549  konno            Re: 新着情報にバグがある
( 1) 24/05/27 01:22 11254へのコメント(としきさん) コメント数:1
> 新着情報の部分、野ざらし言#5602の発言のところ。
> ざっくり見てみたところ、野ざらし言#5602の発言本文の中のリンク情報を
> 拾って、偽のリンク情報を無理やり構築している模様。

ああ、本当だ、おかしいですね。
掲示板の形式とか変わったのでしょうかね。
見てみます。


11256/11254 DGF01024  めざら           Re^2: 新着情報にバグがある
( 1) 24/05/27 07:11 11255へのコメント(konnoさん) コメント数:2
参照先:http://mezala.la.coocan.jp/
掲示板の形式が変わったわけないじゃないですか。(笑)
ただ,うちだけの問題なのかな。

例えば,こちらで似たようなリンクを書き込んでみると……(^^;

#5601:Re^14: 近況報告 めざら 2024/05/25(Sat)
http://mezala.la.coocan.jp/bbs/noz/wforum.cgi?mode=msgview&page=0&no=5601&reno=5600&oya=5561

あるいは,
http://mezala.la.coocan.jp/bbs/noz/wforum.cgi?mode=allread&no=5561#N5602
みたいにハッシュが付いているリンクの場合とか。

違うなぁ……

あれ? 今度は VTDOS BBS の新着へのリンクが消えちゃったな。
消えたと言うか,a要素リンク内の値を括るダブルコーテーションが閉じていない?
<tr><td><a href="http://tamaneko.world.coocan.jp/bbs/http://mezala.la.coocan.jp/bbs/noz/wforum.cgi?mode=allread&amp;no=5561#N5602' target='_blank' rel='noopener noreferrer' target='_blank' rel='noopener noreferrer'>???????e?[?}</a></td><td>11256</td></tr>
新着情報そのものは取得しているみたいだけれど,ダブルコーテーションの出力エラーで該当行以降が表示されないのと,他のBBSの不思議なリンクも中途半端に含まれていますね。
もしかして弄っている途中でしたか?

11257/11254 CXB00940  としき           Re^3: 新着情報にバグがある
( 1) 24/05/27 14:01 11256へのコメント(めざらさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
なるほど、めざらさんの実験で、なんとなく見えてきたようです。
konnoさんの使われているコードって、1つ分の発言全体から、ある特定の形式の
URLを手がかりにして、本文だのなんだの不要なところを消して、<tr>から</tr>に
はさまれた形に変換しているのでしょう。
ここで使ってるのは正規表現置換と見た。置換一発か複数発かはわかりませんが。
でも、今回、その特定の形式に該当してしまうURLが1つの発言に複数含まれて
しまった、ということかと。
今までは、仮にURLがあっても、その特定の形式に該当するものではなかったので
発病しなかった、のではないかなぁ。
なので、正規表現を駆使して、何番目に該当するものだけ残す、みたいにすれば
解決しそうな気がする。

ハズレかな。


11258/11254 BQO00549  konno            Re^3: 新着情報にバグがある
( 1) 24/05/27 17:13 11256へのコメント(めざらさん)
> 掲示板の形式が変わったわけないじゃないですか。(笑)

すみません、適当なことを言ってしまって。m(__)m
色々見てみたのですが、わからないんですよね。(>_<)

> 例えば,こちらで似たようなリンクを書き込んでみると……(^^;
> あるいは,
> http://mezala.la.coocan.jp/bbs/noz/wforum.cgi?mode=allread&no=5561#N5602
> みたいにハッシュが付いているリンクの場合とか。
> 違うなぁ……

私もリンクを書き込んだりしているので疑ったんですが、よくわからないです。

> あれ? 今度は VTDOS BBS の新着へのリンクが消えちゃったな。
> 消えたと言うか,a要素リンク内の値を括るダブルコーテーションが閉じていない?
> <tr><td><a href="http://tamaneko.world.coocan.jp/bbs/http://mezala.la.coocan.jp/bbs/noz/wforum.cgi?mode=allread&amp;no=5561#N5602' target='_blank' rel='noopener noreferrer' target='_blank' rel='noopener noreferrer'>???????e?[?}</a></td><td>11256</td></tr>
> 新着情報そのものは取得しているみたいだけれど,ダブルコーテーションの出力エラーで該当行以降が表示されないのと,他のBBSの不思議なリンクも中途半端に含まれていますね。
> もしかして弄っている途中でしたか?

VTDOS BBS もおかしくなってますね。その下のリンクまで消えてるし。
弄っているのは別名のやつなので、初めからこうだったのかなぁ?
上のa要素リンク関係が怪しい気はするんですが。


11259/11254 BQO00549  konno            Re^4: 新着情報にバグがある
( 1) 24/05/27 17:39 11257へのコメント(としきさん) コメント数:1
> なるほど、めざらさんの実験で、なんとなく見えてきたようです。
> konnoさんの使われているコードって、1つ分の発言全体から、ある特定の形式の
> URLを手がかりにして、本文だのなんだの不要なところを消して、<tr>から</tr>に
> はさまれた形に変換しているのでしょう。

その通りです。今見ると何をやってるかチンプンカンプンで、誰がこんなの作ったの〜状態です。

> ここで使ってるのは正規表現置換と見た。置換一発か複数発かはわかりませんが。
> でも、今回、その特定の形式に該当してしまうURLが1つの発言に複数含まれて
> しまった、ということかと。
> 今までは、仮にURLがあっても、その特定の形式に該当するものではなかったので
> 発病しなかった、のではないかなぁ。

これが原因のような気がしますね。
色々試したのですが良くならなくて、泥縄の限界かな。

> なので、正規表現を駆使して、何番目に該当するものだけ残す、みたいにすれば
> 解決しそうな気がする。

これを試してみようと思いますが、正規表現がもうわからない。(>_<)


11260/11254 BQO00549  konno            Re^5: 新着情報にバグがある
( 1) 24/05/27 17:52 11259へのコメント(konnoさん) コメント数:1
> > 今までは、仮にURLがあっても、その特定の形式に該当するものではなかったので
> > 発病しなかった、のではないかなぁ。
> これが原因のような気がしますね。

試しに野ざらし言の私の発言内のリンクを消してみたら正常になりました。
でも、VTDOS BBS 以降は消えたままです。(>_<)

この辺を色々弄ってみます。(^^;


11261/11254 BQO00549  konno            新着情報バグ一応直りました。(^^;
( 1) 24/05/28 17:42 11260へのコメント(konnoさん) コメント数:1
なんとか泥縄を重ねて見た目は正常になりました。(^^;

> > > 今までは、仮にURLがあっても、その特定の形式に該当するものではなかったので
> > > 発病しなかった、のではないかなぁ。
> > これが原因のような気がしますね。

やはりこれが原因だったようです。
フラグ変数を一つ増やして、リンク処理ルーチン内でカウントさせました。

> 試しに野ざらし言の私の発言内のリンクを消してみたら正常になりました。
> でも、VTDOS BBS 以降は消えたままです。(>_<)

野ざらし言の私の発言内のリンクを元に戻しても正常になりました。\(^^)/ ヤッタ-
でも、VTDOS BBS 以降が消えたままなのがわからなくて、古いルーチンで動いていたので
追加挿入してみたら、本来のルーチンも正常に表示されるようになりました。何で?
仕方がないので古いルーチンを一部残しておくことにしました。2重処理です。(^^;

# 私が(プログラムを)織っている姿(ソース)は決して覗かないでください。


11262/11254 CXB00940  としき           Re: 新着情報バグ一応直りました。(^^;
( 1) 24/05/28 19:14 11261へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
無事に治ったようですね。めでたい。

> なんとか泥縄を重ねて見た目は正常になりました。(^^;

うん、まぁ、いいんじゃないでしょうか。
ただ、これは異常ではないのでしょうが、いささか意味不明というか。
なにかというと、「今日のテーマ」の一覧の上、「Virtual Zone」の日付のうしろ、
なんか謎の「(0)」がいくつか並んでいる。
ついでに言うと、ここの部分、</FONT>の閉じタグが多い。

あと、ざっくり見ただけなので間違いもあるかもしれませんが。
「MS-DOS Player」の日付のあとの部分、なんか改行が過剰?
それと、全体的に<a></a>と<b></b>のネストが互い違いになっているような気がする。
これ、あとから改造しようとしたときにえらいことになりそうな気がするので、今の
うちにきれいにしておいたほうが良いかと。
それと、もしかしたらうちのブラウザのせいかもしれませんが。
リンクの中の実体参照「&」と「&amp;」がなんかうまくない気もする。
ただ、この混在、この「今日のテーマ」本体でもあちこちあるような。
どこまで気のせいか、というのがわからないのが現在の私の弱点。
konnoさんにおかれましては、複数のブラウザでチェックされることをお薦めします。

> # 私が(プログラムを)織っている姿(ソース)は決して覗かないでください。

どこからもケチがつかないような美しいものを織り上げられる人だけがこのせりふを
口にする資格があるような気がするのは、やっぱり私の気のせいか。


11263/11254 BQO00549  konno            Re^2: 新着情報バグ一応直りました。(^^;
( 1) 24/05/29 23:54 11262へのコメント(としきさん) コメント数:1
> なにかというと、「今日のテーマ」の一覧の上、「Virtual Zone」の日付のうしろ、
> なんか謎の「(0)」がいくつか並んでいる。
> ついでに言うと、ここの部分、</FONT>の閉じタグが多い。

この「(0)」は、コメントのチェックです。
#9804:新着情報のメンテナンス、ココログのコメント数表示 konno   2020/10/02
この辺で話題にしていました。思ったより最近な感じですね。(^^;
動作確認のためにコメント入れてみました。(^^;

</FONT>の閉じタグ、多いですね。(^^; なんとか修正しました。

> あと、ざっくり見ただけなので間違いもあるかもしれませんが。
> 「MS-DOS Player」の日付のあとの部分、なんか改行が過剰?
> それと、全体的に<a></a>と<b></b>のネストが互い違いになっているような気がする。

これらも大体修正しました。

> それと、もしかしたらうちのブラウザのせいかもしれませんが。
> リンクの中の実体参照「&」と「&amp;」がなんかうまくない気もする。
> ただ、この混在、この「今日のテーマ」本体でもあちこちあるような。

これはこれから見ていきたいと思います。
そういえば、板塀への番号ジャンプ、いつから出来なくなったんだろう。

> > # 私が(プログラムを)織っている姿(ソース)は決して覗かないでください。
> どこからもケチがつかないような美しいものを織り上げられる人だけがこのせりふを
> 口にする資格があるような気がするのは、やっぱり私の気のせいか。

真に美しいものは公開されても、誰もが称賛し、歴史に残るものですよね。
表が綺麗に見えても裏側はボロボロの継ぎはぎだらけ、と言う方が合っているかも。(^^;
というか、見てしまったのですね。知られたからには元に戻らなくてはなりません。

# ああ、飛ぶための羽が無い! (;_;)


11264/11254 CXB00940  としき           Re^3: 新着情報バグ一応直りました。(^^;
( 1) 24/05/30 00:43 11263へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> この「(0)」は、コメントのチェックです。
> #9804:新着情報のメンテナンス、ココログのコメント数表示 konno   2020/10/02
> この辺で話題にしていました。思ったより最近な感じですね。(^^;
> 動作確認のためにコメント入れてみました。(^^;

そんな話題もありましたか。もうすっかり忘れています。
なるほど、括弧の中の数字、今見たらゼロではなく1になっているのもある。
そういうことでしたか。

タグのネストの互い違い、まだひとつかふたつはありそうですが、大勢に影響は
ないでしょう。
ただ、末尾のほう、</m>という閉じタグがあるようなんですが、これはなんだろう。

> そういえば、板塀への番号ジャンプ、いつから出来なくなったんだろう。

ん?
何か挙動が変わりました?
私のほうはいじった記憶はありません。
だけど、変化してしまうことはままあるわけでして。
具体的に、どこがどう、ということを書いていただければ調べますよ。


11265/11254 BQO00549  konno            Re^4: 板塀への番号リンクが・・・
( 1) 24/05/30 20:26 11264へのコメント(としきさん) コメント数:2
> ただ、末尾のほう、</m>という閉じタグがあるようなんですが、これはなんだろう。

あう、試しに入れたものを削除するのを忘れてました。意味なしです。m(__)m

> > そういえば、板塀への番号ジャンプ、いつから出来なくなったんだろう。
> ん?
> 何か挙動が変わりました?
> 私のほうはいじった記憶はありません。
> だけど、変化してしまうことはままあるわけでして。
> 具体的に、どこがどう、ということを書いていただければ調べますよ。

えーと、いくつかあるんですが、まず新着情報の「新着」リンクが掲示板トップになってしまいます。

print " <a href='http://toshiki.la.coocan.jp/bbs.html?mode=newsort' target='_blank' rel='noopener noreferrer'><b>やしきの\板\塀(新着)</b></a>  
\n";
リンクのURLは
http://toshiki.la.coocan.jp/bbs.html?mode=newsort

あと、新着情報の「データ元」項目の発言番号リンクが掲示板トップになってしまいます。
リンクのURLは、番号が 4098 なら
http://toshiki.la.coocan.jp/bbs.html?mode=article&no=4098

あと、うちの掲示板からの番号リンクが掲示板トップになってしまいます。
>   やしきの板塀#00001	2003/03/31(Mon)〜
リンクのURLは
http://toshiki.la.coocan.jp/bbs.html?mode=article&no=00001

どうでしょうか。


11266/11254 DGF01024  めざら           Re^5: 板塀への番号リンクが・・・
( 1) 24/05/31 16:43 11265へのコメント(konnoさん) コメント数:2
参照先:http://mezala.la.coocan.jp/
> 新着情報の「新着」リンクが掲示板トップになってしまいます。

これは新着情報開設当初からの状況です。
板塀が個別のアーティクルへの直リンクを禁止しているのかと思っていました。
違うのですか?


11267/11254 BQO00549  konno            Re^6: 板塀への番号リンクが・・・
( 1) 24/05/31 23:45 11266へのコメント(めざらさん) コメント数:1
> これは新着情報開設当初からの状況です。
> 板塀が個別のアーティクルへの直リンクを禁止しているのかと思っていました。
> 違うのですか?

記憶が朧気なので過去ログ検索したら

#9335:サイトのメンテナンス:新着情報の更新 Ver 0.73  konno   2019/09/10
> > あ、確認ですが、URLは bbs.html?mode=newsort になっていますよね。
> やってみたら、板塀の新着記事に飛ぶことが出来ました。\(^^)/ ヤッタ-

この時は出来ていたようです。


11268/11254 DGF01024  めざら           Re^7: 板塀への番号リンクが・・・
( 1) 24/06/01 07:14 11267へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
経緯としては……
板塀の個別のアーティクルや新着への直リンクができなかった
>板塀は元々直リンク可能な仕様だがめざらの環境だけできないなら修正困難
>>『出来ました。\(^^)/ ヤッタ-』とこんのがよろこんだ
>>>めざらはあきらめた
>>>>さいはつした
♪たらら らったら〜♪

こんな感じ。(^_^;)

11269/11254 CXB00940  としき           Re^6: 板塀への番号リンクが・・・
( 1) 24/06/01 11:35 11266へのコメント(めざらさん)
参照先:http://toshiki.la.coocan.jp/
> > 新着情報の「新着」リンクが掲示板トップになってしまいます。
> これは新着情報開設当初からの状況です。
> 板塀が個別のアーティクルへの直リンクを禁止しているのかと思っていました。

板塀管理者としては、フレーム無しの表示は禁止したいと思っています。
が、フレーム内には個別アーティクルが表示されるようにしたい。
そのため、いささかどころではないトリッキーな手法を使っているわけです。
もし、フレーム内に個別アーティクルが表示されないとしたら、それは板塀管理者
の意図した挙動ではありません。
まずいなぁ。

11270/11254 CXB00940  としき           Re^5: 板塀への番号リンクが・・・
( 1) 24/06/01 11:35 11265へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
ご指摘いただいた

> リンクのURLは
> http://toshiki.la.coocan.jp/bbs.html?mode=newsort

> リンクのURLは、番号が 4098 なら
> http://toshiki.la.coocan.jp/bbs.html?mode=article&no=4098

> リンクのURLは
> http://toshiki.la.coocan.jp/bbs.html?mode=article&no=00001

これらのURL、板塀管理人としては、そのようにリンクしてほしい、まさに希望通り
のものです。そして、フレーム内にそれぞれの発言が表示されることを意図している
のですが、現在、どうやらそのような挙動を示していない、ということですね。
とりあえず、現時点で、サーバを設置してある自宅内のサーバ以外のマシンから
チェックすると、なんとなくうまく動いている感じ。ただし、チェックはFirefox
だけでしか行われていません。
たとえば、Edgeとかだとセキュリティの関係で私の意図したとおりの挙動を示さない、
とか、自宅内だけはネットワーク構成の関係でうまくいく、とかがありうるので、
この辺を手がかりに追いかけて見ます。
ただ、例えば1時間後に「これが原因!」とか見つかるかもしれませんが、それの
確認は、早くて月曜日になる予定。

ということで、しばらくお待ちください。


11271/11254 CXB00940  としき           Re^6: 板塀への番号リンクが・・・
( 1) 24/06/01 12:53 11270へのコメント(としきさん) コメント数:3
参照先:http://toshiki.la.coocan.jp/
> ただ、例えば1時間後に「これが原因!」とか見つかるかもしれませんが、それの

原因は見つかりました。解決は困難です。

現在、フレーム内に個別発言などを表示させるためにリファラを使っておりました。
ところが、Chromeだと2020年8月ごろのバージョンから、Edgeだと2021年9月ごろの
バージョンから、必要となるこの情報を与えてくれないようになってしまっていたの
でした。ちなみに、Firefoxも2021年3月ごろのバージョンでこの情報が与えられない
ようになっていたのですが、うちの試験環境はもっと古いバージョンだったので問題
が発生しなかった模様。あれ、でも、うちの実環境では、つい最近もFirefoxの更新
をしていたはず。もしかして、自宅内からはEdgeやChromeでもいけてしまうのかも。

ええっと、どうしようかな。
ちょっと模索してみますが、もしかしたらフレーム式を解除して直リンク可能にする
かもしれません。自宅サーバのIPアドレスが変わったときの処理が面倒なんですけど
ね。

あ、そうだ、もしも上記のバージョン以前のブラウザでもめざらさんのところでは
不具合が発生していたとすると、それは別の原因の可能性があります。たとえば、
ブラウザのセキュリティを厳しく設定していただとか、セキュリティが厳しめの
マイナーなブラウザを使っていたとか。
もし差し支えなければ、めざらさんの環境をお教えいただけると幸いです。

ということで、しばらくお待ちください。


11272/11254 DGF01024  めざら           Re^7: 板塀への番号リンクが・・・
( 1) 24/06/01 15:23 11271へのコメント(としきさん)
参照先:http://mezala.la.coocan.jp/
こちらの環境は,メインが Firefox で,サブが Chrome です。
版は,概ねその時点の最新版です。ブラウザだけはさっさと更新するので。

で,「新着情報」の「やしきの板塀(新着)」リンクから新着表示ができたことは,
記憶する限り,たぶんおそらくたしかにかつて一度たりともありません。

各ブラウザのセキュリティ設定などは,それほど厳しくないと思います。
ごく標準的と言うか,ほとんどのクッキーは受け入れ,スクリプトの実行も許可,
ポップアップとかリダイレクトなんかもほぼ制限していなかったりします。

11273/11254 BQO00549  konno            Re^8: 板塀への番号リンクが・・・
( 1) 24/06/01 17:57 11268へのコメント(めざらさん)
> ♪たらら らったら〜♪
> こんな感じ。(^_^;)
ああ、そんなことしたら妄想が暴走して・・・

その日、巨大な壁に鎧のとしきが穴を開けた。
我々はその穴を使って自由に壁の中に出入り出来るようになった。
だがその穴は始祖の巨人たちに塞がれてしまったのだ。
どうする?

 あきらめる
 助けを求める
> 勇者が現れる

♪た〜たらたったたた た〜♪


11274/11254 BQO00549  konno            Re^7: 板塀への番号リンクが・・・
( 1) 24/06/01 18:24 11271へのコメント(としきさん)
> 原因は見つかりました。解決は困難です。
> 現在、フレーム内に個別発言などを表示させるためにリファラを使っておりました。
> ところが、Chromeだと2020年8月ごろのバージョンから、Edgeだと2021年9月ごろの
> バージョンから、必要となるこの情報を与えてくれないようになってしまっていたの
> でした。ちなみに、Firefoxも2021年3月ごろのバージョンでこの情報が与えられない
> ようになっていたのですが、うちの試験環境はもっと古いバージョンだったので問題
> が発生しなかった模様。あれ、でも、うちの実環境では、つい最近もFirefoxの更新
> をしていたはず。もしかして、自宅内からはEdgeやChromeでもいけてしまうのかも。

なるほど、2019年9月には出来ていたけど2020年8月から出来なくなったのですね。
私は Firefox だったので、2021年9月から使えなくなったのでしょうが、覚えてない。(^^;

> ちょっと模索してみますが、もしかしたらフレーム式を解除して直リンク可能にする
> かもしれません。自宅サーバのIPアドレスが変わったときの処理が面倒なんですけど
> ね。

なんとかよろしくお願いいたします。m(__)m


11275/11254 CXB00940  としき           Re^7: 板塀への番号リンクが・・・
( 1) 24/06/02 14:46 11271へのコメント(としきさん) コメント数:2
参照先:http://toshiki.la.coocan.jp/
> もしかして、自宅内からはEdgeやChromeでもいけてしまうのかも。

いけませんでした。
というか、そもそも新着情報に対するアクセス履歴が著しく少ない。
Chrome系のブラウザはアクセス履歴って3カ月程度で消えてしまうわけですが、Firefox
だと容量の許す限りアクセス履歴が残ります。それを見たところ、実環境の方では、
2019年10月以来でたった6回しかアクセスしていない。さっき、実験でアクセスした
のが7回目。
古い実験環境の方はもっとアクセスしていましたが、それでも2021年5月以来でたった
23回しかアクセスしていない。
なので、昔の、可能だった時代のおぼろげな記憶をいつまでも覚えていただけ、という
のが正解の模様。

それと、めざらさんのところでは昔から駄目だったとのことですが、Firefoxでいう
ところのプライベートブラウジングとかプライベートウィンドウという、セキュリティ
の厳しいモードを使っています、ということはないですよね。これ以外に新着情報が
始まった当初のブラウザでうまくいかない理由が思いつかない。
今となっては原因不明の迷宮入りになってしまうと思います。


11276/11254 DGF01024  めざら           Re^8: 板塀への番号リンクが・・・
( 1) 24/06/02 15:46 11275へのコメント(としきさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
履歴が辿れなかったり,いちいちID/パスを入れないと閲覧できないような
不便なことは,かつてやったことがありません。自分ながらセキュリティに
とことん甘い人間だなぁ……と思います。

とにかく,いろいろな仕掛けを施している開設者にわからないことが
自分にわかるはずもないので,早々にあきらめていたわけですから,
記憶も曖昧なはずです。できていたことがあったと言われても,
いよいよまったく一切実感はありません。

ところでフレームを採用している理由って何ですか?
単に掲示板タイトル他を常に表示させたいなんて単純な理由とも思えませんが。
そもそも,わたしみたいにいきなりフレームの区切り線をぎゅぎゅっと上端へ
移動してしまうような人間には,あまり意味がないわけですが。


11277/11254 BQO00549  konno            Re^8: 板塀への番号リンクが・・・
( 1) 24/06/02 20:09 11275へのコメント(としきさん) コメント数:1
> Chrome系のブラウザはアクセス履歴って3カ月程度で消えてしまうわけですが、Firefox
> だと容量の許す限りアクセス履歴が残ります。それを見たところ、実環境の方では、
> 2019年10月以来でたった6回しかアクセスしていない。さっき、実験でアクセスした
> のが7回目。

私は Firefoxですが、#11267 の書き込みで

> #9335:サイトのメンテナンス:新着情報の更新 Ver 0.73  konno   2019/09/10
> > > あ、確認ですが、URLは bbs.html?mode=newsort になっていますよね。
> > やってみたら、板塀の新着記事に飛ぶことが出来ました。\(^^)/ ヤッタ-

この時は間違いなく出来ていたと思います。
私は板塀の記事はほぼ毎回読んでいますが、必ず新着記事で読みます。
新着記事に飛ばなくなっても、ツリー画面で新着にして読んでいます。
なので、随分少ないなという印象ですね。
すぐに飛べなくなってしまったのかなぁ。

> 古い実験環境の方はもっとアクセスしていましたが、それでも2021年5月以来でたった
> 23回しかアクセスしていない。
> なので、昔の、可能だった時代のおぼろげな記憶をいつまでも覚えていただけ、という
> のが正解の模様。

昔って、もしかして 2009年のころでしょうかね。
#3814: 他の板への番号リンク 投稿者: konno   2009/06/04

> 現在、3サイトで過去ログを含めた発言番号リンクが実現できているので、どうせなら
> 他の板へも番号リンクをしたいと思い、テスト板#test41で試してみて、良さそうなので
> 公開します。(^_^)
>
>    2文字案 最終案
> -----+-------+-----------------------------
> #kyo #k3008 #kyo3008へ(今日のテーマ板)
> #faq #f0010 #faq10へ (VzFAQ板)
> #link #l0008 #link8へ (リンク板)
> #test #t0041 #test41へ (テスト板)
> #n  #n3340 野ざらし言3340番へ
> #i  #i1597 板塀1597番へ

このころは直リンクでやっていたのでしょうね。
直リンクであっても番号ジャンプ出来るのなら私はうれしいです。


11278/11254 CXB00940  としき           Re^9: 板塀への番号リンクが・・・
( 1) 24/06/03 01:29 11276へのコメント(めざらさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> とにかく,いろいろな仕掛けを施している開設者にわからないことが
> 自分にわかるはずもないので,早々にあきらめていたわけですから,

当時のその段階で不具合報告をいただければ、いろいろと追及して、一時的ではある
かもしれませんが、それなりの解決には結びついたとは思うんですよ。いささか残念
ではあります。

> ところでフレームを採用している理由って何ですか?

これは、#7717にちょっとだけ書きましたが、自宅サーバのIPアドレスが変わって
しまっても、一意のURLでアクセスできるようにする、という目的でした。
cf. http://toshiki.la.coocan.jp/computer/itabei/frame.html

ただ、環境の変化というか時代の変化で、いろいろなものが使えなくなっていくと
いう現実があるわけで。仕方ない、こちらが対応するしかありませんね。


11279/11254 CXB00940  としき           Re^9: 板塀への番号リンクが・・・
( 1) 24/06/03 01:29 11277へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 新着記事に飛ばなくなっても、ツリー画面で新着にして読んでいます。
> なので、随分少ないなという印象ですね。

私の場合、konnoさんが新着記事を作られるよりも前に、各掲示板のブックマークを
作っていましたからね。新着記事がリリースされた当時は何回もアクセスしました
が、通常は以前からの慣例で、そのままブックマークからのアクセスを継続していた
のですよ。


> 直リンクであっても番号ジャンプ出来るのなら私はうれしいです。

いろいろと考えたのですがね。
なにぶん、セキュリティが絡みますから、私の技術力では実装可能かどうかすら
わからないようなトリッキーな方法しか思いつかなくて。
ここはやはり素直に、フレーム方式廃止、直リンク可能という形に落ち着きそうです。
ただ、少なくとも向こう数日は多忙が見えている。
他人のHDDの復旧、なんていうタスクが割り込んできたもので。
おそらく、早くても6月中、ぐらいの速度感。
もちろん、それ以上かかるかも。


11280/11254 DGF01024  めざら           Re^10: 板塀への番号リンクが・・・
( 1) 24/06/03 20:56 11278へのコメント(としきさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
ごめんなさい,読んでいたはずなのに,まるで忘れてました。

> 当時のその段階で不具合報告をいただければ、いろいろと追及して、

まぁ,人んちの掲示板ですから,あんまり要求じみたことを言うのもナニかなと思って。


11281/11254 BQO00549  konno            Re^10: 板塀への番号リンクが・・・
( 1) 24/06/03 22:43 11279へのコメント(としきさん) コメント数:1
ふと思ったのですが、「としきのやしき」は現在 nifty の la.coocan.jp になっているのですよね。
板塀だけケーブルテレビのサーバーなのでしょうか。
掲示板を la.coocan.jp の中に入れてフレームを無くせば解決しそうな気が。
もちろん手間がかかるでしょうが、直リンクのURLが変わるたび修正するよりはましと思います。
外していたらごめんなさい。


11282/11254 CXB00940  としき           Re^11: 板塀への番号リンクが・・・
( 1) 24/06/04 20:51 11280へのコメント(めざらさん)
参照先:http://toshiki.la.coocan.jp/
ほら、めざらさんが困っているということは他の人も困る可能性があるということ
なんで。
というのは建前で。
自分のところのものはなるべく完成度を高くしたい、という思いもありまして。
いわば私利私欲というか。
ということで、もし次の機会がありましたら、その際にはぜひ。


11283/11254 CXB00940  としき           Re^11: 板塀への番号リンクが・・・
( 1) 24/06/04 20:51 11281へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 板塀だけケーブルテレビのサーバーなのでしょうか。

そのとおりです。

> 掲示板を la.coocan.jp の中に入れてフレームを無くせば解決しそうな気が。

確かにその手はあって、将来、板塀サーバーマシンをどうにも確保できなくなった
場合には、その方向に行く可能性は高いです。
ただ、これはいわゆる「半土塀化」という感じ。
「完全土塀化」というのは、レンタルサーバーあたりを借りて、そちらで掲示板を
運用する形を意図しています。
「半土塀化」と「完全土塀化」は、取得できる情報がごくわずかに違う。
普通の人なら、まず気にしないような些細な部分なんですけどね。
例えば、平常時に取得できるログには、ほとんど差異はない。
でも、異常時のログは、ずいぶん違う。
例えば、

http://(略).jp/bbs/wforum.cgi

という形でアクセスすれば、普通にアクセスログが取れます。
ところが、これのURLを誤って

http://(略).jp/bbs/wforu.cgi

なんて形でアクセスがあった場合。
現在の板塀ではきちんとログが取れているし、レンタルサーバーなんかの場合でも
たいていはログが取れます。でも、la.coocanの場合、このログを確認できるのは
ニフティの中の人だけ。
ということで、実に些細な点で、konnoさんの推奨されている方法にはいささかの
抵抗感があるわけですよ。
ま、でも、将来的にはそういう抵抗感を打ち破ってその方向に行きそうな気がする。


11284/11254 BQO00549  konno            Re^12: 板塀への番号リンクが・・・
( 1) 24/06/05 22:26 11283へのコメント(としきさん)
> ということで、実に些細な点で、konnoさんの推奨されている方法にはいささかの
> 抵抗感があるわけですよ。

わかりました。個人の掲示板なので、自分がやりたい形でやるのが一番ですよね。

> ま、でも、将来的にはそういう抵抗感を打ち破ってその方向に行きそうな気がする。

ユーザーとしては便利であればトリッキーであろうが気になりません。(^^;
私もとしきさんのコンテンツを真似て新しいコンテンツをやろうと思っています。
喜ぶユーザーさんもいると思いますので。(^^;


# イタ・ベイエリア突破出来ません!
  事案は机の上じゃなく机の下で起こっているんだ!


11285/11285 BQO00549  konno            FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/06/06 23:33 コメント数:1
としきさんのコンテンツを真似て新しいコンテンツを始めました。
niftyのFGALDC会議室の自分の発言を掲示板のツリー形式で表示させます。

 FGALDC会議室の過去ログ  VZ改造秘話など
http://tamaneko.world.coocan.jp/bbs/bbs6/wforum.cgi


VZK誕生の改造秘話とか、ここの常連さんにはわかりきった話ですが、
少しは需要があるだろうと思います。
また、私の自伝的な意味合いもあります。
名前やIDなどの個人情報や引用符などは修正しています。

改造人間誕生秘話、とか
差異膨愚009誕生、とか
面白いタイトル募集!

私の発言が主体ですが、他の方の発言も引用というていで載せたいと考えています。
それはまずいよとか、載せないでなどの意見があれば削除など検討します。
ご意見、ご感想をお待ちしています。(^_^)


11286/11285 CXB00940  としき           Re: FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/06/07 12:57 11285へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> niftyのFGALDC会議室の自分の発言を掲示板のツリー形式で表示させます。

おぉ、これは期待大ですね。
ところでこれ、Vzのマクロか何かでやっていますよね。
まさか手作業だったりして。
うちの場合はawkのスクリプトでやりました。

> 少しは需要があるだろうと思います。

そう頻繁に見るものではありませんけどね。
なんかの場合に必要になりそう。
あと、検索エンジンの検索に引っかかるようになる、というのが地味に大きな影響を
もたらしたりして。
それと、めざらさんも以前におっしゃったことがあったように思いますが、各改造
バージョンの仕様とか特徴がわかるようになるのもうれしいかも。

> それはまずいよとか、載せないでなどの意見があれば削除など検討します。

うちではもう何年もやっていますが、要望が来たのは1回だけ。
当時(今でも?)ご活躍の方でしたが、発言者名が実名だったもので、これを消して
ほしいというものでした。現在でも、その人の発言した部分が数ヶ所、空白表示と
なっています。幸い、問題となったのはツリーインデックスの部分だけでした。私の
発言本体の引用などには絡んでいなかったので、それ以上の対応はせずにすみました。

> ご意見、ご感想をお待ちしています。(^_^)

なんでもそうなんですが、データって大量に集まってこそ意味を持つもの。
例えば、日本のラジオドラマの過去一覧とか。
なので、物量は多ければ多いほどよい。
もちろん、フリートークとかは不要な可能性が高いですが、私の場合、そういうもの
を峻別するのが面倒だったので、ごく一部の危険なものをのぞき、全部アップして
しまいました。ということで、konnoさんにおかれましても、物量優先のスタンスで
どうかなにとぞ。


11287/11285 BQO00549  konno            Re^2: FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/06/08 00:44 11286へのコメント(としきさん) コメント数:1
> ところでこれ、Vzのマクロか何かでやっていますよね。
> まさか手作業だったりして。

そのまさかの手作業です。(^^;
ツリー構造を見るために、あじゃさんの NIF_TREE.def を別窓で開いて参照しました。
素晴らしいマクロですね。あじゃさんに感謝です。

> うちの場合はawkのスクリプトでやりました。

さすがですね、私は今考える気力が無くて、VZなら手作業でもかなり効率的だし。
一昨日思いついてとりあえず形になったので公開しました。(^^;

でも今見たら新着記事とか会議室風の日付表示や並び順が合ってない。(>_<)
UNIX時間でソートしてるんですね。これの変換が面倒なのでスルーしてました。(^^;
仕方がないので発言番号を数字に取り込むマクロをでっちあげました。(^^;

うう、アイドルのツリーが大きすぎてまだ終わらない。(;_;)
これだけで147もあるんだもん、邪悪じゃぁ〜

> うちではもう何年もやっていますが、要望が来たのは1回だけ。
> 当時(今でも?)ご活躍の方でしたが、発言者名が実名だったもので、これを消して
> ほしいというものでした。現在でも、その人の発言した部分が数ヶ所、空白表示と
> なっています。幸い、問題となったのはツリーインデックスの部分だけでした。私の
> 発言本体の引用などには絡んでいなかったので、それ以上の対応はせずにすみました。

やはり実名は不味いですよね。(^^;
引用については今まで問題になっていないので、私の発言へのコメントは掲載したいですね。
その他は流れを読んで問題なさそうなら・・・

> なんでもそうなんですが、データって大量に集まってこそ意味を持つもの。
> 例えば、日本のラジオドラマの過去一覧とか。
> なので、物量は多ければ多いほどよい。
> もちろん、フリートークとかは不要な可能性が高いですが、私の場合、そういうもの
> を峻別するのが面倒だったので、ごく一部の危険なものをのぞき、全部アップして
> しまいました。ということで、konnoさんにおかれましても、物量優先のスタンスで
> どうかなにとぞ。

そうですね、情報としての価値もあると思うので、本当は丸ごとアップしたい気持ちです。
まあ、まずは私の発言だけでも纏めなくてはですね。


11288/11285 CXB00940  としき           Re^3: FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/06/08 13:32 11287へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> ツリー構造を見るために、あじゃさんの NIF_TREE.def を別窓で開いて参照しました。
> 素晴らしいマクロですね。あじゃさんに感謝です。

私もこのマクロ、めざらさんに紹介していただいたのではなかったかな。
以前はかなり頻繁に利用していました。特にポケ3では。

> さすがですね、私は今考える気力が無くて、VZなら手作業でもかなり効率的だし。
> 一昨日思いついてとりあえず形になったので公開しました。(^^;

考える気力はないのに行動する気力はある、というのがkonnoさんの不思議なところ。

> UNIX時間でソートしてるんですね。これの変換が面倒なのでスルーしてました。(^^;

UNIX時間→日本時間に変換するマクロは、もう10年以上前にめざらさんに作って
いただきました。逆方向のマクロは、konnoさんに作っていただく、ということで。

> やはり実名は不味いですよね。(^^;

でも、実名っぽいハンドル名、という人もいたわけだし。
私の場合、依頼をいただいたその人の場合は特に疑う理由もなかったのだけど、
実は全くの赤の他人が連絡してくる、という可能性もあるわけで、それを理由に
蹴っ飛ばす、というのもあってもいいかも。
さらに、発言者名とタイトルが組み合わさるとまずい、とかあるわけですが、その
人の場合も、発言者名とフォーラム名が組み合わさるとまずい、というパターンに
近くて。
ま、いろいろと出てくる可能性があるわけですよ。

> そうですね、情報としての価値もあると思うので、本当は丸ごとアップしたい気持ちです。

フォーラム末期に「自分の発言は他所に公開可」という表明をなされた方々もいらっしゃった
はずです。そういう人の分だけでも公開してもいいかも。そして、文句が来たら消す、と。


11289/11285 BQO00549  konno            Re^4: FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/06/08 21:53 11288へのコメント(としきさん) コメント数:1
> 私もこのマクロ、めざらさんに紹介していただいたのではなかったかな。
> 以前はかなり頻繁に利用していました。特にポケ3では。

ポケ3でも使えるとはやっぱり凄いですね。
同一ツリーの発言を視覚的に追えるのは便利ですよね。
といっても私は今までほとんど使っていなかったです。
これを機会に使うようにしたいですね。

> 考える気力はないのに行動する気力はある、というのがkonnoさんの不思議なところ。

思いつくと直ぐにやってみたくなるのが性分みたいで。(^^;
おかげで簡単なマクロも思い出しながら作れました。(^^;

> UNIX時間→日本時間に変換するマクロは、もう10年以上前にめざらさんに作って
> いただきました。逆方向のマクロは、konnoさんに作っていただく、ということで。

私には無理です。きっぱり

> でも、実名っぽいハンドル名、という人もいたわけだし。

うーん、そこは自己判断でいいんじゃないでしょうか。(^^;

> フォーラム末期に「自分の発言は他所に公開可」という表明をなされた方々もいらっしゃった
> はずです。そういう人の分だけでも公開してもいいかも。そして、文句が来たら消す、と。

おお、それがありましたね。ではそれを踏まえてなるべく掲載する方向で行きたいと思います。

> でも今見たら新着記事とか会議室風の日付表示や並び順が合ってない。(>_<)
これは修正に難儀しましたが、なんとか修正出来ました。


11290/11290 DGF01024  めざら           「新着情報」へのささやかな注文……というか,お願い
( 1) 24/06/09 11:40 コメント数:1
参照先:http://mezala.la.coocan.jp/
急かすわけでもなく,気が向いたらで構わないのですが,
「新着情報」を少し修正していただけると有り難いかなと思って。

ささやかに,3点だけです。(笑)

1 日時の表示
現在,野ざらしだけ日付と時刻の間にデリミタがありません。
ほかの掲示板はスペースが入っています。
スペース1個で構わないので分かち書きしていただけると嬉しいです。

2 新着記事へのリンク
現在,野ざらし言(新着) へのリンク文字列は「(新着)」部分を含めていません。
板塀はわかりやすいリンクになっています。(飛べる飛べないは別として)
板塀と同じようにしていただけると嬉しいです。

3 個々のアーティクルへのリンク
現在は掲示板名から各アーティクルを訪ねてくださるわけですが,
同じリンク文字列から別のリンク先に飛ぶのは個人的に違和感があり,
番号をリンク文字列にしていただけると嬉しいです。


新着情報だから掲示板トップへのリンクはないのか……


11291/11290 BQO00549  konno            Re: 「新着情報」へのささやかな注文……というか,お願い
( 1) 24/06/09 16:15 11290へのコメント(めざらさん) コメント数:1
> 急かすわけでもなく,気が向いたらで構わないのですが,
> 「新着情報」を少し修正していただけると有り難いかなと思って。
> ささやかに,3点だけです。(笑)

時間が取れたら見てみます。

> 新着情報だから掲示板トップへのリンクはないのか……

これも検討してみます。お待ちください。


11292/11285 CXB00940  としき           Re^5: FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/06/09 19:08 11289へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> ポケ3でも使えるとはやっぱり凄いですね。

とはいえ、私の記憶だと、ポケ3の場合、ECS常駐というか25行モードにしないと
使い物にならなかったような。当時は今よりも目がよかったので細かい字でも見え
ましたし。
ただ、そうして記憶をたどっていくと、いくつか芋づる式に思い出して。
NIFPのFM版というのが、確かポケ3でも動いたような。これも25行モードだけ
だったかなぁ。
だけど、読むときはともかく、レス書きするときにはこういう細かい字のものは
使わなかったような記憶があって。また、ツリーインデックスとログ本体を上下分割
ではなく全画面の裏画面と表画面にして、[F2]で切り替えていたような記憶もあり。
うんうんうなっていたのですが、何か手がかりはないかとDCのログを「nif_tree」で
検索したら、あっさり出てきました。
nifty:FGALDC/MES/13/#7313
あ〜、このツリーも、なんか異様にでかいなぁ。
ということで、

> > 以前はかなり頻繁に利用していました。特にポケ3では。

「頻繁に」という部分はどうやら記憶違いのようです。
大変失礼しました。

> 私には無理です。きっぱり

ためしに、私が作ったらこうなりました。

= tmp
*m
89 ^\ "" #59 #E "mawk32 'BEGIN{print strftime($"%%Y/%%m/%%d %%H:%%M:%%S$","
         #I ")}'" #m

*

DOS窓で動作確認済み。
gawkとかjgawk、あるいはVTDOSやDOSVAXだと、クォートの処理とかが異なるかも。


11293/11290 BQO00549  konno            「新着情報」更新しました
( 1) 24/06/09 22:44 11291へのコメント(konnoさん) コメント数:1
> これも検討してみます。お待ちください。

やってみたら出来ました。

> > 新着情報だから掲示板トップへのリンクはないのか……
新着は、掲示板トップと別けて並べてみました。

> 1 日時の表示
これは余分な情報を削除するところでスペースまで消していたのが原因でした。

> 2 新着記事へのリンク
新着は、掲示板トップと別けて並べてみたので、慣れるまでは違和感あるかもです。(^^;

> 3 個々のアーティクルへのリンク
> 番号をリンク文字列にしていただけると嬉しいです。
やってみたら掲示板のタイトルの項目がいらなくなってしまったので繋げてみました。
Parlの書式文法をわかってないのでこれが一番苦労しました。(^^;


11294/11285 BQO00549  konno            Re^6: FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/06/09 23:09 11292へのコメント(としきさん) コメント数:1
> うんうんうなっていたのですが、何か手がかりはないかとDCのログを「nif_tree」で
> 検索したら、あっさり出てきました。
> nifty:FGALDC/MES/13/#7313
> あ〜、このツリーも、なんか異様にでかいなぁ。

NIF_Tree.def で見たら 51レスありますね。(^^;
後で読ませていただきます。(^^;
NIF_Tree.def やっぱりすげぇ!

> > 私には無理です。きっぱり
> ためしに、私が作ったらこうなりました。
> DOS窓で動作確認済み。
> gawkとかjgawk、あるいはVTDOSやDOSVAXだと、クォートの処理とかが異なるかも。

うう、その手があったか。
私はその手のツールを持ってないのでまずどこかに落ちていないか探しに行かなくては。

# こうしてとある冒険者は新たな苦難の旅に出るのであった。


11295/11285 CXB00940  としき           Re^7: FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/06/10 00:04 11294へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> # こうしてとある冒険者は新たな苦難の旅に出るのであった。

ご愛読ありがとうございました。
konno先生の次回作にご期待ください。
#いや、終わってないから


11296/11290 DGF01024  めざら           Re: 「新着情報」更新しました
( 1) 24/06/10 07:27 11293へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
ご苦労ってほどではなかったと存じますが,お疲れ様でした。
早速の対応,有難うございました。(気になるなら言ってみるものですね)


11297/11285 BQO00549  konno            Re^8: FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/06/11 01:13 11295へのコメント(としきさん) コメント数:1
> ご愛読ありがとうございました。
> konno先生の次回作にご期待ください。

こんなことを言われると何だかこそばゆいですね。(だから終わってないってば)
というか、すぐに戻ってきてはいけない雰囲気。(^^;

> gawkとかjgawk、あるいはVTDOSやDOSVAXだと、クォートの処理とかが異なるかも。

gawk.exe を落として試してみましたが、エラーになるようです。
それで、例題の mawk32 というのを落として

> 89 ^\ "" #59 #E "mawk32 'BEGIN{print strftime($"%%Y/%%m/%%d %%H:%%M:%%S$","
>          #I ")}'" #m

これを試したらキチンと結果が出ました。\(^^)/ ヤッタ-
・・・私が欲しかったのはこの逆の変換でした。(;_;)

# 無駄ではない・・・こうして木馬を追い込めたのだからな。(謎)


11298/11290 BQO00549  konno            Re^2: 「新着情報」更新しました
( 1) 24/06/11 01:28 11296へのコメント(めざらさん) コメント数:1
> ご苦労ってほどではなかったと存じますが,お疲れ様でした。

いやぁ、野ざらし言のリンクを修正するのに数時間試行錯誤してましたから。(;_;)

> 早速の対応,有難うございました。(気になるなら言ってみるものですね)

バグ報告などはどんどん言ってください。直せるかはわかりませんが。(^^;


11299/11290 DGF01024  めざら           Re^3: 「新着情報」更新しました
( 1) 24/06/12 20:49 11298へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
それでは,お言葉に甘えまして。

現在,板塀へのリンクはふつうに開くわけですが,野ざらしへのリンクは別窓で開きます。
予告なく別窓で開くことは,アクセシビリティ上好ましくないとされています。
なので,野ざらしへのリンクも板塀と同様にふつうに開くようにしていただけるでしょうか。

少なくとも,いや,できれば,リンクの開き方は統一してくださるようお願いします。
……というふうに考えると,今日のテーマほかの開き方も同じ窓で……となりますが,
家主様は嫌ですか? そこはどちらにするか konno さんの胸ひとつです。


11300/11290 BQO00549  konno            Re^4: 「新着情報」更新しました
( 1) 24/06/12 22:47 11299へのコメント(めざらさん) コメント数:2
> 現在,板塀へのリンクはふつうに開くわけですが,野ざらしへのリンクは別窓で開きます。
> 予告なく別窓で開くことは,アクセシビリティ上好ましくないとされています。
> なので,野ざらしへのリンクも板塀と同様にふつうに開くようにしていただけるでしょうか。

あう、そういえば板塀だけが違っていましたね。
修正中に気が付いてはいたんですが・・・

> 少なくとも,いや,できれば,リンクの開き方は統一してくださるようお願いします。
> ……というふうに考えると,今日のテーマほかの開き方も同じ窓で……となりますが,
> 家主様は嫌ですか? そこはどちらにするか konno さんの胸ひとつです。

めざらさんの希望はわかりましたが、私はここでは別窓で開きたいのです。
ニュースサイトなどでも別窓で開くリンクは結構あるように思います。

なので、次の更新では板塀も別窓で開くようにするつもりです。
あしからず。

スマホだったら動作を変えるとか出来ればいいんですかね。

# どうすればいいんじゃ〜


11301/11290 DGF01024  めざら           Re^5: 「新着情報」更新しました
( 1) 24/06/13 07:08 11300へのコメント(konnoさん)
参照先:http://mezala.la.coocan.jp/
了解です。
統一していただければ問題はありませんので。
有難うございました。

11302/11302 BQO00549  konno            nif_tree.def 改造版 v8c
( 1) 24/06/13 19:25 コメント数:1
nif_tree.def を使っていたら、いくつか不具合に遭遇しました。
文太さんに頂いた 1メガ超のDC過去ログを見ていたら
特定のファイルで、ジャンプ先が該当発言番号より手前になるんです。
具体的には DC14階の
2008/08/08  14:02         1,007,705 DC14~003.LOG
2008/08/08  14:09         1,017,395 DC14~021.LOG
この2つで現象が起きました。

古い nif_tree.def でも同じです。
各種DOSエミュ、各種VZ で同じ症状が出ます。
特定のファイルで出るということは、作成されているデータがおかしいかも。
nif_tree.def を起動すると、ログフォルダの下に CT フォルダが作られて
ログファイルと同じ名前の番号ジャンプデータが作られます。

件のデータは、文太さんから頂いた当時からあったものです。
2004/10/23  18:27            66,757 DC14~003.LOG
2006/09/14  16:25            57,826 DC14~021.LOG

結構古いデータですね。
このデータをリネームして新規データを作成したら、正常にジャンプしました。
この新旧データを比較したら、かなり違いがありました。
ジャンプ先アドレスはもちろん、コメントなどのツリー構造も違ってました。
初期の nif_tree.def のバグのようです。
飛び先がおかしいと思ったら、このデータを削除して作り直すのが良さそうです。


さて、これで安心、と思ったら、今度は起動に失敗するケースが有りました。
やはり同じ 1メガ超のDC過去ログです。
色々実験してみてわかったこと。

通常にログファイルをオープンした場合は正常に起動します。
オープン窓の履歴から開くと起動失敗しておかしくなります。
色々試してみると、どうやらテンポラリエラーになっているようです。
これも各種DOSエミュ、各種VZ で同じ症状が出ます。

ということで、テンポラリエラー対策を入れてみました。

nif_tree.def 67行目から

	#W

	ky[, #M ((wa..64)[) ((wa..63)[)
	mp[=2,ps[, eu[-,

  ↓

	#W	;---  DATA LOG 
;	---- テンポラリエラー対策  ★
	#M				;カーソル位置マーク
	&00 p=r,                        ;自前バッファ pの先頭アドレスを取得   ★
        &Le(p,wa+126)                   ;mark0の値をp先頭に擬似プッシュ      ★
	ky[, ((wa..64)[) ((wa..63)[)	;カーソル位置マーク、ロング
	pn.7=pn.8-,			; pn.7=pn.8-,: プロファイル呪文 m.gann
	#] (mr==1)?{ &a(37) (r<=0)?. }	; &Im(pn+7,0) としてもよい
	#L (s==4)?'n' #P #m mr$80,	; クローズ・オープン 
        &Le(wa+126,p)                   ;mark0の値をポップ      ★
	#U				;現在位置に戻す

	mp[=2,ps[, eu[-,


207行目の 09:  の前に

00:      (3+$)."$[8]"

を追加しました。
うまく動いているようです。

ということで、改造版 nif_tree.def v8c を公開します。

#txt:NIF_TR8c.DEF

右クリックで保存できます。
ファイル名が違っているのでリネームしてお使いください。


11303/11290 BQO00549  konno            「新着情報」携帯版  Ver 0.92
( 1) 24/06/14 19:49 11300へのコメント(konnoさん)
> スマホだったら動作を変えるとか出来ればいいんですかね。
色々やってみたんですが、うまくいかないの。(;_;)

ということで、変数一個で分岐させる方式にして、二つの CGIに別けました。(^^;

「タマの猫ハウス」トップページの一番下に

[ BBS 新着情報 ] [ BBS 新着情報 携帯版 ]

このようにリンクを並べて置きました。

「新着情報」は、基本的にリンクを別窓で開きますが
「新着情報 携帯版」は、リンクを同じ窓で開きます。

URLをお気に入りに入れてお使いください。


11304/11302 DGF01024  めざら           このタイトルでよいのか
( 1) 24/06/14 23:38 11302へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
> 初期の nif_tree.def のバグのようです。

つまり,0.8b のバグではないんですよね?

テンポラリファイルエラーも nif_tree.def の問題ではないですし,
「nif_tree.def v8b にバグ?」というタイトルはどうなのでしょうか。

作者が見たらどんな気持ちになるのか,ちょっと考えてしまいます。
相応の配慮が必要ではないでしょうか。

11305/11302 BQO00549  konno            Re: このタイトルでよいのか
( 1) 24/06/14 23:57 11304へのコメント(めざらさん)
> この表示タイトルはどうなのでしょうか。
> 作者が見たらどんな気持ちになるのか,ちょっと考えてしまいます。
> 相応の配慮が必要ではないでしょうか。

うう、確かに勘違いさせてしまいますね。m(__)m
タイトルを変更しました。


11306/11306 BQO00549  konno            「新着情報 携帯版」と掲示板の連携
( 1) 24/06/15 16:59 コメント数:6
「新着情報 携帯版」 Ver 09.3 更新しました。

「新着情報 携帯版」 でうちの掲示板を開くと、縮ツリーになるようにしました。
ツリー表示は長くなると画面をはみ出してしまうために幅を縮めたツリー機能は
以前から仕込んでありましたが、今回携帯版のリンク先を縮ツリーに変更しました。

今はトップのツリーだけですが、これからぼちぼちと連携を広げていきたいと思います。
不具合など見つけましら教えてください。


11307/11306 BQO00549  konno            wforum.cgi の縮ツリー機能も連携強化
( 1) 24/06/15 19:23 11306へのコメント(konnoさん)
> 今はトップのツリーだけですが、これからぼちぼちと連携を広げていきたいと思います。

ということで、縮ツリーの時は、一括表示や記事閲覧のツリーも縮ツリー(簡易版)にしました。
掲示板上部の [縮ツリー] をクリックすると、表示が [ツリー] に変わります。これと同じ状態です。
[ツリー] をクリックすれば、通常のツリーに戻ります。
変数の受け渡しに苦労しましたが、おかげでだいぶ CGI がわかってきたかもです。

長すぎる邪悪なツリーが多いとお嘆きの諸兄は、是非お試しください。(^^;


11308/11306 BQO00549  konno            「新着情報 携帯版」 Ver 0.94 更新
( 1) 24/06/18 01:45 11306へのコメント(konnoさん)
「新着情報 携帯版」 Ver 0.94 更新しました。

・「新着情報 携帯版」 でうちの掲示板の番号をクリックすると、一括表示になります。
 今までは、一括表示のツリーは通常でしたが、携帯版リンクでは縮ツリーになるようにしました。

・ ( 新着 ) リンクから新着記事に飛んでトップのツリーに戻ると縮ツリーになるようにしました。

・「新着情報 携帯版」の不要な項目やスペースを削除などして幅を縮小しました。

・「新着情報 携帯版」のタイトルの色を変更して通常版との違いをわかりやすくしました。

・テスト掲示板と VZwiki のリンクを VTDOS の行に置いて、はみ出しを少なくしました。


不具合などありましたら教えてください。


11309/11306 BQO00549  konno            wforum.cgi の縮ツリー関連の更新
( 1) 24/06/19 23:46 11306へのコメント(konnoさん) コメント数:2
wforum.cgi の縮ツリー関連を色々更新しました。

・タイトルが固定だったのをセンターに配置

・FGALDC会議室の専用CGI を統合

・返信フォームの幅調整

・その他リンクやデザイン等微調整

今回ブラウザの幅を狭くして確認したのでだいぶまともになったと思います。(^^;


不具合などありましたら教えてください。


11310/11306 CXB00940  としき           Re: wforum.cgi の縮ツリー関連の更新
( 1) 24/06/20 13:48 11309へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
いろいろと励んでおられますね。

> 不具合などありましたら教えてください。

今の所は気がついた点はないのですがね。
昨夜、この#11309が書き込まれた直後ぐらいだったかなぁ、一瞬だけ、縮ではない
ほうのツリーが、左寄せではなくセンタリングで表示されて。あぁ、やっている最中
だな、と思いました。

あと、率直な感想として、このようにいろいろとやられているkonnoさん、これだけ
新酒の起床ではない進取の気性にあふれているように見えるわけですから、ここから
一気にレスポンシブデザイン対応に突っ走ってみる、なんてことを期待したりして。

それと、ついでにいくつか。
スレッド表示というか「スレ1覧」をみると、なんかえらくリンクになっている部分
が多いような気がする。これって正しい挙動なんですか?
「スレ2」のほうも、ツリー一覧を意味する三角の上というか下というか、謎の数字
が表示されていますが、これは一体何?
ツリー全体の発言数なのか省略された発言数なのか全く関係ないのか。
そもそもこれは、この数字の上のツリーのものなのか下のものなのか。
こういう、いささか利用者に不親切なところを改善していただけるとありがたい。
現状では、あまりにも不親切というか、私の主観では廃止していただきたいという
くらい。もちろん、管理人が有効に使っているとか、他のお客様には大好評、という
現状があるのであれば、私のたわごとに耳を傾ける必要はありませんが。


11311/11306 BQO00549  konno            Re^2: wforum.cgi の縮ツリー関連の更新
( 1) 24/06/20 23:11 11310へのコメント(としきさん) コメント数:1
> 昨夜、この#11309が書き込まれた直後ぐらいだったかなぁ、一瞬だけ、縮ではない
c> ほうのツリーが、左寄せではなくセンタリングで表示されて。あぁ、やっている最中
> だな、と思いました。

あら見てたのね〜 (^^;
老化現象なのか、OKと思ってUPするとボロがボロボロ出てくるんですよねぇ。(;_;)

> あと、率直な感想として、このようにいろいろとやられているkonnoさん、これだけ
> 新酒の起床ではない進取の気性にあふれているように見えるわけですから、ここから
> 一気にレスポンシブデザイン対応に突っ走ってみる、なんてことを期待したりして。

丁度その手のサイトを見てるんですが、むずいですねぇ。(^^;

> スレッド表示というか「スレ1覧」をみると、なんかえらくリンクになっている部分
> が多いような気がする。これって正しい挙動なんですか?

げげ、思い切りバグってますねぇ。(>_<)

> 「スレ2」のほうも、ツリー一覧を意味する三角の上というか下というか、謎の数字
> が表示されていますが、これは一体何?

これはそのツリーのコメント数です。
バグ直しついでに表示を変えました。スレ1とスレ2で見栄えが違うのはご愛敬で。(^^;

> もちろん、管理人が有効に使っているとか、他のお客様には大好評、という
> 現状があるのであれば、私のたわごとに耳を傾ける必要はありませんが。

他の方の評判はわかりませんが、私が使うために設置したのでこれは存続させます。


11312/11306 CXB00940  としき           Re^3: wforum.cgi の縮ツリー関連の更新
( 1) 24/06/21 10:44 11311へのコメント(konnoさん)
参照先:http://toshiki.la.coocan.jp/
> げげ、思い切りバグってますねぇ。(>_<)

あら、やっぱりバグでしたか。なんでも言ってみるもんですねぇ。

> これはそのツリーのコメント数です。

表示が変わって、その上のツリーに関係するものだとわかりやすくなりました。
これはいいですね。
といいつつ、スレ2のほうは私にはほとんどニーズはありませんが、でもスレ1の
ほうは見やすくなったこともあって、たまには使わせていただきたいと思います。


11313/11306 BQO00549  konno            「新着情報 」 Ver 0.941 更新
( 1) 24/06/23 23:07 11306へのコメント(konnoさん)
「新着情報 」 Ver 0.941 更新しました。


・「新着情報 」と「新着情報 携帯版」を一つに統合しました。

URLの引数に 「?mode1=1」があると、携帯版として表示が切替わります。
今までの「携帯版」ファイル sinn2.cgi は明後日に削除しますので、お手数ですが
改めてトップページの「新着情報 携帯版」からリンクしてください。
それをブックマークし直せば OK です。

今はまだ画面幅で自動切換え出来ませんが、需要あるかしら?


11314/11306 BQO00549  konno            「新着情報 」 Ver 0.942 更新
( 1) 24/06/25 23:30 11306へのコメント(konnoさん) コメント数:1
「新着情報 」 Ver 0.942 更新しました。

・「新着情報 」の引数で画面サイズを 大 中 小 と選択出来るようにしました。
  標準画面サイズを大として、90% で表示しています。
  URLの引数に 「?wsize=2」があると、画面サイズが中(85%)
  「?wsize=3」があると、画面サイズが小(80%) になります。

・携帯版の時は、西暦2桁表示にしたり、色々詰めるようにしました。

・更新したときの時間を2行目に表示するようにしました。

・最下行に、ブラウザの縦横サイズを表示しました。
 ブラウザのサイズを変えると表示が変わります。
 http://www.shurey.com/js/samples/1_tips10.html
 「Labyrinthe Noir」さんのサイトの「JSすぐに使えるサンプル集」を
 そのまま使わせてもらいました。

# この数値を Parl の変数にしたいんだけどわからないの。(;_;)

画面サイズの選択を増やしたい方は言ってくれれば検討します。


11315/11306 BQO00549  konno            タマの猫ハウス トップページ更新
( 1) 24/06/26 00:17 11306へのコメント(konnoさん) コメント数:2
「タマの猫ハウス」トップページを更新しました。

・「新着情報 」のリンクで画面サイズを 大 中 小(携帯版) に選択出来るようにしました。
  標準画面サイズを大として、90% で表示しています。
  画面サイズ中(85%)を選択すると URLの引数に 「?wsize=2」が付きます
  画面サイズ小(80%) 携帯版では「?mode1=1&wsize=3」が付きます

・最下行に、ブラウザの縦横サイズを窓表示しました。
 ブラウザのサイズを変えると表示が変わります。
 http://www.shurey.com/js/samples/1_tips10.html
 「Labyrinthe Noir」さんのサイトの「JSすぐに使えるサンプル集」を
 そのまま使わせてもらいました。

# この数値を Parl の変数にしたいんだけどわからないの。(;_;)

画面サイズの選択を増やしたい方は言ってくれれば検討します。


11316/11306 CXB00940  としき           Re: タマの猫ハウス トップページ更新
( 1) 24/06/27 12:32 11315へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 「タマの猫ハウス」トップページを更新しました。

いろいろと励まれているようですね。
ただ、携帯対応というか小さい画面に対応しようとして、大きい画面に対する配慮
がおろそかになっているような気がします。なかなか大きい画面のシミュレーション
も難しいとは思いますが、とりあえずブラウザを最大化し、ブラウザでの文字設定を
最小化、さらに可能ならそこから[CTRL]+[-]を何回か連打する、というのをやって
みると、私のいいたいことが理解できるかもしれません。

> # この数値を Parl の変数にしたいんだけどわからないの。(;_;)

普通には難しいでしょう。
だって、JavaScriptってクライアント側で動くもので、Perlはサーバ側で動くもの
ですから。
もちろん、普通ではない方法はあるわけで、クライアント側からサーバ側にデータを
送ってやればいいわけですが、サーバ側のほうがCGIならともかく、普通のWEBページ
だと、送られたデータの受け取りようがない気もする。
自前サーバならできるのかな?

どうもあれだ、konnoさん、いまひとつサーバ側とクライアント側の役割分担という
ものを理解されていないような感じに見受けられます。
以前にも書いたことがあるような気がしますが、文字のサイズなんてものは本来的に
クライアント側のお仕事。サーバ側でどうこうするようなものではありません。
というのは建前なので、できることはやってもいいじゃないか、というサイトが世の
中には多いのは現実。だけど、うちの板塀のように、ブラウザ側の対応が変わること
で可能だったことが不可能になることも多いですし、業界の多数派のご意見に変化の
兆しもありませんから、ここは日和っておいたほうが良いのではないかと。
すなわち、文字サイズ変更関係のルーチンは全て撤去、ということ。
いや、もちろん、反主流派を貫く、というのも一見格好良くはありますが。
#いちご白書は何度目か


11317/11306 BQO00549  konno            wforum.cgi の修正
( 1) 24/06/27 20:23 11309へのコメント(konnoさん) コメント数:2
wforum.cgiの修正に、色々バグが有りました。m(__)m

> ・FGALDC会議室の専用CGI を統合

この修正ミスで、検索結果の記事の日付が今日になってました。(>_<)

> 今回ブラウザの幅を狭くして確認したのでだいぶまともになったと思います。(^^;

ツリーのはみ出し部分が折り返していて見苦しいのに今更気が付きました。(^^;
非推奨の <nobr> が折り返しを防いでいるんですね。修正しました。

かなりゴチャゴチャしたので、この機会に、CSS に置き換えてみました。

print "<div style=\"white-space:nowrap;\">";

これでツリールーチンを囲うと同じ結果が得られました。
超今更ですが、これからぼちぼちと CSS化していこうと思います。
なんせ、CSSのことはほとんど知らないもので。(^^;


11318/11306 BQO00549  konno            Re^2: タマの猫ハウス トップページ更新
( 1) 24/06/27 20:40 11316へのコメント(としきさん) コメント数:1
> ただ、携帯対応というか小さい画面に対応しようとして、大きい画面に対する配慮
> がおろそかになっているような気がします。なかなか大きい画面のシミュレーション
> も難しいとは思いますが、とりあえずブラウザを最大化し、ブラウザでの文字設定を
> 最小化、さらに可能ならそこから[CTRL]+[-]を何回か連打する、というのをやって
> みると、私のいいたいことが理解できるかもしれません。

やってみましたが、言わんとすることがよくわかりませんでした。(;_;)
目の手術をしたおかげで極小の文字も結構読めるなぁという感想です。(^^;
一番小さい文字は潰れて読めなかったけど、もしかしてこれのことかなぁ。

> もちろん、普通ではない方法はあるわけで、クライアント側からサーバ側にデータを
> 送ってやればいいわけですが、サーバ側のほうがCGIならともかく、普通のWEBページ
> だと、送られたデータの受け取りようがない気もする。

やっぱりそうなんですかねぇ。
JavaScript を使えば色々出来そうな気はしますが。

> どうもあれだ、konnoさん、いまひとつサーバ側とクライアント側の役割分担という
> ものを理解されていないような感じに見受けられます。

理解はしているつもりですが、もっと連携が取れたらいいのにと思うのです。

> 以前にも書いたことがあるような気がしますが、文字のサイズなんてものは本来的に
> クライアント側のお仕事。サーバ側でどうこうするようなものではありません。
> というのは建前なので、できることはやってもいいじゃないか、というサイトが世の
> 中には多いのは現実。

私も、出来るのならやってみたいと思う方だし、WEB世界はルール無用のジャングルかと。
思えば20年前も色々掲示板などを弄っていたのだなぁ・・・

> だけど、うちの板塀のように、ブラウザ側の対応が変わること
> で可能だったことが不可能になることも多いですし、業界の多数派のご意見に変化の
> 兆しもありませんから、ここは日和っておいたほうが良いのではないかと。

目出ぁ食えり、なんてぇ最近聞いた謎のはやり言葉にも日和たいのに日和れないひよわ男です。

> すなわち、文字サイズ変更関係のルーチンは全て撤去、ということ。

げげげっ、と思いましたが、もしかして全部 CSS でやれということでしょうか。

> いや、もちろん、反主流派を貫く、というのも一見格好良くはありますが。

私はそういうことはいっさい考えない人です。ただやりたいことをやるだけ。(^^;

> #いちご白書は何度目か

うーん、価値観の相違みたいな話なのかなぁ、、、わかりません。


11319/11319 GST01234  そうた           無料でPDFをExcelに変換できますか?
( 1) 24/06/27 22:21 コメント数:1
こんにちは。私は現在学生で、研究のために多くのPDFデータをExcelに変換する必要があります。無料で使える良いツールはありますか?

11320/11319 BQO00549  konno            Re: 無料でPDFをExcelに変換できますか?
( 1) 24/06/27 23:36 11319へのコメント(そうたさん)
そうたさん、こんにちは

> こんにちは。私は現在学生で、研究のために多くのPDFデータをExcelに変換する必要があります。無料で使える良いツールはありますか?

私は PDF を使わないので、その手のツールは知りません。
ネットで「無料でPDFをExcelに変換」で検索すれば色々出てきますね。
危険なサイトもあるかもしれないので自己責任で試してみるとかどうでしょう。

MSのcopilot で検索すると
----------------------------------------------------------

1.エクセルのPower Queryを使って取り込む方法:
エクセルのPower Queryを使用して、PDFをExcelに変換できます。この方法は重要なデータを変換したい場合に適しています。
手順:
新しいエクセルを開きます。
データタブを選択し、「データの取得」から「ファイルから」を選択します。
PDFファイルを選択して取り込みます。
表の1行目を項目として設定し、読み込みを実行します。

2.オンラインツール「iLovePDF」を使って変換する方法:
「iLovePDF」はオンラインでPDFをExcelに変換できる便利なツールです。
手順:
iLovePDFのホームページにアクセスします。
「PDFからExcel」をクリックしてPDFファイルを選択します。
「EXCELに変換」をクリックして変換が完了したらダウンロードします。

3.ワードでコピーペーストを利用して変換する方法:
ワードを使用してPDFのテキストをコピーし、Excelに貼り付ける方法です。
手順:
PDFファイルをワードに開きます。
テキストを選択してコピーします。
エクセルに新しいシートを作成し、コピーしたテキストを貼り付けます。

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

こういう結果が出ました。
信頼性はわからないので試すなら自己責任で試すのがよろしいかと思います。


11321/11306 CXB00940  としき           Re^3: タマの猫ハウス トップページ更新
( 1) 24/06/29 16:12 11318へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> やってみましたが、言わんとすることがよくわかりませんでした。(;_;)

うぅん、デザイン的な面での話なんですが、もしかしたらこれはkonnoさん的には
問題ない点なのかも。
うちの複数の環境で、ブラウザもFirefoxやedge、chromeな複数のバージョンで同じ
ような挙動になるので、ブラウザ間での差異はないと思うのですけど、もしかしたら
konnoさんのところでは違っているとかあるかもしれない。
以下はブラウザのウィンドウだと思ってください。

+------------------------------------------------------------------------+
|              タイトル カウンタ             |
|                  絵                 |
|ごにょごにょ                              |
|ごにょごにょ                              |
|ごにょごにょ                              |
|ごにょごにょ                              |
|ごにょごにょ                              |
|                 検索窓                |
+------------------------------------------------------------------------+

こんな感じになって、著しくバランスが悪いように見えるのですよ。なんというか、
このページのメインになってほしい部分が左寄せされているような感じ。
もちろん、トップなのだからメインはタイトルと絵であって、あとのリンクの部分は
ほんのつけたし、というのであればこの画面構成はとっても正しいものです。
そして、先に、大画面をエミュレーションするために[CTRL]+[-]を連打してみれば、
と申しましたが、うちではそれをすると、左側のリンクの部分がどんどん小さくなり
左側にこじんまりとしていく一方で、タイトルと絵のほうは小さくはなりますが位置
は変わらず、ますます間隔が開いていくばかり。
これは狙ってやっているのか、それともkonnoさんのところでは違う表示になるのか、
というところはわかりません。

> JavaScript を使えば色々出来そうな気はしますが。

ページの表示を全部JavaScriptで行う、という手法はあります。
この方法なら、サーバとの通信は全く行いませんから、可能なはず。
あと、うろ覚えな記憶だと、JavaScriptに通信させる、という手法もあったような気が
しますが、それこそこれはセキュリティの問題でブラウザ側が規制したような。

> 理解はしているつもりですが、もっと連携が取れたらいいのにと思うのです。

かつて、今よりブラウザが連携を許可していた時代、いわゆるセキュリティホール
とかで個人情報が抜かれまくったり遠隔操作されたり、ということで、ブラウザ側が
連携を取れる経路を絞りまくっているわけですよ。なので、konnoさんが希望する
ことはおそらく、JavaScriptだけで何とかできるようにこの方面を勉強する、という
のが正攻法のはず。これを正面突破ではなく裏口から搦め手でやろうとすると、あと
で手痛いしっぺ返しを食いそう。

> げげげっ、と思いましたが、もしかして全部 CSS でやれということでしょうか。

一応、それがベター。
少なくとも、私はそれよりよい方法は知らない。
ただ、私の知識もたかがしれていますから、もっと良い方法もありそうな気がする。

> > いや、もちろん、反主流派を貫く、というのも一見格好良くはありますが。
> 私はそういうことはいっさい考えない人です。ただやりたいことをやるだけ。(^^;

ところがですよ。
konnoさんの真にやりたい目的はともかくとして、やろうとしている手段は、いわゆる
ルール違反に近いようなことばかり。とはいえ、このルールというものも部外者から
したら曲者に見えるというか、いわゆる業界の自主基準というもので、当然、罰則
なんかありはしない。とはいえ、守っておけば、多くの閲覧者に正しく見てもらえる
可能性が著しく高まる、という程度の話。ブラウザでの対応、とかの話ね。
う〜ん、適切な比喩ができない、と文太さんにもよく怒られていますが、むりやり
比喩的な話で言うと、めざらさんのサイトの場合、40キロ制限の道をときどき
45キロくらいで走る程度、というくらいルールを守っている。うちのサイトだと
もう巡航速度が50キロくらい、時々60キロを越えます、と言ったような感じかな。
でもkonnoさんがやろうとしていることは、傍目にはターボをフルにして200キロで
突っ走ってやる、みたいなもの。うまく行けばこれはすごいけど、下手をすれば周り、
つまり閲覧者にも迷惑をかけかねない。
#「下り最速」というのは大抵「登り最速」ではない

ということで、私としては、何か違ったところを目指しているように見えて仕方ない。
もちろん、私の誤解の可能性も高いのですが。


11322/11306 BQO00549  konno            Re^4: タマの猫ハウス トップページ更新
( 1) 24/06/30 00:19 11321へのコメント(としきさん) コメント数:2
> こんな感じになって、著しくバランスが悪いように見えるのですよ。なんというか、
> このページのメインになってほしい部分が左寄せされているような感じ。
> もちろん、トップなのだからメインはタイトルと絵であって、あとのリンクの部分は
> ほんのつけたし、というのであればこの画面構成はとっても正しいものです。

もちろんタイトルと絵はメインです。リンクもメインですが。(^^;
これ、センターに揃えるというやりかたは初期のホームページではよく見かけました。
が、字数が揃っていないと不思議なシンメトリック絵画のようで、違和感を感じました。
キチンと揃えるなら、テーブルを使えばいいんでしょうが、面倒くさいの。(^^;

> そして、先に、大画面をエミュレーションするために[CTRL]+[-]を連打してみれば、
> と申しましたが、うちではそれをすると、左側のリンクの部分がどんどん小さくなり
> 左側にこじんまりとしていく一方で、タイトルと絵のほうは小さくはなりますが位置
> は変わらず、ますます間隔が開いていくばかり。

これは同じように見えていますが、普通はそういう操作はしないと思うので問題なし。(^^;
としきさんとか他の方は、見栄えの改善にテーブルを使いますかねぇ。
私はテーブルとかcssとか全く勉強してないもので。<(^^;)

> ページの表示を全部JavaScriptで行う、という手法はあります。
> この方法なら、サーバとの通信は全く行いませんから、可能なはず。

この手は、じょじょさんのカウンターなどで見てはいましたが、むずいの。

> あと、うろ覚えな記憶だと、JavaScriptに通信させる、という手法もあったような気が
> しますが、それこそこれはセキュリティの問題でブラウザ側が規制したような。

なるほど、それはわかるような気がします。

> konnoさんが希望することはおそらく、JavaScriptだけで何とかできるように
> この方面を勉強する、というのが正攻法のはず。

これからぼちぼち勉強していこうと思ってはいます。(^^;

> > げげげっ、と思いましたが、もしかして全部 CSS でやれということでしょうか。
> 一応、それがベター。
> 少なくとも、私はそれよりよい方法は知らない。

今、
とか <font> とか、必要に迫られて削減しているところです。(^^;
そのうち慣れてくるのかなぁ。

> ただ、私の知識もたかがしれていますから、もっと良い方法もありそうな気がする。
>
> > > いや、もちろん、反主流派を貫く、というのも一見格好良くはありますが。
> > 私はそういうことはいっさい考えない人です。ただやりたいことをやるだけ。(^^;

> #「下り最速」というのは大抵「登り最速」ではない

これが一番納得できてわかりやすかったような。(^^;
これからは登りもついていけるように更なるチューンナップを(゚゜)☆\(--#)バキッ


11323/11306 CXB00940  としき           Re^5: タマの猫ハウス トップページ更新
( 1) 24/06/30 11:18 11322へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
konnoさんのデザイン感覚で問題なければ問題なしです。
ただ、一つだけ、例によって私が誤解を招いているところがあって。

> > そして、先に、大画面をエミュレーションするために[CTRL]+[-]を連打してみれば、
> > と申しましたが、うちではそれをすると、左側のリンクの部分がどんどん小さくなり
> これは同じように見えていますが、普通はそういう操作はしないと思うので問題なし。

これは、あくまでも大画面をエミュレーションするための操作。
実は、会社のマシン、21Vかもっと大きいものかもしれませんが、これでブラウザの
ウィンドウを最大化した場合にあのような画面表示となっています。解像度は忘れた。
konnoさんのパソコン、もしHDMIの端子があれば、大画面のテレビとかにつなげば
エミュレーションの操作なんかしなくても実物を見れることでしょう。

> としきさんとか他の方は、見栄えの改善にテーブルを使いますかねぇ。
> 私はテーブルとかcssとか全く勉強してないもので。<(^^;)

私もテーブルは多用しています。
とはいえ、もう何年も前に、できる範囲で、ではありますが、かなり大々的にCSSを
導入しました。
実は、うちのサイトのトップページも、上記の会社のマシンよりは小さいとはいえ、
その当時の大画面で表示させて「うげげ」となってしまったもので。ありがたいことに
CSSで記述しておけば、画面サイズのある程度の変更であればそれなりに追従して表示
してもらえるので、少なくともパソコンなら当面このままでよさそう。ただスマホでの
表示は全く確認していないので、一体どうなっていることやら。

あと、ブラウザ側ではなくサイト側で文字サイズの変更ができるようにするのであれ
ば、以下のようなページを熟読すると参考になるかもしれません。JIS規格だの総務省の
ガイドラインとかが出てきて、きちんと実装しようとすると、かなり大変そうです。

https://weba11y.jp/basics/faq/resize-text/
https://burnworks.com/blog/articles/8494mihzij4n/


11324/11306 DGF01024  めざら           Re^5: タマの猫ハウス トップページ更新
( 1) 24/06/30 11:54 11322へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
> が、字数が揃っていないと不思議なシンメトリック絵画のようで、違和感を感じました。

center要素をイメージしていると思いますが,html5では廃止されていますし,
html4でも厳密型では使用できない古臭くて陳腐な要素です。CSS を使いましょう。

> キチンと揃えるなら、テーブルを使えばいいんでしょうが、面倒くさいの。(^^;

(キチンと……と言うか)所詮テーブル要素だけではセンタリングが出来ませんから,
結局左右のマージンを同じ値で設定することになります。
だったら,本来の目的から外れた table なんて面倒なだけですよね,確かに。

一番簡単なのは,左右のマージンをともに auto にしておいて,
適用させたいブロックの幅を例えば80%とか適当に定義してやれば,
結果的にブロック全体が左右同じ余白で中央寄せされます。
一方で,ブロックの内容の配置は影響されないので,
center要素をテキストに適用したみたいな恥ずかしいことにはならないのが普通です。

ブロックレベル要素に対する一例([]内は不定です)としては……
[div].[cntr] {
margin-left:auto; margin-right:auto; width:[80%]; padding:[2em];
}
……という感じです。

まぁ,あまりご興味はないでしょうけれど。


11325/11306 BQO00549  konno            Re^6: タマの猫ハウス トップページ更新
( 1) 24/06/30 18:06 11323へのコメント(としきさん)
> 実は、会社のマシン、21Vかもっと大きいものかもしれませんが、これでブラウザの
> ウィンドウを最大化した場合にあのような画面表示となっています。解像度は不明。

なるほど、それは想定外でした。確認してみます。

> konnoさんのパソコン、もしHDMIの端子があれば、大画面のテレビとかにつなげば
> エミュレーションの操作なんかしなくても実物を見れることでしょう。

42インチのテレビで見てみましたが、見栄えはノートPCとほぼ同じでした。(^^;
なので、[CTRL]+[-]連打して、こんな感じかなぁ、・・・確かにバランス悪いですね。(^^;
あ、一つ気が付いたことがあります。トップページに仕込んだ「ウインドウサイズ」の表示が

ノートPC全画面	ウィンドウサイズ:横幅 = 1239 / 高さ = 630
42型TV		ウィンドウサイズ:横幅 = 2478 / 高さ = 1260

これは画面サイズの違いかぁ、と思ったら、ブラウザで縮小するとこの数字が変化するようです。
なるほどねぇ〜、気が付きませんでした。(^^;

> > としきさんとか他の方は、見栄えの改善にテーブルを使いますかねぇ。
> > 私はテーブルとかcssとか全く勉強してないもので。<(^^;)
> 
> 私もテーブルは多用しています。
> とはいえ、もう何年も前に、できる範囲で、ではありますが、かなり大々的にCSSを
> 導入しました。

> 実は、うちのサイトのトップページも、上記の会社のマシンよりは小さいとはいえ、
> その当時の大画面で表示させて「うげげ」となってしまったもので。ありがたいことに
> CSSで記述しておけば、画面サイズのある程度の変更であればそれなりに追従して表示
> してもらえるので、少なくともパソコンなら当面このままでよさそう。ただスマホでの
> 表示は全く確認していないので、一体どうなっていることやら。

やしきのトップページを縮小して見てみました。
文字も画像も縮小しますが、バランスはいいですねぇ。
逆にブラウザの幅を縮小してもそれなりに見えて、見栄えはそれほど悪くないです。

ということで、やしきの秘伝のソースを頂こうと思ったら、あれ? 外部CSSが無い?
思った以上にシンプルなんですねぇ。参考にさせていただきます。

> あと、ブラウザ側ではなくサイト側で文字サイズの変更ができるようにするのであれ
> ば、以下のようなページを熟読すると参考になるかもしれません。JIS規格だの総務省の
> ガイドラインとかが出てきて、きちんと実装しようとすると、かなり大変そうです。

拡大縮小のボタンの話ですね。参考になります。
うちの掲示板の拡大縮小のリンクはとっくの昔に廃止されて飾りになっていました。(^^;
調べたら、2005年から2006年の間だけのようで、虱潰しに家探ししてやっと見つけました。

2005/06/07  12:29            63,044 wforum.cgi

ルーチンが完全にあるのはこの1つだけでした。ごく短期間で廃止したと思われます。(^^;
拡大縮小ボタンの話を勧められたので、またやってみようかな φ(..; バキッ\(--;


11326/11306 BQO00549  konno            Re^6: センター寄せは <div> スタイルで括るだけ
( 1) 24/06/30 18:51 11324へのコメント(めざらさん)
> center要素をイメージしていると思いますが,html5では廃止されていますし,
> html4でも厳密型では使用できない古臭くて陳腐な要素です。CSS を使いましょう。

なるほど、やってみたいと思います。

> (キチンと……と言うか)所詮テーブル要素だけではセンタリングが出来ませんから,
> 結局左右のマージンを同じ値で設定することになります。
> だったら,本来の目的から外れた table なんて面倒なだけですよね,確かに。

なるほど、テーブルも目的外使用になるのですね。

> 一番簡単なのは,左右のマージンをともに auto にしておいて,
> 適用させたいブロックの幅を例えば80%とか適当に定義してやれば,
> 結果的にブロック全体が左右同じ余白で中央寄せされます。
> 一方で,ブロックの内容の配置は影響されないので,
> center要素をテキストに適用したみたいな恥ずかしいことにはならないのが普通です。

おお、これは効果を期待してしまいますね。

> ブロックレベル要素に対する一例([]内は不定です)としては……
> [div].[cntr] {
> margin-left:auto; margin-right:auto; width:[80%]; padding:[2em];
> }
> ……という感じです。

えーと、表示法なのかよくわからないので、とほほさんのサイトも参考に以下のように

<div style="margin-right:auto; margin-left:auto; width:80%; padding:0.2em;">

これ一つで全体を括ってみたら、画像がちょっと左寄りになったので、画像だけ以下

<div style="margin-right:auto; margin-left:auto; width:50%; padding:0.2em;">

width の%で左右バランス調整する感じですかね。
これで凄く良い感じになりました。応用も簡単そうです。ありがとうございます。

> まぁ,あまりご興味はないでしょうけれど。

とんでもないです。今までやらなかったことを後悔するほど良くなりました。
本当にありがとうございました。m(__)m

ということで、資源トップのお宝ソースは丸ごと頂きだぜぃ!

# 大公開時代の頂き海賊団はお宝丸ごと頂き! お代は「愛」とかでは釣り合わない?


11327/11306 BQO00549  konno            タマの猫ハウス トップページ見栄え更新
( 1) 24/07/01 19:44 11315へのコメント(konnoさん)
「タマの猫ハウス」トップページを更新しました。

・としきさんやめざらさんのアドバイスでCSSを導入して見栄えが良くなりました。

・ブラウザ幅の増減で表示の拡大縮小に対応しました。

・「新着情報 」を別窓を開くか開かないか(携帯版)で別けました。
 画面サイズ 大 中 小(携帯版) はサイズオプションとして別けました。

表示などおかしなところがあれば教えてください。
もっとこうした方がいいというアドバイス大歓迎です。(^_^)


11328/11306 BQO00549  konno            「新着情報 」 Ver 0.943 更新
( 1) 24/07/01 20:03 11314へのコメント(konnoさん) コメント数:1
「新着情報 」 Ver 0.943 更新しました。

・「新着情報 」を別窓を開くか開かないか(携帯版)で別けました。

 URLの引数 mode1=1 で別窓を開かない携帯版になります。
 それ以外は別窓を開く通常版となります。

・画面サイズ 大 中 小(携帯版) はサイズオプションとして別けました。

 サイズは 大:100% 中:90% 小:80% 極小:70% となります。
 URLの引数 wsize= の数字 1:100% 2:90% 3:80% 4:70% 5:60% となります。
 URLの引数 wsize= の数字に直接%指定 40% 〜 150% まで指定できます。

「タマの猫ハウス」トップページのリンクから選択して、それぞれの環境に合わせて
引数のオプションを変更してブックマークに入れてください。

表示などおかしなところがあれば教えてください。
もっとこうした方がいいというアドバイス大歓迎です。(^_^)


11329/11306 DGF01024  めざら           Re: 「新着情報 」 Ver 0.943 更新
( 1) 24/07/02 08:35 11328へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
とりあえずですね,
「Another HTML-lint gateway」(http://cetus.sakura.ne.jp/htmllint/htmllint.html
にかけて,重要度が 8 と 9 のエラーを修正してみてはいかがでしょう。

※注:この文法チェッカーの評価は極端に厳しめですから他は「ふ〜ん」でもいいです。


個人的には,「人今日」「人昨日」みたいな読みにくいのは気になりますね。
あと,body(地べた) にテキスト(大事な物)が直に置いてあることとか。
さらに,font を多用していますが,強調して見やすくしたい意図があるのですよね。
ふつうそういうのは,見出しとして扱うことが多いと思います。

11330/11306 BQO00549  konno            Re^2: 「新着情報 」ソースは問題だらけ!?
( 1) 24/07/02 15:19 11329へのコメント(めざらさん) コメント数:1
> とりあえずですね,
> 「Another HTML-lint gateway」(http://cetus.sakura.ne.jp/htmllint/htmllint.html
> にかけて,重要度が 8 と 9 のエラーを修正してみてはいかがでしょう。

対象が htmlのように見えましたが、sinn.cgi のURLを入れて試してみました。
「軽度のチェックを無効にします」にチェックを入れた状態の結果が

88個のエラーがありました。このHTMLは -17点です。タグが 22種類 170組使われています
重要度	個数
7	1
8	2
9	11

こんなん出ました。(;_;)

> 個人的には,「人今日」「人昨日」みたいな読みにくいのは気になりますね。

う、文字が繋がって見えますか。もう少し間隔を空けてみます。(^^;

> あと,body(地べた) にテキスト(大事な物)が直に置いてあることとか。
> さらに,font を多用していますが,強調して見やすくしたい意図があるのですよね。
> ふつうそういうのは,見出しとして扱うことが多いと思います。

うう、もうなにがなにやら・・・ とりあえず見直してみます。m(__)m


11331/11331 BQO00549  konno            MS-DOS Player 2024/7/1 更新
( 1) 24/07/02 16:27
MS-DOS Player が 2024/7/1 に更新されていました。
更新内容は
-----------------------------------------------------------
INT 10h, AX=8200hを修正しました。
BLがFFh以外のとき、変更前のスクロールモードの値をALに返すように修正しています。
INT 16h, AH=02h/12h/51hを修正しました。
トグルするキーの状態を正しく取得できるようになっています。
ただしVK_KANAの状態は、Windows10ではIME絡み?でうまく取得できないようです。

INT 10h, AX=5000h/5001h, AH=85hをサポートしました。
J-3100のカーソルモードの取得・変更、カーソル位置の文字のアトリビュートを取得します。
INT 16h, AH=F0h/F1h/F5h/F6hをサポートしました。
J-3100のビープ鳴動、キーのロック状態の変更、キーバッファへの追加や状態の取得をします。
INT 6Fh, AH=01h/02h/03h/04h/05h/0Bh/66hをサポートしました。
J-3100で使用しているATOK5/6のオン・オフや状態の変更・取得をします。
またATOK5/6のダミードライバーを組み込みました。
主に、J31BASICで使用されているっぽいサービス類を中心にサポートしています。

INT 10h/16h, AX=5000h/5001hをサポートしました。
AXのビデオ・キーボードBIOSのカントリーコードの取得・変更をします。
ただし、値の変更をしても、BIOSの動作には影響しません。

INT 16h, AX=1300h/1301hをサポートしました。
DOS/VのIMEのオン・オフや状態の変更・取得をします。

Windows10の新しいIMEは、コンソールアプリ上の挙動が色々と怪しくなっているようで、
ローマ字・カナ入力の状態を正しく取得できません。
このため、ローマ字・カナ入力を切り替える処理は、現状では無効にしています。
従来のIMEを使っているか否かの判定はできそうなのですが、
Microsoft IME以外を使っているかの判定をどうすればいいか調査中です。
-----------------------------------------------------------

あれ? これって、私が弄っているJ31BASICコンパイラで問題が出ているものばかりではないですか。
#11251 あたり参照
掲示板ではBIOSコールの問題を記事にしましたが、武田さんにメールした覚えがないです。(^^;
ここを見てくれているのでしたらありがたいことです。たまたまかもしれないですが。

で、J31版の STIMEJ.EXE を動かしてみたら、問題なく動くようになりました。
これはありがたいです。武田さんに感謝です。m(__)m

これを機に途中で放置状態の STIME を公開できる程度に仕上げてみようかな。
本当にありがとうございました。


11332/11306 CXB00940  としき           Re^3: 「新着情報 」ソースは問題だらけ!?
( 1) 24/07/02 23:01 11330へのコメント(konnoさん) コメント数:2
参照先:http://toshiki.la.coocan.jp/
> > ふつうそういうのは,見出しとして扱うことが多いと思います。

あとは、それこそ強調を意味する<em>とか<strong>タグを使ってみるとか。
これらはHTML5でも、まだ生きているのではなかったかな。
それにこいつを使えば、divだのspanだの、classだのidだの、なんていうものを使わず
に直接<em>をCSSでボールドに修飾する、なんてこともできるはずだし。
また、前にもお願いしたことがあると思いますが、即値で<font size="3">とかでは
なく<font size="-2">とかを使っていただくほうがまだましな気がする。
ま、五十歩百歩、かもしれませんが。


11333/11306 DGF01024  めざら           細かい指定よりも明確な構造を先に
( 1) 24/07/03 08:25 11332へのコメント(としきさん) コメント数:2
参照先:http://mezala.la.coocan.jp/
あまり胸を張って言える立場にはありませんが……

HTML文書って,ちゃんとした構造にすればそれなりの見栄えになるように
ブラウザの表示関係の初期値って定められていると思うのですよね。

例えば,新着情報の場合だと概ね次のような構造になると思います。
(BBSがそれぞれひとつなら見出しレベルは変わるかも)
+――― BODY ―――――――――――――――――――――――+
|+―見出し H1 ―――――――――――――――――――――+|
||BBS新着情報                                           ||
|+―――――――――――――――――――――――――――+|
|      +―ちょっとした説明ブロック―――――――+        |
|      |リード文など(なくてもいい)            |        |
|      +――――――――――――――――――――+        |
|  +―見出し H2 ―――――――――――――――――――+  |
|  |としきのやしき                                    |  |
|  +―――――――――――――――――――――――――+  |
|      +―見出し H3 ――――――――――――――+        |
|      |やしきの板塀 (新着)                  |        |
|      +――――――――――――――――――――+        |
|    +―――+―――――+――――+―――――――――+  |
|    |日付  |  発言者  |  番号  |  タイトル        |  |
|    +―――+―――――+――――+―――――――――+  |
|    |      |          |        |                  |  |
|    +―――+―――――+――――+―――――――――+  |
|    |      |          |        |                  |  |
|    +―――+―――――+――――+―――――――――+  |
|  +―見出し H2 ―――――――――――――――――――+  |
|  |めざら資源                                        |  |
|  +―――――――――――――――――――――――――+  |
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
|+― ADDRESS  ―――――――――――――――――――――+|
||責任表示や連絡先など                                  ||
|+―――――――――――――――――――――――――――+|
+―――――――――――――――――――――――――――――+

表示系の要素や CSS に頼らなくても,それなりの見栄えになると思います。
細かい表示を気にするのは構造を確定した後でいいわけですが,
先に細かいことを気にするから収拾がつかなくなってしまうと想像します。

11334/11306 BQO00549  konno            Re^4: 「新着情報 」ソースは問題だらけ!?
( 1) 24/07/03 23:54 11332へのコメント(としきさん) コメント数:1
> あとは、それこそ強調を意味する<em>とか<strong>タグを使ってみるとか。
> これらはHTML5でも、まだ生きているのではなかったかな。

<em>って、相対サイズだったような。なかなか思うように指定できなかった気が。

> それにこいつを使えば、divだのspanだの、classだのidだの、なんていうものを使わず
> に直接<em>をCSSでボールドに修飾する、なんてこともできるはずだし。

そうなんですか、うーん、どうしようかなぁ。

> また、前にもお願いしたことがあると思いますが、即値で<font size="3">とかでは
> なく<font size="-2">とかを使っていただくほうがまだましな気がする。

ゼロの時はどうするのかなとおもいまして。(^^; medium ですかね。
まだしばらくは藻掻くことになりそうです。(^^;


11335/11306 BQO00549  konno            Re: 細かい指定よりも明確な構造を先に
( 1) 24/07/03 23:55 11333へのコメント(めざらさん)
> 例えば,新着情報の場合だと概ね次のような構造になると思います。
> (BBSがそれぞれひとつなら見出しレベルは変わるかも)

おお、見栄えが良いですね。

> 表示系の要素や CSS に頼らなくても,それなりの見栄えになると思います。

見栄えはいいんですが、私はここに情報を詰め込みたかったのです。なので

> 細かい表示を気にするのは構造を確定した後でいいわけですが,

今の見た目が私の目指していた形なので、CSSでどこをどうしたものかと。(^^;

> 先に細かいことを気にするから収拾がつかなくなってしまうと想像します。

それはいえるかも。(^^;
例のチェックですが

> 88個のエラーがありました。このHTMLは -17点です。タグが 22種類 170組使われています
これが

70個のエラーがありました。このHTMLは 84点です。タグが 22種類 169組使われています。

こうなりました。(^^;
とりあえずはこれで様子を見ることにします。(^^;
ありがとうございました。


11336/11306 CXB00940  としき           Re: 細かい指定よりも明確な構造を先に
( 1) 24/07/04 00:07 11333へのコメント(めざらさん)
参照先:http://toshiki.la.coocan.jp/
今更ながら、ソースを見させていただきました。
あぁ、なるほど、これは・・・

インライン要素とかブロック要素とかあるわけですが、最近のHTMLの目的というのが

> HTML文書って,ちゃんとした構造にすればそれなりの見栄えになるように
> ブラウザの表示関係の初期値って定められていると思うのですよね。

文書をどのように構造化しようか、という話になっていて。
全体があって見出しがあって、章があってセンテンスがあって、ということね。
もともとが、文書には構造がある、という点が出発点、というか。
小学校の時から作文の書き方で勉強することではありますが、教え方のうまい先生は
少ないかもしれない。

> 細かい表示を気にするのは構造を確定した後でいいわけですが,
> 先に細かいことを気にするから収拾がつかなくなってしまうと想像します。

うむ、至言だ。


11337/11306 CXB00940  としき           Re^5: 「新着情報 」ソースは問題だらけ!?
( 1) 24/07/04 00:16 11334へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> <em>って、相対サイズだったような。なかなか思うように指定できなかった気が。

konnoさんに誤解があるか、私のHTMLの知識が古くなっているか。
konnoさんのおっしゃっているのは、emとかpxとかのことですよね。
私の言っているのは、サイズ指定のemのことではありません。
<em>ほげほげ</em>という、タグの話です。
これは強調を意味するタグです。
昔のブラウザだと、半角アルファベットの場合はイタリックで表示していました。
最近のブラウザで日本語だとどうなるかわかりません。
<strong>ふがふが</strong>だと太字だったけど、これは今でもそうなっているのが
多いと思う。


11338/11306 BQO00549  konno            Re^6: 「新着情報 」ソースは問題だらけ!?
( 1) 24/07/04 21:37 11337へのコメント(としきさん) コメント数:1
> konnoさんのおっしゃっているのは、emとかpxとかのことですよね。
> 私の言っているのは、サイズ指定のemのことではありません。
> <em>ほげほげ</em>という、タグの話です。
> これは強調を意味するタグです。

これは知りませんでした。勘違いしてました。m(__)m

> 昔のブラウザだと、半角アルファベットの場合はイタリックで表示していました。
> 最近のブラウザで日本語だとどうなるかわかりません。

エッジで試してみたら、半角アルファベットはイタリックで、日本語は変化無しでした。
ファイヤーフォックスでは、日本語もイタリックのボールドで表示しました。
クロムはエッジと同じでした。中身が同じなのか。
これではちょっと使えないですね。

> <strong>ふがふが</strong>だと太字だったけど、これは今でもそうなっているのが
> 多いと思う。

私は長い英単語のスペルを覚えられないので、使えるうちは <b></B> で行こうかな。(^^;


11339/11306 CXB00940  としき           Re^7: 「新着情報 」ソースは問題だらけ!?
( 1) 24/07/06 18:29 11338へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 私は長い英単語のスペルを覚えられないので、使えるうちは <b></B> で行こうかな。

長いといってもたった5文字が覚えられないのはいささか危機的。
私の場合はストロング系のアルコール飲料を飲む福祉を享受しているというのが強い
ですが、仮面ライダーの影響もあるかも。

それはさておき。
表示されたソースをざっくりみて、気になった部分がいくつか。
めざらさんからすると、そんなものは枝葉末節、かも知れない。

まず、ソースをVzで開くと、なんか変なコントロールコードが入っている。
あるいは、微妙に文字化けしたような半角カナとか。
この辺はきれいにしてほしいかな。

次、<font size='1'> </font>なんていうのがある。
大昔、1x1サイズの画像を使って表示を整えたりしていましたけどね。
思い出した私も私ですが、もはや伝説級のいにしえの技術です。
こういう、現在では恥ずかしいものはやめましょう。

あと、私個人的には、ちょっと情報が詰まりすぎに見える。
ただ、これはおそらくkonnoさんが意図してやっていることですよね。
#11335
> 見栄えはいいんですが、私はここに情報を詰め込みたかったのです。
とありますから。
一応、個人的な希望としては、各掲示板ごとにちょっと行間を開けてほしいかな。
でも、konnoさん的には間延びして見えてしまうかもしれませんので、これは却下で
かまいません。

文法的には、各掲示板タイトルの前、すなわち<a>タグの前に<div>を、そして
</table>のうしろに</div>をつけると、大体いい感じになりそうな気がする。
ただ、これ、無理やり文法的にOKにしているだけ、という感じもあって、今以上
には悪くならないはずとはいえ、どんなもんだろうねぇ。
う〜ん、そうねぇ、<body>タグ直後の冒頭部分、表示されるタイトルのところも、
めざらさん的には<h1>なんていうのがお薦めかもしれませんが、表示される1行分を
<div></div>でくくっていただけるだけで気分が違う。
ついでにいうと、そこのところの<font size='3'>は逆にありがたみを感じない。
というよりも、はっきりいって、ないほうがうれしい。

それから、<tbody>タグ、これ、このページにおいては、必要性がわからない。
もちろん、あって邪魔になるものではないけど。とはいえ、ごてごてした飾りは
少なければ少ないほどいいものなので、外したらどこがどう悪くなった、というのが
なければ、外せるタグはどんどん外すべきだと思う。

もうひとつ、#11262にも書いた実体参照の問題、これも解決していただくことを希望。

最後に、トップページにある[大] [中] [小]と[中] [小] [極小]の表記。
おそらく、konnoさんご自身がいろいろな環境からアクセスされる都合でそれぞれ
3つの選択肢をご用意されているかと思います。もちろん、それぞれの利用頻度は
異なることでしょう。
ただ、これ、お客様というか利用者目線でいうと、全く意味不明。
何かのサイズだとはわかりますが、データ量なのか表示される画像のサイズなのか、
ということがわかるようになっていないわけですよ。
そして、利用者のことを考えていただく際には、私が#11323で紹介したページを参考
に、きちっと作りこんでいただくか、あるいは文字サイズの変更ルーチンをきっぱり
と全撤廃していただくか、ということをぜひご検討ください。
もちろん、利用者置いてけぼり、という選択肢はあり。
利用者の一人である私としては非常にうれしくないけど。


11340/11306 DGF01024  めざら           Re: wforum.cgi の修正
( 1) 24/07/07 10:02 11317へのコメント(konnoさん) コメント数:3
参照先:http://mezala.la.coocan.jp/
「バグ修正」というタイトルだと,まるで wforum.cgi の原本にバグがあるみたいな言い方ですね。
作者が見たら気を悪くしない保証はないような。(バグは必ず有るものだとは思いますが……)

それはそうと,「新着記事」って,どうして最新の発言タイトルだけ字が大きい?
(むしろ最新でない発言タイトルの表示が小さすぎて見づらいような……)

11341/11306 CXB00940  としき           表現の問題
( 1) 24/07/07 12:17 11340へのコメント(めざらさん)
参照先:http://toshiki.la.coocan.jp/
> このタイトルだと,まるで wforum.cgi の原本にバグがあるみたいな言い方ですね。

原本にもバグはあって、だから本家でもバージョンアップは行われています。
でも、ここで使っているのはかなり古いバージョンのものですからねぇ。
今後は表現に気をつけましょう、といったところでしょうか。


> それはそうと,「新着記事」って,どうして最新の発言タイトルだけ字が大きい?

管理人が気づいていない、に1票。
実は私も、めざらさんにご指摘いただくまで気づいていませんでした。
というか、環境のせいかもしれませんが、あまり差異を感じないのですよ。
最近、最新以外のタイトルが小さくなったなぁ、とは思いましたが、最新のタイトル
もちょっと小さくなったような気がしたこともあって。
これも表現(というか表示)の問題かな。

11342/11306 CXB00940  としき           konnoさんの入れたバグ修正
( 1) 24/07/07 12:55 11340へのコメント(めざらさん)
参照先:http://toshiki.la.coocan.jp/
> それはそうと,「新着記事」って,どうして最新の発言タイトルだけ字が大きい?

この原因はソースを見ても、ちょっと見にはわからない。
が、ソースをVzで開き、閉じタグにジャンプするマクロで見ていったら、Vzそのもの
が落ちたので、わりと簡単に特定できました。
返信ボタンの前に<font size='2'>っていうのがあるのですが、これが閉じていない。
そもそも、ここでフォントサイズを変更すべきか、というと、おそらく不要。
その後にフォントサイズ最小指定で謎の「soft」という表示があって、これは私の
ようなコードを知っている人には本文の改行関係の書式とわかりますが、だけど一見
のお客様には意味不明の記載なんで、さっぱりと撤去していただくことを希望。
それはさておき、その後もずっと返信ボタンの表示の部分でどんどん<font>タグの
階層が深くなるので、このコードでは、例えば「新着1000」とかを表示させた場合、
古いブラウザなんかだとメモリがたりなくなって表示不可とかブラウザが落ちるとか
いう状況が発生しかねない。
最近のブラウザだって、不具合のあるHTMLをがんばってレンダリングしているだけ、
ということにすぎないわけですけど。

結論としては、不要なコードはどんどん削りましょう。
コードはシンプルなほど不具合は入り込みにくいのですから。


11343/11306 BQO00549  konno            Re^2: wforum.cgi の修正
( 1) 24/07/07 18:40 11340へのコメント(めざらさん)
> このタイトルだと,まるで wforum.cgi の原本にバグがあるみたいな言い方ですね。
> 作者が見たら気を悪くしない保証はないような。(必ず有るものだとは思いますが……)

タイトルから「バグ」を削除修正しました。
管理者権限でめざらさんのコメントのタイトルも修正しました。
記事内容を読めば私の入れたバグだとはわかるとは思うのですが
不快に思う方がいるならばできる範囲で対処は心がけます。

> それはそうと,「新着記事」って,どうして最新の発言タイトルだけ字が大きい?
> (むしろ最新でない発言タイトルの表示が小さすぎて見づらいような……)

弄っていて閉じた愚、じゃない! 閉じタグの辻褄が合わなくなったようです。
とりあえず修正中の版に差し替えました。m(__)m


11344/11306 BQO00549  konno            Re^8: 「新着情報 」ソースは問題だらけ!?
( 1) 24/07/08 00:07 11339へのコメント(としきさん) コメント数:1
> まず、ソースをVzで開くと、なんか変なコントロールコードが入っている。

え? どこでしょうか。

> あるいは、微妙に文字化けしたような半角カナとか。

これはありますね、直します。

> 次、<font size='1'> </font>なんていうのがある。
> 大昔、1x1サイズの画像を使って表示を整えたりしていましたけどね。
> 思い出した私も私ですが、もはや伝説級のいにしえの技術です。
> こういう、現在では恥ずかしいものはやめましょう。

うう、他のやり方を知らないもので。(;_;)

> 一応、個人的な希望としては、各掲示板ごとにちょっと行間を開けてほしいかな。

これは私も思ってはいました。(^^;
色々試してみようと思います。

> 文法的には、各掲示板タイトルの前、すなわち<a>タグの前に<div>を、そして
> </table>のうしろに</div>をつけると、大体いい感じになりそうな気がする。

ちょっとやってみましたが、見た目は全く変わらなかったですね。(^^;

> それから、<tbody>タグ、これ、このページにおいては、必要性がわからない。

これはテーブルのフォントサイズを指定しているので、私的には残したいのです。

> もうひとつ、#11262にも書いた実体参照の問題、これも解決していただくことを希望。

この辺も良くわかってないので、課題一覧表でも作って入れておいた方が良いかも。

> 最後に、トップページにある[大] [中] [小]と[中] [小] [極小]の表記。
> ただ、これ、お客様というか利用者目線でいうと、全く意味不明。
 ・・・中略・・・
> もちろん、利用者置いてけぼり、という選択肢はあり。

これらの機能は私が思い付きで作ることが多いですが、自分が便利だと思うから作るので
便利だと思っているうちは撤去などしません。
ここをこうしたらもっといいんじゃないかというご意見があれば検討いたします。(^^;


11345/11306 CXB00940  としき           Re^9: 「新着情報 」ソースは問題だらけ!?
( 1) 24/07/09 00:44 11344へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> > まず、ソースをVzで開くと、なんか変なコントロールコードが入っている。
> え? どこでしょうか。

konnoさんのところでは見えないとすると、うちの環境依存かもしれません。
また、Vzのデフォルトで青い「^」が見えたのでコントロールコードと書いてしまい
ましたが、よくみたら「^M」なので改行の片割れですね。
mode1=0&wsize=1のソースだと、「VzWiki 23/10/27」の直後のところにひとつと、
「MS-DOS Player 2024/7/6」の直後のところにふたつ見えます。

> > 次、<font size='1'> </font>なんていうのがある。
> うう、他のやり方を知らないもので。(;_;)

そもそも論で、ここ、そんなに小さな文字間は必要ですか?
普通の半角スペースとか&nbsp;で十分だと思うのですよ。
他の掲示板のところではたっぷり空いているわけですし。
そして今回の場合、表示に使われるフォントはMS Gothicを使うように指定している
ようですが、Windows以外の環境の場合、このフォントはインストールされていない
かもしれない。その場合、空白文字が何ピクセルの横幅で表示されるのかは閲覧する
環境によって異なります。結果、空白文字で文字間隔を調整しても、自分のデザイン
通りに見えるのは自分のところだけ、という可能性もあるわけで。
とはいえ、どうしてもやりたいときはCSSの「letter-spacing」というやつを使う
らしい。私は使ったことないけど。なんでもこれは、マイナスの値を指定すれば文字
の間隔をつめることもできるらしい。

> > 文法的には、各掲示板タイトルの前、すなわち<a>タグの前に<div>を、そして
> > </table>のうしろに</div>をつけると、大体いい感じになりそうな気がする。
> ちょっとやってみましたが、見た目は全く変わらなかったですね。(^^;

そう、見た目を変えずに文法合致度を上げるだけの便宜的な方法なんで、HTMLの
考え方を理解していない人が導入しても、なんか違和感だけ。

> > それから、<tbody>タグ、これ、このページにおいては、必要性がわからない。
> これはテーブルのフォントサイズを指定しているので、私的には残したいのです。

そういうことに使っているのなら、いいことだと思います。

> > もうひとつ、#11262にも書いた実体参照の問題、これも解決していただくことを希望。
> この辺も良くわかってないので、課題一覧表でも作って入れておいた方が良いかも。

これ、ブラウザの設定の問題なのかなぁ。
うちのfirefoxだと、何かのページを表示させているときに[CTRL]+[U]をおすと、
そのページのソースが表示されます。そして、各掲示板のリンク先のURLの部分、
まさに私の気になっている部分が赤く表示されたりしているのですよ。
表示のされ方が違うのかなぁ。

> これらの機能は私が思い付きで作ることが多いですが、自分が便利だと思うから作るので
> 便利だと思っているうちは撤去などしません。
> ここをこうしたらもっといいんじゃないかというご意見があれば検討いたします。(^^;

うん、なんかわかった。
たぶん、konnoさんと世間一般の多数派の考え方が単に異なっているだけみたい。
多数派の考え方としては、誰がページにアクセスするかわからないから、潜在顧客を
含めて、多くの人がアクセスしたときに便利なページにしましょう、という考え方。
つまり、いちげんさん優先。
その考え方だと、誰がどんな環境でアクセスするかわからないので、文字のサイズは
サーバ側ではなくクライアント側にお任せしましょう、となる。
一方でkonnoさんの場合、一番アクセス量の多い顕在顧客に最大限のサービスを提供
しましょう、といった感じ。つまり、常連さん優先。
そしてkonnoさんのサイトの場合の最大の常連はkonnoさん自身。
なので、konnoさんに便利なサイト構成を目指すことになる。
あれだ、頑固親父の飲食店、みたいな感じかな。
味だけなら★5つだけど総合評価は★1.5、とか。

実は、この辺、私も悩んだことがあって。
うちの板塀、以前使っていたガラケー専用のコードがあったりしました。
現在使っているガラケーでは使えないコードだから撤去したような気もするけど、
まだ残っていたりして。
でも、こんなもの、私だけは便利だけど一般の利用者に見せる必要はさらさらない。
なのでどうしたかというと、ガラケーのほうのブックマークに、そのオプションが
ついたURLを登録する、という形に落ち着きました。
konnoさんも、ご自身がいろんな環境からアクセスされるから3段階の文字サイズを
設定されておられるのだと思いますが、一般のお客様の側にそれを提示する必要は
全くないというか余計なお世話だというのが世間一般、世界中のコンセンサスな
わけですから、ご自分の端末だけの隠し機能としておくのがよろしいかと思います。


11346/11306 BQO00549  konno            Re^10: 「新着情報 」ソースは問題だらけ!?
( 1) 24/07/09 23:05 11345へのコメント(としきさん) コメント数:1
> konnoさんのところでは見えないとすると、うちの環境依存かもしれません。
> また、Vzのデフォルトで青い「^」が見えたのでコントロールコードと書いてしまい
> ましたが、よくみたら「^M」なので改行の片割れですね。
> mode1=0&wsize=1のソースだと、「VzWiki 23/10/27」の直後のところにひとつと、
> 「MS-DOS Player 2024/7/6」の直後のところにふたつ見えます。

見てみましたがわからないですね。改行だったのかな。

> そもそも論で、ここ、そんなに小さな文字間は必要ですか?
> 普通の半角スペースとか&nbsp;で十分だと思うのですよ。
> 他の掲示板のところではたっぷり空いているわけですし。

うーん、なんだか中途半端な隙間が気になってしまって。(^^;
CSS が使いこなせればそれで出来るのでしょうけど。

> そして今回の場合、表示に使われるフォントはMS Gothicを使うように指定している
> ようですが、Windows以外の環境の場合、このフォントはインストールされていない
> かもしれない。その場合、空白文字が何ピクセルの横幅で表示されるのかは閲覧する
> 環境によって異なります。結果、空白文字で文字間隔を調整しても、自分のデザイン
> 通りに見えるのは自分のところだけ、という可能性もあるわけで。

うーむ、表示に問題が有るという具体的な事例のご指摘があれば見直します。
「font-family:MS Gothic ;」というのを削除してみましたが、変化はわからないですねぇ。

> とはいえ、どうしてもやりたいときはCSSの「letter-spacing」というやつを使う
> らしい。私は使ったことないけど。なんでもこれは、マイナスの値を指定すれば文字
> の間隔をつめることもできるらしい。

「letter-spacing」の説明では、「文字間の隙間を指定します。」とありました。
私がやりたいのはどちらかといえば、単語間のスペースなのです。
「単語間の隙間を指定するには word-spacing を参照してください。」とありましたが
「現時点ではまだあまりサポートされていないようです。」ということなので諦めます。

> うちのfirefoxだと、何かのページを表示させているときに[CTRL]+[U]をおすと、
> そのページのソースが表示されます。そして、各掲示板のリンク先のURLの部分、
> まさに私の気になっている部分が赤く表示されたりしているのですよ。

あ、ほんとだ、「&amp;」が赤く表示されていますね。
これは、「&」が変換されてこうなるようですが、元データからの削除漏れかなぁ。
&amp; を & に変換してみたら、赤字表示は無くなりました。

> あれだ、頑固親父の飲食店、みたいな感じかな。

なるほど、自分でもそう思いますね。(^^;

> konnoさんも、ご自身がいろんな環境からアクセスされるから3段階の文字サイズを
> 設定されておられるのだと思いますが、一般のお客様の側にそれを提示する必要は
> 全くないというか余計なお世話だというのが世間一般、世界中のコンセンサスな
> わけですから、ご自分の端末だけの隠し機能としておくのがよろしいかと思います。

私の場合隠しておくのがもったいないと思ってしまうんですね。(^^;
スマホで掲示板を見てみたらとんでもない表示で、こりゃ使いづらいわ。(^^;
PCとは全く違う見え方なんですね。さて、どうしたものか。(^^;


11347/11306 CXB00940  としき           Re^11: 「新着情報 」ソースは問題だらけ!?
( 1) 24/07/09 23:45 11346へのコメント(konnoさん) コメント数:2
参照先:http://toshiki.la.coocan.jp/
> 見てみましたがわからないですね。改行だったのかな。

Vzで見てもわからないということは、元のソースからして違っているのか、それとも
Vzの側の設定の問題なのか。

> うーむ、表示に問題が有るという具体的な事例のご指摘があれば見直します。

多分、認識できるほどの問題にはならないと私は思います。
だって、文字間が半角1文字か1.1文字かって、見る側はあまり気にしない。
そして、そういう、一般の人が気にしないようなコードを書いているのがkonnoさん。
さらに、そういう、どうでもいいようなことをあげつらっているのがとしき。
#おや、天からつばが・・・

あと、ブラウザの挙動がわかっていないのですが、ページの側にフォントの指定が
ない場合のブラウザのデフォルトで「MS Gothic」をつかっています、とか、OS
に入っているのは「MS Gothic」ではなく「MS ゴシック」でした、なんてこと
だったりすると

> 「font-family:MS Gothic ;」というのを削除してみましたが、変化はわからないですねぇ。

こういう挙動になるような気がする。

> 私の場合隠しておくのがもったいないと思ってしまうんですね。(^^;

それはよろしくない傾向。
不必要な情報というのは、閲覧者の側からすると、単に迷惑千万。

> スマホで掲示板を見てみたらとんでもない表示で、こりゃ使いづらいわ。(^^;

あと、スマホが縦の場合と横の場合も考慮したほうがいいわけです。
結構面倒な話だなぁ。


11348/11306 DGF01024  めざら           スマートフォン横向きとフレーム
( 1) 24/07/12 07:21 11347へのコメント(としきさん) コメント数:2
参照先:http://mezala.la.coocan.jp/
> あと、スマホが縦の場合と横の場合も考慮したほうがいいわけです。

スマートフォンで掲示板を見る場合って,たいてい幅が収まらないから当然横向きですね。

板塀はフレームを切っているため,PCで読む場合はフレームの枠をギュッギュッと上端へ
持っていけるのですが,スマホのブラウザってその機能がないのか別の方法があるのか,
画面の半ばを越えるフレーム枠を動かすことができず,本文が数行しか表示できません。

こちらで言うことでもないのですが,この流れでこの場をお借りして訴えます。

フレームあると(動かせないと)読みづらいです。

掲示板にアクセスするための URI を一意とするためフレームが必要と仄聞しましたが,
表示領域を調整するなどの工夫をしていただけると有り難いなぁ……と思います。

> 結構面倒な話だなぁ。

まことに。

11349/11306 BQO00549  konno            「新着情報 」 v0.945 更新
( 1) 24/07/12 19:44 11347へのコメント(としきさん) コメント数:1
> > スマホで掲示板を見てみたらとんでもない表示で、こりゃ使いづらいわ。(^^;

とりあえずトップページと、新着情報のページはスマホでの見栄えを少しだけ改善しました。

新着情報のページでは、「新着情報」をリンクにしてクリックするたびに「携帯版」とトグルにしました。


11350/11306 BQO00549  konno            Re: スマートフォン横向きとフレーム
( 1) 24/07/12 19:59 11348へのコメント(めざらさん)
> フレームあると(動かせないと)読みづらいです。
>
> 掲示板にアクセスするための URI を一意とするためフレームが必要と仄聞しましたが,
> 表示領域を調整するなどの工夫をしていただけると有り難いなぁ……と思います。

見てみたらほんとにフレームが動かせない! (>_<)
スマホでこの界隈を見るのって、出先で更新のチェックが多いと思うんですが
せめて新着記事くらいは読めるようにしたいですね。
うちの所も今は酷い表示なので、これから見直してみます。


11351/11306 BQO00549  konno            「新着情報 」 v0.946 更新
( 1) 24/07/12 22:23 11349へのコメント(konnoさん) コメント数:1
テーブル内の文字が小さくなるのを防ぐ方法を見つけたので実装しました。

-----------------------------------------------------------
「描画に使う横幅」を、「画面の横幅」と同じにする方法

<meta name="viewport" content="width=device-width">

上記のように「width=device-width」と記述すると、「描画領域がその端末の実際の横幅」であるとして描画されます。その結果、縮小の必要がなくなるため、自動縮小はされません。
-----------------------------------------------------------

色々あちこち探したのですが、これが一番求めるものに近かったです。
これで縦画面でも横スクロールせずに全部見ることができます。\(^^)/ ヤッタ-

ついでに「新着情報携帯版」のリンクの色も赤に変えました。



11352/11306 CXB00940  としき           Re: スマートフォン横向きとフレーム
( 1) 24/07/13 11:14 11348へのコメント(めざらさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> こちらで言うことでもないのですが,この流れでこの場をお借りして訴えます。

うぅん、新しいことに対応できていない弊害が顕在化していますね。
自分自身がスマホを持っていないこともあって、改善のトリガが全くなかった、と
いうのもあります。
ただ、ご意見をいただいたので、何とか近日中にフレーム化を解除しましょう。
といいつつ、やるやる詐欺で数年放置した、ということもありそうですが、ガラケー
のサービス停止に伴う私自身のスマホ導入も見えてきているわけですから、そんなに
お待たせせずに改善できると思います。


11353/11306 BQO00549  konno            Re^2: スマートフォン横向きとフレーム
( 1) 24/07/14 00:13 11352へのコメント(としきさん)
> ただ、ご意見をいただいたので、何とか近日中にフレーム化を解除しましょう。

おお、いよいよ外骨格と言う名の拘束具を外す時が来たのですね。わくわく
最初の実験機と思しいので、零号機となりますかね。(^^;

# 零号機なら暴走しても使途には・・・以下自粛。(^^;


11354/11306 DGF01024  めざら           Re: 「新着情報 」 v0.946 更新
( 1) 24/07/15 13:15 11351へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
あまりご興味はないかと思いますので,独り言みたいなものです。

body直下に置かれ,おそらくbody全体に敷かれていると思われる div のスタイル属性ですが,
<div style="margin-left:0px; width:80%; padding:0em;">
ここで width:80% を指定しているため,無意味な余白ができています。
縦表示の携帯端末では非常に影響が大きいので指定は害でしかありません。
せっかく viewport を指定しているのに,おじゃんです。
(PCのブラウザでも拡大率を数百%にしてみるとわかります)

(以下蛇足)
また,どこかの野良サイトから拾ってきたかと思われるものですが,
style要素で指定した以下のクラスは意味がないと思われます。
.d1	存在しないので不要
.tbody	存在しないので不要(tbody要素にしたいなら先頭のドットは不要)
.num	存在しないので不要
.obi	存在しないので不要
.m	存在しないので不要
.ruler	存在しないので不要
.cuter	存在しないので不要
_:lang(x)::-moz-placeholder, .selector {font-size:-2;}	無意味


なお,文字サイズを指定したいから tbody が必要とのことでしたが,
それこそ CSS で一発指定すれば CGI での無駄な出力は必要ありませんし,
なんなら <tbody style='font-size:100%'> という指定に意味はないでしょう。
そもそも thead と tfoot がないわけですから tbody は本来不要(省略可能)であり,
文字サイズは table に対して指定してやればよいことだと思われます。


11355/11306 BQO00549  konno            Re^2: 「新着情報 」 v0.947 更新
( 1) 24/07/15 19:51 11354へのコメント(めざらさん) コメント数:2
> body直下に置かれ,おそらくbody全体に敷かれていると思われる div のスタイル属性ですが,
> <div style="margin-left:0px; width:80%; padding:0em;">
> ここで width:80% を指定しているため,無意味な余白ができています。
> 縦表示の携帯端末では非常に影響が大きいので指定は害でしかありません。
> せっかく viewport を指定しているのに,おじゃんです。
> (PCのブラウザでも拡大率を数百%にしてみるとわかります)

ああ、そうだったんですか、知りませんでした。 width:100% にするとおかしくなるもので
そこで諦めていました。直したらバッチリ100%で表示出来ました。\(^^)/ ヤッタ- 
ありがとうございます。m(__)m

> また,どこかの野良サイトから拾ってきたかと思われるものですが,
> style要素で指定した以下のクラスは意味がないと思われます。

これも全部削除しました。

> なお,文字サイズを指定したいから tbody が必要とのことでしたが,
> それこそ CSS で一発指定すれば CGI での無駄な出力は必要ありませんし,
> なんなら <tbody style='font-size:100%'> という指定に意味はないでしょう。
> そもそも thead と tfoot がないわけですから tbody は本来不要(省略可能)であり,
> 文字サイズは table に対して指定してやればよいことだと思われます。

これも全部削除しました。
テーブルの折り返しを防ぐため、CSS に

	if ($mode2 == 1) { 
		print ".s1 {  font-size:small;   
	    white-space: nowrap;
		} \n";
	} else {
		print ".s1 {  font-size: medium; 
	    white-space: nowrap;
		} \n";
	}

これを仕込んで、TD に使ったらいい感じになりました。
「発言者」の枠が折り返してしまったので、

	print ".s2 {  font-size: medium; 
	    white-space: nowrap;
	} \n";

これも TH に仕込みました。
これで私個人としては満足のいく見栄えになりました。
ありがとうございました。m(__)m


11356/11306 BQO00549  konno            「新着情報 」 v0.948 更新
( 1) 24/07/16 23:51 11355へのコメント(konnoさん)
「新着情報 」 v0.948 に更新しました。

スマホを全画面に表示する CSS のメタコマンド

print "<meta name=\"viewport\" content=\"width=device-width\">\n";

これだと掲示板でおかしくなるので

print "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n";

これに差し替えました。これが一番良いそうです。(^_^)

あと、大画面では中央寄りに表示したかったので

body{
    width: 100%;
    max-width: 768px;
    margin: auto;
}

これを CSSに入れたら良い感じになりました。
画面幅に応じて左のマージンを自動調節してくれます。(^_^)


11357/11306 CXB00940  としき           Re^3: 「新着情報 」 v0.947 更新
( 1) 24/07/16 23:59 11355へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> > また,どこかの野良サイトから拾ってきたかと思われるものですが,
> > style要素で指定した以下のクラスは意味がないと思われます。
> これも全部削除しました。

ほんとに削除してしまってよかったんですか?
いや、konnoさん、望む見栄えがあったからこれを導入したんですよね。
ないと思いますが、意味もわからず導入した、ということなら、それはやめたほうが
いいと思う。あるいは、めざらさんのご指摘、きちんと理解した上で採用しています
よね?


ところで、本来なら新しいツリーを起こすのが筋なんでしょうが、ものすごく些細な
ことなんで、こちらに書かせていただきます。
単なる誤字の指摘なんでね。

さて、こちらの掲示板にも、さまざまなスタイルの指定を行われているようです。
そこで気がついたのですが、新着記事、すなわちmode=newsortのところ。
トップに[新着50]というリンクがありますが、これをクリックすると表示されるのは
「新着記事 40」だったりします。
どこかにミスタイプがあるので、修正して頂けると幸いです。


11358/11306 BQO00549  konno            掲示板もスマホ対応に更新
( 1) 24/07/17 00:11 11317へのコメント(konnoさん)
掲示板もスマホ対応に更新しました。

「新着情報」では問題なかった、スマホを全画面に表示する CSS のメタコマンド

print "<meta name=\"viewport\" content=\"width=device-width\">\n";

これだと掲示板の表示がスマホで全画面表示しないので迷走してました。(>_<)

print "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n";

これに差し替えたら全画面になったので、これが一番良いようです。(^_^)

あと、大画面では中央寄りに表示したかったので

body{
    width: 100%;
    max-width: 1028px; /* ツリー画面 */
    margin: auto;
}

    max-width: 1000px; /* 記事表示画面 */

これを CSSに入れたら良い感じになりました。
画面幅に応じて左のマージンを自動調節してくれます。(^_^)
うまく表示するまで地獄のような迷走してました。(;_;)


11359/11306 BQO00549  konno            Re^4: 「新着情報 」 v0.947 更新
( 1) 24/07/17 00:35 11357へのコメント(としきさん)
> ほんとに削除してしまってよかったんですか?
> いや、konnoさん、望む見栄えがあったからこれを導入したんですよね。
> ないと思いますが、意味もわからず導入した、ということなら、それはやめたほうが
> いいと思う。あるいは、めざらさんのご指摘、きちんと理解した上で採用しています
> よね?

意味もわからず導入した、というのが真相です。(^^;
削除して辻褄が合わなくなっても大抵はブラウザがよきにはからってくれるので。(^^;

> さて、こちらの掲示板にも、さまざまなスタイルの指定を行われているようです。
> そこで気がついたのですが、新着記事、すなわちmode=newsortのところ。
> トップに[新着50]というリンクがありますが、これをクリックすると表示されるのは
> 「新着記事 40」だったりします。
> どこかにミスタイプがあるので、修正して頂けると幸いです。

バグを見つけてくださりありがとうございます。m(__)m
これは頭がバグっていたようです。(>_<)
繰り返しの記事数を、引数の page で指定して、

$sortcnt1=$in{'page'};

ここで記事数に変換しているのですが、バグっていたのはリンク部分でした。(>_<)

[<a href="$script?mode=newsort&fsize=$fsize&page=40$mode3">新着50</a>] 

ここですね。以前は40だったのを50に変えたつもりが、pageを変えるのを忘れていたのです。(>_<)
丁度更新したばかりなので、差し替えて置きました。m(__)m


11360/11360 BQO00549  konno            STIME.EXE Ver 240717
( 1) 24/07/17 23:58
STIME.EXE Ver 240717 更新しました。
自作、改作アプリの部屋に置いてあります。

・DOSVAXJ3 の VGAで動くアナログ時計とカレンダとタイマーのアクセサリです。
・NCPATH= でデータファイルの置き場所を指定してください。末尾に "\" が無ければ追加します。

・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、STIME.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにします。文字のデジタル時計とカレンダのみ表示。
・VTDOS では動作しません。
・タイマーモード(6)の時は[F03]や[←]キーで小窓のカレンダー当月を表示します。
・ビジブルベルは[F06]だけの機能です。STIME.DAT で動作設定します。[ESC]でカラー表示消去。

STIME6 24-07-17
 240717 表示関係などの諸々の修正、干支の表示
STIME5 24-04-28
 240428 タイマーモード(6)の時は[F03]や[←]キーで小窓のカレンダー当月を表示。
 240315 指定時間経過でビジブルベル タイマー画面復帰
 240306 アナログ時計にタイマーのマーキング 設定ファイル STIME.DAT で各種設定可能に
 240202 タイマーの時間表示文字を大きく・経過時間をリアル表示、スリープモードにも対応。
STIME4 23-12-12
 231212 NCPATH が通ってなくてデータファイル読めない場合エラー終了していたのを警告表示に。
 231208 環境変数 NCPATH でデータファイルの置き場所を指定。指定無しならカレント
 春分、秋分の日を自動計算
 デジタル時計とカレンダ大の文字を2バイト文字に。
 [↑↓]キーで前年・次年 [←→]キーで前月・次月のカレンダーを表示
STIME3 23-11-24
 新祝日法に対応したつもり。Emmettさんとめざらさんに感謝。
 見栄えも多少直しました。
 カレンダー大の日付の文字を2バイト数字にして見やすく。
 キーによるカレンダーの年月変更機能追加。
 MSDOS Player でもカレンダー表示出来ます(chej jpの時)
 ソースも付けます。

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


11361/11226 BQO00549  konno            J3VT.COM  VTDOS対応常駐プログラム
( 1) 24/07/19 22:45 11226へのコメント(konnoさん)
VTDOS で J31BASICコンパイラプログラムを問題なく動作させる常駐プログラム
J3VT.COM が出来ました。
以下、J3VT.DOC から

J31 BASIC BIOS VTDOS SUPPOT Ver0.03 by H/konno 2024-07-19


J3VT.COM VTDOS で J31BASICコンパイラプログラムを問題なく動作させる常駐プログラム

J31BASICコンパイラの実行ファイルを VTDOS で実行させると、大量のエラーログが発生します。
このプログラムは、エラーになる割り込みを横取りして問題なく実行させる常駐プログラムです。


・エラーログが発生する割り込み
INT10h ah,85h ディスプレイ割り込み、大量に発生する
INT10h ah,88h
INT10h ax,0012h
INT16h ah,f6h キーボード割り込み
INT16h ah,050h
INT16h ah,01ch
INT16h ah,020h
INT6Fh ATOK5割り込み

これらの割り込みを横取りしてなかったことにします。
INT6Fh は ax,00ffh でリターンさせて、J31コンパイラで常駐チェックに使っています。
公開プログラムには、J3VT が常駐していなければメッセージを出して終了させるルーチンを入れます。


・使い方

J3VT 実行するたびに常駐/解除します。BAT の中でJ31プログラムの前後に使います。
J3VT S Sオプションで常駐すると解除されない。VZ常駐前に常駐させるオプションです。
J3VT R Rオプションで Sオプションの常駐でも常駐解除します。

※ J31BASICコンパイラのプログラムでは、VRAM アドレスに A0000 〜 AFFFF を使用します。
  VTDOS の設定で、TPAEXT=1 の場合、A0000 〜 AFFFF を空きメモリ領域とするのでメモリ競合が起こります。
  競合は他のプログラムでも起こりうるので、必ず TPAEXT=0 又は無指定にしてください。

使用して何か問題が有った場合掲示板で報告いただければできる範囲で対応します。


・ソースについて
ソースの常駐/解除ルーチンは4本以上の複数のソースを参考にしたので公開しても問題ないかと。
問題が有れば削除します。


11362/11250 BQO00549  konno            DOSBox-X PC-98x1関連設定項目
( 1) 24/07/19 23:30 11250へのコメント(konnoさん)
軟式さんのサイトの DOSVAXJ3のページ
https://www.nanshiki.co.jp/software/dosvaxj3.html

見直してみたら、DOSBox-X の PC-98x1関連設定項目補足がありました。

-----------------------------------------------------------
 日本語関連の処理は DOSBox-X に移植されましたが、DOSVAXJ3 とは設定や一部コマンドが異なります。
 違いを DOSVAXJ3とDOSBox-Xの日本語関係の設定の相違点一覧 にまとめました。

 おまけ DOSBox-X PC-98x1関連設定項目補足

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

DOSBox-X の設定はわかりにくいので、参考になります。
ありがたいです。


11363/11363 BQO00549  konno            STIMEJ.EXE Ver 240720
( 1) 24/07/20 21:30
STIMEJ.EXE Ver 240720 J31BASICコンパイラ版です。
自作、改作アプリの部屋に置きました。

・DOSエミュ3種4モードで動くアナログ時計とカレンダとタイマーのアクセサリです。
・NCPATH= でデータファイルの置き場所を指定してください。末尾に "\" が無ければ追加します。

・DOSVAXJ3 は、どのモードでも起動して VGAモードになります。J3100 モードでも動作します。
・MS-DOS Player では起動すると80*25モードになります。時計は文字のデジタル時計となります。
・VTDOS では、J3VT.COM が常駐していないとメッセージを出して終了します。
 J3VT.COM をPAYHの通ったところに置いて J3VT S でVZ常駐前に常駐させるか、TMJ.BAT で実行させます。
 VTDOS の設定で TPAEXT=1 の場合、A0000 〜 AFFFF を空きメモリ領域とするのでメモリ競合が起こります。
 競合は他のプログラムでも起こりうるので、必ず TPAEXT=0 又は無指定にしてください。

・タイマーモード(6)の時は[F03]や[←]キーで小窓のカレンダー当月を表示します。
・ビジブルベルは[F06]だけの機能です。STIME.DAT で動作設定します。[ESC]でカラー表示消去。

・更新履歴
240720 表示関係などの修正
240717 表示関係などの諸々の修正、干支の表示
240428 タイマーモード(6)の時は[F03]や[←]キーで小窓のカレンダー当月を表示。
240423 J31BASICコンパイラに逆移植

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


11364/11364 BQO00549  konno            「新着情報 」 v0.950 更新
( 1) 24/08/03 21:32 コメント数:1
「新着情報 」 v0.950 更新しました。
としきさんの掲示板、「やしきの板塀」がスマホ対応のため非フレーム化しました。
それに伴ってURLが直リンクになったので、新着情報も更新しました。

直リンクだと URL が変化することがあるので、変わったことに気が付いたら
教えて頂ければ幸いです。

その他修正漏れなどの不備をいくつか直しました。


11365/11365 BQO00549  konno            FGALDC kVZ誕生秘話 完全版
( 1) 24/08/03 23:19 コメント数:2
#11285 のツリーで暫定公開していましたが、正式に公開しました。
niftyのFGALDC会議室の自分の発言を掲示板のツリー形式で表示させます。
他の皆さんの発言も、私の元発言に対する引用という形で掲載しました。

 FGALDC VZ改造秘話
http://tamaneko.world.coocan.jp/bbs/bbs6/wforum.cgi


VZK誕生の改造秘話とか、ここの常連さんにはわかりきった話ですが、
少しは需要があるだろうと思います。
また、私の自伝的な意味合いもあります。
名前やIDなどの個人情報や引用符などは修正しています。

私の発言が主体ですが、他の方の発言も引用というていで載せました。
それはまずいよとか、載せないでなどの意見があればメールでお願いします。
削除など検討します。
ご意見、ご感想をお待ちしています。(^_^)

※ 20226 からのツリーが大きすぎて非常に苦労しました。
147発言のツリーなんて邪悪を超えてるって! (-_-メ)
特に一括表示のツリーは半分しか表示しないバグが発覚!
まだ不完全ですが、暫定的なツリーとします。(^^;

あじゃさんの nif_tree.def を改造したり、複数のマクロでやっと形にしました。
あじゃさんの苦労の一端がわかった気がします。(^^;

これからも続きを随時上げていきますので、表示の不具合などありましたら
教えてください。


11366/11285 CXB00940  としき           Re^9: FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/08/04 10:47 11297へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
#11365でこちらのツリーが言及されていたので思い出しました。

> これを試したらキチンと結果が出ました。\(^^)/ ヤッタ-
> ・・・私が欲しかったのはこの逆の変換でした。(;_;)

手元のバージョンのmawk32ではできなかったのですが、もしかしたら新しいバージョン
ならできるかもしれません。とりあえずgawkではできました。

= tmp
*m
89 ^\ "" #E "gawk $"BEGIN{print mktime($"$"$"2024 08 04 10 10 10$"$"$")}" #m
*

どうもgawkはシングルクォートを受け付けてくれないみたい。
うちの環境だけかな。


11367/11285 BQO00549  konno            Re^10: FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/08/04 19:12 11366へのコメント(としきさん) コメント数:1
> #11365でこちらのツリーが言及されていたので思い出しました。

新規スレにしてしまったので、申し訳ないです。
こちらのスレはまだ暫定的な話だったもので。

> > ・・・私が欲しかったのはこの逆の変換でした。(;_;)
> 手元のバージョンのmawk32ではできなかったのですが、もしかしたら新しいバージョン
> ならできるかもしれません。とりあえずgawkではできました。

おお、と思って試してみましたが、どちらでも動きません。(>_<)

Vector から gawk 3.1.5 for Windows を落として、gawk32 とリネームして試したら

gawk32 "BEGIN{print mktime("""2024 08 04 10 10 10""")}
1722733810

おお、出来たぁ!  \(^^)/ ヤッタ-

もしかして、としきさんの持ってるのはこれですか?


11368/11365 CRG00666  文太             Re: FGALDC kVZ誕生秘話 完全版
( 1) 24/08/04 21:17 11365へのコメント(konnoさん) コメント数:1
konnoさん

 ご無沙汰しております。
 いやぁ〜〜、暑い、暑い。

 さて、このログ復刻なのですが、僕個人は構わないのですが、
えと、ここにいない人とかのハンドルとかは、せめて伏字とか化けさせるとか、
したほうがいいのじゃないでしょうか。
 誰も何も言わないとは思うのですが、やっぱりあれは閉鎖性が保証された場所
でのやり取りですから。厳密にいうと、「著作権侵害」ということになるのでは
なかろうかと。たしかとしきさんの「地下処分」書庫(ちがうな)では、けっこう
その点、配慮されていたような記憶ですが、、、。

 うん、僕の発言は、全部「文太」→「Mr.B」と置換してくださると嬉しいです。
(サンプルです)

 あと3週間して、少し部屋や頭や心の整理がついたら、近況報告したします。
 4日連続でプールに行きました!(健康管理が目的)。



11369/11365 BQO00549  konno            Re^2: FGALDC kVZ誕生秘話 完全版
( 1) 24/08/04 23:55 11368へのコメント(文太さん) コメント数:2
文太さん、お元気そうで何よりです。(^_^)

>  さて、このログ復刻なのですが、僕個人は構わないのですが、
> えと、ここにいない人とかのハンドルとかは、せめて伏字とか化けさせるとか、
> したほうがいいのじゃないでしょうか。
>  誰も何も言わないとは思うのですが、やっぱりあれは閉鎖性が保証された場所
> でのやり取りですから。厳密にいうと、「著作権侵害」ということになるのでは
> なかろうかと。たしかとしきさんの「地下処分」書庫(ちがうな)では、けっこう
> その点、配慮されていたような記憶ですが、、、。

厳密にいえばそうでしょうし、不快に思われる方もいるかもしれません。
私が元発言なら引用と言う形で他の方の発言も大丈夫かと思いました。
もちろん ID は関係ないめざら方式に変えてあります。
私が元でない発言も上げるつもりでいましたが、そこは見直します。

某所では外部に公開していない本名までさらされて、流石に不味いのではと思ったのですが
特に(私も含めて)クレームも無さそうなので、覚悟を決めてやられているならいいかと
そう思うようになりました。

>  うん、僕の発言は、全部「文太」→「Mr.B」と置換してくださると嬉しいです。
> (サンプルです)

これは直しますね。
でもFGADCの発言記事は今までも結構引用しているので手遅れかも。(^^;
他の方のも見直してみます。

追記
IDが表示されている部分が有りましたね、ごめんなさいです。
直ぐに直します。m(__)m



11370/11365 CXB00940  としき           Re^3: FGALDC kVZ誕生秘話 完全版
( 1) 24/08/05 00:48 11369へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
暑さのせいか、文太さんやkonnoさんのおっしゃっていることが、私にはよく理解
できていない模様。

> >  誰も何も言わないとは思うのですが、やっぱりあれは閉鎖性が保証された場所
> > でのやり取りですから。厳密にいうと、「著作権侵害」ということになるのでは

文太さんのご懸念は理解できます。
でも、フォーラム閉鎖直前に、自分の発言のネットへの転載可と表明された方も数人
いらっしゃったわけです。そういった方々の発言は、その後の取り消し連絡がない
限りは公開してもいいのではないかなぁと愚考する次第。

> 私が元発言なら引用と言う形で他の方の発言も大丈夫かと思いました。

私が誤解している可能性が高い、という前提の上で言わせていただくと、元発言と
いうのがルートの発言という意味に取ると、このkonnoさんの記述は正しくない。
各発言ごとに発言者の著作権が発生するので、無断使用に該当する可能性がある。
一方で、引用の要件を満たしているという条件の下、konnoさんの各個別発言の中で
他者の発言は引用していても問題ない、ということになっています。

あと、確認しておきたいのが、ルートの発言の発言者は誰か、というのは引用用件
には全く影響しない、ということ。ここが私には、konnoさんが誤解をされている
ように思えてなりません。

> 某所では外部に公開していない本名までさらされて、流石に不味いのではと

見る人がみればわかってしまう、というやつですね。
特に、英雄的な行いをした人なんかは特に。
だって、もともとのログがそうなっているから、とか言い訳はあるかも知れず。
IDの記載がなければ厳密な突き合せは不可能、という言い訳もできるかも。
#だから、某所ってどこだよ(すっとぼけ)

この辺、管理者の責任において大胆に、かつ全面的に改ざんする、というやり方も
あるでしょう。
一方で、例えば私のところの地層処分センターの場合は、基本的に私の発言だけを
収容しているわけで、ここはどんなに改ざんしても私の著作権の範囲内だけなので
無問題。一方で、私の発言にて引用されている部分は、発言者に対するリスペクト
とか敬意とか法的安全性とかの面から、一切手をつけていません。もしその部分で
クレームがつくようなら、元発言者に言ってくれ、といって蹴っ飛ばす方向。
とはいえ、それではすまないような問題が発生するなら、私の発言ごとまるっと
削除するしかないのだろうなぁ。
そもそもが、地層処分なんて、高いレベルで危険な廃棄物の処分方法。
処分されているものが危険でないわけがない。


11371/11365 CRG00666  文太             Re^3: FGALDC kVZ誕生秘話 完全版
( 1) 24/08/05 00:52 11369へのコメント(konnoさん) コメント数:1
konnoさん

>某所では外部に公開していない本名までさらされて、流石に不味いのではと
>思ったのですが特に(私も含めて)クレームも無さそうなので、覚悟を決めて
>やられているならいいかとそう思うようになりました。

 これは本質的に違うと思います。あちらは名誉を顕彰しているのです。
 そして、作品の発表です。作品として公表したら、ベクターでもVCでも
配布してくれ、です。ま、ish部屋のは、まあまあ、ですが。

 「その気持ちは嬉しいのだけど、でも、、、」という人にはいつでも書き換え
ます、という覚悟がある。そこまで、Vzとの思い出に重いものを感じられて
くださっているなら、と。

 出発点が、konnoさんの場合、根本的に違うと思いますよ。
 過去ログをデータみたいに扱われて、正直いうと、「何だよ、これ?」と
思いました。Mr.W, Mr,S, Mr.E, Mr.J とか、どうでしょう?

 きつくてごめんなさい。
 そのうち、ベーシックが(僕は、完全、MS に取り巻かれてますが)、云々と
復活するつもりでいます。
 お許しいただければ。



11372/11285 CXB00940  としき           Re^11: FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/08/05 00:53 11367へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> もしかして、としきさんの持ってるのはこれですか?

多分、それでしょう。

D:\>gawk --version
GNU Awk 3.1.5 build date Feb 10 2006
Copyright (C) 1989, 1991-2005 Free Software Foundation.

D:\>mawk32 -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
Microsoft C/C++ _MSC_VER 1100
Adaptation for MBCS (P. yedoensis R27) by KIMURA Koichi

こんな感じ。


11373/11365 BQO00549  konno            Re^4: 頭文字Bプラン
( 1) 24/08/05 19:45 11370へのコメント(としきさん)
> でも、フォーラム閉鎖直前に、自分の発言のネットへの転載可と表明された方も数人
> いらっしゃったわけです。そういった方々の発言は、その後の取り消し連絡がない
> 限りは公開してもいいのではないかなぁと愚考する次第。

この考え方で行こうと思います。
転載可と表明された方は 14人のようです。
一方私の元発言のツリーでレスしている人は、今のところ 9人で
そのうち 5人は表明されていないので、とりあえずこの 5人はイニシャルにしてみます。
プランB ということで。(^^;

> あと、確認しておきたいのが、ルートの発言の発言者は誰か、というのは引用用件
> には全く影響しない、ということ。ここが私には、konnoさんが誤解をされている
> ように思えてなりません。

多分に誤解しているとは思いますので、引用云々は言い訳に使えれば程度に考えていました。
「kVZ誕生秘話」というテーマからして、私一人では何もできなかった。
一期一会というか
袖すりあうも多生の縁というか
縁あって皆さんと出会い、いっしょに何かを成し遂げたという思い
感謝の思いから、出来るだけ皆さんの発言も掲載したかったというのは本音です。

> だって、もともとのログがそうなっているから、とか言い訳はあるかも知れず。
> IDの記載がなければ厳密な突き合せは不可能、という言い訳もできるかも。
> #だから、某所ってどこだよ(すっとぼけ)

某所って複数あるようですね。(^^;
確かに私が世間知らずで迂闊だったというのは否定出来ませんが。(^^;

> 一方で、例えば私のところの地層処分センターの場合は、基本的に私の発言だけを
> 収容しているわけで、ここはどんなに改ざんしても私の著作権の範囲内だけなので
> 無問題。

これはうまいやり方だなぁ、と感心した覚えが有ります。
今回の件は無謀な試みだとは思いますが、私はどうしても皆さんの発言も掲載したかったので
批判があるのは覚悟の上のつもりでしたが、いざ言われるとビビってしまうヘタレです。


11374/11365 BQO00549  konno            Re^4: FGALDC kVZ誕生秘話 完全版
( 1) 24/08/05 19:48 11371へのコメント(文太さん) コメント数:1
文太さん

>  過去ログをデータみたいに扱われて、正直いうと、「何だよ、これ?」と
> 思いました。Mr.W, Mr,S, Mr.E, Mr.J とか、どうでしょう?

私としてはそんなつもりではなかったのですが、そう思われても仕方がないですね。
「kVZ誕生秘話」は皆さんと共に作り上げたという思いを掲載したつもりでした。
としきさんあてに書きましたが、転載可の人はそのままで他はイニシャルにします。

>  きつくてごめんなさい。

いえいえ、忌憚ないご意見ありがとうございます。

>  そのうち、ベーシックが(僕は、完全、MS に取り巻かれてますが)、云々と
> 復活するつもりでいます。

お待ちしています。(^_^)


11375/11285 BQO00549  konno            Re^12: FGALDC会議室の過去ログ KVZ誕生秘話
( 1) 24/08/05 20:12 11372へのコメント(としきさん)
> 多分、それでしょう。
> 
> D:\>gawk --version
> GNU Awk 3.1.5 build date Feb 10 2006
> Copyright (C) 1989, 1991-2005 Free Software Foundation.

C:>gawk32 --version
GNU Awk 3.1.5
Copyright (C) 1989, 1991-2005 Free Software Foundation.

Vectorにあるものは同じバージョンですが若干古いようですね。
2005/12/23  00:24           446,464 gawk.exe
これは日本語化したもののようです。
今まで16ビット版を使っていたのでした。
今後はこれを使うようにします。

> D:\>mawk32 -W version
> mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
> Microsoft C/C++ _MSC_VER 1100
>   Adaptation for MBCS (P. yedoensis R27) by KIMURA Koichi

C:>mawk32 -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
  Adaptation for MBCS (P. yedoensis R27) by KIMURA Koichi

これもメッセージが微妙に違うけど、日本語化なのかな。


11376/11365 CRG00666  文太             Re^5: FGALDC kVZ誕生秘話 完全版
( 1) 24/08/05 20:54 11374へのコメント(konnoさん) コメント数:1
konnoさん

>「kVZ誕生秘話」は皆さんと共に作り上げたという思いを掲載したつもりでした。
 意図はもちろん了解しています。

>>  きつくてごめんなさい。
>いえいえ、忌憚ないご意見ありがとうございます。
 すいません、いわば突然に。
 この半年ぐらい(?)、週1ぐらいでは、ここも見てたのかな。それで、どんな
展開になるのかな? と期待して見ていました。

 そっちも(すら)、手が動かなくて嫌になりますが、主にPCオーディオとかに
現在、薄い興味を持っています。クラシックですが、今でもCDをばかばか買います。
が、パブリックドメインの音源(歴史的優秀録音)というものがあり−−カラヤン
初期を含む−−、音楽もファイルの時代かな、と。ゆくゆくはリナックス系になり
そうですけれど。vi or emacs。

http://flac.aki.gs/bony/
 TinyCoreまで行ってしまったら、もうVzとは関係ないでしょうね。
 (このサイトの管理者いわく:S-JISが癌じゃぁ〜〜とのこと。)

 16bit 素ドスの世界を手放すつもりはまったくありませんけどね。パーソナルな
データ管理で、これに叶うものなし。ネットワークが(その欠如が)癌になるけど。

 もう一つの(私的)ニュース。VTDOS環境のVzファイラは、長〜いLFNでは
使い物にならん、ということで、バッチファイルでフィアラ代わりをさせる方法と、
素直なWindows LFNファイラ(DF?)の方法を試しています。

 ディレクトリで整理はしていますが、こんなファイル名に(ほぼ自動的に)なって
しまう世界なので。6TBのHDDx2!

E:\Beethoven\PCon\5\Rubinstein_Leinsdorf_63\Beethoven_pc5_1_Rubinstein_Leinsdorf_63.flac



11377/11377 BQO00549  konno            VZk07v6l(暫定) 更新
( 1) 24/08/05 21:12 コメント数:1
k07v6k で [ESC]P #82 のファイル名の変更にバグが有りました。
フォルダの階層が深いとPATHが壊れるようです。
暫定的な修正をしましたが、フォルダの階層が深いと拡張子が消えるなどまだバグありです。
試用は自己責任でお願いします。

VZの部屋に置きました。


11378/11365 BQO00549  konno            Re^6: FGALDC kVZ誕生秘話 完全版
( 1) 24/08/05 23:33 11376へのコメント(文太さん)
>  もう一つの(私的)ニュース。VTDOS環境のVzファイラは、長〜いLFNでは
> 使い物にならん、ということで、バッチファイルでフィアラ代わりをさせる方法と、
> 素直なWindows LFNファイラ(DF?)の方法を試しています。
>
>  ディレクトリで整理はしていますが、こんなファイル名に(ほぼ自動的に)なって
> しまう世界なので。6TBのHDDx2!
>
> E:\Beethoven\PCon\5\Rubinstein_Leinsdorf_63\Beethoven_pc5_1_Rubinstein_Leinsdorf_63.flac

あ〜、こういうのはさすがに VZでは無理がありますねぇ。(^^;
やっぱり 餅は餅屋、Windowsアプリでやるのが吉でしょう。(^^;


11379/11377 DGF01024  めざら           Re: VZk07v6l(暫定) 更新
( 1) 24/08/06 07:01 11377へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
お疲れ様です.
ファイル名は直しておいたほうがよいでしょう.

11380/11377 BQO00549  konno            Re^2: VZk07v6l(暫定) 更新
( 1) 24/08/06 15:52 11379へのコメント(めざらさん)
> ファイル名は直しておいたほうがよいでしょう.

ん? と思って見てみたら・・・
げげぇ、リンク先のファイル名が k07v6k のままでした〜! (>_<)
ご指摘ありがとうございます。訂正しました。m(__)m

もう相当脳力が低下しているようで、(認知能力の方かも)
今回更新出来たのは、過去ログの形式変換マクロで苦戦したからでした。
マクロが上手く動かない。VZを変えてみる。VTDOSを再起動。
としきさんが [ESC]+i の不具合を生ログデータで示したのを思い出し
やっぱり切り貼りでバグが出たら不味いよなぁ、と改めて思いました。


11381/11365 BQO00549  konno            FGALDC kVZ誕生秘話 完全版2
( 1) 24/08/13 20:41 11365へのコメント(konnoさん)
FGALDC kVZ誕生秘話 完全版その2です。
FGALDC 会議室の私の発言を一部ですが、1階から17階まで並べてみました。

http://tamaneko.world.coocan.jp/bbs/bbs6/wforum.cgi

FGALDC 会議室
| 17 階   :とくせつ:Doc□Making ・ドキュメント  
| 15 階   :とくせつ:Vz□研究室・マクロ作るぞ!   ※ kvzの話題のメインです
| 14 階   :とくせつ:Vz□交 流・マクロ使うぞ!  
| 13 階   :とくせつ:Vz□Q&A・そこが知りたい  
| 01 階   :わいわい:フリートークみかちゃん倶楽部  

15階以外は私の発言のみにしています。


11382/11382 GST01234  鈴木康弘         ms-dos playerについて質問です。
( 1) 24/08/19 18:04 コメント数:1

普段の日本語入力には、dosvaxj3上のVzをありがたく使っている鈴木康弘です (半年ぶり)。

今回は、MS-DOS playerについて質問です。
この上でVzを動かすと、ctrlキー命令が、Windowsエディタの動作になってしまいます。

たとえば、ctrl-Aやctrl-Fで一語左右に行ってほしいのに、「すべて選択」や「検索」になってしまう。

dosvaxj3やVTDOSはそんなことないのに...
解決方法をご存じの方、よろしくお願いいたします。


11383/11382 BQO00549  konno            Re: ms-dos playerについて質問です。
( 1) 24/08/20 00:16 11382へのコメント(鈴木康弘さん) コメント数:2
鈴木さん、こんにちは

> 今回は、MS-DOS playerについて質問です。
> この上でVzを動かすと、ctrlキー命令が、Windowsエディタの動作になってしまいます。
> たとえば、ctrl-Aやctrl-Fで一語左右に行ってほしいのに、「すべて選択」や「検索」になってしまう。

うちの環境では WinIMEが ON でも OFF でも 問題なく動作しています。
DOS は10#さんが調整されたFreeCOM です。
http://vtdos.web.fc2.com/
DOWNLOAD FREECOMV.ZIP UPDATED 130314
VZは私家版の最新版ですが、バグがあるのでお勧めできません。

MSDOS.EXE のプロパティのショートカットのPATHは
C:\UT\msdos.exe -x -v7.00 c:\ut\mp\command.com

プロパティのオプションでは、「レガシーコンソールを使用する」にチェックしてます。

VZのオプションで関係しそうなのは
 FP+  FR-  FK+  FQ+ 
こうなっています。
あれ? インスタント窓では FR1 になってますね、マクロで何かやっているのかな。(^^;

鈴木さんの環境を知りたいので、あじゃさんの OPT_LST.DEF の結果が知りたいです。
めざら資源の軟体補間計画の作者順で - aja - さんで登録されています。
http://mezala.la.coocan.jp/vz/history/maclib.html
VZ_OPT.DEF	マクロ作者とユーザーのお供 vz_opt.def	1999/02/10	02069	- aja -

あれ?名前が違うけど中身は同じだと思います。(^^;


11384/11364 BQO00549  konno            「新着情報 」 v0.951 更新
( 1) 24/08/20 01:29 11364へのコメント(konnoさん) コメント数:1
「新着情報 」 v0.951 更新しました。

鈴木さんの投稿が表示されていませんでした。
メール表示になっていると駄目みたいですがどこが悪いかわかりません。(>_<)
print で各項目を表示させたらやっとわかりました。

    if (($_ =~ /\投\稿\者\:<b>/)){

ここで メール がある時は <b> の前に </a> が入るために飛んでしまったのでした。

    if (($_ =~ /\投\稿\者\:/)){

こう修正して直りました。
ご迷惑をおかけしました。m(__)m


11385/11382 GST01234  鈴木康弘         Re^2: ms-dos playerについて質問です。
( 1) 24/08/20 18:13 11383へのコメント(konnoさん) コメント数:1
 konnoさん、お返事ありがとうございます。

 Vzは、1993年12月の純正VZIBMJ.com です。
 dosvaxj3やVTDOSではちゃんとVZのコントロールキー割り当てが効くので、Vz側の問題ではないのかな、と悩み...

> プロパティのオプションでは、「レガシーコンソールを使用する」にチェックしてます。

 これがピンポン!正解でした。

 64bitマシンを買ったら、16bitのDOSパーテーションを作れないぞ (;_;) と、今年からようやく本格的にWindowsを使うようになった僕は、コマンドプロンプトのこんな設定は知りませんでした。(^_^;)
 MS-DOS playerの解説のどこを見ても書いてないし...(当然?)


 解決したところで、もうひとつ質問です。
 dosvaxj3は、全画面のデフォルトで25行になって、老眼にやさしいです。
 msdos playerも同様に、全画面(くらい)で25行(くらい)にすることは可能でしょうか?
(レガシーコンソールにすると、フォントが選べないようなので、ますます無理でしょうか? Windowsは 10 Homeです)


11386/11382 BQO00549  konno            Re^3: ms-dos playerについて質問です。
( 1) 24/08/21 01:13 11385へのコメント(鈴木康弘さん) コメント数:1
> > プロパティのオプションでは、「レガシーコンソールを使用する」にチェックしてます。
>  これがピンポン!正解でした。

よかったです、私ももう忘れてしまっていたので。

>  64bitマシンを買ったら、16bitのDOSパーテーションを作れないぞ (;_;) と、今年からようやく本格的にWindowsを使うようになった僕は、コマンドプロンプトのこんな設定は知りませんでした。(^_^;)

VTDOSでもこれにチェックしないと文字化けしてしまうので、古いアプリには必須なのかもですね。

>  MS-DOS playerの解説のどこを見ても書いてないし...(当然?)

何かWikiでもあれば・・・ハッ、、、いや、何でもないです。(^^;

>  dosvaxj3は、全画面のデフォルトで25行になって、老眼にやさしいです。
>  msdos playerも同様に、全画面(くらい)で25行(くらい)にすることは可能でしょうか?

プロパティの「レイアウト」タブのウインドウサイズを変更すれば出来たと思います。
次回起動時にその設定が反映されたような。

プロパティの「フォント」タブでフォントも変えられるかもしれませんがどうだったかなぁ。
今はどうだかわかりません。


11387/11382 DGF01024  めざら           opt_lst.def の所在
( 1) 24/08/21 10:12 11383へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
> あれ?名前が違うけど中身は同じだと思います。(^^;

機械的に作業しているので,ish から出てくるファイル名をそのまま
マクロ名に当てていたせいですね。修正しました。
http://mezala.la.coocan.jp/vz/history/maclib1.html#opt_lst

些細なことですが,補間ではなく補完です。(あながち間違いではないけれど)


11388/11382 BQO00549  konno            Re: opt_lst.def の所在
( 1) 24/08/21 16:36 11387へのコメント(めざらさん) コメント数:1
> 機械的に作業しているので,ish から出てくるファイル名をそのまま
> マクロ名に当てていたせいですね。修正しました。

元が ishファイルだったのですね、ありがとうございます。

> 些細なことですが,補間ではなく補完です。(あながち間違いではないけれど)

すみません、某アニメの補間が効いていたのに気が付かなくて。(^^;


同梱マクロの chk_opt.def というのが何をするマクロなのかわからなくて
そのまま起動させたら無限ループになったようです。
16階の ishから辿って 15階の発言に説明が有りました。以下に引用します。

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

> 12734/12751 xxxxxxxx  - aja -          VZマクロ作者とユーザーのお供 > mes16
> (15)   99/02/10 13:44                     コメント数:2

opt_lst.def
現在のオプションを option.lst というファイルに一覧で出力します(ディス
ク上にはファイルはつくりません)。

chk_opt.def
上でつくられた option.lst に対し、現在のVZのオプションで変化があった
ものにマークをつけます。

ちょっと上の説明だとわかりにくいんですが、使い方はたとえば、

(1)公開マクロでトラブルがあるユーザーが、 自分の.def 環境で opt_lst.def
  を実行して出力した option.lst を会議室にアップしてもらう。
                                   ↓
 その option.lst に対し、 マクロの作者は自分の環境で chk_opt.def を実
  行すると、ユーザーと自分のオプションの違いが一目でわかる。
---------- option.lst --------------------- 1999/02/09 (Tue) 14:56 --------
 DOSV *z-  St- *vw-  zk-
 
 Bt64     Bf4096   Bo32768  EM1024  *XM0     *Bm12879  Ba2     *Hs256
*Hf256   *Hx128    Ha64    *Hw64    *Bl2048   Bc1024  *Bu64    *Bv1024
 
*SW3  *TC10  WD80  We80  PG0   RS3   Ta8   Tb4   Ci4   Co6   WL0
*LC30  VM0  *CA52  Sr5  *Qt0  *Qc40 *Qw100 RM0
(以下、略)


(2) 公開マクロに作成時の自分の option.lst を同梱して、ユーザーに協力し
てもらい、単純な配慮不足のバグ出しを容易に行う。

(3) 自分の公開マクロの行儀のよさを調べる(起動前と起動後のオプションを
  比較)。

(4) 製品添付の vz.def 環境と比較して、自分の廃人具合を自覚する(^^;

(5) ひとのマクロのあら捜しをする (^^;; ォィォィ

このマクロはPDS (by FGALDC VZ users) にしたいと思っているんですが、
いまのところ、 dos/v 版にしか対応していません(できる範囲で 98 と  J31
用のコードも書いてみましたが、てきとーです (^^;)。

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

なるほど、option.lst を開いた状態で起動するのですね。
これはマクロのバグ出しなどに使えば便利そうです。

このような説明を同梱してくれると利用者が助かると思うのですが、どうでしょう。


11389/11382 DGF01024  めざら           Re^2: opt_lst.def の所在
( 1) 24/08/21 17:08 11388へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
説明書を他人が勝手に同梱するのはどうでしょうねぇ……

16階の特殊性もありますが,作成者ご本人が付けていないものを入れると
同一性保持権にひっかかるようにも思います。(考えすぎ?)

ish掲載マクロだと,そういうケースは結構多いと思われるわけですが,
特定のマクロだけ特別扱いにすることも少し抵抗があったりしますね。

何かよい方法がないか相談したいところです。
ご本人は PDS でいいとおっしゃってますが,日本の著作権法では
パブリックドメインという概念が確立していないように思えるので。

11390/11382 GST01234  鈴木康弘         今度はdosvaxj3についての質問です。
( 1) 24/08/21 17:37 11386へのコメント(konnoさん) コメント数:1
 konnoさん、お返事ありがとうございます。

> プロパティの「フォント」タブでフォントも変えられるかもしれませんがどうだったかなぁ。

 コマンドプロンプトでレガシーコンソールを使用したら、フォントの大きさは選べなくなってしまうようなので、これはいったんあきらめます。


 あと、もうひとつ、今度はdosvaxj3の質問です。
 これの唯一の不満は、WinIMEで日本語文をCtrl-Mで確定した直後は、Ctrlキーから一度指を離さないとCtrlキーが使えないことなんです。
 回避方法はあるんでしょうか?

 msdos playerやVTDOSはこの点は大丈夫なので、日本語文を作るときは、msdos playerにしようと思っている鈴木でした。

11391/11382 BQO00549  konno            Re^3: opt_lst.def の所在
( 1) 24/08/21 21:29 11389へのコメント(めざらさん)
> 説明書を他人が勝手に同梱するのはどうでしょうねぇ……
> 16階の特殊性もありますが,作成者ご本人が付けていないものを入れると
> 同一性保持権にひっかかるようにも思います。(考えすぎ?)

ishがマクロ本体のみということは、説明は会議室ので見てくれ、というスタンスかと。
FGALDC出身者は見ることができますが、その他の方たちには意味不明なマクロになってしまいますね。
私ならご本人の発言の必要部分だけ引用(マルパク)で同梱しちゃうかもですね。(^^;

> ish掲載マクロだと,そういうケースは結構多いと思われるわけですが,
> 特定のマクロだけ特別扱いにすることも少し抵抗があったりしますね。

私ならとりあえず気が付いたものから気が向いた時に、と言い訳するかな。(^^;

> 何かよい方法がないか相談したいところです。
> ご本人は PDS でいいとおっしゃってますが,日本の著作権法では
> パブリックドメインという概念が確立していないように思えるので。

例えばWikiみたいな、、、以下自粛。(゚゜)☆\(--#)バキッ


11392/11382 BQO00549  konno            Re: 今度はdosvaxj3についての質問です。
( 1) 24/08/21 21:33 11390へのコメント(鈴木康弘さん) コメント数:2
>  コマンドプロンプトでレガシーコンソールを使用したら、フォントの大きさは選べなくなってしまうようなので、これはいったんあきらめます。

そうでしたっけ、どれどれ・・・あ、思い出した!

msdos player 起動中に上部のアイコンを右クリックしてプロパティのフォントタブを開きます。
フォントサイズの選択が出ると思うのでここでフォントを変更できます。
レイアウトタブで行桁数も変更できます。
窓の位置が中央になっていると行を広げられないのであらかじめ窓を上端にしておくと吉です。

>  あと、もうひとつ、今度はdosvaxj3の質問です。
>  これの唯一の不満は、WinIMEで日本語文をCtrl-Mで確定した直後は、Ctrlキーから一度指を離さないとCtrlキーが使えないことなんです。
>  回避方法はあるんでしょうか?

これは作者様に質問したら、システムのAPIを使用しているためだかで、こうなっているそうです。
作者様なら何か方法が考えられるでしょうが、難しそうです。
VZ本体で、キーの切り替えを感知したらシフトキーバッファをリセットするとか出来ればどうかなとは思いますが
実際に実現できるかはわからないです。

> Ctrl-Mで確定した直後は、Ctrlキーから一度指を離さないとCtrlキーが使えないことなんです。

これをマクロでやっているのであれば、Ctrl-Mで確定した直後に、
ks-, を追加するというのはどうかと思ったのですが、駄目みたいです。
システムが状態をキープしているみたいですね。


11393/11382 GST01234  鈴木康弘         Re^2: 今度はdosvaxj3についての質問です。
( 1) 24/08/22 06:53 11392へのコメント(konnoさん) コメント数:1
> msdos player 起動中に上部のアイコンを右クリックしてプロパティのフォントタブを開きます。
> フォントサイズの選択が出ると思うのでここでフォントを変更できます。

 おお、すばらしい!
 コマンドプロンプトをレガシーコンソールにすると、そのアイコン状態からは、フォントの大きさを選べないけれど、コマンドプロンプトを立ち上げれば、上枠を右クリックしたプロパティからフォントの大きさを選べるんですね!

 ほぼ全画面に近い状態で、目にやさしい25行表示になりました。

 今後はdosvaxj3の世話にならずに、MS-DOS Player1本で行こうと思います。
ありがとうございました。

11394/11382 BQO00549  konno            dosbox-x.exe の DOS/Vモードはシフト状態をキープ
( 1) 24/08/22 12:33 11392へのコメント(konnoさん)
> VZ本体で、キーの切り替えを感知したらシフトキーバッファをリセットするとか出来ればどうかなとは思いますが
> これをマクロでやっているのであれば、Ctrl-Mで確定した直後に、
> ks-, を追加するというのはどうかと思ったのですが、駄目みたいです。
> システムが状態をキープしているみたいですね。

勘違いしていました。シフト状態をキープしないといけないんでした。
DOSBOX系は皆同じなのかどうか確認してみました。

dosboxx
mingw フォルダの dosbox-x.exe の DOS/Vモードは dosvaxj3と同じでした。

mingw-sdl2 フォルダの dosbox-x.exe の DOS/Vモードはシフト状態をキープ出来ました。
おお、これを作者様に報告すれば何とかなるかも。


11395/11382 BQO00549  konno            Re^3: 今度はdosvaxj3についての質問です。
( 1) 24/08/22 19:29 11393へのコメント(鈴木康弘さん) コメント数:1
>  今後はdosvaxj3の世話にならずに、MS-DOS Player1本で行こうと思います。

dosvaxj3の作者様にメールしたら、暫定版のDLLをいただきました。
シフト状態がキープされて、問題なく動作するようになりました。
これが公開されるのを期待します。

MS-DOS Player はIMEの制御が VZで出来ないのが残念なところです。
とはいえ、多くのDOSコマンドが動くので、欠かせない存在です。
私はこの3つのエミュをずっと使い分けていきます。


11396/11396 BQO00549  konno            VzWikiに各種DOSエミュの項目追加
( 1) 24/08/22 22:22
VzWikiに各種DOSエミュの項目を追加しました。
長らく放置していましたが、今回備忘録の必要性を感じて簡易的に追加しました。
Wikiはトップページ以外は誰でも編集できますので、皆さん参加していただけると助かります。
よろしくです。(^^;


11397/11382 GST01234  鈴木康弘         Re^4: 今度はdosvaxj3についての質問です。
( 1) 24/08/24 06:42 11395へのコメント(konnoさん) コメント数:2
 Vzが動いたら次はawkだ!

 と、MS-DOS Playerの中で、16bitのjgawk.exeを動かしたら、これまでの16bit jgawkの文法が、なぜか使えず、
    illegal instruction   と怒られるだけ。
 単に {print} さえ使えない。 

 DOSVAXJ3 の中なら一応jgawkは使えます。
(コマンドラインのワンライナーの " " の中で不等号を使うと、不等号でなく、リダイレクト命令と解釈されてしまうけれど。)

> 私はこの3つのエミュをずっと使い分けていきます。

 以上の理由で、僕もエミュレーターは、使い分けることになりそうです。
 (DOSVAXJ3の改善が近いなら、やっぱりこちらが主になるかも。)


11398/11382 BQO00549  konno            Re^5: 今度はawk
( 1) 24/08/24 22:11 11397へのコメント(鈴木康弘さん)
> MS-DOS Playerの中で、16bitのjgawk.exeを動かしたら、これまでの16bit jgawkの文法が、なぜか使えず、
>     illegal instruction   と怒られるだけ。
>  単に {print} さえ使えない。 

私は awkはわからないのですが、どういう文法が駄目なんでしょうか。
ここは awkに詳しい方も見ていると思うので、サンプルの例でもあれば是非。

>  (DOSVAXJ3の改善が近いなら、やっぱりこちらが主になるかも。)

DLLの差し替え版をいただきました。
何か細かな調整とかあるのかもしれません。


11399/11382 CXB00940  としき           Re^5: 今度はdosvaxj3についての質問です。
( 1) 24/08/25 01:25 11397へのコメント(鈴木康弘さん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
>     illegal instruction   と怒られるだけ。

これって、awkが出しているのでしょうか。
MS-DOS Playerが出しているのか、確認できます?

>  単に {print} さえ使えない。 

この状況から、なんとなく、MS-DOS Playerの側が悪いような気がします。
この辺、私が再現試験すれば早いのですがね。
実は私はMS-DOS Playerを使ったことがない。

>  以上の理由で、僕もエミュレーターは、使い分けることになりそうです。

私は、メインがDOSVAXで、時々、古い版のVTDOSを引っ張り出してきたりしています。


11400/11382 GST01234  鈴木康弘         Re: 今度はawk
( 1) 24/08/25 07:26 11399へのコメント(としきさん) コメント数:2
> MS-DOS Playerが出しているのか、確認できます?

 あ、そういえば、jgawkでおなじみのエラーメッセージは、

jgawk.exe:  syntax error near line 1:

とかでしたね。(鈴木の使ってるjgawk.exe は1991年3月7日、Serowさんによるもの。)

 MS-DOS Playerが出してるのかな? どうやったら確認できるのかしら?   

 C:\Users\USER\>msdos jgawk  '{print}' filename
 error: illegal instruction 
 
 となるのですが。


11401/11382 BQO00549  konno            Re^2: 今度はawk
( 1) 24/08/25 13:26 11400へのコメント(鈴木康弘さん)
>  C:\Users\USER\>msdos jgawk  '{print}' filename
>  error: illegal instruction 

これ、MS-DOS Player 起動中のコマンドラインで、「msdos」コマンドを実行してるように見えます。

これだとうちの場合は、
d:\nc>msdos jgawk '{ print "Hello world!" }'
'c:\ut\MSDOS.EXE"  jgawk '{ print "Hello' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

こうなります。実行ファイルは
1993/09/25  05:51           188,444 jgawk.exe
です。

jgawk.exe で ファイル color を print すると

jgawk '{ print }' color
0	黒        8	灰
1	青        9	高輝度青
2	緑        10	高輝度緑
3	水色      11	高輝度水色
4	赤        12	高輝度赤
5	紫        13	高輝度紫
6	黄        14	高輝度黄
7	白        15	高輝度白

こうなります。VZのコンソールの表示です。
コマンドラインではタブが変な文字になっていますが、コンソールでは正常ですね。

dosvaxj3 で同じコマンドを実行したら、先頭が
0	黒        8	灰nt }' color
1	青        9	高輝度青
  --- 以下略 ---

こうなりました。
作者様にメールしてみました。


11402/11402 BQO00549  konno            「私の健康法あれこれ」
( 1) 24/08/26 16:41
ココログからの転載です。
http://tamaneko2.cocolog-nifty.com/vz2/2024/08/post-fc366a.html

jgawk の概要を知るために「jgawk exe ダウンロード」でネット検索したら
「”JGAWK の入手方法について」というページがありましたが、
トップページへのリンクが見当たりません。
それで URLから辿ってみたら、以下のサイトがありました。

果実酒と花と栞とJGAWK
https://www.asahi-net.or.jp/~xx7k-ysmr/index.htm

1997年から始めておられるインターネット草創期からの大先輩のようです。
ざっと見て気になったページが
「私の健康法あれこれ」
https://www.asahi-net.or.jp/~xx7k-ysmr/health/health.htm

もう高齢で最近の更新も無く、消えているページも多いですが

・焼酎の楽しみ
・焼酎飲み比べ賞玩録
・私の腰痛克服記
・痔とアレルギー反応
・便秘と下痢

・水虫の冷水治療法
・風邪の温水うがい治療法
・ふくらはぎと土踏まずの硬直
・歯周病と歯磨き

これらのページは残っていました。
腰痛と砂糖の因果関係とか、水虫を氷水で治すとか、なかなか興味深い話があります。
私もこんなふうに自己流の健康法とか披露出来たらいいなぁ、と思いました。

ここで紹介しようと思ったのも、一期一会です。

# jgawk の話はどうした。(゚゜)☆\(--#)バキッ


そうそう、jgawk の話題ももちろんあります。(^^;

JGAWKプログラム集Ver.1- 97,1,29
https://www.asahi-net.or.jp/~xx7k-ysmr/jgawk/INTRO.HTM

各ページがリンクで繋がってないのが残念というか、古さを感じさせる要因でしょうか。


11403/11403 BQO00549  konno            MS-DOS Player 2024/8/31版
( 1) 24/09/01 18:02 コメント数:2
MS-DOS Player 2024/8/31版が更新されていました。
更新内容は
---------------------------------------------------------
実行ファイルを読み込む処理を改良しました。
プログラム名だけ指定した場合、.COM / .EXE / .BATを付けてファイルを読み込みますが、
拡張子なしでプログラム名と同じ名前のファイル(JGAWK.EXEとJGAWKなど)があると、
そちらが優先して読み込まれてしまっていました。
拡張子がないファイルが、実行ファイルとして読み込まれないように修正しています。
---------------------------------------------------------

なんと、JGAWKを例にして、コマンドラインの改善をしてくれていました。
確かに旧バージョンでは、「JGAWK」というファイルがあると誤動作することがありますね。
作者様がここを見てくれてたのかと思ってしまいます。
作者様に感謝です。m(__)m


11404/11382 BQO00549  konno            Re^2: 今度はawk
( 1) 24/09/01 18:07 11400へのコメント(鈴木康弘さん)
>  MS-DOS Playerが出してるのかな? どうやったら確認できるのかしら?   
>  C:\Users\USER\>msdos jgawk  '{print}' filename
>  error: illegal instruction 
>  となるのですが。

#11403 で書きましたが、MS-DOS Player 2024/8/31版が更新されていました。
なんと、JGAWKを例にして、コマンドラインの改善をしてくれていました。
作者様がここを見てくれてたのかと思ってしまいます。(^^;
よろしかったら試してみてください。


11405/11403 GST01234  鈴木康弘         Re: MS-DOS Player 2024/8/31版
( 1) 24/09/01 20:16 11403へのコメント(konnoさん) コメント数:2
> プログラム名だけ指定した場合、.COM / .EXE / .BATを付けてファイルを読み込みますが、
> 拡張子なしでプログラム名と同じ名前のファイル(JGAWK.EXEとJGAWKなど)があると、
> そちらが優先して読み込まれてしまっていました。


    #11400の続きです。

 お知らせありがとうございます。
 確かに僕も、jgawk.exeのあるディレクトリに、jgawk という、go32用のファイルを入れてました。(^_^;)

 MS-DOS Playerをバージョンアップすれば、またはせずともこのファイルをリネームすれば、ちゃんとjgawk.exe が動きました。 

 みごとな原因究明、ありがとうございます。 >作者の武田様。


11406/11403 GST01234  鈴木康弘          今度はgrepで (^_^;)
( 1) 24/09/01 20:18 11405へのコメント(鈴木康弘さん) コメント数:3
 実はもうひとつ、MS-DOS Playerで問題があって、grepしようとすると、

C:\USERS\USER\>grep 検索語 C:\USERS\USER\file
No such file : c:\users\user\fileサフ4

と、勝手に サフ4 という文字をつけて、そんなfileはないと言われるのですが..。

 僕のDOS用grep.com は、1989年4月2日のものです。


11407/11403 GST01234  たけだ           Re: MS-DOS Player 2024/8/31版
( 1) 24/09/01 21:45 11403へのコメント(konnoさん) コメント数:1
> 作者様がここを見てくれてたのかと思ってしまいます。

<●> <●>


#いや、誰かバグ報告してくれてないかなーと検索してたら、たまたま…

11408/11403 GST01234  たけだ           Re:  今度はgrepで (^_^;)
( 1) 24/09/01 21:47 11406へのコメント(鈴木康弘さん)
grepはいろんな人がいろんな移植をしているみたいで、1989/4/2のものは見つかりませんでした。
Turbo Pascal 6についてたやつでは問題ありませんでした。


11409/11403 BQO00549  konno            Re^2: MS-DOS Player 2024/8/31版
( 1) 24/09/01 22:34 11405へのコメント(鈴木康弘さん)
>  お知らせありがとうございます。
>  確かに僕も、jgawk.exeのあるディレクトリに、jgawk という、go32用のファイルを入れてました。(^_^;)
>  MS-DOS Playerをバージョンアップすれば、またはせずともこのファイルをリネームすれば、ちゃんとjgawk.exe が動きました。

なんと!原因はそのものずばりでしたか。
やはりここを見て対応してくれたのですね、あのエラーメッセージでわかるとは凄いです。

>  みごとな原因究明、ありがとうございます。 >作者の武田様。

さすがプロですね、私なんて原因がどこにあるかもわからなかったので。


11410/11403 BQO00549  konno            Re^2: MS-DOS Player 2024/8/31版
( 1) 24/09/01 22:35 11407へのコメント(たけださん)
たけださん、いつもお世話になっております。

> > 作者様がここを見てくれてたのかと思ってしまいます。
> <●> <●>

あら、やっぱり見てたのねぇ。(^^;

> #いや、誰かバグ報告してくれてないかなーと検索してたら、たまたま…

なるほど、今時DOSの話題は限られているのでうちのような掲示板でも検索上位になるかもですね。
対応いただきありがとうございました。


11411/11403 BQO00549  konno            Re:  今度はgrepで (^_^;)
( 1) 24/09/01 22:56 11406へのコメント(鈴木康弘さん)
> C:\USERS\USER\>grep 検索語 C:\USERS\USER\file
> No such file : c:\users\user\fileサフ4
> と、勝手に サフ4 という文字をつけて、そんなfileはないと言われるのですが..。
>  僕のDOS用grep.com は、1989年4月2日のものです。

かなり古いもののようですね。
私の実行ファイルフォルダには
>dir *grep*

2009/02/13  17:19            96,256 grep.exe
1993/04/11  16:05            23,997 IZGREP.EXE
1993/12/01  01:53            14,060 WGREP.COM
2009/03/31  02:28           233,472 yagrep.exe
1996/06/08  06:30            68,772 YGREP.EXE

これだけ入れていました。
普段使いは、WGREP.COM。 結構古いし、COMだったんですね。(^^;
フォルダー群から再帰的に検索する時は grep.exe ですね。


11412/11403 CXB00940  としき           Re:  今度はgrepで (^_^;)
( 1) 24/09/02 00:15 11406へのコメント(鈴木康弘さん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> と、勝手に サフ4 という文字をつけて、そんなfileはないと言われるのですが..。

これ、どんな検索語でも勝手にくっつく文字列は常に一定ですか?
あと、リダイレクションで流し込んだ場合の挙動はいかが?

>  僕のDOS用grep.com は、1989年4月2日のものです。

そこそこメジャーなASCII Toolsのgrepは1988年ごろのものですが、それすらEXE。
そして日本語対応していたはず。
なんだろう、英語DOS用のgrepなのかなぁ。


11413/11413 CXB00940  としき           はるかかなたの新規投稿
( 1) 24/09/02 00:21 コメント数:1
参照先:http://toshiki.la.coocan.jp/
この掲示板で新規投稿しようとすると、投稿欄が遠い。
デフォルトでツリー数が、野ざらしだと10個、板塀だと20個なわけですが、ここ
は50個くらいのツリーをかき分けないとたどりつけない。
これ、もうちょっと少なくしていただくわけにはいきませんでしょうか。

ささやかなお願いでした。

11414/11403 GST01234  鈴木康弘         Re^2:  今度はgrepで (^_^;)
( 1) 24/09/02 07:09 11412へのコメント(としきさん) コメント数:2
> > と、勝手に サフ4 という文字をつけて、そんなfileはないと言われるのですが..。
>
> これ、どんな検索語でも勝手にくっつく文字列は常に一定ですか?

 そうなんです。いつでも サフ4 です。
 リダイレクトしようとしても同様に No such file と言われます。

 追加情報です。#11406 の現象は、Vzの子プロセスで起こることです。
 Vzと無関係にgrepを動かせば起こりません。
(DOSVAXJ3は子プロセスでもうまくいくのに....)


11415/11413 DGF01024  めざら           Re: はるかかなたの新規投稿
( 1) 24/09/02 07:57 11413へのコメント(としきさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
えーと,そのために「新規投稿」ボタンがあるぢゃありませんか。
ページの途中だと辛いけど,ふつう [END]とかも使えそうだし。

11416/11413 CXB00940  としき           Re^2: はるかかなたの新規投稿
( 1) 24/09/02 09:25 11415へのコメント(めざらさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> えーと,そのために「新規投稿」ボタンがあるぢゃありませんか。

おぉ、リンクが青い。使ったことのない機能だ。
今後は使わせていただきます。

> ページの途中だと辛いけど,ふつう [END]とかも使えそうだし。

小さいキーボードだと、[Fn]との同時押し、というのがいささかネック。
大きいキーボードだとよく使っているのですが、こちらもすっかり忘れていました。

11417/11403 GST01234  鈴木康弘         Re^3:  今度はgrepで (^_^;)
( 1) 24/09/02 18:27 11414へのコメント(鈴木康弘さん) コメント数:3
 僕の持っている他のツールを、MS-DOS Player内のVzの子プロセスのコマンドラインで動かしてみると、xsort.com も zf.exe も正常に動きます。
 変なのは grep.com だけみたいです。
 これは動かないなら、他の手があるからいいのですが。


grep -?     でコンソールに表示されるものをVzで取り込むと

Grep version 2.2 / Copyright (C) bko 1987,89

Usage : grep [-cilnrstv] [-e]pattern [file]...

 -c : display Count of matched lines
 -i : Ignore chracter case
 -l : display List of matched file name
 -n : (default) display matched line and line Number
 -r : Recurcive search of sub-directory
 -s : Silent mode (return only result code)
 -t : display header before matching
 -v : display or count mismatched lines

 となります。表示の最初のGrep Version 2.2 の前に見えるものは^Gで、これも変なんですが。


11418/11250 BQO00549  konno            dosvaxj3常駐VZでコマンドラインの挙動
( 1) 24/09/02 21:23 11250へのコメント(konnoさん)
#11401> dosvaxj3 で同じコマンドを実行したら、先頭が
> 0	黒        8	灰nt }' color
> 1	青        9	高輝度青
>   --- 以下略 ---
> こうなりました。
> 作者様にメールしてみました。

と書きましたが、その後気が付いたことを書いておきます。

コマンドラインでのコマンド実行時、改行がされないのは VZ常駐時だけでした。
非常駐VZでは正常に改行されていました。

以前 more の挙動だかで VZ常駐時だけおかしくて、対応してもらったことがありましたが
それに関連する現象ではないかと思われます。

> #10559: DOSVAXJ3 JP230216に更新 投稿者: konno   2023/02/16(木)
> ・ Vz 常駐中に more の出力の改行が二重になるのを修正しました。

これですね。この前のVerで試してみたら、VZ常駐でも正常に改行されていました。
・・・ということは、私がこの挙動を見逃していたということか〜。m(__)m

常駐VZは特殊なことをしているので、コマンドラインで問題があると修正が難しいかも。


11419/11403 BQO00549  konno            Re^3:  今度はgrepで (^_^;)
( 1) 24/09/02 21:48 11414へのコメント(鈴木康弘さん) コメント数:1
>  追加情報です。#11406 の現象は、Vzの子プロセスで起こることです。
>  Vzと無関係にgrepを動かせば起こりません。
> (DOSVAXJ3は子プロセスでもうまくいくのに....)

使用している command.com と VZ の種類と、起動BATの関連する情報が知りたいです。
#11418 に書きましたが、常駐VZは特殊なことをしているので、
コマンドラインで問題があると修正が難しいかもしれません。

お使いの grep.com を武田さんにメールで送って見てもらうのはどうでしょう。
http://takeda-toshiya.my.coocan.jp/main.html
のページ後半、「武田の総合謎WIPページ」の下に連絡先があります。
私も欲しいです。(^^;


11420/11413 BQO00549  konno            Re^3: はるかかなたの新規投稿
( 1) 24/09/02 22:08 11416へのコメント(としきさん) コメント数:1
> この掲示板で新規投稿しようとすると、投稿欄が遠い。

ツリーが長いのは私の好みで、ページを分けたくなかったからです。
新規投稿はリンクボタンを使えば不便はないと思います。

そういえば修正時には今までスクロールしてたけど、新規投稿ボタンでよかったんだ。(^^;
トップページへ戻るボタンもあるので、「新規投稿・修正」と変更してみました。(^^;

おお、[Home] [End] で行き来出来るんだ! ありがとうございます。


11421/11413 CXB00940  としき           Re^4: はるかかなたの新規投稿
( 1) 24/09/02 23:13 11420へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> ツリーが長いのは私の好みで、ページを分けたくなかったからです。

管理人の好みということであれば仕方ありませんね。
利用者が不満を言い続ける権利があるのと同様、管理人には利用者の要望を却下する
権利もあるわけですし。

ただ、私と同じく管理人すらあまり使っていない機能をさらっと指摘するめざらさん、
凄すぎです。


11422/11403 CXB00940  としき           Re^4:  今度はgrepで (^_^;)
( 1) 24/09/02 23:31 11417へのコメント(鈴木康弘さん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> Grep version 2.2 / Copyright (C) bko 1987,89

ん?
bkoさん?
なんかものすごく記憶がある名前。
え〜と。ごそごそ。

以下のページのリンクから入手可能かもしれません。
http://toshiki.la.coocan.jp/computer/dossoft.html

#あぁ、なんだってこんなところでつながるんだ

11423/11403 BQO00549  konno            Re^5:  今度はgrepで (^_^;)
( 1) 24/09/03 00:23 11422へのコメント(としきさん)
> 以下のページのリンクから入手可能かもしれません。
> http://toshiki.la.coocan.jp/computer/dossoft.html

す、凄い! 例の grep.com としきさんがキープしていたとは!!
日付もあっているし、間違いないですね。

> #あぁ、なんだってこんなところでつながるんだ

# さだめじゃ〜 (^^;


11424/11403 BQO00549  konno            Re^4:  今度はgrepで (^_^;)
( 1) 24/09/03 00:33 11417へのコメント(鈴木康弘さん)
#11422 で、としきさんのやしきに、その grep.com が有りました。
なんという偶然でしょう。

> grep -?     でコンソールに表示されるものをVzで取り込むと
>  となります。表示の最初のGrep Version 2.2 の前に見えるものは^Gで、これも変なんですが。

これは再現しました。が、VTDOSでも同じだったので、何とも言えないですね。
他の検証はこれからやってみます。書式とかがわからないもので。


11425/11413 DGF01024  めざら           Re^5: はるかかなたの新規投稿
( 1) 24/09/03 07:10 11421へのコメント(としきさん)
参照先:http://mezala.la.coocan.jp/
凄すぎなのは,さらりと「新規投稿・修正」に変えてしまう konno さん。(笑)


11426/11403 GST01234  鈴木康弘         Re^4:  今度はgrepで (^_^;)
( 1) 24/09/03 18:46 11419へのコメント(konnoさん) コメント数:1
> 使用している command.com と VZ の種類と、起動BATの関連する情報が知りたいです。

 僕のVzは1993年12月4日の vzibmj.com ver1.59z。
 これはなんと、ver1.6製品化直前の、最終チェックバージョンです。 
(僕が正式なver1.6を買わなかったから、ビレッジセンターはつぶれてしまったのかな?)

 常駐では使ってません。通常のファイラーからコマンドラインモードに降りてます。
(常駐すると何かまずいことがあった記憶が..忘れました。)

 command.com は指定せず、素直に?Windows10 Home 22H2 のcmd.exeです。

 MS-DOS Playerのvz起動用バッチは
    cd vz
    del vztemp.$$$
    msdos -n26 vzibmj *.*
 これだけの、素直な環境です。

 みなさんが、としきさんご紹介の grep.com と MS-DOS Player と Vz で再現できなければ、僕のVzのバージョンの問題なのでしょうね。

11427/11403 BQO00549  konno            Re^5: VZ1.59z ですか (^_^;)
( 1) 24/09/03 21:52 11426へのコメント(鈴木康弘さん)
>  僕のVzは1993年12月4日の vzibmj.com ver1.59z。
>  これはなんと、ver1.6製品化直前の、最終チェックバージョンです。

げげぇ! ビックリです! 恐らく世界で唯一のユーザーなのではないかと。(@.@)
これ、ほし、、い、いや、同じ環境で検証出来ればなぁ、と。(^^;

> (僕が正式なver1.6を買わなかったから、ビレッジセンターはつぶれてしまったのかな?)

いやいや、そんなことは・・・(^^;

>  常駐では使ってません。通常のファイラーからコマンドラインモードに降りてます。
> (常駐すると何かまずいことがあった記憶が..忘れました。)

MS-DOS Playerでは、10#さんのFreeCOM以外では常駐出来てないです。
常駐出来ている方いましたら教えて欲しいです。

>  command.com は指定せず、素直に?Windows10 Home 22H2 のcmd.exeです。

やってみたら動きましたが、再現は出来ませんでした。
VZ1.57a でもやってみましたが、再現出来ませんでした。

>  みなさんが、としきさんご紹介の grep.com と MS-DOS Player と Vz で再現できなければ、僕のVzのバージョンの問題なのでしょうね。

その可能性が高そうですが、全く同じ環境で検証してみたいですね。φ(..; バキッ\(--; シツコイ!


ちなみに、grep.comの中身をVZで開いて見てみました。

> >  となります。表示の最初のGrep Version 2.2 の前に見えるものは^Gで、これも変なんですが。

これはmsg領域に ^G からそのまま並んでいました。なので、そのまま表示させていると思われます。

あと、サフ という文字列も3か所にありましたが、関係は不明です。


11428/11403 GST01234  たけだ           Re^4:  今度はgrepで (^_^;)
( 1) 24/09/03 23:48 11417へのコメント(鈴木康弘さん) コメント数:2
GREP -pを実行すると、^G (BELL)をCON出力してBEEPを鳴らします。
これを拾ってしまっているものと思われます。

CON出力は、INT 29hで画面に表示されます。
VZはINT 29hをフックすることで、実行したプログラムの出力を取得しています。
CON出力にANSI.SYSが刺さっている場合はANSI.SYSがINT 29hを呼びますが、
BELLコードはANSI.SYS内で処理されて、INT 29hに渡されないようです。

コマンド引数にフサ4が付く件ですが、古いVZの子プロセスの呼び出し方の問題と、
GREP側のコマンド引数の受け取り方の食い合わせが悪いようです。

コマンド引数は、コマンド引数の文字列長+コマンド引数+ターミネータ(0x0D)
の形でメモリに格納されて、子プロセスに渡されます。
多分ですが、VZは文字列長はセットしてるけどターミネータがセットしていない、
GREPは文字列長を無視してターミネータのところまで引数として受け取っている、
みたいなことが起きているのではないかと。

今晩辺り、この辺の対策を入れてリリースします。

11429/11403 GST01234  たけだ           Re^5:  今度はgrepで (^_^;)
( 1) 24/09/04 00:13 11428へのコメント(たけださん)
対策を入れた版をリリースしました。
これで解決しているか、ご確認お願いいたします。

11430/11403 BQO00549  konno            Re^5:  今度はgrepで (^_^;)
( 1) 24/09/04 00:36 11428へのコメント(たけださん) コメント数:1
> 多分ですが、VZは文字列長はセットしてるけどターミネータがセットしていない、
> GREPは文字列長を無視してターミネータのところまで引数として受け取っている、
> みたいなことが起きているのではないかと。

ということは、VZ1.59z にもバグがあるということになるのでしょうかね。

> 今晩辺り、この辺の対策を入れてリリースします。

私はこのVerの現物を持っていないので、鈴木さんのレポートを待つことにします。


11431/11403 GST01234  鈴木康弘         Re^6:  今度はgrepで (^_^;)
( 1) 24/09/04 07:47 11430へのコメント(konnoさん) コメント数:2
 武田様、対応ありがとうございます。
 bkoさんのgrep -? で表示最初に^Gは出なくなりましたが、Vzのコマンドモードで検索ファイル名やディレクトリに勝手に サフ4 がつく点は治ってないみたいです。


11432/11403 BQO00549  konno            Re^7: 子プロセスの問題?
( 1) 24/09/04 16:53 11431へのコメント(鈴木康弘さん) コメント数:1
鈴木さん、VZ1.59z +VZマクロ メールでいただきました。
ありがとうございます。
早速検証してみました。

> 武田様、対応ありがとうございます。
>  bkoさんのgrep -? で表示最初に^Gは出なくなりましたが、Vzのコマンドモードで検索ファイル名やディレクトリに勝手に サフ4 がつく点は治ってないみたいです。

対策が効いていないということは、問題が別の所にあるのかもですね。
うちの環境で VZ1.59z で試してみましたが、サフ4 は表示されませんでした。
grep の書式がわからないので、具体的な書式があればありがたいです。

うちの環境では、VZの子プロセス(黄色いプロンプト)の時に別の問題が出ました。
64k以上のファイルを編集中にコマンドラインに降りてコマンドを実行した時
そのコマンドがエラーになった時に編集画面に戻ると、ファイルの内容が壊れるようです。

--- 異常画面の例 (command.com の内容と思われる) ---
^@コンテキストモジュールまたは重大エラーハンドラが読み込めません.
^@コンテキストがメモリから溢れました.
エラーが続くようであれば, ヒストリやディレクトリスタックの内部バッファを
増やすことを考えてください.
^@コンテキストサイズが合計 %lu になり, 最大長を超えています.
コンテキストサイズを %u に変更します.
^@コンテキストにステータス情報を追加できませんでした.
このエラーはおそらく, メモリ空間が破壊されたかコンテキストの最小サイズを
誤って計算したことを暗示しています.
ぜひこのエラーをFreeCOMの管理人(freecom@freedos.org)に報告してください.
-------------------------------------------------------------

この文の内容は関係ないと思います。たまたま。(^^;
私の VZ.DEF では各種VZでこうなりますが、鈴木さんの VZ159.DEF では問題が出ません。
KVZの疑似常駐モード(子プロセスにしない)の制御も効かなくなります。

オリジナルの VZ.DEF でも異常は出ませんでした。私の VZ.DEF に問題がある?
VTDOS や DOSVAXJ3 では異常は出ませんでした。

追記
対策の有無は関係なさそうです。
エラーも関係なく、小文字の vmap でも異常になりました。
大文字なら問題無いようです。

11433/11403 GST01234  鈴木康弘         Re^8: 子プロセスの問題?
( 1) 24/09/04 18:19 11432へのコメント(konnoさん) コメント数:1
> うちの環境で VZ1.59z で試してみましたが、サフ4 は表示されませんでした。
> grep の書式がわからないので、具体的な書式があればありがたいです。

 Vzのファイラーを立ち上げてから、黄色のコマンドラインモードに降りて、

 grep 検索語 filename

 とするだけです。どんな検索語でも、どんなfilenameでも サフ4 がつきます。

 #11426 に書いたように、僕はWindows10 の cmd.exe をそのまま使ってるだけですが、konnoさんは Vz1.59z でgrepできるとすると、konnoさんの環境にに一工夫あるという事なんでしょうね。


11434/11403 BQO00549  konno            Re^9: 子プロセスの問題?
( 1) 24/09/04 21:34 11433へのコメント(鈴木康弘さん) コメント数:1
>  #11426 に書いたように、僕はWindows10 の cmd.exe をそのまま使ってるだけですが、konnoさんは Vz1.59z でgrepできるとすると、konnoさんの環境にに一工夫あるという事なんでしょうね。 

うちの場合
CMD.EXE MSDOS VZ159 /vz159
でVZを立ち上げて、検索語とファイル名を指定しても
>grep 常駐VZ -memo
DOS のバージョンが違います.
と怒られます。64ビットだからか?


私の場合はエクスプローラーで msdos.exe を右クリックしてショートカットをデスクトップやタスクバーに作ります。
そのアイコンを右クリックでプロパティのショートカットタブのリンク先に

command.comが FreeCOM V7.0 の場合(VTDOSのサイトに有ります)
C:\UT\msdos.exe -x -e -v7.00 c:\ut\mp\command.com
これでDOS窓を開いて、VZ起動BATを打つか、又は
C:\UT\msdos.exe -x -e -v7.00 c:\ut\mp\command.com /k c:\ut\vzp.bat
これで常駐VZを直接起動出来ます。

command.comが MSDOS 6.2 の場合
C:\UT\msdos.exe -e -x -v6.20 c:\ut\p\command.com
これでDOS窓を開いて、VZ起動BATを打つか、又は
C:\UT\msdos.exe -e -x -v6.20 c:\ut\p\command.com /k c:\ut\vzp0.bat
これで非常駐VZを直接起動出来ます。

このように command.comの場所を変えて入れています。

リンク先の下の 作業フォルダの項目には
C:\UT
と入れています。DOSの実行ファイルの場所です。
これで
>grep 常駐VZ -memo
-memo 18 : まいったのは、常駐VZで編集中にコマンドラインに降りて小文字コマンド実行後

このような結果が出るのですが、私のVZ.DEF で問題が出るのです。(;_;)


11435/11403 BNY00646  shadow           Re^10: 子プロセスの問題?
( 1) 24/09/04 21:52 11434へのコメント(konnoさん) コメント数:1
次の環境で試しました

windows11 HOME 23H2
command.comは10#さんのFreeCOMJ 0.82 PL3 VTDOS 対応パッチ
ショートカットのリンク先
E:\msdos.exe -e -x -v0.82 E:\command\freecomv\command.com /c e:\go.bat
VZは常駐

次を実行すると
grep ##1.6 text.asm
VZの子プロセスではタブが化けてますが
コンソールを取り込むと常駐・非常駐ともに問題ないです
text.asm 623 : 	call	chkline1		; ##156.138
text.asm 749 : 	mov	[bp].tabr,cl		; ##156.116


11436/11403 GST01234  たけだ           Re^7:  今度はgrepで (^_^;)
( 1) 24/09/04 21:57 11431へのコメント(鈴木康弘さん) コメント数:2
16bitのCOMMAND.COMの有無で挙動が変わるようです。

VZのコマンドモードで、例えば「GREP 文字列 FILENAME」を実行すると、
COMMAND.COMを「 /C GREP 文字列 FILENAME」というコマンド引数付きで
子プロセスとして起動しようとします。
このとき、16bitのCOMMAND.COMが見つかれば、そのまま実行します。

COMMAND.COMが見つからない場合は、GREPを「文字列 FILENAME」という
コマンド引数付きで子プロセスとして起動するようになっていますが、
GREP.COMはコマンド引数の先頭がスペースでないと正常に動作しないようです。

後ほど対策を入れたバージョンを公開します。

11437/11403 GST01234  たけだ           Re^8:  今度はgrepで (^_^;)
( 1) 24/09/04 22:42 11436へのコメント(たけださん) コメント数:1
対策を入れたバージョンを公開しました。
GREPの件はこれで大丈夫だと思います。

11438/11403 GST01234  鈴木康弘         Re^9:  今度はgrepで (^_^;)
( 1) 24/09/05 07:12 11437へのコメント(たけださん) コメント数:2
> 対策を入れたバージョンを公開しました。
> GREPの件はこれで大丈夫だと思います。

 武田様、対応ありがとうございます。
 Vz1.59zのコマンドラインモードで、bkoさんのgrepは、めでたく正常に動作するようになりました。

 鈴木は解決したけれど、konnoさんの方はもっと事態が複雑みたい?

11439/11403 BQO00549  konno            Re^8:  今度はgrepで (^_^;)
( 1) 24/09/05 16:35 11436へのコメント(たけださん)
> 16bitのCOMMAND.COMの有無で挙動が変わるようです。

command.com が無くても動くとは知りませんでした。それで、CMD.EXEで
msdos vz159 /vz159 とやってみたのですが、サフ4 とかは出なかったです。

> COMMAND.COMが見つからない場合は、GREPを「文字列 FILENAME」という
> コマンド引数付きで子プロセスとして起動するようになっていますが、
> GREP.COMはコマンド引数の先頭がスペースでないと正常に動作しないようです。

なるほどそうだったのですか、これはわからないですね。

> 後ほど対策を入れたバージョンを公開します。

よろしくお願いします。m(__)m


11440/11403 GST01234  鈴木康弘         Re^10:  今度はgrepで (^_^;)
( 1) 24/09/05 17:36 11438へのコメント(鈴木康弘さん) コメント数:1
 すみません、完全解決というわけでなく、#11432でkonnoさんが報告された、

>  64k以上のファイルを編集中にコマンドラインに降りてコマンドを実行した時
> そのコマンドがエラーになった時に編集画面に戻ると、ファイルの内容が壊れるようです。

 の件です。
 ファイルの大きさにかかわらず、ファイルを開いておいて[ESC]Eなりでコマンドモードに降りて、DOSの外部コマンド(たとえばvmap)を実行させて、[ESC]でファイルに戻ると、ファイルが壊れた?ような表示になります。

 あわてずファイルを保存せずに閉じれば、ハードディスク上のファイルは壊れてないのですが。
 (これはVz1.59zだけの問題なのかは、僕は他のバージョンを持ってないので、わかりません。)


11441/11403 BQO00549  konno            Re^10:  今度はgrepで (^_^;)
( 1) 24/09/05 18:34 11438へのコメント(鈴木康弘さん) コメント数:1
>  Vz1.59zのコマンドラインモードで、bkoさんのgrepは、めでたく正常に動作するようになりました。

おお、おめでとうございます。
私の方では再現できなかったですが、少ない情報で対応できるのは流石ですね。

>  鈴木は解決したけれど、konnoさんの方はもっと事態が複雑みたい?

原因は 私家版の "検索文字列の取得"マクロ、TAGL_F5.def でした。
これでコマンド文字列を取り込んでからコマンド実行するとファイルが壊れるようです。
マクロ中で Taglight.exe を呼び出しているのですが、大文字なのでスワップします。
その後小文字コマンド実行で異常になるようです。
似たような異常は NT系 XP でもありましたが、VZの不具合のように思います。
sw0 か、大文字コマンドなら問題は出ないようです。

これは武田さんにお願いするわけにもいかないですね。
VTDOSやDOSVAXJ3で出ないのは何か対策してるのかしら。
NT系で異常が出るのが個人的に気になっているのですが。
確かVTDOSは286CPU相当とか、DOSVAXJ3も16ビットDOSなので、その辺の違いかなぁ。


11442/11403 BQO00549  konno            Re^11:  今度はgrepで (^_^;)
( 1) 24/09/05 18:45 11440へのコメント(鈴木康弘さん) コメント数:1
行き違いになってしまいました。(^^;

> >  64k以上のファイルを編集中にコマンドラインに降りてコマンドを実行した時
> > そのコマンドがエラーになった時に編集画面に戻ると、ファイルの内容が壊れるようです。

これは不正確でした。#11441 に書きましたが
大文字コマンドでスワップした後、小文字コマンド実行で異常になるようです。
似たような異常は NT系 XP でもありましたが、VZの不具合のように思います。
sw0 か、大文字コマンドなら問題は出ないようです。

>  (これはVz1.59zだけの問題なのかは、僕は他のバージョンを持ってないので、わかりません。)

なので、これは全てのVZで起こる現象だと思います。
VTDOSやDOSVAXJ3で出なかったので、何らかの対策法はあるかもしれません。


11443/11403 GST01234  たけだ           Re^11:  今度はgrepで (^_^;)
( 1) 24/09/06 02:03 11441へのコメント(konnoさん) コメント数:1
テスト版をこっそりアップロードしました。

"COMMAND /C (program) [arguments]"を実行するとき、
COMMAND.COMがあっても"program [arguments]"を直接実行するようにしています。

COMMAND.COMは何か色々特殊なことをやってそうなので、
COMMAND.COMを無駄に起動しないことで何か挙動が変わるかもしれません。

11444/11403 BQO00549  konno            Re^12:  今度はgrepで (^_^;)
( 1) 24/09/06 14:34 11443へのコメント(たけださん)
> テスト版をこっそりアップロードしました。
> "COMMAND /C (program) [arguments]"を実行するとき、
> COMMAND.COMがあっても"program [arguments]"を直接実行するようにしています。

武田さん、ありがとうございます。

> COMMAND.COMは何か色々特殊なことをやってそうなので、
> COMMAND.COMを無駄に起動しないことで何か挙動が変わるかもしれません。

試してみましたが、異常が出るのは変わりませんでした。
sw0 か、大文字コマンドなら問題は出ないようなので、いっそ全部スワップさせてみました。
そうしたら異常が出なくなりました。新旧MS-DOS Player で同じ結果でした。

VZの問題まで気にかけていただき、ありがとうございました。


11445/11445 BQO00549  konno            k07v6m(暫定) (2024-09-06)
( 1) 24/09/06 17:37 コメント数:2
k07v6m(暫定) (2024-09-06)を更新しました。

k07v6m(暫定) (2024-09-06)
 ・フォルダの階層が深いと拡張子が消えるなどまだバグあり、注意。
 ・オプション OZ4 で小文字コマンドでもスワップ。NT系DOS窓やMS-DOS Player対応。
 ※NT系DOS窓やMS-DOS Playerでは大文字コマンドでスワップした後、小文字コマンド実行で異常になるようです。

 ダウンロード  vzkv6m.lzh ver1.60k07v6m (2024-09-06版 ) new!



●OZ FreeDOS(98)用98版で編集画面でのカーソルキー、ctrl+ファンクションキー等が
   使用できる様になります。そのかわり、漢字入力が出来なくなります。
    FreeDOS(98)用に新設。
 ・OZ1
 ・OZ2 ?
 ・OZ4 小文字コマンドでもスワップ。NT系DOS窓やMS-DOS Player対応。vzkv6m
 ※NT系DOS窓やMS-DOS Playerでは大文字コマンドでスワップした後、小文字コマンド
 実行で異常になるようです。OZ4 は単独で指定してください。

子プロセスのメモリを広く開けたい人は SW3 で お試しあれ(VTDOSでSW3の不具合はこれ?)
OZ0 と OZ4 を切り替えて大文字小文字 VMAP で見てみると面白いです。

VZKドキュメント  #txt:VZK.TXT

# DOCは毒だ、TXTにしとけ。(;_;)


11446/11403 GST01234  鈴木康弘         Re^12:  今度はgrepで (^_^;)
( 1) 24/09/06 20:59 11442へのコメント(konnoさん) コメント数:1
 #11440 の現象もどうやら、VzのオプションSWが1-3の時に起こるようです。
 SW0なら起こりません。

11447/11403 BQO00549  konno            vzibj ver1.59zのパッチ版
( 1) 24/09/06 22:56 11446へのコメント(鈴木康弘さん) コメント数:2
>  #11440 の現象もどうやら、VzのオプションSWが1-3の時に起こるようです。
>  SW0なら起こりません。

SW0なら問題無いのですが、空きメモリが少なくなってしまいます。
大文字コマンドだけで運用するつもりでも、うっかり小文字コマンドを打ってしまうかもしれません。

試しに vz1.59z にパッチを当ててみたら、出来てしまいました。
vzibj ver1.59zのパッチ版です。
小文字コマンドでも強制的にスワップします。
変更部分は1バイトだけです。

メールで送りましたので、よろしかったら試してみてください。


310C:BB0C  80 3E 016E 00			cmp	data_360,0				; (310C:016E=1)
310C:BB11  74 13				je	realloc_gs_loc_2825	;★ goto swap	; Jump if equal
310C:BB13  80 3E 0288 00			cmp	data_425,0				; (310C:0288=0)
;310C:BB18  7E 0C				jle	realloc_gs_loc_2825	;★ goto swap	; Jump if < or =
xxxx:xxxx  EB 0C				jmp	short realloc_gs_loc_2825		; (BAE1)
      ↑
310C:BB1A  E8 F3D0				call	sub_693					; (AEED)
310C:BB1D  8B F8				mov	di,ax
310C:BB1F  56					push	si
310C:BB20  E8 00BC				call	sub_768			; (BBDF)
310C:BB23  5E					pop	si
310C:BB24  73 10				jnc	free_gs_loc_2826		; Jump if carry=0
310C:BB26			realloc_gs_loc_2825:					;  xref 310C:BB11, BB18


11448/11403 GST01234  鈴木康弘         Re: vzibj ver1.59zのパッチ版
( 1) 24/09/07 07:01 11447へのコメント(konnoさん) コメント数:1
> メールで送りましたので、よろしかったら試してみてください。

 お見事です。#11440 の現象は、外部コマンドが大文字小文字にかかわらず起こるので、正確にはkonnoさんの現象と違うと思っていました。
 でも、konno さんの修正vz159.comで、大文字でも小文字でも起こらなくなりました。
   

11449/11403 BQO00549  konno            Re^2: vzibj ver1.59zのパッチ版
( 1) 24/09/07 16:28 11448へのコメント(鈴木康弘さん)
>  お見事です。#11440 の現象は、外部コマンドが大文字小文字にかかわらず起こるので、正確にはkonnoさんの現象と違うと思っていました。
>  でも、konno さんの修正vz159.comで、大文字でも小文字でも起こらなくなりました。

異常が無くなったようでよかったです。

外部コマンドに限らずVZのスワップは command.com のスワップを監視している前提と思われます。
Win95DOS窓でズレた時は高橋さんが対応してくれましたが、NT系になって完全にわからなくなったのでは。
なので VZがスワップする領域に command.com が来る場合もあって、それがVZにはわからない。
それで今回のような異常が出るのではないかと思います。

これで暫く運用して問題が無ければ他にも適用しようと思います。


# 無想転生を極めれば、コマンド―の動きも見切れる。なんちて (^^;


11450/11450 BQO00549  konno            MS-DOS Player 2024/9/7版更新
( 1) 24/09/08 16:50 コメント数:2
MS-DOS Player 2024/9/7版が更新されました。
以下更新内容です。

-----------------------------------------------------------
2024/9/7
プロセスの起動周りのコードを整理しました。
影響の大きそうな変更も入っていますので、テストにご協力お願いいたします。

「COMMAND.COM /C TYPE (file)」のように、子プロセスで内部コマンドを実行する場合、
A-Z:/CHDIR/PATH/SETは、MS-DOS Playerの内部処理で実行するようにしました。
子プロセスでこれらのコマンドを実行しても、呼び出し元に反映されないためです。
その他のコマンドは、COMMAND.COMを子プロセスとして起動して実行をします。
COMMAND.COMがない場合、system()でcmd.exeに渡してWindows側で処理しますが、
TYPEコマンドについては、INT 29hを通るように、MS-DOS Playerの内部処理で実行します。

「COMMAND.COM /C 実行ファイル」を起動しようとして、COMMAND.COMがない場合は、
実行ファイルを直接起動しますが、このとき新しいプロセスの第1・第2のFCBを更新して、
実行ファイルに指定された引数が入るように修正しました。

INT 10hやINT 21hで文字を画面に表示する際、INT 29hを経由して表示した場合に、
(INT 29hをフックしている場合のみ、INT 29hを経由するようになっています)
INT 29hを直に呼んだように、制御コードがシンボルとして表示される問題を修正しました。

起動時にCOMMAND.COMを探す際に、PATHおよびMSDOS_PATHに指定されたパスを
探索していなかった問題を修正しました。
過去にコードを整理していたときに、処理の順番を誤って変更してしまったようです。
-----------------------------------------------------------

更新ありがとうございます。
最近更新した COMMAND.COM 関連などを整理した感じですかね。

気が付いたことがあればここに書いていきます。


11451/11450 GST01234  鈴木康弘         Re: MS-DOS Player 2024/9/7版更新
( 1) 24/09/08 17:51 11450へのコメント(konnoさん) コメント数:1
 konnoさんのパッチなしのVzでは、#11440 の現象は変わってません。
 ファイルが壊れた?と最初はぎょっとした現象ですが、慣れたし、実害はないから、いいのですが。

11452/11450 BQO00549  konno            Re^2: メインメモリ上のファイルが壊れる?
( 1) 24/09/08 19:34 11451へのコメント(鈴木康弘さん)
>  konnoさんのパッチなしのVzでは、#11440 の現象は変わってません。
>  ファイルが壊れた?と最初はぎょっとした現象ですが、慣れたし、実害はないから、いいのですが。

ちょっと試してみました。

1. 64k超を含む3つ以上のファイルを開いている場合	3番目のファイルは壊れない?

2. 1k程度のファイル1つの場合				壊れる

3. 1k程度のファイル3つの場合				全部壊れる

この結果から、メインメモリに有るファイルが壊れるようです。
 1.の3番目が壊れなかったのは、スワップ状態だったからと思われます。
なので、強制スワップは理にかなっていると思います。

これ、セーブすると壊れたままセーブされるので要注意ですね。
私は今までこの現象に気が付いていませんでした。(^^;
多分たまたま壊れたのだと思い無意識に破棄していたのだと思います。(^^;


11453/11450 BQO00549  konno            DEBUG や SYMDEB の中でヒストリー使える?
( 1) 24/09/08 20:32 11450へのコメント(konnoさん)
今回の更新とは関係ないですが、気が付いた現象

常駐VZは DEBUG や SYMDEB の中でヒストリーやラインエディト機能が使えますが
MS-DOS Player では使えないようです。
最初から使えなかったのか疑問に思ったので、古い版でも確認してみました。

17年版も18年版も駄目でしたが、22年版(2022/12/30)あたりだったかな、
常駐VZで DEBUG や SYMDEB の中でヒストリー機能が使えました。

おお、と思いましたが、これ以降、どの版でも最新版でも使えるようになっていたのです。
PCを再起動させても同じでした。何故???

理由はわかりませんが、同じように使えないという人は、一度22年版(2022/12/30)あたりを
起動してみてはいかがでしょうか。多分私だけだとは思いますが。(^^;


11454/11454 BQO00549  konno            DOSVAXJ3 JP240909版 (2024/9/9)
( 1) 24/09/09 23:22 コメント数:2
DOSVAXJ3 JP240909版 (2024/9/9)が更新されました。
更新内容は
-----------------------------------------------------------
build JP240909 (2024/9/9)
Vz 常駐時のコンソール履歴でコマンドラインの文字列が正しく取得できていなかったのを修正しました。
画面サイズが変更になった際にキーボード押下状態をリセットするかどうかの設定[sdl] resetkeyboardstate を追加しました。
Linux 版で SDL_FlushIMString() で確定文字列を取得するよう修正しました。
-----------------------------------------------------------

[sdl]
resetkeyboardstate=false

とすれば ^KL の画面切り替えがCtrl押しっぱなしで連続で出来ます。\(^^)/ ヤッタ-
コマンドラインも、コマンドの表示が正常になったようです。
ありがとうございました。


11455/11454 GST01234  鈴木康弘         Re: DOSVAXJ3 JP240909版 (2024/9/9)
( 1) 24/09/10 07:05 11454へのコメント(konnoさん) コメント数:1
 うーん、#11390 に書いた、
日本語文をCtrl-Mで確定した直後は、Ctrlキーから一度指を離さないとCtrlキーが使えない
 という問題はなおってませんね。

 #11395 のkonnoさんによれば、もう軟式さんの手元ではなおってるらしいので、公開されるのを待ちましょう。

             日本語長文を書く時にはMS-DOS Playerを使ってる 鈴木


11456/11454 BQO00549  konno            Re^2: DOSVAXJ3 JP240909版 (2024/9/9)
( 1) 24/09/10 07:50 11455へのコメント(鈴木康弘さん) コメント数:1
>  うーん、#11390 に書いた、
> 日本語文をCtrl-Mで確定した直後は、Ctrlキーから一度指を離さないとCtrlキーが使えない
>  という問題はなおってませんね。

あれぇ? もしかして違う問題だったとか。

2024/09/09  17:24           915,456 SDL.dll

この新しい DLL もコピーしていますよね?
それで [sdl] セクションに

#resetkeyboardstate = true
resetkeyboardstate = false 

これを追加しても駄目なら、作者様に報告するしかないですね。


11457/11445 BQO00549  konno            k07v6m(暫定) (2024-09-06)は問題あり
( 1) 24/09/10 14:55 11445へのコメント(konnoさん)
k07v6m(暫定) (2024-09-06)は問題ありました。

DOS.ASM のTPAあたりを弄ったのが原因で、アセンブルなどで問題が出ました。
致命的な問題が有るので使用を中止してください。
ご迷惑をおかけして申し訳ないです。m(__)m

なお、VZ1.59z のパッチ版は問題ないです。


11458/11454 GST01234  鈴木康弘         Re^3: DOSVAXJ3 JP240909版 (2024/9/9)
( 1) 24/09/10 17:57 11456へのコメント(konnoさん) コメント数:1
 おお、

> resetkeyboardstate = false

 が必要でしたか。

 そのように dosvoxj.conf を書き直してみたけれど、やっぱりなおってないです。
 konno さんは、Ctrl-M で日本語文を確定した後、Ctrlキー押しっぱなしのままで、Ctrlキーが効くんでしょうか?

11459/11454 BQO00549  konno            Re^4: DOSVAXJ3 JP240909版 (2024/9/9)
( 1) 24/09/10 19:44 11458へのコメント(鈴木康弘さん)
>  そのように dosvoxj.conf を書き直してみたけれど、やっぱりなおってないです。
>  konno さんは、Ctrl-M で日本語文を確定した後、Ctrlキー押しっぱなしのままで、Ctrlキーが効くんでしょうか?

すみません、私はマクロキーの話と思っていましたが、IMEの確定の話だったのですね。
私は IMEの確定に Enter キーを使っていたので気が付きませんでした。
Ctrl-M と Ctrl-Enter でも確定できるんですね。
これらのキーで確定した後は確かに Ctrlキー押しっぱなしでも英字が出力されてしまいますね。

確認してみたら、mingw-sdl2 フォルダの dosbox-x.exe の DOS/Vモードでは
IMEの確定後もシフト状態をキープ出来ました。

作者様にメールしてみます。
超多忙のため返事がもらえるかもわかりませんのでご了承のほどお願いいたします。


11460/11445 BQO00549  konno            k07v6n(暫定) (2024-09-10)※ 差替え版
( 1) 24/09/10 20:49 11445へのコメント(konnoさん)
k07v6n(暫定) (2024-09-10)※ 差替え版です。
 ・k07v6m(2024-09-06)版に致命的な問題が有ったため差し替えました。
 ・フォルダの階層が深いと拡張子が消えるなどまだバグあり、注意。
 ・オプション OZ4 で小文字コマンドでもスワップ。MS-DOS Player対応。
 ※ MS-DOS Playerでは編集中小文字コマンド実行で異常になるようです。

 ダウンロード  vzkv6n.lzh ver1.60k07v6n (2024-09-10版 ) new!


11461/11461 BQO00549  konno            Win7PC復活の話
( 1) 24/09/11 18:05 コメント数:1
少し前に Win7PCを復活させた記事を書いたと思ったのに検索しても出てきません。
いよいよボケが酷くなったかと一瞬思いましたが、一縷の望みを託し野ざらし言へ
有りましたよ。野ざらし言#5600 で書いていました。2024/05/25 だったんですね。

過去ログに抜けが有るのではないかと疑って、 [全部表示 保存用]でコピペし
NIFSORTW.EXE で並べ替えました。Siさん、ありがとうございます。m(__)m

連続番号チェックマクロまで作ってチェックしたら、けっこう1発言抜けがあるのね。
1つだけなら SPAM かもしれないけど、5発言抜けがあって焦りました。
生ログに残ってましたが、自分で消した雑記だったので見なかったことにしました。(^^;
各掲示板にお宝情報が分散しているので、リンクメモみたいなのが欲しいですね。(^^;


11462/11454 BQO00549  konno            DOSVAXJ3 JP240909版 DLL 差替え
( 1) 24/09/11 19:24 11454へのコメント(konnoさん) コメント数:1
軟式の作者様から DLLの差し替え版をいただきました。
以下メールの内容です。

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

 IME 確定時に Ctrl キーの押下状態を保持するよう修正してみました。
 64bit テスト版を下記よりダウンロードしてください。SDL.dll の差替となります。

https://www.nanshiki.co.jp/test/sdl_test.zip

 なお、掲示板に上記 URL を転載しても大丈夫です。

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

お忙しいところありがとうございます。DLLを差し替えたら動くようになりました。

> Ctrl-M で日本語文を確定した後、Ctrlキー押しっぱなしのままで、Ctrlキーが効くんでしょうか?

これがキチンと動くようになりました。
今回は DLLの差し替えだけなので、これが正式版となりそうです。


11463/11454 GST01234  鈴木康弘         Re: DOSVAXJ3 JP240909版 DLL 差替え
( 1) 24/09/11 20:23 11462へのコメント(konnoさん) コメント数:2
やった!

日本語文確定後も、Ctrlキー押しっぱなしで、往年のVzの動作をするようになりました。
これでDOSVAXJ3は完璧です!

(こまかい要望をもう少し言えば、ファイラーで英字を押した時に、自動的にWinIMEがオフになればいいな、というのもありますが、贅沢かも。)

もうMS-DOS Playerは使わなくなりそうな 鈴木


11464/11454 BQO00549  konno            Re^2: DOSVAXJ3 JP240909版 DLL 差替え
( 1) 24/09/11 21:59 11463へのコメント(鈴木康弘さん) コメント数:1
> やった!
> 日本語文確定後も、Ctrlキー押しっぱなしで、往年のVzの動作をするようになりました。
> これでDOSVAXJ3は完璧です!

おめでとうございます。(^_^)

> (こまかい要望をもう少し言えば、ファイラーで英字を押した時に、自動的にWinIMEがオフになればいいな、というのもありますが、贅沢かも。)

え? 私のところでは自動的に OFF になっていますが。
FP+ FR+ FK+ FQ+ この辺のオプションは全部 + になっていますか。
そういう話ではないのかな。

> もうMS-DOS Playerは使わなくなりそうな 鈴木

そういえば、こちらは ファイラーで自動 OFF しなかったような気が。


11465/11461 BQO00549  konno            板塀への番号リンクも復活
( 1) 24/09/11 22:28 11461へのコメント(konnoさん)
> 各掲示板にお宝情報が分散しているので、リンクメモみたいなのが欲しいですね。(^^;

そういえば、板塀への番号リンクも飛べなくなっていました。
直リンクになったので再チャレンジしたら出来ました。\(^^)/ ヤッタ-

板塀#4121  板塀を非フレーム化しました
#i4121  でも飛べます。(^_^)

?mode=article&amp;no=$2

このモードでないと番号ジャンプ出来ないんでした。(^^; ワスレテタ

ちなみに野ざらし言#5600#n5600 でも飛べます。
この辺の詳細な書式はテスト板 #t0067 #test67にあります。

# これでお宝取り放題だぜぃ



11466/11364 BQO00549  konno            「新着情報 」 v0.954 板塀への番号リンク復活
( 1) 24/09/11 22:41 11384へのコメント(konnoさん)
「新着情報 」 v0.954 更新しました。
#11465 で板塀への番号リンク復活できたので、こちらも再チャレンジ。(^^;

    my $url2 = 'http://toshiki.la.coocan.jp/itabei.rss';
#    my $url2 = 'http://27-138-85-108.rev.home.ne.jp:9801/bbs/wforum.cgi?mode=newsort';

上のリンクを下のように変更しようとしてうまくいかず、挫折していましたが
ここはサイトの存在確認みたいなものなのね、上のままでOKなのでした。(^^;

番号リンクの方もやっぱり

?mode=article&amp;no=$2

このモードでないと番号ジャンプ出来ないんでした。(^^; ワスレテタ

これで直してめでたく番号にジャンプ出来るようになりました。

# やれやれだぜ


11467/11454 GST01234  鈴木康弘         Re^3: DOSVAXJ3 JP240909版 DLL 差替え
( 1) 24/09/12 07:05 11464へのコメント(konnoさん) コメント数:1
> え? 私のところでは自動的に OFF になっていますが。
> FP+ FR+ FK+ FQ+ この辺のオプションは全部 + になっていますか。


 ええ、それらのオプションは全部 + です。

 純粋 MS-DOS/V パーテイション環境では、FQ-でも、プレフィックスキーを押した時自動的にFEPがoffになってましたが、DOSVAXJ3では、FQ+でないと自動offにならないので、そう変えました。
(MS-DOS Playerは、FQ+にしても自動offにならないのが悲しい。)

 konnoさんは、ファイラーでも英字が自動的にIME offになりますか。うらやましい。(^_^;

11468/11454 GST01234  鈴木康弘         Re^4: DOSVAXJ3 JP240909版 DLL 差替え
( 1) 24/09/12 07:38 11467へのコメント(鈴木康弘さん) コメント数:1
 あっそうだ。
 Vzの編集モードからファイラーに移るとき、マクロで &j(0) を入れればいいんだ。

 ごそごそ..できたっ。
 これで完璧な DOSVAXJ3下Vz になりました。v(^_^)

11469/11454 DGF01024  めざら           [無題]
( 1) 24/09/12 07:57 11463へのコメント(鈴木康弘さん) コメント数:1
参照先:http://mezala.la.coocan.jp/
> もうMS-DOS Playerは使わなくなりそうな

そういう言い方をしますか……
われわれは各種エミュレータを作者のご厚意で使わせてもらっているわけで,
いくら作者が自分が使うために作ったとしても,ちょっと敬意に欠けるかと.

今ごろ言うのもナニですが……
VZ v1.59z の使用期限は1993年の年内のはずで,ずっとモヤモヤしています.

使用期限はともかく,正規版を拡張する版を作成されている konno さんの板で
VZ での状況を相談するのであれば,環境を合わせる方が効率的だと思います.

オークションや蚤の市なら,まだ v1.6 を入手できる可能性はあるようですよ.


11470/11454 BQO00549  konno            Re^5: ファイラーで IME OFF
( 1) 24/09/12 16:35 11468へのコメント(鈴木康弘さん) コメント数:1
まとレスです

>  Vzの編集モードからファイラーに移るとき、マクロで &j(0) を入れればいいんだ。
>  ごそごそ..できたっ。
>  これで完璧な DOSVAXJ3下Vz になりました。v(^_^)

解決できたならいいのですが、うちと何が違うのかわからないとモヤモヤします。
メールでいただいた vz.def vzfl.def で同じ環境でやっても問題は出ないようです。
・・・もしかして #11426> MS-DOS Playerのvz起動用バッチは
>     cd vz
>     del vztemp.$$$
>     msdos -n26 vzibmj *.*

VZ起動BATで、*.* を付けて起動するとファイラー画面になりますが
VZ起動前に WinIME がONの状態だと、ファイラーでも ONのままになりますね。
もしかしてこのことでしょうか。

*.* 無しで起動すれば、オープン窓が出て、Enterでファイラーですが、IMEはOFFになります。
*.* で起動したいなら、vzfl.def の先頭に &j(0) を入れればいいのかな?
あ、結果的には同じ対策か。(^^;


11471/11454 BQO00549  konno            Re: [無題]
( 1) 24/09/12 16:59 11469へのコメント(めざらさん)
> そういう言い方をしますか……

私も心の中では色々思うこともよくありますが、公の場では控えるように心がけています。
場が荒れるのが嫌なので基本スルーの方針です。
まあ、自分もそうなので気にしない、ということですね。(^^;

> 今ごろ言うのもナニですが……
> VZ v1.59z の使用期限は1993年の年内のはずで,ずっとモヤモヤしています.

これは私もちょっとモヤモヤしました。
でも私にも覚えがあって・・・

とある店で製品版ではないコピーしたものをいただいてそのまま金も払わずに使ったことがあります。
相手の方はおそらく善意でやってくれたのでしょうが、それに甘えて使う私もおねだり君なのです。

まあ、VZ1.0のJ31移植版を生フロッピーにコピーできるのは世界に一人しかいないと思いますが。


11472/11454 GST01234  鈴木康弘         Re^6: ファイラーで IME OFF
( 1) 24/09/13 07:14 11470へのコメント(konnoさん) コメント数:1
 いえ、僕のvzibmj.defは、

56 \[CR] "ファイラー" (s)??{#O#m.} (2){(s&1)? #[}

と、編集モードからも\[CR](シフトEnter)でファイラーを立ち上げられるようにしています。
 IMEがonの編集モードからこれでファイラーを立ち上げると、IMEがonのままになってしまうのでした。

 なぜか[ESC]O、Enterと手で打てばIMEがoffになりますね。不思議。

ともかく#O#mの前に&j(0)を入れることにした次第です。


  DOSVAXJ3よりもMS-DOS Playerの方が、日本語入力自体はすこし軽快なのかなと、迷ってる 鈴木

11473/11454 BQO00549  konno            Re^7: ファイラーで IME OFF
( 1) 24/09/13 17:46 11472へのコメント(鈴木康弘さん)
>  いえ、僕のvzibmj.defは、
> 56 \[CR] "ファイラー" (s)??{#O#m.} (2){(s&1)? #[}
> と、編集モードからも\[CR](シフトEnter)でファイラーを立ち上げられるようにしています。

なるほど、マクロで直接ファイラーに行っているのですね、それなら納得です。

>  IMEがonの編集モードからこれでファイラーを立ち上げると、IMEがonのままになってしまうのでした。

この場合はやはりマクロでOFFにするしかありませんね。

>  なぜか[ESC]O、Enterと手で打てばIMEがoffになりますね。不思議。

VZのFEP制御がIMEでキチンと効いているからですね、VTDOSもそうですが、対応してくれた作者様に感謝です。

> ともかく#O#mの前に&j(0)を入れることにした次第です。

これが正解だったですね。

>   DOSVAXJ3よりもMS-DOS Playerの方が、日本語入力自体はすこし軽快なのかなと、迷ってる 鈴木

そうなんですか、長所短所も三者三様ですね。


11474/11403 BNY00646  shadow           Re: vzibj ver1.59zのパッチ版
( 1) 24/09/13 20:31 11447へのコメント(konnoさん) コメント数:1
パッチ情報をもとに高橋版とk07s5にパッチをあててみました。
各々のオリジナル版とバイナリデータそれなりに修正したソースをアセンブルしたものを比較したら修正箇所はパッチ情報と同じになったので・・・大丈夫のような?動作確認したら現象はなくなりました。
オプション化をチャレンジしましたが私には無理でした。
あっ、先の不具合が出なかった報告はSW0だったからでした。


11475/11403 BQO00549  konno            Re^2: vzibj ver1.59zのパッチ版
( 1) 24/09/14 00:00 11474へのコメント(shadowさん) コメント数:1
> パッチ情報をもとに高橋版とk07s5にパッチをあててみました。
> 各々のオリジナル版とバイナリデータそれなりに修正したソースをアセンブルしたものを比較したら修正箇所はパッチ情報と同じになったので・・・大丈夫のような?動作確認したら現象はなくなりました。

おお、勇者が現れた! \(^^)/ ヤッタ-
パッチ位置を探すのはかなり大変でした。ほとんど目視。(^^;
DEBUG の使い方も忘れていて、参考書を見てもさらっとしか書いてなくて。(;_;)
なので、おお、出来る人が現れた! と思ったのでした。(^^;

> オプション化をチャレンジしましたが私には無理でした。

チャレンジする心と実際にやってみるのが大事だと思います。
私も最初はパッチ当てが精いっぱいだったので、キーワードを検索してコメントから始めました。
やってることは VZマクロも BASIC もみんな同じですね。(^^;

> あっ、先の不具合が出なかった報告はSW0だったからでした。

そうだったのですか、私は Win11でもちゃんと動いているんだなぁ、などとぼーっと見てました。(^^;


11476/11025 CXB00940  としき           Re: 野ざらし言と板塀に全ログ検索を
( 1) 24/09/14 13:37 11030へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 今年は一念発起して、全ログ検索ルーチンをメールで送りつけることにしました。(^^;

めざらさんと同じく、気が向いたら、ということだったのですが。
まだまだ気は向いていないのですが、とりあえず導入する方向だ、ということだけは
明確にしておきましょう。とはいえ、最短で今年の11月ごろ、実際には数年先かも。

そもそも、なぜデフォルトでは全ログ検索になっていないのか、というところも妄想
してしまって。CGIの作り方として、その機能をつけないほうが楽、ということは当然
あるでしょう。原作者としては、もしかしたらそれだけしか考えていなかったかも
しれない。
だけど、全ログを舐めるって、結構なマシンパワーが必要なんですよ。
そして、うちで以前使っていた自宅サーバは、ものすごく貧弱。
とてもそんな機能を具備できないほど。
でも、現在使っている、もしかしたら暫定かもしれないサーバなら、十分対応可能。
ということで、理由のひとつは消えてしまいました。

あと、原作者の方のいろいろな発言やらインタビュー記事なんかも読んだことがあり
ますが、結構、利用者のことをいろいろと考えてコードを書いていらっしゃる。だから
利用者のほうでも妄想の余地があるといいますか。
例えば、もう何年も原作者のサイトは見に行っていませんが、かなりPerl5が普及した
時代になってもPerl4用のコードを提供していた。これも、Perl4しか使えない利用者
がまだまだいるから、ということでした。
そういう方が分割された過去ログごとに検索するというコードを書かれているのです
から、これは何らかの意図があってわざわざそうしているのではないか、と妄想する
のはたやすいこと。
なのでここは無批判に原作どおり、というのもありといえばありのはず。

とはいえ、上記のとおり、うちの板塀もそのうち導入する方針には舵を切ったわけ
ですよ。ま、期待せずにお待ちください、ということで。



ところで、過去ログの検索がらみでこちらの掲示板に一つ要望。
過去ログを開いたデフォルトで、検索ボタンの後ろというか右側、なんか改行が欠けて
いるような感じ。さらにそこから何か検索した場合、やはり同じところの改行が欠けて
いるので、最初に見つかった書き込みのタイトルがくっついてしまっている。
これはうまくないと思う。

あ、でも、これの試験をしているときに気がついた。
私、メインの現行ログで検索する時は全ログ検索で全く問題ないことが多いけれど、
少なくとも自分の板塀の検索においては、過去ログ検索のときはそのログだけを対象
にした検索になっていてほしいみたい。う〜ん、検索ルーチンは1個だけだからなぁ。
フラグ一つで何とかなるとは思うけど、この機能の実装はなんか面倒かも。


11477/11025 BQO00549  konno            Re^2: 野ざらし言と板塀に全ログ検索を
( 1) 24/09/14 19:38 11476へのコメント(としきさん) コメント数:1
> まだまだ気は向いていないのですが、とりあえず導入する方向だ、ということだけは
> 明確にしておきましょう。とはいえ、最短で今年の11月ごろ、実際には数年先かも。

おお、希望の光が。よろしくお願いします。m(__)m

> だけど、全ログを舐めるって、結構なマシンパワーが必要なんですよ。
> そして、うちで以前使っていた自宅サーバは、ものすごく貧弱。
> とてもそんな機能を具備できないほど。

確かに古いPCサーバーでは負荷が大きすぎるかもですね。

> でも、現在使っている、もしかしたら暫定かもしれないサーバなら、十分対応可能。
> ということで、理由のひとつは消えてしまいました。

おお、わくわく (^_^)

> とはいえ、上記のとおり、うちの板塀もそのうち導入する方針には舵を切ったわけ
> ですよ。ま、期待せずにお待ちください、ということで。

首と気を長くしてお待ちしてまーす。(^_^)

> 過去ログを開いたデフォルトで、検索ボタンの後ろというか右側、なんか改行が欠けて
> いるような感じ。さらにそこから何か検索した場合、やはり同じところの改行が欠けて
> いるので、最初に見つかった書き込みのタイトルがくっついてしまっている。

あ、ほんとだ、とりあえず暫定的に直しました。m(__)m
色々詰め込んでいるのでどこが悪いか特定に時間が掛かります。(^^;

> 私、メインの現行ログで検索する時は全ログ検索で全く問題ないことが多いけれど、
> 少なくとも自分の板塀の検索においては、過去ログ検索のときはそのログだけを対象
> にした検索になっていてほしいみたい。う〜ん、検索ルーチンは1個だけだからなぁ。
> フラグ一つで何とかなるとは思うけど、この機能の実装はなんか面倒かも。

うちのところでは現行ログの検索が全ログで、過去ログは各ログの検索になっているようです。
検索ルーチンが元々別になっていたような気が。


11478/11403 BQO00549  konno            SWAPバッチの効果検証
( 1) 24/09/15 16:36 11475へのコメント(konnoさん)
色々な環境で SWAPバッチの効果を確認してみました。
64k超のファイル編集中下のコマンドをTAGLF5でコピーしコマンドラインに降りて張り付け実行後戻る。
grep ##1.6 text.asm

環境		VZオリジナル	VZkv6n VZ159pach
MS-DOS Player	NG		OK
VTDOS121	NG		OK		この前後の違いが気になる
VTDOS122	NG		OK		としきさんの環境
VTDOS123	OK		OK		シェアウエア化

古いVTDOSの環境を上の理由で残しているので試してみた結果です。
古いVTDOSは MS-DOS Player と同じような結果になっています。
VTDOSがシェアウエアになる時にこの辺が修正されたようです。

#5084: VTDOS1.23がシェアウエアに  の記事で

> 1.22まであった4Ah のメモリの問題は出なくなったようですね。

と書いているので、ここの問題だったのかもしれませんね。

想像ですが、VTDOSも MS-DOS Player も WinNT系をベースに開発したのかなぁと。
10#さんはこの問題を解決するのに苦労して、それでシェアウエアにしたとかね。
あくまで想像です。(^^;


11479/11025 CXB00940  としき           Re^3: 野ざらし言と板塀に全ログ検索を
( 1) 24/09/15 19:17 11477へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> おお、希望の光が。よろしくお願いします。m(__)m

うん、まぁ、暗がりの中なら線香花火の火でも光には間違いない。
#ぽとっ

> > いるので、最初に見つかった書き込みのタイトルがくっついてしまっている。
> あ、ほんとだ、とりあえず暫定的に直しました。m(__)m

直っているのは確認できました。が。
暫定的、なんですか?

> 色々詰め込んでいるのでどこが悪いか特定に時間が掛かります。(^^;

詰め込みが直ったときが恒久的、ということなんでしょうか。
とりあえず、うちの板塀に全ログ検索が導入するよりも早く恒久化できることと
思います。ということにしておけば、konnoさんが詰め込みを直すまで、うちに
全ログ検索を導入せずに済む。よし、この方向で行こう。

> うちのところでは現行ログの検索が全ログで、過去ログは各ログの検索になっているようです。

たぶん現状でこの掲示板の挙動はkonnoさんの想定したとおりのものなのでしょう。
すると、それは私の想定した挙動ではない。
例えば、過去ログ0025とかで「八王子のラーメン」と検索すると、過去ログ0001の
発言が引っかかります。一方で、過去ログ0002で「vtdos」と検索しても、なにも
引っかからない。
あるいは「morek」という語句を、過去ログの0026、0025、0024で検索した場合の
挙動なんかをみると、なんか、検索を始めたログよりも過去方向にはたどるけれど
未来方向にはたどらない、という挙動のように見える。
私が自分のところに実装するなら、こういう挙動にはならないようにしたい、という
のが希望です。

どうもあれだ、私が溺れるというか大量すぎると認識してしまう情報量の閾値は、
konnoさんよりもえらく小さい模様。だから、いろいろなところでこまめに区切り
たい。例えば、掲示板のトップというかデフォルトで最初に表示されるところでも、
konnoさんはページ送りがないほうがいい人だけど、それだと私には情報量が多すぎて
使いづらい。だから、自分のところでは細かく区切って次ページにページ送りにして
いるのも、もしかしたらそういった感覚が影響しているのかも。

11480/11025 BQO00549  konno            Re^4: 野ざらし言と板塀に全ログ検索を
( 1) 24/09/16 00:31 11479へのコメント(としきさん) コメント数:1
> うん、まぁ、暗がりの中なら線香花火の火でも光には間違いない。
> #ぽとっ

何か落ちたような気もするけど、きっと雨ですね。(^^;

> とりあえず、うちの板塀に全ログ検索が導入するよりも早く恒久化できることと
> 思います。ということにしておけば、konnoさんが詰め込みを直すまで、うちに
> 全ログ検索を導入せずに済む。よし、この方向で行こう。

特に問題なさそうなので、正式版ということにします。(^^;
(バグってたらその時はその時、良い加減です)

> あるいは「morek」という語句を、過去ログの0026、0025、0024で検索した場合の
> 挙動なんかをみると、なんか、検索を始めたログよりも過去方向にはたどるけれど
> 未来方向にはたどらない、という挙動のように見える。

うう、うちのはそういう挙動になっていましたか、サーチルーチンは共通だったんですね。
直すならやっぱりフラグかなんかですかね。直す気はないけど。(^^;
うーん、でもとしきさん方式も良いかも。ちょっと迷ってきてます。(^^;

> どうもあれだ、私が溺れるというか大量すぎると認識してしまう情報量の閾値は、
> konnoさんよりもえらく小さい模様。だから、いろいろなところでこまめに区切り
> たい。例えば、掲示板のトップというかデフォルトで最初に表示されるところでも、
> konnoさんはページ送りがないほうがいい人だけど、それだと私には情報量が多すぎて
> 使いづらい。だから、自分のところでは細かく区切って次ページにページ送りにして
> いるのも、もしかしたらそういった感覚が影響しているのかも。

好みは人それぞれなので、個人の掲示板なら自分優先でいいと思います。
でもそれで他の人が使いづらくて来てくれなくなったらやっぱり困るなぁ。
ということで、結構いつも自他のバランスは考えてはいるつもりです。


11481/11025 CXB00940  としき           Re^5: 野ざらし言と板塀に全ログ検索を
( 1) 24/09/16 18:01 11480へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 特に問題なさそうなので、正式版ということにします。(^^;

ありゃりゃん。
それはおめでとうございますというべきか、残念というべきか。
私の方も可能な範囲で頑張りましょう。

> 好みは人それぞれなので、個人の掲示板なら自分優先でいいと思います。
> でもそれで他の人が使いづらくて来てくれなくなったらやっぱり困るなぁ。
> ということで、結構いつも自他のバランスは考えてはいるつもりです。

そうなんですよね、そのバランスが結構大変というか。
ネットなどで世の中の大勢がわかる問題ならまだしも。
自分の感性だけをよりどころにすると、私は世間の少数派であることが多い。
という自覚はあります。
いまだにDOSアプリ(エディタだけではなく)を使っていたりするし。
でも改善する意欲はあまりない。
ん〜、なんだろねぇ。


11482/11025 BQO00549  konno            Re^6: 野ざらし言と板塀に全ログ検索を
( 1) 24/09/16 22:40 11481へのコメント(としきさん)
> 私の方も可能な範囲で頑張りましょう。

よろしくお願いします。(^^;

> いまだにDOSアプリ(エディタだけではなく)を使っていたりするし。
> でも改善する意欲はあまりない。
> ん〜、なんだろねぇ。

これだけ長くやっているともう自分の環境は固定してますからねぇ。
でも最近は、昔取った杵柄というか、VZをまたやり出す人達も出てきてますし。
そんな時に提供できる情報は山のようにあるわけですよ。
でも有りすぎて探す手間の方が掛かってしまったりして。(^^;

その探す手間を減らし、素早く検索出来るようにしたくて全ログ検索を考えたわけです。
記事全文の改行を削除してワードが分断されないようにもしてみました。

他の掲示板の過去ログの収集を始めたのも、情報検索のためです。
他板への番号自動リンクも、新着情報もそのために更新しているといってもいいかな。
ということで、私はこれからも改造を進めていくつもりです。

# なんとかうまいことまるめ^H、纏められたかな。(^^;;