ツタヤで平積みされていたので手に取りました。これで2500円は安い!(と思う)。でも、中高生も対象とするなら980円くらいで売って欲しいところです。
さっそく家でデモプログラムを動かしてみました。WiiやDS世代の子供達もレトロなサウンドで大はしゃぎ。入出力デバイスはゲームの本質ではないんだな。。。と。
命令表を参考にプログラムを作ってみました。全部で30種類の命令があります。
大学院のときに専門学校のバイトでMASMとCASLを教えていました。ただ、あくまでバイトなので自発的に本格的なプログラムを作った経験はありませんでした。
レジスタの使い方を思い出すのにちょっと時間がかかりましたが、「LEDくればナイトライダー」、ということで作成開始!(今どきの大学生はナイトライダーを知らないでしょうね。。。)
以下がそのときのメモ。
黒が初回トライアル、青が1回目の修正、赤が2回目の修正です。それぞれ、どんなことを考えたのかメモします。
■初回トライアル
CAL SETRという命令がYレジスタの値でLED(0〜6)を点灯します。そこでYレジスタの値を0から6まで連続的に変化させるプログラムをしました。Yレジスタに0を代入してLEDを点灯します。Yレジスタに1加え、その結果が7と等しいか検査します。もし0〜6の間ならCAL SETRにジャンプさせます。7ならYレジスタを0に初期化して同じくCAL SETRにジャンプさせます。
■1回目の修正
とりあえず上記で動くことは確認しました。実行結果は7個のLEDが全点灯。高速にループするので全点灯しているように見えると考えタイマー(CAL TIMR)を追加しました。タイマーはAレジスタの値×0.1秒で指定します。そこでAレジスタに4をセットするプログラム(TIA 4)も追加しました。で、実行してみると、また全点灯。そう、CAL SETRは点灯するだけで消灯しない。全点灯して当たり前なわけです。
■2回目の修正
LEDを消灯するプログラム(CAL RSTR)を追加しました。タイマー(CAL TIMR)後に挿入すると点灯時間が確保されるのでLEDの点灯が見えるでしょう。
やはりこういう言語こそフローチャートが似合います。for文もif文もありません。余計なことを覚える必要がないといういい意味での制約は学習用に最適だと思います。限られた命令とレジスタ(メモリ)をやりくりして富豪的プログラミングならぬ貧民的プログラミング?を実践します。
gmc-4にはプログラムを挿入する編集機能がないので、上記のようにプログラムを修正すると最初からプログラムを入力する必要があります。それでもプログラム規模がこの程度ならほとんど苦になりません。
ストローをLEDにかぶせてディフューザがわりに。完成が以下です。”大人”のみなさんはもちろん大学生のみなさんも遊んでみてはいかがでしょうか?コンピュータとプログラミングの基礎がよくわかると思いますよ。”大人”がお子様と一緒に遊ぶのもありだとおもいます。