電子辞書Brainをいじる (9) BrainuxでBASICで遊ぶ


YaBasicを試す

Brainux上で動くBASICインタープリタを探してみたところ、
グラフィックもサポートしているのものとして、YaBasicというものが見つかりました。

△ yabasic  グラフィック処理も可能なBASICインタープリタ

https://packages.debian.org/bullseye/yabasic
https://2484.de/yabasic

起動:yabasic

Yabasicは伝統的なBasicインタプリタです。goto文や様々なループ文を備え、サブルーチンやライブラリを定義できます。簡単なグラフィック処理や印刷も可能です。C言語で書かれたライブラリを呼び出せるため、スタンドアロンプ​​ログラムの作成も可能です。YabasicはUnixとWindowsで動作し、充実したドキュメントが用意されています。小型でシンプル、オープンソースで無料です。

Burainuxでも動作するグラフィック処理も可能なBasicインタープリタです。

 

 インストール1:APT経由 ”sudo apt install yabasic”
 (グラフィック機能利用時には、XLIB_SKIP_ARGB_VISUALS=1が必要)

 インストール2:ソースからインストール
 (グラフィックモードの不具合解消に挑戦して、
  opwn window自体はできるようになったが、
  その先の描画でエラーになるので挫折中)
  ビルド時に-o3 -march=native指定することでの高速化はおそらくできます。

 

YaBasicの実行方法

YaBasicでBASICコードを実行するには、以下のような方法があります。
・BASICコードをファイルに保存して引数として呼び出す
 yabasic ./demo.yab

・yabasicを起動して、BASICコードを入力していき、最後に何も入力しないでEnterを押す

yabasic
 print “Hello”

 Hello

ただし、xterm上で起動すると、文字の色指定がうまく表示されないときがあるので、
その場合は、brainuxデフォルトのターミナル(lxterminal)を使いましょう。

———-

また、グラフィック処理を使う場合にはそのまま起動するだけではエラーになります。

user@brain:~$ yabasic

open window 100,100

X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 1 (X_CreateWindow)
Serial number of failed request: 18
Current serial number in output stream: 22

これは、yabasicが想定しているグラフィック環境と、実態(BrainuxのX環境)間のずれのせいでグラフィックウィンドウがうまく開けないためのようです。

この場合、以下のようにしてyabasicを起動してください。
これでグラフィックモードも開けるようになります。
 XLIB_SKIP_ARGB_VISUALS=1 yabasic

毎回入力すのが大変であれば、以下のようにalias設定すれば、
ターミナル上で、「yabasic」と入力するだけでOKになります。

ちなみに、Linux上では、.yab の1行目に以下のどちらかを書いておいて、
chmod +x hoge.yab と打って実行権限を付ければ、
./hoge.yab で実行できるようになるそうです。

ただbrainuxの場合は、以下のようにラッパーを作成しての対応が必要そうです。
(この対応をするのであれば、alias設定は不要です)

$ sudo mv /usr/bin/yabasic /usr/bin/yabasic-brain
$ sudo vi /usr/bin/yabasic
#!/bin/sh
XLIB_SKIP_ARGB_VISUALS=1 /usr/bin/yabasic-brain “$@”
$ sudo chmod /usr/bin/yabasic

 

———-

YaBasicのサンプルプログラム

YaBasicのマニュアルは、「https://2484.de/yabasic/support.html」に書かれています。

また、関連サイト「https://2484.de/yabasic/related.html」から、yabasicで使えるBasicコードにたどり着くこともできそうです。
Brainで使う場合は、解像度問題があるのでそこは考慮しないといけませんが、
特にRosetta Codeは非常に参考になります。

いくつか、サンプルプログラムを動かしてみます。
(一部変更済済)

hello.yab Hello World表示

 

asciitable.yab アスキーコード表示

 

gdemo.yab グラフィック表示デモ

 

lifegame.yab ライフゲーム

 

clock-degital.yab デジタル時計

 

clock-analog.yab アナログ時計

 

Mandelbrot.yab マンデルブロート集合描画

 

その他参考になるサンプルプログラムを公開しているサイト

その他いろんなサイトで、サンプルプログラムを見つけることができます。

公式デモ

Yabasic公式ページ内にあるyabasicのソースコード内にある
demo.yab を実行すると、
素数調査&テキスト横スクロールデモ、
グラフィックデモ、三角錐回転デモ
が見られます。

 

yabasic-examples

https://github.com/spartrekus/yabasic-examples

サインカーブ表示デモとテトリスが含まれています
(テトリスは解像度の関係で下部分が表示されていないので別途調整が必要です)
(2か所ほど数字を変えれば調整できますので、挑戦してみてください。)
(ヒント: 縦20行->17行にすれば、Window最前面化せずとも表示できます。)

 

Rosetta Code(YaBasic)

https://rosettacode.org/wiki/Category:Yabasic

いろんな言語でのサンプルプログラムが刑されていますが、YaBasicだけで大量のサンプルがあります(今回サンプルとして実行したものもここサイトのものをベースにしているものがあります)。

参考(PS2版YaBASIC)

PS2版YaBasicについて

ネット上で探すと、PS2用のyabasicソースもみつかりますが、
一部PS2専用に追加されている命令が使われているようで、Brainuxで利用可能でX11版では動きませんでした。

これは、PS2で追加されたBASIC命令がいくつかあるためです。
特にsetrgb命令がが頻出するようです(色のパレット変更命令ぽい?)。

