mieki256's diary



2021/04/30(金) [n年前の日記]

#1 [basic] SmallBASIC(非Microsoft版、GPL版)を試用

SmallBasicと言うと、Microsoftが提供しているプログラミング学習用のBASIC環境、 _Microsoft Small Basic を連想してしまうのだけど。

Microsoft とは無関係で、GPLライセンス・無償で利用できる、SmallBASIC というBASIC環境があるらしいと知った。気になったので試用してみた。

_SmallBASIC - Wikipedia
_SmallBASIC | one more basic
_SmallBASIC | download
_SmallBASIC | guide
_smallbasic/SmallBASIC
_SmallBASIC | screenshots
_SmallBASIC | samples
_SmallBASIC | sdl

Windows10 x64 20H2上で試用。smallbasic_12.20.zip をDLして解凍。任意のフォルダに置いて環境変数PATHを通しておく。

中には4つの exeファイルが入ってた。同梱されていた README.TXT によると、以下のような違いがあるらしい。 SDL や FLTK を使っているのか…。

_SDL - Wikipedia
_FLTK - Wikipedia

また、examplesフォルダ内には、サンプルファイル(.bas)がたくさん入っていた。

sbasicg.exe を実行すると、スクリーンエディタっぽいウインドウが開く。

sbasicg_ss.png


sbasici.exe を実行すると、グラフィック描画ができる模様。

sbasici_ss.png

examples\*.bas は、sbasici.exe か sbasicg.exe を使って実行できる。
例 :
sbasici.exe examples\stars.bas
sbasicg.exe examples\stars.bas

sbasici (FLTK使用) は描画が激遅だったけど、sbasicg (SDL使用) は描画が爆速に見えた。

README.TXT には、sbasic.exe を使った、サンプルの実行方法も書かれていた。
sbasic -m . examples\modules\gui.bas
実行するとGUIウインドウが表示された。

sbasic_gui_bas_ss.png

この gui.bas は、raylib というGUIライブラリを使う際のサンプルらしい。

_raysan5/raylib: A simple and easy-to-use library to enjoy videogames programming

examples\modules\*.bas は、sbasic.exe を使って実行する模様。

-m は何の指定だろう…。sbasic.exe --help と打ってみた。
> sbasic --help
SmallBASIC version 12.20 Console Win_64 Fri, 08 Jan 2021 - kw:122, pc:61, fc:147, V:56 I=8 N=8

usage: sbasic [options]...
  -v, --verbose
  -k, --keywords
  -f, --no-file-access
  -x, --gen-sbx
  -m, --module-path='<argument>'
  -s, --decompile='<argument>'
  -o, --option='<argument>'
  -c, --cmd='<argument>'
  --, --stdin='<argument>'
  -h, --help='<argument>'

https://smallbasic.github.io

-m の指定は、モジュールのパスを指定しているようだなと…。「-m .」で、カレントディレクトリをモジュールパスとして指定しているのかも。

Ubuntuでも試用。 :

Ubuntu Linux 20.04 LTS 64bit版上でも試用してみた。smallbasic_12.19_amd64.deb をDLして、以下でインストール。
sudo apt install ./smallbasic_12.19_amd64.deb

smallbasic というパッケージ名でインストールされる。

/usr/bin/sbasicg が実行ファイルで、端末上で sbasicg と打てば実行できる。Linux上では、Windows版におけるSDL利用版相当のみがインストールされる模様。

サンプルファイルもどこかにインストールされるのかと思ったけれど、実行ファイルやアイコンファイル以外はインストールされないっぽい。例えば Debian系 Linux の場合、dpkg -L パッケージ名、と打てばインストールされたファイルの一覧を表示できるのだけど…。
$ dpkg -L smallbasic
/.
/usr
/usr/bin
/usr/bin/sbasicg
/usr/sbin
/usr/share
/usr/share/applications
/usr/share/applications/smallbasic.desktop
/usr/share/icons
/usr/share/icons/hicolor
/usr/share/icons/hicolor/128x128
/usr/share/icons/hicolor/128x128/apps
/usr/share/icons/hicolor/128x128/apps/sb-desktop-128x128.png
サンプルファイルの類はインストールされてないように見える。

