ORANGE-light リファレンスマニュアル

1.プログラム制御関連
代入文const文end文goto文if文for文while文break文continue文def文return文var文extern文chain文reset文

2.表示関連
print文locate文cls文chr$関数hex$関数
cursor文mprint文

3.キーボード関連
input文inkey関数

4.タイマー関連
clt文tickms関数pause文

5.メモリー配列関連
mpoke文mpokew文mptr文mdata文mdataw文mstr文mpeek関数mpeekw関数getmptr関数
mstruct文mstrcmp関数mstrlen関数mstrcpy関数mstrcat関数mstrchr関数mstrrchr関数mstrf関数mmove関数mset関数

6.I/O制御関連
out文sftout文pwm文in関数adc関数i2ci文i2cw関数i2cr関数button関数
uart文uartput関数uartget関数

7.グラフィックス関連
rgb関数pset文line文rect文gprint文gtitle文

8.スプライト関連
sprnew関数sprdsp文sprmov文sprget文sprhit関数

9.ファイルI/O関連
fopen関数fclose関数fread関数fwrite関数fstat関数fseek関数remove関数rename関数mkdir関数dir関数

10.その他
beep文rnd関数debug関数
config文alias文


1.プログラム制御関連

代入文
書式 変数 = 式
説明 変数に式を評価した結果を代入します。
c = a + b cにa + bの値を代入します。
互換性   すべてのORANGE-insideで同じ動きになります。 

const文
書式 const 定数名 = 定数式
説明 定数式を評価した値を、以降に出現する定数名と置き換えます。定数式には数値、演算子のみが使用できます。
const LIMIT = 100 * 2 + 10
print LIMIT
LIMITを210に置き換えます。
210を表示します。
互換性   すべてのORANGE-insideで同じ動きになります。 

end文
書式 end
説明 プログラムを終了します。
if x = 1 then end xが1のときにプログラムを終了します。
互換性   すべてのORANGE-insideで同じ動きになります。 

goto文
書式 goto 名札名
説明 指定した名札の次に制御を移します。
loop:
  x = x + 1
  print x
  if x <= 10 then goto loop



x <= 10のときにloop:の次に制御を移します。
互換性   すべてのORANGE-insideで同じ動きになります。 

if文
書式 if 条件式 then 文1
if 条件式 then 文1 else 文2
説明 条件式が真ときは、文1を実行します。
条件式が偽ときは文2(elseがあるとき)または次の文(elseがないとき)に制御を移します。

条件式の真偽判定は次のように決まります。
真: 条件式を評価した結果が0以外のとき
偽: 条件式を評価した結果が0のとき

文1、文2には、複合文(文を「:」で区切ったもの)が使用できます。
if x < 10 then print "B"
if x = 10 then print "Y" else print "R"

if y = 0 then print "E": end else print "S"
x < 10のときはBを表示します。
x = 10のときはYを表示し、それ以外のときはRを表示します。

y = 0のときはEを表示し、プログラムを終了します。
それ以外のときはSを表示します。
互換性   すべてのORANGE-insideで同じ動きになります。 

for文
書式 for 制御変数 = 初期値 to 終値 文 next
for 制御変数 = 初期値 to 終値 step 増分値 文 next
説明 制御変数を初期値から終値まで、制御変数を変化させながら、forとnextの間の文を繰り返えし実行します。
制御変数はforとnextの間の文を実行するごとに増分値だけ変化します。
stepで増分値を指定しないときは、増分値は+1となります。
増分値には負数を指定することもできます。

繰り返し終了の判定は、以下の通りです。
・増分値が正のときは、制御変数の値が終値より大きくなったとき
・増分値が負のときは、制御変数の値が終値より小さくなったとき
for i = 1 to 10
  print i
next

for i = 1 to 9 step 2
  print i
next

for i = 9 to 1 step -2
  print i
next

for x = 2 to 9
  for y = 1 to 9
    print x;
    print " * ";
    print y
    print " = ";
    print x * y
  next
next
1から10までの整数を表示します。



1から9までの奇数を表示します。



9から1までの奇数を表示します。



掛け算九九の表を表示します。
互換性   すべてのORANGE-insideで同じ動きになります。 

while文
書式 while (条件式) 文 wend
説明 条件式が真のときは、whileとwendの間の文を繰り返し実行します。条件式が偽のときは、wendの次の文から実行します。

条件式の真偽判定は次のように決まります。
真: 条件式を評価した結果が0以外のとき
偽: 条件式を評価した結果が0のとき
i = 1
while i <= 10
  print i
wend
1から10までの整数を表示します。
互換性   すべてのORANGE-insideで同じ動きになります。 

