[HOME]  [全部表示 会議室風]  [全部表示 保存用]  [リストへもどる]

一括表示

  1÷9801の答えを小数表記するBASICプログラム - konno 25/12/15-23:41 No.12615
  ┣ Re: 1÷9801の答えを小数表記するBASICプログラム - としき 25/12/18-00:46 No.12616
  ┃┗ Re^2: 1÷9801の答えを小数表記するBASICプログラム - konno 25/12/18-01:53 No.12617
  ┣ 1÷9801の J31BASICプログラム - konno 25/12/18-01:57 No.12618
  ┃┗ Re: 1÷9801の J31BASICプログラム - としき 25/12/20-13:01 No.12619
  ┃ ┗ Re^2: 1÷9801の J31BASICプログラム - konno 25/12/20-17:00 No.12620
  ┃  ┗ VTDOS, Intrspy, Basm - 文太 25/12/22-12:54 No.12621
  ┃   ┣ hello.asm - 文太 25/12/22-13:20 No.12622
  ┃   ┃┗ 徒労 - 文太 25/12/22-13:39 No.12623
  ┃   ┃ ┗ Tim Paterson - 文太 25/12/22-14:06 No.12624
  ┃   ┃  ┗ Re: Tim Paterson - konno 25/12/24-02:26 No.12627
  ┃   ┃   ┗ Re^2: Tim Paterson - 文太 25/12/25-00:46 No.12630
  ┃   ┗ Re: VTDOS, Intrspy, Basm - konno 25/12/23-00:10 No.12625
  ┃    ┗ Re^2: VTDOS, Intrspy, Basm - 文太 25/12/23-01:08 No.12626
  ┃     ┗ Re^3: VTDOS, Intrspy, Basm - konno 25/12/24-02:27 No.12628
  ┃      ┗ メリークリスマス! 2025 - 文太 25/12/25-00:01 No.12629
  ┃       ┣ 事故レス - 文太 25/12/25-18:45 No.12631
  ┃       ┗ Re: メリークリスマス! 2025 - konno 25/12/25-23:13 No.12633
  ┃        ┗ Re^2: メリークリスマス! 2025 - 文太 25/12/26-01:00 No.12634
  ┃         ┣ Turbo Basic (1st compile) & QBX - 文太 25/12/26-22:35 No.12635
  ┃         ┃┣ QuickBasic 4.5 (Compile) - 文太 25/12/27-00:02 No.12636
  ┃         ┃┃┗ グラフィック画面・テキスト画面 - 文太 25/12/27-00:56 No.12637
  ┃         ┃┗ Re: Turbo Basic (1st compile) & QBX - konno 25/12/27-01:45 No.12639
  ┃         ┗ Re^3: メリークリスマス! 2025 - konno 25/12/27-01:07 No.12638
  ┗ TBC(TOKIWA BASIC Compiler)で 1÷9801 - konno 25/12/25-21:47 No.12632
(12615) 126151÷9801の答えを小数表記するBASICプログラム  投稿者:konno   2025/12/15(月) 23:41
   コメント数 3

Xで「 1÷9801の結果が非常に美しい。」という記事がありまして、その結果が

> 0.00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 99 00 01 02...

このように 98 を除いて綺麗に数字が並んでいるんですよね。これは凄い!

BASICプログラムでやってみたいと思い「 1÷9801 」で検索しても出ないので
AIモードで「 1÷9801の答えを小数表記するBASICプログラムを作成」としたら
それらしいプログラムが例示されたけど結果が違う!

「 1÷9801の答えを小数表記するBASICプログラム」で検索し直したら
キチンと計算結果が出るプログラムの例示が出ました。すげぇ!

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

AI による概要 1/9801(\(1\div 9801\))の小数表記は、非常に長い循環小数(0.00010203...9899の繰り返し)になります。標準的なBASIC言語の浮動小数点演算(通常は単精度で約7桁、倍精度で約15-16桁の精度)では、この無限に続く循環小数を正確に表示することはできません。?そのため、割り算の筆算の原理を利用して、小数点以下の各桁を個別に計算し、文字列として出力するアプローチが必要です。?

以下は、一般的なBASIC方言(N88-BASICなどを想定)で動作する、小数点以下100桁までを計算・表示するプログラム例です。
basic
10 REM 1/9801 の小数表記プログラム
20 CLS
30 A = 1
40 B = 9801
50 C$ = "0."
60 FOR I = 1 TO 100
70 A = A * 10
80 Q = INT(A / B)
90 R = A MOD B
100 C$ = C$ + STR$(Q)
110 A = R
120 IF A = 0 THEN EXIT FOR
130 NEXT I
140 PRINT C$
150 END
プログラムの解説
A = 1, B = 9801: 分子をA、分母をBとします。
FOR I = 1 TO 100: 小数点以下100桁を計算するためのループです。必要に応じて桁数を変更できます。
A = A * 10: 筆算の次の桁を求めるために、現在の余り(または初期値の1)を10倍します。
Q = INT(A / B): 10倍したAをBで割った商Qが、小数点以下のその桁の数値になります。
R = A MOD B: 剰余演算子MODを使用して余りRを計算します。この余りが次のループでの新しいAになります。
C$ = C$ + STR$(Q): 求めた桁の数値Qを文字列C$に連結していきます。
A = R: 次の計算のために余りをAに代入します。
IF A = 0 THEN EXIT FOR: 余りが0になった場合(割り切れた場合)は、ループを終了します。1/9801の場合は発生しませんが、一般的な分数計算のために含まれています。
PRINT C$: 完成した小数表記の文字列を出力します。
このプログラムは、標準の数値型ではなく、整数の剰余計算を利用することで、浮動小数点数の精度制限を回避しています。

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

