IchigoJam BASIC reference ver 1.4

commanddescriptionexample
LED / LEDlight on the LED when n equals 1, light off when n equals 0LED 1
WAIT / waitwait n frames (60frame = 1sec) (if num2 eqauls 0 low power consumption mode, if num1 is minus short wait mode -261 same as WAIT1)WAIT 60
: / colonseries the commandsWAIT 60:LED 1
1 / onememory commands as line number. Remove line without commands10 LED1
RUN / runexecute program in memory [F5]RUN
LIST / listshow the program in memory [F4] (line num1: show the line, if minus to the line / line num2: show to the line, if 0 to the end / ESC to stop)LIST 10,300
GOTO / gotochange the execution line (it's OK as using variables)GOTO 10
END / endend this programEND
IF / ifif num does not equals 0 execute command1, else execute command2 (you can ommit THEN / ELSE)IF BTN() END
THEN / thenif num does not equals 0 execute command1, else execute command2 (you can ommit THEN / ELSE)IF BTN() THEN END
ELSE / elseif num does not equals 0 execute command1, else execute command2 (you can ommit THEN / ELSE)IF BTN() END ELSE CONT
BTN / buttonreturn 1 if you push the botton, else 0 (num:0(embeded button)/UP/DOWN/RIGHT/LEFT/SPACE/X(88), 0:if ommit, -1:all)LED BTN()
NEW / newdelete all program in the memoryNEW
PRINT / printwrite the letter or nunmber to the screen (strings must surround ["], connect pars with [;]) Abbreviation:?PRINT "HI!";15
? / questionwrite the letter or nunmber to the screen (strings must surround ["], connect pars with [;]) Abbreviation:??"HI!";15
LOCATE / locateset the position to write (if y equals -1 no write mode). x as X+Y*W when set only x. show the cursor if num not equals 0. Abbreviation:LCLOCATE 3,3
LC / locateset the position to write (if y equals -1 no write mode). x as X+Y*W when set only x. show the cursor if num not equals 0. Abbreviation:LCLC 3,3
CLS / clear screenclear the screenCLS
RND / randomreturn the random number 0 to num - 1PRINT RND(6)
SAVE / savesave the program (num:0-3, 100-227:optional EEPROM, if omit using number)SAVE 1
LOAD / loadload the program (num:0-3, 100-227:optional EEPROM, if omit using number)LOAD
FILES / filesshow the file list from num1 to num2 (all if num1 equals 0, ESC to stop)FILES
BEEP / beepsound the BEEP, num1 is period(1-255), num2:length(1/60sec) (you can omit num1 and num2) *to connect the sounder on SOUND(EX2)-GNDBEEP
PLAY / playplay the music specified mml as MML(Music Macro Language) just PLAY to stop the music. MML: CDEFGAB=tone R=rest, + half tone higher, - half tone lower, with num specified length, with . half stretch the length, < octave up, > octave down, Tn set the tempo (you can change with TEMPO command) initial value:120, Ln default length (1,2,3,4,8,16,32) initial value:4, On set the octave from O1C to O5B initial value:3, Nn sound a tone specified 1-255 (same as BEEP command), ' end of music, $ repeat play after this mark, space is just skip *to connect the sounder on SOUND(EX2)-GNDPLAY "$CDE2CDE2"
TEMPO / tempochange the tempo of playing musicTEMPO 1200
+ / plusreturn x plus yPRINT 1+1
- / minusreturn x minus yPRINT 2-1
* / asteriskreturn x times yPRINT 7*8
/ / slashreturn integer of x divide yPRINT 9/3
% / percentreturn reminder of x divide yPRINT 10%3
() / blacketreturn calculate the number in priorityPRINT 1+(1*2)
LET / letset the number to 1 letter of alphabet as named memory(variable) (series put to the array) Abbreviation:var=numLET A,1
= / equal1. set the number to 1 letter of alphabet as named memory(variable) 2. same as == when using as numberA=1
INPUT / inputset the number to var from keyboard input (you can omit strings and comma)INPUT "ANS?",A
TICK / tickreturn the time count from CLT(count up in 1/60sec) *if nu=1, 1/(60*261)PRINT TICK()
CLT / clear tickclear the time countCLT
INKEY / inkeyreturn from keyboard or UART (0:no input, #100:0 input from UART)PRINT INKEY()
LEFT / left28. using with INKEY and SCROLLIF INKEY()=LEFT LED1
RIGHT / right29. using with INKEY and SCROLLIF INKEY()=RIGHT LED1
UP / up30. using with INKEY and SCROLLIF INKEY()=UP LED1
DOWN / down31. using with INKEY and SCROLLIF INKEY()=DOWN LED1
SPACE / space32. using with INKEY and SCROLLIF INKEY()=SPACE LED1
CHR / characterIn PRINT, return the letter string specified the num (you can set series with comma)PRINT CHR$(65)
ASC / asciireturn the letter code from stringPRINT ASC("A")
SCROLL / scrollscroll the screen (0/UP:up、1/RIGHT:right、2/DOWN:down、3/LEFT:left)SCROLL 2
SCR / screenreturn the letter code located x, y on the screen (if omit x and y, using current position) Alias:VPEEKPRINT SCR(0,0)
VPEEK / V peekreturn the letter code located x, y on the screen (if omit x and y, using current position) Alias:VPEEKPRINT VPEEK(0,0)
== / equal equalreturn 1 if x equals y else 0IF A==B LED 1
!= / not equal toreturn 1 if x does not equal y else 0IF A!=B LED 1
<> / less than and greater thanreturn 1 if x does not equal y else 0IF A<>B LED 1
<= / less than or equalreturn 1 if x <= y, else 0IF A<=B LED 1
< / less thanreturn 1 if x < y else 0IF A<B LED 1
>= / greater than or equalreturn 1 if x >= y else 0IF A>=B LED 1
> / greater thanreturn 1 if x < y else 0IF A>B LED 1
AND / andreturn 1 if x and y else 0IF A=1 AND B=1 LED 1
&& / andreturn 1 if x and y else 0IF A=1 && B=1 LED 1
OR / orreturn 1 if x or y else 0IF A=1 OR B=1 LED 1
|| / orreturn 1 if x or y else 0IF A=1 || B=1 LED 1
NOT / notreturn 1 if x equals 0 else 0IF NOT A=1 LED 1
! / notreturn 1 if x equals 0 else 0IF !(A=1) LED 1
REM / remarknot execute after this command (comment)REM START
' / single quotenot execute after this command (comment) START
FOR / forset num1 to var, execute the loop to the NEXT until var reach num2 by step num3 (you can omit STEP, nest limit:6)FOR I=0 TO 10:?I:NEXT
TO / toset num1 to var, execute the loop to the NEXT until var reach num2 by step num3 (you can omit STEP, nest limit:6)FOR I=0 TO 10:?I:NEXT
STEP / stepset num1 to var, execute the loop to the NEXT until var reach num2 by step num3 (you can omit STEP, nest limit:6)FOR I=0 TO 10:?I:NEXT
NEXT / nextset num1 to var, execute the loop to the NEXT until var reach num2 by step num3 (you can omit STEP, nest limit:6)FOR I=0 TO 10:?I:NEXT
POS / positionreturn a positon of cursor (num 0:X+Y*W, 1:X, 2:Y, ommit:0)?POS(0),POS(1)
DRAW / drawdraw a line or a point (n 0:clear, 1:set, 2:reverse, ommit:1)DRAW 1,5,10,15
POINT / pointreturn a point on the screen or not?POINT(1,5)
OUT / outoutput num2 to the output pin specified num1 (num1:OUT1-11, you can set all states when you omit num2, if num2 equals -1 the output pin switch into the input pin, if num2 equals -2 the output pin switch into the input with pull-up)OUT 1,1
IN / inreturn 1 if when input terminal pin is high else 0 (num:0-11 (IN0/1/4/9 pull up, IN5-8,10-11:if switched, IN0,9:button), you can get all states when you omit num)LET A,IN(1)
ANA / analogreturn the value 0-1023 specified voltage of input terminal (2:IN2, 5-8:IN5-8(OUT1-4), 0,9:BTN, 0:omitted)?ANA()
PWM / PWMoutput num2(0.01msec) length pulse in num3(if omit 2000) period to the output pin specified num1 (num1:OUT2-5, OUT2-4 same period)PWM 2,100
CLV / clear variablesclear (set to zero) variables and array variablesCLV
CLEAR / clearclear (set to zero) variables and array variablesCLEAR
CLK / clear keysclear key buffer and key statusCLK
CLO / clear outputinitialize the input and output pinsCLO
ABS / absolutereturn the absolute value?ABS(-2)
[] / arrayarray variables (from [0] to [101] 102 series variables) you can set in series using LET[0],1,2,3[3]=1
GOSUB / gosubmove to linenum and execute after this command when RETURN/RTN (nest limit:30)GOSUB 100
GSB / gosubmove to linenum and execute after this command when RETURN/RTN (nest limit:30)GSB 100
RETURN / returnback to linunum last GOSUB/GSB calledRETURN
RTN / returnback to linunum last GOSUB/GSB calledRTN
DEC / deciIn PRINT, return strings from num1 with beam specified num2 (you can omit num2)?DEC$(99,3)
# / hashreturn the number specified in hexadecimal *if you omit THEN after this, use : to separate#FF
HEX / hexIn PRINT, return hexadecimal strings from num1 with beam specified num2 (you can omit num2)?HEX$(255,2)
` / back quotereturn the number specified in binary number`1010
BIN / binaryIn PRINT, return binary number strings from num1 with beam spcified num2 (you can omit num2)?BIN$(255,8)
& / ampersandreturn x logical and y (bit calculation)?3&1
| / pipereturn x logical or y (bit calculation)?3|1
^ / hatreturn x logical exclusive or y (bit calculation)?A^1
>> / shift rightreturn x shift down y bits (bit calculation)?A>>1
<< / shift leftreturn x shift up y bits (bit calculation)?A<<1
~ / tldareturn bit inverted x (bit calculation)?~A
COS / cosinereturn cosine number times 256 by degrees *for ver1.4 or later?COS(90)
SIN / sinereturn sine number times 256 by degrees *for ver1.4 or later?SIN(90)
STOP / stopstop the programSTOP
CONT / continuecontinue the same line or stop lineCONT
SOUND / soundreturn 1 if sound playing else 0?SOUND()
FREE / freereturn free memory of program (up to 1024 bytes)?FREE()
VER / versionn=0 or default: return the version number of IchigoJam BASIC (n=0 or default) 1: return the language number of IchigoJam BASIC(1:Japanese 2:Mongol, 3:Vietnam)?VER()
RENUM / renumberrenumber the line number of program from num1 step num2 (num1:10, num2:10 if omit, you may have to change manually line number specified in GOTO/GOSUB)RENUM
LRUN / load and runLOAD num and RUNLRUN 1
FILE / filereturn the number of last using FILE?FILE()
LINE / linereturn the line number of last execution?LINE()
SRND / S randominitialize the seed of randomSRND 0
HELP / helpdisplay the memory mapHELP
PEEK / peekread 1 byte number from the memory in address specified num2?PEEK(#700)
POKE / pokewrite 1 byte num1 specified to the memory in address specified num2POKE #700,#FF
COPY / copymemory copy from num1 to num2 length specified num3 (if num3 is minus, copy direction is inverted)COPY #900,0,256
CLP / clear patterninitialize the character pattern memory (#700-#7FF)CLP
" / double quotereturn the address of strings on the memoryA="ABC"
STR / stingsIn PRINT, return strings from address specified num1 (num2:length you can omit)PRINT STR$(A)
LEN / lengthreturn the length of stringsPRINT LEN("ABC")
@ / at markPut in front of the line, you can as destination line number (type GOTO @LOOP)@LOOP
VIDEO / videoswitch the video signal enabled or disabled (num0:0 disabled / 1 enable[F8] / 2 invert black and white / greater than bigmode, num2:when num0 is 0 clock down mode clock=1/num2)VIDEO 0
RESET / resetreboot the IchigoJamRESET
SLEEP / sleepsleep the IchigoJam (after push the button, execute and run file 0)SLEEP
UART / UARTset UART mode (num1 0:off 1:with PRINT 2:with PRINT/LC/CLS/SCROLL 3:with PRINT and enter code is \r\n, echo back input with +4, disable screen put with +8, initial value:2) (num2 0:UART recv off, 1:on, +2:ignore ESC, +4:CR change(13→10), initial value:1)UART 0
BPS / BPSnum1: set UART speed (0:115,200bps -1:57600bps -2:38400bps or 9600 and so on ... if -100 or less, -100 times speed. For example, if it is -2604, it is 260400 initial value:0), num2: set I2C speed(unit kHz, 0:400kHz default value:0)BPS 9600
OK / OKshow OK and error messages (1: message on if omit, 2: message off)OK 2
I2CR / I two C readread from I2C device num1:I2C address, num2:address of command, num2:length of command, num4:address of return data, num5:length of return data (if command is 1byte you can omit num2, if no commands num2/num3 you can omit)R=I2CR(#50,#114A,2,#114C,2)
I2CW / I two C writewrite to I2C device num1:I2C address, num2:address of command, num2:length of command, num4:address of return data, num5:length of return data (you can omit num4/num5, if command is 1byte you can omit num2)R=I2CW(#50,#114A,2,#114C,2)
IOT.IN / IoT inget a received number from the sakura.io moduleR=IoT.IN()
IOT.OUT / IoT outsend a number to send via the sakura.io module as the 0 channelIoT.OUT 100
WS.LED / WS LEDThe WS2812B connected to LED lights up by num1 with values ​​set in the order of green, red, and blue from the beginning of the array. If the num2 is specified, it repeats that number. *for ver 1.4WS.LED 3
SWITCH / switchswitch the video output, TV or LCD (0:TV 1:LCD)SWITCH
USR / userCall the machine language (Arm Cortex-M0) of the address specified by the num1 with the num2 as a parameter (0 for num2 omitted)A=USR(#700,0)
CC BY IchigoJam(DATA: https://github.com/ichigojam/doc/