[HOME]  [現在掲示板へもどる] 
 番号順 全部表示   FGALVZ   

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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


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

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


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

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

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


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

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

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

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

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


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

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

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

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


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

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

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


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

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

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

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

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

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


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

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

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

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


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

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

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



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

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

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

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


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

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

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

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


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

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

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

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


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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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


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

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

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



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

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

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

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

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


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

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

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

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


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

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

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

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


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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

ということで、

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

この現象と

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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


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

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

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

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


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


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

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

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

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

謎ですねぇ……

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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


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

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


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


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

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

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

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


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

それはともかく,ですが

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

80 @^ "~" "〜" .

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

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

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


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


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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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


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

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


VZの部屋にあります。


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

konnoさん

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

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

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

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

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

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

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



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

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

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

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

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

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

mov cs:fl_wd,al ;

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

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

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


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

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

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

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


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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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


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


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

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


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


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

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

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

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


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

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

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

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


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

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

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

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

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


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

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

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

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

CHEJ 71

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

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

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


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


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

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

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

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


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

レシーブ トス スパイク
ワンツー ワンツー ATOK
「だけど誤字がでちゃう 普通の子だもん」

涙も汗も 若いファイトで
青空に遠く さけびたい

ATOK ATOK
ナンバーワン
ATOK ATOK
ナンバーワン


おそまつさまでした。(^^;


10929/10929 BQO00549  konno            寝室テレビ用PC買いました
( 1) 23/10/15 14:39 コメント数:1
我が家ではリビングのテレビでアマプラやYouTubeを観ています。
さらにPCに繋いでPC画面も表示できるので便利に使っています。
寝室で録画したものもリビングで観るとかも相互に出来るのでよく利用していますね。

でも寝室のテレビではYouTubeなどは観られません。
2013年ごろのテレビなのでそういう機能もあるのですが実用的には使えませんでした。
最近奥様が、寝室でも観たいと言ってきましたので、検討してみました。

テレビを買い替えるには出費もかさむので、安いノートPCでも買って繋げばどうかと考えました。
お馴染みのまーぶるPCを見ると、16800¥ で店長お任せの訳ありPCが目に入りました。
若干の傷や擦れがあるようですが、テレビ画面で見るなら問題ないかと思い、購入しました。

届いてみるとビックリ!
なんと、その前に購入した富士通のノートPCと見た目は全く同じ! (^^;
傷や擦れも特に見えません。
CPUがi3で若干遅いかもですが、YouTubeが見られれば問題なしです。
バックアップ用のサブノートとしても使えそうです。

新しいPCの仕様は
プロセッサ Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz 2.40 GHz
実装 RAM 8.00 GB (7.89 GB 使用可能)
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
エディション Windows 10 Pro
バージョン 22H2
OS ビルド 19045.3448

使用中のPCの仕様は
プロセッサ Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz 2.50 GHz
実装 RAM 16.0 GB
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
エディション Windows 10 Pro
バージョン 22H2
OS ビルド 19045.3448

ディスプレイは 1366 x 768 で同じですね。
今回は始めからSSD 256Gだからか、ハイブリッドスリープも OFF になっていました。
またしばらく楽しめそうです。(^_^)


10930/10929 DGF01024  めざら           Re: 寝室テレビ用PC買いました
( 1) 23/10/16 07:15 10929へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
祝着に存じます。
そういえば,ほとんど使っていないと聞いた GPD PocketPC という選択はなかった?

うちはテレビに繋ぐときは GPD MicroPC を使っています。

でも,寝室にPCを置けるスペースがあるなら,繋ぎっぱなしにできるのが一番ですね.

なにより,奥様のご要望に応えることができたのが一番でございますよ.

一年前に買ったのと同じって,どれだけ在庫があったのでしょう.
リース落ちにしてはちょっぴり前の型のようですが….


ベッドに入って見てると,寝落ちしちゃいませんか?

10931/10929 BQO00549  konno            Re^2: 寝室テレビ用PC買いました
( 1) 23/10/16 18:39 10930へのコメント(めざらさん) コメント数:1
> そういえば,ほとんど使っていないと聞いた GPD PocketPC という選択はなかった?

うう、暫く使っていない間にPINだかパスワードを忘れてしまい、往生しています。(;_;)
PASSのリセットとか初期化とかはどうやりましたっけ。(^^;

> うちはテレビに繋ぐときは GPD MicroPC を使っています。

上の事情で試せませんでした。(>_<)
タブレットも考えたのですが、操作のたびに持ち上げて指でタッチしたりも面倒な気がして。(^^;
ずっと持っているには重そうだし。(^^;
どっちがいいと思われますか。

> でも,寝室にPCを置けるスペースがあるなら,繋ぎっぱなしにできるのが一番ですね.

そう思って格安ノートPCをゲットしたんですが、置くスペースはあまりないのです。
無線マウスを置ける平らな台も必要ですね。どうするか思案中です。(^^;

> なにより,奥様のご要望に応えることができたのが一番でございますよ.

一応寝室のテレビでPC画面が見られるようにはなったのですが、まだ使ってはいないそうです。
まずは使ってもらって使い勝手を改善していきたいところですね。
・・・と言いながら私のサブノートとして着々と設定が進んでいたりして。(^^;

> 一年前に買ったのと同じって,どれだけ在庫があったのでしょう.
> リース落ちにしてはちょっぴり前の型のようですが….

一年前に購入したものは、CPUがi5で、若干性能が上のようです。
製造年は2016年で 49999¥でした。
今回の物は、CPUがi3で、製造年は2017年で 16800¥でした。うーむ、複雑な気分・・・

> ベッドに入って見てると,寝落ちしちゃいませんか?

それが一番の問題ですね。(^^;
まあ、付けっぱなしでも一定時間で電源は切れるんですが、省エネではないですよね。(^^;


10932/10929 BQO00549  konno            PCのパフォーマンス測定【Windows10】
( 1) 23/10/17 23:46 10931へのコメント(konnoさん)
CPUの違いでどのくらいパフォーマンスの差があるのか気になったので調べてみました。

PCのパフォーマンス測定方法【Windows10】
https://web-roku.com/pc-performance

ここのページから引用します。

-----------------------------------------------------------
Windows10に標準で入っている「WinSAT」を使ってPCのパフォーマンスを測定する手順を説明します。
WinSATは直接起動することができないため、まず先にWindows PowerShellを起動します。
Windowsキー+Rで「ファイル名を指定して実行」のウィンドウを開き、powershellと入力→「OK」

PowerShellの画面で、winsat formalと入力しEnterキー
WinSAT(黒いウィンドウ)が起動します。そのまますぐに測定が始まります。測定時間は数分です。PCに負荷をかけないようにじっと待ちましょう。
測定後は、PowerShell(青いウィンドウ)で測定結果のスコアを確認します。

PowerShellの画面で、Get-CimInstance Win32_WinSatと入力しEnterを押すと測定結果がスコアで表示されます。
-----------------------------------------------------------

Get-CimInstance Win32_WinSat の結果です。

Intel Core i5-6300U 2.50GHz
CPUScore : 8.5
D3DScore : 9.9 N/A
DiskScore : 8.1
GraphicsScore : 6.5
MemoryScore : 8.5
WinSPRLevel : 6.5

Intel Core i3-7100U 2.40GHz
CPUScore : 8.3
D3DScore : 9.9 N/A
DiskScore : 8.15
GraphicsScore : 6.2
MemoryScore : 8.3
WinSPRLevel : 6.2

うーむ、i5-6300U のほうが若干数値が高いくらいか・・・微妙。(^^;

項目の意味と記事中のPC Intel Core i3-7100U のスコアは

項目 スコア 意味 Intel Core i3-7100U
CPUScore 8.7 プロセッサのスコア
D3DScore 9.9 3Dグラフィックスのスコア ※D3DScoreはWindows10では測定できないため、9.9 固定。
DiskScore 5.95 ハードディスクのスコア
GraphicsScore 5.2 グラフィックスのスコア
MemoryScore 5.9 メモリーのスコア
WinSPRLevel 5.2 ベーススコア(各スコアの最低スコア)

う、うーむ、同じCPU同じ周波数なのにこちらの方がCPUの数値が高いのは何故? (;_;)


10933/10933 BQO00549  konno            VGAで動くアナログ時計とカレンダのアクセサリ
( 1) 23/11/17 00:36 コメント数:6
この記事は、ココログからの転載です。
http://tamaneko2.cocolog-nifty.com/vz2/

DOSVAXJ3のVGAで動くアナログ時計とカレンダのアクセサリをアップします。

きっかけは、最近文字が見えづらくなって、デジタル文字の時間がパッと読めなくなったことです。
大きなアナログ時計がパソコンで常駐出来ればなぁ・・・・

そうだ! 昔作った時計のアクセサリがあるじゃないか!
DOSVAXJ3で常時表示させておけば便利かも。

ということで、この古いプログラムの復活計画が始動したのでした。、
お茶を1分蒸らす時やカップ麺の3分などチェックできるタイマー機能もあります。(^_^)

現状データファイルの置き場所指定できないので、カレントに全部置いて使ってください。
DOSVAXJ3を起動したら、chev jp して、ファイル群のあるフォルダをカレントにしてから起動してください。

STIME.EXE を起動すると
このようにアナログ時計を表示します。

[F1]キーを押すと
このように大きなカレンダを表示します。
休日も表示します。

[F2]キーを押すと
このように、次月まで表示します。
誕生花と日程も表示されました。
これらは2度キーを押さないと表示しないようで、バグですね。まあおまけですので。

[PGDN]を押すと、押すたびに時計が拡大します。
[PGUP]を押すと、押すたびに時計が縮小します。

[ALT]+[F2]を押すと、秒針が太くなります。
[ALT]+[F4]を押すと、時分針が青くなります。
青い色を付けると、色が残ることがあります。
また、色付きの時は秒針が十字の位置で消えることがあるので太い秒針を用意しました。
SIN,COSの計算精度かPAINTの影響か、DOSVAXJ3 との相性か、わからないです。

簡易タイマーも2系統あるので、作業時間をチェックするとかに使えます。

簡易的な機能説明書も同梱したので、色々弄ってみてください。

自作、改作アプリの放置部屋  に置いてあります。


10934/10933 BQO00549  konno            Re: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/18 21:16 10933へのコメント(konnoさん) コメント数:1
いくつか間違いなど修正したのでファイルを差し替えました。11月18日版をお使いください。

todayx.bat は、実際には today2.bat で動いていたので、表記やファイル名を today2 に統一しました。

sedit.bat は、常駐VZから STIME.EXE を起動して BAT でVZを呼ぶと上手く動かないようです。
JED などのフリーのエデイタを指定してください。
常駐VZで上手く動かす方法、ありましたっけ?

# 常駐VZを使いたいのに本末転倒のような。(^^;


10935/10933 CRG00666  文太             Re^2: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/18 22:01 10934へのコメント(konnoさん) コメント数:1
konnoさん

 いー感じ。楽しそう。
 昨晩『AWAKE』という将棋ソフト開発についての映画をNetflixでみて、
今日、これを見て、ああ、プログラミングしたい、と久しぶりに思いました。
 いろいろいろいろあって、konnoさんが認知症になる前に(僕も続きまーす!)
いっぱい聞きたいのだけど、ううう、残念。
 たぶん、僕がやりたい技術がつまってるソフト。テキストファイルを読み込んで
表示、なんですよね。ベーシックも楽しそう。
 とはいえ、ベーシックだとライブラリーモジュールとか方言とか、いろいろある
んでしょうね。
 dosvaxが敷居、高い、、、。
 WinMEをはやく直さないと、、、。DOS機、はやく作りなおさくちゃ、、、。
 ぶぶぶぶ、の文太でした。
 もうちょい沈んでます。m(__)m

 うん、常駐Vzで使えないと、、、。敷居たかそうだなぁ、、、。

10936/10933 BQO00549  konno            Re^3: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/18 23:05 10935へのコメント(文太さん) コメント数:2
文太さん、お元気そうでなによりです。

>  昨晩『AWAKE』という将棋ソフト開発についての映画をNetflixでみて、

面白そうですね、私も昔ポケコンBASICでオセロの対人ゲームのソースを改造して
対コンピュータのオセロを作ったことがあります。恐らく世界最弱のアルゴリズムです。(^^;
私自身がオセロ弱いもので。(^^;
ソースは恐らくもう無いと思われます。もったいないことをしたなぁ・・・

> 今日、これを見て、ああ、プログラミングしたい、と久しぶりに思いました。

私もBASICのソースを弄っていて、やっぱりこういうのが好きなんだなぁ、と思いました。(^^;

>  いろいろいろいろあって、konnoさんが認知症になる前に(僕も続きまーす!)

私も色々あって健康不安などもあるし、ボケも進んでいきそうなので、備忘録など書いています。

>  たぶん、僕がやりたい技術がつまってるソフト。テキストファイルを読み込んで
> 表示、なんですよね。ベーシックも楽しそう。
>  とはいえ、ベーシックだとライブラリーモジュールとか方言とか、いろいろある
> んでしょうね。

あ、ソースいりますか。汚いけど参考になるならソースもアップしようかな。
古い雑誌の例題ソースなどは弄って公開しても問題ないですよね。(^^;

>  dosvaxが敷居、高い、、、。

軟式さんのサイトから最新のdosvaxをダウンロードして展開したらフォルダそのままで使えます。
#10764: Re^2: DOSVAXJ3 (2023/4/14) 更新 投稿者: konno   2023/04/15(土)
#10765: DOSVAXJ3の dosboxj.conf 設定例 投稿者: konno   2023/04/15(土)
あたりが設定の参考になると思います。簡単ですよ。(^^;

>  うん、常駐Vzで使えないと、、、。敷居たかそうだなぁ、、、。

とりあえず JED を入れてみました。結構使えそうです。(^^;
本来は自作のエデイタもどきと連携していたんですがね。(^^;


10937/10933 BQO00549  konno            VGAで動くアナログ時計とカレンダのアクセサリの説明書
( 1) 23/11/18 23:30 10933へのコメント(konnoさん)
STIME.EXE 説明書	Ver 8.231116

DOSVAXJ3のVGAで動くアナログ時計とカレンダのアクセサリです。
現状データファイルの置き場所指定できないので、カレントに全部置いて使ってください。
DOSVAXJ3を起動したら、chev jp して、ファイル群のあるフォルダをカレントにしてから起動してください。


・STIME.LZH に同梱されているファイル
STIME.EXE 実行ファイル
STIME.TXT このファイル
SEDIT.BAT SEDIT.BATで指定したエデイタ(非常駐VZなど)で各種設定表を編集
TODAY2.BAT TODAY2.BATで指定したCNFファイルでTODAYを実行 (歴史データ大型版表示など)
HOLIDAY.DAT 休日データ。TODAY のデータに準じている? 新しい祝日形式には対応していません。
SCHEDULE.DAT 日程データ。表示のバグがあるので実用ではないです。
FLOWER.TBL 誕生花 TODAY のデータを流用。使えるかは?


・ファンクションキーなどの機能

F1:カレンダー 当月の大きなカレンダーを表示
F2:カレンダ2 当月の大きなカレンダーと次月を表示
F3:カレンダ3 月を指定してカレンダーを表示
F4:日程 SEDIT.BAT で指定したエデイタでスケジュール表SCHEDULE.DATを編集
F5:TODAY TODAY.EXE があれば TODAY を実行
F6:Time1 タイマー1の表示。押すたびに経過時間を表示
F7:Time2 タイマー2の表示。押すたびに経過時間を表示
F8:日時変 日時の変更。DOSVAXJ3では時間の変更不可
F9: CLS 画面をクリアして時計表示
F10: END 終了

[SHIFT]
F1:MS-DOS 終了
F3:Bio
F5:TODAY2 TODAY2.BAT で別の設定(TODAY3.CNFなど) でTODAYを実行
F7:Vmap VMAP.COM があれば VMAP を実行

[CTRL ]
F1:sys 終了 (DOSVAXJ3 ではキーマップ表示?)
F2:HR

[ ALT ]
F1:end 終了
F2:秒針2 秒針表示を2本線に
F3:秒針1 秒針表示を1本線に
F4:長針青 時分針を青色表示
F5:長針透 時分針を色無しで表示

[PGUP] 押すたびにアナログ時計を縮小表示
[PGDN] 押すたびにアナログ時計を拡大表示


・バグ、更新履歴
※ 日程表示はカレンダ表示を2度押さないと表示しないバグ有り
※ DOSVAXJ3で負荷が100%になるのでキー入力ループで INT28 INT2F(AX1680)を入れた。
※ DOSVAXJ3でカーソルが表示しないのでグラフィックで疑似カーソル使用。


10938/10933 CRG00666  文太             Re^4: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/18 23:31 10936へのコメント(konnoさん) コメント数:1
konnoさん

>私もBASICのソースを弄っていて、やっぱりこういうのが好きなんだなぁ、と思いました。(^^;
 この感じがジンジン伝わってきて、僕もけっこう幸福感かんじましたよ。

>私も色々あって健康不安などもあるし、ボケも進んでいきそうなので、備忘録など書いています。
 ガンガンいってください、というか、ぼちぼちぼつぼち行ってください!

>あ、ソースいりますか。汚いけど参考になるならソースもアップしようかな。
 いいですね!

>古い雑誌の例題ソースなどは弄って公開しても問題ないですよね。(^^;
 ない! に一票!
 ソースがどんな見栄えなのか、想像もつかないんですよね。
 時計とカレンダーは実は完全に別物で、時間だけファンクションコール(これを
呼ぶモジュール?)、カレンダーはテキストから読み込んで表示、これらを合体させて
ファンクションキーで切り替える、とか想像したのですが。
 (この合体と切り替えが難しそう、と思いました)−−−とんちんかんなこと
言ってても怒っちゃやーよ。動かせてないのですから。

 アナログ時計の秒針を進めるのとかは、既存モジュールあり? ああいう(?)
グラフィックなのは考えたことがない、、、。

>>  dosvaxが敷居、高い、、、。
>軟式さんのサイトから最新のdosvaxをダウンロードして展開したらフォルダそのままで使えます。
 い、いつか、やります。vtdosもまともに使えてない、、、。

>>  うん、常駐Vzで使えないと、、、。敷居たかそうだなぁ、、、。
>とりあえず JED を入れてみました。結構使えそうです。(^^;
 僕も柔軟になりまして、これでいいじゃん、とも思いましたよ。JED, 16bit のフリー
エディタ。いいじゃないの。
 ただ、今日、久しぶりに「やっぱVzだろう」とか思っちゃたんですよね。
 いいですよ、このエディタ。Vzっていうんですけど、

 俺の体(あるいは頭)、まだ大丈夫なのか? とか思いながらも、
のんびりのんびり、ぐてぐてぐてぐて、いきましょう!
 ありがとうございます。m(__)m



10939/10933 BQO00549  konno            Re^5: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/19 22:51 10938へのコメント(文太さん) コメント数:1
>  時計とカレンダーは実は完全に別物で、時間だけファンクションコール(これを
> 呼ぶモジュール?)、カレンダーはテキストから読み込んで表示、これらを合体させて
> ファンクションキーで切り替える、とか想像したのですが。

時間は time$ というシステム変数を使います。00:00:00 ( 時:分:秒 ) 文字列の形で入っています。
カレンダーは計算だけで表示できます。祝日データをテキストから読み込んで表示します。
VZマクロのカレンダーと同じことをやっています。言語形式が違うだけです。

>  (この合体と切り替えが難しそう、と思いました)

合体は私の得意技です。無駄な部分を無くし変数を統一して最適化するのは結構大変ですが。(^^;

>  アナログ時計の秒針を進めるのとかは、既存モジュールあり? ああいう(?)
> グラフィックなのは考えたことがない、、、。

オリジナルの例題には秒針はありませんでした。

200 Y!=PI!-T2*PI!/30 '分針
210 Z!=PI!-(T1*60+T2)*PI!/360 '時針

オリジナルの記述です。コメントは私がつけたものです。
これを参考にして、秒針を追加したのです。

10390 X9!=PI!-T3*PI!/30: '秒針
10400 X!=X9!: '秒針

文字盤の文字も、拡大縮小するためにドットデータを自分で作ったみたいです。(覚えていない)(^^;
時計も万年カレンダーもソースは1ページ以内で出来ているので打ち込みは大した手間ではなかったです。
改造部分で何倍にも膨らんでしまって今では何をやっているのか調べるのも容易ではないです。(^^;

>  俺の体(あるいは頭)、まだ大丈夫なのか? とか思いながらも、
> のんびりのんびり、ぐてぐてぐてぐて、いきましょう!

マイペースで行くのが一番ですね。
プログラミングはストレス発散のため!
# でもそれがストレスを生むという説も。(^^;


10940/10933 CRG00666  文太             Re^6: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/20 00:31 10939へのコメント(konnoさん) コメント数:2
konnoさん

 ご丁寧にいろいろとありがとうございます。
 おもしろい!
 おもしろかったから、電脳組社製の「BASIC/98 for DOS/V」(注1)という
ベーシックのマニュアルとか、QBasic By Example とかの本をもってきてしまいました。
 まずDOS機を復活させないと、ベーシック・プログラムのインストールすら
できない、、、。
 dosvaxは? 敷居、たかし。気力が、、、。

 最初に。
>プログラミングはストレス発散のため!
># でもそれがストレスを生むという説も。(^^;
 趣味ですよ、趣味。仕事も何にも関係ない。しかし仕事がらみだと、嫌になっても
根性で最後まで走るという動機があったりもしますが。(注2)
 パソピア、高いねぇ。でも、格好いいですねぇ。

 以下、というか全部、独り言みたいなものです。

 で、T-Basicというのは、Turbo Basicということですか? ボーランド製?
 深い意味はありませんが、以下に、書法がそれぞれあるんだろうな、とか思い。

>時間は time$ というシステム変数を使います。00:00:00 ( 時:分:秒 )
>文字列の形で入っています。
 さすがベーシック。システム変数を呼ばれたら中でファンクションコール
してくれるんだ。Vzのファイラで、「K」とやると「ディレクトリ作成ファンク」
を呼んでくれるのと同じですね。
 time$, date$。システム変数に「$」を末尾につけるのは、どこも同じみたい、、、。

>VZマクロのカレンダーと同じことをやっています。言語形式が違うだけです。
 この辺り、弱いですねぇ。読んだことないなぁ。
 基本的に、時計やカレンダーはPCの外でよい、という考えできております。
あれ? データの読み込みと描画なの。

>合体は私の得意技です。無駄な部分を無くし変数を統一して最適化するのは結構大変ですが。(^^;
 うん、既存のものに付加機能を足すのは、うん、けっこう大変そうだ。

>200 Y!=PI!-T2*PI!/30 '分針
>210 Z!=PI!-(T1*60+T2)*PI!/360 '時針
 「!」は、ユーザ変数のマーキングですよね、きっと。使われなくなったLET
ステートメント。「!」最初、何かと思った。
 「T1」「T2」「T3」も、ユーザ変数ですよね? ???
 (行番号がまだ入ってる、、、。そうしないと、ベーシックのソースらしくない?
  行番号ジャンプとかするの?)

>10390 X9!=PI!-T3*PI!/30: '秒針
>10400 X!=X9!: '秒針
 「X9」の「9」の意味は想像できる。とりあえず「9」
 正確にではないですが、「30」とか「360」での割り算は、アナログで、円の中での
角度でしょうね。

>文字盤の文字も、拡大縮小するためにドットデータを自分で作ったみたいです。(覚えていない)(^^;
 これです! やっぱそうなのかぁ! やってみたい!

>時計も万年カレンダーもソースは1ページ以内で出来ているので打ち込みは大した手間ではなかったです。
>改造部分で何倍にも膨らんでしまって今では何をやっているのか調べるのも容易ではないです。(^^;
 うううう、大変そう。
 でも、気持ちも状態も経緯も、いちおう想像できます。意外に太るのよ。

 でも、とにかく。
 部屋の整理、心の整理、そしてDOS機復活作戦が優先順位となっております。
すみませぬ。


(注1)後継ソフト(ベーシック)がWin11で動きます、というのを社のサイトで
見つけた。がんばっておられますなぁ。世の中にニーズがあるんですねぇ。

(注2)どうでもいい注。例の『AWAKE』という将棋ソフト開発映画で、「ソフト作りたい!」
と思った主人公は、「プログラミング研究会」に入部します(大学生)。
 主人公は、元プロを目指した棋士。が、プログラミングは、ど素人。
 入部場面で書かされる自己紹介用データシートには、名前などのほか「使用言語」
という欄がある。彼は、「日本語」と書く。
 で、本を3冊渡される。「全部暗記してきて」。暗記完了。テスト合格。次、5冊。
そして、ついに、将棋ソフトが動き出す、、、。
 動機なんですよね。将棋学習の場面もプログラミング学習の場面も、雰囲気はほぼ同じ。
あふれる情熱。圧倒的な集中力。
 もう僕には残ってないかなぁ、という感想、、、。
 のんびりいこう! ストレスためない程度にがんばろう! という結論。

 上、ちゃんとVzで書きました。えばるこっちゃないぞ。
 あ、ソース、上げてください!



10941/10933 BQO00549  konno            Re^7: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/21 00:41 10940へのコメント(文太さん)
>  で、T-Basicというのは、Turbo Basicということですか? ボーランド製?

これは東芝製BASICという意味だと思います。元はMSのGW-BASICを日本語化したのでしょう。

>  「!」は、ユーザ変数のマーキングですよね、きっと。使われなくなったLET
> ステートメント。「!」最初、何かと思った。

「!」は浮動小数点型の変数という指定です。
「%」は整数型の変数という指定です。同じ名前でもこれをつけると別の変数となります。

>  「T1」「T2」「T3」も、ユーザ変数ですよね? ???

そうです。頭がアルファベットでシステム変数以外なら自由に名前が付けられます。

>  (行番号がまだ入ってる、、、。そうしないと、ベーシックのソースらしくない?
>   行番号ジャンプとかするの?)

初期のBASICインタプリタは行番号が必須でしたが、最近のはいらないようですね。

>  正確にではないですが、「30」とか「360」での割り算は、アナログで、円の中での
> 角度でしょうね。

その通りです、ちなみに、「PI!」は浮動小数点型のシステム変数で、3.14159 という円周率です。
(記憶で書いたけど合っているかな (^^;)

>  でも、とにかく。
>  部屋の整理、心の整理、そしてDOS機復活作戦が優先順位となっております。

私も同じです。(^^; 他にも懸案事項が山済みで。ヽ(^^;)オイオイ

> (注1)後継ソフト(ベーシック)がWin11で動きます、というのを社のサイトで
> 見つけた。がんばっておられますなぁ。世の中にニーズがあるんですねぇ。

あの時代を生きた世代は BASIC が友達みたいなものなのかも。(^^;

>  動機なんですよね。将棋学習の場面もプログラミング学習の場面も、雰囲気はほぼ同じ。
> あふれる情熱。圧倒的な集中力。

まさに、あの頃の情熱と集中力はもう戻らないのか・・・・

>  もう僕には残ってないかなぁ、という感想、、、。
>  のんびりいこう! ストレスためない程度にがんばろう! という結論。

結局長く続けるにはこれが一番! ですね。(^^;

>  あ、ソース、上げてください!

ただいまコメントを整理中です。(^^;
汚くて恥ずかしいけど揚げちゃいますね。(^^;


10942/10933 CXB00940  としき           Re^7: VGAで動くアナログ時計とカレンダのアクセサリ 差替え
( 1) 23/11/22 01:14 10940へのコメント(文太さん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
文太さんはDOS機復活ですか。
私はXPマシン復活中です。
生きているマシンはいくつかあるのですが、やっぱり画面サイズとかいろいろあって。
それはさておき。
かつてはN88-BASICがネイティブ、とか言っていた私としては、この辺の話題にも
足跡を残しておきたいかな、と。
なので、いろいろと散文を書き散らかします。

電脳組の「BASIC/98」は、for FMRを持っています。
ポケ3での動作確認のためだけに購入しました。
ざっくりと見た範囲では、きちんとポケ3でも動きました。
まだどこかにしまってあるはずだけど、どこにあるかなぁ。部屋に喰われた。
ちなみに、言語仕様は、かなりN88-BASICに近かったと記憶しています。
私の記憶が確かなら、その当時、後継を名乗れそうなほどN88-BASICに言語仕様が
近かった処理系が二つあって、そのうちのひとつが「BASIC/98」だったような。
ん〜、記憶が怪しい。

>  dosvaxは? 敷居、たかし。気力が、、、。

これ、konnoさんもおっしゃっていますが、動かすだけなら敷居はないも同然。
解凍して実行ファイルを起動するだけですから、DOS窓を動かすのと比べていったい
何が違うのか、ぐらいの感覚。


以下、BASICのお話。
基本的に東芝のT-BASICとNECのN88-BASICはそこそこ似ているはずですが、konno
さんのお話だと、やっぱりちょっと違うみたい。
まず、おそらく同じであろう部分。もしかしたら違うかもしれないけど。
変数は、コードが実行されて初めて領域が確保されます。
この辺はインタプリタ言語であるawkやperlも同じはず。
だから、マイクロ秒の単位で時間を稼ぎたいプログラムの場合、プログラムの途中で
領域を確保する時間が惜しいということで、プログラム冒頭でたとえばゼロを代入
するなどして、そこで領域を確保しておく、なんて技を使っているコードも見かけ
ました。
変数の型については、接尾辞をつけなければ、デフォルトで実数型。
「!」をつければ明示的に実数型。
「$」だと文字列型、「%」だと整数型、「#」だと倍精度実数。
デフォルトを変えることもできました。
「DEFINT A-C」と宣言すると、頭文字がAからCで始まる変数は接尾辞なしで整数型。
「DEFSTR D-F」と宣言すると、頭文字がDからFで始まる変数は接尾辞なしで文字列型。

ここまではT-BASICとN88-BASICで同じ部分。
一方、なんとなく違ってそうなのがシステム変数。
N88-BASICにも、TIME$とDATE$はありました。
でも、円周率を表すシステム変数はありません。
なので、自分でプログラムの最初の方で、例えば「PI=3.14」とか代入していました。
だから、人によって、コードで使われている円周率が異なっていたり、円周率を表す
変数名がPIだったりPAIだったりと一定していなかったり。

あぁ、なんだってこんな、いにしえのBASICの文法解説をしているんだろう(笑)。


10943/10933 CXB00940  としき           オセロ
( 1) 23/11/22 01:14 10936へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
私もオセロのプログラムを作りかけていて、いまだに完成していないのですが。

> 面白そうですね、私も昔ポケコンBASICでオセロの対人ゲームのソースを改造して
> 対コンピュータのオセロを作ったことがあります。恐らく世界最弱のアルゴリズム

これ、とっても気になります。
どういうアルゴリズムだったか、覚えておられます?
ちなみに、私の作ろうとしていたのは、俗に優先順位法というアルゴリズムです。
全てのマスに1から60までの優先順位をふって、優先順位の高い方から置けるか
判定して、置ければそこに置く、というやつ。なので、優先順位のふり方次第で、
それなりに強かったり全く弱かったり、となります。たとえば、四隅の優先度が
一番低かったら弱くなる、ということで。
そういえば、8ビットの昔も昔、PC-8001用のオセロと対戦したことがあるのです
が、えらく強かったなぁ。
こいつはロジック部分がフルアセンブラで、おまけに残り10手になった時に残りの
手をすべて読み切る仕様となっていて、そこだけちょっと待ち時間が長かったのです
が、それでもほんの数十秒。
今のパソコンなら、1手ごとに最後まで読み切ることもできるのでしょうね。


10944/10933 BQO00549  konno            BASIC道への入り口
( 1) 23/11/22 23:55 10942へのコメント(としきさん) コメント数:1
> でも、円周率を表すシステム変数はありません。
> なので、自分でプログラムの最初の方で、例えば「PI=3.14」とか代入していました。
> だから、人によって、コードで使われている円周率が異なっていたり、円周率を表す
> 変数名がPIだったりPAIだったりと一定していなかったり。

あれ? と思って確認してみたら、「PI!」は自分で設定していました。(>_<)
STIME.bas のソース

10080 X1=77-SC!*2:PI!=3.14159:

結局、円周率を表すシステム変数は無いというのが正解だったようです。
確認もしないで間違ったことを言って申し訳ないです。m(__)m

> あぁ、なんだってこんな、いにしえのBASICの文法解説をしているんだろう(笑)。

BASIC地獄、いやさ、天国への道はまだまだこれからですよ。(^^;


10945/10933 BQO00549  konno            Re: オセロ
( 1) 23/11/23 00:13 10943へのコメント(としきさん) コメント数:1
> 私もオセロのプログラムを作りかけていて、いまだに完成していないのですが。

おお、良いですね。こういうのはアルゴリズムを考えるのも楽しいですよね。
としきさんはオセロ強いですか? 私はヘタの横好きで。(^^;

> > 面白そうですね、私も昔ポケコンBASICでオセロの対人ゲームのソースを改造して
> > 対コンピュータのオセロを作ったことがあります。恐らく世界最弱のアルゴリズム
>
> これ、とっても気になります。
> どういうアルゴリズムだったか、覚えておられます?

全く覚えていないんですよ。(;_;)
もしかしたらカセットテープにソースが残っているかもですが、今では取り出す方法が・・・
ああ、本当に諸々捨てないで取っておけば良かったなぁ、と思う今日この頃です。(;_;)

> ちなみに、私の作ろうとしていたのは、俗に優先順位法というアルゴリズムです。
> 全てのマスに1から60までの優先順位をふって、優先順位の高い方からおけるか
> 判定して、置ければそこに置く、というやつ。なので、優先順位のふり方次第で、
> それなりに強かったり全く弱かったり、となります。たとえば、四隅の優先度が
> 一番低かったら弱くなる、ということで。

何となくそれに近い考え方で作ったような気がします。
でも出来たのは、世界最弱のコンピュータオセロでした。(>_<)
私自身が頭が悪いせいですね。(;_;)

> そういえば、8ビットの昔も昔、PC-8001用のオセロと対戦したことがあるのです
> が、えらく強かったなぁ。

将棋でもオセロでも、強い人がアルゴリズムを考えることで本当に強いものが出来るのでしょうね。


10946/10933 BQO00549  konno            新祝日対応のデータ形式
( 1) 23/11/23 02:38 10933へのコメント(konnoさん) コメント数:2
STIME.EXE は古いプログラムゆえ、カレンダは新祝日法に対応していません。
日曜が祝日の場合に月曜が振替休日になるようには作っているみたいですが。

で、コメントの整理中にふと、カレンダマクロが対応しているから見てみようかと思ったのです。
CALENDAR.DEF Yushi さんのモノクロ版カレンダー拡張wanama版は全く理解できませんでした。
LXCLND.def  Emmettさんのカレンダーは祝日データに工夫がしてありました。

72: ;---- holiday definition -----------------------------------------
; (6) 日付の位置に半角大文字アルファベットを書くと「?回目の?曜日」
; を指定したことになる(回数の数値は A==1, B==2, ...を意味し、曜日
; は A==日曜日, B==月曜日 ... を意味すると解する)。

hh..1 = "1874>0=1;1874>1948=3;1949>1999=15;2000>0=BB",


これは1月の祝日データですが、注目すべきは後半の成人の日。

1949>1999=15; 1949年から1999年までは、15日固定
2000>0=BB", 2000年以降は、B(2回目の)B(月曜日)

この形式は使える!
HOLIDAY.DAT に早速入れてみました。

01/15 1948-1999 成人の日
01/BB 2000-2099 成人の日

これで同じように解釈させれば出来るはず!
と思ったのですが、マクロが全然読めなくて、解釈する部分もわかりません。(;_;)
どうしよう・・・・


10947/10933 CXB00940  としき           Re^2: オセロ
( 1) 23/11/23 13:31 10945へのコメント(konnoさん) コメント数:2
参照先:http://toshiki.la.coocan.jp/
> としきさんはオセロ強いですか? 私はヘタの横好きで。(^^;

中学生のころまでは、クラスで3番くらいの強さでした。
でも、大人になったら、平均よりちょっと強いくらい、でしょうか。

> > ちなみに、私の作ろうとしていたのは、俗に優先順位法というアルゴリズムです。
> 何となくそれに近い考え方で作ったような気がします。
> でも出来たのは、世界最弱のコンピュータオセロでした。(>_<)

これ、世間には優先順位のサンプルがいくらでもあったはずなので、そういうのを
そのまま実装すればそこまで弱くはならないはず。
例えば、乱数で手を打つプログラムを作ったら、強い時と弱い時がある、気分屋と
いうか不安定な強さになるだろうし。
本当に安定して弱いプログラムなら、むしろそのアルゴリズムを教えてほしい。
いや、マジで。

> 将棋でもオセロでも、強い人がアルゴリズムを考えることで本当に強いものが出来る

8ビット当時の最強は森田オセロだったはず。
私が対戦したのは、もしかしたらそれかもしれない。
もう覚えていませんが。

10948/10933 CXB00940  としき           Re: BASIC道への入り口
( 1) 23/11/23 14:07 10944へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> > あぁ、なんだってこんな、いにしえのBASICの文法解説をしているんだろう(笑)。
> BASIC地獄、いやさ、天国への道はまだまだこれからですよ。(^^;

うふふふふ〜。
では、もうちょっと文法解説。
PC-8001のN-BASICでは、変数名には2文字までしか使えませんでした。
3文字以上の変数名を使おうとした時にエラーになるのか、それとも最初の2文字
しか認識されず、3文字目が異なる変数名も同一の変数として認識されるのかは
覚えていません。
これが、同じ8ビットマシンでも、PC-8801のN88-BASICでは40文字まで使えました。
ただ、変数名を長くするとそれだけメモリを消費するというデメリットがあったため、
長い変数名は自粛される傾向がありました。
一方、PC-8001よりも古いシャープのMZ-80のBASICでの変数名の最大長はわかりません
が、当時のパソコンサンデーのテキスト(まだ持っている)を見ると、5文字程度の
変数名を使ったプログラムリストが掲載されているので、その程度の長さまでは対応
していたようです。
東芝の場合、PASOPIA7はPC-8801以降の発表だったはずなので、PASOPIA初代向けは
ともかく、16ビット対応などの後期のT-BASICなら長い変数名にも対応していると
思います。
つまり、何が言いたいかというと、もしプログラムをリライトする機会があれば、
意味の分かる長い変数名を使いましょうよ、ということ。
どっかのエディタのマクロじゃないんだから。


10949/10933 BQO00549  konno            曜日を算出する ツェラーの式
( 1) 23/11/23 14:38 10946へのコメント(konnoさん)
新祝日法対応のためには指定した曜日を計算して特定する必要があります。
私の頭では全く思いつきません。(;_;)
困ったときのめざら資源、探したらありました! \(^^)/ アッタ-
めざら資源>VZマクロ工房>文字列出力関連>七曜でふ−簡易版日付印字器

sitiyo.def
3: ;指定日の曜日を算出(ツェラーの式)
(m<3)?{ y--, m+=12, }
w=((y+ y/4+ y/400+ (m*13+8)/5+ 1- y/100) +d -1) %7,

なるほど、指定日の曜日を算出する、ツェラーの式というのがあるのですね。
マクロをBASICに置き換えてみました。式はほぼそのままですね。

'a1=1〜4(週)
'a2=1〜7(曜日)
ww=0
for d=1 to 31
if m<3 then y=y-1:m=m+12
w=((y+ y/4+ y/400+ (m*13+8)/5+ 1- y/100) +d -1) mod 7
if w=a2 then ww=ww+1
if ww=a1 then dd=d:goto 30612
next d
30612 return


実際に実装したルーチンも貼り付けます。

30611 '指定日の曜日を算出(ツェラーの式)
AA1=ASC(MID$(A$,4,1))-64 '1〜4(週)
AA2=ASC(MID$(A$,5,1))-64 '1〜7(曜日)
WW9=0
M9=YASM(YMAX) '該当祝日の月
Y9=YEAR '該当祝日の年
for D9=1 to 31
if M9<3 then Y9=Y9-1:M9=M9+12 'sitiyo.def
W9=((Y9+ Y9/4+ Y9/400+ (M9*13+8)/5+ 1- Y9/100) +D9 -1) MOD 7 'ツェラーの式
'W9=(Y9+ Y9/4+ Y9/400+ (M9*13+8)/5+ D9- Y9/100) MOD 7 '同等の式?
if W9<>AA2 then 30613 '曜日が一致するまで日を進める
WW9=WW9+1 '曜日が一致したら週を進める
if WW9<AA1 then 30613 '週が一致するまで進める
YASD(YMAX)=D9:goto 30614 '日が確定したらデータに入れる
30613 next D9
30614 'print co9;a$;" ";Y9;M9;AA1;AA2;W9;D9 'debug
return


コメントを書くとフローのミスにも気が付きやすいですね。(^^;
一応動くようになったのですが、何故か年を変えても今年の年で計算してしまいます。(>_<)
どうしよう・・・

続く・・・のか


10950/10933 DGF01024  めざら           Re^3: オセロ
( 1) 23/11/23 17:10 10947へのコメント(としきさん) コメント数:2
参照先:http://mezala.la.coocan.jp/
森田オセロ! 懐かしいですね。
いや,懐かしいと感じるのは「森田」なのかな……森田将棋の。

ゲームの話題になると夏の虫のように吸い寄せられてしまいますね。

わたしがずっと移植したいと思っているのが XLIS のモノクロ版です。
XLIS とは Zumi氏作成の落ち物で,モノクロ版は色の代わりに形状(●▲■★◆◎)
(カラー版 → http://ozuma.o.oo7.jp/old_game/game/xlis/
作れるとは思うのですが,なかなかまとまった時間と気分が重なりません。

ほかに,ゲームではないですが,迷路を作成するマクロ。
BASICで示されたサンプルもあると思いますが,グラフィックスと罫線の違いもあり
なかなか手を着けられないでいます。

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


10951/10933 BQO00549  konno            Re^3: オセロ
( 1) 23/11/23 19:43 10947へのコメント(としきさん)
> > としきさんはオセロ強いですか? 私はヘタの横好きで。(^^;
>
> 中学生のころまでは、クラスで3番くらいの強さでした。
> でも、大人になったら、平均よりちょっと強いくらい、でしょうか。

それなら確実に私より強いでしょうね。(^^;

> これ、世間には優先順位のサンプルがいくらでもあったはずなので、そういうのを
> そのまま実装すればそこまで弱くはならないはず。

うーん、その当時はオセロゲームの参考書とか見ていなかったもので。(^^;

> 8ビット当時の最強は森田オセロだったはず。
> 私が対戦したのは、もしかしたらそれかもしれない。

有名だったですね、私などパーフェクト負けを食らうほどででしょう。
ところで、VZマクロでもオセロゲームがあったかと見てみました。

VZOTO.DEF v.1.20 ====> 91.9.9 糧 丞
これは98用とJ31用があり、J31で動かしてみましたが、途中で動かなくなってしまいました。
NP2の98エミュで98版も試しましたが罫線が表示しない? 結局出来ませんでした。
VZ1.57用だからでしょうか、何が悪いのかわかりません。

OTHELLO.def v2.0 ======== by 愛して癒して
これはVz Editor ver 1.6x用ですが、罫線などおかしくて動きませんでした。
過去ログを見ると、としきさんが質問されていて、YASATさんが答えてくれていました。

> 07941/08074 xxxxxxxx YASAT RE:OTHELLO ができない
> (14) 03/04/23 21:31 07938へのコメント

> 7行目
> je[-,mi[=2,ep[+,wt[,jd[-,co[4,#]

> 93行目
> (wx-1) {' '} (wy) {#m}

>  このゲーム、先攻で中途完勝パターンがあります。

>  なんでこの修正したんだったかなあって思っていたら、過去ログでした。
>  nifty:FGALDC/MES/14/1284


おお、この修正で動きました。\(^^)/ ヤッタ-
1ゲームやって、39対25でなんとか勝ちました。(^^;
私の作ったやつより確実に強いですね。(^^;

とりあえずこのアルゴリズムで組んでみたら良さそうですね。
その先は参考書を頼るしかないのかな。


10952/10933 BQO00549  konno            Re^2: BASIC道への入り口
( 1) 23/11/23 19:54 10948へのコメント(としきさん) コメント数:1
> つまり、何が言いたいかというと、もしプログラムをリライトする機会があれば、
> 意味の分かる長い変数名を使いましょうよ、ということ。
> どっかのエディタのマクロじゃないんだから。

(^^; (^^; 耳がいた、いや、汗が。(^^;
私って3文字以上の英語のスペルは中々覚えられないのですよ。(^^;
その点 VZのマクロは記号みたいですが、だいたい2文字なので安心感が。(^^;


10953/10933 CXB00940  としき           Re^3: BASIC道への入り口
( 1) 23/11/24 20:35 10952へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 私って3文字以上の英語のスペルは中々覚えられないのですよ。(^^;

英語はやめて、6文字程度のローマ字にしましょう。



いきなり余談ですが。
昔の経済学って、ケインズだろうがマルクスだろうが、人間は合理的に行動する、
という前提で論理展開されていました。
でも、決してそんなことはないというか、不合理なことは結構多い。
そこで提唱されたのが行動経済学という学問。
ようは、いろいろな判断だとかお金の使い方を心理学の面から分析するものです。

そして、実はプログラム工学だとかソフトウェア工学というものにも、かなり昔から
心理学的な分析は取り入れられていて。そもそも、それらの学問は、どうすれば品質
のよい、すなわち間違えにくいプログラムを書けるか、という学問なのですが、これ
は裏を返すと、人間はどういうときに間違えるか、という、まさに心理学的な分析
から始まっているわけです。
そして、研究の結果、たとえば、長くて意味のわかりやすい変数名を使いましょう、
なんて話になってきたわけです。
ただし、これはあくまでも、一般的なプログラム作成の話。
たとえば、複数人で作る場合、とか。
一人で作る場合でも、そんなに時間をかけず、一気呵成に作り上げる場合とか。
ワンライナーあたりが該当するかな。
つまり、よく言われる「明日の自分は赤の他人」に至らないような状況の場合。
仮に、既存のプログラムを改造するぐらいなら、常に一から新しいプログラムを作る
というのであれば、過去のプログラムを見返すこともないでしょう。
ただし、繰り返しになりますが、これはあくまでも、一般的なプログラム作成の話。
このため、現在では、仮に
「俺は変数名に3文字までしか使わない」
と主張するプログラマがいたとすると、その人は暗に
「俺は一般的ではない、短い変数名でも良いプログラムを書ける天才なんだ」
と豪語しているに他ならない、というのが世間の捉えかた。
もれなく生暖かい目がついてくることでしょう。
とはいえ、中学2年生ぐらい頭が柔軟な人ならそれも可能なのかもしれません。
私はもう無理だなぁ、そんな主張はできない。頭は固いし恥ずかしいし。
この年になってから黒歴史は量産したくないし。


10954/10933 CXB00940  としき           Re^4: オセロ
( 1) 23/11/24 20:35 10950へのコメント(めざらさん)
参照先:http://toshiki.la.coocan.jp/
XLISって知らなかったのですが、コラムスのようなゲームですね。
落ち物でいうと、PC-98のDOSでは「ぽろりす」をずいぶんやりました。
http://ozuma.o.oo7.jp/old_game/game/porolith/
こいつには、作者謹製のANSI版があって、モノクロ環境でも実行できたはず。
そういえば、ポケ3では試したことはない。
けど、画面サイズを考えると、絶対に目が死にそう。
試すもんか。


10955/10933 BQO00549  konno            アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/11/24 22:13 10933へのコメント(konnoさん) コメント数:1
アナログ時計とカレンダのアクセサリ 11月24日版です。
画像はココログの記事で見てください。
http://tamaneko2.cocolog-nifty.com/vz2/2023/11/post-bf98e3.html

今回の更新内容は

・新祝日法に対応したつもり。
・見栄えも多少直しました。
・カレンダー大の日付の文字を2バイト数字にして見やすく。
・キーによるカレンダーの年月変更機能追加。
・MSDOS Player でもカレンダー表示出来ます(chej jpの時)
・今回からソースも付けます。


新祝日法への対応はEMMETさんとめざらさんのマクロを参考にしました。
先人の知恵に感謝です。m(__)m

カレンダー大の日付の2バイト数字は、TBASICのころは出来ていたのです。
PRINT CDBL$(RIGHT$(STR$(I),2))
のように半角文字を2バイト文字に変換するコマンドが使えたのです。
ターボBASICは英語版なのでそんなものは無く、移植時に半角数字にしたのでした。
今回一念発起して対応しましたので、興味ある方はソースを見てください。

キーによるカレンダーの年月変更機能追加は、カレンダマクロで出来ているので
このくらいは出来ないと張り合えないなぁ、と思ったのです。(張り合ってどうする)(^^;

F11: 前月 前月のカレンダーを表示
F12: 次月 次月のカレンダーを表示
[Ctrl]+[←] 前年のカレンダーを表示
[Ctrl]+[→] 次年のカレンダーを表示

本当は [Ctrl]+[F11〜F12] で前年と次年のカレンダーを表示したかったのですが、
DOSVAXJ3 ではこのキーが(BIOSレベルで)反応しないのでしかたなくこうしました。

なお、変更前のソースを大量にコメントしているので非常に見づらいです。
TAGLIGHT.EXE をお使いの方は TAGLIGHT.PAT に

#BASIC用
:BA,
A ' \C\$

これを追加すれば非常に見やすくなります。
TAGLIGHT.PAT についてはバッファ制限があるので近々記事を書くつもりです。


自作、改作アプリの放置部屋  に置いてあります。


10956/10933 BQO00549  konno            Re^4: BASIC道への入り口
( 1) 23/11/25 15:36 10953へのコメント(としきさん)
> 英語はやめて、6文字程度のローマ字にしましょう。

ローマ字ならいくらでも長い名前を書けますよ。(^^;
jugemujugemugogounosurikire

お。意外と良いかもしれませんね、でもなんだか恥ずかしいような。(^^;

> そして、研究の結果、たとえば、長くて意味のわかりやすい変数名を使いましょう、
> なんて話になってきたわけです。

その長い名前が覚えられないからこうなってしまったのです。(;_;)
英語は嫌いじゃぁ〜!

> この年になってから黒歴史は量産したくないし。

そんな風に思っていた時期もありました・・・
私の半生は黒(画面)歴史なので。
どうせみんな死ぬんだし、だったら恥ずかしい黒(画面)歴史を晒しちゃえ
ということで今回の企画を出したわけです。(完全後付け)


10957/10933 BQO00549  konno            Re^4: オセロ
( 1) 23/11/25 15:57 10950へのコメント(めざらさん)
> わたしがずっと移植したいと思っているのが XLIS のモノクロ版です。
> XLIS とは Zumi氏作成の落ち物で,モノクロ版は色の代わりに形状(●▲■★◆◎)

XLIS は知りませんでしたが、モノクロ版の記号はどこかで見たような気が・・・
ん? これって、Emmettさんのさめがめに似ているような。(^^;
さめがめは何度か遊んでみましたが面白いですね。(^_^)

> (カラー版 → http://ozuma.o.oo7.jp/old_game/game/xlis/

覗いてみたら、98版のゲームなんですね。NP2 で動くかしら。

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

う、うーん、(^^;

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


10958/10958 BQO00549  konno            TAGL + TAGL_F5 マクロ
( 1) 23/11/29 00:00 コメント数:1
 taglight.exe を使用して複数の指定文字列に手軽に色付けできるマクロです。
環境変数VZDEFと実行ファイルの両フォルダにtaglight.exeとtaglight.patが必要です。
taglight.patは、tagl.def用に拡張子の後ろにカンマの追加が必要で、専用PATを同梱しています。


#C,C++コード用
:C,CP,H,


TAGL_F5.DEF

[F05] 検索文字列の取得 は私家版[F05]のtaglight.exe対応版です。
標準の[F05]との違いは,スペース,→で検索文字列範囲拡大出来ます。
taglight.exe を使用して複数の指定文字列に手軽に色付けできるマクロです。
環境変数VZDEFと実行ファイルの両フォルダにtaglight.exeとtaglight.patが必要です。
taglight.patは、tagl.def用に拡張子の後ろにカンマの追加が必要です。
[F06]はtagl.def で連携します。
使用変数 a,c,e,k,


TAGL.DEF

・ [F06]で起動すると、taglight.patからTAGL.PATを作成して使用します。
・ ^KT で起動すると、検索窓で検索文字列を繰り返し入力できます。(最大4回まで)
空Enterで指定終了し、tagl.patとしてセーブし、編集画面に反映させます。
上記の動作原理により、マクロ実行時は常にtagl.patの設定で動作します。
・ ^\KT でシフト起動すると、taglight.patの設定に切替になります。
・ 使用変数 a,b,c,e,k,

VZマクロの部屋にあります。


10959/10958 BQO00549  konno            TAGLIGHT.EXE の制限
( 1) 23/11/29 00:03 10958へのコメント(konnoさん)
TAGLIGHT.EXE 便利に使っていたんですが、最近うまく動かないことがあるようです。
調べてみたら、TAGLIGHT.PAT の容量オーバー、ワードの入れすぎだったようです。(>_<)

パターンが多すぎます
必要なバイト 1469 : 上限バイト 1280

コマンドラインにこのようなメッセージが出ていました。
今まで >NUL でメッセージを消していて気が付かなかったのでした。(>_<)
機能ごとのメモリ消費はこんな感じです。

   機能              メモリ量
--------------------------------------+------
D TAGLIGHT 30
B name=" " 25
E ( ) 24
A \0\0\0\0\0/\0\0\0\0\0 \C\$ 23
B ; \C\$ 20
A \^・ 20
A ● 20
:DA, 5
DA, 4

以前世界時計用に追加したパターンが圧迫してしまったようですね。
私のPATは、アセンブラ用やC,C++コード用も追加しているので、少し整理しました。
C,C++コード用をパスカルコード用と合体させるなどして重複分を減らしました。


ついでに、TAGL.DEF や TAGL_F5.DEF に複数文字列色付け機能を改善実装しました。
[F05]:検索文字列の取得 TAGL_F5.DEF
[F06]:検索文字列の設定 TAGL.DEF
この2つのマクロに新しい形式の複数文字列色付け機能を実装しました。

そのためにPATファイルも改造しました。(^^;
新しい形式の PATファイルの構造は


1. #デフォルトのコードの下に以下の行を追加

#4#tagl_cfg #1〜4 検索文字列数 この行は数字以外変更禁止 -----

ここの行頭の "#" の次の数字の数だけ検索文字列を色付けします。
#デフォルト と、該当する拡張子の所に色付けコードが埋め込まれます。
設定数を超えたコードは自動削除されます。
デフォルトを 3 としています。(4 では長い文字列でバッファオーバーする時がある)


2. woldtime 用のコードは通常使用で削除

通常使用では、TAGLIGHT.PATをコピーした TAGL.PAT を使います。
woldtime 用のコードは通常使用では使わないので、削除することにしました。

#tagl_end ---- ##k v8 ※これより下は TAGL.PAT にコピーしない(バッファ節約)
#woldtime 用

woldtime 用コードの直前に上の1行を追加しました。この行は変更削除禁止です。
TAGLIGHT.PAT は各自で自由に変更出来ますが、私のマクロを使う場合は、上記のルールを守ってください。


10960/10960 BQO00549  konno            DOSVAXJ3 備忘録  CHEV コマンド
( 1) 23/12/01 00:26 コメント数:2
DOS6 付属の QBASIC.COM は、日本語モードでは動かないので、DOSVAXJ3 英語モードでやってみました。

chev us
Change to the US environment.
Current video mode is 03h

QBASIC.COM
日本語モードでは実行できません.


実際の表示は英語モードなので、文字化けした読めないメッセージになっています。
日本語モードにするとこの表示になっていました。
あれれ? もしかして chev us コマンドでは完全な英語モードになっていない?


chev us を実行すると以下の表示になります。chev コマンド自体は表示されません。

Change to the US environment.
Current video mode is 03h

ここで、chej でモード状態の表示をしてみると

D:\NC>CHEJ.EXE <MultiMode CHEV> ver 6.10 by Natrium.
現在 DOS/V(Normal)、日本語環境です。
現在のビデオモードは 03h です。

こう表示されました。
どうやら chev コマンドでは完全な USモードになっていないようです。

chej us を実行すると

D:\NC>CHEJ.EXE <MultiMode CHEV> ver 6.10 by Natrium.

Change to the US environment.
Current video mode is 03h.

ここで、chej でモード状態の表示をしてみると

CHEJ.EXE <MultiMode CHEV> ver 6.10 by Natrium.

This is the US environment.
Current video mode is 03h.

この状態で QBASIC.COM 実行すると、無事に動きました。
QBASIC.COM は、完全な USモードでないと動かないようです。
実行してもカーソルだけが表示されるので、謎のモードで動いているようです。

そういえば、最新の DOSVAXJ3 の更新では
> 拡張 CGA テキストモード 73h, 71h に対応しました。
とあって、試してみた過去記事が

#10927: Re: DOSVAXJ3 230919 更新 投稿者: konno   2023/09/20(水)

> モード切替を試してみると、CHEV 71 とかではモード70 になってしまって切り替え出来ない?
>
> CHEJ 71
>
> これでモード71 に切り替わりました。
> 見た目は 70 と変らないですね。(^^;

これも同じ原因かもしれないdすね。
関係あるかどうかわかりませんが、過去ログで

#6100: Re^2: DOSBOXでVZはFEP制御不可なのか 投稿者: konno   2012/12/02(日)

> > > VZ側ではまったく制御できていないようですね。
> DOSBOXは本当に日本語環境になっているのか、ふと思いついて、調べてみました。
>
> CHEJ /C で、
>
> Current CodePage is 437.
>
> と出ました。そうです。コードページは英語のままだったのです。
> これですべてのつじつまが合います。VZはDBCSのモードをチェックしているので
> 英語モードと判断してFEP制御していなかったわけですね。
> おそらくキーボードも英語のままなので制限が多いのでしょう。

2012年の古い DOSBOX ですが、モード切替に不備があるようです。
DOSVAXJ3 ではコードページはキチンと切り替え出来ているようですが、何かが足りないのでしょうか。


10961/10933 CXB00940  としき           Re: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/01 11:12 10955へのコメント(konnoさん) コメント数:2
参照先:http://toshiki.la.coocan.jp/
実家に置きっぱなしだったVistaマシンと、自宅で時々使っているXPマシンが相次いで
壊れまして。それぞれ、それなりに使うということで修復している最中。とはいえ、
Vistaマシンのほうはまだほとんど手付かずですが。

さて、何とか動き出してきたXPマシンのほうで、気になったのでこの時計を動かして
みました。このマシン、一応VTDOSの古いバージョンも入っていたような気もします
が覚えていません。DOSVAXは入れていなかったはず。
とりあえず、command.comで動かしたら、DOS窓状態で起動したにもかかわらず自動
で全画面に遷移して、きちんとアナログ時計が動きました。
ALT+RETで窓状態にすると、グラフィック関係は全滅ですね。時計の針もそうだし、
カレンダーの罫線だとか時計の枠だとか。
「VGAで動く」とうたっているソフトが動かないので、窓状態はやっぱりちょっと
本当のVGAとは違うみたい。

気になったことがいくつか。
まず、公開時の圧縮ファイルの形式。
最近のアンチウィルスソフトはLZH形式を正しくチェックできないということで、
最近では一般向けに公開されるファイルにはあまり使われなくなっています。
ベクターがLZHでの新規の受付を停止したのは何年前だったかなぁ。
さすがに公開済みのものを再パッキングするほどのことはないと思いますが、
次回からはZIP形式の使用がお勧め。
もちろん、赤の他人にはなるべく使ってほしくない、という希望があるならLZHの
ほうがいいかもしれません。

次、ソースリストについて。
ざっくり読んで、こんなものを処理できる処理系があるんだ、と驚きました。
これ、何でコンパイルしたんでしょうか。QBASIC?
いや、昔ながらの行番号つきの大文字の部分と、行番号なしの小文字の部分が混在
しているものを処理できるなんて、本当、びっくりしました。
慣れれば、あとからパッチを当てた部分がわかりやすいのかもしれません。
でも、慣れていないもので、ちょっと違和感が大きい。
行番号なしの部分でもマルチステートメントがある。できるんだ。
冒頭の「$INCLUDE」というおまじないは知らない。
これは処理系固有のおまじないなんだろうなぁ。
一応、環境変数の取得関数はあるようなので、この辺を工夫すればデータファイルの
置き場所も指定できそうですね。
あと、ON ERROR GOTOが頻出しますが、飛び先をきちんと変えている。
すなわち、有効利用している。こんなコードはじめてみた。すごい!
私、エラー処理なんてひとつしかないようなコードしか書いたことがないもので。

最後。
前にも書いたことですが。
このツリーも、返信フォームの上の部分だけ、ツリー表示が乱れている。
何とかしてほしいというか、何とかできないのならコードをさらしてほしい。


10962/10933 CXB00940  としき           Re^2: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/01 11:25 10961へのコメント(としきさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> このツリーも、返信フォームの上の部分だけ、ツリー表示が乱れている。
> 何とかしてほしいというか、何とかできないのならコードをさらしてほしい。

と、書いたところですが。
#10961を書き込んで、今、読み直してみると、ツリーの乱れ方が変化している。
#10961を書き込む前。(タイトル部はとしきによって省略しています)

- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
▼ 10933.VGAで動くアナログ時計とカレンダのアクセサリ
  ┣10934.Re: VGAで動くアナログ時計とカレンダのアク
  ┗10935.Re^2: VGAで動くアナログ時計とカレンダのア
  ┃ ┗10936.Re^3: VGAで動くアナログ時計とカレンダ
  ┃  ┣10938.Re^4: VGAで動くアナログ時計とカレン
  ┃  ┗10939.Re^5: VGAで動くアナログ時計とカレン
  ┃  ┃ ┗10940.Re^6: VGAで動くアナログ時計とカ
  ┃  ┃  ┣10941.Re^7: VGAで動くアナログ時計と
  ┃  ┃  ┣10942.Re^7: VGAで動くアナログ時計と
  ┃  ┃  ┃┣10944.BASIC道への入り口 - konno 2
  ┃  ┃  ┃┣10948.Re: BASIC道への入り口 - とし
  ┃  ┃  ┃ ┗10952.Re^2: BASIC道への入り口 -
  ┃  ┃    ┗10953.Re^3: BASIC道への入り口 -
  ┃  ┃     ┗10956.Re^4: BASIC道への入り口
  ┃  ┗10943.オセロ - としき 23/11/22-01:14
  ┃   ┗10945.Re: オセロ - konno 23/11/23-00:13
  ┃    ┗10947.Re^2: オセロ - としき 23/11/23-
  ┃     ┣10950.Re^3: オセロ - めざら 23/11/2
  ┃     ┣10954.Re^4: オセロ - としき 23/11/2
  ┃     ┃┗10957.Re^4: オセロ - konno 23/11/
  ┃     ┣10951.Re^3: オセロ - konno 23/11/23
  ┣10937.VGAで動くアナログ時計とカレンダのアクセサ
  ┗10946.新祝日対応のデータ形式 - konno 23/11/23-0
   ┗10949.曜日を算出する ツェラーの式 - konno 23/
  ┣10955.アナログ時計とカレンダのアクセサリ 11月24

ところが、#10961を書き込んだあと。

- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
▼ 10933.VGAで動くアナログ時計とカレンダのアクセサリ
  ┣10934.Re: VGAで動くアナログ時計とカレンダのアク
  ┃┗10935.Re^2: VGAで動くアナログ時計とカレンダの
  ┃ ┗10936.Re^3: VGAで動くアナログ時計とカレンダ
  ┃  ┣10938.Re^4: VGAで動くアナログ時計とカレン
  ┃  ┃┗10939.Re^5: VGAで動くアナログ時計とカレ
  ┃  ┃ ┗10940.Re^6: VGAで動くアナログ時計とカ
  ┃  ┃  ┣10941.Re^7: VGAで動くアナログ時計と
  ┃  ┃  ┣10942.Re^7: VGAで動くアナログ時計と
  ┃  ┃  ┣10944.BASIC道への入り口 - konno 23/
  ┃  ┃  ┗10948.Re: BASIC道への入り口 - としき
  ┃  ┃   ┗10952.Re^2: BASIC道への入り口 - k
  ┃  ┃    ┗10953.Re^3: BASIC道への入り口 -
  ┃  ┃     ┗10956.Re^4: BASIC道への入り口
  ┃  ┗10943.オセロ - としき 23/11/22-01:14
  ┃   ┗10945.Re: オセロ - konno 23/11/23-00:13
  ┃    ┗10947.Re^2: オセロ - としき 23/11/23-
  ┃     ┣10950.Re^3: オセロ - めざら 23/11/2
  ┃     ┃┣10954.Re^4: オセロ - としき 23/11
  ┃     ┃┗10957.Re^4: オセロ - konno 23/11/
  ┃     ┗10951.Re^3: オセロ - konno 23/11/23
  ┣10937.VGAで動くアナログ時計とカレンダのアクセサ
  ┣10946.新祝日対応のデータ形式 - konno 23/11/23-0
   ┗10949.曜日を算出する ツェラーの式 - konno 23/
  ┗10955.アナログ時計とカレンダのアクセサリ 11月24
   ┗10961.Re: アナログ時計とカレンダのアクセサリ

#10961を書き込むことによって、#10941あたりからの乱れ方が大幅に改善している。
ツリー最後の#10955前後はまだ乱れているけど、乱れ方が変化している。
この辺、コードを追いかける際の手がかりになるかも。


10963/10933 BQO00549  konno            Re^2: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/01 23:24 10961へのコメント(としきさん) コメント数:1
> とりあえず、command.comで動かしたら、DOS窓状態で起動したにもかかわらず自動
> で全画面に遷移して、きちんとアナログ時計が動きました。

XPのDOS窓全画面で動きましたか。
元々Win95ノートPCの小さい画面で使うため、全画面にして使っていたのです。

> ALT+RETで窓状態にすると、グラフィック関係は全滅ですね。時計の針もそうだし、
> カレンダーの罫線だとか時計の枠だとか。
> 「VGAで動く」とうたっているソフトが動かないので、窓状態はやっぱりちょっと
> 本当のVGAとは違うみたい。

ターボBASICは古いので、VGA対応してるかどうか。VGAでも何とか動くという感じです。
グラフィックモードは、chej 12 相当です。
DOS窓で chej 12 と打つと、全画面になると思います。

Win98MEのリブレットで確認してみました。
DOS窓で起動すると一瞬全画面になりますが、すぐにDOS窓に戻ります。
小さなデジタル時計が表示されているだけの状態ですね。
ここで、ALT+RET すると全画面になりグラフィックモードで動作しますね。

最新の版はデジタル時計を全角表示して、全画面では毎秒カウントします。
ところがDOS窓では、2秒ごとに表示しますね。
DOS窓では疑似マルチタスクが優先するため描画処理が追い付かないのかも。

> 最近のアンチウィルスソフトはLZH形式を正しくチェックできないということで、
> 最近では一般向けに公開されるファイルにはあまり使われなくなっています。
> 次回からはZIP形式の使用がお勧め。

なるほど、検討してみます。

> もちろん、赤の他人にはなるべく使ってほしくない、という希望があるならLZHの
> ほうがいいかもしれません。

今時DOSを使うもの好きは、LZHに馴染んでいると思ったのですが、やっぱりZIPがいいのかなぁ。(^^;

> ざっくり読んで、こんなものを処理できる処理系があるんだ、と驚きました。
> これ、何でコンパイルしたんでしょうか。QBASIC?

ボーランドのターボBASIC です。すぐに消えたので、幻のコンパイラかも。(^^;

> いや、昔ながらの行番号つきの大文字の部分と、行番号なしの小文字の部分が混在
> しているものを処理できるなんて、本当、びっくりしました。

やってみたらできたので、そういうものかと思っていました。
大文字と小文字を区別する処理系もあるようですね。移植するときには直さなくては。(^^;

> 冒頭の「$INCLUDE」というおまじないは知らない。
> これは処理系固有のおまじないなんだろうなぁ。

これは、ターボBASICのコンパイラ版固有みたいです。

50 $DYNAMIC

これが、東芝BASICのコンパイラ版固有みたいですが、元がMS系なので、MSも同じかも。

> 一応、環境変数の取得関数はあるようなので、この辺を工夫すればデータファイルの
> 置き場所も指定できそうですね。

環境変数を設定すればできそうですが、ちょっと面倒ですよね。
実行ファイルと同じフォルダから自動的に設定ファイルを読めればいいなと思うんですが。
とりあえずは環境変数を設定するようにしてみますか。

> あと、ON ERROR GOTOが頻出しますが、飛び先をきちんと変えている。
> すなわち、有効利用している。こんなコードはじめてみた。すごい!
> 私、エラー処理なんてひとつしかないようなコードしか書いたことがないもので。

これ、3か所に分かれているのは、3つのプログラムを合体させたからです。(^^;
統合化していない超手抜きの悪い例ですね。(^^;

> このツリーも、返信フォームの上の部分だけ、ツリー表示が乱れている。
> 何とかしてほしいというか、何とかできないのならコードをさらしてほしい。

検討します。m(__)m


10964/10933 BQO00549  konno            Re^3: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/02 00:04 10962へのコメント(としきさん)
> #10961を書き込むことによって、#10941あたりからの乱れ方が大幅に改善している。
> ツリー最後の#10955前後はまだ乱れているけど、乱れ方が変化している。
> この辺、コードを追いかける際の手がかりになるかも。

なるほど、見てみますね。
でも今まで何度も見ているのにわからなかったので、やっぱりとしきさんにも見てもらおうかなぁ。

# 記事閲覧t #

のルーチンだけ切り出してメールで送ります。

宜しくお願いします。


10965/10933 CXB00940  としき           Re^3: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/03 01:21 10963へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
メールは受け取りました。
が、受け取っただけで、まだ中身はぜんぜん見ていません。

> 今時DOSを使うもの好きは、LZHに馴染んでいると思ったのですが、

その点はまったく同感なのですが

> やっぱりZIPがいいのかなぁ。(^^;

自動でウィルスチェックをしてくれない、という部分をどう捉えるか。
konnoさんを信用できる・信用している人ならLZHでもダウンしてくれると思います。
が、konnoさんをよく知らない赤の他人ならどうするか、という点が疑問。

> ボーランドのターボBASIC です。すぐに消えたので、幻のコンパイラかも。(^^;

ありましたね。
この処理系は、私も触ったことがありません。

> 50 $DYNAMIC
> これが、東芝BASICのコンパイラ版固有みたい

REMがついていたので素通りしていました。
これって、REMがなければ、どういうことをするコマンドなんですか?

> 実行ファイルと同じフォルダから自動的に設定ファイルを読めればいいなと思う

なんかありそうですけどね。
CとかPascalなんかでは、コマンドラインのゼロ番目が実行ファイルのフルパス名、
みたいなことになっていたような気がするので、コマンドラインの取り出し方法を
調べてみるのがいいかも。


10966/10933 BQO00549  konno            Re^4: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/03 21:10 10965へのコメント(としきさん) コメント数:1
> メールは受け取りました。
> が、受け取っただけで、まだ中身はぜんぜん見ていません。

私も見れていないのでお手すきの時にでもお願いします。m(__)m

> 自動でウィルスチェックをしてくれない、という部分をどう捉えるか。
> konnoさんを信用できる・信用している人ならLZHでもダウンしてくれると思います。
> が、konnoさんをよく知らない赤の他人ならどうするか、という点が疑問。

そうですね、次からはなるべく ZIP にするようにします。

> > 50 $DYNAMIC
> REMがついていたので素通りしていました。
> これって、REMがなければ、どういうことをするコマンドなんですか?

マニュアルが腐海の底に沈んでしまっているので、NETで検索してみました。
FreeBASIC MetaDynamic
https://makoto-watanabe.main.jp/freebasic/PgMetaDynamic.html#start
このページの解説が近いような気がします。

> 配列を割り当てる方法を変える、メタコマンド
>
> 構文:
> '$Dynamic
> または
> rem $Dynamic
>
> 記述:
> '$Dynamic は、以降に宣言する全ての配列が可変長である、と指定する、メタコマンドです。配列が、添字数が定数指定で宣言されていても、そうでなくてもです。
> この指定は、モジュールで、'$Dynamic を使ったそれ以降の部分に対して有効です。$Static を使って、'$Dynamic 指定を無効にすることができます。

うーむ、REM は必要だったみたいですね。(^^;
多分、エディタで編集領域を拡大するために使ったのだと思いますが、今では覚えていません。(>_<)
なんせ、インタプリタ時代は、3万文字程度が限界で、ガベージコレクションで止まっていたので。(>_<)
コンパイラになっても4万文字程度だったかもですが。(^^;

> CとかPascalなんかでは、コマンドラインのゼロ番目が実行ファイルのフルパス名、
> みたいなことになっていたような気がするので、コマンドラインの取り出し方法を
> 調べてみるのがいいかも。

なるほど、PEEK関数でメモリは読めるかもしれないので、チャレンジしてみます。


10967/10933 CXB00940  としき           Re^5: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/04 12:20 10966へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> FreeBASIC MetaDynamic
> https://makoto-watanabe.main.jp/freebasic/PgMetaDynamic.html#start
> このページの解説が近いような気がします。

なるほど、理解できました。
N-BASICとかN88-BASICでは、DIMで配列宣言をしないで配列を使うと、デフォルトで
配列の添え字は10まで使えたはず。OPTION BASEで添え字の0が使えるかどうかを決定
するという、あまり使われていない機能もありますが。
だけど、これを宣言しておけば、デフォルトで11以降の添え字が使えるということの
ようですね。
ただ、N88-BASICの場合、DIMで配列宣言をしない配列を使うと、例えば要素数が3個
しか必要ない配列でも10個分の要素のメモリが確保されてしまい、メモリが無駄に
なるから必ず配列宣言をしましょう、みたいな事が言われていました。当然、大きな
配列が必要なときは配列宣言は必須でしたし、結論としては、いついかなる場合も
配列宣言をしましょう、みたいな話になっていたように記憶しています。
そういう環境に慣れていたので、AWKやPerlのような、動的に配列がみょ〜んと確保
されるような処理系に始めて触れたときには違和感が強かったものです。もし私が
N88-BASICからいきなりこの$DYNAMIC構文のあるBASICに触れたら、そんな比ではない
ほどの違和感を感じまくったことでしょう。

ところで、この構文が使われているということからの推測すると、元々のコードは
QuickBASICで書かれていたということでしょうか。
そして、REMは必須であったと。

> なるほど、PEEK関数でメモリは読めるかもしれないので、チャレンジしてみます。

FreeBASICのサイトを検索したところ、この処理系だと、COMMAND(0)という関数で
実行ファイル名が取得できるようです。ただ、フルパスが取得できるかは、私には
よくわかりませんでした。
また、このページのQuickBASICとの違いの注記で、QBは引数をとらないとある。
ということは、TIME$で時刻の全体が取得できるように、COMMANDでコマンドライン
の引数全体が取得できるようになっているらしい。
ターボBASICがどうなっているかわかりませんが、QB同様であった場合、例えば空白
の入ったフォルダから起動したようなときに、実行ファイルのパスの取得は難しく
なるかもしれない。


10968/10933 BQO00549  konno            Re^6: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/05 02:04 10967へのコメント(としきさん) コメント数:1
書きかけの返信をうっかりセーブし忘れて消してしまいました。(>_<) うう、、


> N88-BASICからいきなりこの$DYNAMIC構文のあるBASICに触れたら、そんな比ではない
> ほどの違和感を感じまくったことでしょう。

私もN88-BASICからTBASICに移植したときは、違いに戸惑いましたね。
当時、「各種BASICの違い」みたいな記事があって、参考に成りました。どこ行ったかなぁ。

> ところで、この構文が使われているということからの推測すると、元々のコードは
> QuickBASICで書かれていたということでしょうか。

元々はTBASIC(7) です。それからTBASIC(16) → コンパイラ版 → TURBO BASIC ですね。
MS系のBASICだから構文がほぼ同じなのでしょう。

> そして、REMは必須であったと。

ですね。メタコマンドみたいなものでしょうか。

> FreeBASICのサイトを検索したところ、この処理系だと、COMMAND(0)という関数で
> 実行ファイル名が取得できるようです。ただ、フルパスが取得できるかは、私には
> よくわかりませんでした。

COMMAND という関数はTURBO BASIC には無いようです。
類似の関数もわからないのでちょっとできなそうですね。


10969/10933 CXB00940  としき           Re^7: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/05 14:03 10968へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 当時、「各種BASICの違い」みたいな記事があって、参考に成りました。

うちの、1985年ごろのベーマガに、その手の記事がありました。
ただ、多くの機種を対象としていた関係で、1機種あたりの分量はたいしたことは
ありませんね。だから

> 元々はTBASIC(7) です。

TBASIC(7)に、この構文があるということも載っていないし。

> COMMAND という関数はTURBO BASIC には無いようです。
> 類似の関数もわからないのでちょっとできなそうですね。

Turbo Pascalだと、予約語としてParamStr。
C言語だと、デフォルトでargvとargc。ただしこれは予約語ではなく、ただの慣例。
とはいえ、正当な理由なくこの慣例を破ると、各方面からけちょんけちょん。
最近のVisual BasicというかVB.NETではCmdArgsだけど、これが予約語か慣例かは
わからない。

このあたりのキーワードでドキュメントを検索するくらいかなぁ。
コンパイル可能な処理系でコマンドライン引数を取得できないって、ありえないと
思うのですが、これはちょっと私が固定観念にとらわれすぎているかも。


10970/10933 BQO00549  konno            Re^8: アナログ時計とカレンダのアクセサリ 11月24日版
( 1) 23/12/05 23:11 10969へのコメント(としきさん)
> うちの、1985年ごろのベーマガに、その手の記事がありました。
> ただ、多くの機種を対象としていた関係で、1機種あたりの分量はたいしたことは
> ありませんね。

もしかしたら私もその本を読んだのかもしれませんね。

> だから
> > 元々はTBASIC(7) です。
> TBASIC(7)に、この構文があるということも載っていないし。

TBASIC(7)に、この構文はありません。時計アクセサリプログラムのルーツという意味で書いていました。
$DYNAMIC は、TBASICのコンパイラ版の構文だったと思います。Turbo BASIC ではどうだか確認できていません。

> コンパイル可能な処理系でコマンドライン引数を取得できないって、ありえないと
> 思うのですが、これはちょっと私が固定観念にとらわれすぎているかも。

コマンドライン引数を取得する関数はあります。
111 FILE$=COMMAND$

ただ、command(0) のようにコマンドラインのゼロ番目は取得できないようなので。
マニュアルが見つかるまでは色々試してみます。


10971/10933 BQO00549  konno            STIME.EXE 12月08日版
( 1) 23/12/08 02:31 10933へのコメント(konnoさん) コメント数:1
STIME.EXE 12月08日版をアップしました。

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

DOSVAXJ3 を起動したら、chev jp でVGAモードにして、STIME.EXE を起動してください。
MS-DOS Player では、chej jp でVGAモードにします。文字のデジタル時計とカレンダのみ表示します。
VTDOS では動作しません。

画像は
http://tamaneko2.cocolog-nifty.com/vz2/


更新履歴

231208 環境変数 NCPATH でデータファイルの置き場所を指定。指定無しならカレント
春分、秋分の日を自動計算
デジタル時計とカレンダ大の文字を2バイト文字に。
[↑↓]キーで前年・次年 [←→]キーで前月・次月のカレンダーを表示

これでカレンダマクロに対抗できるでしょう(笑)

[←→]キーで前月・次月のカレンダーを連続で何年分もやるとエラーになります。
もしかしたらループのつじつまが合っていないのかも。
バグ入りなので、ご使用は自己責任でお願いします。

自作、改作アプリの放置部屋に置いてあります。


春分、秋分の日を自動計算する計算式は ネットから拾いました。

> Excelでこれらの日付を求めるには、以下のようにDATE関数とINT関数を数式に組み合わせます。
 春分の日

=INT(20.8431+0.242194*(年-1980))-INT((年-1980)/4)

 秋分の日

=INT(23.2488+0.242194*(年-1980))-INT((年-1980)/4)


この式がそのまま使えました。ありがたいです。


追記

記事のタイトルと内容の日付を間違えていたのを訂正しました。
m(__)m

10972/10972 DGF01024  めざら           ある現象
( 1) 23/12/10 13:29 コメント数:2
参照先:http://mezala.la.coocan.jp/
■ VTDOS+CKWV 環境で Google IME を起動すると落ちる

気が付いたのは昨日。

・[変換]キーに割り当てた IME 起動キーを押したら即座に VZ が終了した。
・一旦,Windows(10) を再起動してみたが,状況は変わらない。
・[変換]だけでなく,ALT+[半/全|漢字] または [半/全|漢字] でも同様。
・以下のマクロで IME を起動しても,やはり即座に終了。
1 @B "feponoff" &j(0) &m("OFF") (mg.-9)??{ &j(10) &m("ON") }
・VZ を終了させたのちの DOSプロンプトでも同様に落ちる。

Google IME を Microsoft IME に変更すると,いずれも落ちなくなった。

DOSVAXJ3 (JP23707) では不具合は再現しなかった。

∴ VTDOS+CKWV 環境で Google IME を使用した場合の現象と考えられる。

皆さんの環境では,同様の現象は見られませんか?


10973/10972 BQO00549  konno            Re: ある現象
( 1) 23/12/10 21:29 10972へのコメント(めざらさん) コメント数:1
> ■ VTDOS+CKWV 環境で Google IME を起動すると落ちる

私は Google IME を使っていないので、インストールしてみました。
設定はすべてデフォルトですが、変換はATOKモードにしました。(^^;

VTDOS155+CKWV11 では、メニュー枠がチラチラと瞬いて見えないほかは普通に使えるようです。
VTDOS155+CKWV12 では、メニュー枠がチラチラしますが見えてはいて、普通に使えるようです。
この辺もCKWVの更新理由なのかも。というか、Google IME を使うには CKWV12 が必須ですね。(^^;
どちらもVZ窓が出ている状態で Google IME をインストールしました
VZは、k07v6k 常駐です。

> ・[変換]キーに割り当てた IME 起動キーを押したら即座に VZ が終了した。

キー割当はなにか別のソフトを使ったのでしょうか。
もしかしたらこのへんが関係している可能性も考えられるので。
って、あれ? 普通に[変換]キーで漢字ON/OFFできるんですね。(^^;

> ・以下のマクロで IME を起動しても,やはり即座に終了。
> 1 @B "feponoff" &j(0) &m("OFF") (mg.-9)??{ &j(10) &m("ON") }

当方では問題なく起動します。

> ・VZ を終了させたのちの DOSプロンプトでも同様に落ちる。

これも問題ないですね。
この文章はVZで書いています。

> DOSVAXJ3 (JP23707) では不具合は再現しなかった。

念のため DOSVAXJ3 でも試してみましたが、問題ないようです。
ここからは DOSVAXJ3 のVZで書いています。

> ∴ VTDOS+CKWV 環境で Google IME を使用した場合の現象と考えられる。

めざらさんの環境では問題が出ているんですね、何が原因かわからないですね。


10974/10972 DGF01024  めざら           Re^2: ある現象
( 1) 23/12/10 21:55 10973へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
わざわざインストールしての確認ありがとうございます。
どうやら,うちの環境だけのようですね。

突然の発現なのでよくわからないのですが,ともかく少し様子を見てみます。

10975/10933 CXB00940  としき           Re: STIME.EXE 12月08日版
( 1) 23/12/11 16:28 10971へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> STIME.EXE 12月28日版をアップしました。

会社の環境だったので、あまり時間がとれず、状況が詰め切れていないので、あまり
参考にはならないかもしれませんが、とりあえずのご報告。
DOSVAXは、今年の7月のバージョンです。
会社なので、Vzも大昔に持ち込んだ高橋版をそのまま使っています。
だからなのか、それとも単に設定をつめていないからなのか、Vzは常駐使用できて
いません。非常駐なら、それなりにきちんと動いてくれているというか、少なくとも
不具合は認識していません。

この環境で非常駐VzのコマンドラインからSTIMEを起動すると、最初は普通に時計を
表示して、特に問題なく動いています。
この状態からファンクションの1〜3を押してカレンダーを表示させると、一応
カレンダーは表示します。が、その下側に「[Enter]キーを押してください。」と
表示され、その表示に従ってEnterを押すと、そこでプログラムが終了してしまい
ました。
ま、こんなこともありました、ということで。

ところで、年の瀬になったら、12月8日版がリリースされるのでしょうか。

10976/10933 BQO00549  konno            Re^2: STIME.EXE 12月08日版
( 1) 23/12/11 20:56 10975へのコメント(としきさん)
> ところで、年の瀬になったら、12月8日版がリリースされるのでしょうか。

ああ! 日付を間違えていて気が付きませんでした。
気づかせてくださってありがとうございます。m(__)m

ココログの記事のタイトルと内容の日付を間違えていたのを訂正しました。
掲示板のタイトルも訂正しときます。(^^;

> この状態からファンクションの1〜3を押してカレンダーを表示させると、一応
> カレンダーは表示します。が、その下側に「[Enter]キーを押してください。」と
> 表示され、その表示に従ってEnterを押すと、そこでプログラムが終了してしまい
> ました。

これは環境変数 NCPATHを通していない場合のエラー処理が出来ていないようですね。
修正します。m(__)m


10977/10972 BQO00549  konno            Re^3: Google IME はVZでは使いにくい !?
( 1) 23/12/11 23:00 10974へのコメント(めざらさん) コメント数:1
> どうやら,うちの環境だけのようですね。

VTDOS+CKWV 環境では何とか使えるようですが、素のVTDOS では問題ありでした。
VZ編集画面の最下行のファンクション表示
ファイル 窓換 文換 窓割 記憶 検索 置換 カット インサート help゙ ページ タグ

これが、Google IME を入れたら、サジェストなんたらとか

Google 日本語入力インジケータウインドウ 置換 カット インサート help゙ ページ タグ

このような表示が張り付いて消えません。(>_<)
サジェストなんたらは、設定で無効にしたら予測変換が出来なくなるようだし。
MS-DOS Player でも同じ状態だったので、これは無理です。(>_<)

切り替えて使おうかと思いましたが、ウザいのでアンインストールしちゃおうかしら。
Windows IME(のATOKモード)に慣れたのもあり、こちらの方が使いやすいと感じました。(^^;


10978/10972 DGF01024  めざら           Re^4: Google IME がVZで使いにくいとは思いません
( 1) 23/12/12 07:29 10977へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
前回のコメントの質問に応えていなかったことがあるので,まとコメで。

わたしが Google IME を愛用している理由は,
・賢い……と言うか,わたしが必要としている固有名詞(人名)に強い
・カスタマイズが簡単で,キーの割当てがかなり自由
・上記のキー設定をテキストファイルで出力でき,他のPCにインポート可能
・変換候補選択キーに数字とローマ字を選べ,後者ならホームポジション維持可能
……といったところです。起動キー[変換]も他のツールを使わずに指定しています。

konno さんのおっしゃる最下行への表示の張り付きとかサジェスト云々が邪魔
という状況に陥ったことは一度もありません。ごく自然に使えていました。

数ヶ月前から変換候補の表示順が少し変わってしまって少しストレスはあるものの,
期待する候補が出なかったり固有名詞に弱くて著名人名も候補に出てこないような
他の IME をメインにしようとは思わないです。【あくまでも個人の感想です】

当面は,dosvaxj3 環境メインで VZ を使おうと思います。


入力するデータの種類によって IME を使い分けるのが賢い使い方だと思いますし,
慣れた入力方式やキーバインドが可能ならそこに安住するのは自然ですから,
決して konno さんの感覚/感触を否定するわけではありません。

10979/10972 BQO00549  konno            Re^5: Google IME がVZで使いにくいとは思いません
( 1) 23/12/12 22:27 10978へのコメント(めざらさん) コメント数:1
> わたしが Google IME を愛用している理由は,
> ・賢い……と言うか,わたしが必要としている固有名詞(人名)に強い
> ・カスタマイズが簡単で,キーの割当てがかなり自由
> ・上記のキー設定をテキストファイルで出力でき,他のPCにインポート可能
> ・変換候補選択キーに数字とローマ字を選べ,後者ならホームポジション維持可能
> ……といったところです。起動キー[変換]も他のツールを使わずに指定しています。

こうしてみると、良いことづくめのようですね。私ももう少し試してみようかしら。

> konno さんのおっしゃる最下行への表示の張り付きとかサジェスト云々が邪魔
> という状況に陥ったことは一度もありません。ごく自然に使えていました。

VZでIMEを制御出来ていない環境がこの問題の共通点のようですね。
冷静に考えると、運用上はほとんど問題にならないようです。(^^;

> 数ヶ月前から変換候補の表示順が少し変わってしまって少しストレスはあるものの,
> 期待する候補が出なかったり固有名詞に弱くて著名人名も候補に出てこないような
> 他の IME をメインにしようとは思わないです。【あくまでも個人の感想です】

それぞれに長所や短所があるから、結局は個人の好みで選べばいいんでしょうね。

> 当面は,dosvaxj3 環境メインで VZ を使おうと思います。

dosvaxj3 は私がよく使う一部のキーバインドに問題が有るので、今はサブ窓になっています。(^^;

> 入力するデータの種類によって IME を使い分けるのが賢い使い方だと思いますし,
> 慣れた入力方式やキーバインドが可能ならそこに安住するのは自然ですから,
> 決して konno さんの感覚/感触を否定するわけではありません。

Google IME をインストールする時に、既定のIMEにしたら、切り替えてもすぐに戻ってしまうような。(>_<)
既定の設定を変えられないし。(;_;)
一旦アンインストールして既定のチェックを外そうとしたらPCの再起動になるし。(>_<)
で、既定のチェックを外したら、Google IME に切替が出来なくなりました。(>_<)

# どうなっとるんじゃ〜!! (-_-メ)


10980/10933 BQO00549  konno            STIME.EXE Ver 231212
( 1) 23/12/13 01:12 10933へのコメント(konnoさん)
  STIME.EXE Ver 231212 に更新しました。

・DOSVAXJ3 の VGAで動くアナログ時計とカレンダのアクセサリです。
・NCPATH= でデータファイルの置き場所を指定してください。末尾に "\" が無ければ追加します。
・PATH が通っていないとカレントから読み出しますが、無い場合は祝日情報が表示されません。

・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、STIME.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにします。文字のデジタル時計とカレンダのみ表示します。
・VTDOS では動作しません。

23-12-12
・NCPATH が通ってなくてデータファイル読めない場合エラー終了していたのを警告表示に修正。


自作、改作アプリの放置部屋に置いてあります。


10981/10972 DGF01024  めざら           Re^6: Google IME がVZで使いにくいとは思いません
( 1) 23/12/13 08:47 10979へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
いやいや,良いことずくめというわけないじゃないですか。
メリットだけは挙げましたが,ストレスを感じるところを挙げてませんからね。

・部首名入力ができない(MSは部首名[F05]で可能)
・(最近)句読点や中黒を入力したいのに余計な感嘆符が大量に候補に出てくる

こういう長短を考えて,必要なときはすぐ切り替えられるようにしています。
MS IME も昔に比べればとても賢くなっていますよね。


> dosvaxj3 は私がよく使う一部のキーバインドに問題が有る

この問題点はどこかに書いてありましたっけ? 共有したいです。
試用程度にしか使っていなかったもので実感がありません。


> # どうなっとるんじゃ〜!! (-_-メ)

一旦,落ち着きましょうか。(笑)
Windowsの 設定>言語>キーボード (入力方式の切り替え)
 入力言語のホットキー (テキストサービスと入力言語)
 → 入力言語を切り替える 左Alt+shift
  IME ごとにキーシーケンスを設定することもできます。(不要だけど)


上記「入力方式の切り替え」の最初の項目に,
「アプリウィンドウごとに異なる入力方式を設定する」
というのを見つけたので,当面これを適用しておきます。
VZ で固有名詞をたくさん入力するということはないので。
(一応,うまいこと制御できています)

10982/10960 BQO00549  konno            DOSVAXJ3  起動時 NumLk が OFF になってしまう
( 1) 23/12/13 16:30 10960へのコメント(konnoさん) コメント数:1
DOSVAXJ3 備忘録 2つ目です。

dosvaxj3 起動時に NumLk が OFF になってしまいます。
NumLk のランプは ON のままなので、ON操作をすると、ランプが消えます。

テンキー付きのPC では、これに気づかず、誤操作してしまいます。
起動時に 自動的に NumLk ON にする方法はわかりません。

NumLk ON コマンドなどは効かないようです。

dosvaxj3 起動時に NumLk の制御を何もしなければ、問題無くなると思うのですが。

次回はキーバインドの問題ですね。
纏めるのに時間が必要です。


10983/10972 BQO00549  konno            Re^7: Google IME がVZで使いにくいとは思いません
( 1) 23/12/13 17:58 10981へのコメント(めざらさん)
> ・部首名入力ができない(MSは部首名[F05]で可能)

これはあまり使っていませんが、たまに使うかもしれないので、使える方がいいですね。

> ・(最近)句読点や中黒を入力したいのに余計な感嘆符が大量に候補に出てくる

これは困るかも。(^^; 私はよく中黒を使うので。(^^;

> こういう長短を考えて,必要なときはすぐ切り替えられるようにしています。
> MS IME も昔に比べればとても賢くなっていますよね。

切り替えると操作系の癖が変わるので、却って戸惑いそうですね。(^^;
普段は MS の IME で、必要な時だけ切り替えればいいのかな。

> > dosvaxj3 は私がよく使う一部のキーバインドに問題が有る
> この問題点はどこかに書いてありましたっけ? 共有したいです。
> 試用程度にしか使っていなかったもので実感がありません。

#10960:DOSVAXJ3 備忘録 のツリーで今纏め中です。
・chev 内部コマンドでモード切替が上手くいかない場合がある?
 その場合、chej.exe を使うのがよさそう。
・dosvaxj3 起動時に NumLk が OFF になってしまう。
・Fキーなどの一部のキーバインドが使えない。
 現在纏め中です。(^^;

> 一旦,落ち着きましょうか。(笑)

一応落ち着いたのでまた試してみようという気になっています。(^^;

> Windowsの 設定>言語>キーボード (入力方式の切り替え)
>  入力言語のホットキー (テキストサービスと入力言語)
>  → 入力言語を切り替える 左Alt+shift
>   IME ごとにキーシーケンスを設定することもできます。(不要だけど)

これは試していませんでした。やってみます。

> 上記「入力方式の切り替え」の最初の項目に,
> 「アプリウィンドウごとに異なる入力方式を設定する」
> というのを見つけたので,当面これを適用しておきます。
> VZ で固有名詞をたくさん入力するということはないので。
> (一応,うまいこと制御できています)

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


10984/10960 DGF01024  めざら           Re: DOSVAXJ3  起動時 NumLk が OFF になってしまう
( 1) 23/12/13 19:48 10982へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
Numlock の問題は,自宅のデスクトップ(フルキーボード)では再現できませんでした。

テンキーの付いている幅広ノートで発生するということでしょうか?


10985/10960 BQO00549  konno            Re^2: DOSVAXJ3  起動時 NumLk が OFF になってしまう
( 1) 23/12/13 22:32 10984へのコメント(めざらさん) コメント数:1
> Numlock の問題は,自宅のデスクトップ(フルキーボード)では再現できませんでした。
> テンキーの付いている幅広ノートで発生するということでしょうか?

ええ!? まさか!! と思って、デスクトップ機で確認してみました。
本当だ! Numlock が効いています!!

もしかしたら、ノートPCで常用している dosboxj.conf が壊れているかもしれない。
そう思って、最新の dosboxj.conf に、[autoexec] の内容を張り付けてみました。

げげぇ!! Numlock が効いている!!

どうやら今年の怒涛の dosvaxj3更新の時に色々 dosboxj.conf を弄ったのをそのまま使っていたのが原因だったようです。
テキストとしては壊れていないと思うので、どこが原因になったのか調べてみます。
問題が解決できてホッとしました。ありがとうございます。m(__)m


# 作者様に報告していたらまた恥をかくところでした。(^^;;

ていうか、新しい版が出てるし。(^^;


10986/10960 BQO00549  konno            Re^3: DOSVAXJ3  起動時 NumLk が OFF になる原因判明
( 1) 23/12/13 23:09 10985へのコメント(konnoさん)
起動時 NumLk が OFF になる原因が判明しました。

dosboxj.conf の [sdl] セクションで
videodriver =
これを、

videodriver = directx

このように変えていたのが原因だったようです。
videodriver =
に戻したら正常になりました。
当時は表示が遅いのをなんとか速く出来ないか色々試行錯誤していたのでした。(^^;

お騒がせしてすみませんでした。
問題点に気づかせてくれためざらさんに感謝です。m(__)m


dosboxj.conf は新しい版に変えましたが、デフォルトの状態だとやはりかなり遅いようです。
[cpu] セクションの
cycles = auto

ここを

cycles= auto 50000 100% limit 100000

こう変更すると、爆速になります。(^_^)
拙作の STIME.EXE のカレンダーを ←→ キー押しっぱなしすると違いがよくわかります。(^^;
カレンダーマクロでもいいかとやってみたら違いがよくわからなかったです。(^^;
STIME.EXE はかなり負荷の高い処理をしているんですね。(^^;

10987/10987 BQO00549  konno            DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/14 00:58 コメント数:1
DOSVAXJ3 JP231212版 (2023/12/12)が更新されていました。
軟式さんのサイトから引用します。

●変更履歴
 build JP231212 (2023/12/12)

int 21h ax=714eh, 714fh で 2 バイト余計にバッファに書き込みしていたのを修正しました。
int 21h ax=714eh, 714fh, 71a6h で返されるファイル情報の日時等の値が間違っていたのを修正しました。
int 21h ax=71a7h の日時変換が正しくなるよう修正しました。
J-3100 ビデオモード 75h (640×400 16色) に対応しました。


うーん、今回はあまり関係ない更新かと思いましたが

Int 21/AX=714Eh - Windows95 - LONG FILENAME - FIND FIRST MATCHING FILE
Int 21/AX=714Fh - Windows95 - LONG FILENAME - FIND NEXT MATCHING FILE
Int 21/AX=71A6h - Windows95 - LONG FILENAME - GET FILE INFO BY HANDLE
Int 21/AX=71A7h/BL=00h - Windows95 - LONG FILENAME - FILE TIME TO DOS TIME
Int 21/AX=71A7h/BL=01h - Windows95 - LONG FILENAME - DOS TIME TO FILE TIME

これは Win95 の LFN 関係の修正だったのですね。
互換性が益々向上したようで、ありがたいです。作者様に感謝します。m(__)m


10988/10987 DGF01024  めざら           Re: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/14 07:41 10987へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
お,来ましたね。待ってました!

ところで,キーバインドの不具合の問題は konno さんから報告されていますか?

起動時に,ウィンドウの下の方がディスプレイの枠外になってしまうのを何とか
直してもらえないかなとか思っているのですが,メールするしかないのかな……


10989/10960 BQO00549  konno            DOSVAXJ3 備忘録  起動時ウィンドウが枠外にはみ出る場合
( 1) 23/12/14 18:00 10960へのコメント(konnoさん) コメント数:1
備忘録のため、#10988 のコメントをこちらでします。m(__)m

> ところで,キーバインドの不具合の問題は konno さんから報告されていますか?

以前気がついた一部のキーは報告して対応していただきました。
今回は、改めて調べ直して纏めてから報告しようと思っていたので、まだ報告できていません。

> 起動時に,ウィンドウの下の方がディスプレイの枠外になってしまうのを何とか
> 直してもらえないかなとか思っているのですが,メールするしかないのかな……

これは以前報告した時のやり取りを引用しますね。

---------------------------------------------------------------------
> いまさらですが、画面の設定が実画面をはみ出す設定の時は、ALT[Enter] でフルスク
> リーンにしようとすると落ちてしまうのですね。
 フルスクリーンの場合、実際のディスプレイの解像度より大きい解像度は
設定できないような気がします。
 フルスクリーンで SXGA の解像度と一致するモードがない場合、それより
大きな解像度を選択して中央に表示といった動作になると思われますが、
SXGA と同じか、より大きい解像度が存在せず、画面解像度の設定でエラー
になっているものと思われます。
 dosboxj.conf で [sdl] fullresolution=1366x768 output=opengl とする
と落ちなくなると思いますが、スケーリングが入るので文字が綺麗にでない
と思います。
---------------------------------------------------------------------

それで、dosboxj.conf の [sdl] セクションを見てみると

# fullresolution: What resolution to use for fullscreen: original, desktop or a fixed size (e.g. 1024x768).
# Using your monitor's native resolution with aspect=true might give the best results.
# If you end up with small window on a large screen, try an output different from surface.
# On Windows 10 with display scaling (Scale and layout) set to a value above 100%, it is recommended
# to use a lower full/windowresolution, in order to avoid window size problems.


これを見て、下のように、画面サイズを指定したらはみでなくなったようです。

fullresolution = original
#fullresolution = e.g. 1336x768
#fullresolution = 100%

今は対応されたのか、元に戻しています。

窓状態の時は

# windowresolution: Scale the window to this size IF the output device supports hardware scaling.
# (output=surface does not!)

これが設定のようですが、読めないので、適当にサイズ指定してみました。

#windowresolution = original
windowresolution = 1336x768

これで画面枠からはみ出なくなると思います。
お使いのPCの画面サイズを入れて試してみてください。

追記

過去記事で設定例を出していました。

#10765: DOSVAXJ3の dosboxj.conf 設定例 投稿者: konno   2023/04/15(土)
> [sdl]
> windowresolution = 1336x768
> # 私の画面サイズ これを入れると画面をはみ出す行サイズでもフルスクリーンモードが使えるかも


12/20 追記

#10997 より
> 以前の設定例は見ていて,手元の画面解像度に合わせて値を入れているのですが,
> それでも下端がはみ出してしまうので,先の発言でした。

これを聞いて私が勘違いしていることに気が付きました。

windowresolution = 1336x768

この指定では行数制限を入れていないとはみ出てしまうようです。
行数制限とは、[dosbox] セクションで

vtext1 = svga,40
# vt1 svga,40 解像度 800× 600 文字 100×37〜40 (40行なら画面をはみ出さない)
vtext2 = xga,44
# vt2 xga 解像度 1024× 768 文字 128×48〜80 (44行なら画面をはみ出さない)
vtext3 = sxga,44
# vt3 sxga 解像度 1280×1024 文字 160×64〜75 (44行なら画面をはみ出さない)
#vtext4 = vga
# vt4 vga 解像度 640× 480 文字 80×30〜51 (44行なら画面をはみ出さない)
vtext4 = sxga24,29
# sxga24 解像度 1280×1024 文字 106×42〜51 (29) 24ドットフォント
# xga24 解像度 1024× 768 文字 85×32〜60 (29) 24ドットフォント

このように各自のディスプレイで、はみ出ない行数を指定することで、はみ出なくなります。
ややこしいので私は上のようにコメントを入れています。


10990/10990 BQO00549  konno            MS-DOS Player 2023/12/14 更新
( 1) 23/12/14 18:36
MS-DOS Player 2023/12/14 が更新されました。

更新内容を引用します。
-----------------------------------------------------------

INT 10h AH=08hについて、漢字の文字コードを取得できるよう修正しました。

ReadConsoleOutputCharacterAで漢字を1文字だけ取得すると、20hが返るようです。
行全体を取得することで、漢字の第1・2バイトのどちらも読めるようになっているかと思います。

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

マイナーなファンクションですが、たまたま気が付いてご報告したら対応していただけました。
うれしいです!! \(^^)/ ヤッタ-


きっかけは
古いBASICコンパイラで、SCREEN (C,B) という関数で画面上の文字を読み取れるのですが
DOSVAXJ3 では正常に読み取れましたが、MS-DOS Player では、
1バイト文字は読み取れますが、2バイト文字は、空白文字(文字コード 20h)になって
読み取れません。

そこで、VZマクロで INT10 のBIOSコールの返り値を見てみました。
INT 10/AH=08h VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION

=int10-08.def
*m
80 ^\ "int10-08" ax=$0800, &i($10) &m("int10-08: AX=%04x CF=%d",ax,r).
*

このマクロで、カーソル位置の「★(819Ah)」を見た時の AXの返り値は

VTDOS 1D81
DOSVAXJ3 1F81
MS-DOS Player 1F20

他の2つのエミュでは 漢字の1バイト目のALは 81h ですが、
MS-DOS Player の ALは、20h 空白文字になっています。
念のため 英語モードの VZUS でも見てみました。

MS-DOS Player 1F81 1バイト目
MS-DOS Player 1F9A 2バイト目

どうやら MS-DOS Player での日本語環境で漢字は、INT 10/AH=08h の
返り値が空白になっているように見えます。


興味のある方は、更新前の MS-DOS Player で上のマクロを試してみてください。
これで私が何を弄っていたのかバレてしまったかも。(^^;


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


10991/10991 BQO00549  konno            VGAで動く アステロイドゲーム ASTE.EXE Ver.231216
( 1) 23/12/16 21:41
・DOSVAXJ3 の VGAで動く アステロイドゲームです。
・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、ASTE.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにすれば動作します。
・VTaste1.zipDOS では動作しません。
・ソースも付けます。

・更新履歴
2023-12-16 公開用に色々弄りました。
1991-02-28 とりあえず作成?

自作、改作アプリの放置部屋に置きました。

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


10992/10992 BQO00549  konno            コマンドラインで ZIPファイル作成
( 1) 23/12/18 22:54 コメント数:1
#10961 のとしきさんの発言

> 最近のアンチウィルスソフトはLZH形式を正しくチェックできないということで、
> 最近では一般向けに公開されるファイルにはあまり使われなくなっています。
> 次回からはZIP形式の使用がお勧め。

これを受けて、ZIP形式に変更したんですが
今まで LZHファイルは VZファイラーで作成できたんですが、ZIPファイルは VZではできません。
しかたがないので Windowsのエクスプローラーで作成しましたが、正直面倒くさいです。
何とかコマンドラインで出来ないか検索したら、ありました。7zip のサイトです。

インストールしないでzipや7z圧縮ファイルを作る方法
https://7-zip.opensource.jp/howto/non-install-compress.html

> コマンドライン版を使う方法
>
> もっとも簡単なのは7-Zipのコマンドライン版を使う方法です。まず、「ダウンロード」のページから「7-Zip コマンドラインバージョン」を選択してファイルをダウンロードします。ファイル名は、
>
> 7za<バージョン番号>.zip
>
> のようになっています。これをダウンロードしたら、適当なフォルダに解凍します。zip形式になっていますが、Windows標準の機能だけでも解凍できます。ZIPファイルに含まれるのは以下のファイルです。


古い版はセキュリティの問題で落とせなかったので、新しい版のコンソール版を落としました。

圧縮・解凍ソフト7-Zip 23.01 (2023-06-20) のダウンロード:
ダウンロード .7z Windows x86 / x64 7-Zip Extra: コンソール板, 7z DLL, Plugin for Far Manager

その中の3つのファイル

2023/06/20 17:00 284,160 7za.dll
2023/06/20 17:00 821,248 7za.exe
2023/06/20 17:00 161,792 7zxa.dll

これを PATH の通ったフォルダに入れます。
次にファイラーマクロの改造ですが、LZH と同じ操作環境を作るのに苦労しました。(^^;
エイリアスとかすっかり忘れていました。(;_;)

VZFL.DEF は、マクロメニューで

5 "【圧縮解凍】",20,16
"Z 7zip圧縮(コピー) %^7za.EXE a %2%F %@3",#! ;
"7zip解凍(同名ディレクトリ) %^7zax %1",#! ;ディレクトリ)作成して展開
"P LHA圧縮(コピー) %^lha a -rx %2%F %@3",#!
"M LHA圧縮(移動) %^lha m -rx %2%F %@3",#!
"N LHA圧縮(同名ファイル移動) %^lham %1",#!
"N LHA解凍(同名ディレクトリ) %^lhax %1",#! ;ディレクトリ)作成して展開
"U LHA解凍 %^lha x %1 %2%G%\",#!
"V LHA表示 lha l ",#!
"A 実行ファイル圧縮(com,exe) %^diet %:*.com %:*.exe",#!
"S 実行ファイル圧縮(diet) %^diet %*",#!
"R 実行ファイル解凍(diet) %^diet -ra %*",#!
; "pkunZip 表示 %^pkunzip -v ",#! ;古い!
"H 7zip 表示 %^7za l ",#! ;7Z / ZIP 表示
"pKxarc(解凍) %^pkxarc -x ",#!
"I ish(作成) %^ish %1 /sn /m ",#!
"W wsp(差分作成 old new) %^wsp %1 %2 ",#!
"W wsp(com作成 wup com) %^wsp -s %1 %2 ",#!

このように LHA と同じような設定を 7zip 用に追加しました。
次に VZ.DEF のエイリアスの設定です。

* A エイリアス
lhax Mkdir %< ; Lha x %1 %<%\
7zax Mkdir %< ; 7za x -o%< %1

このように、フルパスで ディレクトリ を作成してからフルパスで指定しないと駄目みたいです。
うまく動作するまで何度も試行錯誤しました。(^^;

公開しているメインDEF は古いものでしたね。(^^;

2017/09/08 00:00 29,016 VZ.DEF
2017/09/08 00:00 12,279 VZ2.DEF
2017/09/08 00:00 12,788 VZFL.DEF

最新の版をアップしましたのでご参考に。


# これで地獄から解放されて天国になるんだ・・・きっと。(^^;


10993/10992 CXB00940  としき           Re: コマンドラインで ZIPファイル作成
( 1) 23/12/19 01:35 10992へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> ZIPファイルは VZではできません。

あ〜、私はVzでは、いにしえのpkzipなんて物を使っていたのですが、そういえば
Windows環境には解凍用のpkunzipしか持ってきていないなぁ。
最近のWindowsだと、圧縮側は動かない、とかあるかも。
7zipは、職場だと、某取引先とのやり取りがこいつに指定されているため、会社の
マシンにGUI版はインストールされている。
そうか、こいつにもコンソール版というのがあるのね。
面白そうだから、今度試してみよう。


10994/10992 BQO00549  konno            Re^2: コマンドラインで ZIPファイル作成
( 1) 23/12/19 16:49 10993へのコメント(としきさん) コメント数:1
> あ〜、私はVzでは、いにしえのpkzipなんて物を使っていたのですが、そういえば
> Windows環境には解凍用のpkunzipしか持ってきていないなぁ。
> 最近のWindowsだと、圧縮側は動かない、とかあるかも。

7zip は、pkzip より圧縮効率が良いらしいので、互換性のない部分もありそうですね。

> 7zipは、職場だと、某取引先とのやり取りがこいつに指定されているため、会社の
> マシンにGUI版はインストールされている。

ファイル形式が指定されていると、やはり色々制限がきつくなるのですね。

> そうか、こいつにもコンソール版というのがあるのね。
> 面白そうだから、今度試してみよう。

VZ党はやはりコマンドラインでやるのが粋ですよね。(^^;


10995/10995 BQO00549  konno            書籍 パソコンBASIC命令互換表
( 1) 23/12/20 01:49
ココログとの連携記事です。画像があります。
http://tamaneko2.cocolog-nifty.com/vz2/

最近 BASIC のプログラムを弄っているので、腐海に埋もれている参考書類を発掘しています。

長年埋もれていた中でまず見つけたのがこれ

パソコンBASIC命令互換表です。87年版

表紙
Dsc_0190

裏表紙
Dsc_0191

¥1200

各社のBASICの構文を詳細に比較しており、326ページもあります。

1987年の書籍なので、裏表紙には東芝のビジネスパソコン PASOPIA1600の広告が載っていますね。


掲示板でのとしきさんとのやりとりで
#10968:Re^6: アナログ時計とカレンダのアクセサリ 11月24日版  投稿者:konno   2023/12/05(火)
からのツリーで

> > > 当時、「各種BASICの違い」みたいな記事があって、参考に成りました。どこ行ったかなぁ。
> >
> > うちの、1985年ごろのベーマガに、その手の記事がありました。
> > ただ、多くの機種を対象としていた関係で、1機種あたりの分量はたいしたことは
> > ありませんね。
> >
> もしかしたら私もその本を読んだのかもしれませんね。

こんなふうに言っていましたが、読んだのはこの本でした。
これからは本格的に BASIC の話題を出していきたいと思います。


10996/10987 BQO00549  konno            Re^2: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/20 02:27 10988へのコメント(めざらさん) コメント数:1
めざらさんへのコメントを備忘録の方に書いてしまいましたが、リンクが切れてしまいますね。
わかりにくくてすみません。いまさらですが書き直します。

> ところで,キーバインドの不具合の問題は konno さんから報告されていますか?

以前気がついた一部のキーは報告して対応していただきました。
今回は、改めて調べ直して纏めてから報告しようと思っていたので、まだ報告できていません。

"> 起動時に,ウィンドウの下の方がディスプレイの枠外になってしまうのを何とか"
"> 直してもらえないかなとか思っているのですが,メールするしかないのかな……"

これは以前報告した時のやり取りがあるので、
#10989 の備忘録の方に書いたのでそちらを参照してください。


10997/10987 DGF01024  めざら           Re^3: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/20 07:29 10996へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
わざわざ指示すみません。ありがとうございます。
以前の設定例は見ていて,手元の画面解像度に合わせて値を入れているのですが,
それでも下端がはみ出してしまうので,先の発言でした。

想像するところ,FHD のような高解像度だと文字等の拡大率を別に設定するわけですが,
(150%推奨のところを125%にしているけど)こういうのが影響しているかもしれません。

Windows アプリケーションと違って,DOS窓はフォントのサイズが固定なので。
(外してるでしょうけど)

10998/10992 CXB00940  としき           Re^3: コマンドラインで ZIPファイル作成
( 1) 23/12/20 16:32 10994へのコメント(konnoさん)
参照先:http://toshiki.la.coocan.jp/
> 7zip は、pkzip より圧縮効率が良いらしいので、互換性のない部分もありそうですね。

こういうのってありそうですね。
zip関係ではGNU版のgzipというのもあって、デフォルトで作成されるファイルは
pkzip互換だし、特にデメリットもないはずですが、なんとなく安心感とでもいう
か、昔、PC-98の時代は解凍の際にしか使わなかったような記憶があります。速度
だったかメモリ効率だったか、何かの面ではメリットもあったはずなんですけどね。
あ、でも、.tarとか.tazといった拡張子のファイルの解凍の際にはgzipを使って
いたのではなかったかな。.tarの場合はkmtarだったかな。

> ファイル形式が指定されていると、やはり色々制限がきつくなるのですね。

制限というか、特定の取引先とやり取りしない大多数の人の場合、単に特定のソフト
を入れるかどうかだけの問題ですから、たいしたことはありません。

> VZ党はやはりコマンドラインでやるのが粋ですよね。(^^;

御意。

10999/10987 BQO00549  konno            Re^4: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/20 16:36 10997へのコメント(めざらさん) コメント数:1
> 以前の設定例は見ていて,手元の画面解像度に合わせて値を入れているのですが,
> それでも下端がはみ出してしまうので,先の発言でした。

そうだったんですか、それを聞いて私が勘違いしていることに気が付きました。

windowresolution = 1336x768

この指定では行数制限を入れていないとはみ出てしまうようです。
行数制限とは、[dosbox] セクションで

vtext1 = svga,40
# vt1 svga,40 解像度 800× 600 文字 100×37〜40 (40行なら画面をはみ出さない)
vtext2 = xga,44
# vt2 xga 解像度 1024× 768 文字 128×48〜80 (44行なら画面をはみ出さない)
vtext3 = sxga,44
# vt3 sxga 解像度 1280×1024 文字 160×64〜75 (44行なら画面をはみ出さない)
#vtext4 = vga
# vt4 vga 解像度 640× 480 文字 80×30〜51 (44行なら画面をはみ出さない)
vtext4 = sxga24,29
# sxga24 解像度 1280×1024 文字 106×42〜51 (29) 24ドットフォント
# xga24 解像度 1024× 768 文字 85×32〜60 (29) 24ドットフォント

このように各自のディスプレイで、はみ出ない行数を指定することで、はみ出なくなります。
ややこしいので私は上のようにコメントを入れています。

> 想像するところ,FHD のような高解像度だと文字等の拡大率を別に設定するわけですが,
> (150%推奨のところを125%にしているけど)こういうのが影響しているかもしれません。

これが影響するかはわかりませんが、上記の設定で試してみてください。
備忘録にも追記しておきます。


11000/10987 DGF01024  めざら           Re^5: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/20 21:44 10999へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
> このように各自のディスプレイで、はみ出ない行数を指定することで、はみ出なくなります。

うーん,そういうことではなくて。

例えば,わたしの場合,xga24,40 で起動する設定をしています。
FHD のディスプレイなら,9割方の高さで十分な余裕があるわけです。
しかし,起動するたびに下端が隠れてしまうので,いちいち移動します。

これは本来 Windows が制御すべき問題なのだろうと思うわけですが,
他のアプリケーションのウィンドウでは,あまりこういうことはないように思います。
もちろん,アプリケーション側できっちり制御している場合もあります。
VTDOS もきっちり制御していますよね。xyzzy なんかもそうです。

ウィンドウのプロパティから「移動」を行っても,その位置は記憶されません。
[Ctrl]や[Shift]押しながらウィンドウを閉じても,やはり位置は記憶されません。
記憶されないと言うか,起動・終了のたびに更新されて,どんどん下がっていきます。

まぁ,極端なことになる前にリセットされる感じなのですが,状況は変わらず。
毎回だとちょっとストレスなのですが,行数を減らすのもなんか負けみたいで(笑)。

11001/10987 BQO00549  konno            Re^6: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/20 22:49 11000へのコメント(めざらさん) コメント数:1
> FHD のディスプレイなら,9割方の高さで十分な余裕があるわけです。
> しかし,起動するたびに下端が隠れてしまうので,いちいち移動します。

なるほど、そういうことですか。
私も毎回移動していたので、確かに面倒ですよね。
これは要望していいんじゃないでしょうか。駄目もとで。

私からメールしてみますね。
年末でお忙しいでしょうから対応してくれるかはわかりませんが。


11002/10987 BQO00549  konno            Re^7: DOSVAXJ3 JP231212版 (2023/12/12)更新
( 1) 23/12/21 16:08 11001へのコメント(konnoさん)
> 私からメールしてみますね。

メールしたらお返事もらえました。
なんとかなりそうです。
備忘録も読んでもらえて、諸々対応してもらえそうです。
ありがたいです。

詳細は備忘録の方に書きます。


11003/10960 BQO00549  konno            起動時の窓位置の問題その他諸々、キーコード
( 1) 23/12/21 16:52 10989へのコメント(konnoさん)
作者様からメールのお返事をいただき、掲示板も見てもらえたようです。

起動時の窓位置の問題は

>  起動時の座標については DOSBox-X では設定ファイルの [sdl]
> windowposition で指定できるようになってますので、この処理を持って
> こようかと考えております。

これで解決できそうです。

> また、chev us で qbasic が動作しない件はこちらでも確認しましたの
>で修正します。

これも解決できそうでうれしいです。

> キー入力の不具合等もあるようですので、可能でしたら詳細をご連絡ください。

BIOSコールでVTDOSとの違いを見てみました。★印が相違しています。

F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
3B00 3C00 3D00 3E00 3F00 4000 4100 4200 4300 4400 8500 8600 VTDOS
3B00 3C00 3D00 3E00 3F00 4000 4100 4200 4300 4400 8500 8600 DOSVAXJ3

\F1 \F2 \F3 \F4 \F5 \F6 \F7 \F8 \F9 \F10 \F11 \F12
5400 5500 5600 5700 5800 5900 5A00 5B00 5C00 5D00 8700 8800 VTDOS
5400 5500 5600 5700 5800 5900 5A00 5B00 5C00 5D00 no★ no★ DOSVAXJ3

^F1 ^F2 ^F3 ^F4 ^F5 ^F6 ^F7 ^F8 ^F9 ^F10 ^F11 ^F12
5E00 5F00 6000 6100 6200 6300 6400 6500 6600 6700 8900 8A00 VTDOS
keymap★5F00 6000 6100 no★ no★ 6400 6500 終了★ IME★ no★ no★ DOSVAXJ3

@F1 @F2 @F3 @F4 @F5 @F6 @F7 @F8 @F9 @F10 @F11 @F12
6800 6900 6A00 6B00 6C00 6D00 6E00 6F00 7000 7100 8B00 8C00 VTDOS
6800 6900 6A00 6B00 6C00 6D00 6E00 6F00 7000 no★ no★ no★ DOSVAXJ3

^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^0 ^- ^^
02FF 0300 04FF 05FF 06FF 071E 08FF 09FF 0AFF 0BFF 0C1F 0DFF VTDOS
0300 no★ no★ no★ no★ 071E no★ no★ no★ no★ 0C1F 0D00★ DOSVAXJ3


no★ はキーコードが出ていないところです。
^F1〜 ^F12 は keymap を弄った所もあるので、修正可能な範囲でお願いします。


★印のところはVZで使えません。^F9 はDOSVAXJ3 が強制終了してしまうのでご注意を。
この表をメールしました。


BIOSキーコード表作成は

== KEYin.def ==
*m
80 ^^ "key in?"
k=ks1, (k>=8)?{(&m("hennkann").}
&w(50) &m("BIOS key in? ")
:a c0,
:A
ax$0000,&i($16) a=r,
(c==0)?b=ax,d=dx,
(a!=0&&c==0)?{c++,>A}
&m("BIOS key in? AX=%04x dx=%04x b=%04x r%d %c",ax,dx,b,r,ax%256)
&w(20)
(AX==$011B)?>Q ;int16h
(ax==$061B)?>Q ;int21h
(ax==$0600)?>A
&?("%04x%c",ax,9) ;★ キーコード+TAB を書き込む
>A
:Q &m("") .
*

これで作りました。


11004/11004 BQO00549  konno            VTDOS155 のプロンプト
( 1) 23/12/21 17:26 コメント数:3
VTDOSの最新版に更新してからプロンプトにパスが表示されなくなりました。
C>
と表示されるだけです。
誰も言わないので、この症状はうちだけなのかしらん。

不便を感じながらそのまま使っていましたが、解決方法を思い出しました。
プロンプト、そうだ! prompt コマンドだ!

ネット検索すると

PROMPT コマンドの引数では次の特殊コードが使用できます。

$A & (アンパサンド)
$B | (パイプ)
$C ( (左かっこ)
$D 現在の日付
$E エスケープ コード (ASCII コードの 27)
$F ) (右かっこ)
$G > (不等号 (より大))
$H バックスペース (直前の文字を削除します)
$L < (不等号 (より小))
$N 現在のドライブ
$P 現在のドライブとパス
$Q = (等号)
$S (空白)
$T 現在の時刻
$V Windows のバージョン番号
$_ キャリッジ リターンとラインフィード
$$ $ (ドル記号)


それで

prompt $P$G

起動BATにこう設定しました。
いまさらの TIPS いや、私が忘れているだけか。(^^;


11005/11005 BQO00549  konno            DOSVAXJ3 修正テスト版
( 1) 23/12/21 19:22 コメント数:1
DOSVAXJ3 修正テスト版をメールでいただきました。
あまりに早い対応にびっくりです。ありがたいです。

>  修正テスト版を作成しました。下記よりダウンロードしてください。
>  64bit 版 dosboxj.exe のみです。
> https://www.nanshiki.co.jp/test/dosboxj1221.zip
>  リンクを掲示板に書いても問題ありません。

ということなので、上記のリンクからテスト版を落とせると思います。
以下丸ごと引用します。

----------------------------------------------------------------
 ファンクションキーと Ctrl 等の組み合わせについては DOSBox の機能
に割り当てられており、そのままでは入力されません。
 Ctrl-F1 でキーマッパーを表示し、機能名をクリックして Del をクリッ
クすると機能を削除できます。詳しくは下記を参照してください。Clipboard
は DOSVAXJ3 独自機能です。
https://www.dosbox.com/wiki/Special_Keys
キー割当 機能名
Ctrl-F1 Mapper
Ctrl-F4 Swap Image
Ctrl-F5 Screenshot
Ctrl-F6 Rec Wave
Ctrl-F7 Dec Fskip
Ctrl-F8 Inc Fskip
Ctrl-F9 ShutDown
Ctrl-F10 Cap Mouse
Ctrl-F11 Dec Cycles
Ctrl-F12 Inc Cycles
Alt-F10 Clipboard
Alt-F12 Speedlock
 ただ、F11, F12 関連や Ctrl-2 等については入力が正しく動作しており
ませんでしたので修正しています。

 起動時の位置については dosboxj.conf の [sdl] に windowposition を
追加してください。
・現行通り
windowposition=-
・画面中央
windowposition=,
・座標指定 x=100 y=0
windowposition=100,0
 となります。

 chev us での qbasic の動作も確認しております。

 上記の修正以外にも DOSBox SVN の修正の取り込み等、いろいろ修正して
おります。
 一通りの動作確認はしておりますが、問題がありましたらご連絡ください。

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
小林隆 support@nanshiki.co.jp
有限会社 軟式
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
----------------------------------------------------------------


11006/11005 DGF01024  めざら           Re: DOSVAXJ3 修正テスト版
( 1) 23/12/21 20:28 11005へのコメント(konnoさん)
参照先:http://mezala.la.coocan.jp/
起動時のウィンドウ位置指定についても要望してくださり,有難うございました。

dosboxj.conf の [sdl] に windowposition を追加し,200,40 を指定しました。

素晴らしい! 素晴らしいです。完全に制御されていますね。
軟式の小林様に大感謝です。

11007/11004 DGF01024  めざら           Re: VTDOS155 のプロンプト
( 1) 23/12/21 20:32 11004へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
> prompt $P$G

それ,純DOSの時代からずっとですよ。(^。^)

11008/11004 CXB00940  としき           Re: VTDOS155 のプロンプト
( 1) 23/12/21 22:54 11004へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> VTDOSの最新版に更新してからプロンプトにパスが表示されなくなりました。

めざらさんも書いていますが、これはDOSのころから自分で設定するもののはず。
最新版に更新して変化したとなると、何かが変わってしまっていると考えられます。
プロンプトだけの問題ならいいのですが、ほかに変なものが変わっていないか、
きちんとチェックした方がいいかも。


11009/11004 BQO00549  konno            Re^2: VTDOS155 のプロンプト
( 1) 23/12/21 23:29 11007へのコメント(めざらさん)
> > prompt $P$G
> それ,純DOSの時代からずっとですよ。(^。^)

こんなことも思い出せないなんて、もう完全にボケてますね。
ボケても話題を振りまける花咲か爺さんになるのじゃぁ。(^^;


11010/11004 BQO00549  konno            Re^2: VTDOS155 のプロンプト
( 1) 23/12/21 23:37 11008へのコメント(としきさん) コメント数:1
> めざらさんも書いていますが、これはDOSのころから自分で設定するもののはず。
> 最新版に更新して変化したとなると、何かが変わってしまっていると考えられます。

自分だけの症状だとすると、更新の時に無意識に prompt C> とか打っちゃったのかも。
マクロのバグでここの設定部分が壊れた可能性が一番高いですね。(^^;


# 俺はバグバグの実を食べて改造王になる!!


11011/11011 BQO00549  konno            CKWV12 + IME でカーソルが見えなくなる 
( 1) 23/12/22 20:42 コメント数:1
CKWV12 環境で Windows IME(ATOKモード)でカーソルが見えなくなる場合があります。
例えば、「誤変換」を間違えて「ごごへんかん」と打ち込むと「午後変換」になります。
BS で「ごごへんかん」に戻るのでカーソルを誤字位置の方に動かすとカーソルが見えなくなります。
VZが無くても同じ状況になります。
見ていると、数十秒に1回くらい一瞬表示されるようです。

10♯さんのBBSで聞いてみましたが、再現しないそうです。

富士通デスクトップPC RAM 16GB Intel Core i5-6500 3.20GHz 64ビット Windows10 Pro 22H2
富士通ノートPC RAM 16GB Intel Core i5-6300U 2.50GHz 64ビット Windows10 Pro 22H2
富士通ノートPC RAM 16GB Intel Core i3-7100U 2.40GHz 64ビット Windows10 Pro 22H2
で確認しましたが、同じ症状でした。
3台とも安い中古PC なのでグラフィックのパワーは弱いと思います。
VZ有り/無しで同じでした。

CKWV.CFG も添付のものにPATH とフォントサイズだけ変更してみましたが変わらないです。
Windowsのカーソル設定も弄ってみましたが変わらないです。
コントロールパネルのカーソル設定で点滅を止めても表示しなかったです。
VZのカーソル設定で Ci0 で点滅を止めても表示しなかったです。

CKWV11 では同じ操作でカーソルが見えているので今は CKWV11 を使用しています。

同じ症状の人がいたら教えてください。
確認していただけるとありがたいです。


11012/11011 DGF01024  めざら           Re: CKWV12 + IME でカーソルが見えなくなる 
( 1) 23/12/23 13:27 11011へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
Microsoft IME を ATOK モードに変更して試してみたところ,konno さんと同様の症状ですね。
変換前状態に戻すと,カーソル(縦線?)は一切見えません。
konno さんの環境ではたまに見えるらしいですが,目を凝らしても全然見えません。

色設定を ATOK に変更して色々いじってみましたが,変換前状態に適用可能な
色や下線の設定はないようですね。

わたしも CKWV は R11 に戻しました。
Google IME が使えないという状況は同じですが……

ところで……
なんで konno さんは ATOK モードなのですか?
ATOK が好きなら ATOK を買うのが一番の解決策じゃないでしょうか。
わたしが愛用した WX はもう買えませんが,ATOK は買えるのでしょう?


11013/11011 BQO00549  konno            Re^2: CKWV12 + IME でカーソルが見えなくなる 
( 1) 23/12/23 16:26 11012へのコメント(めざらさん)
> Microsoft IME を ATOK モードに変更して試してみたところ,konno さんと同様の症状ですね。
> 変換前状態に戻すと,カーソル(縦線?)は一切見えません。
> konno さんの環境ではたまに見えるらしいですが,目を凝らしても全然見えません。

私以外にも同様の症状の人がいてホッとしました。(^^;
ATOK モード以外では見えているということですか。
うちでは、普通のモードでも見えなかったように思います。

と、これを書いている時に、CKWV11(R11) で見えない現象が出てしまいました。
Win10 のサポートは2025年に終わるそうなので、更新のたびに色々問題が出てくるのかもしれません。
10♯さんには、R11で運用すると言いましたが、どうもよくない兆候ですね。

> 色設定を ATOK に変更して色々いじってみましたが,変換前状態に適用可能な
> 色や下線の設定はないようですね。

そうですか、残念ですね。

> わたしも CKWV は R11 に戻しました。
> Google IME が使えないという状況は同じですが……

(^^;

> なんで konno さんは ATOK モードなのですか?
> ATOK が好きなら ATOK を買うのが一番の解決策じゃないでしょうか。

初めに使ったのが ATOK だったので、手がそれ以外の操作系を拒否ってしまうようでして。(>_<)
本当は脳が覚えられないのでした。(;_;)
本物の ATOK は今はどうなのか、試すのが怖いです。(^^;


# ちうこでどかな


11019/11004 BQO00549  konno            個人的な VTDOS の挙動あれこれ
( 1) 23/12/29 21:57 11004へのコメント(konnoさん)
最近新しい方のノートPCで VTDOS 単独で起動したら、
無効な command.com
とか出て起動できませんでした。
あれ? 今までと同じ環境のはずなのになんで? と思いましたが

実は最近 Visual Studio 2022 Community を入れて CKWV12 をビルドして試したのです。
64ビット版は 7/7 起動中とか出て固まるようです。
86x版は、起動出来た気がしますが、IMEのカーソルが見えない状況は変わらず。
あるいは、無効な command.com
とか出て起動できなかったような気がしました。
うーん、この辺記憶があいまいなので、色々試しているうちに上記の症状が出たのは確かです。

ふと思いついて、Cドライブのルートに command.com を置いたら、起動できたのです。
VTDOS.CFG の設定では別の場所になっているんですがねぇ。
色々弄ったせいで Windows の環境変数とか、何かが変わってしまっていたのかもしれませんね。
多分私だけの症状かもしれませんが、備忘録として書いておきます。

ちなみに、弄っている中で、Visual Studio 2017 で作った CKWV11 の改変版 CKWV111 を試してみたら
IMEの BS(再変換)で出るカーソルが Windowsで設定した幅に反映されたのを見ました。
一時的だったのか、今は縦線になっています。
CKWV は Visual Studio2008 でビルドされているようですが、Visual Studio の版によって挙動が違うこともあるのかな。
と、素人考えで思いました。


11020/11020 BQO00549  konno            軟式サイトに隠された秘宝探しダンジョン
( 1) 23/12/30 18:11 コメント数:1
とあるサイトのリンクに、軟式さんの DOS関連ソフトのリンクがありました。
あれ? 軟式のサイトに DOS関連のリンクなんてあったっけ? と思ってクリックすると、現在の軟式のトップページになります。
そういえばうちの DOSVAXJ3 のリンクページにはトップページへのリンクが無いですね。「軟式」のロゴクリックで行けますが。
トップページの下方には、

 ソフトウェア一覧  その他ソフトウェア一覧(フォントドライバ等) Windows/MS-DOS

こういうリンクがあるんですが、ここをクリックすると

 DOS/V 用フォントドライバ fontn や wxpdosv は MS-DOS/Linux フリーウェア → その他のMS-DOSプログラム の順番でクリックしてください。

こういう表示のみあって、それらしきリンクがどこにも見つかりません。
まさかと思って、ページのソースを表示させると、フリーソフト関連のリンクがいくつもありました。
それをたどると実際に関連ページがありましたので、何らかの理由かミスかわかりませんが、表示していないだけのようです。

内容を見てみると・・・ うおおおおぉぉぉ、、、お宝ザクザク大発見じゃぁ〜!! \(^^)/ ヤッタ-
もしかしたら伝説のお宝、ワンピースもあったりして。(^^;

これって、宝探しダンジョンかよ・・・ ということでタイトルに繋がるのでした。(^^;
せっかく見つけたので、うちのリンクを修正しておきました。

http://tamaneko.world.coocan.jp/bbs/sinn1.cgi

DOSVAXJ3 は、トップページになります。
freedos は、各種お宝へのリンクになっていると思います。


# 年末年始はダンジョン攻略でレベル上げするぞ〜!!

# かいぞうく王に俺はなる!! (^^;


11021/11020 CXB00940  としき           Re: 軟式サイトに隠された秘宝探しダンジョン
( 1) 23/12/30 20:19 11020へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> こういう表示のみあって、それらしきリンクがどこにも見つかりません。

どこかの隠しリンクでも見つけられたということでしょうか。
であるなら、あとでこっそり教えてください。
なお、DOS/V 用フォントドライバ fontn や wxpdosv は、隠されていない公開リンク
から行けましたが、これって旧版なのかな?
つまり、最新版は隠されている、ということか。
ちなみに、私が踏んだリンクは、

 トップページ下のほうの「ソフトウェア一覧」
 →ページ左側「その他のWindowsプログラム」の下の「MS-DOS/Linux フリーウェア」
  (「ライブラリ」の上)
  →ページ左側「tel2com for Linux」の下の「その他のMS-DOSプログラム」
   (「ライブラリ」の上)

という感じでクリックしました。

> # かいぞうく王に俺はなる!! (^^;

konnoさんには、改造が苦になって欲しくはないのが本音。
#個人のご意見です


11022/11020 BQO00549  konno            Re^2: 軟式サイトに隠された驚きの謎
( 1) 23/12/30 23:46 11021へのコメント(としきさん) コメント数:1
>  トップページ下のほうの「ソフトウェア一覧」
>  →ページ左側「その他のWindowsプログラム」の下の「MS-DOS/Linux フリーウェア」
>   (「ライブラリ」の上)
>   →ページ左側「tel2com for Linux」の下の「その他のMS-DOSプログラム」
>    (「ライブラリ」の上)
>
> という感じでクリックしました。

げげぇ、行けたのですか。ビックリです。(@.@)
もしかして、と思って、「ソフトウェア一覧」のページで画面を 50% に縮小したらリンク全体が現れました。
私のノートPCは小さいので、ページの下の方が見えなく、スクロールも出来なくて見られなかったのでした。
ファイヤーフォックス、エッジ、クロムで確認しましたが、いずれもこのページは下が見られませんでした。
どうやらこのページは固定画面で作られているようです。

これでわかったことがあります。
としきさんにこっそり言いますね。





# 私の環境はとしきさんより貧弱だったことですぅ。(;_;)


11023/11020 CXB00940  としき           Re^3: 軟式サイトに隠された驚きの謎
( 1) 23/12/31 01:01 11022へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> どうやらこのページは固定画面で作られているようです。

確認しました。どうもそのようですね。
具体的には、CSSで overflow: hidden; という指定があるのですが、これの対象が
htmlとなっている。つまり、サイトのメインの表示で、縦が足りない表示環境でも
縦スクロールバーが出ない設定になっている。こんな指定するサイト、初めて見た。
あんまりこういう指定はしないんですけどね。
私のほうでも、ブラウザの縦を縮めてみたら、容易に再現できました。
さらに、ブラウザのサイズが普段どおりでも、縮尺率を変えたりフォントのサイズを
変えることで再現できました。
また、firefoxだと容易にCSSのOFFということができるので、画面の縦が足りなくて
全部表示できない状況にして、そこからCSSをOFFにしたら、無事にすべてのリンクが
表示できるようになりました。が、そもそも、初めての訪問者の場合、画面に全ての
情報が表示されていないということに気づき得ないわけです。
これはちょっとまずいなぁ。

なので

> # 私の環境はとしきさんより貧弱だったことですぅ。(;_;)

これは当たらない。
だって、画面の縦のサイズが小さくても、それ以上にブラウザ側が小さい文字で表示
するようになっていれば見えたはず。逆に、どんな大画面を使っていても、大きな
文字で表示させるようにしていたら、このリンクは見えない。

これ、ついうっかりやってしまったパターンなんだろうな。
サイトオーナーの側で意識して、というか意図的に一定以下の画面サイズのお客様
を排除するということもあるでしょうけど、それにしたって、こんな方法は普通は
使わない。
時々、凝った見栄えを目指したのでしょう、もっとひどいUIにお目にかかることも
ありますけどね。
そもそも、サイトなんて、誰がどんな環境でアクセスしてくるかわからないのだから、
あまり見栄えを追及しても無駄というか逆効果にしかならない。だからサイト側での
フォントサイズ指定は云々、みたいな話は昔、konnoさんともしたことがあるような
気がする。
今回は、普通の文字サイズでもブラウザのウィンドウサイズによっては、ということ
ですから、珍しい種類の「よろしくないUI」を見させていただいた感じです。

11024/11020 BQO00549  konno            Re^4: 軟式サイトに隠された驚きの謎
( 1) 23/12/31 01:46 11023へのコメント(としきさん) コメント数:1
> 具体的には、CSSで overflow: hidden; という指定があるのですが、これの対象が
> htmlとなっている。つまり、サイトのメインの表示で、縦が足りない表示環境でも
> 縦スクロールバーが出ない設定になっている。こんな指定するサイト、初めて見た。

なるほど、そういうことですか、わざとではなく設定ミスのようですね。
メールで報告してみます。読むのが正月明けになると思いますが。

> だって、画面の縦のサイズが小さくても、それ以上にブラウザ側が小さい文字で表示
> するようになっていれば見えたはず。逆に、どんな大画面を使っていても、大きな
> 文字で表示させるようにしていたら、このリンクは見えない。

確かにうちは大きめフォントなので、50%まで縮小しないと見えなくて、気が付きませんでした。
存在にも気が付かなくて、古いDOSソフトはやめちゃったのかなぁ、と思っていました。(^^;
スマホではどう見えるんでしょうね。


11025/11025 BQO00549  konno            2024年 今年もよろしく
( 1) 24/01/03 19:50 コメント数:2
2024年が明けました。
今年は元旦から能登で大地震があったりして、大変な年になりそうです。
亡くなられた方々のご冥福をお祈りいたします。

そんな世相を鑑みて簡単な御挨拶で済ませてしまいますが
今年もよろしくお願いします。


# うう、年末の無理が祟ったか、風邪をひいてしまいました。(゚゜)☆\(--#)ナニモシテナイダロ
  喉は痛いし食欲もなく、1日おじや1杯でしのいでいます。(;_;)


11026/11025 CRG00666  文太             Re: 2024年 今年もよろしく
( 1) 24/01/07 00:03 11025へのコメント(konnoさん) コメント数:1
konnoさん

 あけましておめでとうございます。
 バタバタ、ヨロヨロしていて、新年のご挨拶が遅れました。
 まあ、けっこうゆっくりしてるのですけどね。
 年末年始は、一生懸命、1日1時間のダラダラ散歩ができましたし。
 白内障の手術、無事にいってくれることを祈っています。

 まだまだ部屋と頭と心の整理に忙しく(違うな、やりたくないのだろう!)
PC(Vz&ベーシック&DOSエミュ)方面はさっぱりですが、昨年の
konnoさんのご活躍には刺激を受けました。
 まだまだDOS&Vzでいきましょう! 僕はその気ですよ!




11027/11025 DGF01024  めざら           Re: 2024年 今年もよろしく
( 1) 24/01/07 14:29 11025へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
松の内ぎりぎりですが,明けましておめでとうございます。

いろいろな意味で大変な年になりそうな予感がしますが,
思うべきことは思い,言うべきことは言い,淡々と過ごしたいと思います。

今年もよろしくお願い申し上げます。

辰年ですが立ちません,下から支えようと思う今日このごろ。

11028/11025 BQO00549  konno            Re^2: 2024年 今年もよろしく
( 1) 24/01/07 17:09 11026へのコメント(文太さん)
文太さん、今年もよろしくお願いします。

>  年末年始は、一生懸命、1日1時間のダラダラ散歩ができましたし。

長生きするには散歩が良いですよね、私も風邪の病み上がりで息切れしてます。(;_;)

>  白内障の手術、無事にいってくれることを祈っています。

お気遣いありがとうございます。OFF会楽しんでくださいね。

>  まだまだ部屋と頭と心の整理に忙しく(違うな、やりたくないのだろう!)
> PC(Vz&ベーシック&DOSエミュ)方面はさっぱりですが、昨年の
> konnoさんのご活躍には刺激を受けました。
>  まだまだDOS&Vzでいきましょう! 僕はその気ですよ!

この年になって振り返ってみると、昔取った杵柄しか残ってないんですよね。
私の場合それがVZとBASICだったということです。
これからは自分の痕跡を残すためにやりたいことだけやっていきますよ。

そんな1年にみなさんでしていきましょう。


11029/11025 BQO00549  konno            Re^2: 2024年 今年もよろしく
( 1) 24/01/07 17:29 11027へのコメント(めざらさん) コメント数:1
めざらさん、今年もよろしくお願いします。

> いろいろな意味で大変な年になりそうな予感がしますが,
> 思うべきことは思い,言うべきことは言い,淡々と過ごしたいと思います。

事件、事故も多いので、巻き込まれないように注意深く、慎重にして、1年無事に乗り切れるといいですね。

> 辰年ですが立ちません,下から支えようと思う今日このごろ。

なにやら意味深な書き込みですね。(^^;
私も急速な老化現象を感じて、アレなんですが、
今年の抱負というか、やりたいことの一つに、お願いがあります。
別発言で書きますね。


11030/11025 BQO00549  konno            野ざらし言と板塀に全ログ検索を
( 1) 24/01/07 21:11 11029へのコメント(konnoさん) コメント数:1
めざらさん、としきさん
突然ですがお二人にメール送ります。

もう16年前になりますが、うちの掲示板の検索を、全ログの改行またぎ検索に改造しました。

#2794:掲示板の検索機能強化  投稿者:konno   2008/01/04(金)
#2821:掲示板の改行跨ぎ検索  投稿者:konno   2008/01/12(土)

おかげさまで検索が非常に便利になりましたが、実はこの時野ざらし言と板塀にも
全ログ検索を導入してほしいと思っていたのですが、反応が薄くそのままになっていました。
今年は一念発起して、全ログ検索ルーチンをメールで送りつけることにしました。(^^;


find.cgi は、wforum.cgi の中の2つのサブルーチンを抜き出したものです。

# 検索フォーム #
sub find {

# 検索実行 #
sub search {

この2つのルーチンを置き換えるか名前を変えて追加するかして試してみてください。
エラーが出なければたぶん問題なく動作していることと思います。
内容は好きなように改変してください。

この全ログの改行またぎ検索を是非お二人の掲示板に導入してもらいたく、無理やり送りつけてしまいました。
なにとぞよしなに。m(__)m


11031/11025 DGF01024  めざら           Re: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/08 08:40 11030へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
konno さん

細かな理由はメールにて返信しましたが,
要は「気が向いたらネ」ということで.(^^;


11032/11025 BQO00549  konno            Re^2: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/08 23:20 11031へのコメント(めざらさん) コメント数:1
> 要は「気が向いたらネ」ということで.(^^;

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


11033/11020 CXB00940  としき           Re^5: 軟式サイトに隠された驚きの謎
( 1) 24/01/09 12:40 11024へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> なるほど、そういうことですか、わざとではなく設定ミスのようですね。
> メールで報告してみます。読むのが正月明けになると思いますが。

さっき見てみたら、問題は解消しているようでした。
konnoさんの報告のおかげでしょう。
ありがとうございました。


11034/11025 DGF01024  めざら           Re^3: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/09 21:28 11032へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
野ざらしのアーカイブが進んでいないというご指摘も頂戴したので,
もう十年以上も放置していたログを上げようとしたところ,
過去ログに破損と番号の重複があることが判明してしまいました。(^^;

いきさつとしては,ちょっと長くなるやつですが……

Web Forum の確定した過去ログをnifty形式にするマクロで整形し,
Siさんの LOGSORT で整列させようとしたところ,
ヘッダの形式が異なるからダメよ……というメッセージで停止してしまいます。
で,いまさら Si さんのお手を煩わせるわけにもいかないと考えたので,
仕方なく LOGSORT.DEF を作ったわけですが,さて処理しようとしたとき
何を考えたのか間違えて元のWFログを指定してしまいました。それなりに待った挙げ句
何も出力されないので,なぁぜ・なぁぜ?と思ったら整形前の元ファイル。
それが判明した瞬間,なんなら元のWFログをソートすればよいのではと気づきました。
だって,先頭に発言番号のある1行1アーティクルなんですから……何故気づかなかった!?

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

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

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

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

11035/11020 BQO00549  konno            Re^6: 軟式サイトに隠された驚きの謎
( 1) 24/01/09 22:33 11033へのコメント(としきさん)
> さっき見てみたら、問題は解消しているようでした。

確認したら、スクロールが効くようになっていました。
実はメールは暮れのうちに返信が来て、直リンクをつけてくれていたのです。
私は正月早々風邪をひいて、そのことを書けないでいたのでした。

対応していただいた軟式さんに感謝です。


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

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

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

11037/11037 DGF01024  めざら           DOSVAXJ3 240110 更新
( 1) 24/01/10 21:48 コメント数:3
参照先:http://mezala.la.coocan.jp/
先月,わたしたちの要望を容れていただいた修正テスト版に,
さらに改善が加えられた正式版として公開されていますね.

build JP240110 (2024/1/10)

[sdl] windowposition で起動時の位置を指定できるようにしました。
Ctrl, Alt, Shift との組み合わせで一部のキーコードが正しくなかったのを修正しました。
英語や日本語モードに切り替えた際に int 2fh ax=4f01h で返されるコードページが切り替わっていなかったのを修正しました。
DPB (Drive Parameter Block) を正しく設定するよう修正しました。
パレット設定を RGB 全ての値を設定した所で更新するよう修正しました。
DOSBox SVN r4483 までの更新分を適用しました。
DOSVAX Build 4483PS13 までの修正を適用しました。ただし PS/55 関連は適用していません。

……とのことです.
軟式様に感謝.


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

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

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

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


11039/11037 BQO00549  konno            Re: DOSVAXJ3 240110 更新
( 1) 24/01/11 23:55 11037へのコメント(めざらさん)
> 先月,わたしたちの要望を容れていただいた修正テスト版に,
> さらに改善が加えられた正式版として公開されていますね.

私、メールはしたのですが、コミュ力が悪すぎてなかなかうまく伝わらず、
結局掲示板を読んでいただいて対応していただいたのでした。
メールでは個人的な要望も出したりして、結局自己解決できたのですが、
相談に真摯に対応いただけたのがうれしかったです。

> 軟式様に感謝.

私も感謝、感謝です。


11040/11025 CXB00940  としき           Re^5: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/12 18:32 11036へのコメント(めざらさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> それに絡んでと思われるログ破損(一部消失)もあるので悩み中。

ログの一部消失って、何とかなりました?
いや、一瞬だけ野ざらしに何やら書かれていたようですが、現在では削除済みの
ようなので。
なくなったのがどこかにもよりますが、その気になれば、野ざらしに具備されている
スパム対策用の強烈ログから復帰できる部分があるかもしれません。


11041/11025 DGF01024  めざら           Re^6: 野ざらし言と板塀に全ログ検索を
( 1) 24/01/13 09:03 11040へのコメント(としきさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
あらっ,見られちゃってますね。(笑)
こちらに書くのも変なのですが,流れということでご勘弁ください,konnoさん。

ログをソートしてみたら,3882番から3909番が消失していることに気付いたのですね。
対応する時期としては 2011年のあの大震災の直前にあたる時期だったため,
1個以上のスレッドを現行ログから過去ログに移動するタイミングで,
震災に起因する突然の停電などに巻き込まれたに違いないと思いました。
Internet Archive にも前後数年が保存されておらず,スレッドのタイトルも不明。

ところがですね,手元の古〜いバックアップに残っていたのですよ。
そのバックアップが2012年2月の現行ログのバックアップだったので,
震災などの影響はまったくなかったと考えられるわけです。
そんなわけで消失告知を削除したという経緯です。

いやぁ,バックアップって取っておくものですね。

そもそもバックアップを日々保存していた理由が,
スパムが書き込まれたときに直前バックアップで上書きすると超ラクチンだから。
そのためにも定期的にバックアップをしようとしようと改めて思った次第です。

それでも,現時点で過去ログが不備な状態なので,何とかしないと,
たとえ「気が向いて」も全ログ検索機能を取り込めないという状況なんですね。

11042/11025 CXB00940  としき           バックアップ
( 1) 24/01/13 10:50 11041へのコメント(めざらさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> そもそもバックアップを日々保存していた理由が,
> スパムが書き込まれたときに直前バックアップで上書きすると超ラクチンだから。

うちの板塀も、同じ理由でまめなバックアップは取っていたのですがね。
目的が目的なんで、バックアップの保存場所は同一サーバー内。
つまり、サーバーマシンがお亡くなりになると一蓮托生。
なので、現在ではそれはやめて、定期的に、lacoocanの非公開エリアにバックアップ
しています。

> そのためにも定期的にバックアップをしようとしようと改めて思った次第です。

定期的に何かをしようと思ったら、コンピュータに仕事をさせましょう。
私は、Windows純正のタスクスケジューラに仕事をさせています。
コマンドラインからサーバにアクセスするftpスクリプトを書いて、それをバッチで
呼び出していますが、そのバッチをタスクスケジューラに登録しています。
これであとはタスクスケジューラの設定次第で、月に1回だろうが週に1回だろうが、
裏で自動的にお仕事をしてくださっています。


11043/11025 DGF01024  めざら           Re: バックアップ
( 1) 24/01/14 11:27 11042へのコメント(としきさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
確かにタスクスケジューラを使うと手間がないのかもしれませんね。
うちの場合は,常時起きているPCがないのと,日常の必要性もないので,
書き込みのあったタイミングでバックアップすることで十分に思います。


11044/11025 CXB00940  としき           Re^2: バックアップ
( 1) 24/01/15 10:45 11043へのコメント(めざらさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> うちの場合は,常時起きているPCがないのと,日常の必要性もないので,

ここがポイントか。
たとえば、週に1回、日曜の午前10時、とかに設定する。
普段の日曜なら午前10時にはPCを使っていない。
でも、ごくまれに、たとえばお天気の事情なんかで立ち上げていることもあるかも
しれない。
とすると、両方のアンド条件で、平均して月に1回のバックアップ達成、とか。
ここはあくまでも平均なんで、3週連続バックアップが行われたり、3ヶ月もの間
バックアップされなかったり、ということもおきえますが。
この辺、自分のPCの使い方と条件設定次第で、いかようにもできるかと。


11045/11025 DGF01024  めざら           Re^3: バックアップ
( 1) 24/01/15 18:59 11044へのコメント(としきさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
実際の話。
常時起きているPCはないけれど,常時起こすことのできるPCはあります。
メインマシンは「休止状態」が有効なので,その気になれば制御可能です。
ただ,野ざらしの書込み頻度は五日に一度。
日常的に自動バックアップの必要性はないんじゃないかな〜


11046/11025 CXB00940  としき           Re^4: バックアップ
( 1) 24/01/16 18:44 11045へのコメント(めざらさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
頻度の捕らえ方とか、まじめさが違うのかもしれない。
月に1度のバックアップでも頻繁だと感じるか。
週に1度でも、まれなことだと感じるか。
何らかのトリガを元に、必ずバックアップしないとまずいと思うか。
バックアップがないせいで復旧が困難を極めても、まぁいいかで済ませるか。

私自身は昔、PC-98でDOSのころは月に1回、HDDをフルバックアップしていました。
現在、Windowsになったら、フルバックアップなんて数年に1回。
堕落したものです。


11047/11025 DGF01024  めざら           Re^5: バックアップ
( 1) 24/01/17 13:33 11046へのコメント(としきさん)
参照先:http://mezala.la.coocan.jp/
頻度はまぁ,痛い目に遭った回数の反映か,性格かというところでしょうか。
ただ,痛い目というのは忘れやすいことも確かで,それこそ命の危険とか,
命よりも大事なデータ(そんなものあるのか?)とかでないと……とも思えます。

バックアップって,ふつうは自分で時間をかけて作成したものをするもので,
要するに時間にかける保険ですね。カネで買えるものは正直どうでもいい。
……はずなのですが,年金生活ともなると,そうも言い切れないわけで。

実際の話。
定期的にバックアップしているのは,メインの NAS。
これには USB で HDD が繋いであり,毎日夜中に自動バックアップしています。
また,半月に一度くらいの頻度で,サブの NAS 及びサブのデスクトップに繋いでいる
USB 接続の外付け HDD の二箇所にフルバックアップしています。
(フルと言ってもエロ動画なんかのディレクトリは対象外ですが)

前者は疑似ミラーですが,後者ニ個所は追加バックアップ。
メインから削除されたものも残っています。
ある意味安心なのですが,容量逼迫の原因なので,管理が面倒です。
少なくとも重複ファイル検索ツールをときどき使う必要があります。
(ディレクトリ名を変更したり,移動したものは重複してゆく)

その一方で,日々作成しているデータファイルのバックアップは怠っている状態。
今回のとしきさんとのやり取りで,そこ何とかしようか……と自覚しました。
要するに,もっともバックアップしなければならないファイルを放置していて,
メインのラップトップが逝ったら数ヶ月分の作業が失われる可能性があるということ。
ここは自動化や習慣化を考えなければいけないでしょうね。
腰を上げるきっかけを作ってくださり,有難うございました。

11048/11048 BQO00549  konno            としきさんの msgview 完璧なツリー
( 1) 24/01/27 16:28 コメント数:1
今までとしきさんに何度も指摘されていた msgview 個別発言のツリーのバグですが
としきさんに私の msgview.cgi を見て頂き、修正していただきました。
おかげさまでツリー表示は完璧になりました。\(^^)/ ヤッタ-

としきさん、ありがとうございました。m(__)m


11049/11037 BQO00549  konno            DOSVAXJ3 240110 の画面モード切替時の挙動
( 1) 24/01/27 16:52 11037へのコメント(めざらさん)
新しい DOSVAXJ3 は快適に使用していますが

> [sdl] windowposition で起動時の位置を指定できるようにしました。

おそらくこれに関連していると思われる挙動に気が付きました。

起動時は設定どおりの位置に表示していますが、窓の位置を移動させて使っていると
CHEV US や VT などで画面モードを切り替えた時に、窓位置が起動時の位置に戻ってしまいます。
仕様なのかもしれませんが、私は画面モード変更時は、窓位置をキープしてほしいです。
みなさんはどうでしょうか。

一応軟式さんにメールしてみます。


11050/11037 GST01234  鈴木康弘         Re: DOSVAXJ3 240110 更新
( 1) 24/01/27 18:25 11037へのコメント(めざらさん) コメント数:2

 はじめまして。鈴木と申します。
 これまで使ってた32bitマシンが壊れたので、新しいWindowsマシンを、ソフマップ静岡店で物色。
 一番安いのが12000円台で64bitで、いそいそと買ってきました。

 しかし、衝撃だったのが、64bitマシンでは素DOSのパーテーションを作れないこと。(^_^;) VZを動かせないぞ..
 それでエミュレーター情報をあさり、ここで評判の DOSVAXJ3 をインストールしてみました。(今年の最新版)

 DOSVAX窓で簡単に、16bitのVZが動くことに感動!
 設定をなんにもいじらずにWindowsのIMEも使える!

 Windows7マシンにDOSパーテーションを作る作業は、これまで1日がかりでしたが、
 こんなに簡単にDOSとVZの環境を再現できるとは思わなかった..!

 ただし、キーボード配列をQWERTYでなくDVORAKJでDvorakにし、CapsキーをCtrlキーにし、かつIMEも動かそうとすると、どれとどれが喧嘩するのか、まだ思うように動きません。

 とりあえずDOSVAXJ3の作者さんと、改善に協力してこられた、ここのみなさんに感謝します。(_ _)
(他の選択肢、MS-DOS Player と VTDOS も、一応ダウンロードだけしましたが、まだ試していません。)

  20年前のNIFTYの人々はここに生き残ってみえたんですね...(^_^;

11051/11037 BQO00549  konno            Re^2: DOSVAXJ3 240110 更新
( 1) 24/01/27 20:48 11050へのコメント(鈴木康弘さん) コメント数:1
鈴木康弘さん、はじめまして。
お名前は VZ会議室の初期からお見受けしていました。
私は 2002年1月5日が DCデビューの新参者ですので。(^^;

>  しかし、衝撃だったのが、64bitマシンでは素DOSのパーテーションを作れないこと。(^_^;) VZを動かせないぞ..
>  それでエミュレーター情報をあさり、ここで評判の DOSVAXJ3 をインストールしてみました。(今年の最新版)

みなさんDOS窓でずっとVZを使われていたんですね。
ここの掲示板も読んでいただいてありがとうございます。

>  DOSVAX窓で簡単に、16bitのVZが動くことに感動!
>  設定をなんにもいじらずにWindowsのIMEも使える!
>
>  Windows7マシンにDOSパーテーションを作る作業は、これまで1日がかりでしたが、
>  こんなに簡単にDOSとVZの環境を再現できるとは思わなかった..!

エミュレータでは DOSVAXJ3 が一番手軽にVZ環境を作れるのが良いですよね。

>  ただし、キーボード配列をQWERTYでなくDVORAKJでDvorakにし、CapsキーをCtrlキーにし、かつIMEも動かそうとすると、どれとどれが喧嘩するのか、まだ思うように動きません。

DVORAKJ というのは知りませんでした。キーボードへのこだわりは人それぞれなんですね。
キーが対応出来ない場合は DOSVAXJ3作者様にメールすれば対応してくれるかもしれません。

>  とりあえずDOSVAXJ3の作者さんと、改善に協力してこられた、ここのみなさんに感謝します。(_ _)

私も紹介されて触った初期のころはうまく動かなくてしばらく放置してました。(^^;
みなさんのおかげで劇的に進化したような気がします。ありがたいことです。

> (他の選択肢、MS-DOS Player と VTDOS も、一応ダウンロードだけしましたが、まだ試していません。)

MS-DOS Player でしか動かない DOSコマンドもあるかもしれないので、入れておくと吉です。(^_^)
VTDOSはフォントサイズや行数を自由に変えられるのが老眼には良いですね。(^^;
うまく動かない時は掲示板に気軽に書き込んでもらえばみんなで解決できると思います。

>   20年前のNIFTYの人々はここに生き残ってみえたんですね...(^_^;

そういえば来年Nifty会議室閉鎖から20年になるんですね。
VZマクロの膨大な資産は、めざらさんのところに沢山あります。宝の山です。
VZ会議室の過去ログも 文太さんやみなさんのおかげで完全体になりました。
これからもよろしくお願いします。


11052/11037 DGF01024  めざら           Re^2: DOSVAXJ3 240110 更新
( 1) 24/01/27 21:04 11050へのコメント(鈴木康弘さん)
参照先:http://mezala.la.coocan.jp/
きゃ〜〜〜! 鈴木さん!!
昔は,耳而夢斎と称していためざらです。

お久しぶりです。m(_'_)m
何とも,お懐かしや……

11053/11048 CXB00940  としき           Re: としきさんの msgview 完璧なツリー
( 1) 24/01/28 13:58 11048へのコメント(konnoさん) コメント数:2
参照先:http://toshiki.la.coocan.jp/
いやぁ、何とか動いてくれたようで助かりました。
一応、かなり複雑なツリー構造も含め、一通りの動作確認はしていますがね。
何せ、使ったデータが、うちの板塀のデータですから。
どんなチェック漏れがあるやら、想像もつきません。
というか、コードを書いた人が想像できないところにバグが忍び込むわけで。
そのうち、異常なパターンが発覚したら、そのたびに直すしか。
だって私、konnoさんのコードを読みきって修正したわけではなく。
正常な出力のallreadと異常なmsgviewを比較しただけなんで。
どういうロジックでツリーを出力しているのか、いまだによくわかっていない。
ま、動けば正義、というのはあるわけで。
とはいえ、動かないとき、だとか、動かなくなってしまったとき、のことを考えて
プログラミングしておいたほうが、いろいろと楽ができるとは思いますけど。
かつて、20年ぐらい前だったかな、同じ職場にいた人で、この人は楽をしたくない
のかな、わざと難しくなることを好んでいるのかな、マゾっ気があるのか? と
思わせられる人がいたことを思い出したりしました。

11054/11048 BQO00549  konno            Re^2: としきさんの msgview 完璧なツリー
( 1) 24/01/28 17:37 11053へのコメント(としきさん) コメント数:1
としきさん

> いやぁ、何とか動いてくれたようで助かりました。

としきさんのチェックなら間違いないと思っていました。
ありがとうございました。

> 一応、かなり複雑なツリー構造も含め、一通りの動作確認はしていますがね。
> 何せ、使ったデータが、うちの板塀のデータですから。
> どんなチェック漏れがあるやら、想像もつきません。

なるほど、人任せではなく自分でもチェックはした方がいいということですね。
お送りいただいた msgview3.cgi と自分の wforum.cgi で比較してみました。
wforum.cgi
($no,$re,$lx,$sub,$eml,$url,$nam,$dat,$msg,$lt,$ho,$pw,$wrap,$oya,$sml,$com) = split(/<>/);
$j++;
if ($in{'oya'} == $oya) { push(@new,$_);

msgview3.cgi
($no,$re,$lx,$sub,$eml,$url,$nam,$dat,$msg,$lt,$ho,$pw,$wrap,$oya,$sml,$com) = split(/<>/);
if ($in{'oya'} == $oya) { push(@new,$_);
$j++;

うげ、$j++; の位置が分岐前から分岐後になってる!!
他にも $mx=0; が追加されたり "}" の位置が、if の前になったりしていますね。
違いはこのくらいでしょうか。

実は昨日から STIME.EXE のソースを弄っていたのですが、うまく動かなくて・・・
色々調べたら、変数の設定を if 分岐の前にやっていたのが原因でした。(>_<)
どうやら私は分岐で躓く傾向があるようです。

> とはいえ、動かないとき、だとか、動かなくなってしまったとき、のことを考えて
> プログラミングしておいたほうが、いろいろと楽ができるとは思いますけど。

メールで言っていた、インデントや不要なコメントなどですね。
これからは気を付けるようにします。

> かつて、20年ぐらい前だったかな、同じ職場にいた人で、この人は楽をしたくない
> のかな、わざと難しくなることを好んでいるのかな、マゾっ気があるのか? と
> 思わせられる人がいたことを思い出したりしました。

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


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

> メールで言っていた、インデントや不要なコメントなどですね。

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

インデントのほうはねぇ。こちらはちょっと長くなります。
これは、コーディングスタイルとかいって、スタイル、つまり美学の領域。
美学って確か、文太先生の専門だったような気もする。
それはさておき。
たとえば、最近のkonnoさんのBASICのコード。
最近いじった部分がわかるほうが良い、と思う人なら、昔のコードの部分は行番号
があって大文字、最近いじった部分は行番号無しで小文字にする、とか。一方で
統一感があったほうが美しいと思う人なら、全て大文字で行番号つきに統一、と
いろいろな考え方があるわけです。
でも、どの立場に立とうが、プログラムの論理構造、つまり順次・選択・反復と
いった構造をわかりやすくするためには字下げしかありません。既に30年以上
前から、これは当たり前のこととされています。昭和60年ごろに書かれた本には
「いまや字下げをしないプログラマは・・・」などという記述があったりします。

えぇと、いい機会だから書いてしまおうかな。
上記の本の紹介。#10398でも書いていますね。

林晴比古著「BASICによるプログラミングスタイルブック」
ISBN4-930795-28-1
定価1800円
昭和60年12月25日初版発行

私の持っているのは昭和61年11月の第4刷。
この本が出る2年位前からOh!PCに掲載されていたものがまとめられたのですがね。
この本が出た前後で、Oh!PCに掲載されるサンプルコード、特に学習用の講座などの
コードはみんな、なだれを打って、という感じで、読みやすいコードになりました。
その後、ベーマガのコードはあまり変わったようには見受けられませんでしたが、
ASCIIやI/Oのコードは、数年後には少し変わったかも。


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

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

11056/11037 GST01234  鈴木康弘         DvorakJのこと
( 1) 24/01/28 21:48 11051へのコメント(konnoさん) コメント数:1

 Dvorakキー配列はこうです。よく使うキーがほとんどホームポジションの下にあるので、鈴木は30年来これを愛用してます。

┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┌──
┃1!┃┃2@┃┃3#┃┃4$┃┃5%┃┃6^┃┃7&┃┃8*┃┃9(┃┃0)┃┃[{┃┃]}┃│
┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛└──
─┐┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┌
│┃'"┃┃,<┃┃.>┃┃p ┃┃y ┃┃f ┃┃g ┃┃c ┃┃r ┃┃l ┃┃/?┃┃=+┃│
─┘┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛└
──┐┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┌──
│┃a ┃┃o ┃┃e ┃┃u・┃┃i ┃┃d ┃┃h・┃┃t ┃┃n ┃┃s ┃┃-_┃│
──┘┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛└──
───┐┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┌───┐
Shift│┃;:┃┃q ┃┃j ┃┃k ┃┃x ┃┃b ┃┃m ┃┃w ┃┃v ┃┃z ┃│ │
───┘┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛└───┘

 DOSVAXJ3上でも、Windowsのコマンドプロンプトでも、DvorakJを使って、Dvorak入力と、MSIMEも動くことは確認できました。

 ただ今日一日、DvorakJの設定保存の方法がわからん、と悩んでいました。
 まさかログインするたびに起動しなおして、設定をやりなおせってんじゃないだろうな、そんなばかな...
 素DOS上のDvorak.comはただ常駐させるだけでよかったのに。


  #11052
 あ、めざらさんは耳而夢斎さんでしたか。
 いまどきVz倉庫の管理を続ける人なんて、誰だろうと思ってました。



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

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

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

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

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

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

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


11058/11037 BQO00549  konno            Re: DvorakJのこと
( 1) 24/01/28 23:05 11056へのコメント(鈴木康弘さん) コメント数:1
>  Dvorakキー配列はこうです。よく使うキーがほとんどホームポジションの下にあるので、鈴木は30年来これを愛用してます。

おお、キーボードの絵が凄い! 全然違う配列になるんですね。

>  DOSVAXJ3上でも、Windowsのコマンドプロンプトでも、DvorakJを使って、Dvorak入力と、MSIMEも動くことは確認できました。
>  ただ今日一日、DvorakJの設定保存の方法がわからん、と悩んでいました。
>  まさかログインするたびに起動しなおして、設定をやりなおせってんじゃないだろうな、そんなばかな...

私は使ったことが無いので設定方法はわからないですが、ネット検索では Win10で使う方法などが出ていますね。

>  素DOS上のDvorak.comはただ常駐させるだけでよかったのに。

これは、DOSVAXJ3 の中で動作するのでしょうか。
お役に立てなくて申し訳ないです。

>  いまどきVz倉庫の管理を続ける人なんて、誰だろうと思ってました。

30年前のDOSソフトを使い続けている時点で我々は極少数派、天然記念物かもしれませんね。(^^;
でもそれが楽しくてやめられないのです。(^^;


11059/11048 CXB00940  としき           Re^5: としきさんの msgview 完璧なツリー
( 1) 24/01/29 01:43 11057へのコメント(konnoさん) コメント数:2
参照先:http://toshiki.la.coocan.jp/
追伸というか。
きちんと理解できていないというのもあって。
もしかしたら、$mxの初期化って、それほど重要ではないかもしれない。
ただ、少なくとも、allreadのほうでは初期化してあったような。
それに、初期化しておいて害になることもないし。

> > 上記の本の紹介。#10398でも書いていますね。
> > 林晴比古著「BASICによるプログラミングスタイルブック」
> うう、いまさら聞けないBASIC みたいに微妙な・・・ 

私には、文体が引っかかるんですよ。
ただ、この時代のコンピュータの本を書く人って、特徴的な文体の人が何人かいて。
もう一人、ナツメ社あたりからアセンブラか何かの本を出していた人で、どうにも
文体が肌に会わなかった人がいたような記憶もある。
さて。
よく見たらタイトルが微妙に違う。
「BASICによるプログラミング・スタイルブック」
と、中黒があるのが正解。
章立ては

STEP1 基本を知る
STEP2 型にはめる
STEP3 サブルーチンの整理
STEP4 視点を変える
STEP5 工夫に、工夫を

となっている。中身に文法解説はほとんどない。
章の中の各節は、抜粋ですがたとえば

1 BASICの能力を見直そう
5 字下げをしよう
9 意味のわかる変数名にしよう
12 ブロック構造にしよう
15 マルチステートメントは上手に使おう
16 空白を入れよう
19 行番号をそろえよう

といった項目が46個あり、各節の中でそれぞれ根拠と共に例示がなされている。
当時の普通科高校生でも十分読める文章でしたから、文章としては今なら中学生
にも理解できると思う。いや、BASICのほうを解説してやらんとダメか。


さて、それでは、ちょっと一休みして。
つぎはいよいよ、konnoさんご希望の、掲示板検索ルーチンに取り掛かってみますか。
って、いつ開始するか全くめどは立っていませんが。


11060/11037 GST01234  鈴木康弘         Re^2: DvorakJのこと
( 1) 24/01/29 07:24 11058へのコメント(konnoさん) コメント数:3

> >  素DOS上のDvorak.comはただ常駐させるだけでよかったのに。
>
> これは、DOSVAXJ3 の中で動作するのでしょうか。
> お役に立てなくて申し訳ないです。


 いえ、これが動くのはWindows98付属の(Win98起動用の)MS-DOSです。
(僕が素DOSと呼んだもの)

 素MS-DOSでならdvorak.comでDvorak配列にできますが、
・dosvaxj31では、インストールされたふりをして無効、
・MS-DOS Player と VTDOS は、"This machine may not support Int15h ah=4Fh" と表示して使えませんでした。

 それで、Windows上で動くDvorakツールでないとだめだなと、DvorakJを見つけてあれこれやってたのです。



11061/11048 CRG00666  文太             Re^6: としきさんの msgview 完璧なツリー
( 1) 24/01/29 11:46 11059へのコメント(としきさん) コメント数:1
 ククッ、、思わず吹いてしまいました。
 会話の意味がまったく分からない。これが日本語であることは認知して
おりますが。

 それより、おお、そんな会話があったのか、1年ちょっと前。すごい
記憶力 >としきさん。もちろん、検索したのは分かりますが。
 というわけで、 林晴比古著『BASICによるプログラミング・スタイルブック』
を図書館で探してみましょう。(注)

解説:まったく本腰が入ってませんが、僕は BASIC に興味をもっている
のですね。だから、この前のオフ会にも岡田元治さんの BASIC コンパイラの
マニュアル・プリントアウトを持って行ったのです。「ハノイの塔」の
コード・プリントアウトとともに。

 学習は「ハノイの塔」とは何か? から始まる予定。まだ始まらない……。

>小さい円盤の上に大きいものを重ねることはできない。 [補説]フランスの数学者
>リュカによって1883年に考案された。 発売時に、アジアに伝わるパズルという
>架空の設定で宣伝されたため名付けられた。

 という語源だそうです。ベトナムはベトナム戦争の前までフランスの
植民地でした。日本もほぼ瞬間的に植民地化しましたけれど。
 ああ、インパール作戦。

konnoさん、
 konnoさんのお祈りのおかげで、例の地獄の作業、あの日のうちに終わりました。
いまは次の修羅場に備えております。ふらっふらになった記憶は新しいのですが、
そのとき、ちゃんと konnoさんに感謝し、お祈り返しもいたしました。m(__)m

鈴木康弘大先輩、
 お初です! いらっしゃいませ!!! Win7マシンでパーティション切り、DOS
(FAT16)ドライブ!!! やるぅ。
 「Vzマクロほんとの入門」の作者さんですよね!!! お世話になりました。

 江戸地方、今日は晴れです。(う、孝義さんだった。弟さん?)


(注)しかし、こういうのばっかですねぇ、>己。_Software Tools in Pascal_は、
Vz黒本の隣に鎮座している。ここから1メートル以内。


11062/11048 BQO00549  konno            Re^6: としきさんの msgview 完璧なツリー
( 1) 24/01/29 15:41 11059へのコメント(としきさん)
> もしかしたら、$mxの初期化って、それほど重要ではないかもしれない。
> ただ、少なくとも、allreadのほうでは初期化してあったような。
> それに、初期化しておいて害になることもないし。

変数の初期化は最近の速いCPUでは特に必要かもしれませんね。
初期化してないせいでタイミングが狂い挙動がおかしくなることもありそうで。

> よく見たらタイトルが微妙に違う。
> 「BASICによるプログラミング・スタイルブック」
> と、中黒があるのが正解。

内容の紹介を見て、読んでみたくなりました。
ちょっと前までは本を読む気にもならなかったのが、目が復活したら読書欲も復活?

> さて、それでは、ちょっと一休みして。
> つぎはいよいよ、konnoさんご希望の、掲示板検索ルーチンに取り掛かってみますか。
> って、いつ開始するか全くめどは立っていませんが。

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


11063/11037 BQO00549  konno            Re^3: DvorakJのこと
( 1) 24/01/29 16:00 11060へのコメント(鈴木康弘さん)
>  素MS-DOSでならdvorak.comでDvorak配列にできますが、
> ・dosvaxj31では、インストールされたふりをして無効、
> ・MS-DOS Player と VTDOS は、"This machine may not support Int15h ah=4Fh" と表示して使えませんでした。

なるほど、Int 15/AH=4Fh は、ブラウンデータでは

Int 15/AH=4Fh - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)

インターセプトって横取りするという意味ですかね。
どのエミュも対応していませんでしたか。残念。
どうしても必要であれば、エミュ作者様にメールしてみれば、検討してもらえる余地はあるかと思います。

>  それで、Windows上で動くDvorakツールでないとだめだなと、DvorakJを見つけてあれこれやってたのです。

逆に DOS窓だけ Dvorak キーだと、混乱しそうな気がするのは素人考えなんでしょうね。(^^;


11064/11037 CXB00940  としき           Re^3: DvorakJのこと
( 1) 24/01/29 16:08 11060へのコメント(鈴木康弘さん)
参照先:http://toshiki.la.coocan.jp/
キーボード関係は昔、ちょっとだけ手を出したことがあります。
といっても、ドボラックは憧れだけ。
親指シフトには20代前半にまじめに取り組んだけど、結局挫折。
でも、自分は挫折したくせに、他人には薦めていたりするけど。
だって、理論的には、入力速度がものすごく向上するから。
同じ理由で、英文の入力速度が向上するドボラックは、どこぞの英語の先生に
お薦めしたことがあるようなないような。

それはさておき。
ほとんどのDOSのエミュレータは、Windowsからキーをそのままもらっています。
なので、IMEとかキー配列は、Windowsで設定することになっているというか、
Windowsのドライバ設定が有効のはず。
ただ、DOSVAXはデフォルトではAT互換機ではなくAX互換機のエミュレータだった
はず。なので、この辺の設定をいじれば、もしかしたらキーのバインドがうまく
通るようになるかもしれません。
つまり、Windows側でのキーボード設定をそのままもらえるようになる、という意味。
キーボードのハードウェア的な押下信号をそのままアプリ(エミュレータ側)で
解釈するということはほとんどないはずというか、Windowsアプリではえらくお行儀
が悪いソフトということになるので、やらないと思うんですよね。すなわち、システム
(Windows)からもらった入力をリマッピングしている、というのが素直なつくり。

Windows側で、例えばメモ帳ならドボラックになっているのなら、エミュレータでも
ドボラックにするのはもう一息なはずです。


11065/11037 BQO00549  konno            Re^3: DvorakJのこと
( 1) 24/01/29 19:22 11060へのコメント(鈴木康弘さん) コメント数:1
鈴木康弘さん

> > >  素DOS上のDvorak.comはただ常駐させるだけでよかったのに。
> > これは、DOSVAXJ3 の中で動作するのでしょうか。
> > お役に立てなくて申し訳ないです。
>  いえ、これが動くのはWindows98付属の(Win98起動用の)MS-DOSです。
> (僕が素DOSと呼んだもの)

この DOS用の Dvorak.com はネットでダウンロード出来るものですか?
参考のために見てみたいと思ったもので。


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

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


11067/11037 GST01234  鈴木康弘         Re^4: DvorakJのこと
( 1) 24/01/30 22:23 11065へのコメント(konnoさん) コメント数:1
 
> この DOS用の Dvorak.com はネットでダウンロード出来るものですか?
> 参考のために見てみたいと思ったもので。

 昔NIFTYでダウンロードしたものです。タイムスタンプは 92-5-29 作者はNIFTY QFH01025 bincnchanさん。メールします。


11068/11037 GST01234  鈴木康弘         Re^5: DvorakJのこと
( 1) 24/01/30 22:38 11067へのコメント(鈴木康弘さん) コメント数:1
 あれ?konno@nifty.comじゃだめなのかな?メールが帰ってきてしまった..。

11069/11037 BQO00549  konno            Re^6: DvorakJのこと
( 1) 24/01/30 23:00 11068へのコメント(鈴木康弘さん) コメント数:1
>  昔NIFTYでダウンロードしたものです。タイムスタンプは 92-5-29 作者はNIFTY QFH01025     bincnchanさん。メールします。

あ、niftyのライブラリでしたか.

>  あれ?konno@nifty.comじゃだめなのかな?メールが帰ってきてしまった..。

私のメールはこの発言の名前をクリックすれば出ると思います。
アンダーバーがあるんですよね。(^^;


追記

あれ? メールを表示にしたら新着情報がおかしくなってしまいました。
名前欄のメールは非表示にしますね。

konno_ + @nifty.com です。

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

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


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


11071/11037 GST01234  鈴木康弘         DvorakJはやめて、AutoHotKeyでDvorak
( 1) 24/01/31 06:49 11069へのコメント(konnoさん) コメント数:1
> konno_  +  @nifty.com    です。

 おはようございます。今度はkonnoさんにメールは届いたかな。

 結局、DvorakJという、ちょっと使いにくいソフトはやめて、AutoHotKey という、もっと汎用性のあるキー切替ソフトでDvorak配列にしました。

 設定ファイルは以下。Windows上でこのファイルをクリックすればキーボードはDvorak配列になります。 これをスタートアップフォルダに入れておけばいいわけだ。

----------------------------
#Requires AutoHotkey v2.0

q::'
w::,
e::.
r::p
t::y
y::f
u::g
i::c
o::r
p::l
;@::/
@::@
;[::=


;a::a
s::o
d::e
f::u
g::i
h::d
j::h
k::t
l::n
`;::s
sc28::- ; sc28 = :
]::\

z::`;
x::q
c::j
v::k
b::x
n::b
;m::m
,::w
.::v
/::z
sc73::Send "+@" ; sc73 = \ , "+@" = `

;1::1
;2::2
;3::3
;4::4
;5::5
;6::6
;7::7
;8::8
;9::9
;-::[
;^::]

;-----------------------------
; Modifier Key
;
; # Win
; ^ CTRL
; + SHIFT
; ! ALT
;
;-----------------------------

+q::"
;+[::+

+sc28::_ ; sc28 = :
;+]::|

+z:::
+sc73::~ ; sc73 = \

;+1::!
;+2::@
;+3::#
;+4::$
;+5::%
;+6::^
;+7::&
;+8::*
;+9::(
;+0::)

; 以下はCTRL KEY。つまりCTRLキーを押した場合はQWERTYのまま。
; もっとスマートに書けそうな気がする。(^^;)


^[::^[
^]::^]

^'::^'
^,::^,
^.::^.
^p::^p
^y::^y
^f::^f
^g::^g
^c::^c
^r::^r
^l::^l
^/::^/
^=::^=

^o::^o
^e::^e
^u::^u
^i::^i
^d::^d
^h::^h
^t::^t
^n::^n
^s::^s
^-::^-

^`::^`
^q::^q
^j::^j
^k::^k
^x::^x
^b::^b
^m::^m
^w::^w
^v::^v
^z::^z

;end of dvorak.ahk
----------------

 Windows上のソフトも、VTDOS窓も、MS-DOS playerも、これでDvorak配列になってくれました。

 しかし、なぜか、DOSVAXJ3だけは、英語のままで打つとDvorakになってくれない。
(IMEでの日本語入力はDvorakになってくれます。不思議。)

 QWERTYUIOP ASDFGHJKL ZXCVBNM のQWERTYキーボードが、
 :,.PYFGCRL AOEUIDHTN ;QJKXBM のDvorakになってほしいのに
 'WVLFUIJPN AR.GCEDYB S:HTQXM に、IMEがoffだとなってしまいます。

 何バイトずれてるとか、規則性もないみたいだし?
 当面DOSVAXJ3内では、Dvorakで英語文は書かないことにしよう。(もともと書かないって。)

11072/11037 BQO00549  konno            Re: DvorakJはやめて、AutoHotKeyでDvorak
( 1) 24/01/31 14:15 11071へのコメント(鈴木康弘さん) コメント数:1
>   おはようございます。今度はkonnoさんにメールは届いたかな。

おはようございます、私は宵っ張りなのでもう昼過ぎですね。(^^;
メールはいただきました。ありがとうございます。

>  結局、DvorakJという、ちょっと使いにくいソフトはやめて、AutoHotKey という、もっと汎用性のあるキー切替ソフトでDvorak配列にしました。

より良いものが見つかったならなによりです。
メールの返信にも書きましたが、あらためて報告します。


いただいた DVORAK.COM を DOSVAXJ3 に入れてみました。
結果としては、動作したみたいです。

DOSVAXJ3 のVZで、"v" を打ったら、"k" が表示されました。
これはキー配列が DVORAK に変わったのだと思います。
私は DVORAK の配列を知らないのでこれだけで止めました。(^^;

設定は、dosboxj.conf の [autoexec] セクションに

path=c:\ut;c:\hx;%path%;
DVORAK.COM

これだけです。
PATH の通ったディレクトリに DVORAK.COM を入れておく必要があります。
VTDOSも、MS-DOS playerも試しましたが、DVORAK.COM は常駐しなかったようです。

DVORAK.COM はアセンブラで作られているようですね。
逆汗で覗いてみたいと思います。(^^;


11073/11037 GST01234  鈴木康弘         Re^2: DvorakJはやめて、AutoHotKeyでDvorak
( 1) 24/01/31 19:58 11072へのコメント(konnoさん) コメント数:1
> いただいた DVORAK.COM を DOSVAXJ3 に入れてみました。
> 結果としては、動作したみたいです。
>
> DOSVAXJ3 のVZで、"v" を打ったら、"k" が表示されました。
> これはキー配列が DVORAK に変わったのだと思います。

 あ、そうでした。
 DOSVAXJ3では、DOSのdvorak.comをインストールすると、英語入力ではDvorakになります。
 でもIMEで日本語を書こうとすると、QWERTYのままで、だめだこりゃ、と思ったのでした。

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

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

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

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

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

 ありがとうございます。

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

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



11075/11037 GST01234  鈴木康弘         Re^3: DvorakJはやめて、AutoHotKeyでDvorak
( 1) 24/01/31 20:59 11073へのコメント(鈴木康弘さん) コメント数:1
>  DOSVAXJ3では、DOSのdvorak.comをインストールすると、英語入力ではDvorakになります。
>  でもIMEで日本語を書こうとすると、QWERTYのままで、だめだこりゃ、と思ったのでした。
と書いていて、はっと気がつく僕。

 僕は素DOSのautoexec.batで、dvorak.comが自動的に常駐するようにしてました。
 DOSVAXJ3でも、立ちあげると自動的にdvorak.comを常駐するようにautoexecを設定してました。

 このdvorak.comの常駐をはずして、AutoHotKeyだけ動かせば...

 そのとおり、DOSVAXJ3は、英語入力でちゃんとDvorak入力になりました。
 #11071 に書いた現象は、AutoHotKeyに加えてdvorak.com を常駐して、二重にキーを変えたのが原因でした。ちゃんちゃん。

 DOSVAXJ3の作者さん、あらぬ疑いをかけてごめんなさい。


11076/11037 BQO00549  konno            Re^4: DvorakJはやめて、AutoHotKeyでDvorak
( 1) 24/01/31 21:41 11075へのコメント(鈴木康弘さん)
>  DOSVAXJ3でも、立ちあげると自動的にdvorak.comを常駐するようにautoexecを設定してました。
>  このdvorak.comの常駐をはずして、AutoHotKeyだけ動かせば...
>
>  そのとおり、DOSVAXJ3は、英語入力でちゃんとDvorak入力になりました。
>  #11071 に書いた現象は、AutoHotKeyに加えてdvorak.com を常駐して、二重にキーを変えたのが原因でした。ちゃんちゃん。

なるほど、それで

>  何バイトずれてるとか、規則性もないみたいだし?

こうおっしゃっていたのですね。
謎が解けてよかったです。


11077/11048 CRG00666  文太             『スタイルブック』
( 1) 24/02/01 11:16 11074へのコメント(文太さん) コメント数:1

 どうでもよい追記です。書くのを忘れていました。少し古い話。
 近場のも都立のも、図書館にはありませんでした。PC関係の古い本って
わりと廃棄される可能性が高いような印象。
 というわけで、いちおう古書店をサーチ。ビンゴ! 送料込み \1220 。
 こうして、書庫の肥やしが、いえ、さらなる幸福コレクションがもう1冊、
本棚に追加される予定です。今日か明日には、着くのではないかしら。
 ま、どうでもよいことですが。



11078/11070 DGF01024  めざら           Re: DOSVAXJ3 240130 更新
( 1) 24/02/04 17:38 11070へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
有り難いですね.
こういうちょっとしたことが毎回だとストレスになってしまう可能性があるので,
実に嬉しい更新です。位置情報保存を要望してくださった konno さんにも感謝。


11079/11048 CXB00940  としき           Re: 『スタイルブック』
( 1) 24/02/05 18:20 11077へのコメント(文太さん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 本棚に追加される予定です。今日か明日には、着くのではないかしら。

もう届いていそうですね。
ま、気が向いたら本文を読みましょう。
推理小説でもありませんから、結末から読まなくても大丈夫。
#おいこら
とりあえず、序文と目次くらいは読んでおいてもいいかも。
内容に対する批判はあったかもしれないけど、文体が合わない、というのは私くらい
のものでしょう。あ、でも、雰囲気が合わなくて上村さんの本に手を出さなかった、
というのはめざらさんでしたっけ。
そして、私の場合、文体ではなく内容のほうは、とても勉強になりました。
本文で作者は

> だから、筆者の書くプログラムは使用する言語がBASICだろうがCだろうがPascal
> だろうが、ほとんど同じスタイルをしている。

と書いていますが、私も、BASICだろうがPerlだろうがVzマクロだろうが、ほとんど
同じようなスタイルのプログラムになっています。この辺はまさに、この本からの
影響でしょう。


11080/11048 BQO00549  konno            ハノイを目指して
( 1) 24/02/05 23:23 11074へのコメント(文太さん) コメント数:1
文太さん

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

ハノイの塔の話題が出たので、見てみたら VZマクロと Turbo Basic のサンプルソースにありました。

Turbo Basic のはそのままコンパイルできて、USモードで実行出来ました。
プレート 17枚でも数秒で完了するほど高速で、目に見えないので ウエイトを入れました。
自分好みの改造が整ったら公開しようかな。?

VZマクロは、軟体にある田野村さんのマクロで、プレート12枚まで実行出来ますが、流石に遅いです。
枚数を 14枚まで増やしたり、高速化の改造をして、ある程度形になりました。
秒数の比較

 オリジナル     改造
数n 回数i W80*25 W136*35 W80*25 W136*35

12 4095 89秒 95秒 47秒 52秒
13 8191 112秒
14 16383 240秒

    ↑
1枚増えるごとに約2倍の回数というのが面白いですね。

さて、これらのマクロや BASIC(実行ファイルのみ)をアップしたら
文太さんの勉強にかえって邪魔になってしまうかな。(^^;


# タイトル変更した。これで安心。(^^;;


11081/11048 CRG00666  文太             Re^2: 『スタイルブック』
( 1) 24/02/06 17:20 11079へのコメント(としきさん) コメント数:1
 ハノイへようこそ、じゃないな。
 手を動かさず、クチばっかり動かしている文太です。
 目で活字を追うだけの日常は、まだまだ続くのですが。
 あ、体ぜんぶを使って、雪かきはしましたよん。

 さてさて、良書だろうと思います。ちらちら眺めただけですが。

>私も、BASICだろうがPerlだろうがVzマクロだろうが、ほとんど
>同じようなスタイルのプログラムになっています。

 こうなるでしょうね、この抽象度の高さだと。
 えーと、あれだけ詳細に内容を紹介していたので、あ、わたくしに
買えと仰ってる、と誤解したのです。これは、konnoさんが勧められて
いる本でした。
 が、僕も楽しくよめそうですよ。BASICのコードを覚えながら。

 konnoさんが勧められている点とは違いますが(?)、−−ごめん
なさい、長すぎて引用できません >konnoさん−−、たとえば、
p.231。まあ、広義に文体と言ってもいいですが、この作者の読者
への姿勢みたいなのは、僕も鼻につきました。僕は、何かを伝える
人が偉そうなのは好きです。僕に何かを教えてくれる人はみな先生で、
「先生はいつも偉い、絶対的にエライ」と思っています。

 が、ここ、しつこい。「自己満足におちいり、自己陶酔にひたる」。
ここでお仕舞でいい。この上の段落も4行ぐらい削除したい。この
段落も残り全部カットしたい。説教がうるさすぎ、という印象ですね。
 具体的に中身のあることを語れ。

 ま、これも一度はまると、このムチが快感、となることもあるので、
こちらの気分次第という面もあろうかと思いますが。

 と、同調して批判的なことを書きましたが、これがなければ、という
気持ちです。ゆっくり3回読む価値はあるな、と思っています。

 本を手に取れる人にしか通じない書き方でごめんなさい。
 konnoさん、僕はちょっと時間がかかりそうですので、熱いうちに、
としきさんに借りてみましょう!

 田野村さんでしたか、そんな記憶がおぼろげにありましたが……。
 あの人、そういう本格的な王道を生きた人でしたね。
 が、僕の手、動かず。


11082/11048 BQO00549  konno            Re: ハノイを目指して
( 1) 24/02/06 23:52 11080へのコメント(konnoさん)
タイトルに合わせてこちらにレスします。

ハノイの塔のマクロ関連情報を得ようとnifty会議室の過去ログを検索しましたら
としきさんの書き込みがありました。

> 18134/19000 PEB03250 としき 再帰マクロ
> (15) 01/03/24 00:49 コメント数:2
> マクロで再帰を使う実験をしてみました。
> = フィボナッチ数
>
> では、ついでにもう一つ。
> 昔、再帰が使えない N88-BASIC で使った、配列を擬似的なスタックとして使うと
> いう技をマクロで使ってみました。別にスタック領域が足りない訳でもないのだ
> から、素直な push pop でもいいと思いますが。
> = ハノイの塔

今回はソースは省略しますが、#11066 の としきさんの書き込みを思い出しました。

> プログラム初心者に再帰を説明するのは「ハノイの塔」かフィボナッチ数列か、
> というくらい。再帰を使ったほうがシンプルなものって、実生活ではあまり
> 見かけませんからね。
> また、再帰でできるものは必ずループでもできるらしい。
> なので、再帰からループへコードを変更するための題材にも使われるらしい。

23年前に実際にマクロコードを書いていたのですね。流石です。

> で、ループならどうということもないのですが。
> 8ビットパソコンの時代のBASICでは、再帰というものが使えませんでした。
> なので、そこでわざとループを使わず、いかに擬似的な再帰を実現するか、という
> のも、ちょっと気取ったプログラマたちの力試しの例題に使われていたりして。
> ま、再帰が使えない、という意味ではVzのマクロも同様。

この再帰というのが私はいまいち理解できていなくて。
BASIC で言えば、サブルーチンの中でそのルーチンの先頭に飛んで条件を満たすまで繰り返す。
みたいな感じでいいのかしら。
実際VZマクロでもそういう動作をしているように思いました。

としきさんのコード、わかりやすそうですね。
いつか使わせてもらうかもしれません。


11083/11048 CXB00940  としき           Re^3: 『スタイルブック』
( 1) 24/02/07 02:12 11081へのコメント(文太さん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
雪は夜更けすぎに、雨へと変わるだろう、サイレ(以下略)

俺は何を歌っているのだ。
いやぁ、2月5日は深夜、23時ごろになって大雪も峠を越えて、みぞれか雨か、
というものが弱く降ってくるだけになったので、そこから雪かき開始。
だって、6日は日勤で出社しないといけないのだもの。
結局、1時間あまり汗を流して、自宅前の道路の雪は概ね撤去。
撤去した雪のほとんどは、自宅の庭に放り込みました。他に置く場所がないから。
多少は側溝にも押し込みましたけどね。
それから入浴して就寝は2時過ぎ。
だけど、夜通し続いた落雪の音がまるで爆撃のようで、一晩中まんじりとせず。
6日は普通に5時起きして、いつもより5分早く6時前には出社。眠い。
ちなみに、7日も日勤なので5時起き予定。
あぁ、掲示板に書き込んでる余裕なんてない。はず。
7日も眠そうだ。


それはさておき。

>  さてさて、良書だろうと思います。ちらちら眺めただけですが。

以前にも書きましたが、内容については、王道も王道。
重箱の隅はともかく、全体的には、あまり批判できない。

ところで、この本、雑誌連載をまとめたものです。
不定期連載みたいな形で、1年ぐらいに渡って書かれたものだったかと。
当然、読者からの感想みたいなものが編集部に届くわけですよ。
そんな中に「これはもはや宗教だ」みたいな内容が混じっていたことがあったらしい。
でも、決してそんな事はない。
他のえらい学者さんたちが唱えたことのBASICでの実装例をひたすら紹介しているだけ
の、単なる工学の本です。
ただ、対象とする読者層の設定には苦労したと思う。
だって、中身は大学の学部情報科の初級クラス。
だけど、実際にその雑誌を読んでいる人や読んでほしい人といったら、プログラムを
専門としていないけど業務命令その他でプログラムを作成するハメになった社会人
から小中学生まで、多岐に渡るわけです。そして、それら全ては素人前提。
いわば、英語の先生が、大学英文科で教えるような正当な文法を、小学生から社会人
までをすべて対象とする1冊の教科書を作る、みたいなもので、ある程度の無理が
発生するのは当然かもしれません。そして、そのしわ寄せとか作者へのプレッシャー
といったものが、どこかで発現してもおかしくはないと思います。
だけど、雑誌連載時も否定的な意見は届いたはずだけど、そこそこ少ないはず。
なぜなら、連載継続とか単行本出版という結果に至ったわけだから。
ということは、ある程度の成功と推測してもいいんでしょうね。

11084/11048 CRG00666  文太             Re^4: 『スタイルブック』
( 1) 24/02/08 00:27 11083へのコメント(としきさん) コメント数:1
としきさん

 雪かきと落雪の爆撃への守り(寝れんぞ)、お疲れ様でした。
 すごいなぁ、その体力。うらやまし。

>他のえらい学者さんたちが唱えたことのBASICでの実装例をひたすら
>紹介しているだけの、単なる工学の本です。

 はい、「構造化は BASIC でも十分できる」という本ですね。
 「えらい学者さんたち」とは、クヌース、カーニハン、リッチー、
ダイクストラ、N・ヴィルトなんて人たちです。
 プログラミングって何? と思ったことのある人なら、聞いたこと
のある名前たち。
 王道。
 (僕的には、〔少し嘘かもしれないけど〕榊原さんがsyoさんに
教えていたことの反復、という印象でした。自己評価、高すぎかな?)

 僕としては、ここ3年くらい、楽しく考えてきたこと(Fortran, Pascal,
Ratforなどを題材に)が、きれいに整理されてるな、というのが
『プログラミング・スタイル』についての最初の感想でした。

>いわば、英語の先生が、大学英文科で教えるような正当な文法を、
>小学生から社会人までをすべて対象とする1冊の教科書を作る、
>みたいなもので、

 あまり良い比喩とは言えないかと愚考いたします。そんなの、まず
僕には無理で、嫌だ、そんな仕事、やらないからね、と言うような
問題設定。

 でも、初出雑誌が何だったか思い出せませんが、やっぱり
「プログラミングって何?」という興味と動機のある人たちが読者
だったんじゃないのかな、と想像します。
 「動いた、楽しい!」という経験がある人たち。

 おお、Cも出てきた。林先生、この時期にコンピュータの全体像を
把握されていらっしゃったのですね、と思いました。
 この本の初版は、「昭和60年12月」=1985年。僕の本は、
2刷(昭和61年)。僕が、将来まさかPC方面に関心をもつなんて、
夢にも思わなかった時代の本。

 すごい本ですね。自信はありませんが、色あせない本です。



11085/11048 CXB00940  としき           Re^5: 『スタイルブック』
( 1) 24/02/10 20:45 11084へのコメント(文太さん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
>  あまり良い比喩とは言えないかと愚考いたします。そんなの、まず
> 僕には無理で、嫌だ、そんな仕事、やらないからね、と言うような
> 問題設定。

確かによい比喩ではないと思う。
でも、ならどう例えればよいかというと、あまり思いつかない。
文太さんは知っていると思うけど、私、あまり例え話が得意ではないので。

ちなみに、初出雑誌は、当時の日本ソフトバンク社の月刊「Oh!PC」。
当時のソフトバンクが出していた、いわゆる機種別誌というヤツですね。
広告によると、当時は他に
月刊「Oh!MZ」
隔月刊「Oh!FM」
季刊「Oh!HC」「Oh!55」
などといった雑誌が出ていたようです。
最初の掲載は1983年10月。本棚から引っ張り出してきました。
懐かしいですね。というか、しまいこまれず本棚にあると言うのがなんとも。
最初の掲載時は、まだその後が続くとは思われておらず、特集扱いでした。
あ〜、読み直しているうちにだんだん思い出してきた。
最初のうちは、それほど文体にも引っ掛かりを覚えなかったんですよ。
単なる、淡々とした文章だ、と言うだけで。
なので、単行本化されたときも大して加筆されていないという評判を聞いたもので、
なら雑誌掲載記事は全て持っているわけだからわざわざ買うには及ばないな、と判断
して、すぐには購入しなかったのですよ。ただ、やはり毎回大きいサイズの雑誌を
引っ張り出すよりは小さくまとまった単行本のほうがいいという判断で、最初に発売
されてから2〜3年ぐらいしてから購入したのでした。
だから、私の持っているのは昭和61年11月の第4刷。
たぶん、62年か63年になってから買ったはず。

上記、1983年10月号の目次をみると、以下のような記事があります。
まず、目次で特集の次に並んでいるのは、海外のCG展示会の記事。
次が「新作ゲーム画面集」。やっぱりみんな、ゲームが好きなんですよ。
ついで「超大型オリジナルプログラム第1部」としてPC-9801用の家計簿プログラム
が「パーソナルバランスシート」なる大仰なタイトルで載っている。
これは連載というより、複数回掲載の初回、という感じ。
そして「4つのBASICへの入門」というサブタイトルのついている講座。おそらく、
NECの各機種用のBASICの差異の解説まで踏み込もうとしているのではないかなぁ。
でも、このときはまだ第3回。
さらに「マシン語超入門講座」や「機械語熟語集」といった連載では8ビットのZ80が
対象。
「ミニフロッピーの活用法」という連載もあるけど、この号は番外編で、拡張メモリ
をフロッピー的に扱うソフトが掲載。ま、RAMディスクですね。しかも、これの対象は
8ビットパソコンであるPC-8001とPC-8801。他の号をみていないけど、この連載が
そもそも8ビットパソコン対象なのかも。
そして、ハードウェア工作の「PC工作入門」は、この号ではPC-9801用の記事だけど、
それまでの記事はみんな8ビットパソコン用だったらしい。
さらに、機種別のページも、取り上げられているのは8ビットマシンだけ。
つまり、業務にもバリバリ使える16ビットパソコンは、まだまだ黎明期。
この時期のこの雑誌が、ソフトウェア工学の、ある意味で理論的な記事を掲載すると
いうのは、少なくともニーズとしては顕在化していないはず。
というか、ミスマッチもいいところ。
また、商業的な意味では冒険というか、よく掲載に踏み切ったものだと思います。
そして実際、このときか2回目の掲載のときか、連載陣の一人がけんかを吹っかけた
というか婉曲に批判したけど、そもそもけんかにならず、逆にその人の連載が終了
するハメになっていたり。さすがに打ち切りではなく、最終回まで掲載されたけど。

ということで

> 「プログラミングって何?」という興味と動機のある人たちが読者
> だったんじゃないのかな、と想像します。

これはどうなんだろう。
konnoさんならあのころのベーマガとかの雰囲気を覚えているかもしれない。
みんな、いかに自分のアイディアを実装するかしか考えていないような感じ。
なので、その先、というか、どうすれば効率的にバグなく実装できるか、などという
ところまでは思い至っていないんですよ。
特にゲームなんかはある意味で一発勝負のようなところもあったし。


11086/11048 BQO00549  konno            Re^6: 『スタイルブック』
( 1) 24/02/10 22:48 11085へのコメント(としきさん) コメント数:1
> > 「プログラミングって何?」という興味と動機のある人たちが読者
> > だったんじゃないのかな、と想像します。
>
> これはどうなんだろう。
> konnoさんならあのころのベーマガとかの雰囲気を覚えているかもしれない。

このころベーマガとか読んでいたかは覚えていませんが、BASICはやってましたね。
当時円弧と直線の交点だったかを求めるのに方程式がわからなくて困ってしまい
ポケコンのBASICで2分法というのを使って、それですました記憶があります。(^^;

> みんな、いかに自分のアイディアを実装するかしか考えていないような感じ。
> なので、その先、というか、どうすれば効率的にバグなく実装できるか、などという
> ところまでは思い至っていないんですよ。

まさにそのとおりで、プログラムを組めば仕事が楽になるという思いで必死でした。

パソピア16を見つけた時は、「こいつ、動くぞ」とつぶやきながらマニュアルをめくり
「武器はないのか」と見たら、BASIC で動いているのがわかり、自分でテキをやっつける
武器を作り、大危険に突入していったのでした。(^^;


11087/11070 BQO00549  konno            DOSVAXJ3 の キーマッピング
( 1) 24/02/13 00:24 11078へのコメント(めざらさん)
DOSVAXJ3 では Ctrl+[F01] は Key Mapperに割り当てられていて
今まで それで運用していたんですが、もうどうにも我慢できなくなり
Mapper の起動キーを変更することにチャレンジしました。

DOSVAXJ3 の作者からいただいたメールの内容を以下に貼り付けます。

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

 ファンクションキーと Ctrl 等の組み合わせについては DOSBox の機能
に割り当てられており、そのままでは入力されません。
 Ctrl-F1 でキーマッパーを表示し、機能名をクリックして Del をクリッ
クすると機能を削除できます。詳しくは下記を参照してください。Clipboard
は DOSVAXJ3 独自機能です。
https://www.dosbox.com/wiki/Special_Keys
キー割当 機能名
Ctrl-F1 Mapper
Ctrl-F4 Swap Image
Ctrl-F5 Screenshot
Ctrl-F6 Rec Wave
Ctrl-F7 Dec Fskip
Ctrl-F8 Inc Fskip
Ctrl-F9 ShutDown
Ctrl-F10 Cap Mouse
Ctrl-F11 Dec Cycles
Ctrl-F12 Inc Cycles
Alt-F10 Clipboard
Alt-F12 Speedlock

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

Alt-F10 で Clipboard から張り付けが出来るのは良いですね。
Alt-F11 が空いているので、そこに Mapper を割り当てたいと思います。

さて、wiki を見てもキーマップの変更の仕方がよくわからなくて試行錯誤した結果
mapperj.map ファイルを作ってそれを編集するのが一番わかりやすそうです。
手順は

1.Ctrl-F1 で Mapper を表示させます。
2.[Save]ボタンをクリックすると DOSVAXJ3 のフォルダに mapperj.map が出力されます。
3.mapperj.map ファイルを開き、4行目

hand_mapper "key 282 mod1"

これを

hand_mapper "key 293 mod2"

こう変更します。

key 282 は [F01]
key 293 は [F11]
mod1 は Ctrl
mod2 は Alt

これで、Alt+[F11] で Mapper が表示されるはずです。
Ctrl+[F01] はフリーになり、VZで使えるようになるはず。

っと思ったら、VZで動かない。(;_;)
あれえ? と思ったら、VZ.DEF で無効にしてたという。(>_<)
VZ.DEF を元に戻したら VZで使えるようになりました。\(^^)/ ヤッタ-
やれやれです。<(^^;)


11088/10972 DGF01024  めざら           Re: ある現象
( 1) 24/02/15 07:40 10972へのコメント(めざらさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
> ■ VTDOS+CKWV 環境で Google IME を起動すると落ちる

今朝,Windows 10 のアップデートが(勝手に)行われたのですが,
上記現象は発現しなくなりました。

結局,原因はわからずじまいでしたが,Windows のせいだった……
……という結論にならざるを得ないですね。

……と思ったら,Google IME の候補一覧がちらちら消えてしまう現象に対処する
タスクマネージャからレンダラーをリセットするという方法が効かなくなってしまい,
なんともはや使いにくいという状況に陥っているところであります。
ところが,これは VZ の方は問題なし。最高!\(^o^;)/


11089/11048 CXB00940  としき           Re^7: 『スタイルブック』
( 1) 24/02/16 17:00 11086へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> まさにそのとおりで、プログラムを組めば仕事が楽になるという思いで必死でした。

最近公開されたBASICのコードを見ても、必死さはにじみ出ているというか。
だけど

> 「武器はないのか」と見たら、BASIC で動いているのがわかり、自分でテキをやっつける
> 武器を作り、大危険に突入していったのでした。(^^;

作った武器が手作りの竹やり同然、かもしれず。
#この艦では勝てない・・・

先般、見せていただいたPerlのコードなんかも、工夫の跡は見て取れるのですが、
これ以上、どこにどう手を入れてよいかわからない。
いや、高度に完成されて手を入れる余地がない、という意味ではなく。
ちょっと手を入れたらすべて崩壊しそうなジェンガというか砂上の楼閣というか。
ソフトウェア工学の教育を受けていないから仕方ないのですが。
全面的なリファクタリングをしたくなってしまう。
逆にいうと、konnoさん、伸びしろは無限大。
今からでもきちんとソフトウェア工学の基礎を勉強してみるのも一興かと。


11090/10972 CXB00940  としき           Re^2: ある現象
( 1) 24/02/16 17:01 11088へのコメント(めざらさん)
参照先:http://toshiki.la.coocan.jp/
> 今朝,Windows 10 のアップデートが(勝手に)行われたのですが,

2〜3日前、Windows7の電源を入れたら、アップデートが行われました。
まだやってたんだと、ちょっとびっくり。
それはともかく、久しぶりというか、Win7の挙動を忘れていまして。
アップデート後、シャットダウンを求めてくるのは当たり前、なんですが。
私の記憶では、更新して再起動というのがあったはずなんですね。
でも、終了オプションにそういう選択肢がない。
普通に再起動を選択したら、更新が当たってくれていない。
つまり、更新して終了という選択肢が出続けてくれやがる。
仕方なく、一旦終了を選んで、落ちてから再び電源投入。
なんかめんどくせ〜。


11091/11048 BQO00549  konno            Re^8: 『スタイルブック』
( 1) 24/02/17 00:43 11089へのコメント(としきさん) コメント数:1
> 作った武器が手作りの竹やり同然、かもしれず。

ランボーなら竹槍でテキを全部やっつけられるかも。(^^;
私はランボーではないので、乱暴なコードになってしまうのです。

> ちょっと手を入れたらすべて崩壊しそうなジェンガというか砂上の楼閣というか。
> ソフトウェア工学の教育を受けていないから仕方ないのですが。

まったくそのとおりです。
なんせ自分で昨日書いたコードが読めないのですから。(-_-;)

> 今からでもきちんとソフトウェア工学の基礎を勉強してみるのも一興かと。

最近物忘れが地方レベルになってきてるので、難しいですね。(^^;


11092/11048 CXB00940  としき           Re^9: 『スタイルブック』
( 1) 24/02/17 11:33 11091へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 最近物忘れが地方レベルになってきてるので、難しいですね。(^^;

アップル認定の世界最高齢のプログラマは現在88歳だとか。
そういう人にkonnoさんのせりふを聞かせたら「最近の若い者は〜」とか言いそう。

それはさておき。
konnoさんに勉強してもらってきれいなコードを書いてもらいたい、というのは決して
konnoさんのためではなく。
ざっくりレベルで、今のままのkonnoさんがバグのありそうなコードを3つ書き上げる
のに要する同じ所要時間で、勉強したkonnoさんならバグのなさそうなコードを5つは
書き上げられそう、という見積もりをしたのですよ。
つまり、それだけアウトプットの質・量が向上すると、私を始めみんながうれしい、
ということ。つまるところ、私利私欲なわけですよ。
あるいは、先日BASICのコードを公開されたように、今後はオープンソースの方向に
舵を切っていく、とか。


11093/10933 DGF01024  めざら           Re: 新祝日対応のデータ形式
( 1) 24/02/17 13:33 10946へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
古いところにぶら下げを御免なさい。

> CALENDAR.DEF Yushi さんのモノクロ版カレンダー拡張wanama版は
……を見て,そう言えば令和対応ってどうなってたっけ?と思ったら何処にも
情報が出ていなかったので,野ざらし言#5481 に使用中のを貼り付けておきました。

機能は変わらずデータ追加だけなので版に変更はありませんが,
何か識別子がないと紛らわしいため v1.08wm と仮表示してあります。


和生師匠は元気にしてますかねぇ……
……と言うことがあまり現実的でないことは承知しています。

以前,うちの大根と秩父の杓子菜漬をお送りしたところが大層なお返しをいただいて
尻込みしてしまい,その後ほとんど連絡も途絶えてしまっているのですが,
お便りくらいは出してもばちは当たらないですよね。……暖かくなったら……

11094/11048 BQO00549  konno            Re^10: 『スタイルブック』
( 1) 24/02/18 15:10 11092へのコメント(としきさん)
> アップル認定の世界最高齢のプログラマは現在88歳だとか。
> そういう人にkonnoさんのせりふを聞かせたら「最近の若い者は〜」とか言いそう。

うう、それを言われたら弱音を吐けないではないですか。(^^;
まあ、何故か今は色々プログラミング欲が出てきて同時に2〜3種のコードを見てたり。(^^;

> ざっくりレベルで、今のままのkonnoさんがバグのありそうなコードを3つ書き上げる
> のに要する同じ所要時間で、勉強したkonnoさんならバグのなさそうなコードを5つは
> 書き上げられそう、という見積もりをしたのですよ。
> つまり、それだけアウトプットの質・量が向上すると、私を始めみんながうれしい、
> ということ。つまるところ、私利私欲なわけですよ。

そ、そんなこと言われたって木に登ったりなんかしないんだからね! (^^;

> あるいは、先日BASICのコードを公開されたように、今後はオープンソースの方向に
> 舵を切っていく、とか。

私はあくまで個人的な趣味でやっているので、その辺は変わらないかもしれないです。


11095/10933 BQO00549  konno            Re^2: 新祝日対応のデータ形式
( 1) 24/02/18 21:38 11093へのコメント(めざらさん)
> > CALENDAR.DEF Yushi さんのモノクロ版カレンダー拡張wanama版は
> ……を見て,そう言えば令和対応ってどうなってたっけ?と思ったら何処にも
> 情報が出ていなかったので,野ざらし言#5481 に使用中のを貼り付けておきました。

めざらさん、ありがとうございます。
うちの BASIC カレンダーも2月23日が平日のままだったので、データを更新しました。

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

> 機能は変わらずデータ追加だけなので版に変更はありませんが,
> 何か識別子がないと紛らわしいため v1.08wm と仮表示してあります。

結構修正箇所が多いのですね、これはもう VerUP レベルですね。

> 和生師匠は元気にしてますかねぇ……
> ……と言うことがあまり現実的でないことは承知しています。

みなさん音沙汰がないので、卒業されたのならいいのですが。
私は Emmett さんの LXCLND.DEF を愛用しているので、Vector の VZマクロ関連を覗いてみました。
私の VZk07p 2005年 のが最新になっていました。(^^;
うーん、まだパスワード更新出来るなら、新しい版と入れ替えようかな。
うちのホームページのURLももう繋がっていないので、リンクを新しくしないと。(^^;

> お便りくらいは出してもばちは当たらないですよね。……暖かくなったら……

ぜひともよろしくお願いします。m(__)m


11096/11096 BQO00549  konno            MS-DOS Player の更新 2024/2/19
( 1) 24/02/20 22:06 コメント数:3
MS-DOS Player が立て続けに更新されていました。
http://takeda-toshiya.my.coocan.jp/msdos/index.html

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

2024/2/19
strcpy_s()で、指定したバッファ長よりも長い文字列をコピー元として指定したときに、
例外0xc0000417が発生することがあるようです。
ひとまずstrncpyで処理をするように対策をいれました。

2024/2/18
cracyc様のforkから、更に修正を取り込ませていただきました。
INT 67h, AX=5B00h/5B01h/5B04hについて、BHに00h以外を指定したときにエラーを返すようにしました。
MDA(Monochrome Display Adopter)をサポートしました。
その代わりに、コンベンショナルメモリの上限がB8000hからB0000hとなり、32KBだけ減少しています。
(それでも、VGAのVRAMがない分だけ、通常の環境より64KB大きいのですが)
CRTC, Status Registerも、MDAのアドレスでアクセス出来るようにしたのと、同期信号を50Hzにしました。

2024/2/15
cracyc様とroytam様のforkから、修正を取り込ませていただきました。
FCBを使ったファイルアクセスと、MAME版i386コアのFPU周りの例外の修正などです。
また、MAME版i386コアのDAA/DAS/AAA/AAS/AAM/AAD命令を、DOSBoxの実装を基に修正しました。
Pentium4版で、testi386.exeが実機と同じ結果が得られるようになっています。

NP21/WのI386コアを、ver0.86 rev92 beta2相当に更新しました。
また、ビルド時のワーニングが出ないように修正しました。

環境変数のアクセス時に、正しくない環境テーブルを参照したときのチェックを強化しました。
最近のビルドでtesti386.exeが動かなくなっていた問題が解決しています。
メモリアクセスの処理を効率化しました。
基本メモリ、拡張メモリ、予約領域(VRAMなど)の順に、少ない条件分岐でアクセスできるようにしています。
微妙に処理速度が上がっているかもしれません。

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

主にメモリやCPU関係の修正のようです。
処理速度が上がっていたらうれしいですね。
作者様に感謝します。


11097/11097 BQO00549  konno            素数を表示、カウントするテスト
( 1) 24/02/20 23:45 コメント数:3
TurboBasicで素数を表示、カウントするテストプログラムを作りました。
DOSVAXJ3 や MS-DOS Player の JP モードで動きます。

自己流で考えて作ったので間違いがある可能性はあります。
指定範囲は20から 10万まです。配列数や時間的な限界がこの辺ということで。
一応、1000 までは 合っていました。

Wikipediaを見ると
--------------------------------------------------------------------------
最も素朴な方法は、2 から √n 以下の素数まで順番に割っていく、試し割り法と呼ばれる方法である。
n が √n 以下の全ての素数で割り切れなければ n は素数である。
試し割り法は、n が大きくなるに従って、急速に速度が低下するため、実用的ではない。
--------------------------------------------------------------------------

私が考えた方法は、どうやらこの方法と同じようですね。
1万を超えると急速に速度が落ちて、10万くらいが限界のようなので。(^^;


  SOSU4.EXE Ver.240220

・DOSVAXJ3 の VGAで動く 素数表示テストです。
・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、SOSU4.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにすれば動作します。
・VTDOS では動作しません。
・ソースも付けます。
・1000までは合っていると思いますが、それ以上は保証できないので表示しません。
・1000を超えたら 数字や時間情報を SOSU.DAT に追加出力します。
・数字が大きくなると急速に速度が落ちるので、初めは 100くらいから始めてください。

・更新履歴
2024-02-20 公開用に色々弄りました。
2024-02-17 とりあえず作成?

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

自作、改作アプリの放置部屋に置きました。
http://tamaneko.world.coocan.jp/execom.htm


11098/11098 BQO00549  konno            ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/22 01:27 コメント数:3
ハノイの塔マクロ HANOI.DEF を改造しました。
オリジナルは、T.Tanomura さんの名作です。作者様に感謝です。


===== hanoi_k.def ハノイの塔 =====

; ハノイの塔マクロ HANOI.DEF
; (VZ Editor version 1.5/1.6 共通)
; (C) T.Tanomura, 1992/7/5, 1994/7/31
; h.konno 2024-02-22 円盤の枚数 1〜15 に改造、速度アップ


【機能】
 ハノイの塔の問題を解きます。

【用法】
 編集モードで起動し、円盤の枚数として 1〜15 の数を入力してください。
ハノイの塔の問題を知らない方は、最初は 3 にするといいでしょう。

【補足】
 'Q' を押すと、中止になります。★##k
 'G'(=go)を押すと、残りの移動を一気に行います。
 マクロの連続実行を中止するには [ESC] を押せば止まります。★##k
 マクロを中断したり実行後おかしくなったらオプション初期化してください。
 改造して速度が倍近く上がっています。(当社比)★

下のリンクをクリックすると hanoi_k.def のソースが表示されます。
当社の新リンク機能です。(^_^)

#txt:hanoi_k.def



11099/11099 BQO00549  konno            オートリンクで新機能 ファイルへのリンク
( 1) 24/02/22 17:37
BBSのオートリンク機能を応用して新リンク機能が出来ました。(^_^)
#11098 で使っています。

ソースは、wforum.cgi の最後の方

#--------------#
# 自動リンク #
#--------------#
sub auto_link {

# #txt:FILE text macro doc etc
$_[0] =~ s/(^|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]|[^0-9a-zA-Z\/\#\"]+)#txt:([A-Za-z0-9_-]+\.[A-Za-z0-9]+)/$1<a href='http:\/\/tamaneko.world.coocan.jp\/bbs\/count\/count.cgi?mode=download;target=http:\/\/tamaneko.world.coocan.jp\/vz\/$2' title='Text'>#txt:$2<\/a>/g;

このように、サーバーのフォルダに置いたファイル名を指定すれば $2 の変数に置き換えて表示出来ます。
書式は

#txt:ファイル名

この機能を実現することでいくつかのメリットがあります。

・長いソースファイルも5文字のコマンド+ファイル名の直リンクで手軽に見ることができる。
・長いソースを張り付けて掲示板の閲覧性を損ねることを防げる。
・長いソースを張り付けてコピペするよりこのリンクを右クリックで即ファイル保存のほうが楽かも。
・長いソースやドキュメント類を見たくない人にも優しい。
・リンク済みのファイルは誰でも記事中に直リンクして手軽に参照できるので便利。
・手持ちのソースやドキュメント類を記事中で参照希望のメール送付等は前向きに検討します。
・オートリンクにカウンタを仕込んであるので閲覧数を確認できる。

この機能を思いついた動機は、上に書いていますが、本当は個人的趣味で不純なので内緒。(^^;

この機能が便利だと思ったらぜひとも他の掲示板でも採用願いたいです。(^^;


11100/11098 CXB00940  としき           Re: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 00:33 11098へのコメント(konnoさん) コメント数:2
参照先:http://toshiki.la.coocan.jp/
> ハノイの塔マクロ HANOI.DEF を改造しました。
> オリジナルは、T.Tanomura さんの名作です。作者様に感謝です。

実行してみました。gコマンドの速度は速いですね。
ただ、画面の表示が正しくないです。何が悪いのかな。
konnoさんのところではきちんと表示されているのでしょうから、私の環境かな。
Tanomuraさんのマクロは、正しく表示されています。

で、まぁ、マクロコードを読もうとしたのですが。
あきらめました。
なぜって、コードとコメントの混在で。
一応、読もうと努力はしたんですよ。
だけど、例えばコードの最初のほう、属性などのいくつかの変数をプッシュする
コードがコメントアウトされていて、でもその理由が明記されているわけでもなし、
明記せずとも暗黙で理解できるようなコードでもなし。
まぁ、コード本体というか内部ではこれらの属性が変更されていないからプッシュ
されていないのだろうな、とは想像できますが、ならばなぜ、わざわざ記載した
上でコメントアウトされているのか、全くの謎。
おそらく、konnoさん的にはこういうコードが理解しやすいのでしょう。
でも、申し訳ない、私は脱落しました。
もっとも、世の中には、いわゆる「汚いコード」というのがいくらでもあって、
そういうのに比べればkonnoさんのコードは、まだまし、といったところでしょう。


11101/11098 DGF01024  めざら           Re: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 08:45 11098へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
実行してみたところ,数回の移動でコマンドラインに降り,最終的に VZ が落ちました。
(「落ちた」は正確ではなく,VZの子プロセスから離脱……かな。戻れず強制終了。)

まず,最初にきれいに積み上がっていないです。

次のコードがあります……
#E #m #[ &k
……が,実行中にコマンドラインに降りるのは何故なのですか?
ここの意図についてコメントがないので,想像もつきませんが……

11102/11098 DGF01024  めざら           Re^2: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 11:29 11100へのコメント(としきさん) コメント数:2
参照先:http://mezala.la.coocan.jp/
> なぜって、コードとコメントの混在で。

(外野の言い訳になってしまうけれど)他の方のプログラムを改造する場合,
わたしも元の行をコメントアウトした上で,改造コードを記載してしまいます。
「ここをこうしたよ」ということを明示しているつもりなんですよね。
そういうのは,プログラミングに慣れた人には嫌われるのでしょうか。

田野村さんはタブを使わず4字下げだったので,それをそのまま行にコメントすると,
字下げが4の倍数にならずにグチャグチャした印象を与えてしまいますね。

> 属性などのいくつかの変数をプッシュするコードがコメントアウトされていて、
> でもその理由が明記されているわけでもなし、

グローバル変数のプッシュ/ポップの辻褄を合わせる努力をするよりも,
ローカル変数にしてしまえば他に影響はないという考え方なのでしょう。

ただ,はっきり言ってしまうと,典型的な「スパゲティ」になっているコードを
改善する気がない表明とも受け取られかねないわけで,見た目の印象以上に
コードを追う気力を失わせることはままあることかもしれないと思います。(自省)

上記は,自分への反省とか注意喚起という意味あいの方が強いかもしれません。

それより,わたしがちょっと引いたのは,
「マクロを中断したり実行後おかしくなったらオプション初期化してください。」
かな。

中断が予想される場合は,その処理を入れておくのがふつうかなと思います。
(まぁ,&k で拾う場合は終了処理が無理なことも多いんですけどね。)

11103/11098 BQO00549  konno            Re^2: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 13:21 11100へのコメント(としきさん) コメント数:1
> 実行してみました。gコマンドの速度は速いですね。
> ただ、画面の表示が正しくないです。何が悪いのかな。
> konnoさんのところではきちんと表示されているのでしょうから、私の環境かな。

試していただきありがとうございます。
画面表示は具体的にはどんな感じになるのでしょうか。

> Tanomuraさんのマクロは、正しく表示されています。

Tanomuraさんのマクロの回数の数字だけ増やしても80*25画面で平気で動作しますね。
環境に左右されないようしっかり作られているのは流石です。

> で、まぁ、マクロコードを読もうとしたのですが。
> あきらめました。
> なぜって、コードとコメントの混在で。

す、すみません、公開するなら修正前の不要なコメントは消すべきでしたね。
修正して差し替えます。m(__)m


11104/11098 BQO00549  konno            Re^2: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 13:41 11101へのコメント(めざらさん)
> 実行してみたところ,数回の移動でコマンドラインに降り,最終的に VZ が落ちました。
> (「落ちた」は正確ではなく,VZの子プロセスから離脱……かな。戻れず強制終了。)

げげ、これはヤバいですね、オプション絡みでしょうか。
スタートして直ぐと終了時に時間計測のためにコマンドラインに降りていますが
移動中は関係ないし、もしかして EP かなぁ。
時間計測部分はコメントにします。

> まず,最初にきれいに積み上がっていないです。
オリジナルで問題無いなら何かのオプションの影響ではないかと思いますが・・・

> #E #m #[ &k
> ……が,実行中にコマンドラインに降りるのは何故なのですか?
> ここの意図についてコメントがないので,想像もつきませんが……

上に書いたように時間計測のために追加したのをそのままにしていました。
プロンプトを $t$p$g にして時間表示させ、マクロの実行時間を測定しています。
これが悪さをしている可能性があるのでこの部分はコメントにします。
不完全なままアップしてすみませんでした。m(__)m


11105/11098 CXB00940  としき           Re^3: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 13:42 11102へのコメント(めざらさん)
参照先:http://toshiki.la.coocan.jp/
めざらさんのところでも同じようですが、うちも最初が正しく積みあがっていません。

> わたしも元の行をコメントアウトした上で,改造コードを記載してしまいます。
> 「ここをこうしたよ」ということを明示しているつもりなんですよね。
> そういうのは,プログラミングに慣れた人には嫌われるのでしょうか。

コメントアウトされているのが全て改造前、ということがわかれば私はOKです。
それでも見づらいことは見づらいので、プログラミングに慣れた多くの人は嫌う
かもしれない。
概ね、プログラミングの世界では、例えばバグの混入を避けるなどの目的で、可読性
というものが重視されます。これもある種の理想論なんで、現実にはメモリ量とか
速度とかを目的として最適化というものも行われますが、でも最適化は最後の段階。
実際、遅いのはアルゴリズムが悪いことが多いので、アルゴリズムの見直しを行い、
それでも所要の性能が出ない場合に最適化する、というのが通常の段取り。

そういう潮流なので、コードが読みやすいことが尊ばれるのですよ。
ある種、読みやすさは正義、みたいな。
そして、読みやすくするためにはどうするか、という様々な研究もあって。
その中に、余分な情報は少なければ少ないほうが良い、というのもあります。
余分な情報は正しい認識を阻害する、ということから、私は迷彩という表現を使って
います。そして、このコードは何をする、というコメントなら多くの場合問題はない
のですが、旧のコードと新のコードが並列されていて、単にコメントアウトされて
いるだけ、という場合、混乱を招きやすいのではないかなぁ。
だって、行の途中を読んでいて、その行がコメントであるか確認するために行の先頭
に視線を戻して、という手間が発生するので、少なくとも私には心理的負担。

あるいは、例えばウィルスなんかだと「コードの難読化」なんていう技術が使われて
いたりします。つまり、わざと読みづらくすることにより、どういう挙動を示すか
わからないようにしているのですが、だから一部の口の悪いプロのプログラマーは
「そんなウィルスのようなコードを書くな」
などと後輩に指導して、もはやこの表現はパワハラ案件だという冗談もあるくらい。

> > 属性などのいくつかの変数をプッシュするコードがコメントアウトされていて、
> > でもその理由が明記されているわけでもなし、
> グローバル変数のプッシュ/ポップの辻褄を合わせる努力をするよりも,
> ローカル変数にしてしまえば他に影響はないという考え方なのでしょう。

すごい、きちんと読まれたのですね。
もう私、プッシュポップをしていないということは、これらは内部では使われて
いないんだ、というところでそれ以上読むことをあきらめていました。

> それより,わたしがちょっと引いたのは,
> 「マクロを中断したり実行後おかしくなったらオプション初期化してください。」
> かな。

私は逆というか、この表現を見た瞬間、画期的だと思いました。
積極的にオプションを初期化するって発想がなかったもので。
でも、過去の多くのコードを見てきためざらさんがそういう反応をするということ
は、これはいわゆるマクロ師的には邪道なのかもしれませんね。


11106/11098 CXB00940  としき           Re^3: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 13:50 11103へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
まず、うちの環境では、めざらさんのところと違い、落ちたことは一度もありません。

> 画面表示は具体的にはどんな感じになるのでしょうか。

円盤が3枚のときの初期画面。(右側省略)


■■
■■■
~~~~~~~~~~~~~~~~~~~

円盤が3枚のときのgコマンドでの終了画面。(右端まで)

■ ■
■■
■■■■■■ ■■■
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

円盤の表示位置が正しくないようですが、空白での上書き消去は正しく行えているので
ゴミが残っている、というようにも見えます。


11107/11098 BQO00549  konno            Re^3: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 14:03 11102へのコメント(めざらさん)
> (外野の言い訳になってしまうけれど)他の方のプログラムを改造する場合,
> わたしも元の行をコメントアウトした上で,改造コードを記載してしまいます。
> 「ここをこうしたよ」ということを明示しているつもりなんですよね。

そのとおりなんですが、私の場合統一性が無く文字通りぐちゃぐちゃになってました。
流石にこのままアップしたのは不味かったですね。m(__)m

> 田野村さんはタブを使わず4字下げだったので,それをそのまま行にコメントすると,
> 字下げが4の倍数にならずにグチャグチャした印象を与えてしまいますね。

これは公開を考えたら統一するべきでしたね、修正します。m(__)m

> > 属性などのいくつかの変数をプッシュするコードがコメントアウトされていて、
> > でもその理由が明記されているわけでもなし、

修正前のコードをコメントして残すなら理由を明記するべきでしたね。

> グローバル変数のプッシュ/ポップの辻褄を合わせる努力をするよりも,
> ローカル変数にしてしまえば他に影響はないという考え方なのでしょう。

そのとおりですが、実際には不具合が出たようで、難しいですね。

> ただ,はっきり言ってしまうと,典型的な「スパゲティ」になっているコードを
> 改善する気がない表明とも受け取られかねないわけで,見た目の印象以上に
> コードを追う気力を失わせることはままあることかもしれないと思います。(自省)

m(__)m m(__)m m(__)m

> それより,わたしがちょっと引いたのは,
> 「マクロを中断したり実行後おかしくなったらオプション初期化してください。」
> かな。
> 中断が予想される場合は,その処理を入れておくのがふつうかなと思います。

中断とは、マクロを Ctrl Break などで強制的に止めるという意味だったのですが
このマクロは止まらないみたいですね。
なので、中止のコードを追加したのですが、そうするとプッシュポップの辻褄が合わなくなります。
変なところにポップしてメモリを壊すよりは変数保存のプッシュポップをやめるのがいいかと。
プッシュポップの辻褄が合わなくてもマクロを終了したら SP は初期化するかな。
と思ったのです。

不要なコメントを整理してコードも見直しますのでしばしお待ちください。m(__)m


11108/11098 BQO00549  konno            Re^4: ハノイの塔マクロ HANOI.DEF の改造
( 1) 24/02/23 14:52 11106へのコメント(としきさん)
> > 画面表示は具体的にはどんな感じになるのでしょうか。
>
> 円盤の表示位置が正しくないようですが、空白での上書き消去は正しく行えているので
> ゴミが残っている、というようにも見えます。

げげ、これはひどいバグですね。すみませんでした。m(__)m
80*25の画面でスペースがはみ出てしまってますね。
途中で数値変更して確認していませんでした。お恥ずかしい。m(__)m

諸々修正して再アップします。しばしお待ちください。m(__)m


11109/11098 BQO00549  konno            ハノイの塔マクロ 改造差替え版
( 1) 24/02/23 18:09 11098へのコメント(konnoさん) コメント数:2
ハノイの塔マクロ HANOI.DEF 改造の差し替え版です。
オリジナルは、T.Tanomura さんの名作です。作者様に感謝です。

バグバグの物を上げてしまいすみませんでした。m(__)m
コメントも整理しました。
これでめざらさんのところで問題なく動きますように。(-人-)


下のリンクをクリックすると hanoi_k.def 差替え版のソースが表示されます。

#txt:hanoi_k.def



11110/11098 DGF01024  めざら           Re: ハノイの塔マクロ 改造差替え版
( 1) 24/02/23 21:03 11109へのコメント(konnoさん) コメント数:1
参照先:http://mezala.la.coocan.jp/
ふつうに実行できました。

結局,何が問題だったのか分からないままでしたが……

11111/11098 BQO00549  konno            Re^2: ハノイの塔マクロ 改造差替え版
( 1) 24/02/23 23:27 11110へのコメント(めざらさん) コメント数:1
> ふつうに実行できました。
> 結局,何が問題だったのか分からないままでしたが……

問題なさそうで、ホッとしました。(^^;
コマンドラインに降りたのがまずかったと思い、EP0 にしたくらいですが
多分違いますよね。(^^;
ともあれ良かったです。(^_^)


11112/11098 CXB00940  としき           ゾロ目を踏んだのはやっぱり管理人
( 1) 24/02/23 23:48 11111へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
いや、ほとんどT/Oで申し訳ない。
酔ってるもんで。

11113/11098 BQO00549  konno            Re: ゾロ目を踏んだのはやっぱり管理人
( 1) 24/02/24 00:08 11112へのコメント(としきさん)
> いや、ほとんどT/Oで申し訳ない。
> 酔ってるもんで。

あ、全然気が付きませんでした。(^^;

おめでとうございます。(って、自分に言うか)


11114/11098 CXB00940  としき           Re: ハノイの塔マクロ 改造差替え版
( 1) 24/02/26 01:37 11109へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> ハノイの塔マクロ HANOI.DEF 改造の差し替え版です。

やっと試すことができました。
きれいに動いています。
ただ、うちでは、マシンのせいなのか、konnoさんのところほどTanomura版との差は
大きくなっていません。12枚で、Tanomura版だと45秒強、konno版だと35秒弱、
といったところです。
なお、実行したのはVTDOS、画面サイズは横80桁、縦50行です。
でも、konnoさんのところでは、画面サイズで実行速度が変わる、というのは面白い
ですね。速度が画面サイズに依存しないようにする、という改造もいいかも。

11115/11097 CXB00940  としき           Re: 素数を表示、カウントするテスト
( 1) 24/02/26 13:22 11097へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> TurboBasicで素数を表示、カウントするテストプログラムを作りました。

中身を見させていただきました。
どうも解せない部分がいくつか。
冒頭、「DEFINT A-Z」と宣言されています。
これはいわば、ある意味お約束のようなものかもしれません。
でも、実際にコードの中で使っている変数は、整数の範囲外までサポートするため
実数型。だもので、いちいち実数指定の「!」が必要になっています。
これ、冒頭の整数宣言を外してしまったほうがよくありませんか?
コード全体をざっくり見た範囲で、整数型の変数は末尾の時間計測ルーチンで使って
いる変数ぐらい。なら、こちらのほうに整数指定をするほうがいいような。

で、尻尾から見ていって。
9050行、もしIERLが10000より大きければ、THENそのとき10000となっていますが、
THEN直後の数値はその行番号へのジャンプ。でも10000行ってないのですが、これで
いいのですか?
って、これ、コメント文になっているぅ〜!
またぞろ、konnoさんお得意の迷彩にやられちまったぜ。

9030行、「RESUME 9032」となっていますが、RESUME文て指定した行番号に処理を
飛ばす、という挙動だったはず。この処理系ではその他の副作用があるかもしれない
のですが、このステートメント、本当に必要ですか?
あ、ERRとERLがクリアされてしまうとかあるのかな。
であってもなくても、わざわざIERRとIERLに代入せず、そのまま表示してしまえば
余分な変数も使わずに済むし、コードはよりシンプルになる気がする。
ま、私のような処理系の挙動を把握していない人向けのコメントは不要として、
処理系の挙動を知っている人ですら疑問を抱きそうな部分にはきちんとコメントを
つけたほうが言いと思う。

と、言うところで、根性と時間がつきました。
今日のところはそんなところで。


11116/11098 BQO00549  konno            Re^2: ハノイの塔マクロ 改造差替え版
( 1) 24/02/26 21:58 11114へのコメント(としきさん)
> やっと試すことができました。
> きれいに動いています。

無事に動いたようでなによりです。(^_^)

> ただ、うちでは、マシンのせいなのか、konnoさんのところほどTanomura版との差は
> 大きくなっていません。12枚で、Tanomura版だと45秒強、konno版だと35秒弱、
> といったところです。
> なお、実行したのはVTDOS、画面サイズは横80桁、縦50行です。

うーむ、差が少ないのは気になるところですね。私の各種環境で比較してみました。

VTDOS       org  69秒
VTDOS       kon  33秒
CKWV+VTDOS     org  63秒  80*25
CKWV+VTDOS     org  69秒  136*34
CKWV+VTDOS     kon  33秒  80*25
CKWV+VTDOS     kon  36秒  136*34
DOSVAXJ3 64    org  70秒
DOSVAXJ3 64    kon  34秒
M Player pen4_x64 org 171秒
M Player pen4_x64 kon  71秒

ckwv のが時間が掛かると思いましたがそうでもないですね。

> でも、konnoさんのところでは、画面サイズで実行速度が変わる、というのは面白い
> ですね。速度が画面サイズに依存しないようにする、という改造もいいかも。

移動のたびに &d で全画面表示しているので大画面の方が不利かと思いましたが
オリジナルでも大画面の方が遅いですね。
MS-DOS Player は画面表示が遅いのかな、また検証してみます。


11117/11097 BQO00549  konno            Re^2: 素数を表示、カウントするテスト
( 1) 24/02/26 22:12 11115へのコメント(としきさん) コメント数:1
> 冒頭、「DEFINT A-Z」と宣言されています。
> これはいわば、ある意味お約束のようなものかもしれません。
> でも、実際にコードの中で使っている変数は、整数の範囲外までサポートするため
> 実数型。だもので、いちいち実数指定の「!」が必要になっています。
> これ、冒頭の整数宣言を外してしまったほうがよくありませんか?
> コード全体をざっくり見た範囲で、整数型の変数は末尾の時間計測ルーチンで使って
> いる変数ぐらい。なら、こちらのほうに整数指定をするほうがいいような。

全くその通りです、手抜きのために既存のルーチンを stime などから寄せ集めたもので。
冒頭の「DEFINT A-Z」も、
ON ERROR GOTO 9000:DEFINT A-Z
このように、エラールーチンにくっ付いていたのをそのままにしていたのでした。

> 9050行、もしIERLが10000より大きければ、THENそのとき10000となっていますが、
> THEN直後の数値はその行番号へのジャンプ。でも10000行ってないのですが、これで
> いいのですか?
> って、これ、コメント文になっているぅ〜!
> またぞろ、konnoさんお得意の迷彩にやられちまったぜ。

これも同じで、エラー処理が無いといきなり終了するので、とりあえず張り付けたのでした。
としきさんは、TAGLIGHT.EXE はお使いではないですか。
コメントなどが色分けされて非常に見やすくなります。って言い訳。

> 9030行、「RESUME 9032」となっていますが、RESUME文て指定した行番号に処理を
> 飛ばす、という挙動だったはず。この処理系ではその他の副作用があるかもしれない
> のですが、このステートメント、本当に必要ですか?
> あ、ERRとERLがクリアされてしまうとかあるのかな。
> であってもなくても、わざわざIERRとIERLに代入せず、そのまま表示してしまえば
> 余分な変数も使わずに済むし、コードはよりシンプルになる気がする。
> ま、私のような処理系の挙動を把握していない人向けのコメントは不要として、
> 処理系の挙動を知っている人ですら疑問を抱きそうな部分にはきちんとコメントを
> つけたほうが言いと思う。

これも同じ手抜きで、以下同文。m(__)m


11118/11096 BQO00549  konno            素数計算 SOSU4で MS-DOS Playerの速度計測
( 1) 24/02/26 23:05 11096へのコメント(konnoさん)
MS-DOS Player の更新でメモリ関連が速くなったかもしれないので、
素数計算 SOSU4 で、各CPUのエミュレーション速度を計測してみました。


23-12-14版 24-02-19版
PC1 MS-DOS Player 231214 PC1 MS-DOS Player 240219

ia32_x64 ia32_x64
Number = 10000 0: 0' 3 Number = 10000 0: 0' 2
Number = 20000 0: 0' 9 Number = 20000 0: 0' 6

pentium4_x64
無し Number = 10000 0: 0' 5
Number = 20000 0: 0'14

i486_x64 i486_x64
Number = 10000 0: 0' 4 Number = 10000 0: 0' 2
Number = 20000 0: 0'14 Number = 20000 0: 0'14

i386_x64 i386_x64
Number = 10000 0: 1'40 Number = 10000 0: 1'39
Number = 20000 0: 5'31 Number = 20000 0: 5'27

i286_x64 i286_x64
Number = 10000 0: 0'45 Number = 10000 0: 0'50
Number = 20000 0: 2'29 Number = 20000 0: 2'42

v30_x64 v30_x64
Number = 10000 0: 0'43 Number = 10000 0: 0'45
Number = 20000 0: 2'21 Number = 20000 0: 2'30

ia32_x86 ia32_x86
Number = 10000 0: 0' 3 Number = 10000 0: 0' 3
Number = 20000 0: 0' 9 Number = 20000 0: 0' 9

pentium4_x86
無し Number = 10000 0: 0' 6
Number = 20000 0: 0'20

i486_x86 i486_x86
Number = 10000 0: 0' 6 Number = 10000 0: 0' 6
Number = 20000 0: 0'18 Number = 20000 0: 0'18

i386_x86 i386_x86
Number = 10000 0: 2' 4 Number = 10000 0: 2'13
Number = 20000 0: 6'51 Number = 20000 0: 7'22

i286_x86 i286_x86
Number = 10000 0: 0'47 Number = 10000 0: 0'56
Number = 20000 0: 2'33 Number = 20000 0: 3' 6

v30_x86 v30_x86
Number = 10000 0: 0'36 Number = 10000 0: 0'45
Number = 20000 0: 2' 2 Number = 20000 0: 2'28


こうしてみると、新しい版が少し速くなっているようですね。
でも i286 以下では逆に旧版より遅くなっているような。
計算式のアルゴリズムとの相性もあるかもです。
私が間違えてる可能性もあります。

i386 以下は CPU エミュレーション率が高いのか、遅くなっていますが
特に i386 が突出して遅いのが気になります。

CPUエミュレーションのルーチンはいくつか種類があると思いますが、
速さより正確さを優先した結果ということでしょうか。
うーん、この結果を武田さんに送ってみようかなぁ。

新しい版の ia32_x64 がメモリ速度では良さそうですね。
みなさん、CPUを選ぶときはこの表も参考にしてね。


11119/11097 CXB00940  としき           Re^3: 素数を表示、カウントするテスト
( 1) 24/02/27 23:55 11117へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
私のようなずぼらと違って、konnoさんはまめな人なのか。
私の場合、何回も登場する実数型変数にいちいち型指定の接尾辞をつけるくらいで
あれば、何とかしてそれを省略できる方法を考えたりするわけですよ。打鍵数の節約
を含めて。そして、DEFINTの型指定範囲をどうにかできないか、というのが最初の
候補になる。
あるいは、konnoさんは昔の遅いインタプリタ時代のBASICに苦しめられた経験が
少ない、とか。
少しでも速度を稼ごうと思ったら、ループの中で多用される変数を整数型にする、
というのは基本として、もし実数型不可避となったら、短い変数名にしたり、とか、
いちいち型指定の接尾辞をつけずに済ませようとしたり、とか考えるわけです。
今回のコンパイラでは大丈夫、と読みきってそうしているのであれば、私の言って
いることは余計なお世話なので、大変申し訳ない。

手抜きというか楽をするために既存のルーチンをかき集める、というのは私もよく
やるし正しい行いだとは思いますが、でも、寄せ集めのそれらのルーチンがそれぞれ
何をやっているか把握しないでただくっつけるだけだと、しつこく取れないバグの
巣窟になることが多い。それはあとからボディブローのように効いてきて、トータル
では全く楽にならない、むしろ複雑になる、というのが非常によくある結末。
やっぱりkonnoさん、深層心理では楽をすることを嫌っているとしか思えない。
私のように、骨の髄まで楽をする事を考える人間とは大違い。
あるいは、バグが取れたという結果よりもバグ取りという過程のほうが好き、とか。
世間一般の多くのプログラマは、コーディングが楽しいとか完成してきちんと動いた
ときに満足感を感じる、という人のほうが多いらしいし、私もそうなのですが、何が
楽しいかなんていうのは当然ながら人それぞれ。
いつまでたっても動かないプログラムを永遠にデバッグしているのが楽しい、という
人がいたっておかしくないし、実際にkonnoさんのコードを見ると、konnoさんは
そういうタイプに見える。
プログラムが簡単に完成したらつまらないんでしょう。

TAGLIGHTは、HTMLの編集が楽になりそうなんで気にはなっているんですけどね。
色物はあんまり好きではないんですが、導入したほうがいいかなぁ。
でも、最終的なプログラムコードは、そういうものに依存するべきではないと思う。
ま、これは私の個人的な意見なんで、異論は認める。
私、昔はBASICだったし、あるいはポケ3でコードを組んでいたこともあって、白黒
がデフォルト。紙とペンでコーディングするときも、せいぜい赤ペン止まり。
プロのプログラマだと、紙とペンでコーディングする場合でも多色のマーカーを
使っていた、なんていう話は聞いたことがあります。
だから、以下のような替え歌ができたんだ、そうです。

 胸につけてるマーカーで修正
 自慢のデバッガでバグを撃つ
 派遣の会社から僕らのために
 来たぞ我らのプログラマー

20年とか30年前に聞いた歌詞なんで、もはやうろ覚え。
元歌に沿って、替え歌のほうも3番とか4番まであったはず。
上記の1番も、1行目はたぶん間違いないと思うけど、2行目以降はかなり妖しい。
だからなんだ、という話ですが。


11120/11097 BQO00549  konno            素数表示、カウント SOSU5.EXE 更新
( 1) 24/02/28 00:47 11097へのコメント(konnoさん) コメント数:2
TurboBasicで素数を表示、カウントするプログラム SOSU5 に更新しました。
DOSVAXJ3 や MS-DOS Player の JP モードで動きます。

自己流で考えて作ったので間違いがある可能性はあります。
指定範囲は20から 30万まです。配列数や時間的な限界がこの辺ということで。
一応、300000 までは 合っていると思います。

今回指定数を3倍までにし、速度アップもしました。
起動時オプションで動作変更できます。


SOSU5.ZIP サイズ 30297bytes  24-02-27 new!

  SOSU5.EXE Ver.240227

・DOSVAXJ3 の VGAで動く 素数表示テストです。
・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、SOSU4.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにすれば動作します。
・VTDOS では動作しません。
・ソースも付けます。
・300000までは合っていると思いますが時間が掛かりすぎるので注意。
・数字や時間情報を SOSU.DAT に追加出力します。
・起動時オプション 1 で S000.DAT に素数を出力します。
・起動時オプション 2 で 表示もファイル出力もしません。カウントのみ。
・数字が大きくなると急速に速度が落ちるので、初めは 100くらいから始めてください。

・更新履歴
2024-02-27 V5 バグ取りや速度アップやファイル出力など。
2024-02-20 V4 公開用に色々弄りました。
2024-02-17 V1 とりあえず作成?

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

http://tamaneko.world.coocan.jp/execom.htm



11121/11097 BQO00549  konno            Re^4: 素数を表示、カウントするテスト
( 1) 24/02/28 01:23 11119へのコメント(としきさん) コメント数:1
> 私のようなずぼらと違って、konnoさんはまめな人なのか。

逆に私はずぼらで、としきさんはマメな人だと思っていました。

> 私の場合、何回も登場する実数型変数にいちいち型指定の接尾辞をつけるくらいで
> あれば、何とかしてそれを省略できる方法を考えたりするわけですよ。打鍵数の節約
> を含めて。そして、DEFINTの型指定範囲をどうにかできないか、というのが最初の
> 候補になる。

昔は私もそういうことを考えていた気がします。今は劣化して考えられなくなっただけかも。

> あるいは、konnoさんは昔の遅いインタプリタ時代のBASICに苦しめられた経験が
> 少ない、とか。

としきさんには私はそう見えるわけですね。
私は私なりに遅いインタプリタでいかに処理速度を上げるかで必死だったんですけどね。
そのために「スーパーBASIC」という本を買って、色々参考にした覚えがあります。

> 少しでも速度を稼ごうと思ったら、ループの中で多用される変数を整数型にする、
> というのは基本として、もし実数型不可避となったら、短い変数名にしたり、とか、
> いちいち型指定の接尾辞をつけずに済ませようとしたり、とか考えるわけです。

昔はそういう考えが基本的にあったと思います。今は何も考えていないですね。(^^;

> 今回のコンパイラでは大丈夫、と読みきってそうしているのであれば、私の言って
> いることは余計なお世話なので、大変申し訳ない。

コンパイラになって、変数名の長さとか関係なくなってあまり気にしなくなったのはあります。

> 何をやっているか把握しないでただくっつけるだけだと、しつこく取れないバグの
> 巣窟になることが多い。それはあとからボディブローのように効いてきて、トータル
> では全く楽にならない、むしろ複雑になる、というのが非常によくある結末。

確かにその通りですが、私はとりあえず動くのを優先に考えてしまう癖があるようです。

> やっぱりkonnoさん、深層心理では楽をすることを嫌っているとしか思えない。

これは無いと思いますが、そう見えるのですか。

> 私のように、骨の髄まで楽をする事を考える人間とは大違い。

私にはそうは見えなかったり、考え方が人それぞれなゆえですかね。

> あるいは、バグが取れたという結果よりもバグ取りという過程のほうが好き、とか。

私はバグが無い方がいいし、バグ取りは基本嫌です。

> いつまでたっても動かないプログラムを永遠にデバッグしているのが楽しい、という
> 人がいたっておかしくないし、実際にkonnoさんのコードを見ると、konnoさんは
> そういうタイプに見える。

見え方は人それぞれですから、しかたがないですね。

> プログラムが簡単に完成したらつまらないんでしょう。

そういう境地になれたらいいなとは思います。絶対になれないので。

> TAGLIGHTは、HTMLの編集が楽になりそうなんで気にはなっているんですけどね。
> 色物はあんまり好きではないんですが、導入したほうがいいかなぁ。

Windowsの高機能エデイタは大抵色分け機能を持っていますね。
そういうのを使ってみたいとは思うのですが、VZの使い勝手は別格と思うので。

> だから、以下のような替え歌ができたんだ、そうです。

替え歌がさくっと出来るのもクリエイターならではですね。(^_^)


11122/11097 CXB00940  としき           Re^5: 素数を表示、カウントするテスト
( 1) 24/02/28 17:45 11121へのコメント(konnoさん)
参照先:http://toshiki.la.coocan.jp/
コードからにじみ出てくる人柄なんて当てにならない、というのが結論でしょうか。

> 逆に私はずぼらで、としきさんはマメな人だと思っていました。

この辺は相対的なものもありますがね。
親戚一同から学生時代の友人、会社での知り合いにいたるまで、他人からの評価
では、世間一般の平均からすると私はずぼらの範疇に入るらしい。マスコミなんか
の報道やネットニュースを参照することによる自己評価でも、やっぱり私はずぼら
だと思っています。
うちの父はマメな人でしたが、うちの母は
「うちの子供たちはみんな私の血を継いだ」
なんていっていて、自分でもそのとおりだと思っています。

> 昔は私もそういうことを考えていた気がします。今は劣化して考えられなくなっただけかも。

> 昔はそういう考えが基本的にあったと思います。今は何も考えていないですね。(^^;

もしかしたら、この辺がキモなのかも。
私も、最近になってプログラミングのスタイルが変わったというところはありません
けどね。かつては、特にインデントの桁数で、いろいろと変遷があったはず。
昔、N88-BASICでは、タブ幅が8桁固定で、さすがにこれは下げすぎだと思い、面倒
だったけど、空白3桁のインデントで、一生懸命スペースバーを叩いていた。
学生時代、PascalはTurboPascalと大学の大型機を使ったけど、両方でソースを統一
したくて、確かインデントは6桁。
その後、TurboCとVisualCの統合環境では、何桁だったかなぁ。
とくに、VisualCに触れたことって、ほとんど一瞬のようなものだったし。
両方とも、確か4桁だったと思うけど、全く自信なし。
その後すぐにVzに触れて、拡張子ごとにタブを4桁と8桁に設定できるようになって、
今ではこれなしにはいられない。

> 確かにその通りですが、私はとりあえず動くのを優先に考えてしまう癖があるようです。

あ〜、なんとなくわかるような。
なんと言えばいいかな。
私の場合は「長期的ずぼら」とか「ライフサイクルずぼら」。
konnoさんの場合は「近視眼的ずぼら」。
なので、konnoさん、トータルでの労力がかえって増えてしまうと思う。


11123/11097 BQO00549  konno            Re: 素数表示、カウント SOSU5.EXE 更新
( 1) 24/02/29 18:45 11120へのコメント(konnoさん)
SOSU5 の速度アップとバグ取りですが、他の素数計算プログラムを参考にしました。
旧版は、一桁の素数を決め打ちでやっていました。

for i!=2 to 10
if i!=2 then gosub print1:co!=co!+1:co1%(co!)=i!
if i!=3 then gosub print1:co!=co!+1:co1%(co!)=i!
if i!=5 then gosub print1:co!=co!+1:co1%(co!)=i!
if i!=7 then gosub print1:co!=co!+1:co1%(co!)=i!
next i!

これを全部コメントにして、2だけ決め打ちにしました。
さらに、偶数チェックを FOR STEP 2 で出来ることがわかり、以下のように

i!=2:gosub print1 :co!=co!+1:co1%(co!)=i! '★ 2は素数に決め打ち
a!=0
for i!=3 to no!-1 step 2 '★ 偶数をスキップ
loop1:
' no1$=str$(i!) '★ FOR steo 2 の
' le=len(no1$) '★スキップにより
' a!=val(right$(no1$,1)) '★この4行が
' b!=int (a!/2):if b!=a!/2 then i!=i!+1:goto loop1 '★要らなくなった
gosub loop2 '
next i!

これで少し速度アップ出来たようです。

SOSU4.EXE
Number = 50000 0: 0'34 Prime Number = 5133
SOSU5.EXE
Number.50000 0: 0'32 Prime Number = 5133

うーん、誤差範囲かな。(^^;
あとは配列の見直しで、10万までだったのを30万まで拡大出来ました。
速度的にも

Number.300000 0:12'20 Prime Number = 25997

12分もかかるので、この方式はこの辺が限界ですね。(^^;
さて、次はもっと速い別のアルゴリズムにしましょう。


11124/11096 BQO00549  konno            MS-DOS Player の更新 2024/2/28
( 1) 24/02/29 19:03 11096へのコメント(konnoさん) コメント数:1
MS-DOS Player がまた更新されていました。
http://takeda-toshiya.my.coocan.jp/msdos/index.html

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

2024/2/28
INT 21h, AX=4404h/4405h/440Ahを修正しました。
BXでハンドルを指定するか、BLでドライブを指定するか、間違えて処理していました。
AX=440Ahはハンドル指定、AX=4404h/4405hはドライブ指定に修正しています。

内蔵デバッガを改良しました。
プロテクトモード時のコードページの処理を修正しました。
また実行トレースに、各命令を16bit/32bitのどちらで実行したか記録するようにしました。
(V30の場合は8080モードか否かを記録)
Uコマンド、UTコマンドで正しく命令を表示できるようになっているかと思います。

roytam様のforkを参考に、conhost-v2のクラッシュ対策を入れました。
カーソルが最後の行にあるときにウィンドウサイズを変更するとクラッシュし易いようです。
また未確認ですが、Windows NT4.0 / 2000で動作するための修正も取り込んでいます。

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

VZにはあまり影響無さそうですが、更新が続いていることに感謝します。


11125/11096 BQO00549  konno            SOSU4で MS-DOS Playerの速度計測 2
( 1) 24/02/29 19:38 11124へのコメント(konnoさん)
MS-DOS Player の更新で CPU速度の変化が気になったので、
素数計算 SOSU4 で 各CPUのエミュレーション速度計測しました。

23-12-14版 24-02-19版 24-02-28版
MS-DOS Player 231214 240219 240228

ia32_x64 ia32_x64 ia32_x64
Number = 10000 0: 0' 3 0: 0' 2 0: 0' 3
Number = 20000 0: 0' 9 0: 0' 6 0: 0'10

i486_x64 i486_x64 i486_x64
Number = 10000 0: 0' 4 0: 0' 2 0: 0' 5
Number = 20000 0: 0'14 0: 0'14 0: 0'18

i386_x64 i386_x64 i386_x64
Number = 10000 0: 1'40 0: 1'39 0: 1'56
Number = 20000 0: 5'31 0: 5'27

i286_x64 i286_x64 i286_x64
Number = 10000 0: 0'45 0: 0'50 0: 1' 4
Number = 20000 0: 2'29 0: 2'42

最新版の速度計測は手抜きですが、少し遅くなったような気がします。
条件判定などが増えたからでしょうか。


11126/11097 CXB00940  としき           Re: 素数表示、カウント SOSU5.EXE 更新
( 1) 24/03/01 01:28 11120へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
sosu5.bas を読ませてもらっています。
まだ冒頭のほうだけなんですけどね。

で、質問。
配列の確保で
dim co1%(32700)
と宣言されています。
その少しあとで入力プロンプトだと思いますが
PRINT "Prime Number (20 TO 327000)";
とあったり
if no!>327000 then inp1
となっているのですが、これはそれぞれ値は正しいのですか?
いや、似たような数値なので、ミスタイプを疑ってみました。
というか、できればこういうのは変数に定義したほうがよろしいかと。
例えば、

max=32700
dim co1%(max)
PRINT "Prime Number (20 TO "; max*10; ")";
if no!>max*10 then inp1

みたいなコードになっていれば、いらぬ疑問は招かないかと。
バグの混入も防止できるし。
アセンブラですら数値を定義して名前をつけるという機能があるのに、高級言語の
BASICでそういう機能を使わないのはもったいないと思う。
また、最近のC言語なんかでは、文法書に、この手の即値はマジックナンバーであり
使うことは悪い習慣だと書かれてしまっているらしい。そうだろうねぇ。


11127/11097 BQO00549  konno            Re^2: 素数表示、カウント SOSU5.EXE 更新
( 1) 24/03/01 23:46 11126へのコメント(としきさん)
> 配列の確保で
> dim co1%(32700) と宣言されています。
> その少しあとで入力プロンプトだと思いますが
> PRINT "Prime Number (20 TO 327000)";
> とあったり
> if no!>327000 then inp1
> となっているのですが、これはそれぞれ値は正しいのですか?

正しくはないというか、適当です。(^^;

> いや、似たような数値なので、ミスタイプを疑ってみました。
> というか、できればこういうのは変数に定義したほうがよろしいかと。

配列の数字と入力最大値とは関連はありません、たまたま同じ数値にしただけです。
なので、例題のようには出来ないです。

> バグの混入も防止できるし。
> アセンブラですら数値を定義して名前をつけるという機能があるのに、高級言語の
> BASICでそういう機能を使わないのはもったいないと思う。
> また、最近のC言語なんかでは、文法書に、この手の即値はマジックナンバーであり
> 使うことは悪い習慣だと書かれてしまっているらしい。そうだろうねぇ。

ご意見に従い、入力の最大値は max! にしてみました。
なるほど、修正が楽になりますね。
SOSU5 で最終と思っていましたが、修正ついでにもっと限界まで攻めてみました。

dim co1%(32766) ' これ以上は64Kオーバーエラー

max!=1000000
PRINT "Prime Number (20 TO ";max!;")";

最大値はもっといけるかもですが、時間的に100万までにしました。(^^;
こんどこそ打ち止めです。(^^;


11128/11097 BQO00549  konno            SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/02 00:03 11097へのコメント(konnoさん) コメント数:2
TurboBasicで素数を表示、カウントするプログラム SOSU5 に更新しました。
DOSVAXJ3 や MS-DOS Player の JP モードで動きます。

自己流で考えて作ったので間違いがある可能性はあります。
指定範囲は20から 100万まです。配列数や時間的な限界がこの辺ということで。
一応、1000000 までは 合っていると思います。

今回指定数を100万までに拡大しました。
起動時オプションで動作変更できます。


SOSU6.ZIP サイズ 30299bytes  24-03-01 new!

  SOSU6.EXE Ver.240301

・DOSVAXJ3 の VGAで動く 素数表示テストです。
・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、SOSU4.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにすれば動作します。
・VTDOS では動作しません。
・ソースも付けます。
・1000000までは合っていると思いますが時間が掛かりすぎるので注意。
・数字や時間情報を SOSU.DAT に追加出力します。
・起動時オプション 1 で S000.DAT に素数を出力します。
・起動時オプション 2 で 表示もファイル出力もしません。カウントのみ。
・数字が大きくなると急速に速度が落ちるので、初めは 100くらいから始めてください。

・更新履歴
2024-03-01 V6 指定できる最大値を100万までに拡大。
2024-02-27 V5 バグ取りや速度アップやファイル出力など。
2024-02-20 V4 公開用に色々弄りました。
2024-02-17 V1 とりあえず作成?

 動作保証はでき無いので実行は自己責任で。  
http://tamaneko.world.coocan.jp/execom.htm


11129/11097 BQO00549  konno            Re: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/03 16:48 11128へのコメント(konnoさん)
> 最大値はもっといけるかもですが、時間的に100万までにしました。(^^;

SOSU6.EXE の実行時間です。

SOSU6.EXE
Number.10000 0: 0' 2 Prime Number = 1229
Number.100000 0: 1'40 Prime Number = 9592
Number.400000 0:23'20 Prime Number = 33860
Number.600000 0:52'55 Prime Number = 49098
Number.1000000 1:52'40 Prime Number = 78498

これだけ時間が掛かりますが、他の計算プログラムと結果は一致しています。
うっかり計測開始してしまったときは、Ctrl+Break で止まる設定ならあるいは。(^^;
まあ、いざという時は DOSVAXJ3 の窓を閉じればいいんだし。(^^;


11130/11096 BQO00549  konno            MS-DOS Player の更新 2024/3/02
( 1) 24/03/04 00:07 11096へのコメント(konnoさん)
MS-DOS Player がまた更新されていました。
http://takeda-toshiya.my.coocan.jp/msdos/index.html

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

2024/3/2
INT 21h AH=43h, BL=08hが、BL=06hと同じ動作になっていた問題を修正しました。

内蔵デバッガを改良しました。
Rコマンドでレジスタ以外にフラグの値の変更もできるようにしました。
また、V30のディスアセンブラを、i386用のディスアセンブラと統合しました。
V30専用命令以外で正しく認識されない命令があったのが解決しています。
レジスタ名も標準的な名前で表示されるようになっています。

conhost-v2のクラッシュ対策の改良と、WindowsNT 3.51/4向けの修正をしています。

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

クラッシュ対策とは、最近のWindowsのIMEの問題などでしょうか。
エミュレータ作者の影の苦労がうかがわれますね。
更新に感謝です。


11131/11097 CXB00940  としき           Re: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/04 23:23 11128へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> TurboBasicで素数を表示、カウントするプログラム SOSU5 に更新しました。

N88-BASICもあらかた忘れ始めているので手元のDISK BASICのリファレンスを見ながら
ですが、TurboBasicはやっぱりかなり違うようです。
上のほうから見ていって、まず気がついたのがLOCATE文。
LOCATE 1, 26, ,1
というのがありましたが、N88では引数は3つまで。
つまり、カンマの数は2つまででした。
次がCOLOR文。
COLOR 14, 0
とありますが、N88では最初の引数は0から7までだけでした。
2番目と4番目の引数なら14も使えるようです。

あ、なんか、消し忘れのようなもの見つけてしまった。
a!=0
ってあるんですが、この変数、他では使われていないっぽい。

あ〜、なんか、N88-BASIICに移植したくなってきた。
といっても、動作環境は手元にはない。
実家にはDOS BASICはあるはずだけど、DOS BASICとDISK BASICって何が違っていたか
もう思い出せない。
ちょっと無謀だな。


11132/11048 CXB00940  としき           Re^2: としきさんの msgview 完璧なツリー
( 1) 24/03/04 23:32 11053へのコメント(としきさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> どんなチェック漏れがあるやら、想像もつきません。

いやぁ、やっぱりまだ何かおかしいですね。
#11097とか#11098からのツリーの、本来「┗」でなければいけないところがいくつか
「┣」になっていますね。
OKなところとNGなところの条件から追いかけてみましょう。
とはいえ、今日はもう終わり。
明日以降でね。


11133/11097 BQO00549  konno            Re^2: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/05 00:03 11131へのコメント(としきさん) コメント数:1
> 上のほうから見ていって、まず気がついたのがLOCATE文。
> LOCATE 1, 26, ,1
> というのがありましたが、N88では引数は3つまで。
> つまり、カンマの数は2つまででした。

Turbo Basic と TBasic のマニュアルが腐海から救い出せました。
思いもよらぬところの奥底に沈んでいました。(^^;
それによると、LOCATE 文の引数は 5個まであります。

LOCATE 縦位置,横位置,カーソル表示スイッチ,カーソル開始位置,カーソル終了位置

私がN88系と違うと思ったのは、縦と横が逆なところです。
他の構文は、横、縦なので、間違えやすいですね。MS系の歴史でしょうか。

> 次がCOLOR文。
> COLOR 14, 0
> とありますが、N88では最初の引数は0から7までだけでした。
> 2番目と4番目の引数なら14も使えるようです。

これもMS系と大きく違うところですね。
詳しくは以下略。(^^;

> あ、なんか、消し忘れのようなもの見つけてしまった。
> a!=0
> ってあるんですが、この変数、他では使われていないっぽい。

う、消し忘れてましたね。(^^;

> あ〜、なんか、N88-BASIICに移植したくなってきた。
> といっても、動作環境は手元にはない。
> 実家にはDOS BASICはあるはずだけど、DOS BASICとDISK BASICって何が違っていたか
> もう思い出せない。
> ちょっと無謀だな。

ネットには、N88系準拠のフリーなBASICもありそうです。
移植するなら、他の素数プログラムが良いと思います。
私のは全く実用的でないので。(^^;
これからアップしますね。


11134/11048 BQO00549  konno            Re^3: としきさんの msgview 完璧なツリー
( 1) 24/03/05 00:07 11132へのコメント(としきさん) コメント数:1
> #11097とか#11098からのツリーの、本来「┗」でなければいけないところがいくつか
> 「┣」になっていますね。

見てみましたが、これは正しいツリーだと私は思います。
うちのツリーは横幅を狭くしたくて見た目がいまいちなのです。(^^;


11135/11135 BQO00549  konno            TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/05 00:40 コメント数:2
TurboBasicで素数を表示、カウントするプログラム PRIME2.EXE です。
元にしたのは、十進BASIC に入っていた サンプルソースです。

https://hp.vector.co.jp/authors/VA008683/
ここのダウンロードページの Windowsアーカイブ版の中の
 BASIC7868.zip (1,292,876バイト)を落として展開すると
Mathフォルダがあり、その中にある
PRIME.BAS  319bytes
を Turbo Basic で動くように改造しました。

特徴は、処理が非常に速く、桁数の制限がほぼ無いことです。
DOSVAXJ3 や MS-DOS Player の JP モードで動きます。

自己流で改造したので間違いがある可能性はあります。
指定範囲は20から 1億までにしました。
起動時オプションで動作変更できます。


PRIME.ZIP サイズ 30299bytes  24-03-01 new!

  PRIME2.EXE Ver.240301

・DOSVAXJ3 の VGAで動く 素数表示テストです。
・DOSVAXJ3 を起動したら、chev jp でVGAモードにして、PRIME2.EXE を起動してください。
・MS-DOS Player では、chej jp でVGAモードにすれば動作します。
・VTDOS では動作しません。
・ソースも付けます。
・20000000までは実行できると思います。
・数字や時間情報を SOSU.DAT に追加出力します。
・起動時オプション 1 で P000.DAT に素数を出力します。
・起動時オプション 2 で 表示もファイル出力もしません。カウントのみ。
・起動時オプション 100以上で 指定した数字で間欠カウント表示。若干速くなるかも。
・数字が大きくなると時間が掛かるので、初めは 1000くらいから始めてください。

・更新履歴
2024-03-03 V2 バグ取りやファイル出力やオプション追加など。
2024-02-27 V1 とりあえず作成

 動作保証はでき無いので実行は自己責任で。  
http://tamaneko.world.coocan.jp/execom.htm


11136/11048 CXB00940  としき           Re^4: としきさんの msgview 完璧なツリー
( 1) 24/03/05 12:06 11134へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 見てみましたが、これは正しいツリーだと私は思います。

あれ?
うちとkonnoさんのところでは、表示のされ方が違うのかな?
そんなことはないと思うけど。

たとえば、#11097から始まるツリーの#11117とか#11126が、本来は「┗」でなければ
いけないけれど「┣」になっているように見えます。
これ、konnoさんのところでは正しく「┗」になっているのか。
それとも私の勘違いで「┣」が正しいのか。
ちょっと混乱しています。


11137/11135 CXB00940  としき           Re: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/05 13:22 11135へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 自己流で改造したので間違いがある可能性はあります。

プログラムの中身はぜんぜん読めていませんが。

> ・起動時オプション 1 で P000.DAT に素数を出力します。
> ・起動時オプション 2 で 表示もファイル出力もしません。カウントのみ。

ソースリスト冒頭のコメントで

' IF DSP=1 THEN print '画面出力
' IF DSP=1 THEN print out dat 'ファイル出力
' IF DSP=2 THEN no print 'カウントのみ

となっているのですが、これはコメントが間違っているのかな。


11138/11097 CXB00940  としき           Re^3: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/05 14:12 11133へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
LOCATEなんていう、割と基本的なところからして違うものなのですね。

> LOCATE 縦位置,横位置,カーソル表示スイッチ,カーソル開始位置,カーソル終了位置
>
> 私がN88系と違うと思ったのは、縦と横が逆なところです。
> 他の構文は、横、縦なので、間違えやすいですね。MS系の歴史でしょうか。

えと、LOCATEが縦、横の順というのは、Turbo Basic と TBasic の両方ですか?
それともどちらかだけ?
ちなみに、N88の場合は

LOCATE 横位置,縦位置,カーソル表示スイッチ

だけです。
カーソルの開始位置、終了位置ってなんだろう。
横長のカーソルを表示できるのかな。
それとも、その制限の範囲にカーソルがこない場合は表示されない、とか。

> 移植するなら、他の素数プログラムが良いと思います。

konnoさんの新しいのもリリースされたし、そっちを狙おうかな。
とりあえず、SOSU6の方を移植するとなると気になる部分がひとつ。
もしかしたら16ビットのBASICでは改善されているかもしれませんが。

loop2: ' 数値を確定した素数で割り切れれば合成数
for ii!=1 to co!-1
b!=int(i!/co1%(ii!)):if b!=i!/co1%(ii!) then noflg=1:goto lpend2
next ii!
lpend2:

8ビット時代のBASICでは、こういうループの脱出方法をは推奨されなかった。
FORのループを完了させずに途中で脱出すると、スタックにデータが詰みあがった
ままになってしまうのだそうで。
たしか、新しくRUNするとクリアされるのだったかなぁ。
もしかしたら、明示的にCLEARというコードを書かないとクリアされなかったかも
しれない。
この辺は処理系によって違うかもしれないし、当時のBASICのリストを見ると、DEFINT
と同様、ソースの先頭でおまじないのようにCLEARを入れているものが多かったので、
この辺で混同している部分もあるかもしれない。
で、結局どうするのがよいかというと

*LOOP2
FOR II!=1 TO CO!-1
IF INT(I!/CO1%(II!))=I!/CO1%(II!) THEN NOFLG=1:II!=CO!-1
NEXT

こんな感じで無理やり強制的にループの制御変数の値を書き換えてしまう、という
ワザが使われていました。


11139/11048 BQO00549  konno            Re^5: としきさんの msgview 完璧なツリー
( 1) 24/03/05 15:24 11136へのコメント(としきさん) コメント数:1
> たとえば、#11097から始まるツリーの#11117とか#11126が、本来は「┗」でなければ
> いけないけれど「┣」になっているように見えます。

あうう、リンク先をそのまま見ていました。頭が他に行っていたみたいです。(>_<)
msgview のツリーは「┣」になっていますね。失礼しました。m(__)m
何が悪いのかはわかりません。m(__)m


11140/11135 BQO00549  konno            Re^2: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/05 15:56 11137へのコメント(としきさん) コメント数:1
> ソースリスト冒頭のコメントで
> ' IF DSP=1 THEN print '画面出力
> ' IF DSP=1 THEN print out dat 'ファイル出力
> ' IF DSP=2 THEN no print 'カウントのみ
> となっているのですが、これはコメントが間違っているのかな。

コメントの間違いにコメントするなんて、鬼畜ですぅ。(;_;)
もちろん1行目は ゼロのつもりだったんですぅ。
日付や指定範囲などもおかしいような気がするけど気にしない。(^^;


11141/11097 BQO00549  konno            Re^4: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/05 16:55 11138へのコメント(としきさん) コメント数:1
> > LOCATE 縦位置,横位置,カーソル表示スイッチ,カーソル開始位置,カーソル終了位置

見直したらおかしなところに気が付きました。
LOCATE 1, 26, ,1
とありますが、おしりの1はカーソル開始位置なので、終了位置が無い?
これも元は何かのサンプルソースで
LOCATE 1, 26, ,1 '%CursorOff
多分これが元だと思います。
TBasicのマニュアルでは、終了位置を省略すると開始位置と同じ数値が入るらしいですが
このコメントでは、カーソルオフになっていますね? わからん。
サンプルが間違えているかもですね。(^^;

> えと、LOCATEが縦、横の順というのは、Turbo Basic と TBasic の両方ですか?

両方です。TBasicはもろMS系だと思いますが、TurboBasicもMS系準拠ということですかね。

> カーソルの開始位置、終了位置ってなんだろう。

カーソルの高さ指定だと思います。TBasicでは、0が上で 15が下みたいです。


> FORのループを完了させずに途中で脱出すると、スタックにデータが詰みあがった
> ままになってしまうのだそうで。

うげ、これは知らなかったです。ヤバイかも・・・(>_<)
STIME でたまに問題が出るのはこれかもしれないですね。

> FOR II!=1 TO CO!-1
> IF INT(I!/CO1%(II!))=I!/CO1%(II!) THEN NOFLG=1:II!=CO!-1
> NEXT
> こんな感じで無理やり強制的にループの制御変数の値を書き換えてしまう、という
> ワザが使われていました。

これも良くやっていますが、これからはループを抜ける時は気を付けます。


11142/11048 CXB00940  としき           Re^6: としきさんの msgview 完璧なツリー
( 1) 24/03/05 17:24 11139へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
>  何が悪いのかはわかりません。m(__)m

私にも何が悪いのか、今のところは全くわかっていません。
一応、1月にkonnoさんにお送りしたコードを再び引っ張り出してみました。
そして、うちの板塀の現行ログを表示してみたのですが、全て正常な表示に見える
のですよ。かなり複雑そうなツリーであっても。
う〜ん、まさかデータというかログファイルのほうに原因があるのか?
それとも、私がkonnoさん的なコードに転記する際にどこかを誤ったとか。
いささか複雑というか統一性に欠けたコーディングスタイルでしたから。
あるいは、konnoさんがご自分でコードをきれいにしようとして失敗したとか。

一応、ざっくりみたところ。
msgviewの中で「┗」「┣」が表示されるルーチンは以下のような感じ。

if ($tx[$lx] == 0 && $lx != 0) { print "┗"; }
else {
$jj=1;
while ( $tlx[$j+$jj] > 0 ) {
if ( $tlx[$j] == $tlx[$j+$jj] ) { $jj=0; last; }
if ( $tlx[$j] > $tlx[$j+$jj] ) { $jj=1; last; }
$jj++;
}
if ( $jj == 0 ) { print "┣"; }
elsif ($lx != 0 ) { print "┗"; }
}

一方で、正しく表示される一括表示のツリー表示部分は以下のような感じ。

if ( $tx[$lx] == 0 ) { print "┗"; }
else {
$jj=1;
while ( $tlx[$j+$jj] > 0 ) {
if ( $tlx[$j] == $tlx[$j+$jj] ) { $jj=0; last; }
if ( $tlx[$j] > $tlx[$j+$jj] ) { $jj=1; last; }
$jj++;
}
if ( $jj == 0 ) { print "┣"; }
else { print "┗"; }
}

条件式が違うじゃない。
何でこんなところを見落としたんだろう。
テストデータというか板塀のデータで正常に表示されていたからだろうなぁ。

ということで、もしかしたらこれでうまくいくかも。
もうkonnoさんのところでも不要なコメントは全部落としているでしょうから、場所は
すぐに見つかることでしょう。
とりあえず試してみてください。


11143/11097 CXB00940  としき           Re^5: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/05 17:58 11141へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> これも元は何かのサンプルソースで
> LOCATE 1, 26, ,1 '%CursorOff
> 多分これが元だと思います。
> TBasicのマニュアルでは、終了位置を省略すると開始位置と同じ数値が入るらしいですが
> このコメントでは、カーソルオフになっていますね? わからん。

値を省略するとカーソルオフなんですかね。
N88だと、最後のパラメータなんでよく省略されていましたが、省略時は単にそれ以前
の値を引き継いでいました。

> カーソルの高さ指定だと思います。TBasicでは、0が上で 15が下みたいです。

あ、横方向ではなく、1つの文字の中の縦方向でしたか。
ということは、開始位置が0、終了位置を1と指定すると、アッパーラインのような感じ
になるということですね。これはVzのCiとCoみたいに変更できるということですから、
使い方によっては便利かもしれない。

> > FORのループを完了させずに途中で脱出すると、スタックにデータが詰みあがった
> > ままになってしまうのだそうで。
> うげ、これは知らなかったです。ヤバイかも・・・(>_<)

いや、昔のインタプリタの時代の話ですから。
コンパイル型言語なら大丈夫なんじゃないかなぁ。
ただ、ループをまわす回数が増えても問題がないのに、ループの回数そのものが少ない
にもかかわらず、そのループを呼び出す回数が増えると問題が出るという、謎の不具合
につながることがあって。
苦労させられた人はそれなりにいるはず。


ところで、それよりも、変なことに気がつきました。
#11097によると

> 最も素朴な方法は、2 から √n 以下の素数まで順番に割っていく

とあるのですが、コードの中にSQRT関係の関数がないようです。
これ、本当にこのアルゴリズムであっていますかね。
例えば、23が素数であるかを確認するためには√23以下の素数、つまり2と3で確認
すれば事足りるわけです。
コードを追いかけていませんが、まさか、5とか7でも割っているから余計に時間が
かかっている、ということはないでしょうか。


11144/11048 BQO00549  konno            Re^7: としきさんの msgview 完璧なツリー
( 1) 24/03/05 20:04 11142へのコメント(としきさん) コメント数:1
> あるいは、konnoさんがご自分でコードをきれいにしようとして失敗したとか。

私は頂いたソースをそのまま張り付けただけだったと思います。(^^;
今見たら私のバグバグなトンでもコードのコメントがそのまま大量に残っていますね。(^^;
よくこの状態で修正できたと感心します。いや、ありがたいです。

> msgviewの中で「┗」「┣」が表示されるルーチンは以下のような感じ。
> if ($tx[$lx] == 0 && $lx != 0) { print "┗"; }

ここは探してみたところ、以下のようになっていましたが修正しました。

# if ($tx[$lx] == 0 && $lx != 0) { print "┗"; }
if ( $tx[$lx] != 0 ) { print "┣"; }

if ( $tx[$lx] == 0 ) { print "┗"; }

elsif ($lx != 0 ) { print "┗"; }

else { print "┗"; }

最初下の1行だけ修正しましたが変わりませんでした。
それで上側も修正したら、キチンとツリー表示出来ました。\(^^)/ ヤッタ-

> もうkonnoさんのところでも不要なコメントは全部落としているでしょうから、場所は
> すぐに見つかることでしょう。

不要なコメントはまだそのままですが、これを機に削除しようと思います。(^^;
本当にありがとうございました。m(__)m


11145/11097 BQO00549  konno            Re^6: SOSU6 素数を表示、カウントするテスト6
( 1) 24/03/05 23:15 11143へのコメント(としきさん)
> 値を省略するとカーソルオフなんですかね。
> N88だと、最後のパラメータなんでよく省略されていましたが、省略時は単にそれ以前
> の値を引き継いでいました。

試しに
LOCATE 1, 26, ,10
にして実行してみたら、カーソル高さが半分くらいになっていました。
省略時はそれ以前の値を引き継ぐようですね。

> コンパイル型言語なら大丈夫なんじゃないかなぁ。
> ただ、ループをまわす回数が増えても問題がないのに、ループの回数そのものが少ない
> にもかかわらず、そのループを呼び出す回数が増えると問題が出るという、謎の不具合
> につながることがあって。
> 苦労させられた人はそれなりにいるはず。

やっぱりむやみにループを抜けるのは避けた方が良さそうですね。

> ところで、それよりも、変なことに気がつきました。
> #11097によると
> > 最も素朴な方法は、2 から √n 以下の素数まで順番に割っていく
> とあるのですが、コードの中にSQRT関係の関数がないようです。

気が付いてしまいましたか、そうです、私はWikiを見ないで自分で考えたのです。
素数を調べるには確定した素数で割ればいいんじゃないかと思ったのです。
それで配列に確定した素数を入れたのですが、数字が大きくなると割る回数が増えるので
時間が掛かったのでした。

> これ、本当にこのアルゴリズムであっていますかね。

PRIME2.EXE は、SQR関数を使っているので、これが本来のアルゴリズムなのでしょうね。
でも結果は一致していたので、考え方はあながち間違ってはいなかったかなと思います。

> 例えば、23が素数であるかを確認するためには√23以下の素数、つまり2と3で確認
> すれば事足りるわけです。
> コードを追いかけていませんが、まさか、5とか7でも割っているから余計に時間が
> かかっている、ということはないでしょうか。

その通りですね、ですから、SOSUシリーズは私の個人的仮説の実験だったのです。(^^;
PRIME.BAS のサンプルは学校でも使える模範的コードなのだと思います。


11146/11048 CXB00940  としき           Re^8: としきさんの msgview 完璧なツリー
( 1) 24/03/07 02:17 11144へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> それで上側も修正したら、キチンとツリー表示出来ました。\(^^)/ ヤッタ-

無事に正常表示になりましたね。よかったよかった。

> 今見たら私のバグバグなトンでもコードのコメントがそのまま大量に残っていますね。(^^;
> よくこの状態で修正できたと感心します。いや、ありがたいです。

だから前にも言ったけど、ほとんど迷彩のような。
あたかも、プログラムからバグを除去することを拒むかのような。
このコードを書いた人は、プログラムの完成を見ることなく、永遠にデバッグのぬるま湯に
浸かっていたいのか。
と、誤解してしまいそうなわけですよ。誤解ですよね?
#本心だったらいやすぎ


コメントが多いというのは、決して悪くはないんですよ。
問題は、それが何を意味しているかがわからないこと。
例えば、コードの右側のほうに
「この行のコメントをはずすと××になる」
とか
「※参考 ○○氏のコード」
などときちんと記載されていればいいのですよ。
あるいは、ymfcstなんかでも採用されているような感じで
「★マークの5行のコメントをはずすとほにゃらら」
みたいなものとか。
要は、konnoさんのコードの場合、有効な情報が全くないのがイマイチ。

プログラムにおけるコメントって、コンピュータではなく人間に対して書くものですから、
人間に対して意味のない情報は少ないほうがいい。
私も、プロの書いたコードなんてあんまり見たことがありませんが、まずは目標として
コードだけで、つまりコメント全くなしで、ここは何をやっているかがわかるような
ものを目指すらしい。そうすれば、そもそもコメントを入れなくてすむから。
おおむね、人はみな横着ですからね。コメントを考える手間も省きたいわけですよ。
ただ、それはある種の理想。そんなものが実現することはまずない。
ということで、次善の策。コメントだけを追いかけることで、そのコードが何をやって
いるかがわかるようにする。
つまり、それなりにプログラムを読んできた経験のある人の場合、初めて触れる言語で
あっても、コメントのあるコードであれば、まずコメントを読む。
私も、Vzのマクロを勉強するとき、ikubohさんだったかな、もう忘れましたが、誰かの
マクロコードのコメントを見て勉強した記憶があります。

ということで、必要なコメントはバシバシ入れましょう、ということでした。


11147/11135 CXB00940  としき           Re^3: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/07 02:18 11140へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> コメントの間違いにコメントするなんて、鬼畜ですぅ。(;_;)

いや、なんとなく間違っていそうだとは思ったけど、確信がもてなかったのですよ。
だって、#11135

> ・起動時オプション 1 で P000.DAT に素数を出力します。
> ・起動時オプション 2 で 表示もファイル出力もしません。カウントのみ

とはあったけど、起動時オプション 0 があるとは書いてなかったもので。

> 日付や指定範囲などもおかしいような気がするけど気にしない。(^^;

日付や範囲指定については、まだ見てもいない。
それより気になった部分がいくつかあって。
例えば、表示する素数の数の入力を求めるプロンプト、日本語の部分がコメント
になっていますが、これはなぜそうしているのか、とか。
メインというか j のループからは結構強引な脱出をしているな、とか。
そのループのコメントの「i;:c=c+1」っていったいなんだろう、とか。
outputのコメント、なんで素数が1個でも10000000個でも時間が同じなのかな、
とか。もしかしたら違うのかもしれないけど、この表現ではそれ以外の意図は
読み取れない。
タイマーのサブルーチンの冒頭、謎のif文がコメントアウトされているけど、
これはいったいなんだろう、とか。

一般にコードの概要をつかむにはコメント文が有効のはずなんだけど、全く有効に
見えない気がする。


11148/11048 BQO00549  konno            Re^9: としきさんの msgview 完璧なツリー
( 1) 24/03/07 22:04 11146へのコメント(としきさん) コメント数:1
> このコードを書いた人は、プログラムの完成を見ることなく、永遠にデバッグのぬるま湯に
> 浸かっていたいのか。
> と、誤解してしまいそうなわけですよ。誤解ですよね?
> #本心だったらいやすぎ

もちろん誤解ですよ。(^^; ただ世の中変人が多いのでそういう人もいるかも。(いねえよ)

> コメントが多いというのは、決して悪くはないんですよ。
> 問題は、それが何を意味しているかがわからないこと。

超絶ハイテク技などはそういうコメントが欲しいものですね。

> 要は、konnoさんのコードの場合、有効な情報が全くないのがイマイチ。

うう、これは BASIC コードのことを言っているのですよね。
アセンブラやVZマクロにはかなりコメントを入れているつもりです。(^^;

> ということで、次善の策。コメントだけを追いかけることで、そのコードが何をやって
> いるかがわかるようにする。

これは上で書きましたが、BASICは自分で読めるものだからあまりコメントを入れないのですね。
でも後で読むと何をやっているのかわからなくなってしまっています。(>_<)
ということで、今はサブルーチンのタイトルや説明、各行のコメントを
なるべく入れるようにやっている最中です。(^^;
達人のコードにコメントが無いのは必要を感じないからなんでしょうね。

> 私も、Vzのマクロを勉強するとき、ikubohさんだったかな、もう忘れましたが、誰かの
> マクロコードのコメントを見て勉強した記憶があります。
> ということで、必要なコメントはバシバシ入れましょう、ということでした。

ikubohさんなど達人のマクロはコメントがないと何をやっているのか全く分からないレベルですからね。
私もこれからは他人が読むことを念頭に入れてコメントを入れるようにします。

# 昨日の自分は他人と言いますからね。(゚゜)☆\(--#) それはおのれじゃ


11149/11135 BQO00549  konno            Re^4: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/07 22:28 11147へのコメント(としきさん) コメント数:1
> だって、#11135
> > ・起動時オプション 1 で P000.DAT に素数を出力します。
> > ・起動時オプション 2 で 表示もファイル出力もしません。カウントのみ
> とはあったけど、起動時オプション 0 があるとは書いてなかったもので。

お察しの通りオプション 0 はありません。(^^;
あ、P000.DAT も S000.DAT の間違いですね。P000 は PRIME2 の方でした。(>_<)

> 例えば、表示する素数の数の入力を求めるプロンプト、日本語の部分がコメント
> になっていますが、これはなぜそうしているのか、とか。

最初日本語で書いたけどUSモードだと表示しないとか色々面倒なのでコメントにしてしまい
そのまま放置してました。(^^;

> メインというか j のループからは結構強引な脱出をしているな、とか。

これは良くない抜け方でしたね、気が向けば直します。(^^;

> そのループのコメントの「i;:c=c+1」っていったいなんだろう、とか。

これは元は PRINT文だったのを、PRINT1: というサブルーチンに変更したので

IF j>SQR(i) THEN gosub PRINT1 i;:c=c+1 ' 素数

IF j>SQR(i) THEN gosub PRINT1 'i;:c=c+1 ' 素数

こういうように、コメントで手抜きをしてました。(^^;
まあ、飛び先でやってることをコメントに残したとも言えなくもないし。(^^;

> outputのコメント、なんで素数が1個でも10000000個でも時間が同じなのかな、
> とか。もしかしたら違うのかもしれないけど、この表現ではそれ以外の意図は
> 読み取れない。

'Number.1 0: 0' 4 Prime Number = 9592
'Number.10000000 0: 0' 4 Prime Number = 9592

これですね、Prime Number が同じということでお察しください。(^^;
手抜きの残骸だったのかなんなのか、今はもうわからないです。(^^;

> タイマーのサブルーチンの冒頭、謎のif文がコメントアウトされているけど、
> これはいったいなんだろう、とか。

これも借り物のルーチンの残骸ですね。他人に見せることは全く意識してないのです。

> 一般にコードの概要をつかむにはコメント文が有効のはずなんだけど、全く有効に
> 見えない気がする。

私のソースはこんなのばっかりなので、元々は公開する気も無かったんですがねぇ。(^^;
出来る範囲で改善するようにします。m(__)m


11150/11135 BQO00549  konno            オリジナルの prime.bas のソース
( 1) 24/03/07 22:43 11135へのコメント(konnoさん) コメント数:1
オリジナルの prime.bas のソースはこれだけです。

INPUT n
IF MOD(n,2)=0 THEN
IF n=2 THEN PRINT "素数" ELSE PRINT "合成数"
ELSE
FOR i=3 TO SQR(n) STEP 2
IF MOD(n,i)=0 THEN EXIT FOR
NEXT i
IF i<=SQR(n) THEN PRINT "合成数" ELSE PRINT "素数"
END IF
END


IF 〜 ELSE 〜 END IF をうまく使ってシンプルでエレガントですね。
TurboBasic で同じやり方はわからなかったので、自分なりに改造したのが以下

FOR i=2 TO n
IF i=2 THEN gosub PRINT i;:c=c+1 ' 2 素数
i2=i/2:i3=int(i/2):IF i2=i3 THEN goto EXIT2 ' 合成数
FOR j=3 TO SQR(i) STEP 2 ' 偶数をスキップ
i2=i/j:i3=int(i/j):IF i2=i3 THEN goto EXIT1 ' 合成数
NEXT j
EXIT1:
IF j>SQR(i) THEN gosub PRINT i;:c=c+1 ' 素数
EXIT2:
NEXT i:i=i-1

としきさんにループの抜け方が強引と言われたけど、うーむ・・・

IF MOD(n,i)=0 THEN EXIT FOR
ここは
i2=i/j:i3=int(i/j):IF i2=i3 THEN goto EXIT1 ' 合成数

i2=i/j:i3=int(i/j):IF i2=i3 THEN i=i+1 ' 合成数
にすればよかったのかな。
つい、EXIT という構文に引っ張られたような・・・(^^;


11151/11048 CXB00940  としき           Re^10: としきさんの msgview 完璧なツリー
( 1) 24/03/08 01:08 11148へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> > 要は、konnoさんのコードの場合、有効な情報が全くないのがイマイチ。
> うう、これは BASIC コードのことを言っているのですよね。

BASICもそうですが、先日お送りいただいたperlのコードも含めて、です。

> ということで、今はサブルーチンのタイトルや説明、各行のコメントを
> なるべく入れるようにやっている最中です。(^^;

うん、まぁ、最終的な完成品を作るにあたってそういうことは必要ですけどね。
私のような横着な人間はどうするかというと、プログラムを作る前に、日本語で
設計します。そして、その設計をそのままコードの中にコメントとして残しておく。
例えば、今回のkonnoさんのprime2.basを作ろうとするなら、私の書きそうな設計
は以下のような感じ。

 初期設定
 求める素数上限入力
 メインルーチン(サンプルコードを最大限流用)
 終了処理(キー入力待ち必須)

 出力サブルーチン
 ファイル出力
 エラー終了ルーチン(自作の××からコピペ)
 タイマールーチン(自作の○○からコピペ)

こんな感じで設計ができたら、あとは切った貼った、コピペできないところは仕方
ない作るか。
という風にするわけです。
そうすれば、わざわざコメントを書くということはなくなります。
その上、設計をじっと見つめて、例えば、出力部分はもうちょっと整理できそうだ、
とか、エラーのルーチンはそのままコピペだとイマイチかも、みたいなことも考え
付いたりするわけですよ。
そういえば昔、どこかに似たようなことも書いた気が、と思って検索したら。
nifty:FGALDC/MES/15/#19030
に似たようなことを書いていた。
そうか、ikubohさんではなくてEmmettさんのマクロで勉強したのか。

いろいろなことを書きましたが。
結論は、楽をしましょうよ、ということに尽きるわけで。


11152/11048 BQO00549  konno            Re^11: としきさんの msgview 完璧なツリー
( 1) 24/03/09 01:38 11151へのコメント(としきさん) コメント数:1
> BASICもそうですが、先日お送りいただいたperlのコードも含めて、です。

そうでした、直してもらったばかりなのに perl のことを忘れていました。m(__)m

> 私のような横着な人間はどうするかというと、プログラムを作る前に、日本語で
> 設計します。そして、その設計をそのままコードの中にコメントとして残しておく。
> 例えば、今回のkonnoさんのprime2.basを作ろうとするなら、私の書きそうな設計
> は以下のような感じ。

なるほど、これをそのまま各ルーチンのタイトルに使うのですね。
私は手を付けてからどうするか考える癖があるみたいで、
今すぐこのスタイルに切り替えるのは難しそうです。(^^;
でも参考になりました。やってみたいと思います。

> そういえば昔、どこかに似たようなことも書いた気が、と思って検索したら。
> nifty:FGALDC/MES/15/#19030
> に似たようなことを書いていた。
> そうか、ikubohさんではなくてEmmettさんのマクロで勉強したのか。

そうでしたか、実は私も「コメントの多いマクロ」で Emmettさんを思い出してました。(^^;
その Emmettさんの発言を見ると

> 》 僕は、マクロを書く時はとりあえずグローバルマクロからとにかく書き始めます。
> 》 僕は、アルゴリズムを最初にどこかにメモしておいて、それに従ってプログラム
> 》 を組んで行くということはやったことがありません。いつでもいきなり、グロー
> 》 バルの1行目から、じかに書き始めます。

私とおんなじですね。(^^;
それに対してとしきさんも

> あぁ、なるほど、やっと Emmett さんのマクロ作法がわかったような気がします。
> 基本的な考え方としては、私も Emmett さんとほとんど変わりません。
> とっても安心しました。

このように同意していますが、その後に

> でも、大きく異なるところは、私の場合、仮想プログラム言語というかメタ言語
> というか、まぁ日本語のようなもので書いているのです。で、大体まとまったら
> マクロに翻訳する、と。

こう書いていますね。やっぱりスタイルが違うと感じます。(^^;
もちろん、としきさんの方が正統派だと思います。

> いろいろなことを書きましたが。
> 結論は、楽をしましょうよ、ということに尽きるわけで。

楽をする、という意味では、としきさんのような正統派のやりかたが良いと思います。
それが出来ない私は、やっぱり楽をしようと思っていないのかもですね。(^^;
それよりも早く頭の中のアイデアをコードにしたいという欲求が強いのでしょう。(^^;
# そうしないとアイデアが消えてしまいそうだから。(^^;;

11153/11048 CXB00940  としき           Re^12: としきさんの msgview 完璧なツリー
( 1) 24/03/09 11:17 11152へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
多分、最大というか基本的な違いはここ。

> それよりも早く頭の中のアイデアをコードにしたいという欲求が強いのでしょう。(^^;
> # そうしないとアイデアが消えてしまいそうだから。(^^;;

私はアイディアをコードではなく日本語で考えている、ということ。
だから、日本語でメモをしている。
逆に言うと、ナイスなコードを思いつく、ということはあんまりなさそうです。

あと、前述のEmmettさんとの対話の部分、読み直して、もしかしたら私に誤解が
あったかもしれないというのがkonnoさんの指摘で気がついた。

> > 》 僕は、アルゴリズムを最初にどこかにメモしておいて、それに従ってプログラム
> > 》 を組んで行くということはやったことがありません。いつでもいきなり、グロー
> > 》 バルの1行目から、じかに書き始めます。
>
> > あぁ、なるほど、やっと Emmett さんのマクロ作法がわかったような気がします。
> > 基本的な考え方としては、私も Emmett さんとほとんど変わりません。
> > とっても安心しました。
>
> このように同意していますが、その後に

このときの薄らぼんやりとした記憶では、私、サブルーチンから書き始めるのでは
なく、全体の大枠から書き始める、という意味でEmmettさんと同じだな、と感じた
ように覚えています。
確かにこの部分、解釈によってはいろいろと怪しいかもしれない。


11154/11048 BQO00549  konno            Re^13: としきさんの msgview 完璧なツリー
( 1) 24/03/09 23:45 11153へのコメント(としきさん) コメント数:1
> 私はアイディアをコードではなく日本語で考えている、ということ。
> だから、日本語でメモをしている。
> 逆に言うと、ナイスなコードを思いつく、ということはあんまりなさそうです。

うーむ、私もアイデアが浮かんだ時点では、コードではなく日本語な気もしますが
コード的な、パズルのピース的な漠然としたイメージなのかもしれませんね。

> このときの薄らぼんやりとした記憶では、私、サブルーチンから書き始めるのでは
> なく、全体の大枠から書き始める、という意味でEmmettさんと同じだな、と感じた
> ように覚えています。
> 確かにこの部分、解釈によってはいろいろと怪しいかもしれない。

普通、枝葉であるサブルーチンから書き始める人はいませんよね。(^^;
私も Emmettさんの書き込みを読み直したら、何か違う気がしてきました。

> 》 いつでもいきなり、グローバルの1行目から、じかに書き始めます。

ここ、私なら始めに類似したプログラムを探してそれを修正して使おうとします。
ゼロから書き始めるなんて面倒だと思うので私はほとんどやったことがないのですよ。
# それが改造人間の定めなのさ・・・・ ルルルー・・・


11155/11048 CXB00940  としき           Re^14: プログラムの作り方
( 1) 24/03/10 13:59 11154へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
いいかげん、タイトルを変えるべきだということに遅まきながら気がつきました。
いまさら、という気も大いにしますが。
そして、たいそうな内容を書くわけでもない。

> ここ、私なら始めに類似したプログラムを探してそれを修正して使おうとします。
> ゼロから書き始めるなんて面倒だと思うので私はほとんどやったことがないのですよ。

類似したプログラムが見つからないとき、というのも私の場合はたまにある。
ん〜、最近はあんまりそういうこともありませんが。
例えば、野ざらし言#569 からのツリーで作ったマクロ。
こういう案件、konnoさんはあまり手を出さないということでしょうか。
私も最近はそういうことがなくなったということは、年をとったせいかも。
いかんなぁ。


11156/11135 CXB00940  としき           Re: オリジナルの prime.bas のソース
( 1) 24/03/10 18:50 11150へのコメント(konnoさん) コメント数:2
参照先:http://toshiki.la.coocan.jp/
> オリジナルの prime.bas のソースはこれだけです。

なるほど、MODって関数なんですね。
N88-BASICでは演算子なんですけどね。

> INPUT n
> IF MOD(n,2)=0 THEN
> IF n=2 THEN PRINT "素数" ELSE PRINT "合成数"
> ELSE
> FOR i=3 TO SQR(n) STEP 2
> IF MOD(n,i)=0 THEN EXIT FOR
> NEXT i
> IF i<=SQR(n) THEN PRINT "合成数" ELSE PRINT "素数"
> END IF
> END

これをそのままN88-BASICに移植すると、こんな感じかなぁ。
実行していないので、そのまま動くかどうかはわかりません。

100 INPUT N
110 IF N MOD 2=0 THEN 120 ELSE *ELSE1
120 IF N=2 THEN PRINT "素数" ELSE PRINT "合成数"
130 GOTO *ENDIF1
140 *ELSE1
150 I=3
160 WHILE (I<=SQR(N)) AND (N MOD I<>0)
170 I=I+2
180 WEND
190 IF I<=SQR(N) THEN PRINT "合成数" ELSE PRINT "素数"
200 *ENDIF1
210 END

解説すると

・MODは演算子に変更した。
・110行目のTHENの行番号は省略できたかもしれない。
 つまり、NULLの行番号が許容されるのなら、その場合は単に次の行に制御が移る。
・ループの脱出条件が複数あるので、FORループからWHILEループに変更した。


> TurboBasic で同じやり方はわからなかったので、自分なりに改造したのが以下

TurboBasicって、MOD関数またはMOD演算子ってないんですか?
あと、NEXTの後ろの変数って省略できないんですか?
でもコンパイラ言語だからあんまり関係ないのか。
8ビットのBASICのころは、NEXTの後ろの変数を省略するとマイクロ秒の単位で速く
なると信じられていて、だから私も省略するのが癖になっているのですよ。
高速化といえば、最初のFORの直下のIF文。
これはループの中に入れておくのはもったいない。
だって、1回しか比較する必要がないものを何回も比較することになるわけだから。

> i=2:gosub PRINT i;:c=c+1 ' 2 素数
> FOR i=3 TO n

こんな感じで十分だと思う。


11157/11048 BQO00549  konno            Re^15: プログラムの作り方
( 1) 24/03/11 00:19 11155へのコメント(としきさん)
> いいかげん、タイトルを変えるべきだということに遅まきながら気がつきました。

私も途中で思ったのですが、まあいいかと。(^^;

> 類似したプログラムが見つからないとき、というのも私の場合はたまにある。
> ん〜、最近はあんまりそういうこともありませんが。
> 例えば、野ざらし言#569 からのツリーで作ったマクロ。
> こういう案件、konnoさんはあまり手を出さないということでしょうか。

そういう案件も多いと思います。その場合でも入出力など使えるルーチンは切り貼りで済まします。
そういえばテレビドラマ「ガリレオ」の教授は思いついたらいきなり数式を書きなぐっていましたね。
そういうやり方ができるのは、c.mosさんくらいではないかと。

> 私も最近はそういうことがなくなったということは、年をとったせいかも。

私も年を取って、昔のやり方でしか出来なくなったような気がします。
BASICのソースは普通大文字で書きますが、最近小文字の行を混在させてますよね。
そこは、自分で一から書いているよという自己主張なのかもしれません。(^^;


11158/11135 BQO00549  konno            Re^2: オリジナルの prime.bas のソース
( 1) 24/03/11 00:45 11156へのコメント(としきさん) コメント数:1
> なるほど、MODって関数なんですね。
> N88-BASICでは演算子なんですけどね。

あう、MOD は演算子でしたね、失礼しました。

> これをそのままN88-BASICに移植すると、こんな感じかなぁ。
> 実行していないので、そのまま動くかどうかはわかりません。

> TurboBasicって、MOD関数またはMOD演算子ってないんですか?

もちろんありますが、32767以上は駄目みたいです。

> あと、NEXTの後ろの変数って省略できないんですか?
> でもコンパイラ言語だからあんまり関係ないのか。

省略できると思います。指定した方がわかりやすいと思うので。

> 8ビットのBASICのころは、NEXTの後ろの変数を省略するとマイクロ秒の単位で速く
> なると信じられていて、だから私も省略するのが癖になっているのですよ。

コンパイラ言語ではあんまり関係ないのかもしれないなと思います。

> 高速化といえば、最初のFORの直下のIF文。
> これはループの中に入れておくのはもったいない。
> だって、1回しか比較する必要がないものを何回も比較することになるわけだから。

これはその通りですね、最初の FOR文はいらなかったですね。
うっかりしていました。(^^;
SOSU のソースから切り貼りしたのをそのまま残してしまったのかなぁ。(^^;



11159/11135 CXB00940  としき           Re^3: オリジナルの prime.bas のソース
( 1) 24/03/12 02:16 11158へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> あう、MOD は演算子でしたね、失礼しました。

???
オリジナルの prime.bas では関数になっていますよね。
ということは、十進BASICでは関数である、ということだと思いますが?
もしかしたら演算子にもあるかもしれませんけどね。

> > TurboBasicって、MOD関数またはMOD演算子ってないんですか?
> もちろんありますが、32767以上は駄目みたいです。

N88-BASICのリファレンスでは、演算前に小数点以下は切り捨てられるとはあります
が、上限については記載がありません。試してみたいところではあります。


11160/11135 CXB00940  としき           Re^5: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/12 12:32 11149へのコメント(konnoさん) コメント数:2
参照先:http://toshiki.la.coocan.jp/
> これですね、Prime Number が同じということでお察しください。(^^;
> 手抜きの残骸だったのかなんなのか、今はもうわからないです。(^^;

いや、konnoさんがわからないくらいですから、私にも察することはできません。
それはさておき。
マジでN88-BASICに移植することを考えています。
で、まだ逐語的な変換には手をつけていないのですが。
気になったのがここ。

if dsp=1 then print#1,"":gosub 1010
if n>2000 then gosub 1000 'output

dsp=1 かつ n>2000 のときは2回出力されるようなんですが、これって仕様的に
なんとなく妙な気がします。これで正しいのですよね?
あと、変数 j2 と j3 も、何をやっているのかよくわからない。
この2つを足し算しているところもあるし。


11161/11135 BQO00549  konno            MOD と ¥ の有効範囲
( 1) 24/03/12 22:45 11159へのコメント(としきさん) コメント数:1
> オリジナルの prime.bas では関数になっていますよね。
> ということは、十進BASICでは関数である、ということだと思いますが?
> もしかしたら演算子にもあるかもしれませんけどね。

あうう、キチンと読んでいませんでした。
てっきり私がまた間違った言い方をしてしまったのかと。(^^;

> > > TurboBasicって、MOD関数またはMOD演算子ってないんですか?
> > もちろんありますが、32767以上は駄目みたいです。
> N88-BASICのリファレンスでは、演算前に小数点以下は切り捨てられるとはあります
> が、上限については記載がありません。試してみたいところではあります。

十進BASICで関数を使っているのは、MOD に制限があるからかも。
思いついて TurboBasicでテストプログラムを作ってみました。

'tmod.bas
screen 0
print " input ";:input a '
OPEN "mod.dat" FOR append AS#1 'ファイル出力
print " a MOD i ","2bytes "," Froat "," a / i"
for i=2 to 5
bb=int((a/i-int(a/i))*i+.5) ' MOD 代替式
print a;"mod";i,a mod i,bb,a/i
print#1, a;"mod";i,a mod i,bb,a/i '
next
print " a \ i","2bytes "," Froat "," a / i"
for i=2 to 5
cc=int(a/i) ' \ 代替式
print a;" \ ";i,a \ i,cc,a/i '
print#1,a;" \ ";i,a \ i,cc,a/i '
next

PRINT#1,""
CLOSE#1
100 '入力待ち
print " push eny key ";
a$=input$(1)
if a$="" then 100
end

結果

  a MOD/\ i 2bytes Froat a / i"
32767 mod 2 1 1 16383.5
32767 mod 3 1 1 10922.33333333333
32767 mod 4 3 3 8191.75
32767 mod 5 2 2 6553.4
32767 \ 2 16383 16383 16383.5
32767 \ 3 10922 10922 10922.33333333333
32767 \ 4 8191 8191 8191.75
32767 \ 5 6553 6553 6553.4

32768 mod 2 0 0 16384
32768 mod 3 -2 2 10922.66666666667
32768 mod 4 0 0 8192
32768 mod 5 -3 3 6553.6
32768 \ 2 -16384 16384 16384
32768 \ 3 -10922 10922 10922.66666666667
32768 \ 4 -8192 8192 8192
32768 \ 5 -6553 6553 6553.6

32769 mod 2 0 1 16384.5
32769 mod 3 -2 0 10923
32769 mod 4 0 1 8192.25
32769 mod 5 -3 4 6553.8
32769 \ 2 -16384 16384 16384.5
32769 \ 3 -10922 10923 10923
32769 \ 4 -8192 8192 8192.25
32769 \ 5 -6553 6553 6553.8

これを見るとやはり 32768 以上では MOD も ¥ も使えないようですね。
実は今 STIME のタイマーで計算がバグって困ってたんですが、これが原因だったようです。
テストプログラム作成は無駄ではなかった。(~~;


11162/11135 BQO00549  konno            Re^6: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/12 23:45 11160へのコメント(としきさん)
> マジでN88-BASICに移植することを考えています。
> で、まだ逐語的な変換には手をつけていないのですが。

私も気になったので、NP2 でやってみました。(^^;
N88BASIC.EXE は画面がピンクになって動かないみたいです。(>_<)
BASIC.COM がコンパイラなんですね。無事コンパイルしたのを実行したら、
入力した数字が素数かどうかを表示するのですね。(^^;

> 気になったのがここ。
> if dsp=1 then print#1,"":gosub 1010
> if n>2000 then gosub 1000 'output
> dsp=1 かつ n>2000 のときは2回出力されるようなんですが、これって仕様的に
> なんとなく妙な気がします。これで正しいのですよね?

もちろんまずいです。(^^; いい加減なだけでした。

> あと、変数 j2 と j3 も、何をやっているのかよくわからない。
> この2つを足し算しているところもあるし。

これですね。

810 if i<j2 then return 'dsp2でカウント表示
j2=j2+j3
820 LOCATE 5,1:PRINT i; '

j2 は表示するまでのカウント数かな?
j3 はオプションの数字で、カウントがこの数字以上になったら次の数字ぶん表示しない
という感じですかね。ほとんど意味がないようですが。(^^;


11163/11135 CXB00940  としき           Re^2: オリジナルの prime.bas のソース
( 1) 24/03/17 17:09 11156へのコメント(としきさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
お彼岸の墓参りの相談で実家に顔を出してきました。
その折に、30分ほどですが、PC-98に触れて。

> これをそのままN88-BASICに移植すると、こんな感じかなぁ。
> 実行していないので、そのまま動くかどうかはわかりません。

動きました。
細かくはチェックしていませんが、概ね、一発完動。
一発完動教徒なら、このくらい当たり前、というかもしれませんけどね。

> ・110行目のTHENの行番号は省略できたかもしれない。
>  つまり、NULLの行番号が許容されるのなら、その場合は単に次の行に制御が移る。

あ、ここが省略できるかは確認してこなかった。
次に行ったときには確認してこよう。といいつつ、忘れそうだけど。

次の週末、金曜日から土曜日にかけて実家に泊まることになったので、それまでには
prime2.basのN88-BASICへの移植を終わらせたいなぁ。


11164/11135 CXB00940  としき           Re^6: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/17 17:26 11160へのコメント(としきさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> マジでN88-BASICに移植することを考えています。
> で、まだ逐語的な変換には手をつけていないのですが。

ぼちぼち、移植を始めています。

・コマンドラインオプションは取得できないので、プログラム冒頭で入力するように
 した
・まず真っ先にやったのは、locateのxとyの総入れ替え
・N88-BASICでは、実数型も倍精度型も扱える上限は 1.7*10^38 で差がないため、
 変数は全て単精度実数に変更
 →実は覚えていなかったけど、FOR文のカウントに使うループ変数に倍精度型は
  使えないのだとか。マニュアルに明記してあった
・私の趣味でファイル番号指定の「#1」の前には全て半角空白を入れた
 (たぶん、文法的には不要だと思うけど覚えていない)
#11160で私が指摘した謎の2つのif文はdsp=1のほうだけ残した
・ファイル出力の際に、ループ内でいちいちOPEN/CLOSEするのは非効率的だと思う
 ので、最初で開いて最後に閉じるだけにした

今の所はそんな感じ。
とりあえず、机上デバッグでどこまでできるか。
忘れていることが多すぎるなぁ。


11165/11135 BQO00549  konno            Re: MOD と ¥ の有効範囲
( 1) 24/03/18 00:36 11161へのコメント(konnoさん) コメント数:1
MOD と \ の有効範囲テストを NP2 でやってみました。
結果は 32767 を超えると オーバーフローエラーになりました。
また、N88BASICでは行番号が必要で、タブは使えなかったので
以下のようにプログラムを修正しました。

10 'N88mod.bas
14 print " input ";
20 input a '
30 OPEN "mod.dat" FOR append AS#1 'ファイル出力
40 print " a MOD i ","2bytes "," Froat "," a / i"
50 for i=2 to 5
60 bb=int((a/i-int(a/i))*i+.5) ' MOD 代替式
70 print a;"mod";i,
72 if a>32767 then print "over! ", else print a mod i, '32767 over
74 print bb,a/i
80 print#1, a;"mod";i,
82 if a>32767 then print#1,"over! ", else print#1, a mod i, ' 32767 over
84 print#1, bb,a/i '
90 next i
100 print " a \ i","2bytes "," Froat "," a / i"
110 for i=2 to 5
120 cc=int(a/i) ' \ 代替式
130 print a;" \ ";i,
132 if a>32767 then print "over! ", else print a \ i, ' 32767 over
134 print cc,a/i '
140 print#1,a;" \ ";i,
142 if a>32767 then print#1,"over! ", else print#1, a \ i, ' 32767 over
144 print#1,cc,a/i '
150 next i
160 PRINT#1,""
170 CLOSE#1
180 '入力待ち
190 print " push eny key ";
200 a$=input$(1)
210 if a$="" then 180
220 end


エラーになるのと不正な結果になるのとどっちが良いかはともかく
MOD と \ の有効範囲は 普通は 32767 までのようですね。
だから素数のような桁数が多くなる計算は UBASIC などを使うのが良いのでしょうね。


11166/11135 CXB00940  としき           Re^2: MOD と ¥ の有効範囲
( 1) 24/03/20 01:44 11165へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> また、N88BASICでは行番号が必要で、タブは使えなかったので
> 以下のようにプログラムを修正しました。

うわぁ、ものすごく違和感がある見た目のプログラムになるんだな。
最大の理由は、おそらく、行番号のあるBASICにもかかわらず、コードが小文字だと
いうところからくるものだと思います。
行番号の不要なBASICなら小文字のコードでも全く違和感は感じないんですけどね。
どうやら、完全に、行番号のあるBASICは大文字、という感性に毒されている模様。
あと、もしかしたら些細かもしれないけど、行番号が等間隔ではないところにも、
まぁまぁ違和感を感じる。これは、同じN88であっても、インタプリタ型と違って
コンパイラ型の場合、テキストエディタでソースを書くことになるわけですから、
行番号の振り直しには手間がかかりますので、ある程度は仕方ないか。

ちょっとここで、行番号に関する昔話でも。
日本では、8ビットパソコンの草創期から、BASICのリストでは、行番号は10から
始まって10番ごと、というのがデファクト。なぜ10番ごとかというと、コードの追加
をする場合、その間の番号が使えるから、ということのようです。これは、日本に
BASICがやってくる前から、そういうのが普通だったらしい。
ただ、コードを追加すると当然、それは10番ごとにはならない。
そこで、BASICインタプリタにはRENUMというコマンドが用意されました。
renumberの略で、要するに行番号を振りなおしてくれるわけです。
これはNECのBASICにもシャープのBASICにもあったので、おそらく、東芝のBASICにも
あったのではないかなぁ。そしてたぶん、どこのものもほとんど同じだと思いますが、
NECの場合はデフォルトで、新しく付け直した行番号の開始番号は10からで、間隔も
10ごとに付け直してくれました。
コンパイラの場合は当然、こういう便利な機能があるわけではありませんから、番号
の振り直しは自前で人間がやらなければならないので、いろいろと面倒。

その後、BASICでもループなどをきちんとインデントするのが当たり前の時代になる
と、ここで問題になったのが、行番号の桁数。せっかくインデントを整えても、
90から100とか、990から1000といった行番号の桁数が変わるところでインデントが
崩れてしまう。そこでどうするかというと、例えば990行までに収まらないプログラム
なら1000行からはじめればよい、ということになりました。この部分、私ならなにも
10番間隔にこだわらず5番間隔でもいいじゃないか、それこそ最終的な完成形はもう
これ以上追加削除をしないということを強調する意味で1番間隔でいいのではないか、
と思うのですが、どうも世の中の大勢は10番間隔が好きみたい。
あと、間隔はいくつでもいいのですが、プログラムの最初から最後まで等間隔は
守るべき、というのも世間の多数派のようです。というか、RENUMコマンドを使えば
必然的に等間隔になるわけです。ここで例えば、いろいろとコードを追加した際に
その部分を追加したということを目立たせるためにあえて残すべき、という流派の
人もいたらしいですが、これはその後、少数派になりました。なぜかというと、
当時のBASICの編集画面だと、最近のテキストエディタと違い、それが何行目かと
いうことが表示されないわけです。ここで、例えば200行に GOTO 800 とあれば、
もし10番ごとの等間隔なら、ジャンプの飛び先はプログラムリスト上で60行先に
なるわけで、プリントアウトされた紙で追いかけやすい、という実利的な理由が
あったわけです。

と、いうことで。
もしBASICのプログラムをインタプリタに読み込ます機会があったら、RENUMコマンド
をかけた結果を保存しておくべきでしょう。


11167/11135 BQO00549  konno            Re^3: MOD と ¥ の有効範囲
( 1) 24/03/21 00:00 11166へのコメント(としきさん) コメント数:1
> うわぁ、ものすごく違和感がある見た目のプログラムになるんだな。
> 最大の理由は、おそらく、行番号のあるBASICにもかかわらず、コードが小文字だと
> いうところからくるものだと思います。

なるほど、そう言われればそんな感じもしますが、私はもう気にしてなかったので。(^^;

> 行番号の不要なBASICなら小文字のコードでも全く違和感は感じないんですけどね。
> どうやら、完全に、行番号のあるBASICは大文字、という感性に毒されている模様。

私はbasic歴が長いので、他の言語が小文字なのに違和感を感じました。今は無いですね。

> そこで、BASICインタプリタにはRENUMというコマンドが用意されました。
> renumberの略で、要するに行番号を振りなおしてくれるわけです。
> これはNECのBASICにもシャープのBASICにもあったので、おそらく、東芝のBASICにも
> あったのではないかなぁ。そしてたぶん、どこのものもほとんど同じだと思いますが、
> NECの場合はデフォルトで、新しく付け直した行番号の開始番号は10からで、間隔も
> 10ごとに付け直してくれました。

TBasicインタプリタは、RENUM 開始行番号,旧行番号,増分 となっています。
開始行番号は、新しくつける先頭の行番号の数値を指定します。
旧行番号は、付け替える初めの行を指定します。
でも私は使ったおぼえが無いですね。試したことはあるかもですが。

私の場合、行番号を振り直すと逆に頭の中のソースのイメージが壊れて混乱してしまう
気がしたので使わなかったのかもですね。再印刷もなかなか出来なかったし。(^^;

> と、ここで問題になったのが、行番号の桁数。せっかくインデントを整えても、
> 90から100とか、990から1000といった行番号の桁数が変わるところでインデントが
> 崩れてしまう。そこでどうするかというと、例えば990行までに収まらないプログラム
> なら1000行からはじめればよい、ということになりました。

これ、私はインデントなどしてなかったので、全く気になりませんでしたね。(^^;
だから今回のテストプログラムも 10番から付けてしまったのです。(^^;

> 必然的に等間隔になるわけです。ここで例えば、いろいろとコードを追加した際に
> その部分を追加したということを目立たせるためにあえて残すべき、という流派の
> 人もいたらしいですが、これはその後、少数派になりました。

どうやら私は少数派のようですね。(^^;

> 当時のBASICの編集画面だと、最近のテキストエディタと違い、それが何行目かと
> いうことが表示されないわけです。ここで、例えば200行に GOTO 800 とあれば、
> もし10番ごとの等間隔なら、ジャンプの飛び先はプログラムリスト上で60行先に
> なるわけで、プリントアウトされた紙で追いかけやすい、という実利的な理由が
> あったわけです。

私がNCプログラムを書いていた当時は、紙にプログラムを手書きしてからタイプライタに打ち込む形でした。
それが面倒に感じたのでパソコンに直接打ち込むスタイルを私が始めたのです。
紙テープに出力、印刷する時は行番号を N001 の形に自動変換していたので
もしかしたら行番号は RENUM していたかもしれません。もう忘れてしまいました。
私にとっては行番号は飾りでした。
# 偉い人にはそれがわからんのですよ。

それで狭い画面で行番号を頼りに確認するのが煩わしくて、スクリーンエデイタを欲したのです。
当時スクリーンエデイタといえば、ワードマスターとか10万以上もするようなのしか無かったと思います。
それで、結局自作のBASICインタプリタ用スクリーンエデイタもどきを作ったのでした。
そのために買ったのが、パソピア7だったという。(^^;
それが J3100SL に変わったころ、PSE や VZエデイタが出てきたのでした。

> もしBASICのプログラムをインタプリタに読み込ます機会があったら、RENUMコマンド
> をかけた結果を保存しておくべきでしょう。

その機会があればやってみたいと思います。
NP2 では、BASIC.COM は動かないみたいですが、これがインタプリタなのですよね。


11168/11135 CXB00940  としき           Re^4: MOD と ¥ の有効範囲
( 1) 24/03/21 11:14 11167へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 私はbasic歴が長いので、他の言語が小文字なのに違和感を感じました。

私もBASIC歴はそれなりに長いのですがね。
複数言語に触れたというのが大きな違いでしょうか。

> TBasicインタプリタは、RENUM 開始行番号,旧行番号,増分 となっています。

これはN88-BASICでもN-BASICでも同じです。

> でも私は使ったおぼえが無いですね。試したことはあるかもですが。

ここは逆というか、私は使いまくりでした。
特に便利に使っていたのが、GOTOの飛び先の行番号が実在しないときにはエラーを
表示してくれる機能。行の追加・削除を頻繁に行う場合には、これは必須という
くらいに便利でした。

> 私の場合、行番号を振り直すと逆に頭の中のソースのイメージが壊れて混乱してしまう
> 気がしたので使わなかったのかもですね。再印刷もなかなか出来なかったし。(^^;

この辺はよく理解できない。ということは、私の場合はあまり行番号に依存しないで
ソースをイメージしていたのかな。つまり、私にとっては、行番号なんて単なる飾り
だった、とか。
#私は偉くないから。

> これ、私はインデントなどしてなかったので、全く気になりませんでしたね。(^^;
> だから今回のテストプログラムも 10番から付けてしまったのです。(^^;

ここは私にとって大きな違い。
BASICでもバグの入りにくいコードを書こうと思っていたのでインデントしまくり。

> どうやら私は少数派のようですね。(^^;

別に少数派だからといって恥じる必要はさらさらありませんけどね。
ただ、多数派の言い分としては、そちらのほうがバグ取りがしやすい、というもの。
実際、私の経験からも、多数派のほうが正しそうな気がする。
ということで、バグ取りに悩まされたくないので、私も行番号をそろえていました。
あくまでも、実利優先、ということで。


11169/11135 CXB00940  としき           Re^3: オリジナルの prime.bas のソース
( 1) 24/03/22 23:02 11163へのコメント(としきさん)
参照先:http://toshiki.la.coocan.jp/
宿直の際にものすごく多忙で。
1時間半ぐらいしか仮眠を取れなかったのですが、帰宅後すぐに実家から墓参り。
墓までの往路はいささか危なかったのですが、それでもおおむね安全運転。
墓掃除その他もろもろですっかり眠気は取れて、実家への復路はほぼ問題なし。

それはさておき、現在、実家です。

> > ・110行目のTHENの行番号は省略できたかもしれない。
> あ、ここが省略できるかは確認してこなかった。

省略できることを確認しました。
これでまた少しコードサイズが節減。


11170/11135 CXB00940  としき           Re^7: TurboBasicで素数を表示カウントする PRIME2.EXE
( 1) 24/03/22 23:15 11164へのコメント(としきさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> ぼちぼち、移植を始めています。

ん〜、なんとなく動いているっぽい。
といいつつ、特にファイル書き込みの部分はろくに動作確認をしていないのだけど。

・N88-BASICだと、デフォルトは白黒モードなので、COLORでの色表示がうまくない。
 →おやくそくのCONSOLEでカラーモードにした。
・時間表示の部分、私の趣味で分と秒の間もコロンにした。
・エラー処理ルーチンの最後、CLSがあるとエラーで終わったことがわからなく
 なりそうだったので、これは除去した。

明示的にkonnoさんのコードに手を加えたのはこんなところかな。
あとは、各行にきちんと行番号をつけてやれば完成。
自宅に戻ったらアップロードしたいな。


11171/11135 BQO00549  konno            Re^5: MOD と ¥ の有効範囲
( 1) 24/03/24 00:08 11168へのコメント(としきさん)
> 別に少数派だからといって恥じる必要はさらさらありませんけどね。
> ただ、多数派の言い分としては、そちらのほうがバグ取りがしやすい、というもの。
> 実際、私の経験からも、多数派のほうが正しそうな気がする。
> ということで、バグ取りに悩まされたくないので、私も行番号をそろえていました。
> あくまでも、実利優先、ということで。

考えてみたら行番号必須のBASICインタプリタはプログラム言語全体では少数派なんですよね。
行番号付きのBASICインタプリタは作ったその場ですぐ実行できる初心者向きのお手軽な言語だと思います。
だから今でも教育用には使われているのでしょう。
本格的なプログラム言語には行番号は無いので、ラベルでジャンプしますよね。VZマクロも。

ということで、N88BASICなどと共用する場合を除いて行番号は無くす方向で行きたいと思います。
インデントは読みやすくなるのでなるべく心がけるようにします。


11172/11135 CXB00940  としき           Re^8: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/24 15:59 11170へのコメント(としきさん) コメント数:2
参照先:http://toshiki.la.coocan.jp/
> 自宅に戻ったらアップロードしたいな。

アップロードしました。

tp://toshiki.la.coocan.jp/prime88.zip

期間限定。そのうちに削除します。

> といいつつ、特にファイル書き込みの部分はろくに動作確認をしていないのだけど。

こんな短いコードなのに、全ての条件分岐を網羅するホワイトボックステストは
行っていない。面倒になっちゃって。あぁ、横着。
とはいえ、画面表示とファイル出力の、最低限のチェックはしたので、少なくとも
一部はPC-98のDOS BASICで動作確認済み。
GOTOとGOSUBのジャンプはほとんどラベル化したので、行番号はなくても論理構造は
理解可能なはず。konnoさんのお持ちのTurboBasicなら、例えばcols.defのようなもの
を使って全ての行番号を削除しても、もしかしたらコンパイル可能かも。
ラベルの文法が違うからダメ、かな。

あと、もしかしたらほんのちょっとだけ高速化するかもしれない技術を一つ、導入
してみました。

1360 IF INT(I/2)*2 = I THEN *EXIT2
1380 WHILE (J<SQR(I)) AND (INT(I/J)*J<>I)

ここ、多くの処理系では割り算よりも掛け算のほうが速いと聞いたことがあるので、
割り算を2回するのではなく掛け算と割り算の組み合わせに変更してみました。
これでどのくらい早くなるかは測定していないからわからない。
処理系によっては、むしろ遅くなったりして。
konnoさんオリジナルのロジックよりは、使う変数も少なくなっている分だけ速く
なってるかもしれないけど、こんなもん、最近のコンパイラなら最適化してくれる
でしょ、という範囲かもしれない。
あとはまぁ、PC-88などの8ビットマシンならDMAを停めるとか、ナノピコ秒単位で
速度を稼ぐためにインデントを全て削除してマルチステートメント化するとか、
他にもいろいろと思いつく技はいくつかありますけどね。そこまではしていません。


11173/11135 BQO00549  konno            Re^9: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/25 02:00 11172へのコメント(としきさん) コメント数:3
> アップロードしました。
> tp://toshiki.la.coocan.jp/prime88.zip

早速落として NP2 で動かしてみました。
#11162
> BASIC.COM がコンパイラなんですね。
なんて書きましたが、正しくは BACICC.COM でした。
BASIC Compiler ということなのですね。(^^;

B.BAT
basicc %1.bas %1.exe %1.lib
%1.exe

これを見て間違いに気が付きました。(^^;

さて、実行してみてまず気が付いたのは、変数 MAX の表示が
1E+08
になっていました。浮動小数点の表示形式ですね。

1070 MAX=100000000#

えーと、定数の末尾に # を付けているのは倍精度指定なのですか?
変数 MAX は単精度のように思われます。

> > といいつつ、特にファイル書き込みの部分はろくに動作確認をしていないのだけど。

オプション指定 1 で ファイルがキチンと出来ました。
ただ、素数の個数が私のと違いますね。

p1000.DAT
Number.1000 0: 0' 0 Prime Number = 168

n1000.DAT  N88
Number.1000 0: 0: 1 Prime Number = 169

どちらかがカウント数を間違っているかと思い、VZで比較したら

p1000.DAT
167
173

n1000.DAT  N88
167
169 ※ この行が多い
173

169 は、13*13=169 なので、素数では無いと思います。
今日は眠いのでこれ以上の調査は明日以降ということで。(^^;


11174/11135 CXB00940  としき           Re^10: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/25 23:13 11173へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> えーと、定数の末尾に # を付けているのは倍精度指定なのですか?
> 変数 MAX は単精度のように思われます。

おっしゃるとおりです。
変数を全て単精度指定に変更するときに修正をもらしたようです。
ただ、こちらは大勢に影響がありませんが

> 169 は、13*13=169 なので、素数では無いと思います。

こっちは大問題ですね。仕様どおりの挙動をしないのですから。
倍精度から単精度に精度を落としたことが悪いのか、それとも割り算と掛け算の
誤差の問題か。
いつ調査できるかわかりませんが、解決は図りたいと思います。


11175/11135 BQO00549  konno            PRIME88.BAS で 「169=素数?」問題
( 1) 24/03/26 20:11 11174へのコメント(としきさん) コメント数:2
> > 169 は、13*13=169 なので、素数では無いと思います。
>
> こっちは大問題ですね。仕様どおりの挙動をしないのですから。
> 倍精度から単精度に精度を落としたことが悪いのか、それとも割り算と掛け算の
> 誤差の問題か。

私は当初 NP2 のCPUエミュレーション等のバグを疑いました。
それで、anex86 でも試したのですが、結果は同じ。98NEXT では固まってしまいました。

次に疑ったのが、BASICコンパイラが壊れていないか。
1988/08/24 00:00 61,440 BASICC.COM
中身が壊れているることもありうるので、98実機での結果が知りたいところですね。

条件を色々変えて試しても結果は変わらなかったのですが、ひとつだけ

N88P.BAS
100 INPUT N
110 IF N MOD 2=0 THEN 120 ELSE *ELSE1
120 IF N=2 THEN PRINT "素数" ELSE PRINT "合成数"
130 GOTO *ENDIF1
140 *ELSE1
150 I=3
160 WHILE (I<=SQR(N)) AND (N MOD I<>0)
170 I=I+2
180 WEND
190 IF I<=SQR(N) THEN PRINT "合成数" ELSE PRINT "素数"
200 *ENDIF1
202 input a
210 END

このプログラムでは、169 は「素数」と表示されます。
ところがオリジナルを若干修正した以下

PN88.BAS
100 'pn88.bas
110 defdbl a-z '倍精度指定
1000 INPUT n
1010 IF (n MOD 2)=0 THEN IF n=2 THEN PRINT "素数" ELSE PRINT "合成数"
1020 j!=sqr(n) 'ELSE
1030 FOR i!=3 TO SQR(n) STEP 2
1040 IF n MOD i!=0 THEN *EXIT1
1050 NEXT i!
1052 *EXIT1
1060 IF i!<=SQR(n) THEN PRINT "合成数";i!;j!
1062 IF i!>SQR(n) THEN PRINT "素数";i!;j!
1070 input a 'END IF
1080 END

このプログラムでは、169 は「合成数」と表示されます。
違いは、変数全体を倍精度にし、FOR 文の変数を単精度にしただけかな。
# うーん、これを反映させても改善しない。何故だー! (;_;)


11176/11135 BQO00549  konno            Re^10: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/27 00:26 11173へのコメント(konnoさん) コメント数:2
> ここ、多くの処理系では割り算よりも掛け算のほうが速いと聞いたことがあるので、
> 割り算を2回するのではなく掛け算と割り算の組み合わせに変更してみました。
> これでどのくらい早くなるかは測定していないからわからない。
> 処理系によっては、むしろ遅くなったりして。

なるほど、そういうやり方もあるのですね。
このプログラムで 10000 指定の実行結果は

Number.10000 0: 0:30 Prime Number = 1233

このソースを私の FOR 文のに置き換えてみた結果は

Number.10000 0: 0: 8 Prime Number = 1233

実行時間が短縮されました。
コンパイラでは最適化でインタプリタと違う結果になるようです。
どこがどう効いたかわからないので、変更ソースを上げます。

1320 *START
1330 TM$=TIME$
1340 I=2:GOSUB *PRINT1
1350 FOR I=3 TO N '★
1360 ' IF INT(I/2)*2 = I THEN *EXIT2 '☆
1362 i2=i/2:i3=int(i/2):IF i2=i3 THEN goto *EXIT2 ' 合成数
1370 ' J=3 '☆
1380 ' WHILE (J<SQR(I)) AND (INT(I/J)*J<>I) '☆
1382 FOR J=3 TO int(SQR(I)) STEP 2 '★ 偶数をスキップ
1390 ' J=J+1 '☆
1392 I2=I/J:I3=INT(I/J):IF I2=I3 THEN GOTO *EXIT1 '★ 合成数
1400 ' WEND '☆
1402 NEXT J '★
1404 *EXIT1 '★
1406 ' if i=169 then print " 13 =";i;sqr(i);j:goto *exit2
1408 ' IF i=169 then if J=SQR(I) THEN *EXIT2
1410 IF SQR(I)<J THEN GOSUB *PRINT1
1420 *EXIT2
1430 NEXT I
1440 I=I-1

ちなみに、VGA版の結果は

Number.10000 0: 0' 1 Prime Number = 1229

結果の素数の数が 4 違いますね。

--- N88 ---
169 13*13
5041 71*71
6241 79*79
9409 97*97

10000 で 4 箇所 合成数が含まれています。
何が原因かわからないです。


11177/11135 BQO00549  konno            Re: PRIME88.BAS で 「169=素数?」問題解決か
( 1) 24/03/27 22:56 11175へのコメント(konnoさん)
不具合の原因がわかりました。
SQR() 関数の結果判定に問題が有ったようです。

PRIME98.BAS

1320 *START
1330 TM$=TIME$
1340 I=2:GOSUB *PRINT1
1350 FOR I=3 TO N '
1360 i2=i/2:i3=int(i/2):IF i2=i3 THEN *EXIT2 ' 合成数
1370 j2=int(SQR(I)) '
1380 FOR J=3 TO j2 STEP 2 ' 偶数をスキップ
1390 I2=I/J:I3=INT(I/J):IF I2=I3 THEN *EXIT2 ' 合成数
1400 NEXT J
1410 IF J>SQR(I)+.0001 THEN GOSUB *PRINT1 '★
1420 *EXIT2
1430 NEXT I
1440 I=I-1

このように、SQR() に +0.0001 を足したら問題が解消されました。
計算精度の問題か、最小桁が切り捨てられているのでしょうか。
いくつ足せばいいのか桁を変えて試してみました。

1410 IF J>SQR(I)+.000001 THEN GOSUB *PRINT1 ng
Number.10000 0: 0:29 Prime Number = 1233
169 5041 6241 9409 ng

1410 IF J>SQR(I)+.00001 THEN GOSUB *PRINT1 ng
Number.10000 0: 0:30 Prime Number = 1232
5041 6241 9409 ng

1410 IF J>SQR(I)+.0001 THEN GOSUB *PRINT1 ok
Number.100000 0: 2:29 Prime Number = 9592

どうも N88BASIC の問題のような気がしますが、実機でどうなるか知りたいですね。


11178/11135 CXB00940  としき           Re^11: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/28 00:43 11176へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
あ、これはまずい。

> このプログラムで 10000 指定の実行結果は
> Number.10000 0: 0:30 Prime Number = 1233
> このソースを私の FOR 文のに置き換えてみた結果は
> Number.10000 0: 0: 8 Prime Number = 1233
> 実行時間が短縮されました。

この差は大きすぎる。プログラムに間違いがあるから。

> 1382 FOR J=3 TO int(SQR(I)) STEP 2 '★ 偶数をスキップ
> 1390 ' J=J+1 '☆

ここのところ、STEP 2 なんだから、J=J+2 でなければならない。
単純にループ回数が2倍になってしまう。
ということで、おそらく、30秒は15秒ぐらいまで短縮できるはずだけど、それでも
やっぱり8秒までは縮まらないと思う。

SQR関数の精度のほうは、どうしようかな。


11179/11135 BQO00549  konno            SQRの計算式
( 1) 24/03/30 15:58 11178へのコメント(としきさん) コメント数:1
SQRの計算を自前で出来ないか検索してみました。
「本の虫」のサイトの「平方根のアルゴリズム 」
https://cpplover.blogspot.com/2010/11/blog-post_20.html

ここがわかりやすかったのでここから引用します。
-----------------------------------------------------------

ここで使うのは、バビロニア人の方法(Babylonian method)と呼ばれている、歴史あるアルゴリズムである。
この方法は、手動でも、プログラミングでも、非常に簡単に計算できる、大変便利で汎用的なアルゴリズムである。
しかも、速度もそれほど遅くない。

double sqrt( double s )
{
double x = s / 2.0 ; // Is there any better way to determine initial value?
double last_x = 0.0 ; // the value one before the last step

while ( x != last_x ) // until the difference is not significant
{ // apply Babylonian method step
last_x = x ;
x = (x + s / x) / 2.0 ;
}

return x ;
}

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

これを TurboBasic に置き換えたテストが

3000 ' SQR1.BAS
3010 'defdbl a-z
3020 screen 0
3030 cls
3040 input s
3050 x = s / 2.0 '; // Is there any better way to determine initial value?
3060 lastx = 0.0 '; // the value one before the last step
3070 ' while ( x != lastx ) '// until the difference is not significant
3080 'loop1:
3090 lastx = x
3100 x = (x + s / x) / 2.0
3110 if x <> lastx then 3080 'loop1
3120 print "SQR(";s;")=";x,lastx
3130 input a
3140 end

3020行をコメントにすれば N88BASIC でも動作します。
これをサブルーチンにして PRIME88.BAS に貼り付けて

1320 *START
1330 TM$=TIME$
1340 I=2:GOSUB *PRINT1
1350 FOR I=3 TO N
1360 IF INT(I/2)*2 = I THEN *EXIT2
1370 J=3
1375 s=I:gosub 3050:s=xx '★
1380 WHILE (J<s) AND (INT(I/J)*J<>I) '★
1390 J=J+1 '★★
1400 WEND
1410 IF J>s THEN GOSUB *PRINT1 '★
1420 *EXIT2
1430 NEXT I
1440 I=I-1

この結果は
Number.10000 0: 0:14 Prime Number = 1229

おお、素数が合ってるし、時間が半分になりました。
SQR()関数を2回実行していたのをサブルーチン1回にしたのが効いたみたいです。

さらに、★★ のところを
1390 J=J+2 '★★
このように +2 に変更した結果
Number.10000 0: 0: 9 Prime Number = 1229

おお、時間がさらに短縮して、FOR文のループとほぼ同じになりました。
ちなみに FOR文のソースにこのサブルーチンを組み込んだら
Number.10000 0: 0:11 Prime Number = 1229

2〜3秒遅くなりましたね。これが関数とサブルーチンの速度差と思われます。
思ったよりも差が無いなぁ、というのが感想です。(^^;

素数のネタはこの辺でしまいにしたいところですね。


11180/11135 CXB00940  としき           Re: SQRの計算式
( 1) 24/03/30 23:41 11179へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> これを TurboBasic に置き換えたテストが

えと、whileのループをifのジャンプに変更したのはなぜでしょうか。
こちらのほうが速いのですか?

> 素数のネタはこの辺でしまいにしたいところですね。

そうですね。
明日、31日に実家へ行くので、時間が取れたら実機でいくつか試したいところ。
実は、父の命日が31日なんですよ。
ただ、日が近いということで、多くの場合、墓参りはお彼岸に集約されています。
天候だとか諸事情でお彼岸に墓参りできないときだけ命日に墓参り、と言う感じ
なのですが、まぁいろいろと存在しない事情をでっち上げて実家に顔を出すところ
まではアポイント済み。ただ、時間が取れるかどうかは別問題なんで。


11181/11135 CXB00940  としき           Re^10: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/31 14:09 11173へのコメント(konnoさん)
参照先:http://toshiki.la.coocan.jp/
実家に来ています。
まず、先日アップしたあのプログラムをそのまま実行したのですが

> Number.1000 0: 0' 0 Prime Number = 168

うちのN88-BASICでは、素数の数が168になりました。
169は素数としてカウントされませんでした。
どうやらSQR関数、うちの環境のほうが精度が高いらしい。
ちなみに、ファイル出力ではなく画面表示で、所要時間は0秒〜1秒くらい。
あまり違いはないですね。

とりあえず時間切れ、続きは後ほど。

11182/11135 CXB00940  としき           Re^11: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/31 15:48 11176へのコメント(konnoさん)
参照先:http://toshiki.la.coocan.jp/
続いて、先日上げたプログラムのまま、すなわち、SQR関数の部分もいじらず、
変数Jのカウントアップも1ずつのままで10000までの結果。

> Number.10000 0: 0' 1 Prime Number = 1229

素数の数は1229と出ました。やっぱりうちの環境では誤差がないみたい。
ちなみに、所要時間は、画面表示だと12秒、ファイル出力だと13秒。
これはいささか直感と記憶に反している。
記憶だと、画面表示のほうがスクロールアップに時間がとられるので遅くなったはず
なのですがね。ま、でも、誤差の範囲。

次、変数 J のカウントアップを J=J+2 としたら所要時間は7秒まで短縮。
やっぱりループ回数が2倍というのは大きかった模様。
素数の数は1229なので、計算誤差の問題もないですね。

ところで、うちのBASICインタープリタは1987年製のVer5.0というやつです。
konnoさんのところの版数とかはわかりますか?


11183/11135 CXB00940  としき           Re^9: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/03/31 16:08 11172へのコメント(としきさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
実家での検証、最後。

> ここ、多くの処理系では割り算よりも掛け算のほうが速いと聞いたことがあるので、
> 割り算を2回するのではなく掛け算と割り算の組み合わせに変更してみました。
> これでどのくらい早くなるかは測定していないからわからない。

メインのループを

1350 FOR I=3 TO N
1360 IF INT(I/2)*2 = I THEN *EXIT2
1370 J=3:I2=I/J:I3=INT(I/J)
1380 WHILE J<SQR(I) AND I2<>I3
1390 J=J+2:I2=I/J:I3=INT(I/J)
1400 WEND
1410 IF J>SQR(I) THEN GOSUB *PRINT1
1420 *EXIT2
1430 NEXT I

こうやって、割り算2回で20000までの素数を求めたら21秒で2262個。
元のままの、割り算と掛け算だと17秒、2262個。
うん、やっぱりうちでは、誤差というには差が大きいくらい、掛け算のほうが早い
模様。


以上、レス元が分散して申し訳ありませんが、実家での検証3連発でした。


11184/11135 BQO00549  konno            Re^2: SQRの計算式
( 1) 24/03/31 22:26 11180へのコメント(としきさん)
> えと、whileのループをifのジャンプに変更したのはなぜでしょうか。
> こちらのほうが速いのですか?

私は while文をあまり使わないので、無意識に 慣れた IF文に変えてしまってました。(^^;
オリジナルのソースに wend を入れるだけでしたね。(^^;

#11179 で書きましたが
> ちなみに FOR文のソースにこのサブルーチンを組み込んだら
> Number.10000 0: 0:11 Prime Number = 1229
> 2〜3秒遅くなりましたね。これが関数とサブルーチンの速度差と思われます。

同じ条件では、while文の方が速いと思われます。
そこで、このサブルーチンの while と FOR で比較してみました。

FOR文 Number.100000 0: 2:51 Prime Number = 9592
WHILE文 Number.100000 0: 2:47 Prime Number = 9592

10万で4秒の差でした。思ったよりも差が小さかったですね。
SQR 1回あたり7〜10回程度のループで済んでいるから差が小さいのでしょう。

> なのですが、まぁいろいろと存在しない事情をでっち上げて実家に顔を出すところ
> まではアポイント済み。ただ、時間が取れるかどうかは別問題なんで。

お手間を取らせて申し訳ないですが、よろしくお願いします。


11185/11135 BQO00549  konno            Re^10: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/04/01 00:27 11183へのコメント(としきさん) コメント数:2
ここにまとレスします。

> > Number.1000 0: 0' 0 Prime Number = 168
> うちのN88-BASICでは、素数の数が168になりました。
> 169は素数としてカウントされませんでした。
> どうやらSQR関数、うちの環境のほうが精度が高いらしい。

これは驚きです! ということは、98エミュの問題か、ファイルが壊れているかですね。

> ちなみに、所要時間は、画面表示だと12秒、ファイル出力だと13秒。
> これはいささか直感と記憶に反している。

TurboBasic でも同じような結果です。画面表示は遅いというのは思い込みなのでしょう。

> ところで、うちのBASICインタープリタは1987年製のVer5.0というやつです。
> konnoさんのところの版数とかはわかりますか?

88-BASIC(86) Compiler version 6.0
1988/08/24 00:00 61,440 BASICC.COM

うちで使用したコンパイラ版はこれですね。

> こうやって、割り算2回で20000までの素数を求めたら21秒で2262個。
> 元のままの、割り算と掛け算だと17秒、2262個。
> うん、やっぱりうちでは、誤差というには差が大きいくらい、掛け算のほうが早い
> 模様。

なるほど。やはり掛け算が速いのですね。

> 以上、レス元が分散して申し訳ありませんが、実家での検証3連発でした。

お忙しい中色々検証していただき、ありがたいです。
N88BASICの精度疑惑も晴れたので、98エミュの検証が必要そうですね。


11186/11135 BQO00549  konno            T98-NEXT でN88BASIC検証
( 1) 24/04/02 00:16 11185へのコメント(konnoさん)
以前N88BASICが動かなかったT98-NEXT で再挑戦しました。
コンパイラ版が動かなかったのはメモリ不足だったようです。
ATOK8がメインメモリに居座っていたので削除したら動きました。(^^;
ただし、BATのオプションが効かなくて、ソースファイル名を手打ちしました。(^^;
結果はほかのエミュと同じで駄目でした。

インタプリタも、実機ROMにチェックを入れたら動きました。
結果はやっぱり駄目でした。
98エミュは全滅です。

うーむ、このバージョンの N88BASIC に問題がある可能性があるのでしょうか。


11187/11135 CXB00940  としき           Re^11: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/04/03 16:20 11185へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> これは驚きです! ということは、98エミュの問題か、ファイルが壊れているか

エミュの問題、というのは考え易いところです。
が、ファイルの破壊となった場合、そんな精度に関係するところが絶妙に壊れる、
というのはなかなか考えにくい。
ただ、N88(86)では使っていない技術だとは思いますが、いくつかの処理系では、
関数の速度と精度向上のため、全てを計算で求めるのではなく、大きな定数表を
使う場合がある、と聞いたことはあります。とはいっても超巨大というほどの表
ではなく、引数のいくつかに分解して、それぞれの結果を足すとかかけるとかで
速度と精度を両立させます。
その場合は、その定数表の一部だけが間違っているとか精度が足りないことが発生
しうるわけです。でも、これって、三角関数とか対数関係の関数で使うワザだった
ような気がする。
平方根でも使うことがあるのかなぁ。

> 88-BASIC(86) Compiler version 6.0
> 1988/08/24 00:00 61,440 BASICC.COM

これ、頭のNが欠けているのは転記ミスですよね。
実は、私の記憶でも、88年のVer6が最終版、ということになっているからです。
そして私の手元には87年のVer5しかないわけですが、バージョンアップするかどうか
という判断に際して、どこが変わったかという情報がなくてバージョンアップを
しなかった、というおぼろげな記憶があります。
ところでkonnoさんのところでは、TurboBasicではなく、N88BASICのコンパイラと
インタプリタで同じ結果になります?
あと、インタプリタとコンパイラでバージョンは同じですか?


11188/11188 CXB00940  としき           「全部表示 会議室風」が何かおかしい
( 1) 24/04/03 17:29 コメント数:1
参照先:http://toshiki.la.coocan.jp/
こちらの掲示板での過去ログ表示で気がつきました。
[全部表示 会議室風]のリンクを押して表示される発言の中に、そのログのトップの
ツリーのルートの発言が含まれていないようです。
具体的には

過去ログ26では#10734
過去ログ25では#10632
過去ログ24では#10229
・・・
過去ログ2では#974
過去ログ1では#418

が表示されないようです。
ご確認をお願いします。


11189/11135 BQO00549  konno            Re^12: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/04/04 01:01 11187へのコメント(としきさん) コメント数:1
> その場合は、その定数表の一部だけが間違っているとか精度が足りないことが発生
> しうるわけです。でも、これって、三角関数とか対数関係の関数で使うワザだった
> ような気がする。
> 平方根でも使うことがあるのかなぁ。

原因が分かったような気がします。
N88BASIC(86) では、FOR文が倍精度では動かないので単精度でやって NG だったのですが
1030 defdbl A-Z と変数を倍精度にし、FOR文の I だけ I! で単精度でやってみました。

1340 I=2:GOSUB *PRINT1
1342 i=3
1350 FOR I!=3 TO N
1360 IF INT(I/2)*2 = I THEN *EXIT2
1370 J=3
1380 WHILE (J<SQR(I)) AND (INT(I/J)*J<>I)
1390 J=J+1
1400 WEND
1410 IF J>SQR(I) THEN GOSUB *PRINT1
1420 *EXIT2
1422 i=i+1
1430 NEXT I!
1440 I=I-1

他は変えていませんが、このプログラムでは 169 が表示されず、正常になりました。
# 汚れていたのは SQR(I) だったんです。(By now shika)

変数 I が倍精度だと数値の比較が正常なのに、単精度だと 表示は整数でも内部の計算がズレる模様。
想像ですが、例えば比較計算は倍精度で、表示は単精度に丸められているとか。

> > 88-BASIC(86) Compiler version 6.0
> > 1988/08/24 00:00 61,440 BASICC.COM
> これ、頭のNが欠けているのは転記ミスですよね。

はい、そうです。失礼しました。m(__)m

> ところでkonnoさんのところでは、TurboBasicではなく、N88BASICのコンパイラと
> インタプリタで同じ結果になります?

同じ結果になります。上の実験はインタプリタではしてないですが。

> あと、インタプリタとコンパイラでバージョンは同じですか?

同じだと思います。起動メッセージが同じなので。
日付は少し違いますね。


11190/11188 BQO00549  konno            Re: 「全部表示 会議室風」が何かおかしい
( 1) 24/04/04 01:07 11188へのコメント(としきさん) コメント数:1
> こちらの掲示板での過去ログ表示で気がつきました。
> [全部表示 会議室風]のリンクを押して表示される発言の中に、そのログのトップの
> ツリーのルートの発言が含まれていないようです。

げげげ、・・・・・・

確認しました。しばしお待ちください。m(__)m


11191/11135 CXB00940  としき           Re^13: N88-BASICで素数を表示カウントする PRIME88.BAS
( 1) 24/04/04 12:15 11189へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
「妙だな」というのは、どこぞの小学生のよく言うせりふですが、それはさておき。
#11164にも書きましたが、N88だと単精度でも倍精度でも上限は同じです。
また、演算速度が単精度の方が速いという理由から私は全て単精度でやっているの
ですが、konnoさんが倍精度を選ばれている理由は何ですか?
他のBASICだと上限が違うとかあるのでしょうか。

さて、私のコードでは全て単精度でやっています。なので、精度変換の問題は出ない
はず。実際、うちでは問題が出ていません。
でも、#11173では、同じコードで問題が出ているということです。
なので、これは精度変換の問題ではないと思われます。


> 他は変えていませんが、このプログラムでは 169 が表示されず、正常になりました。

このプログラムだと、単精度の I! と倍精度の I の両方でカウント処理が発生します。
倍精度の I だけ使って WHILE のループにしたほうがいいような気がします。


> 想像ですが、例えば比較計算は倍精度で、表示は単精度に丸められているとか。

N88のマニュアルでは、異なる型同士での演算の場合は高い精度のほうに合わせて
行われるとのこと。これは比較演算でも同じはず。

で、私の疑っていた、konnoさんのところのコンパイラとインタプリタのバージョン
違いという疑いは晴れたので、するとあとは、私のところのバージョンとkonnoさん
のところのバージョンが異なる、という問題は残ります。
とりあえず、出発点は#11173。同じコードなのに結果が異なる、ということ。
あ、重要な問題がある。
私がもしかしたら、アップしたのとは異なるコードを実行していた可能性。
実はこの可能性が一番高いかも。


11192/11135 CXB00940  としき           Re: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/05 02:07 11175へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
自分で実験できないのにあれこれ言って申し訳ありません。

> 条件を色々変えて試しても結果は変わらなかったのですが、ひとつだけ
> N88P.BAS
> ところがオリジナルを若干修正した以下
> PN88.BAS

N88P.BASとPN88.BAS、konnoさん的には「若干修正」かもしれませんが、内部的には
もしかしたら大幅な修正かもしれません。
そこで結果を教えていただきたいのが、

> PN88.BAS
> 110 defdbl a-z '倍精度指定

ここを単精度指定にしたらどうなるか、ということ。
とても興味があります。


11193/11188 BQO00549  konno            Re^2: 「全部表示 会議室風」が何かおかしい
( 1) 24/04/06 00:30 11190へのコメント(konnoさん) コメント数:1
> > [全部表示 会議室風]のリンクを押して表示される発言の中に、そのログのトップの
> > ツリーのルートの発言が含まれていないようです。
> 確認しました。しばしお待ちください。m(__)m

ううう、3日間腐海暗闇の中で藻掻いていました。(;_;)

wforum.cgi を色々弄ってみましたがどうやってもルート発言が表示されません。(>_<)
仕方がないので過去ログの先頭に改行を追加してみたら表示されました。
うげぇ、今までの苦労は何だったんだ・・・・

唯の改行だとツリー表示にゴミが表示されるので、現行ログの形式でダミーを入れました。

0001<>00.00.00.00<>1097421569<>
番号 IPアドレス 書き込み時間(古ければスキップ?)

このように、書き込み時間が古ければ自動的にスキップしてくれるようです。
この処理をどこでやっているのかはわかりません。
色々弄った版はツリー表示がおかしくなったので、修正前のに戻したら直りました。

結局 cgi は弄らずに、過去ログ形式を変更することで解決しました。(-_-;) ヤレヤレダゼ
何かおかしなところに気が付いたら教えてください。m(__)m


11194/11135 BQO00549  konno            Re^14: N88-BASICで素数表示の問題
( 1) 24/04/06 01:40 11191へのコメント(としきさん) コメント数:1
> #11164にも書きましたが、N88だと単精度でも倍精度でも上限は同じです。
> また、演算速度が単精度の方が速いという理由から私は全て単精度でやっているの
> ですが、konnoさんが倍精度を選ばれている理由は何ですか?

N88 は FOR文のカウントに倍精度が使えない制限があるようです。
それで単精度でやったら問題が出たので、倍精度でやり直してみたという経緯です。

> さて、私のコードでは全て単精度でやっています。なので、精度変換の問題は出ない
> はず。実際、うちでは問題が出ていません。
> でも、#11173では、同じコードで問題が出ているということです。
> なので、これは精度変換の問題ではないと思われます。

私は N88BASIC の特定のバージョン(V6.0)の問題なのではないかと疑っています。
もちろん 98エミュの問題の可能性も排除できないので実機で確認したいのです。

> > 他は変えていませんが、このプログラムでは 169 が表示されず、正常になりました。
> このプログラムだと、単精度の I! と倍精度の I の両方でカウント処理が発生します。
> 倍精度の I だけ使って WHILE のループにしたほうがいいような気がします。

私は while の入れ子は特に間違えやすいので、FOR文でやりました。
結果は同じになると思います。

> N88のマニュアルでは、異なる型同士での演算の場合は高い精度のほうに合わせて
> 行われるとのこと。これは比較演算でも同じはず。

なるほど、それで謎の挙動がわかったような気がします。
比較の実験結果をあげてみます。


11195/11135 BQO00549  konno            Re^2: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/06 02:05 11192へのコメント(としきさん) コメント数:2
> > PN88.BAS
> > 110 defdbl a-z '倍精度指定
>
> ここを単精度指定にしたらどうなるか、ということ。
> とても興味があります。

丁度良いテストプログラムを作ったので上げます。

3000 ' SQR88.BAS
3010 'defdbl a-z
3012 defsng a-z
3020 'screen 0
3030 cls
3040 input s
3042 OPEN "SQR.dat" FOR OUTPUT AS #1
3046 cc=0
3050 x = s / 2.0 '; // Is there any better way to determine initial value?
3060 lastx = 0.0 '; // the value one before the last step
3070 'while ( x != lastx ) '// until the difference is not significant
3090 lastx = x
3100 x = (x + s / x) / 2.0
3112 cc=cc+1
3114 print x;lastx,cc
3116 print#1, x;lastx,cc
3110 if x < lastx then 3070
3120 print "SQR(";s;")=";x,lastx,cc
3122 print#1, "SQR(";s;")=";x,lastx,cc
3124 close
3130 input a
3140 end

このプログラムで、TurboBasic の結果は

単精度
43.25 84.5 1
23.57875633239746 43.25 2
15.37311267852783 23.57875633239746 3
13.18316555023193 15.37311267852783 4
13.00127220153808 13.18316555023193 5
13 13.00127220153808 6
13 13 7
SQR( 169 )= 13 13 7 回

倍精度
43.25 84.5 1
23.57875722543352 43.25 2
15.37311286945074 23.57875722543352 3
13.18316604902914 15.37311286945074 4
13.00127244856782 13.18316604902914 5
13.00000006226796 13.00127244856782 6
13 13.00000006226796 7
13 13 8
SQR( 169 )= 13 13 8 回

倍精度の方が収束するのに1回多く掛かっています。
どちらでも計算は倍精度でやっているのがわかります。
一方、N88BASIC の結果は

単精度
43.25 84.5 1
23.5788 43.25 2
15.3731 23.5788 3
13.1832 15.3731 4
13.0013 13.1832 5
13 13.0013 6
13 13 7
SQR( 169 )= 13 13 7 回

倍精度
43.25 84.5 1
23.57875722543353 43.25 2
15.37311286945074 23.57875722543353 3
13.18316604902914 15.37311286945074 4
13.00127244856782 13.18316604902914 5
13.00000006226796 13.00127244856782 6
13 13.00000006226796 7
13 13 8
13 13 9
SQR( 169 )= 13 13 9 回

おや、単精度の場合は SQR の計算も単精度なのか、それとも表示だけなのか?
倍精度では収束したのにさらにもう1回多く計算しています。???
この結果は、WHILE 文にしても同じでした。
そして、単精度の時だけ 169 が素数と誤判定しているのです。

このことから私は、「>」や「>=」などの比較式で単精度の時だけ誤差が出ていると疑ったのです。
V6.0に問題が有るかどうかは、実機で確認する以外にわからないと思います。


11196/11188 CXB00940  としき           Re^3: 「全部表示 会議室風」が何かおかしい
( 1) 24/04/06 10:50 11193へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 仕方がないので過去ログの先頭に改行を追加してみたら表示されました。

この現象から見ると、過去ログと現行ログでの分岐に問題がありそうですね。
まさかと思いますが、そもそも分岐していない、とか。

> この処理をどこでやっているのかはわかりません。

もともとこのルーチン、作ったのはkonnoさんですから。
作った本人がわからないようではどうしようもありません。
もう大丈夫だとは思いますが、不要なコメント、とかいう目くらましにやられて
いる、ということはないでしょうか。

とりあえず、今のところは問題ないような感じです。


11197/11135 CXB00940  としき           Re^15: N88-BASICで素数表示の問題
( 1) 24/04/06 11:26 11194へのコメント(konnoさん)
参照先:http://toshiki.la.coocan.jp/
> N88 は FOR文のカウントに倍精度が使えない制限があるようです。

そです。
これはマニュアルにも明記されている仕様です。

> それで単精度でやったら問題が出たので、倍精度でやり直してみたという経緯です。

なるほど、いきさつが理解できました。

> 私は N88BASIC の特定のバージョン(V6.0)の問題なのではないかと疑っています。

現時点では、私もこの線が濃厚だと思っております。

> 私は while の入れ子は特に間違えやすいので、FOR文でやりました。

BASICを極めたいのならWHILEは避けて通れません。
私もかなり錆付いてはいますが、まだkonnoさんより私のほうが、BASICに関しては
一日の長がありそうな感じ。

> 結果は同じになると思います。

いや、結果の問題ではなく速度の問題。
加算するのはループカウンタだけでいいでしょう、ということです。


11198/11135 CXB00940  としき           Re^3: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/06 11:27 11195へのコメント(konnoさん)
参照先:http://toshiki.la.coocan.jp/
> 3000 ' SQR88.BAS

これ、あとで私も検証してみます。最短で今日の午後。

> このプログラムで、TurboBasic の結果は

> どちらでも計算は倍精度でやっているのがわかります。

ダウト。

> 単精度
> 43.25 84.5 1
> 23.57875633239746 43.25 2

> 倍精度
> 43.25 84.5 1
> 23.57875722543352 43.25 2

もうここですでに値が異なります。
すなわち、表示だけ倍精度、という可能性が濃厚。

> おや、単精度の場合は SQR の計算も単精度なのか、それとも表示だけなのか?

N88の場合、仕様では、引数の型が結果の型、ということになっています。
このプログラムでは、2.0 という単精度型で割り算をしています。
ここを 2# としてみたら、もしかしたら違いが出てくる可能性があります。


11199/11135 CXB00940  としき           Re^3: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/06 14:51 11195へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
実家に来ています。
うちの母、風邪気味だというのに買い物に行きたいのだとか。
母と同居しているうちの弟、免許すら持っていないので、その手の案件は私が対応。
ということで、まもなく連れ出されてしまいますが、その前に。

まず、うちのN88BASIC、コンパイラはありません。
タイムスタンプは以下。

N88BASIC EXE 161,280 87-10-30 0:00
N88BASIC LIB 178,176 86-08-14 13:51

ん〜、ライブラリのほう、もしかしたらバージョンが古いかも。
そして、この環境で

> 丁度良いテストプログラムを作ったので上げます。
> 3000 ' SQR88.BAS

このプログラムを load して list をみたら、

3050 X = S / 2! '; // Is there any better way to determine initial value?
3100 X = (X + S / X) / 2!

と、自動で変換されてしまっていました。
もしかしたらkonnoさんのところでも、この手の意図せざる自動変換が発生している
かもしれません。当然、コンパイラのほうでも。
一度、インタプリタのほうで list をたたいて、自動変換の有無を確認されたほうが
いいでしょう。

そして、読み込ませてすぐに run させたら、あれ?
konnoさんのところと実行結果が異なる。
何が異なるって、途中経過が一切表示されない。妙だな。
よくリストを見たら、結果表示がループの外に出ている。
こういうトリックはやめて欲しいけど、でも私も良くやるので人のことは言えない。
とりあえず、3110行の if 文を3123行に持ってきて、ここで時間切れ。

続きは帰宅後。
何時ぐらいになるかなぁ。


11200/11135 CXB00940  としき           Re^4: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/06 23:09 11199へのコメント(としきさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> 続きは帰宅後。

続きです。

> よくリストを見たら、結果表示がループの外に出ている。
> こういうトリックはやめて欲しいけど、でも私も良くやるので人のことは言えない。

違う。
結果表示が改行されず、同一行に上書きされているような感じ。
つまり、トリックは私が仕掛けた、ということで。
大変失礼しました。
そして、私が悪かったにもかかわらず

> とりあえず、3110行の if 文を3123行に持ってきて、ここで時間切れ。

こんなことをやったから、出力書式がめちゃくちゃ。
とりあえず、konnoさんと同じような書式にVzでそろえた結果です。

単精度2.0
43.25 84.5 1
23.5788 43.25 2
15.3731 23.5788 3
13.1832 15.3731 4
13.0013 13.1832 5
13 13.0013 6
13 13 7
SQR( 169 )= 13 13 7

倍精度2.0
43.25 84.5 1
23.57875722543353 43.25 2
15.37311286945074 23.57875722543353 3
13.18316604902914 15.37311286945074 4
13.00127244856782 13.18316604902914 5
13.00000006226796 13.00127244856782 6
13 13.00000006226796 7
13 13 8
13 13 9
SQR( 169 )= 13 13 9

念のため、2! のところを全て 2# にしてみたけど、結果は同じでした。

どうも、見たところ、結果は全て同じ。
収束したのに1回多くループを回っているところも同じ。
にもかかわらず、うちの環境では、169は素数にならない。
まだアップしたままのprime88.zipを再度落としてみて、ファイル比較して同じもので
あることも確認済み。そして、名前を変えて、新しく落としたほうを実行してみて
169が素数にならないことも確認済み。

何じゃこりゃ。


11201/11188 BQO00549  konno            Re^4: 「全部表示 会議室風」が何かおかしい
( 1) 24/04/07 00:51 11196へのコメント(としきさん)
> > 仕方がないので過去ログの先頭に改行を追加してみたら表示されました。
>
> この現象から見ると、過去ログと現行ログでの分岐に問題がありそうですね。
> まさかと思いますが、そもそも分岐していない、とか。

うう、そのまさかでした。(>_<)

open(IN,"$logfile") || &error("Open Error: $logfile");
$top = <IN>;

こうなっていたところを
# $top = <IN>;
$top = <IN> if ($in{'act'} ne "past");

こう変更したら今までの過去ログファイルのままでも正常になりました。
うう、これも試していたのに弄りすぎておかしくなっていたようです。(>_<)
アドバイスありがとうございました。m(__)m


11202/11135 CXB00940  としき           Re^5: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/07 01:17 11200へのコメント(としきさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
訂正、ではないような。
補足、かな。

> > よくリストを見たら、結果表示がループの外に出ている。
> > こういうトリックはやめて欲しいけど、でも私も良くやるので人のことは言えない。
>
> 違う。
> 結果表示が改行されず、同一行に上書きされているような感じ。
> つまり、トリックは私が仕掛けた、ということで。

結果表示が上書きのよう、というのはそのとおりなんですが。
結果表示がループの外、というトリックは、やっぱりkonnoさんだった。

#11195より

> 3070 'while ( x != lastx ) '// until the difference is not significant
> 3090 lastx = x
> 3100 x = (x + s / x) / 2.0
> 3112 cc=cc+1
> 3114 print x;lastx,cc
> 3116 print#1, x;lastx,cc
> 3110 if x < lastx then 3070
> 3120 print "SQR(";s;")=";x,lastx,cc
> 3122 print#1, "SQR(";s;")=";x,lastx,cc

これ、行番号順に並んでいないじゃないのよさ。
BASICの場合、行番号順に実行されるわけですから、実行時には

> 3070 'while ( x != lastx ) '// until the difference is not significant
> 3090 lastx = x
> 3100 x = (x + s / x) / 2.0
> 3110 if x < lastx then 3070
> 3112 cc=cc+1
> 3114 print x;lastx,cc
> 3116 print#1, x;lastx,cc
> 3120 print "SQR(";s;")=";x,lastx,cc
> 3122 print#1, "SQR(";s;")=";x,lastx,cc

となるわけでして。
まったくもう。
前にも書いたと思いますが、もうちょっと行番号の並びとかインデントに気を配って
プログラムを書いていただけないでしょうか。
バグが混入し易くなりますよ、と、繰り返しお伝えしていますよね。
こうやって、残り少ない人生を無駄にしてしまうわけですから。

でも、このプログラムだと、N88なら、ループ内での途中表示は全くないはず。
つまり、#11195の結果は出ないはず。
すると、あの結果はどうやって出したのだろう。
結果の出たあと、プログラムを書き換えてからアップした?
違う処理系での結果をN88での結果と間違えて書いた?



それはさておき。
ゆっくり入浴していたときにつらつらと思い出したこと。
大学時代の情報処理初級の授業で、丸め誤差と打切り誤差、桁落ち、情報落ちの
違い、なんてことをやったわけですよ。もはやほとんど覚えていませんがね。
そして、そういった誤差をなくすための方法として多倍長精度演算というのがある、
ということも思い出しました。こいつをやるとてきめんに遅くなるのですが、誤差も
非常に少なくなる。多倍長用のuBASICというのを知ったのは、確か私が大学を卒業
した直後ぐらいだったか。
多倍長っていうのは、例えば、1バイトに数字一桁しか格納しない、という方法。
実際の実装では、そんなことやっていたらメモリ効率が悪いので、1バイトに0から
99までの2桁の数字を格納する、なんていうのが多いかな。86のアセンブラにも
それようの命令があったんじゃないかな、BCD演算、というやつ。Z80にはあった
ような気がする。
そしてアセンブラにあるくらいだからBASICにもあるわけでして、もしかしたら上記
のuBASICがそうだったかもしれないけど、10進BASICという実装があったはず。

で、話を戻して、誤差。

> 3110 if x < lastx then 3070

こいつを

> 3110 if x < lastx then print "div=",lastx-x:goto 3070

とやってみたらどうでしょう。
1回多くループするところで、いったい何がおきているのか見えてくるかも。


11203/11135 BQO00549  konno            Re^6: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/07 20:41 11202へのコメント(としきさん) コメント数:1
まとレスで失礼します。

> ダウト。
> > 23.57875633239746 43.25 2
> > 23.57875722543352 43.25 2
> もうここですでに値が異なります。
> すなわち、表示だけ倍精度、という可能性が濃厚。

うう、眠くてよく見てませんでした。(>_<)
表示だけ倍精度、が正解のようですね。(^^;

> N88の場合、仕様では、引数の型が結果の型、ということになっています。
> このプログラムでは、2.0 という単精度型で割り算をしています。
> ここを 2# としてみたら、もしかしたら違いが出てくる可能性があります。


> このプログラムを load して list をみたら、
> 3050 X = S / 2! '; // Is there any better way to determine initial value?
> 3100 X = (X + S / X) / 2!
> と、自動で変換されてしまっていました。

なんと! インタプリタでは精度指定の無い定数は自動的に単精度になるのですね。

> もしかしたらkonnoさんのところでも、この手の意図せざる自動変換が発生している
> かもしれません。当然、コンパイラのほうでも。
> 一度、インタプリタのほうで list をたたいて、自動変換の有無を確認されたほうが
> いいでしょう。

T-98NEXT で確認しました。やはり自動変換されます。

> よくリストを見たら、結果表示がループの外に出ている。
> 結果表示が上書きのよう、というのはそのとおりなんですが。
> 結果表示がループの外、というトリックは、やっぱりkonnoさんだった。

げげ、他のソースからコピペして行番号を変えるのを忘れてました。m(__)m
申し訳ないです。m(__)m

> 前にも書いたと思いますが、もうちょっと行番号の並びとかインデントに気を配って
> プログラムを書いていただけないでしょうか。
> バグが混入し易くなりますよ、と、繰り返しお伝えしていますよね。
> こうやって、残り少ない人生を無駄にしてしまうわけですから。

インタプリタを弄るのはもう何十年ぶりなもので、うっかりやらかしてしまいました。m(__)m
気を付けます。m(__)m

> でも、このプログラムだと、N88なら、ループ内での途中表示は全くないはず。
> つまり、#11195の結果は出ないはず。

3110番を 3118 に変更すれば正常に出力されると思うのですが
私が何か勘違いしている?

> > 3110 if x < lastx then print "div=",lastx-x:goto 3070
> とやってみたらどうでしょう。
> 1回多くループするところで、いったい何がおきているのか見えてくるかも。

重複部分は以下のようになりました。

div 6.226795723485168D-08 13 13 8
div 2.220446049250313D-16 13 13 9
SQR( 169 )= 13 13 9

比較はほぼ間違いなく単精度でしょうね。(^^;


11204/11135 BQO00549  konno            Re^7: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/08 01:46 11203へのコメント(konnoさん) コメント数:1
> 重複部分は以下のようになりました。
> div 6.226795723485168D-08 13 13 8
> div 2.220446049250313D-16 13 13 9

これ間違っていました。m(__)m  正しい数値を各社で比較します。

----- 単精度 -----
N88BASIC
div= 1.27316E-03 13 13.0013 6
TurboBasic
div= 1.272201538085938E-003 13 13.00127220153808 6
T-BASIC
div= 1.272201538085938E-003 13 13.00127220153808 6

N88BASICは精度もいまいちな感じですね。


----- 倍精度 -----
N88BASIC
div= 1.272386299866479D-03 13.00000006226796 13.00127244856782 6
div= 6.226795723485168D-08 13 13.00000006226796 7
div= 2.220446049250313D-16 13 13 8
div= 0 13 13 9

TurboBasic
div= 1.272386299866923E-003 13.00000006226796 13.00127244856782 6
div= 6.226795790098552E-008 13 13.00000006226796 7
div= 0 13 13 8

T-BASIC
div= 1.272386299866479D-03 13.00000006226796 13.00127244856782 6
div= 6.226795745689628D-08 13 13.00000006226796 7
div= 0 13 13 8

全部違うと思ったら、6回目の N88 と T が同じ数値ですね。
これでなにかわかるでしょうか。


11205/11135 CXB00940  としき           Re^8: PRIME88.BAS で 「169=素数?」問題
( 1) 24/04/08 12:28 11204へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
いろいろと見えてきたようです。

> N88BASICは精度もいまいちな感じですね。

私が仕様を知っているのはN88だけですが、N88に関していえば、まさに仕様どおり。
N88の単精度は、6桁までしか表示されないのですよ。
そして、計算されるのは7桁目まで。
他の処理系の単精度は16桁も表示されるのですね。


> ----- 倍精度 -----
> これでなにかわかるでしょうか。

いくつかわかることがあります。
まず、N88から。
前回の単なる出力結果だと、x も lastx も13で等しいのに次のループに回っている
のが不思議に思えました。でも実際には 2.220446049250313D-16 だけの差があった
わけであり、次のループに回っているのが正当でした。一方で、あまりにも差が
少なすぎたのでしょう、表示は13で打ち切られてしまっている。
ここ、私が前に書いたように print using を使えば、もしかしたら表示されていた
可能性はあります。

つぎ、TurboBasic。
N88やT-BASICだと、単精度指数の表記はEですが、倍精度指数はDを使っています。
でも、TurboBasicは、倍精度でもEで表示されている。
なんか違和感。これが仕様なんだろうなぁ。
ちなみにEは指数(exponent)の略といわれています。Dは倍(double)の略らしい。
なお、表記は同じでも値は異なっているので、計算そのものはきちんと倍精度で
行われている模様。
ところで、Wikipediaによると、指数表示でEを使うのは国際規格らしい。
実際、Excelとかでもそうなっているし。
もしかしたら倍精度でDを使うって、日本のどこかが始めたことかも。
NECとかシャープとか。
昔のMS-BASICでそうだったのかもしれないけど。

そして、T-BASICを含めて、細かい桁数の計算ではいくらかの精度差が発生すること
がわかります。
今回の話題の出発点の169が素数になってしまうという問題も、konnoさんのところの
エミュ環境のN88で起こっている話ですから、うちの実機のPC98だと、konnoさんの
ところのN88とは結果が異なる可能性がありそう。
ということで、今回の結果を出した検証プログラム、#11195に載っているものと
大体同じものだと思いますが、念のため、もう一度示してください。重要なのは表示
でして、同じような表示にしたいので表示部は必須。
なにとぞよろしくお願いします。

11206/11135 BQO00549  konno            SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/08 23:33 11205へのコメント(としきさん) コメント数:1
> ということで、今回の結果を出した検証プログラム、#11195に載っているものと
> 大体同じものだと思いますが、念のため、もう一度示してください。重要なのは表示
> でして、同じような表示にしたいので表示部は必須。

DOSVAXJ3 の32ビット版をJ31モードにして TBasicインタプリタが起動できました。
結構互換性があるのね。
それで、ソースをリナンバーしてみました。
RENUM 3000
これで、3000 から始まる行番号にキチンと並べ替えられました。\(^^)/ ヤッタ-
ではそのソースを貼り付けます。

3000 ' SQR-3.BAS
3010 DEFDBL A-Z
3020 'defsng a-z
3030 'screen 0
3040 CLS
3050 INPUT S
3060 OPEN "SQR.dat" FOR OUTPUT AS #1
3070 CC=0
3080 X = S / 2! '; // Is there any better way to determine initial value?
3090 LASTX = 0! '; // the value one before the last step
3100 'while ( x != lastx ) '// until the difference is not significant
3110 LASTX = X
3120 X = (X + S / X) / 2!
3130 CC=CC+1
3140 PRINT "div=";LASTX-X, X,LASTX,CC
3150 PRINT#1,"div=";LASTX-X, X,LASTX,CC
3160 IF X < LASTX THEN 3100
3170 PRINT "SQR(";S;")=";X,LASTX,CC
3180 PRINT#1, "SQR(";S;")=";X,LASTX,CC
3190 CLOSE
3200 INPUT A
3210 END

このままで J31 と PC-98 で動くと思います。


11207/11135 CXB00940  としき           Re: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/09 15:06 11206へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> このままで J31 と PC-98 で動くと思います。

ありがとうございます。
次に実家に行ったときに、このコードを走らせたいと思います。
これをこのまま、といいたいところですが、おそらく、ファイル出力のところ、
OUTPUTはAPPENDに変更させていただく予定。

あと、もともとの#11175に立ち返って。

> 条件を色々変えて試しても結果は変わらなかったのですが、ひとつだけ
> N88P.BAS
> ところがオリジナルを若干修正した以下
> PN88.BAS

#11192にも書きましたが、内部的には若干の修正ではない可能性があります。
なので、しつこくてもうしわけありませんが

> PN88.BAS
> 110 defdbl a-z '倍精度指定
> ここを単精度指定にしたらどうなるか、

この結果を教えてください。
よろしくお願いいたします。


11208/11135 BQO00549  konno            Re^2: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/09 22:44 11207へのコメント(としきさん) コメント数:1
> > 110  defdbl a-z                                 '倍精度指定
> > ここを単精度指定にしたらどうなるか、
> この結果を教えてください。
> よろしくお願いいたします。

もちろん 169 が素数と表示されます。
元々単精度でそういう表示になるところから始まった話題ですから。
色々試していった結果結構ソースが変わってしまいましたが。(^^;

ところで、USING を使ってみたら違いが表示されました。

1000 'pn88.bas
1010 ' defdbl a-z '倍精度指定
1020 'defdbl n '倍精度指定
1030 OPEN "SQR.dat" FOR OUTPUT AS #1
1040 INPUT N
1050 IF (N/2 <> INT(N/2))=0 THEN IF N=2 THEN PRINT "素数" ELSE PRINT "合成数"
1060 J!=SQR(N) 'ELSE
1070 FOR I!=3 TO SQR(N) STEP 2
1080 IF N/I! = INT(N/I!) THEN 1100 '*EXIT1
1090 NEXT I!
1100 ' *EXIT1
1110 PRINT USING " .##################";I!-SQR(N) '.14
1120 PRINT#1, USING " .##################";I!-SQR(N) '.14
1130 IF I!<=SQR(N) THEN PRINT "合成数";I!;J!
1140 IF I!<=SQR(N) THEN PRINT#1, "合成数";I!;J!
1150 IF I!>SQR(N) THEN PRINT "素数";I!;J!
1160 IF I!>SQR(N) THEN PRINT#1, "素数";I!;J!
1170 INPUT A
1180 END


この結果は

.000001907350000000
素数 13 13

このように単精度の時
I!-SQR(N)
で誤差が表示されました。
倍精度ではゼロになりました。

98実機ではどうなるでしょうね。


11209/11135 CXB00940  としき           Re^3: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/10 17:44 11208へのコメント(konnoさん) コメント数:2
参照先:http://toshiki.la.coocan.jp/
> もちろん 169 が素数と表示されます。

ちょっと残念というか、当然と思えることがおきなければそれも手がかりになる
かな、と思っていたわけですよ。
それで、しつこくお尋ねしていた次第。

> ところで、USING を使ってみたら違いが表示されました。

やっぱりそうでしたか。

> 98実機ではどうなるでしょうね。

とりあえず、試したいことリスト。
すでに試し済みのものもあるかも。

#11208のpn88.bas、倍精度と単精度
#11175のPN88.BASでNを単精度にしただけのもの
そして、#11175のN88P.BASの改造版、以下。

N88P0410.BAS
100 INPUT N
110 IF N MOD 2=0 THEN ELSE *ELSE1
120 IF N=2 THEN PRINT "素数" ELSE PRINT "合成数"
130 GOTO *ENDIF1
140 *ELSE1
150 I=3
160 WHILE (I<=SQR(N)) AND (N MOD I<>0)
165 PRINT I,SQR(N)
170 I=I+2
180 WEND
190 IF I<=SQR(N) THEN PRINT "合成数" ELSE PRINT "素数"
200 *ENDIF1
210 END

これも、Nを単精度と倍精度にしたものの2つ。
今のところ、思いつくのはこのくらい。
あ、そうだ、konnoさんのコードだとプログラム終了のところに必ずinputがあるの
ですが、これ、コンパイラだとあったほうがいいのですか?
それとも他の事情?
いえ、うちのインタプリタだと、必ず最後に入力プロンプトの「?」がはいるのが
うざいというかうっとうしくて。


11210/11135 BQO00549  konno            Re^4: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/10 21:56 11209へのコメント(としきさん) コメント数:1
> そして、#11175のN88P.BASの改造版、以下。
> N88P0410.BAS

これ、実行してみました。NP2 では、169 は素数と表示されました。

> あ、そうだ、konnoさんのコードだとプログラム終了のところに必ずinputがあるの
> ですが、これ、コンパイラだとあったほうがいいのですか?

コンパイラでは終了すると画面が消えてしまい、表示の確認が出来ないのですよ。
インタプリタでは消えないんですが、ソース共通化のために入れています。


11211/11135 CXB00940  としき           Re^5: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/10 23:25 11210へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> これ、実行してみました。NP2 では、169 は素数と表示されました。

あ〜、いやいや、そこではなくて。
いや、そこなのか?
#どっちだよ

ループの最後というか、誤判定されるわけですよね。
その、最後とそのもうひとつ前というか、単精度型と倍精度型でどうなっているのか
見たいな、ということです。

プログラム最後のinputについては了解しました。
やはり、環境によって、こういう差異が発生するものなのですね。
想像はできても、実際にお話を聞けたことがありがたいというか。


11212/11212 DGF01024  めざら           DOSVAXJ3 JP240410 更新
( 1) 24/04/11 05:56 コメント数:2
参照先:http://mezala.la.coocan.jp/
DOSVAXJ3 が 240410版に更新されました。
以下更新内容です。

build JP240410 (2024/4/10)
・J-3100モードが動作していなかったのを修正しました。
・Linux, macOS でビルドできなくなっていたのを修正しました。

……ということなんで,われわれにはあまり関係ないかな(^^;

11213/11135 BQO00549  konno            Re^6: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/11 20:13 11211へのコメント(としきさん)
> ループの最後というか、誤判定されるわけですよね。
> その、最後とそのもうひとつ前というか、単精度型と倍精度型でどうなっているのか
> 見たいな、ということです。

実行結果(数値はVTDOSの結果を張り付けたが表示は同じ)
? 169
3 13
5 13
7 13
9 13
11 13
素数

NP2の結果は単精度型は「素数」、倍精度型は「合成数」と表示だけ違います。

110番の THEN ELSE はこれでいいんでしょうか。
まあ 2 の表示を省いたのだと思うけど。

> 110 IF N MOD 2=0 THEN ELSE *ELSE1


11214/11212 BQO00549  konno            Re: DOSVAXJ3 JP240410 更新
( 1) 24/04/11 21:05 11212へのコメント(めざらさん)
> DOSVAXJ3 が 240410版に更新されました。

更新されていたのですね、お知らせいただきありがとうございます。

> build JP240410 (2024/4/10)
> ・J-3100モードが動作していなかったのを修正しました。
> ・Linux, macOS でビルドできなくなっていたのを修正しました。

うげ、今ちょうど J31モードを使っている所なんですよね。
それで、3月15日に更新があったのは知っていたのですが、32ビット版は落としてなかった。OTL
ちなみに、3月15日の更新内容は

---------------------------------------------------------------
build JP240315 (2024/3/15)

J-3100 ビデオモード 64h (640×400 2色 文字 80×20)に対応しました。
MS-DOS/V 6.2 をイメージファイルからブートした場合に jkeyb.sys の /106 設定が有効にならず
英語キーボード配列になっていたのを修正しました。
[dosbox] kanjikey を追加しました。漢字キーを ALT+半角全角、半角全角、右 ALTに割り当てる事ができます。
int 21h ah=5ch に対応しました。Windows 3.1 用の MS-Office が起動可能になります。
内蔵 BIOS 割り込みのエントリアドレスを F000:C000 以降に変更しました。

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

> J-3100 ビデオモード 64h (640×400 2色 文字 80×20)に対応しました。

これは、20行表示モードが使えるということかと思って VZJ31の ^KL でやってみました。
が、白画面が真っ黒になって、縦400ドットが、480ドットに伸びました。
カーソルは動きますが、文字は全く表示されません。
もう一度 ^KL で元に戻りましたが、これは使えないようです。
CHEV 64 でも同じ結果です。
黒画面はどうも VGA ぽいですね。

うーん、私の設定か解釈が間違っているのでしょうか。軟式さんに聞いてみようかしら。

それはともかく、これがきっかけで J31 用のBASICコンパイラを試してみたら
なんと! 生成した実行ファイルが VTDOS で動くではないですか。\(^^)/ ヤッタ-
MS-DOS Player と同じく テキスト表示だけなら問題なく動作します。
この実行ファイル一つで、VTDOS、MS-DOS Player、DOSVAXJ3のVGA,J31モード全部動きます!!

> ……ということなんで,われわれにはあまり関係ないかな(^^;

関係ないどころか、埋もれていたお宝が完全復活しました!!
それだけではなく、今までのエミュの壁を突破できる切り札として蘇ったのです!!

これはめざらさんのおかげですね。ありがとうございます。
としきさんとの素数プログラムのやりとりも助けになっています。
軟式さんの J31モードのまめな更新のおかげで、古代の遺産が復活出来ました!
みなさまに感謝です。m(__)m

# 伝説巨神 出でよん 発動編(壮絶な戦いになりそうな悪寒)


11215/11135 CXB00940  としき           Re^4: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/13 01:13 11209へのコメント(としきさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> とりあえず、試したいことリスト。

試してきました。

> #11208のpn88.bas、倍精度と単精度

pn88単精度
.000000000000000000
合成数 13 13

pn88b倍精度
.000000000000000000
合成数 13 13

> #11175のPN88.BASでNを単精度にしただけのもの

合成数と出ました。

> そして、#11175のN88P.BASの改造版、以下。

単精度でも倍精度でも同じ、

3 13
5 13
7 13
9 13
11 13
合成数

と出ました。単精度でも倍精度でも同じです。
うむ、興味深いぞ。

> 190 IF I<=SQR(N) THEN PRINT "合成数" ELSE PRINT "素数"

Iも13、SQR(N)も13なのだから、合成数と表示されるのが正当。
そして実際、うちでは想定どおり動いています。
ところが、konnoさんのところでは、単精度型ではこの比較式が成り立たず、ELSEに
落ちてしまっている。そして、倍精度型ではきちんと動いている。
なんか、エミュの挙動がおかしいとしか思えない。
前にも書きましたが、N88BASICの仕様では、関数の結果は引数と同じ型になることに
なっています。つまり、Nが単精度ならSQR(N)の結果も単精度のはず。だから、小数点
以下の細かいところの値が出てくることがおかしい。
もしかしたら、次のような簡単なプログラムでも、実機とエミュで差が出たりして。

10 A#=1.23456789#
20 B!=A#
30 PRINT A#,B!

これ、実はN88のマニュアルに載っているサンプルです。
そして、仕様上のこの実行結果は

RUN
1.23456789 1.23457

となるべきなのだそうです。
もしエミュでこうならないとしたら、それはどこかがおかしい。
エミュの作者に調査を依頼してもいいかも。



追伸
#11213

> 110番の THEN ELSE はこれでいいんでしょうか。
> 110 IF N MOD 2=0 THEN ELSE *ELSE1

N88BASICでは、言語仕様として、THEN節に空文を許します。
つまり、THEN のときは、何もせずに、次の行に進むことになります。
これ、#11169で触れているとおりです。


11216/11135 BQO00549  konno            Re^5: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/13 22:03 11215へのコメント(としきさん) コメント数:1
> これ、実はN88のマニュアルに載っているサンプルです。
> そして、仕様上のこの実行結果は
>
> 1.23456789 1.23457
>
> となるべきなのだそうです。

NP2でやってみた結果です。

1.23456789 1.23457

表示は全く同じですね。やっぱり表示と内部の数値がズレているのかなぁ。
他のエミュの結果は全て以下の数値でした。

1.23456789 1.234568

98エミュの表示が上の数値で内部的には下の数値だとしたら、計算が合わないのも合点ですね。
でも何故こうなるのかがわからないので、とっても気になります。

> もしエミュでこうならないとしたら、それはどこかがおかしい。
> エミュの作者に調査を依頼してもいいかも。

表示は全く同じなので、おかしくないということですね。(違う!)

> N88BASICでは、言語仕様として、THEN節に空文を許します。
> つまり、THEN のときは、何もせずに、次の行に進むことになります。
> これ、#11169で触れているとおりです。

なるほど、つまり想定どうりということですね。


11217/11212 BQO00549  konno            DOSVAXJ3 JP240410 20行表示がおかしい?
( 1) 24/04/13 23:28 11212へのコメント(めざらさん)
> それで、3月15日に更新があったのは知っていたのですが、32ビット版は落としてなかった。OTL

実は寝室のPCでダウンロードしていました。(^^;
ダウンロードだけして寝落ちしてそのまま忘れていたようです。(^^;;
ということで

> build JP240410 (2024/4/10)
> ・J-3100モードが動作していなかったのを修正しました。

これがどういうことかと疑問だったので確認してみました。
・・・J31モードにすると、起動中に固まってしまいました、(>_<)
そういうことでしたか・・・

> > J-3100 ビデオモード 64h (640×400 2色 文字 80×20)に対応しました。
> これは、20行表示モードが使えるということかと思って VZJ31の ^KL でやってみました。
> が、白画面が真っ黒になって、縦400ドットが、480ドットに伸びました。
> カーソルは動きますが、文字は全く表示されません。
> もう一度 ^KL で元に戻りましたが、これは使えないようです。
> CHEV 64 でも同じ結果です。

これ、CHEJ 64 だとモードが変わりました。
CHEV コマンドに反映されていないみたいです。デジャブのような。(^^;

D:\NC>chev 64

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

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

それで、CHEJ コマンドを試したら

D:\NC>chej 64
CHEJ.EXE <MultiMode CHEV> ver 6.10 by Natrium.

J-3100(DCGA)、日本語環境に切り替えました。
現在のビデオモードは 64h です。

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

Current Video Mode = 64h
Screen Size = 80x20
Character Height = 20
VRAM Mode = A/N
VRAM Address = B800:0000 (Real VRAM)

おお、画面モードが 20行に変わりました。
それで、VZJ31 の編集画面を見ると
行数は 25行のまま、アンダーラインカーソルも追随します。
点滅カーソルは 20行になったようで、下に行くほどズレます。

うーむ、これは VZが対応できていないのかしら?
やっぱり軟式さんに聞いてみようかな。


11218/11135 CXB00940  としき           Re^6: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/14 12:14 11216へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> NP2でやってみた結果です。
> 他のエミュの結果は全て以下の数値でした。
> 表示は全く同じなので、おかしくないということですね。(違う!)

NP2と他のエミュで差が出る、というところは一つの突破口かも。
少なくともNP2以外のエミュは仕様どおりではないということで、バグ報告は可能
だと思います。おそらく、四捨五入するときの桁数を誤っていると想定されます。
仕様上は、有効桁7桁、出力のときは7桁目が四捨五入されて6桁で表示、という
ことになっているのですから。
なので、以後は、NP2と実機の差異をどうするか。
どうも、本来は7桁以上は格納してはいけないものを7桁以上格納している、その上
7桁以上で比較してはいけないものを7桁以上で比較している、というように見える
わけですよ。
print usingを使う以外に、何かいい方法はあるかなぁ。


実際、この程度の小数の誤差がどの程度影響するかはわかりませんがね。
でも、もしかしたら、昔からゲームなんかでも使われている可能性はあるわけで。
konnoさんは、例えばバルーンパンチなんてゲームを覚えておられませんかね。
シーソーに乗った人が交互にジャンプして上のほうで動いている風船を割っていく、
というゲームです。
このゲームで飛んでいる人間は、まるで重力で引かれるような感じで頂点に向かって
減速して、また落下するときは加速するわけです。このゲームに限らず、まるで重力
に引かれたような動きをする、だとか、慣性が働いているようになかなか加速しない
上に速度が乗ったらすぐには止まれない、といった動きをするようなゲームでは、
もしもそれなりに理論的なアルゴリズムを使うならば、物体の位置決定に二次関数を
使う必要があるわけです。実際に使っているアルゴリズムがどこまで理論的に正しい
ものになっているかはわかりませんけどね。
そして、二次関数を解くためにはSQR関数が必要。
あるいは、ゲームによっては三角関数を使っているものもあるかもしれない。
そして、画面のXとYの座標は当然整数。
ときどき、当たり判定がバグっているゲームというのが話題になることがありますが、
あれっていうのはもしかしたら、小数と整数の比較の際の誤差の問題かも。そして、
実機だと正常に動いていたのにエミュだとおかしい、というゲームなどがあった場合、
それこそこのような小数の誤差の可能性は高いかも。
もちろん、倍精度を使えば誤差は少なくなりますが、リアルタイムの計算の場合、
倍精度だとやっぱり重くなるので、たいていは単精度を使うでしょうし。


11219/11135 BQO00549  konno            Re^7: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/15 01:15 11218へのコメント(としきさん) コメント数:1
> NP2と他のエミュで差が出る、というところは一つの突破口かも。
> 少なくともNP2以外のエミュは仕様どおりではないということで、バグ報告は可能
> だと思います。おそらく、四捨五入するときの桁数を誤っていると想定されます。
> 仕様上は、有効桁7桁、出力のときは7桁目が四捨五入されて6桁で表示、という
> ことになっているのですから。

もしかしたら誤解させてしまったかもしれません。
他のエミュとは、98エミュ以外の、J31とかDOS/V系のエミュのことです。
今回 NP2以外の98エミュは確認していません。同じ結果になると思ったので。

ということで、ANEX86 や T98-NEXT のN88コンパイラ、インタプリタでも確認しました。
結果は NP2と 表示は全く同じでした。

> どうも、本来は7桁以上は格納してはいけないものを7桁以上格納している、その上
> 7桁以上で比較してはいけないものを7桁以上で比較している、というように見える
> わけですよ。

これが実際どうなのかはわかりませんが、BASICのルーツは MSのGW-BASICだと思います。
T-BASICなどは漢字処理を覗けば恐らくほとんどそのままの互換性だと思っているのですが
NECのN88BASICは、あちこち変えているようですが、単精度の精度もわざと落としているように見えます。
その辺がエミュでの誤動作の原因になっているのではないかと愚考します。

> konnoさんは、例えばバルーンパンチなんてゲームを覚えておられませんかね。
> シーソーに乗った人が交互にジャンプして上のほうで動いている風船を割っていく、
> というゲームです。

私はこの手のゲームはあまりやっていないので覚えていません。

> ときどき、当たり判定がバグっているゲームというのが話題になることがありますが、
> あれっていうのはもしかしたら、小数と整数の比較の際の誤差の問題かも。そして、
> 実機だと正常に動いていたのにエミュだとおかしい、というゲームなどがあった場合、
> それこそこのような小数の誤差の可能性は高いかも。

今回のことを踏まえるとそう考えられますね。

> もちろん、倍精度を使えば誤差は少なくなりますが、リアルタイムの計算の場合、
> 倍精度だとやっぱり重くなるので、たいていは単精度を使うでしょうし。

N88BASICは8ビット時代の互換性重視ではないかと思いますが、8ビットの貧弱なCPUで
ゲームの速度を上げるためにわざと単精度の桁を落としたのではないかと思います。
そして、16ビット版になっても互換性のためにそこを変えることが出来なかったのかも。


11220/11135 CXB00940  としき           Re^8: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/15 13:56 11219へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> もしかしたら誤解させてしまったかもしれません。
> 他のエミュとは、98エミュ以外の、J31とかDOS/V系のエミュのことです。

はい、誤解しました。
続報をいただいたことで、誤解は氷解しました。

> NECのN88BASICは、あちこち変えているようですが、

うん、まぁ、その前のN-BASICからの互換性というのがありますからね。
そちらのほうでいろいろと変えていたところはあるかもしれません。

> 単精度の精度もわざと落としているように見えます。

こちらについてはどうなんだろう。
そうではないというわけではなく、根拠不足というか、これまでのところでは、私
にはそう思えるだけの挙動はないような気がしています。
ということで、ちょっと調べてみました。
まず、単精度は4バイトであらわす実数、倍精度は8バイトであらわす実数。
これは、調べた範囲では、どこも同じみたい。80年代の8ビットパソコンのBASIC
でも、21世紀の64ビットパソコンのCコンパイラでもおおむね一緒。
ところが、倍精度のほうが、最近の国際規格とN88BASICで異なるみたい。
#11164に書いたように、N88BASICでは倍精度の扱える上限は 1.7*10^38 ですが、
最近の規格では 1.8*10^308 まで扱えるらしい。
一方で単精度の方は最近の規格でも 1.7*10^38 で同じ。
内部表現についても、仮数部23ビット、指数部8ビット、符号1ビットという部分
に変化はない。
でも、だからN88の単精度では精度を落としていないかというといささか怪しいと
いうか断言はできない。
なにかというと、十進数との変換部分。
#11135にも書きましたが、仕様としては有効桁7桁、出力のときは7桁目が四捨五入
されて6桁で表示、となっているわけですよ。でも、他の処理系では例えば、有効桁
7桁で表示も7桁、となっているかもしれない。もしそうであれば少なくとも見かけ
の精度は落ちているわけです。あるいは、他の処理系では、7桁目で四捨五入では
なく切り捨て表示となっているかもしれないし。
ただ、あまりにも他のマシンと差があるようであれば、当時、大騒ぎになっている
のではないかなぁ。あの時代、ネットはなくてもパソコン雑誌はあったし、8ビット
のころはともかく16ビットの時代はパソコン通信もあったし。
ということで、とりあえず現時点では根拠不足としてkonnoさんのご意見に賛同は
しないでおきます。
#つまり、何かあればすぐに意見は変わる

ただ、エミュという意味では、よく言われる「バグまで再現した」というものが評価
が高いわけで、現状、実機と差異が出るエミュは、完成度としてはもう一歩、という
のが現実的な評価だと思われます。


11221/11135 BQO00549  konno            Re^9: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/16 00:04 11220へのコメント(としきさん) コメント数:1
> 続報をいただいたことで、誤解は氷解しました。

紛らわしい表現で誤解させてしまい申し訳ないです。
とりあえずホッとしました。

> > 単精度の精度もわざと落としているように見えます。

考えてみたら、これは表示だけなのかもしれませんね。
N88BASICは、インタプリタもコンパイラも中間コードの LIB を使用しているように見えます。
ということは、そのバイナリコードは BIOS.ROM の中なのではないですか。

私の手持ちのNP2の BIOS.ROMは、実機のものではなく、互換BIOS かもしれません。
その互換BIOSを作る時、N88BASICの仕様に忠実に作るために、#11215

> 10 A#=1.23456789#
> 20 B!=A#
> 30 PRINT A#,B!
>
> これ、実はN88のマニュアルに載っているサンプルです。
> そして、仕様上のこの実行結果は
>
> RUN
> 1.23456789 1.23457
>
> となるべきなのだそうです。

この結果を忠実に再現するために、わざと内部数値まで桁落ちさせたのではないかと疑い始めました。
つまり、問題なのは、互換BIOS.ROM なのかもしれないと思うようになりました。

これは、実機を持たない人たちにとって無くてはならない非常にありがたい福音ですが
互換BIOS を作ったのは、著作権の問題回避の為なので、バイナリレベルで違うものでなければならないわけです。
もしかしたら、この部分がそのための直せない生贄だったりして。あくまで妄想ですが。

> ただ、エミュという意味では、よく言われる「バグまで再現した」というものが評価
> が高いわけで、現状、実機と差異が出るエミュは、完成度としてはもう一歩、という
> のが現実的な評価だと思われます。

NP2は、細部の再現性にこだわったエミュという評価があるようなのですが
先のサンプルプログラムの結果は忠実に再現していますね。(^^;


11222/11135 CXB00940  としき           Re^10: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/16 12:22 11221へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
> ということは、そのバイナリコードは BIOS.ROM の中なのではないですか。

確かに .LIB のファイルのサイズが小さ目というところから、実際に LIB がやって
いることは ROM の中身の呼び出しのみ、という可能性は高そうです。

> この結果を忠実に再現するために、

ある意味、この結果「だけ」を忠実に再現している、という感じ。
もし「実機を忠実に再現」するのであれば、169は合成数と表示される必要がある。
この点がなされない限り、実機に対するエミュとしての完成度は今一歩、という
ところで終わってしまいそうです。
もっとも世の中には、既知のバグどころか未知のバグまで再現したエミュレータと
いうものもある模様。実機で新たなバグが発見されてから、エミュレータでも同じ
バグが発現した、なんて話もあるようで、とても不思議。こういうのが、いわゆる
「完璧なエミュレータ」というやつでしょう。なぜ作れるんだろう。

> 互換BIOS を作ったのは、著作権の問題回避の為なので、

これはそのとおりだと思いますが、その一方で、実数のバイナリ表現というものは
ある意味で規格化されているわけです。つまり、実数演算とかバイナリと十進数の
変換とかの部分は世の中にいくらでもサンプルコードとかライブラリとかのフリーで
使えるものが存在しているわけで、そしてそういうものを使えば少なくとも著作権の
問題は回避できるはず。さらに、その手のコードって世界中の人が見ているわけです
から、精度を落とす方向にいじることは少ないのではないかなぁ。というか、わざと
精度を落とす、なんてことに時間をかけるくらいならとっととリリースしてくれよ、
という気もする。
もちろん、そういうものを使わずに1からコードを書いていたら、十分な精度を確保
できていなくても不思議はないけど。
あ、でも、ありうるかな。
倍精度のほうが現在のありふれたものとは内部表現が異なっているようだから、そちら
のほうに合わせて、ということはあるかも。



実は私、実数演算についてはちょっとだけやかましい。
#2066とか#10367にも書いたけど、大昔、8ビットマシンの時代、実数演算のマシン語
ルーチンを書いてハンドアセンブルしていたもので。
といっても四則演算だけですけどね。


11223/11135 BQO00549  konno            Re^11: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/16 23:58 11222へのコメント(としきさん) コメント数:1
> もっとも世の中には、既知のバグどころか未知のバグまで再現したエミュレータと
> いうものもある模様。実機で新たなバグが発見されてから、エミュレータでも同じ
> バグが発現した、なんて話もあるようで、とても不思議。こういうのが、いわゆる
> 「完璧なエミュレータ」というやつでしょう。なぜ作れるんだろう。

それはきっと、リバーs^ ・・・ いや、なんでもないです。(^^;

> 実は私、実数演算についてはちょっとだけやかましい。
> #2066とか#10367にも書いたけど、大昔、8ビットマシンの時代、実数演算のマシン語
> ルーチンを書いてハンドアセンブルしていたもので。
> といっても四則演算だけですけどね。

鶴亀算みたいなものでしたっけ? 結構面倒くさいんですよね。
丁度 DANNYさんの浮動小数演算ライブラリを目にしていたので見てみました。
ASMは1531行ありましたね。
バイナリは恐らく2千バイトくらいになるのかなぁ。

J3100用BASICコンパイラの続報も書かなくてはいけないのでこの辺で。


11224/11135 CXB00940  としき           Re^12: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/17 02:14 11223へのコメント(konnoさん) コメント数:1
参照先:http://toshiki.la.coocan.jp/
konnoさん、なんか他のものを連想している。

> 鶴亀算みたいなものでしたっけ? 結構面倒くさいんですよね。

鶴亀算は整数演算です。
何だろう、何と勘違いしたんだろう。おいらにはわからない。


11225/11135 BQO00549  konno            Re^13: SQRの単精度と倍精度の表示検証ソース
( 1) 24/04/17 23:21 11224へのコメント(としきさん)
> 鶴亀算は整数演算です。
> 何だろう、何と勘違いしたんだろう。おいらにはわからない。

あう、多分整数演算の事だと思います。(>_<)
私は算数も数学も苦手というか、数字の計算や記憶が全くダメなんですね。
だからパソコンにやらせようと思うのです。(^^;


11226/11226 BQO00549  konno            J31用BASICコンパイラの各エミュ対応沼
( 1) 24/04/23 01:23 コメント数:3
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)


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

PRINT CHR$(459)


おお、これなら使えるかもしれない。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
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へのコメント(としきさん)
> ご愛読ありがとうございました。
> 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さん) コメント数:1
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さん)
テーブル内の文字が小さくなるのを防ぐ方法を見つけたので実装しました。

-----------------------------------------------------------
「描画に使う横幅」を、「画面の横幅」と同じにする方法

<meta name="viewport" content="width=device-width">

上記のように「width=device-width」と記述すると、「描画領域がその端末の実際の横幅」であるとして描画されます。その結果、縮小の必要がなくなるため、自動縮小はされません。
-----------------------------------------------------------

色々あちこち探したのですが、これが一番求めるものに近かったです。
これで縦画面でも横スクロールせずに全部見ることができます。\(^^)/ ヤッタ-

ついでに「新着情報携帯版」のリンクの色も赤に変えました。



11352/11306 CXB00940  としき           Re: スマートフォン横向きとフレーム
( 1) 24/07/13 11:14 11348へのコメント(めざらさん)
参照先:http://toshiki.la.coocan.jp/
> こちらで言うことでもないのですが,この流れでこの場をお借りして訴えます。

うぅん、新しいことに対応できていない弊害が顕在化していますね。
自分自身がスマホを持っていないこともあって、改善のトリガが全くなかった、と
いうのもあります。
ただ、ご意見をいただいたので、何とか近日中にフレーム化を解除しましょう。
といいつつ、やるやる詐欺で数年放置した、ということもありそうですが、ガラケー
のサービス停止に伴う私自身のスマホ導入も見えてきているわけですから、そんなに
お待たせせずに改善できると思います。