< IchigoJam BASIC RPi/RPi+

IchigoJam BASIC RPi+1.2 Documents

[2018/01/10]

日本語版(Japanese Edition) >

IchigoJam BASIC RPi + is an enhanced version of IchigoJam BASIC RPi,
It has special commands supporting Sense Hat and Touchscreen Display.
You can use it by purchasing pre-installed microSD card or introductory kit
released from I-O DATA. (Available in Japan)
For IchigoJam BASIC RPi (free edition), please see IchigoJam BASIC RPi1.2 Documents.

1. Terms of use

Agree to the Terms of use before use it. Distribution to third parties requires a contract.

2. Device compatibility

Basically, it should work with all models of Raspberry Pi.
Compatibility is confirmed with the following models.

* For some keyboards, The response of "Zero", "Zero W" and "Model A+" is not good for now.
However, Other than that, you can use those same as "Pi 3" and "Pi 2".

For Sense Hat and Touchscreen Display,
Compatibility is confirmed with the following models.

3. How to obtain

Please purchase the following products released from I-O DATA.

Update

To update to the latest version, follow the procedure below.

  • Using a PC, copy files in the microSD memory card to the desired location.(backup)
  • Download and unpack the latest version of IchigoJam BASIC RPi+ from the URL described in the package.
  • Overwrite the file on the microSD card with the file generated by downloading and unpacking it.
  • Copy (restore) files directory, config.txt, keymap.txt from backup to microSD card.

4. How to use

Configure the default keyboard layout

To configure the default keyboard layout, edit keymap.txt in microSD card.

Text in keymap.txt Keyboard layout
us US layout
jp Japanese layout

* Changing the keyboard layout after startup is also available by using KBD Command.
(refer to the document below.)

Tutorial

I. Start IchigoJam BASIC

  • Insert the microSD card into Raspberry Pi.
  • Connect display device and keyboard.
  • Connect USB cable to turn on the power.

If the screen looks like the one on the left, it's successful!

II. Turn on the LED

Input "LED1" from keyboard and press [Enter] key.

If the Activity LED (green one) on Raspberry Pi turned on,
it's successful!

III. Turn off the LED

Input "LED0" from keyboard and press [Enter] key.

If the Activity LED (green one) on Raspberry Pi turned off,
it's successful!

IV. Blinking LED

  • Input "10 LED1: WAIT30" from keyboard and press [Enter] key.
  • Input "20 LED0: WAIT30" from keyboard and press [Enter] key.
  • Input "30 GOTO10" from keyboard and press [Enter] key.
  • Input "RUN" from keyboard and press [Enter] key.

If the Activity LED (green one) on Raspberry Pi blinking,
it's successful!

To stop blinking, press [Esc] key.

5. Differences from the original edition

IchigoJam BASIC RPi is ported based on version 1.2.3 of the original edition (LPC1114 edition).
The operation method and available commands are basically same as the original edition,
but the following points are different.
A Document of the original edition is here. https://ichigojam.net/IchigoJam-en.html

Unimplemented key operations

Following key operations are not implemented in RPi edition

Key Reaction of the original edition
[Right Alt] Switching Kana input mode(same as [kana])
[Ctrl] + [Shift] Switching Kana input mode(same as [kana])
[Ctrl] + [Alt] Switching insert mode(same as [Insert])

Key operations specific for RPi edition

Following key operations are implemented in RPi edition only

Key Reaction of the RPi edition
[Right Alt] + [K] Switching Kana input mode(same as [kana])
[Ctrl] + [Shift] + [K] Switching Kana input mode(same as [kana])
[Ctrl] + [Alt] + [I] Switching insert mode(same as [Insert])

Unimplemented commands

Following commands are not implemented in RPi edition

