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

1.プログラム制御関連
代入文end文goto文gosub文if文for文while文def文return文var文

2.表示関連
print文locate文cls文

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

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

5.メモリー配列関連
mmax関数mpoke文mpokew文mptr文mdata文mdataw文mstr文mpeek関数mpeekw関数

6.乱数関連
rnd関数

7.I/O制御関連
out文pwm文in関数adc関数i2ci文i2cw関数i2cr関数


1.プログラム制御関連

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

gosub文
書式 gosub 名札名
説明 指定した名札の次に制御を移します。
その後、return文に出会うと、呼び出したgosub文の次に制御が戻ります。
x = 2
gosub calc
print x
end

calc:
  x = x * 100
  return  

calc:の次に制御を移します。





gosub calcの次に戻ります。
互換性   すべての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で同じ動きになります。 

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 式
説明 呼び出したgosub文の次に制御が戻ります。.
def文の「{」と「}」の間にあるときは、式の指定が必要で、式を評価した値を返します。
gosub sub1
end

sub1:
 print func1(10)
 return

def func1(x) {
 return 10 * x
}
sub1を呼び出します。



func1の戻り値100を表示します。



引数を10倍した値を返します。
互換性   すべての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で同じ動きになります。 

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、シリアルコンソール等に出力されます。) 

locate文
書式 locate x座標, y座標
説明 指定した座標にカーソルを移動します。
locate 10, 10
(10, 10)にカーソルを移動します。
互換性   ORANGE-studioでは未実装です。(デバッグ用にlocate文の引数をコンソールに表示します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。

cls文
書式 cls
cls 式
説明 コンソールをクリアします。
式を指定した場合の振る舞いは、ORANGE-insideの実装に依存します。
cls
コンソールをクリアします。
互換性   ORANGE-studio内ではコンソールウインドウ内の文字を全消去します。
ターゲットボード上では、ORANGE-insideの実装に依存します。

3.キーボード関連

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

ターゲットボード上では、ORANGE-insideの実装に依存します。

inkey関数
書式 inkey()
説明 押されたキーのキーコードを返します。
keyCode = inkey()
押されたキーのキーコードをkeyCodeに代入します。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。

4.タイマー関連

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

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

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

5.メモリー配列関連

mmax関数
書式 mmax()
説明 メモリー配列の大きさをバイト単位で返します。
print mmax()
メモリー配列の大きさを表示します。
互換性   ターゲットボード上では、ORANGE-insideの実装に依存します。メモリー配列が使用できる場合は、mmax()が0より大きい値を返します。

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

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

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

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の実装に依存します。

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の実装に依存します。

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の実装に依存します。

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

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

6.乱数関連

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

7.I/O制御関連

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

出力指示の指定は以下の通りです。
0:Low
1:High
out 2, 1
ポート2をHighにします。
互換性   ORANGE-studioではデジタル出力パネルの状態を更新します。
ターゲットボード上では、ORANGE-insideの実装に依存します。

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の実装に依存します。

in関数
書式 in(式)
説明 式で指定したポート番号の状態を返します。
指定したポートがHighのときに1、Lowのときに0が返ります。
print in(1) ポート1の状態を表示します。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。

adc関数
書式 adc(式)
説明 式で指定したポートの電圧に応じて値を返します。
電圧と値の関係はターゲットボード上のORANGE-insideの実装に依存します。
print adc(1) ポート1の電圧を表示します。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。

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

i2cw関数
書式 i2cw(式1, 式2, 文字列, 式3)
説明 式1で指定したI2Cバスにデータを書き込みます。
式2でスレーブアドレスを7ビットで指定します。(R/Wフラグは0が付加されます。)
書込みデータは文字列で指定します。0を送信したいときは\x00を文字列内に記述します。
式3でストップ指示を指定します。ストップ指示は1でストップコンディションを送出し、0でリピーテッドスタートコンディションを送出します。

成功すると0を返します。
rc = i2cw(1, 0x50, "\x00\x01", 1) I2C1バスのスレーブアドレス0x50に0x00, 0x01を送信します。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。

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

成功すると0を返します。
rc = i2cr(1, 0x68, 7, 1) I2C1バスのスレーブアドレス0x68から7バイト受信します。
互換性   ORANGE-studioでは未実装です。(常に0を返します。)
ターゲットボード上では、ORANGE-insideの実装に依存します。