とりあえず、Windows版の examplesフォルダを Ubuntu にコピーして動作確認した。

この名前は厳しい。 :

それにしても、Microsoft Small Basic と間違えそうな名前だなと…。ググっても情報が出てこない…。出てくるのは Microsoft Small Basic の記事ばかり…。

こちらのほうが 2000年5月(2001年2月?)に出てきて、Microsoft Small Basic が 2008年10月に登場してるから、後から似た名前を平気で出してきた Microsoft が悪いのだろうけど…。 *1

20201/05/01追記。フォントの設定。 :

sbasicg を実行すると文字が見づらい。フォントを指定したい。以下のページで、フォントを指定する方法が書かれている。

_SmallBASIC | sdl

TTFファイルは利用できるが、OTFファイルは利用できない模様。試してみたらエラーが出た。

とりあえず、Envy Code R と Source Code Pro を入手して導入してみる。

_EnvyCodeR-PR7.zip
_Releases - adobe-fonts/source-code-pro
_software installation - How to use the Adobe Source Code Pro font? - Ask Ubuntu

EnvyCodeR-PR7.zip と TTF-source-code-pro-2.038R-ro-1.058R-it.zip を入手して解凍。

Ubuntu Linux 20.04 LTS の場合は、~/.fonts ディレクトリを作成して、中に *.ttf をコピーする。
mkdir ~/.fonts
cp *.ttf ~/.fonts/

フォントキャッシュを更新。
sudo fc-cache -fv

インストールできたか確認。
fc-list | grep Source
fc-list | grep Envy

sbasicg の実行時、以下のように指定すれば、sbasicg の画面に反映される。
sbasicg -f "Envy Code R"
sbasicg -f "Source Code Pro"
sbasicg --font="Liberation Mono"

以下のフォント指定が使えるらしい。
"Envy Code R"
"Source Code Pro"
"Ubuntu Mono"
"DejaVu Sans Mono"
"FreeMono"
"Liberation Mono"
"Courier New"

Windowsの場合は、sbasicg.exe と同じ場所に、Envy Code R*.ttf を置けば反映されるらしい。

*1: まあ、Microsoft って、「Windows」という名前の商品も平気で出しちゃう企業だから…。もっとも、「Apple」よりはマシか…。

#2 [basic] FreeBASICのグラフィックスライブラリを試用

ググっていたら、FreeBASIC にもグラフィックスライブラリ・描画機能があることを知った。

_さらにFreeBASIC | PIC AVR 工作室 ブログ

であれば、それら機能を試しに使ってみようかなと。環境は Windows10 x64 20H2 + FreeBASIC 1.07.3 (2021-04-10) 32bit。

_gdemo.bas
dim as integer x, y, radius, w, h, i, cnt, r, g, b
dim s as string

w = 512
h = 512
screenres w, h, 32
randomize

cls

cnt = 256
for i=0 to cnt
  x = rnd * w
  y = rnd * h
  radius = (w / 3) * i / cnt
  r = rnd * 255
  g = rnd * 255
  b = rnd * 255
  circle (x, y), radius, RGBA(r, g, b, 32)
next i

color RGB(255, 255, 255)
locate 4, 1
input "input any word : ", s
print "input text is ... " + s
print "push any key"

sleep

fbc gdemo.bas で、gdemo.exe を生成。gdemo.exe を実行。描画ウインドウ内に円をたくさん書いた後、文字列の入力待ちになる。入力した文字列を描画して、キー入力待ちになる。

freebasic_gdemo_ss.png

各命令について補足。
ということで、今回色々触ってみたBASICの中で、線だの何だのを描画できるモノとなると、以下のような感じになるのだろうか…。

以上、1 日分です。

過去ログ表示

Prev - 2021/04 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project