break文
書式 break
説明 ループ(for~next、while~wend)から無条件に脱出します。
for i = 1 to 10
  if i = 7 then break
  print i;
next
123456を表示します。
互換性   すべてのORANGE-insideで同じ動きになります。 

continue文
書式 continue
説明 for~nextループ内ではnextまでスキップします。
while~wendループ内ではwendまでスキップします。
for i = 1 to 10
  if i = 3 then continue
  if i = 7 then break
  print i;
next
12456を表示します。
互換性   すべてのORANGE-insideで同じ動きになります。 

def文
書式 def 関数名(引数) { 文 }
説明 関数を定義します。
defの後に関数名を書き、「(」と「)」の間に引数を書きます。引数が複数あるときは、「,」で区切ります。
「{」と「}」の間に文を書きます。文は複数個書けます。return文または「}」に達すると、関数の呼び出し元に戻ります。
print min(1, 10)
print min(10, 10)
print min(100, 10)
end

def min(x, y) {
  if x < y then return x else return y
}
1を表示します。
10を表示します。
10を表示します。


xとyの小さい方を返す関数を定義します。
互換性   すべてのORANGE-insideで同じ動きになります。 

return文
書式 return
return 式
説明 呼び出したユーザー関数の次に制御が戻ります。.
returnの後に式が書いた場合は、式を評価した値を呼び出し元に返します。
func1(10)
func1(0)
print func2(10)
print func2(0)
end

def func1(x) {
  if x = 0 then return
  print 100 / x
}

def func2(x) {
  if x = 0 then return 0
  return 100 / x
}
10を表示します。
何も表示しません。
10を表示します。
0を表示します。


値を返さない関数です。




値を返す関数です。
互換性   すべてのORANGE-insideで同じ動きになります。 

