mieki256's diary



2021/04/29(木) [n年前の日記]

#1 [basic] 色々なBASICをちょっとだけ触ってみた。その2

_昨日、 bwBASIC、Chipmunk Basic、FreeBASIC を触ってみたけど、他のBASICも気になったので、更にいくつか触ってみた。環境は Windows10 x64 20H2 と Ubuntu Linux 20.04 LTS。

今回は以下を試用。どちらも無償で利用できる。

Basic-256を試用。 :

プログラミング学習用のBASIC動作環境らしい。GUI表示されるウインドウの中に、エディタ部分、テキスト出力エリア、グラフィック出力エリアが入っている。

_BASIC-256 download | SourceForge.net
_BASIC256 - Everybody Can Learn to Program - An open-source computer language for learning
_Basic-256 - Wikipedia
_BASIC 256
_en:start [DokuWiki]

Windows10 x64 20H2上で試用してみた。BASIC256-2.0.0.11_Win32_Install.exe をDLして実行するとインストールされる。スタートメニューに登録された BASIC256 を実行するとウインドウが開く。

エディタ部分に print "Hello World" と打って、F5キーを押すと実行される。テキスト出力エリアに「Hello World」と出力された。

以下はグラフィックの描画テスト。ちなみに、ファイルの拡張子は .kbs になっているらしい。

_gdemo.kbs
w = 320
print "size: " + w + " x " + w
graphsize(w, w)
clg
color blue
for i=0 to w step 10
    color blue
    line w, i, (w - i), w
    color red
    line 0, (w-i), i, 0
    color green
    line i, 0, w, i
    color purple
    line 0, i, i, w
next i

以下のような図形を描画できた。

basic256_on_windows10_ss.png

各命令の簡単な説明は以下。
  • graphsize(W, H) で描画エリアのサイズを指定。
  • clg で描画エリアをクリア。
  • color blue で、描画色を青に。red, green, purple その他も指定できる。
  • line x0, y0, x1, y1 で、(x0, y0) - (x1, y1) に線を引ける。

Ubuntu Linux 20.04 LTS上でも試用してみた。apt でインストールできる。
sudo apt install basic256

basic256 で実行できる。Windows版と見た目はほとんど変わらない。

basic256_on_ubuntu_ss.png

感想としては…。簡易エディタまで含まれているので、たしかに学習向けかもしれない。

ただ、入力時にキーワード等の自動補完をしてくれたりするわけでもないので…。例えば、自動補完をガンガンしてくれる Microsoft Small Basic あたりと比べてしまうと、学習用の環境としては非力な印象も…。

Yabasicを試用。 :

グラフィック描画機能も持っているBASIC環境らしい。Yet another Basic の略で、Yabasic、だとか。

_Yabasic, Yet another Basic for Unix and Windows
_Yabasic, Yet another Basic for Unix and Windows
_Yabasic - Wikipedia

Ubuntu Linux 20.04 LTSでインストールしてみた。apt でインストールできる。
sudo apt install yabasic

以下を hello.yab として保存。

_hello.yab
clear screen
print "Press 'q' to quit ..."
label again
print color("green") "Hello ";
print color("blue") "World !   ";
if (inkey$(1)="q") exit
goto again

yabasic hello.yab で実行。画面に「Hello World !」の出力が繰り返される。qキーで終了。

yabasic_hello_on_ubuntu_ss.png

基本的には外部エディタでソースを書いて、yabasic hoge.yab と打って実行する模様。

ファイルを指定せずに、yabasic と打って実行すると、入力待ちになる。命令[Enter] 命令[Enter] と打っていって、最後にEnterをもう一度打つと、それまで打ち込んだ分を実行して終了する。

Windows10 x64 20H2上でも試用してみた。yabasic-2.89.1-setup.exe をDLして実行するとインストールされる。インストールされた場所にPATHを通したりはしない模様。ただ、インストール時、拡張子 .yab のファイルに yabasic.exe を関連付けしてくれているらしい。
> assoc .yab
.yab=Yabasic

> ftype Yabasic
Yabasic=c:\prog\yabasic\yabasic.exe "%1" "%2" "%3" "%4" "%5" "%6" "%7" "%8" "%9"

