IchigoJam で動かすためには Ruby にどれだけ制限を加えればよいのか(RAM 1KB)
— Yukihiro Matsumoto (@yukihiro_matz) April 25, 2019
IchigoJamのCPU、LPC1114FN28/FDH28は、Flash32KB, RAM4KB、mrubyがターゲットとするRAM400KBとは100倍の開きあり。
でも、ぎゅっとプログラミングの楽しさにフォーカスすれば、きっと、大丈夫!
まずは、IchigoJamで人気の「かわくだりゲーム」をRubyでコンパクトに書いていてみて、コンソールで動かしてみました。
「かわくだりゲーム in Ruby」 ターミナルのフォントはIchigoJamフォントに!
できたRubyのプログラムはこんな感じ。
require "./ichigoruby" cls; x=15 while true lc x,5; print "O" lc rnd(32),23; print "*" wait 3 k=inkey() x=x-(k==28?1:0)+(k==29?1:0) if scr(x,5)!=32 break end end
こちらIchigoJam BASIC版と比べてみてください。簡単にステップアップできそうですね!
10 CLS:X=15 20 LC X,5:?"O" 30 LC RND(32),23:?"*" 35 WAIT 3 36 X=X-BTN(28)+BTN(29) 37 IF SCR(X,5) END 40 GOTO 20
かわくだりゲームを手軽に動かすために、エスケープシーケンスから探し始めましたが、リアルタイムなキー入力や、画面表示場所のチェックなどで、行き詰まり、Cursesというライブラリを使いました。
gem install curses
で、cursesをインストールし、なんちゃってIchigoJam風ライブラリ「ichigoruby.rb」と共にお試しください!
「IchigoRuby src on GitHub」
IchigoJamでRubyを動かす、2つのアプローチ
1. IchigoJam BASIC や、IchigoLatte 同様、スタンドアローンで動かす。
2. PCでコンパイルした中間言語をIchigoJamへ転送して、動かす。
1は、エディタやコンパイラも含めて実装する必要があるので、制限が強めのRuby。 2は単純にLPC1114を使い切るC言語より手軽な中規模組み込み開発まで使えるくらいを目指せるかも?
なんと、IchigoJam / IchigoLatte でForthが動く!
「LED Blinking with Forth!? Do you want “IchigoLatte Forth” which is uncompromising programming environment for IchigoJam machine? / ForthでLチカ!?IchigoJam用 超絶硬派プログラミングOS「IchigoLatte Forth」はいかが? – about yrm」
きっと、まったさんが1をやってくれそうな気がするので、こちらは2の実装、やってみます!
links
- 100円マイコンを使い倒そう!たった28byteから始めるマシン語アプリ開発
- Create Happy! Ruby City Matsue 三度目の訪問