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

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さんへのコメント コメント数:1
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の問題などでしょうか。
エミュレータ作者の影の苦労がうかがわれますね。
更新に感謝です。