関連付けがされているので、DOS窓を開いて hello.yab と打ち込むだけで、yabasic.exe が呼び出されて実行することができる。

グラフィック描画命令についても、少し確認してみた。
  • open window W, H で、グラフィック描画用のウインドウを開くことができる。W, H は、横幅、縦幅のドット数。
  • color R,G,B で描画色変更。R,G,B は 0 - 255 の値を取る。
  • line x0, y0, x1, y1 で、(x0, y0) - (x1, y1) に線を引ける。
  • backcolor R,G,B でウインドウの背景色を指定できる。ただ、open window をしてから一定時間経たないと反映されない模様。
  • clear window でウインドウをクリア。

また、sleep N もしくは pause N で、N秒スリープできる。N は実数も指定可能。例えば 0.5 を指定すれば 0.5秒になる。

簡単なサンプルを書いてみた。

_gdemo.yab
w = 512
open window w, w
sleep 1
backcolour 0,0,0
clear window
for i=0 to w step 10
  v = 255 * i / w
  color 0, v, (255 - v)
  line 0, i, i, w
  color (255 - v), 0, v
  line i, 0, w, i
  pause 0.025
next i
sleep 3
end

Ubuntu上なら yabasic gdemo.yab、Windows10上なら gdemo.yab で実行できる。

yabasic_gdemo_on_ubuntu_ss.png

ちなみに、Linux上では、.yab の1行目に以下を書いておいて、chmod +x hoge.yab と打って実行権限を付ければ、./hoge.yab で実行できるようになる。
#!/usr/bin/env yabasic

グラフィック描画ができるあたりは Chipmunk Basic と似ている感じだけど、あちらよりは安定して動作しそうな印象を受けた。Ubuntu Linux上ではインストールも比較的簡単に思える。

#2 [basic] FreeBASICのGUIライブラリを試用

無償で使えるBASICコンパイラ、FreeBASIC には、window9 というGUIライブラリが存在するそうで。試しに触ってみたのだけど、これがどうも上手く行かなくて。Windows10 x64 20H2上では、ボタン上のテキストが文字化けしてしまう…。

一応、作業手順をメモ。以下の解説ページに従って作業してみた。

_GUI ライブラリ Window9 FreeBASIC
_Gui Library window9 download | SourceForge.net
_projects - Revision 10224: /Modelica/tags/v3.2.2+build.3-release/Modelica/Resources/Library

window9 を使うには32bit版の FreeBASIC が必要とのことで、FreeBASIC-1.07.3-win32.zip を入手して解凍。今まで64bit版を入れてたけど、32bit版に差し替えた。

window9.zip をDLして解凍。

Bin\Win32\UNICODE\*.a を、FreeBASICインストールフォルダ\lib\win32\ にコピー。
libLinked_Lists.a
libwindow9.a

include\*.bi を、FreeBASICインストールフォルダ\inc\ にコピー。
extwstring.bi
Linked_Lists.bi
Window9.bi
zlib.bi はコピー先に既に存在していたので、コピーしなかった。

zlib.zip 等をDL・解凍して、以下を入手。FreeBASICインストールフォルダ\lib\win32\ にコピー。
libz.a
libzlib.a
libz.dll.a

以下のサンプルを動かしてみる。

_FreeBASIC 言語で Window9 を使用する例

一番最初のサンプルを、colorc.bas として保存後、fbc colorc.bas と打って colorc.exe を生成した。

しかし、生成した exe を実行してみると、ボタン上のテキストが文字化けしている。

ソースの文字コードを SJIS や UTF-8 にしてみたが、違う化け方はするものの、文字化けしたまま。それどころか、ソース内の日本語文字列を全部無くして英数字のみにしても、文字化けしている。おかしい。ASCIIしか使ってないのに…。

結局、以下のような状態にしたら、文字化けしない状態になった。
また、以下のページで紹介されているサンプルも、そのままでは動作しなかった。コンパイルはできるが、実行しても何も出てこない。

_GUI ライブラリ Window9 FreeBASIC

日本語文字列は全て英数字にして、かつ、実際に存在するパスを指定してみたら、動いてくれた。