Command Reaction of the original edition Reaction of the RPi edition
VIDEO Video/Display Setting Do nothing
SWITCH Change the Display Do nothing
SLEEP Enter to the system sleep mode Do nothing
ANA Return voltage of external input as a numerical value Always returns 0
BEEP Sound beep Do nothing
PLAY Play music written in MML Do nothing
TEMPO Change the tempo of music being played Do nothing
SOUND If sound is playing, return 1 Always returns 0
USR Call the Machine code Do nothing

Commands specific for RPi edition

Following commands are implemented in RPi edition only

Command Reaction of the RPi edition Usage
KBD Change the keyboard layout KBD 0 'Swicthing To US
KBD 1 'Swicthing To Japanese

* The numerical value returned by LANG and the numerical value set by KBD are different.
LANG returns the language number of the font to be displayed when enabling Kana input with IchigoJam in use.
(LPC1114 edition 1:Japanese, 2:Mongolian, 3:Vietnamese)

Etc.

In addition, there are following differences.

  • If power is turned on without connecting the keyboard, FILE0 is automatically executed (LRUN0)
  • Only PWM3 and PWM4 can be used for PWM Command
  • IN3(OUT10) becomes a pull-up input with OUT10,-2 Command
  • LED Command and OUT7 Command are independent of each other
  • Power saving mode of WAIT command is not supported
  • The input/output destination of SAVE/LOAD is the file in the files directory of the microSD card (0-3, 100-227).

6. IO commands and physical pin layout

IN/OUT/PWM

The relationship between IN/OUT/PWM command and the physical pin
where the electric current actually flows is as follows.

Physical pin Input Command Output Command PWM Command Initial state
15 IN1 (OUT8) Input(pull up)
13 IN2 (OUT9) Input(open)
11 IN3 (OUT10) Input(open)
7 IN4 (OUT11) Input(pull up)
35 IN9 Input(open,fixed)
37 (IN5) OUT1 Output
36 (IN6) OUT2 Output
33 (IN7) OUT3 PWM3 Output
32 (IN8) OUT4 PWM4 Output
38 (IN10) OUT5 Output
40 (IN11) OUT6 Output
26 OUT7 Output(fixed)

I2C

The physical pin where the electric signal actually flows
by using I2CW/I2CR command is as follows.

Physical pin function
3 SDA
5 SCL

UART

The physical pin where the electric signal actually flows
when communicate using UART is as follows.

Physical pin function
8 TXD
10 RXD

Pinout

7. Known issues and planned actions

Known issues

  • [issue 1005] For some keyboards, The response of "Zero", "Zero W" and "Model A+" is not good.
  • [issue 1008] I2CW returns zero (success), in situations where non-zero (failure) should be returned, such as access to a nonexistent address.

Planned actions

  • Improvement of key input processing. (related to issue 1005)
  • Display related implementation. (VIDEO, SWITCH command)
  • Sound related implementation. (BEEP, PLAY, TEMPO, SOUND command)
  • Machine language related implementation. (USR command)

Fixed Issues

  • [issue 1007] The cursor does not blink.
  • [issue 1006] The value of TICK and the number of screen refreshes are not synchronized.
  • [issue 1004] Screen changes by CLS, SCROLL, POKE, COPY, CLP are not reflected until the next PRINT processing.
  • [issue 1003] Auto repeat does not work on some keyboards.
  • [issue 1002] Shift, Ctrl, Alt do not work on some keyboards.
  • [issue 1001] Home, End, Page Up, Page Down, Ins on the Numeric Keypad do not work on some keyboards.

Change log

ver1.2.4
  • [issue 1007] has been fixed
  • [issue 1006] has been fixed
  • Screen rendering processing has been improved.(related to issue 1006, 1007)
ver1.2.3
  • [issue 1004] has been fixed
ver1.2.2
  • [issue 1003] has been fixed
  • [issue 1002] has been fixed
  • [issue 1001] has been fixed

8. Support

For inquiries, please contact below.

Natural Style Co. Ltd.
IchigoJam BASIC RPi Team (support@na-s.jp)

