SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

IchigoJam RPiでライフゲーム

ライフゲーム Advent Calendar 2017にエントリーしました。

Raspberry Piで動くIchigoJam BASIC環境「IchigoJam RPi」が公開されました。
アイ・オー・データ機器からは、ハードも含めた「プログラミングキット」が発売予定です。
http://www.iodata.jp/news/2017/newprod/ud-rp3pki.htm

当初公開のバージョンはキーボードの不具合や画面表示のバグがあったのですが、Facebookで修正版のファームウェアが公開されています。
https://www.facebook.com/groups/ichigojam/1046775638795522/
このファイルをSDカードにコピーして、Raspberry Piに差せば起動できます。
数秒で起動して、すぐにBASICプログラムが書けます。

動作速度検証のため、ライフゲームのプログラムを動かしてみました。
過去に試した記事は以下のとおり。

IchigoJamボード(1世代更新に約3分)、IchigoJam PC(1世代更新に1秒以内)
http://d.hatena.ne.jp/shiro0922/20160115

●IchigoLatte環境(1世代更新に約30秒)
http://d.hatena.ne.jp/shiro0922/20160814

そして今回のIchigoJam RPi(Pi3 model Bにて構築)ですが、1世代更新は2秒程度。内部計算はかなり速いようです。
動画はこちら。

プログラムはPC版と同じで、以下のとおり。

1 '*LIFE PC
2 CLV
3 '@RESTART
4 FORZ=50TO97:[Z]=(RND(256)<<8)+RND(256):NEXT:BEEP:GSB27
5 '@LOOP
6 L=0:K=0
7 FORY=0TO23:FORX=0TO31:C=0
8 FORE=-1TO1:FORD=-1TO1
9 U=(X+D)&31
10 V=Y+E:V=V+24*)((V<0)-(V>23))(
11 Z=V*2+U/16:M=1<<(U%16)
12 B=[Z]&M:C=C+(B<>0)
13 NEXT:NEXT
14 Z=Y*2+X/16:M=1<<(X%16)
15 B=[Z]&M
16 IFBB=1:C=C-1
17 Q=0
18 IFC=2Q=B
19 IFC=3Q=1
20 IFQ[Z+50]=[Z+50]|M
21 IFB<>QK=1
22 L=L+Q
23 NEXT:NEXT
24 GSB27
25 IFL>0&&K>0GOTO5
26 GOTO3
27 '@PRTLIFE
28 CLS:A=#900
29 FORZ=50TO97:D=[Z]:[Z-50]=D:[Z]=0:FORX=0TO15
30 B=D&1:POKEA,B
31 A=A+1:D=D>>1
32 NEXT:NEXT:RTN

なお、Raspberry PiのGPIOとUSBシリアルを以下のように接続すれば、IchigoJamボードと同様にTerminalソフトやIJUtilitiesなどでプログラムを転送できます。

ラズパイ側−シリアル側
6(GND)−GND
8(TXD)−RXD
10(RXD)−TXD

追記:画面のコンポジット出力

IchigoJam RPiのSDカード内のconfig.txtに、

sdtv_mode=1

の1行を追加すると、これまでのIchigoJamと同じく、コンポジット端子からTVに画面出力できます。
コンポジット端子搭載の初代Raspberry Piにて。