ラズパイの段ボールケース2016/02/29(月)
むき出しだとどうも不安なので、段ボールでラズパイのケースを作った。
右にあるのは USB-シリアル変換器。秋月の「FT-232RQ USBシリアル変換キット」を使った。コンソール入出力はシリアル経由で、ファイル転送だけ無線 LAN 経由の SSH で行う。
こう見るとやっぱり貧乏臭いな。輪ゴムが特によろしくない感じ。そのうち作り直すかな。
コンソール出力に VT100 互換のエスケープシーケンスを出せるようにしてみた。一応動いているのだが、カーソル位置設定のシーケンスの後に 1 ms ぐらいのディレイを入れてやらないと、表示がついて来れなくなる。Mac のターミナルの問題?
スクリーンエディタ実装中2016/02/18(木)
行番号のない BASIC なので、スクリーンエディタがあるとよい。いちいち BASIC から抜けて、nano とか vi でソースを編集して、もう一度 BASIC に戻って LOAD する、なんてスマートじゃないからね。
まだ画面表示までしかできてない。昔祝一平氏が書いておられたけど、テキストエディタってめんどくさいんだよな。例外事項がいっぱいあって、ソースが場合分けでごちゃごちゃになってしまう。エディタを作る、というのは、こういう汚れ仕事につき合い続けることに他ならない。
ラズパイちょっと整理2016/02/14(日)
小物を買い足して、ちょっと整理できた。
- 12V/2A の AC アダプターと、DC プラグアダプターを購入。DC プラグアダプターを順に試してみたところ、モニターの DC ジャックは4 mm/1.7 mm (センタープラス)であることが判明した。
- モニターの USB 電源からラズパイに給電。一応安定している模様。
- HDMIケーブル、USBケーブルはまだ長過ぎる(両方とも 90 cm)。50 cm のを買い直しかな。
- USB キーボードはあきらめて、ラズパイの USB ポートにはプラネックスの無線 LAN アダプタを直結。これは消費電力が小さく、ドライバが Raspbian に含まれているので、ラズパイでは使いやすい。
- GPIOを使ったシリアル接続でもいい。ただし、この場合ファイル転送が困難。昔ながらの xmodem プロトコルあたりを実装すればよさそうだけど…。
ラズパイ BASIC で「さめがめ」2016/02/13(土)
実機でも動きました。「さめがめ」(まきがめ)を作ってみた。
実機はいろいろ問題があります。
- ケーブルが邪魔。ひたすらに邪魔。どのケーブルも長過ぎる上に、結線がめんどくさい。「ちょっと引っ張り出して試してみる」のが憂鬱になるレベル。
- モニターはこれなのだが、いろいろと不便。まず電源が 12 V なので、ラズパイの 5V と別電源が必要。モニターに USB 端子がついているけど、ここから 5V をとってラズパイを動かすと、なんか挙動不審になる。電源が足りてない感じがする。モニターの仕様上はこの 5V は 2A まで取れるので、元の 12V が足りないのかも。また、モニターの付属品だけで動かそうとすると、コンポジット入力やらヒューズボックスやらが一体化した長いケーブルを使うことになり、これがすさまじく邪魔。モニター本体にも DC in があるけど、ジャックの仕様がよくわからない。手元のアダプタはどれも合わなかった。
- ラズパイは Model A+ を買ったため、ネットワーク接続をするためにセルフパワーのハブが必要。これも結線を無駄に増やす要因になっている。
- 突然画面がブラックアウトすることがある。SSH接続は生きているので、ラズパイ自体は動いている。これもモニター側の問題か?
- 電源を入れる時にモニターを HDMI 接続していると、ラズパイが立ち上がらない。最初は抜いておいて、ブートプロセスが始まったら接続するようにしている。
もう少し上手に運用する方法を考えないといかんな。なお、さめがめのソースはこちら。(処理系を公開してないのに BASIC ソースだけ公開しても意味ないけど。)
QEMU 上のラズパイで BASIC 動いた2016/02/07(日)
QEMU 上のラズパイで動いた。そんなに難しくなかった。
最初、Mac 上でクロスコンパイル環境を整えようとして、ハマりかけた。どうせそんなに大きなプログラムでもないのだから、ラズパイでビルドすればいいんだ、と考え直して、そこからは簡単だった。bison
は入ってないので、そこだけは Mac でビルドしておく。(bison
使うなんて大げさな、と思われるかも知れないけど、パーサを一から書くよりずっと楽なんでね…)
QEMU でラズパイをエミュレート2016/02/06(土)
ちょっと本気モードになって来た。ラズパイを Mac 上でエミュレートするため、QEMU をビルドした。むちゃくちゃ大変だった…何度も挫折しかけたけど、なんとか乗り越えた。詳細はこちらで。
左上の画像はペンギンさんだけど、動いているのは Raspbian jessie lite です。
BASIC 製作中2016/02/01(月)
ラズパイ用 BASIC の話の続き。BASIC の処理系を作り始めています。とりあえず、Mac 上では動き出した。
本当にラズパイに載せられるかどうかはわからん。ベアメタル化は自分の技術では無理なので、Linux の CUI から立ち上げる形になると思う。X Window は使わず、フレームバッファ直書きで。
BASIC の仕様はこんな感じ。
- 数値は 32 ビット整数か 64 ビット浮動小数点数。変数の後ろに '#' をつけると浮動小数点型になる。
- 文字列変数は実装予定だがまだ手つかず。
- 行番号なし。制御構造として
IF...THEN...ELSEIF...END IF
,DO...LOOP WHILE
,DO WHILE...LOOP
,FOR...TO...STEP...NEXT
がある。このへんは、JIS Basic の仕様を参考にした。ラベルへのGOTO
も一応ある。 FUNC...END FUNC
,SUB...END SUB
で関数、手続きを定義できる。再帰呼び出し可能。DIM
変数は4次元まで。関数・手続きにも参照呼び出しで渡せる。
IchigoJam などの Tiny Basic の流れではなくて、もう少し大きな処理系を目指すことになる。どこまで行けるかわからないけど、とりあえず走ってみるつもり。