Tako can fry!

とほほ・・・

DS で BASIC ができるらしい

NDS (DSi のみ?) で BASIC が動くらしい。
http://smileboom.com/special/petitcom/


昔、GBA の Homebrew に手を染め始めた頃、GBA を昔ながらのマイコンにしてしまおうと計画していて、その一環で BASIC を作ってみようとしたことがあったっけ。

GBA からブートケーブルUSB を経由して PC とシリアル通信できるようにして、キーボードの入力をシミュレートさせようとしたところ、ROM カートリッジが挿さっている状態だと通信できないようなので、断念することに。

代わりに、ソフトウェアキーボードからキーを入力させる方向で、作りこんでいこうかなと。


平行して、インタプリタを実装する方法を探る。

最終的にテキストによるプログラミングになるとは限らないけれども、バックボーンとして BASIC っぽい言語なりスクリプトなりが実装されている必要があるなと思い、ひとまずは自家製プログラミング言語インタプリタを実装していくセンで。

そこで、いつもお世話になっている flex + bison を使うことに。


四則演算を行うインタプリタの例を作って、さっそく GBA に載せようとしたところ、flex + bison がはき出すコードに標準入出力の関数が含まれていることに気がついた。

開発環境には devkitAdvance を利用しているわけやけど、この環境では newlib が含まれている。

newlib のソースコードを追ってみると、_write や _read などの関数を実装することで、対応できそうな感じ。


とりあえず _write を実装してみたところ、libc の printf や fprintf が使えるようになり、それを実行してみたのが上の画面。

最近、SuperCard から SD カードのファイルへアクセスするようなコードが公開されてたし、それを使えば fopen などのファイルを扱う関数も動くようになるのかも??

結局、四則演算ができる程度のものしか作れなかったけど、実際にソフトが売り出されるとは!?