こんな解説なんですが、このままでは TurboBASICでは動かないので改造します。

      - No.12615 -    このTreeへ           [リストへもどる] pre


(12615) 12616Re: 1÷9801の答えを小数表記するBASICプログラム  投稿者:としき   2025/12/18(木) 00:46
参照先:http://toshiki.la.coocan.jp/
    12615 番 konno さんへのコメント    コメント数 1

ほほう、AIの出力でさえもきちんと字下げをするんだ。

> こんな解説なんですが、このままでは TurboBASICでは動かないので改造します。

このままではN88-BASICでも動きませんね。
どこが悪いというに、まずN88-BASICにはEXITというコマンドはないのですよ。
なので当然、EXIT FORのところでSyntax Errorが出る。
なので、例えば

> 120 IF A = 0 THEN EXIT FOR
> 130 NEXT I
> 140 PRINT C$

ここのところを

120 IF A = 0 THEN *EXIT_FOR
130 NEXT I
135 *EXIT_FOR
140 PRINT C$

こんな風に書き換えてやる必要がある。
なんとなくこれだけで動き出しそうな気はするけど、そう甘くはないかな。

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


(12615) 12617Re^2: 1÷9801の答えを小数表記するBASICプログラム  投稿者:konno   2025/12/18(木) 01:53
    12616 番 としき さんへのコメント

> このままではN88-BASICでも動きませんね。

