|
ORANGE BASICの特長
長い変数名が使えますので、わかりやすいプログラムを記述できます。(教育用に最適)
文字列処理が得意です。文字列関数を多数装備しています。
多次元配列を使用できます。
32ビットの整数と単精度の実数が使用可能で、数学関数を多数装備しています。
テキスト画面の他にグラフィック画面を持ち、スプライトやタートルグラフィックスが使用できます。
標準で美咲フォントを搭載していますので、日本語表示が可能です。
標準でEEPROM(64KB)を搭載していますので、プログラムやデータを保存できます。
ビデオ出力に加え、TFT液晶への出力も可能です。
ORANGE pico type D
USB専用キーボードが使用できますので、古いPS/2キーボードは不要です。
USBメモリーが使用できますのでデータ交換も容易です。
オレンジカルタを使用できます。
|
|
|
ソコン |
|
ORANGE BASIC 最新ファーム |
ORANGE BASICの最新ファームはVer 1.07です。
|
ORANGE BASIC コマンド一覧 |
ORANGE BASICのコマンド一覧はこちらです。 |
ORANGE BASIC MML仕様 |
ORANGE BASICのplay文で使用できるMMLの仕様はこちらです。 |
ORANGE pico 仕様 |
ORANGE picoの機種ごとの仕様はこちらです。 |
ORANGE pico ファーム更新方法 |
ファーム更新方法はこちらにあります。 |
ORANGE pico ピン割当てマップ |
ORAGE pico シリーズのピン割当てマップはこちらです。 |
ORANGE pico キャラクター一覧 |
ORANGE picoで用意しているシステムキャラクター一覧はこちらです。 |
よくある質問 |
よくある質問はこちらです。 |
|
ビデオ出力 |
|
家庭用テレビや車載用の液晶モニターに接続することができます。
「ぶれない、にじまない、ちらつかない」を目指しました。
キーボード入力中も画面が乱れたりしないので、快適に使用できます。
|
高速インタプリター |
|
32ビットCPU(48MHz)で動作するインタプリターです。
1万回のループを約1秒で実行します。
昔の8ビットパソコンMZ-2000で同様のベンチマーク結果が26秒だそうです。 |
|
左の写真は、以下のプログラムを実行し、オシロスコープでキャプチャーした画像です。
10 out 1,1
20 out 1,0
30 goto 10
|
|
テキスト画面
グラフィックス画面
スプライト機能 |
|
テキスト画面(40文字×25行)とは別にグラフィック画面(320×200ピクセル)を持ち、
さらに16個のスプライトを重ね合わせて同時表示しています。
100 cls
110 locate 10, 10: print "TEXT"
120 circle 100, 100, 60, 1
130 while 1
140 for i = 1 to 16
150 x = rnd(300)
160 y = rnd(180)
170 pattern = 1000 + rnd(134)
180 sprite i, x, y, pattern, rnd(3)
190 next i
200 wend |
|
タートルグラフィックス |
|
プログラミング入門用にタートルグラフィックスをサポートしています。
|
教育に適したBASIC |
|
ORANGE BASICはTiny BASICではありません。
長い変数名、多次元配列、文字列、実数演算、数多くの関数をサポートしています。 |
★合計値
100 dim a(5) = [1, 3, 10, 2, 8]
110 sum = 0
120 for i = 0 to 4
130 sum = sum + a(i)
140 next
150 print "sum="; sum |
★平均値
100 dim a(5) = [1, 3, 10, 2, 8]
110 sum! = 0
120 for i = 0 to 4
130 sum! = sum! + a(i)
140 next
150 average! = sum! / 5
160 print "average="; average! |
★最大値
100 dim a(5) = [1, 3, 10, 2, 8]
110 max = a(0)
120 for i = 0 to 4
130 if max < a(i) then max = a(i)
140 next
150 print "max="; max |
★データの交換
100 a = 10
110 b = 20
120 t = a
130 a = b
140 b = t
150 print "a="; a; ", b="; b |
|
★リニアサーチ
100 dim a(5) = [10, 3, 1, 4, 2]
110 searchValue = 4
120 findID = -1
130 for i = 0 to 4
140 if a(i) = searchValue then findID = i: break for
150 next
160 print "findID="; findID |
★バイナリーサーチ
100 dim a(5) = [1, 2, 4, 5, 10]
110 searchValue = 4
120 findID = -1
130 left = 0
140 right = 4
150 while left <= right
160 middle = (left + right) / 2
170 if a(middle) = searchValue then findID = middle: break while
180 if a(middle) < searchValue then left = middle + 1 else right = middle
- 1
190 wend
200 print "findID="; findID |
|
(オプション)カラーグラフィックス |
|
オプションのTFT液晶を接続すると、320×240ピクセルのカラー表示も可能です。 |
(オプション)ゲームコントローラー |
ゲームコントローラーの接続にはWiiChukアダプターが必要です。まず、ゲームコントローラーにWiiChukアダプターを下図のような向きで装着します。 |
|
次にWiiChukアダプターとOrange picoを下記のようにジャンパー線で接続します。(ORANGE pico側はピン割り当てマップを参照)
WiiChuk |
ORANGE pico |
- |
GND(CPIUの8番ピンなど) |
+ |
VSS(CPIUの13番ピンなど) |
d |
SDA2(CPUの6番ピン) |
c |
SCL2(CPUの7番ピン) |
|
|
キャラクターを動かすサンプル(ORANGE BASIC Ver 0.91以上が必要) |
100 BUTTON_UP = 1
110 BUTTON_DOWN = 2
120 BUTTON_LEFT = 4
130 BUTTON_RIGHT = 8
140 BUTTON_A = 16
150 BUTTON_B = 32
160 BUTTON_START = 1024
170 BUTTON_SELECT = 2048
180 X_MIN = 0
190 X_MAX = 39
200 Y_MIN = 0
210 Y_MAX = 23
220 cpoke 38, 59
230 cls
240 button(-1)
250 start@
260 locate x, y
270 pX = x
280 pY = y
290 print "&";
300 status = button(0)
310 if status = -1 then print "ERROR": goto end@
320 if status & BUTTON_SELECT then goto end@
330 if status & BUTTON_RIGHT then x = x + 1
340 if status & BUTTON_LEFT then x = x - 1
350 if status & BUTTON_DOWN then y = y + 1
360 if status & BUTTON_UP then y = y - 1
370 if x < X_MIN then x = X_MIN
380 if X_MAX < x then x = X_MAX
390 if y < Y_MIN then y = Y_MIN
400 if Y_MAX < y then y = Y_MAX
410 locate pX, pY
420 print " ";
430 goto start@
440 end@
450 cpoke
|
|
ゲームコントローラーを使ったサンプルゲームです。(ORANGE BASIC Ver 0.91以上が必要)
・ゲームコントローラー必須
・十文字キーで自機移動
・Aボタンでビーム発射(UFOより下にいるときのみ有効)、UFOにヒットすれば+10
・Bボタンで爆弾投下(UFOより上にいるときのみ有効)、UFOにヒットすれば+100
・UFOと衝突、またはUFOが一番下まで侵入するとゲームオーバー
UFO GAME |
|
1000 ' -- UFO GAME --
1010 BUTTON_UP = 1
1020 BUTTON_DOWN = 2
1030 BUTTON_LEFT = 4
1040 BUTTON_RIGHT = 8
1050 BUTTON_A = 16
1060 BUTTON_B = 32
1070 BUTTON_START = 1024
1080 BUTTON_SELECT = 2048
1090 X_MIN = 0
1100 X_MAX = 39
1110 Y_MIN = 1
1120 Y_MAX = 23
1130 PLAYER = 241
1140 UFO = 242
1150 BEAM = 243
1160 EXPLOSION = 244
1170 BOMB = 245
1180 cpoke PLAYER, 31
1190 cpoke UFO, 6
1200 cpoke BEAM, 93
1210 cpoke EXPLOSION, 23
1220 cpoke BOMB, 29
1230 cls
1240 button(-1)
1250 x = 19: y = 23
1260 ' --------------------
1270 start@
1280 locate 0, 0: print "SCORE ";: print score
1290 status = button(0)
1300 gosub movePlayer@
1310 gosub moveUFO@
1320 if status & BUTTON_A then gosub beam@
1330 if status & BUTTON_B then gosub bomb@
1340 if yUFO = Y_MAX then goto finish@
1350 if x = xUFO and y = yUFO then goto finish@
1360 pause 50
1370 goto start@
1380 ' --------------------
1390 finish@
1400 beep 10, 1000
1410 locate xUFO, yUFO: print chr$(EXPLOSION);
1420 beep 30, 1000
1430 ' --------------------
1440 end@
1450 print: print "GAME OVER - SCORE ";: print score
1460 cpoke: end
|
1470 ' --------------------
1480 beam@
1490 if y <= yUFO then return
1500 xBeam = x
1510 for yBeam = y - 1 to yUFO step -1
1520 locate xBeam, yBeam: print chr$(BEAM);
1530 pause 10
1540 locate xBeam, yBeam: print " ";
1550 next
1560 if xBeam <> xUFO then return
1570 beep 10, 100
1580 locate xUFO, yUFO: print chr$(EXPLOSION);
1590 score = score + 10
1600 pause 1000: beep 30, 100
1610 locate xUFO, yUFO: print " ";
1620 xUFO = rnd(X_MAX + 1)
1630 return
1640 ' --------------------
1650 movePlayer@
1660 locate x, y: print " ";
1670 if status & BUTTON_RIGHT and x < X_MAX then x = x + 1
1680 if status & BUTTON_LEFT and X_MIN < x then x = x - 1
1690 if status & BUTTON_DOWN and y < Y_MAX then y = y + 1
1700 if status & BUTTON_UP and Y_MIN < y then y = y - 1
1710 locate x, y: print chr$(PLAYER);
1720 return
1730 ' --------------------
1740 moveUFO@
1750 locate xUFO, yUFO: print " ";
1760 xUFO = xUFO + rnd(5) - 2
1770 if xUFO < X_MIN then xUFO = X_MIN
1780 if X_MAX < xUFO then xUFO = X_MAX
1790 yUFO = yUFO + rnd(5) - 2
1800 if yUFO < Y_MIN then yUFO = Y_MIN
1810 if Y_MAX < yUFO then yUFO = Y_MAX
1820 locate xUFO, yUFO: print chr$(UFO);
1830 return
1840 ' --------------------
1850 bomb@
1860 if yUFO <= y then return
1870 xBomb = x
1880 for yBomb = y + 1 to yUFO
1890 locate xBomb, yBomb: print chr$(BOMB);
1900 pause 20
1910 locate xBomb, yBomb: print " ";
1920 next
1930 if xBomb <> xUFO then return
1940 beep 10, 100
1950 locate xUFO, yUFO: print chr$(EXPLOSION);
1960 score = score + 100
1970 pause 1000: beep 30, 100
1980 locate xUFO, yUFO: print " ";
1990 return
|
|
(オプション)サーマルプリンター |
|
ナダ電子製AS-289R2プリンタシールドに対応しています。
シリアル接続で、最大2台まで接続できます。
プリンターとは2本の線で接続するだけです。
ORANGE BASICが起動したら、LPT 1と入力するだけで
BASICからあの懐かしいLPRINT、LLIST、COPYが使えるようになります。
LPTコマンドの最初のパラメーターはシリアル通信のチャネル番号、
2番目のパラメーターがボーレートです。
ボーレートは省略すると9600になります。
38400を指定することもできます。
lprintの文字列パラメーターにformat$関数(C言語のprintf書式相当)を使用すると、
アプリ作成も容易です。
また、文字列に\x??形式の16進数を含めることができますので、
バイナリー送信が可能でバーコードやQRコードの印字も可能です。
|
|
100 lpt 2
110 cls
120 locate 0, 20: print "TEST"
130 copy 1
140 circle 100, 100, 50, &hffff
150 copy 2
160 lprint format$("[%020d]", 123456789)
170 lprint format$("[%20x]", 100)
180 lprint format$("[%20s]", "This is a story.")
190 lprint "\x1d\x78\x4c\x04\x54\x45\x53\x54\x0d\x0d"
200 lprint "\x1d\x6b20123456789012\x00"
210 llist
220 for i = 1 to 10
230 lprint
240 next |
|
|
|
|
|
|
動作確認済みキーボード(黒字は当社で確認済み、赤字はユーザー様からのご報告によるものです。) |
FILCO |
FKBN91M/NFB2 |
aitendo |
MI-UKB-B |
ELECOM |
TK-FCM077Pシリーズ |
ELECOM |
TK-FCM006シリーズ |
ELECOM |
TK-UP87MPシリーズ |
ELECOM |
TK-FCM005シリーズ |
ELECOM |
TK-P89MPシリーズ |
ELECOM |
TK-UP01MAシリーズ |
ELECOM |
TK-FCM007シリーズ |
ELECOM |
TK-U12FYAシリーズ |
SANWA SUPPLY |
SKB-SL10シリーズ |
BUFFALO |
BSKBU02シリーズ |
BUFFALO |
BSKBC02BK |
AOTECH |
AOK-89UPシリーズ |
EzKEY |
IKE-101W/B |
Logicool |
Y-BP62A |
|
|
|
|
|
ORANGE pico Series Personal Computer |
機種 |
特徴 |
価格 |
基板サイズ |
回路図 |
部品表/組立手順 |
ピン配置 |
ORANGE pico type A
|
ORANGE pico Seriesの標準機種です。
超入門書「初めてのオレンジベーシック」は
ORANGE pico type Aを教材として使用しています。
BASICや電子工作の学習におすすめです。
教育用にご活用ください。
|
|
95×72mm |
回路図 |
部品表/組立手順 |
ピン配置 |
ORANGE pico type C
|
ORANGE pico type Cはtype Eからレギュレーターを省略し、さらに小型化し、
価格も1,000円を実現しました。
運用時は3.3Vが必要です。
小さくてもソフトはtype Aと共通ですので、抵抗とコネクタ類を追加すれば、
テレビやキーボードも接続可能です。
|
|
50×40mm |
回路図 |
部品表/組立手順 |
ピン配置 |
ORANGE pico Video Shield
|
ORANGE pico type C専用ビデオシールドです。
|
|
50×40mm |
回路図 |
部品表/組立手順 |
|
ORANGE pico type E
|
ORANGE pico type Eは組込用にtype Sから
ビデオ出力とキーボード接続を省略しました。
開発時は、PCとシリアルケーブルで接続し、
運用時は5V電源のみを供給することを想定しています。
また、運用時もオプションのTFTカラー液晶モジュールを接続することで
画面出力可能となります。
2.2インチTFT液晶モジュールとぴったり重ね合わせることができます。
(4隅のホール位置、JP3の位置が合うようになっています。) |
|
69×42mm |
回路図 |
部品表/組立手順 |
ピン配置 |
ORANGE pico type S
|
ORANGE pico type Sはtype AからPS/2キーボード端子、
サウンド出力端子、microUSB電源端子を省略しさらに低価格を実現しました。
キーボードは上記の動作確認済みのものをUSB端子に接続することができます。
(専用アダプター使用でPS/2専用キーボードも使用できます。)
BASICの学習におすすめです。
低価格なので講習会等にご活用ください。
|
|
72×47mm |
回路図 |
部品表/組立手順 |
ピン配置 |
|
|
|
|
|