ただ、Brainで利用可能なX1ポート版では未対応で、一時期本家に取り込むかという話はあったようですが、X11などでは実装は難しいとのことでペンディングになっているようです。

https://github.com/marcIhm/yabasic/issues/39
// Additions introduced with the PS2 version
void triangle(struct command *cmd);
void gtriangle(struct command *cmd);
void setrgb(struct command *cmd);
void setdrawbuf(struct command *cmd);
void setdispbuf(struct command *cmd);

PS2用のBasicをWin32ポートに移植したものや、
javascript実装したもの(Web上で実行できます)もあるので、
こちらで動かすことはできそうです。

Win32移植版
https://sourceforge.net/projects/win32yabasic

Javascript実装
https://www.mrdictionary.net/yabasic

 

PS2用ゲームプログラムについて

PS2用YaBasicソース

Yabasic for PS2

Yabasic for PS2 : Free Download, Borrow, and Streaming : Internet Archive

昔はPS2のゲーム機加税回避のため、一部の国でプログラミング言語を梱包したことがあるようで、その際に梱包されたのがこのYabasicの移植版だったそうです。

先ほどの通り、特殊な命令が追加されています。

上記のリックから、Ps2用のYaBasicソースが入手できます。
ただ、一部特殊な命令が使われているのと、Window解像度が640×512になっていることが多いので、ゲームレイアウト的にも厳しいものもあるかもしれません。
(Brainuxの解像度は縦480ですが、Windowの枠を考えるとを実質440-450くらいです。)

———-

Win32 PS2 YaBasic Samples

https://win32yabasic.sourceforge.net/samples.html

PS2版YaBasicのWindows移植版のサンプルプログラムです。
特に、「rotating_triangle」というグラフィックデモをBrainで動かしてみたかったのですが、
PS2版で追加された専用命令をメインで使用しているため、断念しました
(下の画像はJavascript実装上で実行したものです。)。

 

 

 

 

BasiC-256を試す

プログラミング学習用のBASIC動作環境とのことです。

標準では、GUI表示されるウインドウの中に、
・エディタ部分、
・テキスト出力エリア、
・グラフィック出力エリア
が入っています。
また、変数確認エリアも追加できます。

ただ実行するだけでなく、デバック実行として、1行ずつ実行していくことも出来ます。
この際には」、変数確認エリアを見ながら確認することも出来るので、学習に役立つでしょう

〇 basic-256 (basic256)  子供向けの教育用BASICプログラミング環境

BASIC-256は、誰でも(特に中学生・高校生)にコンピュータプログラミングの基礎を教えられるように設計された、使いやすいBASICバージョンです。gosub、for/next、gotoといった伝統的な制御構造を採用しており、子どもたちがプログラムのフロー制御の仕組みを簡単に理解できます。グラフィックモードが組み込まれており、数分で画面に絵を描くことができます。
また、楽しい演習を通してプログラミングの概念を紹介する、詳細で分かりやすいチュートリアルも用意されています。

https://packages.debian.org/bullseye/basic256
https://basic256.org/

起動:basic256

ドキュメントも日本語はありませんが、用意されており、
このページにサンプルプログラムも紹介されています。
https://doc.basic256.org/doku.php

YaBasicと比べると遅いですが、実行結果の確認は楽です。

Brainで実行する場合は、Basic-256が統合環境のため、
各ウィンドウが小さくなってしますが、学習用途であれば何とかなるかもしれません。
グラフィックウィンドウについては、エディタ、テキスト出力エリア、グラフィックを同時に出力した場合で、調整すれば、縦幅170くらいは表示できそうです。
(グラフィックウィンドウについては、縮小化表示もできます[1/2(half),1/4(quarter))
出力結果をPDFで出力することも出来ます。

 

サンプルプログラムについて

サンプルプログラムとしては、以下からソースプログラムをダウンロードすれば、
中に入っていました(.kbsファイル)

https://sourceforge.net/projects/kidbasic/files
basic256_2.0.99.10.orig.tar.gz

solar_system.kbs

snowflakes.kbs

rainbow.kbs

spriteslice.kbs

ring_01.kbs

 

 

その他参考になるサンプルプログラムを公開しているサイト


ドキュメントに掲載されているサンプルプログラム

https://doc.basic256.org/doku.php?id=start

spinner.kbs  針が動いて1-10がランダムに選ばれます。

gamesballons.kbs 大量の風船が上に浮かんでいきます(がBrain上だとめっちゃ遅いです。)

CopyCat.kbs サイモン的記憶ゲーム(実行には一部修正が必要)

mobius.kbs アニメーション化されたメビウスの輪(スムーズに回転します)

morie.kbs モアレ模様が表示されます。

square.kbs スクエア・スパイラル

jagged.kbs Jagged Depths 三角形を使ってカラフルな円形を表示します。(1/2表示)

 

Rosetta Code(BASIC256)

https://rosettacode.org/wiki/Category:BASIC256

いろんな言語でのサンプルプログラムが刑されていますが、BASIC-256だけで大量のサンプルがあります。

マンデルブロート集合描画
https://rosettacode.org/wiki/Mandelbrot_set#BASIC256
(全部表示されるまでに、1時間以上かかります。)

 

Basic Bits – Copy paste & run

https://basic256.blogspot.com

BASIC-256で動作する各種プログラムを公開されています。
グラフィックデモの他に、いくつかのゲームも含まれています。

Views: 144

カテゴリー: Brain, Brainux パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です