IchigoJam BASIC リファレンス ver 1.4

コマンド解説
LED 数 / エル・イー・ディー数が1ならLEDが光り、0なら消えるLED 1
WAIT 数1{,数2} / ウェイト数1の数だけ待つ(60で1秒)。マイナスの数を指定すると走査線分で待つ(-261でWAIT1と同じ時間)。省略できる数2に0を指定すると画面表示を止め低電力化して待つ。WAIT 60
: / コロンコマンドを後ろに続けて書くときの区切り記号WAIT 60:LED 1
行番号 {コマンド} / ワン1. 数は-32768から32767まで表記できる。 2. 行頭の1〜32767で指定された数は行番号として、コマンドと合わせて記録する。コマンドを省略するとその行を削除(16385以上は指定しないと表示しない)10 LED1
RUN / ランプログラムを実行する [F5]RUN
LIST {行番号1{,行番号2}} / リストプログラムを表示する [F4] (行番号1で1行表示、行番号1がマイナスでその行まで表示、行番号2指定でその行まで表示、行番号2が0の時終わりまで表示、ESCで途中停止)LIST 10,300
GOTO 行番号 / ゴートゥー指定した行番号へ飛ぶ(式も指定可能)GOTO 10
END / エンドプログラムを終了するEND
IF 数 {THEN} コマンド1 {ELSE コマンド2} / イフ数が0でなければコマンド1を実行し、0であればコマンド2を実行する(THEN,ELSE以降は省略可、ただし16進数後は:で区切る必要あり)IF BTN() END
IF 数 {THEN} コマンド1 {ELSE コマンド2} / ゼン数が0でなければコマンド1を実行し、0であればコマンド2を実行する(THEN,ELSE以降は省略可、ただし16進数後は:で区切る必要あり)IF BTN() THEN END
IF 数 {THEN} コマンド1 {ELSE コマンド2} / エルス数が0でなければコマンド1を実行し、0であればコマンド2を実行する (THEN,ELSE以降は省略可、ただし16進数後は:で区切る必要あり)IF BTN() END ELSE CONT
BTN({数}) / ボタンボタンが押されていれば1、そうでないとき0を返す(数:0(付属ボタン)/UP/DOWN/RIGHT/LEFT/SPACE/X(88)、省略で0、-1でビットパターンで返す)LED BTN()
NEW / ニュープログラムを全部消すNEW
PRINT {数や文字列} / プリント数や文字列を表示する (文字列は"で囲む、";" で連結できる)PRINT "HI!";15
? {数や文字列} / クエスション数や文字列を表示する (文字列は"で囲む、";" で連結できる)?"HI!";15
LOCATE 数1{,数2{,数3}} / ロケート次に文字を書く位置を横、縦の順に指定する(左上が0,0、縦=-1で無表示)。数1のみでX+Y*幅。数3が0でなければ指定した場所にカーソルを表示する。LOCATE 3,3
LC 数1{,数2{,数3}} / ロケート次に文字を書く位置を横、縦の順に指定する(左上が0,0、縦=-1で無表示)。数1のみでX+Y*幅。数3が0でなければ指定した場所にカーソルを表示する。LC 3,3
CLS / クリア・スクリーン画面を全部消すCLS
RND(数) / ランダム0から数未満のでたらめな整数を返すPRINT RND(6)
SAVE {数} / セーブプログラムを保存する(0〜3の4つ、100-227 外付けEEPROM、省略で前回使用した数) ボタンを押した状態で起動すると0番を読み込み自動実行SAVE 1
LOAD {数} / ロードプログラムを読み出す(0〜3の4つ、100-227 外付けEEPROM、省略で前回使用した数)LOAD
FILES {数1{,数2}} / ファイルズ数1(省略可)〜数2のプログラム一覧を表示する(EEPROM内ファイル表示に対応、0指定ですべて表示、ESCで途中停止)FILES
BEEP {数1{,数2}} / ビープ単音を鳴らす 周期(0-32767)と長さ(1/60秒単位)は省略可 ※SOUND(EX2)-GNDに圧電サウンダーなどの接続が必要BEEP
PLAY {"MML"} / プレイMML、記述した音楽を鳴らす。省略で音停止 ※SOUND(EX2)-GNDに圧電サウンダーなどの接続が必要 (MML、CDEFGAB:ドレミファソラシ、R:休符、.:音や休符を1.5倍伸ばす、T120:テンポ、O4:オクターブ(1-6)、N10:単音、<:オクターブ上げる、>:オクターブ下げる、$:繰り返し、':以後鳴らさない)PLAY "$CDE2CDE2"
TEMPO 数 / テンポ再生中の音楽のテンポを変更するTEMPO 1200
数 + 数 / プラス足し算するPRINT 1+1
数 - 数 / マイナス1. 引き算する 2. 後に続く数をマイナスにするPRINT 2-1
数 * 数 / アスタリスク掛け算するPRINT 7*8
数 / 数 / スラッシュ割り算する(小数点以下は切り捨て)PRINT 9/3
数 % 数 / パーセント割り算した余りを返すPRINT 10%3
(式) / ブラケットカッコ内の式を優先して計算するPRINT 1+(1*2)
LET 変数,数 / レット数をアルファベット1文字の変数や配列の値として記憶する(配列へ連続代入可能 LET[0],1,2)LET A,1
変数=数 / イコール1. 数をアルファベット1文字の変数や配列の値として記憶する。 2. 式として使うと==と同じ機能となるA=1
INPUT {文字列,}変数 / インプットキーボードやUARTからの入力で数値を変数にいれる(文字列とコンマは省略可)INPUT "ANS?",A
TICK({数}) / ティックCLTからの時間を返す(1/60秒で1進む) *数に1指定で1/(60*261)秒で1進む時間PRINT TICK()
CLT / クリア・ティックTICK()のカウントをリセットするCLT
INKEY() / インキーキーボードやUARTから1文字入力する(入力がない時は0、UARTから0が入力された時は#100)PRINT INKEY()
LEFT / レフト28を返す。INKEYのキーコードの判定や、SCROLLに使うIF INKEY()=LEFT LED1
RIGHT / ライト29を返す。INKEYのキーコードの判定や、SCROLLに使うIF INKEY()=RIGHT LED1
UP / アップ30を返す。INKEYのキーコードの判定や、SCROLLに使うIF INKEY()=UP LED1
DOWN / ダウン31を返す。INKEYのキーコードの判定や、SCROLLに使うIF INKEY()=DOWN LED1
SPACE / スペース32を返す。INKEYのキーコードの判定や、SCROLLに使うIF INKEY()=SPACE LED1
CHR$(数{,数2{,数3…}}) / キャラクターPRINT内で、文字コードに対応する文字を返す(コンマ区切りで連続表記可)PRINT CHR$(65)
ASC("文字") / アスキー文字に対する文字コードを返すPRINT ASC("A")
SCROLL 数 / スクロール指定した方向に1キャラ分スクロールする(0/UP:上、1/RIGHT:右、2/DOWN:下、3/LEFT:左)SCROLL 2
SCR({数,数}) / スクリーン画面上の指定した位置に書かれた文字コードを返す(指定なしで現在位置)PRINT SCR(0,0)
VPEEK({数,数}) / ブイ・ピーク画面上の指定した位置に書かれた文字コードを返す(指定なしで現在位置)PRINT VPEEK(0,0)
数 == 数 / イコール・イコール比較して等しい時に1、それ以外で0を返す。IF A==B LED 1
数 != 数 / ノット・イコール・トゥー比較して等しくない時に1、それ以外で0を返すIF A!=B LED 1
数 <> 数 / レス・アンド・グレーター・ザン比較して等しくない時に1、それ以外で0を返すIF A<>B LED 1
数 <= 数 / レス・ザン・オア・イコール・トゥー比較して以下の時に1、それ以外で0を返すIF A<=B LED 1
数 < 数 / レス・ザン比較して未満の時に1、それ以外で0を返すIF A<B LED 1
数 >= 数 / グレーター・ザン・オア・イコール・トゥー比較して以上の時に1、それ以外で0を返すIF A>=B LED 1
数 > 数 / グレーター・ザン比較してより大きい時に1、それ以外で0を返すIF A>B LED 1
式 AND 式 / アンドどちらの式も1の時に1、それ以外で0を返すIF A=1 AND B=1 LED 1
式 && 式 / アンドどちらの式も1の時に1、それ以外で0を返すIF A=1 && B=1 LED 1
式 OR 式 / オアどちらかの式が1の時に1、それ以外で0を返すIF A=1 OR B=1 LED 1
式 || 式 / オアどちらかの式が1の時に1、それ以外で0を返すIF A=1 || B=1 LED 1
NOT 式 / ノット式が0の時に1、それ以外で0を返すIF NOT A=1 LED 1
! 式 / ノット式が0の時に1、それ以外で0を返すIF !(A=1) LED 1
REM / リマークこれ以降のコマンドを実行しない(コメント機能)REM START
' / シングル・クォートこれ以降のコマンドを実行しない(コメント機能) START
FOR 変数=数1 TO 数2 {STEP 数3}:コマンド:NEXT / フォー変数に数1をいれ、数2になるまで数3ずつ増やしながらNEXTまでをくりかえす (STEPは省略可、6段まで)FOR I=0 TO 10:?I:NEXT
FOR 変数=数1 TO 数2 {STEP 数3}:コマンド:NEXT / トゥー変数に数1をいれ、数2になるまで数3ずつ増やしながらNEXTまでをくりかえす (STEP省略時は数3は1、6段まで)FOR I=0 TO 10:?I:NEXT
FOR 変数=数1 TO 数2 STEP 数3:コマンド:NEXT / ステップ変数に数1をいれ、数2になるまで数3ずつ増やしながらNEXTまでをくりかえす (STEPは省略可、6段まで)FOR I=0 TO 10:?I:NEXT
FOR 変数=数1 TO 数2 {STEP 数3}:コマンド:NEXT / ネクスト変数に数1をいれ、数2になるまで数3ずつ増やしながらNEXTまでをくりかえす (STEPは省略可、6段まで)FOR I=0 TO 10:?I:NEXT
POS({数}) / ポジションカーソル位置を返す(数、省略時または0:X+Y*幅、1:X座標、2:Y座標) *ver1.4以上?POS(0),POS(1)
DRAW 数1,数2{,数3,数4}{,数5} / ドロー数1,数2の座標から数3,数4の座標へ線を引く(座標は最大63x47)、数5に0指定で線を消し、2指定で反転する、省略時または1指定で線を引く *ver1.4以上DRAW 1,5,10,15
POINT(数1,数2) / ポイント数1,数2の座標にDRAWで描かれた点または文字があるときに1、そうでないとき0を返す *ver1.4以上?POINT(1,5)
OUT 数1{,数2} / アウト外部出力OUT1-11に0または1を出力する 数2を省略でまとめて出力できる(数2に-1指定でINへ切り替え、-2指定でプルアップ付きINへ切り替え ※IN3は除く)OUT 1,1
IN({数}) / インIN0-10から入力する(0または1) 数を省略してまとめて入力できる (IN0,1,4,9はプルアップ、IN5-8,10-11はOUTで切り替え時使用可能、IN0,9はボタン)LET A,IN(1)
ANA({数}) / アナログ外部入力の電圧(0V-3.3V)を0-1023の数値で返す(2:IN2、5-8:IN5-8(OUT1-4)、0,9:BTN、省略で0)?ANA()
PWM 数1,数2{,数3} / ピー・ダブリュー・エム外部出力OUT2-5に数2で0.01msec単位で指定するパルスを出力する(0-2000、周期20msec)、数3で周期を指定(省略時2000=20msec、マイナス値指定で周期1/480)PWM 2,100
CLV / クリア・バリアブル変数、配列を全部0にするCLV
CLEAR / クリア変数、配列を全部0にするCLEAR
CLK / クリア・キーキーバッファとキーの状態をクリアするCLK
CLO / クリア・アウトプット入出力ピンを初期状態に戻すCLO
ABS(数) / アブソリュート絶対値を返す(マイナスはプラスになる)?ABS(-2)
[数] / アレイ配列([0]から[101]までの102コの連続した変数として使える) LET[0],1,2,3で連続代入可能[3]=1
GOSUB 行番号 / ゴーサブ戻り先をスタックに積み、数または式で指定した行番号に飛ぶ(ネストは30段まで)GOSUB 100
GSB 行番号 / ゴーサブ戻り先をスタックに積み、数または式で指定した行番号に飛ぶ(ネストは30段まで)GSB 100
RETURN / リターンGOSUB/GSBの呼び出し元へ戻るRETURN
RTN / リターンGOSUB/GSBの呼び出し元へ戻るRTN
DEC$(数1{,数2}) / デシPRINT内で、数を文字列にする(2番目の数は桁数、省略可)?DEC$(99,3)
#16進数 / ハッシュ16進数で数を表記する *この後THENを省略しA〜Fで始まるコマンドを使う場合 : で区切る#FF
HEX$(数1{,数2}) / ヘックスPRINT内で、数を16進数の文字列にする(2番目の数は桁数、省略可)?HEX$(255,2)
`2進数 / バック・クォート2進数で数を表記する`1010
BIN$(数1{,数2}) / バイナリーPRINT内で、数を2進数の文字列にする(2番目の数は桁数、省略可)?BIN$(255,8)
数 & 数 / アンパサンド論理積(ビット演算)?3&1
数 | 数 / パイプ論理和(ビット演算)?3|1
数 ^ 数 / ハット排他的論理和(ビット演算)?A^1
数 >> 数 / シフト・ライト右シフトする(ビット演算)?A>>1
数 << 数 / シフト・レフト左シフトする(ビット演算)?A<<1
~数 / チルダビット反転(ビット演算)?~A
COS(数) / コサイン指定された数を角度の度数としてコサインの値の256倍を返す *ver1.4以上?COS(90)
SIN(数) / サイン指定された数を角度の度数としてサインの値の256倍を返す *ver1.4以上?SIN(90)
STOP / ストッププログラムを中断するSTOP
CONT / コンティニュー実行中の行や、中断した行を再度実行するCONT
SOUND() / サウンド音が再生中なら1、そうで無いとき0をを返す?SOUND()
FREE() / フリープログラムの残りメモリ数を返す?FREE()
VER({数}) / バージョンIchigoJam BASICのバージョン番号を返す?VER()
RENUM {数1{,数2}} / リナンバープログラムの行番号を数1(省略時は10)から数2(省略時は10)刻みにする。GOTO/GOSUBの飛び先は手で変更必要な場合があるRENUM
LRUN {数1{,数2}} / ロードランファイル数1のプログラムを読み込み後、実行する(数2が指定されていたらその行へGOTO)LRUN 1
FILE() / ファイル最後にプログラムを読み込み、書き込み行った数を返す?FILE()
LINE() / ライン現在実行中の行番号を返す(非実行時は0)?LINE()
SRND 数 / エス・ランダム種を指定して乱数を初期化するSRND 0
HELP / ヘルプメモリマップを表示するHELP
PEEK(数) / ピークメモリ読み出し(キャラクターパターン0-#7FFなど)?PEEK(#700)
POKE 数,数 / ポークメモリへの書き込み(連続書き込み可能 POKE#700,1,2,3)POKE #700,#FF
COPY 数1,数2,数3 / コピーメモリコピー 数1のアドレスへ数2のアドレスから数3の長さ分コピー(数3マイナスでコピー方向が逆になる)COPY #900,0,256
CLP / クリア・パターンキャラクターパターン(#700-#7FF)を初期化するCLP
"文字列" / ダブル・クォート文字列の先頭アドレスを返すA="ABC"
STR$(数1{,数2}) / ストリングPRINT内で、文字列を返す(数2(省略可)で長さ指定)PRINT STR$(A)
LEN("文字列") / レングス文字列の長さを返すPRINT LEN("ABC")
@ラベル / アット・マーク行の先頭に書くとラベルとなり、行番号の代わりとして使える(GOTO @LOOPなど) ※前方一致@LOOP
VIDEO 数1{,数2} / ビデオ画面表示非表示を切り替える 0で画面表示を停止し処理高速化 (F8で表示)、省略可能な数2でVIDEO0時CPUクロックを1/数2に変更し省電力化、数1が2の倍数で白黒反転、数1が3以上で拡大モードVIDEO 0
RESET / リセットIchigoJamをリセットするRESET
SLEEP / スリーププログラムを休止する (ボタンを押すと起動し、LRUN0を実行する)SLEEP
UART 数1{,数2} / ユー・アート数1:シリアル出力設定(0:オフ、1:PRINTのみ、2:PRINT/LC/CLS/SCROLL、3:PRINTのみ/改行コード\r\n、+4で入力エコーバック、+8で画面表示OFF、初期値:2)、数2:シリアル受信設定(0:オフ、1:オン、+2:ESC無効、+4:CR変換(13→10) 省略時1)UART 0
BPS 数1{,数2} / ビー・ピー・エスシリアル通信速度を変更する(0で初期値の115,200bps、-1:57600bps、-2:38400bps、-100以下指定で指定した数の-100倍bpsに指定、-2304:230400bps)。数2でI2Cの通信速度設定(単位kHz、0:デフォルト400kHz)BPS 9600
OK {数} / オーケーOKやエラーメッセージの表示有無を切り替える(数、1:表示、2:非表示、省略で1)OK 2
I2CR(数1,数2,数3,数4,数5) / アイ・ツー・シー・リードI2Cで周辺機器から読み込む I2Cアドレス、コマンド送信アドレス・長さ、受信アドレスと長さ(コマンド送信が1byteの時数3を省略可、コマンド送信が0byteの時数2/数3を省略可)R=I2CR(#50,#114A,2,#114C,2)
I2CW(数1,数2,数3,数4,数5) / アイ・ツー・シー・ライトI2Cで周辺機器に書き込む I2Cアドレス、コマンド送信アドレス・長さ、送信アドレスと長さ(数4/数5は省略可、コマンド送信が1byteの時数3を省略可)R=I2CW(#50,#114A,2,#114C,2)
IoT.IN() / アイ・オー・ティー・インsakura.ioモジュールから受信した数を一つ読み込むR=IoT.IN()
IoT.OUT 数 / アイ・オー・ティー・アウトsakura.ioモジュールへ数をチャンネル0で即時送信するIoT.OUT 100
WS.LED 数1{,数2} / ダブリュー・エス・エル・イー・ディー配列の先頭から緑赤青の順に設定された値でLEDに接続されたWS2812Bを数1の分光らせる。数2を指定するとその数だけ繰り返す。 *ver1.4以上WS.LED 3
SWITCH {数1{,数2}} / スイッチ画面表示をテレビと液晶とを切り替える(数1 0:テレビ、1:液晶)、数2で液晶の濃さを指定SWITCH
USR(数1{,数2}) / ユーザー数1で指定されたアドレスのマシン語(Arm Cortex-M0)を数2をパラメータとして呼び出す(数2省略で0)A=USR(#700,0)
CC BY IchigoJam(DATA: https://github.com/ichigojam/doc/