あ、PC98 で確認してないのがバレた。(^^;

> こんな風に書き換えてやる必要がある。
> なんとなくこれだけで動き出しそうな気はするけど、そう甘くはないかな。

NP2 でやってみましたが、結構色々エラーになるのであちこち修正しました。

10 REM 1/9801 の小数表記プログラム
20 CLS
30 A = 1
40 B = 9801
50 C$ = "0."
55 PRINT C$; ' OV2
60 FOR I = 1 TO 100*2+4 ' 102まで表示するため
70 A = A * 10
80 Q = INT(A / B)
90 R=INT((A/B-INT(A/B))*B+.5) ' MOD 代替式 オーバーフロー OV1
100 C$ = STR$(Q) ' オーバーフロー OV2
105 PRINT C$; ' OV2
110 A = R
120 IF A = 0 THEN *EXIT ' _ は使えない?
130 NEXT I
135 *EXIT ' _ は使えない?
140 PRINT ' C$ ' OV2
145 INPUT AA ' 表示が消えるので
150 END

コメントの行は修正した行です。

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


(12615) 126181÷9801の J31BASICプログラム  投稿者:konno   2025/12/18(木) 01:57
    12615 番 konno さんへのコメント    コメント数 1

TurboBASICのプログラムは動きましたが、VTDOSでは動きません。
それで、J31BASICコンパイラで新しいやり方を試してみました。
PRINT文を使うとVTDOSの vtd_err.logに大量のエラーメッセージが発生するので
それを抑制する j3vt.com という常駐プログラムも作りました。
でも常駐ツールが必要とか面倒くさいので、PRINT文を使わずに、INT21h AH09h で
文字出力してみたら、起動時初期化の1045bytesほどで抑えられました。
これが気になる方は j3vt.com を使えばゼロにできます。
#txt:j3vt.lzh

ということで、J31BASICコンパイラ版の 1÷9801 プログラムです。

#txt:9801j.lzh  ソース+実行ファイル

VTDOS、DOSVAXJ3、MS-DOS Playerなどの各種DOSエミュで動作します。
VTDOS、MS-DOS Playerは、テキストモードで INT21でPRINTしています。
DOSVAXJ3はグラフィックモードになるので、別処理にしています。
J31BASICコンパイラの可能性がまた一つ広がりました。

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


(12615) 12619Re: 1÷9801の J31BASICプログラム  投稿者:としき   2025/12/20(土) 13:01
参照先:http://toshiki.la.coocan.jp/
    12618 番 konno さんへのコメント    コメント数 1

> PRINT文を使うとVTDOSの vtd_err.logに大量のエラーメッセージが発生するので

いや、それ、なんか変でしょう。
PRINT文なんて基本的なもので大量にエラーが出るなんて。
何でそんなことに。

> ということで、J31BASICコンパイラ版の 1÷9801 プログラムです。

試してもいない私が言ってはいけないことかもしれませんが。
字下げもされていないプログラムを書く人は、今後、AIに取って代わられます。
今、ウィルスだのセキュリティだのがうるさくなってしまい、どこかの誰かが書いた
プログラムというやつはソースまでチェックされる時代になってしまいましたから。
当然、ソースが出てこなくても安心できるほど作成者にブランド力があれば別。
このブランド力というのには、何かあったときの法的・経済的衝撃に耐えられること、
というのも含むわけで。

私もそろそろAIの軍門に下ることを考えるべきかと思っています。

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


(12615) 12620Re^2: 1÷9801の J31BASICプログラム  投稿者:konno   2025/12/20(土) 17:00
    12619 番 としき さんへのコメント    コメント数 1

> > PRINT文を使うとVTDOSの vtd_err.logに大量のエラーメッセージが発生するので
> いや、それ、なんか変でしょう。
> PRINT文なんて基本的なもので大量にエラーが出るなんて。

#11226 からのツリーでJ31BASICコンパイラについて色々やってみた中で
#11251 で気が付いたのですが、

VTDOSは 未実装のファンクションをエラーログに出力する仕様になっています。
他のエミュはこのような機能は無く、動作がおかしい時はデバッグモードを使うくらいです。

> 特に、Int10h AX=8500 〜 AX=8582 は毎秒30くらい出続けていました。
> J3100テクニカルブックを発掘したので見ると、カーソル位置のアトリビュート読み込みのよう。
> int16h 機能 F6 は、キーバッファのチェックのようです。
> Int6F は、ATOK5制御割り込みのようです。

J31コンパイラはPRINT文で Int10h AX=8500 〜 AX=8582 を使っているのでこうなるのです。
今回 INT21 AH09h を使うことで Int10h AX=8500 と Int6F を各1回だけになりました。
多分起動時の初期化で使っていると思われます。

前回もそうですが、今回汎用で使えるDOS用BASICコンパイラが無いか探してみました。
実行ファイルのみで動作するもの、機種依存しないものは意外と少なくて前回は諦めましたが
今回は、書式など独自仕様ではあるものの、DOSツールとして使えそうなものを見つけました。
というか、前回は移植を挫折したものを、なんとか移植に成功したのです。
続きは別記事で。

> 字下げもされていないプログラムを書く人は、今後、AIに取って代わられます。
> 今、ウィルスだのセキュリティだのがうるさくなってしまい、どこかの誰かが書いた
> プログラムというやつはソースまでチェックされる時代になってしまいましたから。

AIもうまく使いこなさないと嘘に騙されそうでまだまだ信頼できませんね。

> 当然、ソースが出てこなくても安心できるほど作成者にブランド力があれば別。
> このブランド力というのには、何かあったときの法的・経済的衝撃に耐えられること、
> というのも含むわけで。

うちは多分耐えられないでしょうが、やれるうちは続けていきたいと思っています。

> 私もそろそろAIの軍門に下ることを考えるべきかと思っています。

としきさんがAI化したら凄いことになりそうでわくわく(何か違う?)

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


(12615) 12621VTDOS, Intrspy, Basm  投稿者:文太   2025/12/22(月) 12:54
    12620 番 konno さんへのコメント    コメント数 2

こんにちは。お久です。
新年会はやらないかなぁ、と思っている今日この頃ですが。

さて、以下のようなものが、話題と重なりました。

------------------------------------------
Undocumented DOS, 1st, p.457

FIND cl.???
FIND C:\QEMM\cl.??? [FAIL 0012]
FIND C:\TURB0\cl.??? [FAIL 0012]
FIND C:\MSC\BINB\cl.??? [FAIL 0012]
FIND C:\BIN\cl.??? [FAIL 0012]
FIND C:\EPS\cl.??? [FAIL 0012]
FIND C:\MSC\BIN\cl.???
EXEC C:\HSC\BIN\CL.EXE hello.c
OPEN c1.exe [FAIL 0002]
EXEC C:\MSC\BIN\c1.exe
OPEN c:\tmp\005116sy [FAIL 0002]
CREAT c:\tmp\005116sy
------------------------------------------

 ちゃんと説明すれば、そこそこ面白い話だとは思うのですが、、、。
 結論は、やっぱり10#の技術力は、言うまでもなく、すごいなぁ、と
いうことです。konnoさんが、ちょっと困っている、という文脈までは
把握できてると思うのですが、、、。


 少しだけ上を説明します。

>cl hello.c
 という具合に、MSCでコンパイルするとき、どれぐらいファンクション
コールをしているのか、を調べるデバッガースクリプトの出力です。

 ここで実行ファイルがコンパイラであることに大して意味はありません。
どんなツールでも、コマンドラインからcommand.comを介して実行されれば
ふつうファンクションコールする。これを全部リストアップしてみい、
というデバッガー(intrspy.exe == interrupt spy という)の実行模様。
 (undocumented function を探索するツールです)

 FINDは、cl.exeを探すFindFirst。EXECは実行せよのexecFunction。
 cl.exeを見つけるのに(パスの設定に気をつけようね、が教訓)これだけ
やってるんだよ、ということ。これは単純な例で、あまり最適化しない
クィックモードというのがMSCにはあるらしく、それと比較とかすると
コンパイルって大変ね、と思う。ちゃんとやると、pass3ぐらいまである
みたいだった。

 「VTDOSは 未実装のファンクションをエラーログに出力する仕様に
なっています。」
 ここが、intrspy みたい、と思った次第です。

 何をやってんだか、ですが、そこそこ、DOSおよびプログラミングの
勉強は続けてます、という報告でした。DOS機、復活したよ。NEC 98、
まだだよ。

追伸:
>PRINT文なんて基本的なもので大量にエラーが出るなんて。
 basm.exeを使うと、PRINT文がじつはどんなコードなのか分かるのじゃないか
と思う。そこで「未実装のファンクション」の実態が解明できる。
 もしかして、そこまで名指しすれば、万が一には、10#さんが実装
してくれるかもしれない。
 もう無理だろうなぁ、という気もいたしますが。

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


(12615) 12622hello.asm  投稿者:文太   2025/12/22(月) 13:20
    12621 番 文太 さんへのコメント    コメント数 1


--- hello.bas ---
PRINT "Hello, world"
-----------------

>basm hello.bas >hello.asm

--- ? hello.asm ---
GetCursor Proc Near
Mov AH,3
Int 10h ;

SetCursor Proc Near
Mov AH,2
Int 10h ;

DoCrLf Proc Near
Mov AH,9
Int 21h

PrintStr Proc Near
Mov AH,0FH
Int 10H ;
-------------------

このあたりでしょうか?


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


(12615) 12623徒労  投稿者:文太   2025/12/22(月) 13:39
    12622 番 文太 さんへのコメント    コメント数 1

>このあたりでしょうか?
>>vtd_err.logに大量のエラーメッセージ

 それは表示系のBIOSコールだよね、ということはすぐ分かった。
 が、同じ内容が vtd_err.log に載っていないわけがない=10#さんは
20年も前からそれは知っている、と気づくのには30分かかった。
 DOS/V だといろいろあるのかなぁ、と空想するのみです。


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


(12615) 12624Tim Paterson  投稿者:文太   2025/12/22(月) 14:06
    12623 番 文太 さんへのコメント    コメント数 1


 まだ(ムダに)書くことがあるの?
 えと、結論は、BASIC を舐めてはいけない、ということ。

 題のTim Patersonさんは、MS-DOS 1.0 を書いた人です。ついでに
debug.com, edlin.com も書いた。debug.comはすごいですよ。
 で、いろいろ経緯があって、Timさんは、MSにもその後お勤めになられた。
そこで、MS-BASIC 4/4.5を書くのにも携わった。ご存じのとおり、すでに
歴史のあるツールなので、基本仕様は変えられないけど、でも、QuickBasic
になったら、やっぱ、ちゃんと構造化もできるし、やれることはいっぱい
あると思う、、、。僕は、まだぜんぜんやってないけど。

 なお、彼はUndocumented DOS の共著者の一人でもあります。debuggerの
章の担当。

 大きなツールを作るとなったら、アセンブラだけで書くには、ちょっと、、、。
 というわけで、Undocumented DOS には、インライン・アセンブラの書き方
みたいなのが、書籍の始めのほうにあります。
 そこでは、Cではこう(いろんなのがある!)、パスカルではこう、
BASICではこう、という具合に、ちゃんとBASICが現役なところを
見せています。

 よく読めてないけど、つくづく、よく書けてる本だなぁ、と思ってます。

 BASICがVTDOSで動くといいですね。純DOS機には問題ないのですが。

>US
 で、ターボデバッガーもちゃんと(ビジュアルに!)動きます。

 BASICが日本で急速に衰退したのは、NEC鎖国時代の影響なんだなぁ、と
思っています。
 たしかWindows98ぐらいまで、QuickBasicってOSに付属してましたよね
(MS-DOS 6.2V には入っている)。でも、日本語が通じないし、あんな奥まった
ところでひっそりされたら、やっぱりみんな振り向かないよね。


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


(12615) 12627Re: Tim Paterson  投稿者:konno   2025/12/24(水) 02:26
    12624 番 文太 さんへのコメント    コメント数 1

>  題のTim Patersonさんは、MS-DOS 1.0 を書いた人です。ついでに
> debug.com, edlin.com も書いた。debug.comはすごいですよ。

全然知りませんでした。Wikipediaを読むと凄い人ですね。
ビルゲイツばかり目立ってうまく利用された感じもしますが。

>  大きなツールを作るとなったら、アセンブラだけで書くには、ちょっと、、、。
>  というわけで、Undocumented DOS には、インライン・アセンブラの書き方
> みたいなのが、書籍の始めのほうにあります。
>  そこでは、Cではこう(いろんなのがある!)、パスカルではこう、
> BASICではこう、という具合に、ちゃんとBASICが現役なところを
> 見せています。

実は今試しているBASICが、ソース中にマシン語を埋め込めるのですよ。
なので足りない機能も自分で作れて、まるでVZのように無限の可能性を感じます。
一歩間違えるとDOSエミュごと消滅する怖さもありますが。

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


(12615) 12630Re^2: Tim Paterson  投稿者:文太   2025/12/25(木) 00:46
    12627 番 konno さんへのコメント

konnoさん

Tim Paterson:
生誕 1956年6月1日(69歳)
 よかった、まだ生きてる。じつは、Undocumented DOS, 2nd edition からは
抜けてるのです。

Undocumented DOS (1st Edition)
by Schulman, Michels, Kyle, Paterson, Maxey, Brown

Undocumented DOS (2nd Edition)
by Schulman, Brown, Maxey, Michels, Kyle

 どうしたんだろう? と心配(?)していたところでした。

>ビルゲイツばかり目立ってうまく利用された感じもしますが。
 僕の感触は、ゲイツもノートンも時代に載ってうまく行き過ぎた人たちだと
思うので、ティムさんに関しては、プログラマーとして好きなようにやれて
よかったね、とだけ思う感じですね。

>実は今試しているBASICが、ソース中にマシン語を埋め込めるのですよ。
>なので足りない機能も自分で作れて、まるでVZのように無限の可能性を感じます。
 おおお!!! さすがkonnoさん!
 いいじゃないですか。
 では、そのうち、Undocumented DOS に書かれていたBASICインライン
アセンブラ・インターフェイスのところを、再確認してみますね。
 僕が使うのは、遠い彼方のことですが。

>一歩間違えるとDOSエミュごと消滅する怖さもありますが。
 そんなの窓が飛ぶだけでしょう。
 DOS、Win9x では、リブートですよ、忘れました?

 これ以外の理由でDOS機をリブートさせまくってます。


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


(12615) 12625Re: VTDOS, Intrspy, Basm  投稿者:konno   2025/12/23(火) 00:10
    12621 番 文太 さんへのコメント    コメント数 1

> こんにちは。お久です。
> 新年会はやらないかなぁ、と思っている今日この頃ですが。

文太さん、お久です。
みなさんお疲れなんし・・・私も膝が痛いので年末は外出も控えて休みます。
来年になって世の中が良くなれば・・・それでもちゅごくこわいしなぁ。

> >cl hello.c
>  という具合に、MSCでコンパイルするとき、どれぐらいファンクション
> コールをしているのか、を調べるデバッガースクリプトの出力です。

なるほど。便利なツールがあるもんですね。NET検索すると
> cl.exe は、Microsoft C++ (MSVC) C および C++ コンパイラとリンカーを制御するツールです。
ですか。初めて知りました。文太さんが知っているのがちょっと悔しいような。(^^;

>  ここが、intrspy みたい、と思った次第です。

このワードをぐぐっても出てこなくて、AIモードでは
> ソフトウェア名: 「INTRSPY」(Interrupt Spyの略と思われます)という名前のユーティリティプログラムが存在しました。
> 用途: このプログラムは、MS-DOSや初期のWindows環境において、プログラムが使用する「割り込み」(interrupts)や非公開(undocumented)のDOS機能を追跡・監視するために設計されたデバッグツールです。

なるほど。いまやこんなワードも死語の世界なんですね。(^^;

>  何をやってんだか、ですが、そこそこ、DOSおよびプログラミングの
> 勉強は続けてます、という報告でした。DOS機、復活したよ。NEC 98、
> まだだよ。

DOSマシン復活おめでとう! うちもPC9821復活して嬉しいです。

>  もしかして、そこまで名指しすれば、万が一には、10#さんが実装
> してくれるかもしれない。
>  もう無理だろうなぁ、という気もいたしますが。

もうわかっているようですが、VTDOSはデバッグモードで動いているようなものです。
エラーメッセージで原因を特定できるようになっています。
自身のソース開発系ツールとして作製したのだから当然なのかもしれませんね。
もっと早くこの辺の提案が出来ていれば良かったのですが・・・

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


(12615) 12626Re^2: VTDOS, Intrspy, Basm  投稿者:文太   2025/12/23(火) 01:08
    12625 番 konno さんへのコメント    コメント数 2

konnoさん

 早々にレスをありがとうございました。

>文太さん、お久です。
>みなさんお疲れなんし・・・私も膝が痛いので年末は外出も控えて休みます。
>来年になって世の中が良くなれば・・・それでもちゅごくこわいしなぁ。

 ここだけ、サクっと返信したいな、と。
 新年会、毎年やるほどのことでもないですかね。ネットなら、いつでも会話
できるわけですし。
 膝。どうかどうか大切になさってください。うーん、思うに足/脚からきます。
歩けなくなります。すると、全部がやばい方向を向く。
 でも、その状態で無理して歩くのもきっといけない。
 本当は病院に行った方がいいと思うのですが。
 足/脚から全部に行った人たちを何人も見てます。そうか、人間は歩かないと
いけない動物なんだ、と。
 僕は、コロナその他で事実上1カ月ほぼ外出しませんでした。歩くのも必要
最低限だった。そしたら、1カ月後、歩くのがほんとに大変になりました。
 このところ、寒い中、せっせせっせと歩いてます。まだ、リハビリ中です。

 ゆっくりゆっくり治していってくださいね。
 努力しないと健康が維持できない年齢に我々はなっているのだと思います。

>なるほど。便利なツールがあるもんですね。NET検索すると

 cl.exe たぶん、MSのCコンパイラ名。
 c1.exe
 c2.exe
 c3.exe pass3 までのコンパイラ実体。

 Cはコードを眺めるだけで何もまだやってませんので、いつからMSが
Cコンパイラをcl.exeにしたのか分かりませんが、そんな名前でした。

 intrspy.exe (+cmdspy.exe == スクリプトのコンパイラ)は、David Maxey
(Undocumented DOS 共著者)がこの本のために、開発したツールなので、
AIが知ってるとは驚き。
 でも、この本6人の共著者がいるのですが(一人は、ブラウンリストの
Ralf Brown)、全員、このツールにはのけぞったと思う。いやあ、本の
コンセプトが固まったね、となったみたいな感じがしました。あらゆる章で
使われてます。

 konnoさんがそこまで興味をお持ちだとは思いませんが、付属FDは
以下から落とせます。見てないけど、たぶん、intrspy.exeかソースの
intrspy.pas が入っていると思う。

https://www.pcjs.org/software/pcx86/sw/books/undocumented_dos/
(落とすのにコツが要ります)

>DOSマシン復活おめでとう! うちもPC9821復活して嬉しいです。

 ありがとうございます。ほんと、やっとです。腐海の整理はぜんぜん
進んでない、ということです。
 いいなぁ、PC9821。
 さっき、まりもさんのサイトを覗きました。ほんと、すごい人だなぁ。

>もうわかっているようですが、VTDOSはデバッグモードで動いているようなものです。
 そうなんですね。でも、エラーログ抑止オプションは欲しかったですね。
 で、その後ふと思ったのですが、あれらの基本BIOSコールぐらいVzだって
使ってないですかね。何かを1つを、hello.asmで見落としたかな(乱暴な処理
でした)とか思いました。
 でも、ま、無理なんだろうな、とは僕も思います。
 VTDOSで、>us 効かなかったし。
 僕は興味ないんですけど、他のエミュレータでBASICは動かないんですか?
 3種類もあると(こういうのちょっと失礼だけど)、一長一短なんでしょうね。


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


(12615) 12628Re^3: VTDOS, Intrspy, Basm  投稿者:konno   2025/12/24(水) 02:27
    12626 番 文太 さんへのコメント    コメント数 1

>  新年会、毎年やるほどのことでもないですかね。ネットなら、いつでも会話
> できるわけですし。

そうですね。皆さんがやりたいと盛り上がってきたときがやり時かもですね。

>  膝。どうかどうか大切になさってください。うーん、思うに足/脚からきます。
> 歩けなくなります。すると、全部がやばい方向を向く。

これは本当にそう思います。なのでしばらくは養生してリハビリを考えます。

>  僕は、コロナその他で事実上1カ月ほぼ外出しませんでした。歩くのも必要
> 最低限だった。そしたら、1カ月後、歩くのがほんとに大変になりました。
>  このところ、寒い中、せっせせっせと歩いてます。まだ、リハビリ中です。

文太さんも経験したからだったのですね。私も心がけます。

>  僕は興味ないんですけど、他のエミュレータでBASICは動かないんですか?
>  3種類もあると(こういうのちょっと失礼だけど)、一長一短なんでしょうね。

私はアセンブラでDOSツールを作ったりもしているのでBASICで出来たらいいなと思って。
全部で動く応用の利くBASICコンパイラが欲しいのです。

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


(12615) 12629メリークリスマス! 2025  投稿者:文太   2025/12/25(木) 00:01
    12628 番 konno さんへのコメント    コメント数 2

konnoさん

 お、クリスマス・イブがもうすぐ終わる、、、。
 一人遊びをしてました。

>全部で動く応用の利くBASICコンパイラが欲しいのです。
 うーん、よく分からないのですが、エミュレータ次第なんですよね、きっと。
 で、僕の一人遊びは、QBX 環境をDOS機に作ること。
 Microsoft BASIC 7.1 (Compiler 統合環境、もちろん英語環境のみ)の構築。

 いえ、コンパイルしたらhello.basだって、vtdos環境で動くんですよねぇ
ということを確認したくて、FD8枚のインストールをDOS機で行いました。
 あはははは、720KBのFDを用意すると変なことに巻き込まれません、、、。

 で、まだ、
>bc hello.bas ;basic compiler
>link hello.obj
 に成功していない。hello.exeができないじゃないの、、、なんてやってました。

 とりあえず、今日は撤退。720KBのFD8枚って何よ!!!

 これは無理難題なのでしょうが、素直にDOS機を手に入れたほうが
konnoさんは幸せなような気がする。ま、敷居の低い行為とは現在言えませんが、
根性があれば、1万円以内でできますよ。あるいは、XP機を発掘するとか。
 ntvdm、悪くないと思う。

 僕は、自作派(!)なので、ノート機はだめぇ、むき出しの基板(MB)が
好き、FDDが好き、な人なので、FDケーブルスロットのあるXP用MBが
いいと思います。今や通な人たちにとっては1万円以上のMBですが、うまく
すると1000円くらいで買えます。HOで、550円のデスクトップ機を、
先日、手に入れました。おほほ、これ、DOS機になれるじゃん、と(すいません)
ほくそ笑みました。でも、これ、数十時間(数カ月という言い方もある)かかって
ますからね。HOでも、もうこんなの滅多にありません。

 メリークリスマス!


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


(12615) 12631事故レス  投稿者:文太   2025/12/25(木) 18:45
    12629 番 文太 さんへのコメント

> いえ、コンパイルしたらhello.basだって、vtdos環境で動くんですよねぇ
 これは、会話の経緯からしてやばい発言でした。
 言い訳すると、ま、頭の中がとっちらかってしまっていて、そんなおバカな
発言を、、、。
 無視が正しいです。
 まったく実験・実績がないのです。言い訳になってないぞ!


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


(12615) 12633Re: メリークリスマス! 2025  投稿者:konno   2025/12/25(木) 23:13
    12629 番 文太 さんへのコメント    コメント数 1

>  Microsoft BASIC 7.1 (Compiler 統合環境、もちろん英語環境のみ)の構築。
>  で、まだ、
> >bc hello.bas ;basic compiler
> >link hello.obj
>  に成功していない。hello.exeができないじゃないの、、、なんてやってました。

MSBASICにBCXという統合環境があるのを初めて知りました。
で、やってみましたが、恐らくLIBの不足などでEXEが出来ませんでした。
QBASIC4.5のQBならできます。オセロまではできますがそれ以上は難しい。
コンパイルはUSモード必須なので DOSVAXJ3 がお手軽です。

それより TBC 凄いです!

print "Hello, world"
end

これを QBASIC でコンパイルすると
2025/12/25 22:47 12,294 hello-qb.exe
TBC でコンパイルすると
2025/12/25 22:42 444 hello-tk.exe
実行ファイルサイズが 444bytes ですよ! とてもBASICとは思えない。

#txt:hello-qb.lzh 9273bytes QBASIC
#txt:hello-tk.lzh 444bytes TBC


メリークリスマス!

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


(12615) 12634Re^2: メリークリスマス! 2025  投稿者:文太   2025/12/26(金) 01:00
    12633 番 konno さんへのコメント    コメント数 2

konnoさん

>>  Microsoft BASIC 7.1 (Compiler 統合環境、もちろん英語環境のみ)の構築。"
>MSBASICにBCXという統合環境があるのを初めて知りました。

 それは、よかった、それなりの会話があったことに意味があったのですね。
 QBasic, QuickBasic, QuickBasic Extended (QBX) など、よく分からないん
ですよね。真剣さが、あきらかに足りないのですが。

>で、やってみましたが、恐らくLIBの不足などでEXEが出来ませんでした。
 もう一回トライしてみるべきなのですが、僕も同じだと思っています。
 インストーラがやたら面倒で、環境変数(LIBの場所)等をきっちり
見なかったのが敗因でしょう(ここで2DD=720KB・FDが必要となり
、、、。たぶん、2HDでも、720KBにフォーマットできる、、、。
「INSERT DISK 3」みたいなのが、番号違いになっちゃった。インストールは
ちゃんとできたはずなんだけど−−根性なくて、今日は続きを試してません)

 でも、QBXでなくて、QuickBasicな環境でも、BC.EXE(Basic Compiler)が
あるものなんですね。研究します。

>QBASIC4.5のQBならできます。
 了解、ありがとうございます。

>コンパイルはUSモード必須なので DOSVAXJ3 がお手軽です。
 そっちのエミュならできるのですね。ま、いつの日にか。

>それより TBC 凄いです!
 おお、これはすごい。実は昨年(今年)の新年会のときに、そいつのマニュアル
と、サンプルコード「ハノイの塔」を持って行って、としきさんに見てもらったの
です。"recursive"な処理がこんなに簡単に書けるの! ベイシックって! という
ような会話をしました。

http://home.e-catv.ne.jp/okadaf/personal.html
 岡田先生は、めでたく愛媛大学を退官なさったようですが、モバ用のmgdisp2.sys
(たしか.sys)で、今でもお世話になっています。
 デバイス・ドライバを書くのがそんなにすごいこととは、最近しりました。

QBASIC:
12,294 hello-qb.exe
TBC:
444 hello-tk.exe

 わお! じつはさっき、

;**********************************************************************
; ASM Source Created Using BASM 6.5(c) 1998 by Kevin Diggins
;**********************************************************************
; File Name: HELLO.ASM
; Creation Date: 12-22-2025
; Creation Time: 13:10:49
;**********************************************************************

というのを再びみたのですが、444 bytes になっておかしくないコードだよね、
と思います。
 たぶん、BASICで動くことが確認できたら、asmコードにして、それを
アセンブルするのがVzer向きなんでしょうね。どんな罠や落とし穴があるのか
分かりませんが。

 VTDOSは、BIOSコールがダメなんですか?
 自分でやってエラーログをみれば済むことなんですが、色々と敷居が高いのです。
 疲れっぽい、というのが大きいですねぇ。
 今日は、1時間の散歩が苦行でした。風邪をまたひいたのか?

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


(12615) 12635Turbo Basic (1st compile) & QBX  投稿者:文太   2025/12/26(金) 22:35
    12634 番 文太 さんへのコメント    コメント数 2

konnoさん

 QBXを諦めたのではまったくありませんが、Turbo Basicどうよ? というので
インストールしてやってみました。ディレクトリ(C:\TB)を作ってただコピー
するだけ。そして上のタブからコンパイル。簡単。コンパイラがtb.exeに入ってる
なんて思わなかったから、最初は、えっえっ? って感じでしたけど。
 マニュアル、分厚いな、こいつも、、、。

C:\TB>dir noname.exe ;名前をつけ忘れて、こうなりました
Volume in drive C is MS-DOS_6
Directory of C:\TB

NONAME EXE 34,736 12-26-25 9:04p ;34 KB, BIG!!!

C:\TB>noname
Hello, world ;どこに出てるの? 
;VZ's console fileにない、
;noname >k.txt とやっても
;noname 2> k.txt とやっても出ない???
;PRINT文っていったい何を、、、?

C:\TB>dir tb.exe
TB EXE 212,844 87-11-04 1:10 ; version 1.1です
; 2 とかきっと存在しない、、、

 てな具合でした。意味ないけど、Hello, world をプリントする .comファイル
を作ってファイルサイズを自慢したくなる、、、。意味ないからしないけど。

 でも、質問です、noname.exeは、どこに"Hello, world"を出している
のでしょう? 「標準エラー」でも「標準出力」でもない場所?
 字が薄いです。
 そして、JP モードにすると、出ない/見えない、、、???
 どっか「普通」じゃない場所に印字だけしている感じ、、、? BIOSコールの
せい?

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

Now to QBX (BC 7.1)

以下を autoexec.bat に加える(普通の環境なら)

set PATH=c:\bc7\bin;c:\bc7\binb;%PATH%
set LIB=c:\bc7\lib;%LIB%
set INCLUDE=c:\bc7\src;%INCLUDE%
set HELPFILES=c:\bc7\help;%HELPFILES%


C:\BC7\BIN>qbx ;統合環境ON RUNタブ内にMake EXEがある
BC C:\BC7\BIN\HELLO.BAS/O/Ot/Lr/FPi/T/C:512; このオプションの山は何?
Microsoft (R) BASIC Compiler Version 7.10
Copyright (C) Microsoft Corporation 1982-1990. All rights reserved.

45810 Bytes Available
45713 Bytes Free

0 Warning Error(s)
0 Severe Error(s)
LINK @~QBLNK.TMP

Microsoft (R) Segmented-Executable Linker Version 5.10
Copyright (C) Microsoft Corp 1984-1990. All rights reserved.

Object Modules [.OBJ]: /EX HELLO
Run File [HELLO.exe]: C:\BC7\BIN\HELLO.EXE
List File [NUL.MAP]:
Libraries [.LIB]: c:\bc7\lib\BCL71ENR.LIB; ;前回は、これが
;見つからなかったのでしょう
C:\BC7\BIN>hello
Hello, world on QBX ;ディスプ上は出たけど、同じ

C:\BC7\BIN>dir hello.exe
HELLO EXE 9,748 25-12-26 22:10 ;Borlandは負けた。
;Tokiwa(岡田先生)には
;MSは負けました

 統合環境の窓用の特殊な表示方式なのかなぁ、、、?
 あれら分厚いマニュアルのどっかには、普通にコンソール出力するやり方が
書いてあるのでしょう、、、。読む気しないなぁ、、、。
 たぶん、BASIC の PRINT文って、けっこう特殊なのかも、、、?

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


(12615) 12636QuickBasic 4.5 (Compile)  投稿者:文太   2025/12/27(土) 00:02
    12635 番 文太 さんへのコメント    コメント数 1

 正確な比較はできません。おかしなことに、このDOS機に
QuickBasic 4.5 がインストールされていないことに気づき、勢いで同じことを
やっただけです。FD2枚だから楽だった。QBXは8枚だったもんね。
やっぱり面倒な解凍とインストール作業(by setup.exe)がありましたが。

 IDEだと、「RUN」タブに、ふつう「Make EXE」みたいなのがあるもの
なんですね。コマンドラインでオプションをマニュアル読んで、、、なんて
面倒なことをするのかと思っていた。因みに、ちょっと高度なことをすると
(Undocumented DOSに載ってる例)、ちゃんとコマンドライン・オプションを
駆使してやるみたいだけど。

C:\QB45>qb ;IDE起動&RUN・Make EXE
BC C:\QB45\HELLO.BAS/O/T/C:512;
Microsoft (R) QuickBASIC Compiler Version 4.50
(C) Copyright Microsoft Corporation 1982-1988.
All rights reserved.
Simultaneously published in the U.S. and Canada.

43757 Bytes Available
43659 Bytes Free

0 Warning Error(s)
0 Severe Error(s)
LINK @~QBLNK.TMP

Microsoft (R) Overlay Linker Version 3.69
Copyright (C) Microsoft Corp 1983-1988. All rights reserved.

Object Modules [.OBJ]: /EX HELLO
Run File [HELLO.EXE]: C:\QB45\HELLO.EXE
List File [NUL.MAP]:
Libraries [.LIB]: C:\QB45\BCOM45.LIB

C:\QB45>hello
Hello, world on QB45 ;同じ、変な出力

C:\QB45>dir hello.exe

HELLO EXE 12,308 12-26-25 11:42p
;コンパイル時に、debug code [NO] みたいなのを指示したので、サイズを
;比較することはできません。

 とりあえず、3つ、BASIC IDE/Compiler が導入されました。
 してたはずなんだけどなぁ、、、。3つあってもしょうがないけどね。

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


(12615) 12637グラフィック画面・テキスト画面  投稿者:文太   2025/12/27(土) 00:56
    12636 番 文太 さんへのコメント

 なんて違いですか。INT 10h(まだ調べてないけど)って、そういう意味?
 といった妄想が浮かびました。
 今、QBの \example ディレクトリのいろんな奴らを試してます。
 インタプリタでも、十分速いんじゃない、という感想です。ま、XP用の
CPU上で QB.exe を走らせてますからね。
 BASICをついに始めた、という感じでしょうか。1年間、何をしていたので
しょうか? 『ベーマガ』とかコレクションしてる場合じゃないでしょう、
大半、動かせないのだから。
 フィルター系は、いまのところ、面倒そうだなぁ、という印象です。
entab.basとか。
 でも、Vzのたとえば検索窓の枠とかって、グラフィック画面を使ってない
のかなぁ? まだまだ基礎勉強が足りません。
 独り言でした。


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


(12615) 12639Re: Turbo Basic (1st compile) & QBX  投稿者:konno   2025/12/27(土) 01:45
    12635 番 文太 さんへのコメント

>  でも、質問です、noname.exeは、どこに"Hello, world"を出している
> のでしょう? 「標準エラー」でも「標準出力」でもない場所?

TurboBASICは無指定なら、VRAM B8000h に書き込んでいると思います。
USモードなら、VRAM B8000h を表示するので見えます。
JPモードは仮想テキストVRAM領域(B8000h以外)を表示するので見えないのです。
でも、MS-DOS Player はJPモードでも表示されますね。
多分仮想テキストVRAM領域と B8000h 両方に書き込んでいるのでしょう。
DOSVAXJ3もそうなっていると良い気がするけど難しいのかなぁ。
DOS/Vの仕様なのかしら。

>  そして、JP モードにすると、出ない/見えない、、、???
>  どっか「普通」じゃない場所に印字だけしている感じ、、、? BIOSコールの
> せい?

TurboBASICの場合、DOSVAXJ3で見えるのは、SCREEN12 を指定した時ですね。
なのでDOSエミュによってSCREENモードを切り替える必要があるのです。
DOSコールで文字を書き込むとかすれば見えるようになるはず。
VTDOSは起動時の初期化で未実装のファンクションやI/Oでエラーになります。

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


(12615) 12638Re^3: メリークリスマス! 2025  投稿者:konno   2025/12/27(土) 01:07
    12634 番 文太 さんへのコメント

>  おお、これはすごい。実は昨年(今年)の新年会のときに、そいつのマニュアル
> と、サンプルコード「ハノイの塔」を持って行って、としきさんに見てもらったの
> です。"recursive"な処理がこんなに簡単に書けるの! ベイシックって! という
> ような会話をしました。

あう、そういえば新年会の時になにやらプリントしたものでとしきさんとやりとり
していましたね。私は良く聞こえないので話には全くついていけてませんでした。
TBCはアセンブラと親和性を意識しているようで、書式は独特ですが、コードが短く
出来るのでしょうね。速度はTurboBASICに比べると遅いようですが。

>  岡田先生は、めでたく愛媛大学を退官なさったようですが、モバ用のmgdisp2.sys
> (たしか.sys)で、今でもお世話になっています。

製品版のBASICコンバイラ TKW-86BCはもう消えてしまったようですね。
もし本格的に使おうと思っても出来ないのは残念ではありますが、購入してまで使うか
と言われたらわかりません。

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


(12615) 12632TBC(TOKIWA BASIC Compiler)で 1÷9801  投稿者:konno   2025/12/25(木) 21:47
    12615 番 konno さんへのコメント

vectorのTBC (TOKIWA BASIC Compiler) を試してみました。
https://www.vector.co.jp/soft/dos/prog/se031410.html

癖が強すぎて過去何度か挫折したのですが、今回何とか動かすことが出来ました。

> 本コンパイラはフリーウェアとして,製品版の TKW-86BC から各種のラ
> イブラリ,インラインアセンブル機能,オブジェクト(.obj)のリンク機能などを
> 外したものであるが,初心者の練習用として十分に実用になると考えられる。

とあって、多少機能不足に思いましたが、ソース中にマシン語を埋め込めるので
VZマクロのように無限の可能性を感じさせます。

今回は、1÷9801 のプログラムです。
起動すると、100 - 1000 の入力になります。
空Enter で102、範囲外の数字は上限、下限に変換されて画面出力されます。
同時にカレントにファイル「9801.dat」が作成されます。
各種DOS,DOSエミュでコンパイルも実行も出来ますので是非試してみてください。

#txt:9801tk.lzh 3782bytes


2025/12/25 21:24 1,018 9801tk.bas
2025/12/25 21:24 4,044 9801TK.EXE
特筆すべきは実行ファイルのサイズの小ささですね。ビックリです。

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