C language for IchigoJam
c4ij は C 言語でプログラムを開発できます。IchigoJam BASIC で実行できるマシン語を出力します。
マシン語を直接作成するのは難しいですが、ライブラリを用いた C 言語の使用で BASIC に近い作成が可能です。
しかも出力はマシン語になるので、BASIC よりも高速な動作を期待できます。
c4ij は GitHub で公開されています。ZIP Download するか、git clone して下さい。
「GNU Embedded Toolchain for Arm」も必要です。
Downloads | GNU Arm Embedded Toolchain
Windows では make も必要です。
2019年8月16日 commit より、Windows では .exe ファイル生成のためにビルドが必要になる場合があります。
「Visual Studio」もインストールして下さい。Visual Studio 2019 は Community が無料ダウンロードできます。
次の形で渡されています。
__attribute__ ((section(".main")))
int main(int param, int ram, int rom, uint64_t (*divfunc)()) {
:
}
それぞれ次の用途になっています。
また return 値 が有効で、USR 関数の返し値となります。
c4ij では IchigoJam BASIC 特有のライブラリ std15.h が入っています。
IchigoJam の領域が小さいため、標準 C ライブラリでは BASIC の空き容量に収まりません。
独自のライブラリで構成されています。
いずれも IchigoJam BASIC で用意された API を実行しているだけです。
API の対応は2019年8月16日の commit で IchigoJam BASIC 1.4.0b9 以降(正式版 1.4.0 以降)となっています。
Makefile を開き、編集します。
.c ソースファイルを指定します。デフォルトは main.c になっています。
そのまま維持してビルドしたいファイルを main.c に変更しても良いでしょう。
make poke で使用します。IchigoJam BASIC への収納番地と行番号付加を設定します。
2019年8月16日の commit では Windows 実行ファイルが含まれていないので、ビルドが必要です。
Visual Studio 2019 をインストールし、bin2bas.c をビルドして bin2bas.exe を生成します。
Developer Command Prompot for VS 2019 または Developer Power Shell for VS 2019 を起動し、cl bin2bas.c とします。
ファイル bin2bas を削除するか、BIN2BAS 行の ./bin2bas を ./bin2bas.exe にして下さい。
IchigoCake BASIC のプログラム領域は #E00 からなので、修正を要します。
番地 #1000 に設定する場合、--startaddress の 10 進数表記は 4096 です。
make write で使用します。福野さんがオプション -sector を追加している lpc21isp が必要です。
ソースのみなので、ビルドが必要になります。README にコマンドがあります。
Windows は Developer Command Prompot for VS 2019 または Developer Power Shell for VS 2019 からビルドして下さい。
lpc21isp はファームウェアの更新で使用するプログラムです。周辺機器/パソコンと接続/ファームウェア更新 を参照して下さい。
make write で使用します。シリアルのポートを指定します。
デフォルト /dev/tty.SLAB_USBtoUART は macOS での指定方法で、
Windows では例えば com3 と指定します。
lpc21isp のところで失敗する場合、$(LPC21ISP) ではじまる行の 115200 を 57600 に変更して下さい。
CLI より make を実行します。
Windows 10 の場合は コマンド プロンプト または PowerShell、Git 使用時は Git Bash が使えますが、
コマンド プロンプト・PowerShell で失敗する場合は Git bash を使って下さい。
macOS は通常 ターミナル を使用します。
2019年8月16日 commit より make にオプションを付けるようになりました。
CSRC = main.c のままにしている場合、最終的に main.bas ができます。
画面上にもそのプログラム・ダイレクトコマンドが表示されています。これを IchigoJam へ転送する事で動作します。
中身は POKE と USR です。必要な場合は前後に BASIC のコマンドを追加できます。
最低でも POKE の後に USR の追記が必要です。最大 512 バイトになっています。
この方法を用いると大容量で実行する事ができます。最大容量は 3k バイト(本体プログラム 0~3 の領域を使用)
または 7k バイト(毎回シリアルから転送して実行)です。本体のプログラムは破壊されますので、ご注意下さい。
この時 lpc21isp を使用し、シリアルで IchigoJam へ転送しますので、
IchigoJam を ISP モードにして(ISP-GND を接続して電源を入れる)シリアルを接続した状態で実行して下さい。
通常起動により、プログラムが自動実行されます。
SkyBerryJAM は 栃木県立栃木工業高等学校 が管理する登録商標であり、
SkyBerryJAM は 栃木県立栃木工業高等学校 の商標です。
Raspberry Pi は
Raspberry Pi 財団 の登録商標です。
Raspberry Pi is a registered trademark or
trademark of
the Raspberry Pi Foundation.
"RISC-V" の商品名は RISC-Vインターナショナル が管理する登録商標です。
The “RISC-V” trade name is a registered trade mark of
RISC-V International.