var文
書式 var ローカル変数
説明 def文の「{」と「}」の間で有効なローカル変数を定義します。
グローバル変数(通常の変数と同じ名前のローカル変数を参照するときは、ローカル変数が優先されます。
x = 1: y = 2: z = 3
print x
print y
print z
print add(100, 200)
print x
print y
print z
end

def add(x, y) {
  var z
  z = x + y
  print x
  print y
  print z
  return z
}

1を表示します。
2を表示します。
3を表示します。
300を表示します。
1を表示します。
2を表示します。
3を表示します。



ローカル変数zを定義します。
ローカル変数zに引数の和を代入します。
100を表示します。
200を表示します。
300を表示します。
300を返します。
互換性   すべてのORANGE-insideで同じ動きになります。 

extern文
書式 extern 関数名, 外部関数番号
説明 C言語で記述した外部関数を宣言します。ここで宣言した関数は、def文で宣言した関数と同じように使用できます。外部関数番号は0~255が使用できます。パラメーターの数は可変です。
extern mean, 1 外部関数meanを宣言します。
互換性   ORANGE-studioでは宣言した関数が呼ばれたときに、コンソールに"ext 外部関数番号, [パラメーターリスト]"を表示します。
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 ORANGE-inside内の外部関数ハンドラーに外部関数番号に対応して記述が必要です。詳細はSDK(発売予定)を参照してください。

chain文
書式 chain 式または文字列
説明 ページ番号またはファイル名で指定したプログラムに制御を移します。制御の移行に失敗した場合はプログラムを終了します。
chain 3

chain "circle"
ページ番号3のプログラムに制御を移します。

"circle"という名前のプログラムに制御を移します。
互換性   ORANGE-studioでは未実装です。(デバッグ用にchain文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

reset文
書式 reset
説明 システムをリセットします。
reset
リセットします。
互換性   ORANGE-studioでは未実装です。(コンソールに"reset"と表示してプログラムを終了します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

2.表示関連

print文
書式 print 式または文字列
print 「;」で区切った複数の式または文字列
print
説明 式または文字列をコンソールに表示します。(表示後、改行します。)
式または文字列を「;」で区切って、複数の式または文字列を表示します。(「;」があると改行しないで、
次の式または文字列を表示します。)
print文単独では改行のみを行います。
print 10
a = 10: b = 20
print
print a + b
print "abcdef"
print "abc"; "def"
print "a + b = "; a +b
10を表示します。

改行のみを行います。
30を表示します。
abcdefを表示します。
abcdefを表示します。
a + b = 30を表示します。
互換性   ORANGE-studio内ではコンソールウインドウに出力します。
ターゲットボード上では、ORANGE-insideの実装に依存します。(CRTやLCD、シリアルコンソール等に出力されます。) 
LPC1114版   実装済みです。 シリアルコンソールに出力します。

locate文
書式 locate x座標, y座標
説明 指定した座標にカーソルを移動します。
locate 10, 10
(10, 10)にカーソルを移動します。
互換性   ORANGE-studioでは未実装です。(デバッグ用にlocate文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 シリアルコンソールにVT100の該当エスケープシーケンスを出力します。

cls文
書式 cls
cls 式
説明 コンソールをクリアします。
式を指定した場合の振る舞いは、ORANGE-insideの実装に依存します。
cls
コンソールをクリアします。
互換性   ORANGE-studio内ではコンソールウインドウ内の文字を全消去します。
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 
cls 1 : シリアルコンソールにVT100の該当エスケープシーケンスを出力します。
cls 2 : グラフィックス画面(LCD)をクリアします。
clsまたはcls 3 : cls 1とcls 2の両方の処理を行います。

chr$関数
書式 chr$(式)
説明 式で指定されたコードに対応する文字を返します。
print chr$(97)
aを表示します。
互換性   すべてのORANGE-insideで同じ動きになります。 

hex$関数
書式 hex$(式)
説明 式で指定された値に対応する16進文字列を返します。
print hex$(60)
3Cを表示します。
互換性   すべてのORANGE-insideで同じ動きになります。 

3.キーボード関連

input文
書式 input 変数
input プロンプト文字列, 変数
説明 プロンプト文字列(指定しない場合は「?」)を表示し、入力を要求します。入力が完了すると、入力された値をは変数に代入されます。
input count
input "count = ? ", count
「?」をコンソールに表示し、入力ダイアログで入力した数値をcountに代入します。
「count = ? 」をコンソールに表示し、入力ダイアログで入力した数値をcountに代入します。
互換性   ORANGE-studio内では以下の動作になります。
プロンプト文字列をコンソールに表示します。(プロンプト文字列を指定しない場合は、コンソールに「?」を表示します。)
入力ダイアログを出します。
入力ダイアログを閉じると、入力された数値を指定した変数に代入し、コンソールにも表示します。
ダイアログを取消ボタンで閉じたり、数値に変換できない場合には0を指定した変数に代入し、コンソールにも表示します。

ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。シリアルコンソールから入力します。 

inkey関数
書式 inkey()
説明 押されたキーのキーコードを返します。押されていないときは-1を返します。
keyCode = inkey()
押されたキーのキーコードをkeyCodeに代入します。
互換性   ORANGE-studioでは未実装です。(常に-1を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。シリアルコンソールから入力を返します。 
ORANGE-ESPer   実装済みです。PS/2キーボードから入力されたキーのキーコードを返します。(config文でシリアル入力に変更可)
キーコードはキートップの刻印に相当するアスキーコードです。('1'が押されたら0x31を返します。)
ファンクションキーなどの特殊キーは、次のコードを返します。

キー コード
0x8000
0x8100
0x8200
0x8300
F1 0x8400
F2 0x8500
F3 0x8600
F4 0x8700
F5 0x8800
F6 0x8900
F7 0x8a00
F8 0x8b00
F9 0x8c00
F10 0x8d00
F11 9x8e00
F12 0x8f00
Delete 0x9000
End 0x9100
Page Up 0x9200
Page Down 0x9300 
Home 0x9400 
Insert 0x9500 

☆指定したキーが押されているかどうかを高速に判断するときは、button関数をご利用ください。 

4.タイマー関連

clt文
書式 clt
説明 タイマーをクリアします。クリアした瞬間はtickms()の返す値が0になります。
clt
pause 100
print tickms()
タイマーをクリアします。
100ms待ちます。
100に近い値を表示します。
互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

tickms関数
書式 tickms()
説明 clt文を実行したときからの時間をミリ秒単位で返します。
clt
pause 100
print tickms()
タイマーをクリアします。
100ms待ちます。
100に近い値を表示します。
互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

pause文
書式 pause 式
説明 式で指定したミリ秒単位の時間だけ何もしないで待ちます。
clt
pause 100
print tickms()
タイマーをクリアします。
100ms待ちます。
100に近い値を表示します。
互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。

5.メモリー配列関連

mpoke文
書式 mpoke 式1, 式2
説明 式1で指定した番地(バイト)に式2で指定した値(バイト)を書き込みます。
mpoke 10, 100
メモリー配列の10バイト目の位置に100を書き込みます。
互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。

mpokew文
書式 mpokew 式1, 式2
説明 式1で指定した番地(ワード)に式2で指定した値(ワード)を書き込みます(ビッグエンディアン)。
mpokew 5, 1000
メモリー配列の5ワード目の位置に1000を書き込みます。
互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

mptr文
書式 mptr 式
説明 メモリーポインターに式で指定した値を設定します。メモリーポインターはmdata文、mdataw文、mstr文で参照されます。
mptr 16
メモリーポインターに16を設定します。
互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

mdata文
書式 mdata 整数1, 整数2, 整数3...,整数n
説明 メモリポインターが指し示す番地(バイト)から順に、整数1~整数nの値をバイト単位でメモリー配列に書き込みます。書き込んだ数だけメモリーポインターの値が増加します。
mptr 0x0010
mdata 1, 2, 3, 4, 5
mdata 6, 7, 8, 9, 10
メモリーポインターに0x0010(バイト)を設定します。
0x0010番地(バイト)から順に1, 2, 3, 4, 5を書き込みます。
0x0015番地(バイト)から順に6, 7, 8, 9, 10を書き込みます。

互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。

mdataw文
書式 mdataw 整数1, 整数2, 整数3, ..., 整数n
説明 メモリーポインターが指し示す番地(ワード)から順に、整数1~式nの値をワード単位でメモリー配列に書き込みます(ビッグエンディアン)。書き込んだ数だけメモリーポインターの値が増加します。
mptr文は、バイト単位でカウントした番地を設定しますので、mdataw文で使用するときは、2倍した値を設定します。
mptr 0x0010 * 2
mdataw 1, 2, 3, 4, 5
mdataw 6, 7, 8, 9, 10
メモリーポインターに0x0010(ワード)を設定します。
0x0010番地(ワード)から順に1, 2, 3, 4, 5を書き込みます。
0x0015番地(ワード)から順に6, 7, 8, 9, 10を書き込みます。

互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。

mstr文
書式 mstr 文字列
説明 メモリーポインターが指し示す番地から順に指定した文字列を書き込みます。書込み後は、書き込んだ文字数だけメモリーポインターの値が増加します。
mptr 0x0010
mstr "ABC"

mstr
"DE"
メモリーポインターに0x0010(バイト)を設定します。
0x0010番地から”ABC"を書き込みます。
(0x0010番地に0x41、0x0011番地に0x43、0x0012番地に0x43)

0x0013番地から”DE"を書き込みます。
(0x0013番地に0x44、0x0014番地に0x45)
互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

mpeek関数
書式 mpeek(式)
説明 式で指定した番地(バイト)の内容を返します。
mptr 0x0010
mstr "ABC"

print mpeek(0x0010)
メモリーポインターに0x0010(バイト)を設定します。
0x0010番地から”ABC"を書き込みます。
(0x0010番地に0x41、0x0011番地に0x43、0x0012番地に0x43)
65(=0x41)を表示します。
互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

mpeekw関数
書式 mpeek(式)
説明 式で指定した番地(ワード)の内容を返します(ビッグエンディアン)。
mpokew 5, 1000
print
mpeekw(5)
メモリー配列の5ワード目の位置に1000を書き込みます。
1000を表示します。
互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

getmptr関数
書式 getmptr()
説明 現在のメモリーポインターの値を取得します。
mptr 0x0000
mstr "ABC"

print
getmptr()
メモリーポインターに0x0000(バイト)を設定します。
0x0000番地から”ABC"を書き込みます。
(0x0000番地に0x41、0x0001番地に0x43、0x0002番地に0x43)
3を表示します。
互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

6.I/O制御関連

out文
書式 out 式1, 式2
説明 式1で指定したポート番号に対して、式2で指定した出力指示を実行します。

出力指示の指定は以下の通りです。
0:Low
1:High
out 2, 1
ポート2をHighにします。
互換性   ORANGE-studioではデジタル出力パネルの状態を更新します。
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 ポート番号とピン番号の対応は以下の通りです。
ポート番号 ピン番号
1 9
10
11 
12 
18
17 
14 
9 4
10  5
11  6
12 1
13  2
14  13
15  28 
16  27 
17  26
18  25 
19  24 
20  23 
21  16 
22 15 

sftout文
書式 out 式1, 式2, 式3, 式4
説明 式1で指定しデータポート番号に対して、式4で指定したデータを1ビットずつ出力します。
式3が1のときは、最下位ビット(LSB)からデータを出力し、1以外のときは最上位ビット(MSB)から出力します。
1ビット分のデータを出力する毎に、式2で指定したクロックポートにパルス(High→Low)を出力します。これを8ビット分繰り返します
sftout 1, 3, 0, 0x08
ポート1に0x08をMSBから順に出力します。
互換性   ORANGE-studioでは未実装です。(デバッグ用にsftout文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 式1および式2で使用するポート番号とピン番号の対応は以下の通りです。
ポート番号 ピン番号
1 9
10
11 
12 
18
17 
14 
9 4
10  5
11  6
12 1
13  2
14  13
15  28 
16  27 
17  26
18  25 
19  24 
20  23 
21  16 
22 15 

pwm文
書式 pwm 式1, 式2, 式3
説明 式1で指定したポート番号に対して、式2(周波数)、式3(デューティ比)で指定した矩形波を出力します。
周波数の単位はHzです。デューティ比は0~1000で指定します。1を指定すると0.1%、1000を指定すると100%になります。
デューティ比に0を指定するとPWM出力を停止します。
pwm 2, 100, 500
ポート2に周波数100Hz、デューティ比50%の矩形波を出力します。
互換性   ORANGE-studioでは未実装です。(デバッグ用にpwm文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 ポート番号とピン番号の対応は以下の通りです。
ポート番号 ピン番号
2 10
3 11
4 12
5 18

in関数
書式 in(式)
説明 式で指定したポート番号の状態を返します。
指定したポートがHighのときに1、Lowのときに0が返ります。
print in(1) ポート1の状態を表示します。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 ポート番号とピン番号(ボタン)の対応は以下の通りです。
ポート番号 ピン番号 ボタン
1 3  
4  
5 SELECT
6  
9 UP
10 RIGHT
11 LEFT
12  DOWN
9 13 START
10  18 B
11  17 A
12  
13  2  
14  14  
15  28   
16  27   
17  26   
18  25   
19  24   
20  23   
21  16   
22  15   

adc関数
書式 adc(式)
説明 式で指定したポートの電圧に応じて値を返します。
電圧と値の関係はターゲットボード上のORANGE-insideの実装に依存します。
print adc(1) ポート1の電圧を表示します。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 0~1023の値を返します。ポート番号とピン番号の対応は以下の通りです。
ポート番号 ピン番号
2 4
9
10
7 11
8 12
9 13

i2ci文
書式 i2ci 式1, 式2
説明 式1で指定したチャネルのI2Cバスを式2で指定したクロックレートで初期化します。
チャネルは1から始まる番号です。
クロックレートの単位はkHzです。
i2ci 1, 400 I2C1バスを400kHzで初期化します。
互換性   ORANGE-studioでは未実装です。(デバッグ用にi2ci文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

i2cw関数
書式 i2cw(式1, 式2, 式3, 式4, 式5)
説明 式1で指定したチャネルのI2Cバスにデータを書き込みます。
式2でスレーブアドレスを7ビットで指定します。(R/Wフラグは0が付加されます。)
式3で書き込むデータが格納されているメモリー配列の番地(バイト)を指定します。
式4で書き込むデータの長さ(バイト数)を指定します。
式5でストップ指示を指定します。ストップ指示は1でストップコンディションを送出し、0でリピーテッドスタートコンディションを送出します。

成功すると0を返します。失敗すると以下のエラーコードが返ります。
-1 : 他のデバイスに使用されている
-2 : デバイスが見つからない
buf = getmptr()
mdata 0x00, 0x01
rc = i2cw(1, 0x50, buf, 2, 1)


スレーブアドレス0x50に0x00, 0x01を送信します。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 式1の値は無視されます。(使用できるI2Cバスは1チャンネルのみです。)

i2cr関数
書式 i2cr(式1, 式2, 式3, 式4, 式5)
説明 式1で指定したチャネルのI2Cバスからデータを読み込みます。
式2でスレーブアドレスを7ビットで指定します。(R/Wフラグは1が付加されます。)
式3で読み込んだデータを格納するメモリー配列の番地(バイト)を指定します。
式4で読み込むデータの長さ(バイト数)を指定します。
式5でストップ指示を指定します。ストップ指示は1でストップコンディションを送出し、0でリピーテッドスタートコンディションを送出します。

成功すると0を返します。失敗すると以下のエラーコードが返ります。
-1 : 他のデバイスに使用されている
-2 : デバイスが見つからない
     
buf = getmptr()
rc = i2cr(1, 0x68, buf, 7, 1)

スレーブアドレス0x68から7バイト受信します。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 式1の値は無視されます。(使用できるI2Cバスは1チャンネルのみです。)

button関数
書式 button(式)
説明 指定たボタン(キー)が押されていれば1、そうでなければ0を返します。
isF1 = button(0x8400) F1キーが押されているかどうかを返します。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   未実装です。 (常に0を返します。)
in関数を使用してください。
ORANGE-ESPer   実装済みです。指定たキーが押されていれば1、そうでなければ0を返します。キーコードはinkey関数を参照してください。

uart文
書式 uart 式1, 文字列, 式2
説明 式1で指定したチャネルのシリアルポーとを文字列で指定した通信速度(bps)で初期化します。

通信速度以外のパラメーターは式2で指定します。
式2で使用する値は以下のconst文で定義したものを使用してください。
SERIAL_の後に続く文字は、順にデータ長、パリティ、ストップビット長を意味します。

const SERIAL_5N1 = 0 // パリティなし
const SERIAL_6N1 = 1
const SERIAL_7N1 = 2
const SERIAL_8N1 = 3
const SERIAL_5N2 = 4
const SERIAL_6N2 = 5
const SERIAL_7N2 = 6
const SERIAL_8N2 = 7
const SERIAL_5E1 = 8 // 偶数パリティ
const SERIAL_6E1 = 9
const SERIAL_7E1 = 10
const SERIAL_8E1 = 11
const SERIAL_5E2 = 12
const SERIAL_6E2 = 13
const SERIAL_7E2 = 14
const SERIAL_8E2 = 15
const SERIAL_5O1 = 16 // 奇数パリティ
const SERIAL_6O1 = 17
const SERIAL_7O1 = 18
const SERIAL_8O1 = 19
const SERIAL_5O2 = 20
const SERIAL_6O2 = 21
const SERIAL_7O2 = 22
const SERIAL_8O2 = 23
const SERIAL_8E1= 11

uart
1, "1953", SERIAL_8E1


UART1を1953bps、8ビット、偶数パリティ、1ストップビットで初期化します。
互換性   ORANGE-studioでは未実装です。(デバッグ用にuart文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   未実装です。
ORANGE-ESPer   実装済みです。
UART0は、micro USBです。
UART1は、IO端子の2番ピン(RXD)、3番ピン(TXD)です。

7.グラフィックス関連

rgb関数
書式 rgb(式1, 式2, 式3)
説明 式1(RED値)、式2(GREEN値)、式3(BLUE値)で指定した16ビットのカラー値を返します。
RED値、GREEN値、BLUE値には、それぞれ0~255の値を指定します。
line 0, 0 , 100, 100, rgb(0, 255, 0) 緑色の直線を描きます。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

pset文
書式 pset 式1, 式2, 式3
説明 式1(x座標)、式2(y座標)で指定した位置に式3(16ビットのカラー値)で指定した点を描きます。
pset 100, 100, rgb(0, 255, 0) 座標(100, 100)に緑色の点を描きます。
互換性   ORANGE-studioでは未実装です。(デバッグ用にpset文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

line文
書式 line 式1, 式2, 式3, 式4, 式5
説明 式1(x座標)、式2(y座標)で指定した始点と式3(x座標)、式4(y座標)で指定した終点を結ぶ直線を式5(16ビットのカラー値)で指定した直線を描きます。
line 0, 0, 100, 100, rgb(0, 255, 0) 始点(0, 0)と終点(100, 100)を結ぶ直線を描きます。
互換性   ORANGE-studioでは未実装です。(デバッグ用にline文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

rect文
書式 rect 式1, 式2, 式3, 式4, 式5, 式6
説明 式1(始点のx座標)、式2(始点のy座標)、式3(幅)、式4(高さ)、式5(16ビットのカラー値)で指定する長方形を描きます。
式6の値が0のときは長方形の枠のみを描き、1のときは長方形の内部を塗りつぶします。
rect 0, 0, 100, 100, rgb(0, 255, 0), 1 始点(0, 0)、幅100、高さ100の長方形を描きます。
内部は塗りつぶします。
互換性   ORANGE-studioでは未実装です。(デバッグ用にrect文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

gprint文
書式 gprint 式1, 式2, 式3, 式4, 式5
gprint 式1, 式2, 文字列, 式4, 式5
説明 式1(x座標)、式2(y座標)で指定した始点から式3の値を文字列として描きます。
式3のところに文字列を指定すれば、その文字列を描きます。
式4で文字列の前景色を指定します。
式5で文字列の背景色を指定します。背景色は省略可能で、省略すると黒になります。
gprint 120, 100, x, rgb(0, 255, 0), 0
gprint 120, 100, "TEST", rgb(0, 255, 0), 0
(120, 100)から変数xの値を表示します。
(120, 100)から文字列TESTを表示します。
互換性   ORANGE-studioでは未実装です。(デバッグ用にgprint文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 半角文字は内蔵の8x8フォントで表示します。全角文字は表示できません。

gtitle文
書式 gtitle 式1, 式2, 文字列, 式4, 式5
説明 式1(x座標)、式2(y座標)で指定した始点から文字列を表示します。半角文字は8x16フォントで、全角文字は16x16フォントで表示します。
式4で文字列の前景色を指定します。
式5で文字列の背景色を指定します。背景色は省略可能で、省略すると黒になります。
gtilte 10, 10, "日本語表示", rgb(0, 255, 0), 0
(10, 10)から文字列TESTを表示します。
互換性   ORANGE-studioでは未実装です。(デバッグ用にgtitle文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。コンパイル時にはORANGE-pro.jarと同じ場所にフォントファイル(Font16x16.bdfとFont8x16.bdf)を格納しておいてください。
コンパイル結果にフォントパターンが含まれますので、実機側のメモリーを圧迫します。

8.スプライト関連

sprnew関数
書式 sprnew(式1, 式2, 式3, 式4, 式5, 式6, 式7, 式8)
説明 ★1ピクセルごとに16ビットのカラー値で指定したスプライトを作成する場合

式1でスプライト番号(0~)を指定します。
式2~式5で、それぞれ、スプライトを表現する矩形の始点x座標、矩形の始点y座標、矩形の幅、矩形の高さを指定します。
式6で矩形のイメージが格納されているメモリー配列の番地(バイト)を指定します。イメージの1ピクセルは16ビットのカラー値で指定します。
式7および式8の両方に0を指定します。.

スプライトの作成に成功すると、スプライト番号が返ります。失敗すると-1が返ります。

★前景色と背景色を指定したスプライトを作成する場合

式1でスプライト番号(0~)を指定します。
式2~式5で、それぞれ、スプライトを表現する矩形の始点x座標、矩形の始点y座標、矩形の幅、矩形の高さを指定します。矩形の幅は8の倍数である必要があります。
式6で矩形のイメージが格納されているメモリー配列の番地(バイト)を指定します。
イメージの1ピクセルは1ビットで指定します。ビットが立っている部分が前景色、そうでない部分が背景色になります。
式7で前景色を指定します。
式8で背景色を指定します。

スプライトの作成に成功すると、スプライト番号が返ります。失敗すると-1が返ります。
IMAGE0 = getmptr()
mdataw 2016, 2016, 2016
mdataw 2016, 2016, 2016
sprite0 = sprnew(0, X, Y, 3, 2, IMAGE0, 0, 0)
sprdsp sprite0, 1
★1ピクセルごとに16ビットのカラー値で指定したスプライトを作成する場合
1ライン目(3ピクセル)
2ライン目(3ピクセル)
IMAGE1 = getmptr()
mdata 0xff, 0xff, 0xff
mdata 0xff, 0xff, 0xff
mdata 0xff, 0xff, 0xff
sprite1 = sprnew(1, X, Y + 10, 24, 3, IMAGE1, rgb(255, 0, 0), 0)
sprdsp sprite1, 1
  ★前景色と背景色を指定したスプライトを作成する場合
1ライン目(24ピクセル)

2ライン目(24ピクセル)
3ライン目(24ピクセル)
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 スプライト番号は0~9まで使用できます。

sprdsp文
書式 sprdsp 式1, 式2
説明 式1で指定したスプライト番号のスプライトをを可視/不可視にします。
式2で1を指定すると可視、0を指定すると不可視になります。
sprdsp 2, 0
sprdsp
3, 1
スプライト番号2のスプライトを不可視にします。
スプライト番号3のスプライトを可視にします。
互換性   ORANGE-studioでは未実装です。(デバッグ用にsprdsp文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

sprmov文
書式 sprmov 式1, 式2, 式3
説明 式1で指定したスプライト番号のスプライトを移動します。
式2でx座標、式3でY座標を指定します。
sprmov 2, 100, 100 スプライト番号2のスプライトを(100, 100)に移動します。
互換性   ORANGE-studioでは未実装です。(デバッグ用にsprmov文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

sprget文
書式 sprget 式1, 式2
説明 式1で指定したスプライト番号のスプライトの情報を読み出し、式2で指定したメモリー配列の番地の先頭から以下のように10バイト分格納します。
また、格納する番地は偶数である必要があります。(読出し後、mpeekw関数で情報を取得するため)
指定した番地(ワード) : 矩形の始点のx座標
指定した番地(ワード) + 1 : 矩形の始点の y座標
指定した番地(ワード) + 2 : 矩形の幅
指定した番地(ワード) + 3 : 矩形の高さ
指定した番地(ワード) + 4 : 可視(0x0001)/不可視(0x0000)
work = getmptr()
if work % 2 = 1 then work = work + 1
sprget 1, work
address = work / 2
print mpeekw(address)
print mpeekw(address + 1)
print mpeekw(address + 2)
print mpeekw(address + 3)
print mpeekw(address + 4)
現在のメモリーポインターを取得します。
奇数番地のときは偶数番地に補正します。
スプライト番号1の情報を取得します。
ワード番地に変換します。
矩形の始点のx座標を表示します。
矩形の始点のy座標を表示します。
スプライトの幅を表示します。
スプライトの高さを表示します。
スプライトの可視/不可視情報を表示します。
互換性   ORANGE-studioでは未実装です。(デバッグ用にpget文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

sprhit関数
書式 sprhit(式1, 式2)
説明 式1で指定したスプライト番号の矩形と式2で指定したスプライト番号の矩形が重なっているときは1を返します。
二つ矩形に重なり部分がないときは0を返します。
if sprhit(1, 2) then sprmov 1, 0, 0 スプライト1スプライト2が重なっているときはスプライト1を(0,0)に移動します。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

9.ファイルI/O関連

fopen関数
書式 fopen(式1, 式2)
説明 ファイルをオープンします。
式1でメモリー配列上の完全パス名を指定します。
式2でモードを指定します。(0:リードオンリー、1:上書き、2:追加)
成功するとファイル番号(0~3)が返ります。
存在しないファイルをリードオンリーでオープンしたり、同時にオープンできるファイル数(4個)を超えるとエラーとなり、-1が返ります。
mstruct work {
  PATH ds "f:/config.sys"
}

file = fopen(work.PATH, 0)

パス名をメモリー配列に割り当てます。


指定したファイルをリードオンリーでオープンします。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   未実装です。
ORANGE-ESPer   実装済みです。 

fclose関数
書式 fclose(式)
説明 ファイルをクローズします。
式1でファイル番号を指定します。
成功すると0が返ります。
fclose(file)
ファイルをクローズします。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   未実装です。
ORANGE-ESPer   実装済みです。 

fread関数
書式 fread(式1, 式2, 式3)
説明 ファイルからデータを読み込みます。
式1でファイル番号を指定します。
式2で読み込むデータの格納先(メモリー配列のアドレス)を指定します。
式3で読み込むデータの長さ(バイト数)を指定します。
読み込んだデータの長さ(バイト数)が返ります。
mstruct work {
  PATH ds "f:/config.sys"
  BUF rb 256
}

file = fopen(work.PATH, 0)
size = fread(file, work.BUF, 256)
fclose(file)





指定したファイルをリードオンリーでオープンします。
ファイルからデータを読み込みます。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   未実装です。
ORANGE-ESPer   実装済みです。 

fwrite関数
書式 fwrite(式1, 式2, 式3)
説明 ファイルにデータを書き込みます。
式1でファイル番号を指定します。
式2で書き込むデータの格納先(メモリー配列のアドレス)を指定します。
式3で書き込むデータの長さ(バイト数)を指定します。
書き込んだデータの長さ(バイト数)が返ります。
mstruct work {
  PATH ds "f:/config.sys"
  TEST ds "TEST"
  CRLF ds "\r\n"
}

file = fopen(work.PATH, 1)
fwrite(file, work.TEST, 4)
fwrite(file, work.CRLF, 2)
fclose(file)





指定したファイル上書きモードでオープンします。

ファイルにデータを書込みます。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   未実装です。
ORANGE-ESPer   実装済みです。 

10.その他

beep文
書式 beep 式1, 式2
beep 式1
beep
説明 式1で指定した音階を式2で指定した時間だけビープ音を鳴らします。
音階は21でA音440Hzです。1増やすと半音上がり、減らすと半音下がります。
時間の単位はmsです。
式1と式2は省略できます。省略したときの値はそれぞれ、21と200です。
beep
beep 33, 1000
音階21(A音440Hz)で200msのビープ音を鳴らします。
音階33(A音880Hz)で1000msのビープ音を鳴らします。
互換性   ORANGE-studioでは式1、式2は無視され、OSに設定されたビープ音を出します。
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。25番ピンとGNDの間に圧電スピーカーを接続します。

rnd関数
書式 rnd(式)
説明 0~式 - 1 までの乱数を返します。
print rnd(6) + 1 1~6のいずれかの値を表示します。
互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。 

debug関数
書式 debug(式)
説明 式の値を表示し、その値を返します。
debug(10) 10を表示します。
互換性   ORANGE-studioでは「L行番号 = 式の値」を表示します。
ターゲットボード上では、ORANGE-insideの実装に依存します。
LPC1114版   実装済みです。「DEBUG = 式の値」を表示します。