Also, for technical information sharing and questions, please use the following Facebook group. https://www.facebook.com/groups/ichigojamfan/

9. RPi+ special command

IchigoJam BASIC RPi+ has the following special command which supports Sense HAT and Touchscreen Display.
These commands can not be used with IchigoJam BASIC RPi. (Free edition)

Commands support Sense HAT

Command Reaction of the RPi+ edition Usage
SH.CLS Turn off all Sense HAT LEDs
SH.CLS
SH.CLS 'Turns off all
SH.PUT Set the color of Sense HAT's LED
SH.PUT {Horizontal position}, {Vertical position}, {Color:0-4095}
Color example(White:#FFF, Red:#F00, Green:#F0, Blue:#F)
'Make the LED 4th from the left end and 4th from the top end green
SH.PUT 3, 3, #F0
SH.SCR Get the color of Sense HAT's LED
SH.SCR({Horizontal position}, {Vertical position})
'Show the color of LED 4th from the left end and 4th from the top end
?SH.SCR(3, 3)
SH.SCROLL Scroll through the Sense HAT LEDs
SH.SCROLL {direction}
Examples of directions(Up:0, Right:1, Down:2, Left:3)
SH.SCROLL 0 'Scroll up
SH.SCROLL 1 'Scroll to the right
SH.AX
SH.AY
SH.AZ
Get the acceleration of Sense HAT
SH.AX()
SH.AY()
SH.AZ()
?SH.AX() 'Show acceleration on X axis
?SH.AY() 'Show acceleration on Y axis
?SH.AZ() 'Show acceleration on Z axis
SH.BTN Get the state of Sense HAT joystick
SH.BTN()
0th bit from the right: Selecting "Down"
1st bit from the right: Selecting "Rigiht"
2nd bit from the right: Selecting "Up"
3rd bit from the right: Pushing
4th bit from the right: Selecting "Left"
'Show the state of the joystick in binary number at once.
?BIN$(SH.BTN(),5)
SH.BUP Get whether the joystick is in the Selecting "Up"
SH.BUP()
'Show 1 when the joystick is in the Selecting "Up"
?SH.BUP()
SH.BDOWN Get whether the joystick is in the Selecting "Down"
SH.BDOWN()
'Show 1 when the joystick is in the Selecting "Down"
?SH.BDOWN()
SH.BLEFT Get whether the joystick is in the Selecting "Left"
SH.BLEFT()
'Show 1 when the joystick is in the Selecting "Left"
?SH.BLEFT()
SH.BRIGHT Get whether the joystick is in the Selecting "Rigit"
SH.BRIGHT()
'Show 1 when the joystick is in the Selecting "Righit"
?SH.BRIGHT()
SH.BPRESS Get whether the joystick is in the Pushing
SH.BPRESS()
'Show 1 when the joystick is in the Pushing
?SH.BPRESS()

Commands support Touchscreen Display

Please refer to the explanation here when connecting Touchscreen Display.
In order to use the command, it is necessary to connect the following two places
in addition to general connections.

  • Raspberry Pi's physical pin 3 (SDA) and Touchscreen Display's SDA
  • Raspberry Pi's physical pin 5 (SCL) and Touchscreen Display's SCL

Command Reaction of the RPi+ edition Usage
TS.X
TS.Y
Get the touched location of Touchscreen (lower right origin)
TS.X() Horizontal position (0-799, Not touched:-1)
TS.Y() Vertical position (0-479, Not touched:-1)
?TS.X() 'Show horizontal position
?TS.Y() 'Show vertical position
TS.GET Get the touched location of Touchscreen (lower right origin)
TS.GET()
Leading 8bit: Horizontal position (0-199, Not touched:0)
Later 8bit: Vertical position (0-119, Not touched:0)
'Show the touched location repeatingly.
10 P=TS.GET()
20 ?(P>>8);" ";(P&#FF)
30 WAIT10: GOTO10