現状、Windows10上で、FreeBASIC + window9 を使う場合、日本語文字列が一切使えないものと思っておいたほうがいいのかもしれない…。

解決策が分かった。 :

その後もしつこく試してたら、解決策が分かった。どうやらソースの文字コードをSJISにすれば済んでしまうらしい。

  • window9 の Bin\Win32\ASCII\*.a を使う。UNICODE\*.a は選ばない。
  • かつ、ソースの文字コードは SJIS にする。

これで、日本語文字列も文字化けせずに表示できる模様。

「この手のソレってフツーは Unicode (UTF-8) を使うものだろう」と、すっかり思い込んでしまって、かえってハマってしまった…。

#3 [ubuntu] VMware + Ubuntu で画面のキャプチャができない

Windows10 x64 20H2上で動かしてる、VMware Player + Ubuntu Linux 20.04 LTS + Xfce 4.14 で、アクティブウインドウのキャプチャができなくて悩んだり。

PrintScreenキーを叩くと、画面全体のキャプチャはできる…。クリップボードにコピーするか、それとも保存するかと尋ねてくるダイアログが開いて、その後の処理を選べる。

ただ、巷の記事によると、Alt + PrintScreen を叩けば、アクティブウインドウのキャプチャができるらしくて。しかし、手元の環境では無反応。何故だろう。Xfce を使っているからだろうか…?

しかし、設定マネージャー → キーボード → アプリケーションショートカットキーを確認すると、Alt + Print には、ちゃんと xfce4-screenshooter -w が割り当てられている…。ちなみに、Print には xfce4-screenshooter -f が割り当てられている。-w はウインドウが対象で、-f は画面全体・フルスクリーンが対象。

試しに、Ctrl + PrintScreenキーにも xfce4-screenshooter -w を割り当ててみた。これなら反応するな…。

Alt + PrintScreen に再割り当てを試みたけど、割り当てができない…。Alt + PrintScreen キーを押しても、Alt L や Alt R が登録されてしまう。

とりあえず、PrintScreen に xfce4-screenshooter を割り当てておくことにした。-f や -w はつけない。この状態だと、一旦、キャプチャ対象を画面全体にするか、アクティブウインドウにするか尋ねてくるので、選択作業が1回増えてしまうけど、これでも目的は果たせるだろう…。

実機上で試してみた。 :

VMware(仮想PC)上で動かしてる Ubuntu Linux 20.04 LTS ではなく、実機上で動かしてる Ubuntu 20.04 LTS で動作を確認してみた。

実機+実際のキーボードで、Alt + PrintScreen を叩いても、反応しなかった…。そもそも実機でもダメなのか…。

Ctrl + PrintScreen に xfce4-screenshooter -w を割り当てると反応する…。また、PrintScreenキーだけ押した場合も、全画面キャプチャが立ち上がる。どうも Alt + PrintScreen だけが動かないっぽい…。

しかし、別PCからVNCでアクセスして操作してる場合なら、Alt + PrintScreen も反応する…。どういうことだ…。

Alt + 何か、が動かないのかと思ったけれど、例えば Alt + F3 とか Alt + TAB などは反応する。

2021/04/30追記。 :

どうもカーネルが件のキー入力を奪っている可能性が…。

_7897 - Unable create keyboard shortcut<alt> +Print</alt>
_Magic SysRq key - Wikipedia
_マジックSysRqキー - Wikipedia

Alt + Print は magic SysRec key として使われてしまう、/etc/sysctl.conf に kernel.sysrq = 0 を書けば無効にできる、と書いてあるように見える。

実機上で動いている Ubuntu Linux 20.04 LTS 上で試してみた。/etc/sysctl.conf に kernel.sysrq = 0 を追加して、sudo sysctl -p で反映。しかし、相変わらず Alt + PrintScreen は反応しなかった。

_Linux Magic SysRq Key 調査 - Qiita

cat /proc/sys/kernel/sysrq で、状態を調べることができるらしい。
$ cat /proc/sys/kernel/sysrq
176
176だから…。同期(sync)コマンド有効、読み取り専用で再マウントするコマンドを有効、再起動/電源オフを許可、という状態なのかな…。

以上、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