2020.9.11
前へ
次へ
ホームページトップへ戻る

[新連載]復活!TINY BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
すべてはここからはじまりました。
中日電工も。
40年前を振り返りつつ新連載です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜



[第87回]


●RND(2)

前回予告しましたように、今回はTINY BASICのRND関数を実際に使って、その実力のほどを確認してみたいと思います。
実はRND関数のテストをする過程で「中日電工版」TINY BASICにバグがみつかりました。
ひょっとすると皆様も当記事を参考にしてさっそく試してみられるかもしれませんので、下にバグ修正後の最新版のリンクを用意しました。
エンドコードの問題を回避するため拡張子はtx2にしてありますが、中身はプレーンテキストですのでこの拡張子のままでもメモ帳やTeraPadなどで開くことができますが、できればダウンロード後に拡張子をtxtに変更してお使いください。
詳しくは[第41回][第42回]をご参照ください。
またダウンロード後のアセンブル作業や、ZB3BASICにロードして実行する手順などについては[第33回]を参照願います。

tinybstb.tx2

本来的には上のテキストファイルをND80Z3.5などに附属の8080アセンブラASM80.comにかけてバイナリファイルを作っていただくことが望ましいのですが、「そういう面倒なことはやりたくない」とお思いの方もいらっしゃるかもしれません。
何事もお客様第一のサービスが肝要でありますから、下にアセンブル済みのバイナリファイルのリンクも用意しました。
拡張子をbinにしますと、ひょっとしてウイルスチェックにひっかかってしまうかもしれません。
ですから拡張子をbbbに変えてあります。
ダウンロード後に拡張子をbinに変更してお使いください。
中身はバイナリファイルですから、このままダウンロードしてND80Z3.5などのシステムのあるフォルダにコピーしていただいたあとで、ZB3BASICで/LD TINYBSTB.BBB,8000[Enter]のようにしてロードすることもできます。

tinybstb.bbb

さて。
準備ができたところでいよいよRND関数のテストです。
とりあえず即席で作ったテストプログラムです。

logfile nd80zlog\0909072.txt open

ND80ZVに接続しました
0001 0000 - z
1000 00C3 - 
*** nd80z3 basic ****
>/ld tinybstb.bin,8000
loading TINYBSTB.BIN ...1fdf(8159)bytes loaded,from 8000 to 9FDE
>jp 8000

TINYBASIC

OK
)10FOR A=1 TO 10
)20@(A)=0
)30N.A
)40FOR B=1 TO 100
)50A=RND(10)
)60@(A)=@(A)+1
)70N.B
)80FOR A=1 TO 10
)90P.A,@(A)
)100N.A
).
  10 FOR A=1 TO 10
  20 @(A)=0
  30 N.A
  40 FOR B=1 TO 100
  50 A=RND(10)
  60 @(A)=@(A)+1
  70 N.B
  80 FOR A=1 TO 10
  90 P.A,@(A)
 100 N.A

OK


実行してみました。

)R.
     1     8
     2     5
     3    19
     4     9
     5     7
     6    13
     7    10
     8     9
     9     5
    10    15

OK


100回程度ではちょっとバラつきが大きいようですが、なんとなくそれなりに計算できているように見えます。
1000回にして再実行してみました。
行番号40を変更するため
40 FOR B=1 TO 1000[Enter]
を入力しました。
こういうことが簡単にできるというのがBASICインタプリタの強みです。

)40 FOR B=1 TO 1000
)R.
     1   106
     2   111
     3    84
     4    95
     5    82
     6   124
     7    66
     8   116
     9    85
    10   131

OK


まだばらつきがあるもののかなりよい感じでは?
もう一声ということで10000回にして再実行しました。

)40FOR B=1 TO 10000
)R.
     1   957
     2  1080
     3   927
     4  1031
     5   875
     6  1127
     7   746
     8  1192
     9   881
    10  1184

OK


原始的なインタプリタということもあってさすがに実行時間は遅いです。
10000回の実行では1分ぐらいかかりました。
結果としては、まあこんなもんじゃありませんかねえ。
超簡略な乱数発生プログラムとしてはなかなかによくできていると思います。
簡単なゲームなどに使うのならば、これで十分でありましょう。

復活!TINY BASIC[第87回]
2020.9.11upload

前へ
次へ
ホームページトップへ戻る