IchigoJam と ORANGE pico は、ともにBASIC言語を実行することができ、全く同じコードをそれぞれ実行できることもある。
そこで、環境を判別できれば、共通のコードで書ける部分は共通のコードを用い、配列やI/Oなどの異なる部分は分岐して実行できる可能性が出てくる。
IchigoJam では、ビットオア演算子の優先順位が比較演算子より高い。
(これは0.9系でも1.0系でも成り立つ)
一方、ORANGE pico では、ビット論理和演算子の優先順位が比較演算子より低い。
これを利用した、以下のプログラムで環境の判別を行うことができる。
10 IF 1|1<0 THEN GOTO 30
20 PRINT "IchigoJam":END
30 PRINT "ORANGE pico"
IchigoJam では 1|1<0
は (1|1)<0
すなわち 1<0
と解釈されるので、これは 0
になる。
一方、ORANGE pico では、1|1<0
は 1|(1<0)
すなわち 1|0
と解釈されるので、これは 1
になる。
以下に、これを実際に IchigoJam と ORANGE pico でそれぞれ実行してみた結果を示す。
実際に環境が判別できていることがわかる。
※IchigoJamはjig.jpの登録商標です。