1. 定数リファレンス
「Tiny BASIC for Arduino STM32」ではプログラム内に定数の記述が可能です。
定数はコマンドの引数や式の中で数値関数と同等に利用出来ます。
1.1. HIGH,LOW
1ビット入出力値 HIGH、LOW
デジタル入出力のロジックレベルを表す定数です。
値は次の通りです。
定数 | 値 | 概要 |
---|---|---|
|
0 |
0V、ロジック LOW |
|
1 |
3.3V、ロジック HIGH |
1.3. メモリ領域
VRAM、VAR、ARRAY、PRG、MEM、FNT、GRAM 、PRG2
データ領域を参照するための定数です。
各定数の詳細は次の通りです。
定数名 | 値 | 領域サイズ | 用途 |
---|---|---|---|
|
$0000 |
(可変) |
スクリーン表示用メモリ(CW×CH) |
|
$1900 |
440 |
変数領域(A~Z, A0~Z6)+ 4バイト |
|
$1AA0 |
200 |
配列変数領域(@(0)~@(99) ) |
|
$1BA0 |
4,096 |
プログラム領域 |
|
$2BA0 |
1,024 |
ユーザーワーク領域 |
|
$2FA0 |
2,048 |
フォント256文字(フラッシュメモリ) |
|
$37A0 |
(最大) |
グラフィック表示用メモリ |
|
$4F40 |
4,096 |
バンク指定プログラム領域(フラッシュメモリ) |
定数値のアドレスは仮想的なアドレスです。実アドレスとは異なります。
BITMAP、BLOAD、BSAVE、FERITE、GETS、I2CR、I2CW、KFONT、
LDBMP、PEEK、POKE等の仮想メモリ領域を利用するコマンドで利用できます。
1.4. CW,CH,GW,GH
画面サイズの定数 CW、CH、GW、GH
画面サイズを参照する定数です。
定数の値は、利用するデバイス画面、画面関連の設定により異なります。
定数 | 概要 |
---|---|
|
キャラクタ画面の横文字数 |
|
キャラクタ画面の縦行数 |
|
グラフィック画面の横ドット数 |
|
グラフィック画面の縦ドット数 |
1.5. 方向を示す定数
方向を示す定数 UP、DOWN、RIGHT、LEFT
定数 | 値 |
---|---|
|
0 |
|
1 |
|
2 |
|
3 |
1.6. ピン番号定数
PA n、PB n 、 PC n (nは数値)
各ピン番号定数に実際のピン番号0 ~ 34が割り当てられています。
PA0、 PA1、 PA2、 PA3、 PA4、 PA5、 PA6、 PA7、 PA8
PA9、 PA10、 PA11、 PA12、 PA13、 PA14、 PA15
PB0、 PB1、 PB2、 PB3、 PB4、 PB5、 PB6、 PB7、 PB8
PB9、 PB10、 PB11、 PB12、 PB13、 PB14、 PB15
PC13、PC14、 PC15
ピン番号定数と値の対応は次の通りです。
PA0 ~ PA15 :0 ~ 15 に対応
PB0 ~ PB15 :16 ~ 31 に対応
PC13 ~ PC15 :32 ~ 34 に対応
1.7. GPIOモード
OUTPUT、OUTPUT_OD、INPUT_FL、 INPUT_PU、INPUT_PD、ANALOG、PWM
GPIO コマンドのモード設定を行うための定数です。
定数 | 値 | 概要 |
---|---|---|
|
0 |
デジタル出力 |
|
1 |
デジタル出力(オープンドレイン) |
|
2 |
デジタル入力(フロート状態:ArduinoのINPUT指定と同じ) |
|
3 |
アナログ入力 |
|
4 |
デジタル入力(内部プルアップ抵抗有効) |
|
5 |
デジタル(内部プルダウン抵抗有効) |
|
7 |
PWM出力 |
2. コマンド概要
2.1. 制御命令
プログラムは通常、先頭行から行番号順に実行されます。
ここに示す制御命令を用いることでプログラムの実行の条件分岐、繰り返し、終了の制御を行うことが出来ます。
以下に制御命令の一覧を示します。
制御命令・書式 | 概要 |
---|---|
プログラムの終了 |
|
処理の繰り返し |
|
サブルーチンの呼び出し |
|
指定行にジャンプ |
|
条件判定を行う |
|
サブルーチンからの復帰 |
各制御命令の詳細についれは、それぞれの命令文のコマンドリファレンスを参照してください。
2.2. システム
システムに関する操作を行うコマンドです。
以下にコマンド・関数の一覧を示します。
コマンド・書式 | 概要 |
---|---|
|
PRG2参照領域バンク切り替え |
|
システム環境設定 |
|
プログラム保存領域へのデータ書き込み |
システム環境設定の保存 |
|
システム情報の表示 |
2.3. プログラム管理
プログラムの作成、編集、保存、読み込み、環境設定に関連するコマンドです。
以下に制御命令の一覧を示します。
コマンド・書式 | 概要 |
---|---|
変数領域の初期化 |
|
|
コンソール画面切替 |
プログラムの指定行削除 |
|
フラッシュメモリのプログラム削除 |
|
フラッシュメモリ内プログラムのエクスポート |
|
|
プログラム一覧表示 |
プログラム領域残量取得 |
|
プログラムリストの表示 |
|
プログラムの読み込み |
|
|
指定プログラム番号の実行 |
プログラムの消去 |
|
コメント |
|
行番号の振り直し |
|
プログラムの実行 |
|
プログラムの保存 |
|
|
シリアルコンソール画面サイズ設定 |
各制御命令の詳細についれは、それぞれの命令文のコマンドリファレンスを参照してください。
2.4. テキスト画面入出力
スクリーン画面へのテキスト表示、入力、表示制御を行うコマンド及び関数です。
以下にコマンド・関数の一覧を示します。
コマンド・書式 | 概要 |
---|---|
|
文字表示属性の設定 |
画面表示内容の全消去 |
|
文字色の設定 |
|
|
文字列の入力 |
|
入力文字コード取得 |
|
数値の入力 |
|
カーソルの移動 |
|
文字列表示 |
画面表示の再表示 |
|
|
指定位置の文字コード参照 |
2.5. 数値・文字列操作
スクリーン画面へのテキスト表示、入力、表示制御を行うコマンド及び関数です。
以下にコマンド・関数の一覧を示します。
関数・書式 | 概要 |
---|---|
|
絶対値の取得 |
文字コード変換 |
|
整数の2進数文字列変換 |
|
文字列のバイト数の取得 |
|
文字コードから文字への変換 |
|
整数小数付き文字列変換 |
|
数値の16進数文字列変換 |
|
文字列の長さの取得 |
|
|
変数への値代入 |
|
数値のスケール変換 |
|
乱数の発生 |
文字列参照・文字列の切り出し |
|
|
文字列の比較 |
2.6. 仮想メモリー参照
仮想メモリの参照、書き込みを行うコマンド・関数です。
以下にコマンド・関数の一覧を示します。
コマンド・書式 | 概要 |
---|---|
|
指定アドレスの値参照 |
指定アドレスへのデータ書き込み |
2.7. 時間
時間、経過時間関連のコマンド・関数です。
以下にコマンド・関数の一覧を示します。
コマンド・書式 | 概要 |
---|---|
経過時間カウントのリセット |
|
現在時刻の表示 |
|
|
日付の取得 |
|
時刻の取得 |
|
時刻の設定 |
経過時間取得 |
|
|
時間待ち |
2.8. GPIO I/O入出力
GPIOポートを使った入出力を行うためのコマンド・関数です。
以下にコマンド・関数の一覧を示します。
コマンド・書式 | 概要 |
---|---|
|
アナログ入力 |
|
GPIO機能設定 |
|
I2Cバス速度設定 |
|
I2Cデータ受信 |
|
I2Cデータ送信 |
|
デジタル入力 |
|
デジタル出力 |
PWM出力 |
|
|
入力パルス幅の計測力 |
|
シリアルシフト入力 |
|
シリアルシフト出力 |
2.9. サウンド
サウンド出力を行うためのコマンド・関数です。
以下にコマンド・関数の一覧を示します。
コマンド・書式 | 概要 |
---|---|
単音出力停止 |
|
|
音楽演奏(MML文) |
|
音楽演奏のテンポの設定 |
単音出力 |
2.10. ファイル操作
SDカードのファイルを操作するコマンド・関数です。
以下にコマンド・関数の一覧を示します。
コマンド・書式 | 概要 |
---|---|
|
SDカードからバイナリデータ読込 |
|
SDカードへのバイナリデータ保存 |
|
ビットマップファイルの読み込み |
|
ファイルの内容表示 |
|
ファイルの削除 |
|
ディレクトリの作成 |
|
ディレクトリの削除 |
2.11. グラフィック表示
グラフィック・デバイス画面表示関連のコマンド・関数です。
以下にコマンド・関数の一覧を示します。
コマンド・書式 | 概要 |
---|---|
|
ビットマップ画像の描画 |
|
円の描画 |
|
キャラクタ画面スクロール |
|
BMPファイルの表示 |
グラフィックデバイス画面のクリア |
|
グラフィック文字描画の前景色、背景色の設定 |
|
|
指定領域内ピクセル検出(数値関数) |
|
画面上の指定位置ピクセルの参照(数値関数) |
|
文字列の描画 |
|
グラフィックスクロール |
|
直線の描画 |
|
点の描画 |
|
矩形の描画 |
|
3原色からRGBコード変換(数値関数) |
|
スクリーンモードの設定 |
2.12. シリアル通信
シリアル通信関連のコマンド・関数です。
以下にコマンド・関数の一覧を示します。
コマンド・書式 | 概要 |
---|---|
シリアルポート機能設定 |
|
|
シリアル通信オープン |
|
シリアル通信クローズ |
|
シリアル通信文字列出力 |
|
シリアル通信1バイト受信(数値関数) |
|
シリアル通信データ受信確認(数値関数) |
|
シリアル通信1バイト出力 |
3. コマンド詳細
3.1. 制御命令
3.1.1. GOTO
指定行にジャンプ
【引数】
- 行番号
-
ジャンプ先の行番号 数値(1 ~ 32767) または 式
- "ラベル"
-
ジャンプ先のラベル "文字列"の形式
【説明】
プログラムの実行を行番号、"ラベル"で指定した行にジャンプします。
行番号には数値、式(変数、関数を含む)が利用可能です。
ラベルを指定した場合、行先頭に同じラベルがある行にジャンプします。
ラベルはダブルクオテーション( " )で囲って指定します。
10 I=0 20 "LOOP" 30 PRINT "@" 40 I=I+1:IF I=5 GOTO 60 50 GOTO "LOOP" 60 END
上記の例では、40行の GOTO で60行にジャンプ、50行のラベル指定で20行にジャンプしています。
ラベルを使うとプログラムの流れがわかりやすくなります。
ラベルは必ず行の先頭に記述してください。行に先頭にない場合は、ラベルとして認識されません。
10 GOTO "hoge" 20 END 30 ? "Hello":"hoge":?"test" run Undefined line number or label in 10 10 GOTO "hoge" OK
上記の例では、30行の真ん中にラベルをつけているのでエラーとなります。
行番号には式や変数の指定が可能です。
ただしその場合は、 RENUM コマンドよる行番号付け替えに対応出来ない場合があります。
GOTO N*100+500 (1) GOTO 500+N*100+500 (2)
(1)では RENUM コマンドは何もしません。
(2)は500を号番号とみなして更新します。
ただし(1)(2)とも計算結果が正しい行番号となることは保証出来ません。
ご注意下さい。
【エラーメッセージ】
- Undefined line number or label
-
指定した行、ラベルが存在しない
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- Syntax error
-
文法エラー、書式と異なる利用を行った
【利用例】
100 GOSUB "SUB01" 110 GOSUB "SUB02" 120 N=0 130 "LOOP" 140 PRINT "N=";N 150 N=N+1:IF N<5 GOTO "LOOP" 160 END 170 "SUB01" 180 PRINT "SUB01" 190 RETURN 200 "SUB02" 210 PRINT "SUB02" 220 RETURN
3.1.2. GOSUB
サブルーチンの呼び出し
【引数】
- 行番号
-
ジャンプ先の行番号 数値(1 ~ 32767) または 式
- "ラベル"
-
ジャンプ先のラベル "文字列"の形式
【説明】
プログラムの実行を一旦、行番号またはラベルで指定した行に移ります。
移った先で RETURN 命令により、呼び出した GOSUB 命令の次の位置に戻ります。
行番号には数値、式(変数、関数を含む)が利用できます。
ラベルを指定した場合は、行先頭に同じラベルがある行に移ります。
ラベルはダブルクオテーション`"`で囲って指定します。
10 GOSUB "PRN_LOGO" 20 GOSUB "PRN_DATE" 30 GOSUB 200 40 END 50 "PRN_LOGO" 60 PRINT "Tiny BASIC for Arduino STM32" 70 RETURN 80 "PRN_DATE" 90 PRINT "Edition V0.84 2017/08/01" 100 RETURN 200 PRINT "Ready" 210 RETURN
上記の例では、10行、20行でラベルを指定してサブルーチンを呼び出しています。
30行では、行番号を指定してサブルーチンを呼び出しています。
ラベルを使うことで、プログラムの実行がわかりやすくなります。
行の先頭に無いラベルは、GOSUB 文の呼び出し先としての参照はされません。
10 GOSUB "hoge" 20 END 30 ? "Hello":"hoge":?"test":RETURN run Undefined line number or label in 10 10 GOSUB "hoge" OK
行番号には式や変数の指定が可能ですが、 RENUM コマンドよる行番号付け替えに対応出来ない場合があります。
GOSUB N*100+500 (1) GOSUB 500+N*100+500 (2)
(1)では RENUM コマンドは何もしません。
(2)は500を行番号とみなして更新します。
ただし(1)(2)とも計算結果が正しい行番号となることは保証出来ません。ご注意下さい。
【エラーメッセージ】
- Undefined line number or label
-
指定した行、ラベルが存在しない
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- GOSUB too many nested
-
GOSUBのネスト数が規定(=10)を超えた
- Syntax error
-
文法エラー、書式と異なる利用を行った
【利用例】
100 GOSUB "SUB01" 110 GOSUB "SUB02" 120 N=0 130 "LOOP" 140 PRINT "N=";N 150 N=N+1:IF N<5 GOTO "LOOP" 160 END 170 "SUB01":PRINT "SUB01":RETURN 200 "SUB02":PRINT "SUB02":RETURN
3.1.3. RETURN
サブルーチンからの復帰
【書式】
【引数】
なし
【エラーメッセージ】
- Undefined line number or label
-
指定した行、ラベルが存在しない
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- RETURN stack underflow
-
GOSUBの呼び出しがないのにRETURNを実行
- Syntax error
-
文法エラー、書式と異なる利用を行った
【利用例】
100 GOSUB "SUB01" 110 GOSUB "SUB02" 120 N=0 130 "LOOP" 140 PRINT "N=";N 150 N=N+1:IF N<5 GOTO "LOOP" 160 END 170 "SUB01" 180 PRINT "SUB01" 190 RETURN 200 "SUB02" 210 PRINT "SUB02" 220 RETURN
3.1.4. IF
条件判定を行う
【引数】
- 条件式
-
定数、数値、式
- 真の場合の実行文
-
条件式の計算結果が真(0以外)の場合に実行される命令文
命令文は`:`を使って複数記述することが可能 - 偽の場合の実行文
-
条件式の計算結果が偽(0)の場合に実行される命令文
命令文は`:`を使って複数記述することが可能
【説明】
条件式の真偽判定を行い、真の場合は 真の場合の実行文 を実行します。
条件式が偽の場合、ELSE がある場合は 偽の場合の実行文 を実行します。
真偽は次の条件となります。
-
真:評価した値が0以外である
偽:評価した値が0である
真偽判定を行う条件式には定数、数値、関数を含む式が記述できます。
-
IF A > 5 B=B-1
-
IF A+1 PRINT A
-
IF A & 1 TONE 440,200
-
IF INKEY() = ASC("A") GOTO 100
-
IF HIGH GOTO 100
-
IF 123 PRINT "123"
-
IF RND(1) X=X+1
実行文には、`:`を使って複数のコマンドを記述することが可能です。 .例
10 INPUT "年齢=",N 20 IF (N<0) OR (N>120) PRINT "bad value":GOTO 10 30 PRINT "年齢:";N
上記のプログラムでは、入力した年齢の範囲をチェックし、
不当な値である場合は、再入力を行います。+
20行の真の場合に実行される命令文では PRINT 、GOTO が逐次実行されます。
実行文には IF 、GOTO 、GOSUB 等の制御命令を使うことも可能です。
注意
|
ELSE 利用の制約(ぶら下がり ELSE に関する補足) IF 文をネストして利用した場合、ELSE 文は直前の IF 文に対応します。 例: IF A=1 IF B=1 ? "A,B=1" ELSE ? "A=1,B<>1" 上記の ELSE は2番目の IF 文に対応します。 この「 ELSE 文は直前の IF 文に対応」の条件で、ELSE 文に IF 文をネスト出来ます。 例: IF A=1 IF B=1 ? "A,B=1" ELSE IF B=2 ? "A=1,B=2" ELSE IF B=3 ?"A=1,B=3" 上記では、A=1,B=1,2,3の条件に対して対応する表示メッセージを表示する例です。 |
【エラーメッセージ】
- IF without condition
-
条件式が定義されていない
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
yを押したら、"Y key" を表示して終了、その他のキーなら"End" を表示して終了する 何も押されていなければ10行から30行をループする。
10 A=INKEY() 20 IF A=ASC("y") PRINT "Y key":END ELSE IF A<>0 PRINT "End":END 30 GOTO 10
3.1.5. FOR TO NEXT
処理の繰り返し
【引数】
- 変数
-
変数A~Z、An~Zn(nは0~6) または 配列変数@(0) ~@(99)
- 初期値
-
変数の初期値:数値(-32768 ~ 32767)、定数 または 式
- 最終値
-
変数の最終値:数値(-32768 ~ 32767)、定数 または 式
- 増分
-
変数の増分:数値(-32768 ~ 32767)、定数 または 式
省略時は 1 - 繰り返し実行文(複数行可能)
-
繰り返し実行する命令文
【説明】
変数には初期値がセットされ、一回の繰り返し毎に、増分を加算します。
加算された変数が最終値またはそれ以上の値になった時点で繰り返し処理を終了し、NEXTの次の命令の実行に移ります。
10 PRINT "start." 20 FOR I=0 TO 5 STEP 2 30 PRINT I 40 NEXT I 50 PRINT "done." 実行結果 start 0 2 4 done. ok
上記の例ではIを0から5まで、2ずつ増加して30行の命令を繰り返し実行します。 Iが4の時、増分2を足すと終了値5を超えた6となるので繰り返しを終了し、50行を実行します。
FOR ~ NEXT の繰り返しは、利用している変数が繰り返し条件を満たさなくなった時点で繰り返しを終了します。
例1 に`35 I=6`を追加した 例2 では、ループ内で条件を満たさなくすることでループを抜けることが出来ます。
10 PRINT "start." 20 FOR I=0 TO 5 STEP 2 30 PRINT I 35 I=6 40 NEXT I 50 PRINT "done." 実行結果 start 0 done. ok
10 FOR I0=0 TO 1 20 FOR I1=0 TO 1 30 FOR I2=0 TO 1 40 FOR I3=0 TO 1 50 FOR I4=0 TO 1 60 FOR I5=0 TO 1 70 FOR I6=0 TO 1 80 FOR J0=0 TO 1 90 FOR J1=0 TO 1 100 FOR J2=0 TO 1 110 ?#2,I0,I1,I2,I3,I4,I5,I6,J0,J1,J2 120 NEXT J2 130 NEXT J1 140 NEXT J0 150 NEXT I6 160 NEXT I5 170 NEXT I4 180 NEXT I3 190 NEXT I2 200 NEXT I1 210 NEXT I0
run 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 <中略> 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- FOR without variable
-
FOR文で変数を指定していない
- FOR without TO
-
FOR文でTOを指定していない
- NEXT without counter
-
NEXTに対応するFOR文が無い
- FOR too many nested
-
FOR文のネスト数が規定数(=10)を超えた
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 CLS 20 FOR Y=5 TO 10 30 FOR X=5 TO 10 40 LOCATE X,Y:PRINT "*" 50 NEXT X 60 NEXT Y
3.1.6. END
プログラムの終了
【書式】
【引数】
なし
【説明】
プログラムの実行を終了します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
【利用例】
10 I=0 20 PRINT I 30 IF I=5 END 40 GOTO 20
3.2. システム
3.2.1. BANK
PRG2参照領域バンク切り替え
【書式】
BANK プログラム番号
【引数】
- プログラム番号
-
参照対象のプログラム番号: 0~5
【説明】
内部フラッシュメモリのプログラム保存領域 0~5の領域のうちの
プログラム番号 で指定した領域(4096バイト)を仮想アドレスにて参照可能な
領域:PRG2 (領域サイズ 4096バイト)にマッピングします。
すなわち、BANK にてプログラム番号を指定することで、
フラッシュメモリのプログラム保存領域にアクセスすることが出来ます。
下記の図は、BANK 4
を実行した例です。

BANK 5 OK EARSE 5 OK FWIRE PRG2,123 OK ?PEEK(PRG2) 123 OK
BANK 0 OK BSAVE "PRG00.BIN",PRG2,4096 OK BANK 5 OK EARSE 5 OK BLOAD "PRG00.BIN",PRG2,4096 OK
プログラム領域への直接書き込みを行う際は、操作ミス等により
削除すべきでないプログラムを消去してしまう可能性がありますので、ご注意願います。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- Illegal value
-
プログラム番号の指定が正しくない
【利用例】
フラッシュメモリ内の保存プログラムをSDカードに退避する
10 FOR I=0 TO 5 20 BANK I 30 BSAVE "PRG";I;".BIN",PRG2,4096 40 NEXT I
上位の退避したプログラムをロードする
10 FOR I=0 TO 5 20 BANK I 30 ERASE I 40 BLOAD "PRG";I;".BIN",PRG2,4096 50 NEXT I
3.2.2. CONFIG
システム環境設定
【書式】
CONFIG 項目番号, 設定値 [,設定値2, 設定値3]
【引数】
- 項目番号
-
0 ~ 2 設定値;; 選択した項目の設定値(項目により設定値の条件は異なる)
- 設定値2
-
選択した項目の設定値(項目により設定値の条件は異なる)
- 設定値3
-
選択した項目の設定値(項目により設定値の条件は異なる)
【説明】
項目で指定した機器の設定を行います。
項目と書式 | 説明 |
---|---|
|
NTSCの信号の補正値を設定します。 画面が縦にスクロールする場合は、 |
|
利用するキーボードのレイアウト設定を行います。 |
|
電源ON後に自動起動するプログラムを指定します。 |
設定はコマンド実行後、直ちに反映されます。本設定は電源を落とすまで有効です。
次回以降の起動にも適用したい場合は、SAVECONFIG コマンドで保存して下さい。
注意
|
初めてボードに書き込みを行う場合、SAVECONFIG コマンドで書き込めない場合があります。その場合は、EEPFORMAT コマンドにて保存領域の初期化を行って下さい。 |
【エラーメッセージ】
- Syntax error
-
書式と異なる利用を行った、プログラム番号に変数、式を指定した
- Illegal value
-
指定した項目番号、設定値が正しくない。
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
CONFIG 1,1 OK SAVECONFIG OK
3.2.3. FWRITE
プログラム保存領域へのデータ書き込み
【書式】
FWRITE アドレス, データ
【引数】
【説明】
プログラム保存領域(指定した仮想アドレス)に2バイトデータを書き込みます。
書き込み対象のプログラム保存領域は、BANKコマンドにて、切り替えることが出来ます。
書き込みを行うには、事前にERASEコマンドで対象のプログラム保存領域を消去しておく必要があります。
仮想アドレスは必ず偶数アドレスを指定しなければなりません。
書き込み先の仮想アドレスの指定には定数 PRG2の利用を推奨します。
注意
|
プログラム保存領域にデータを書き込んだ場合、FILEコマンドのでのプログラム一覧の表示を正しく行うことが出来なくなります。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Bad address
-
指定したアドレスが正しくない
【利用例】
BANK 5 OK EARSE 5 OK FWIRE PRG2,123 OK ?PEEK(PRG2) 123 OK
3.2.4. SAVECONFIG
システム環境設定の保存
【書式】
【引数】
なし
【説明】
CONFIG コマンドの設定内容をフラッシュメモリに保存します。
次回以降の起動でも設定を有効にします。
フラッシュメモリの利用状況により、保存に失敗する場合があります。
その場合は、フラッシュメモリの初期化を EEPFORMAT にて行って下さい。
【エラーメッセージ】
- Syntax error
-
書式と異なる利用を行った、プログラム番号に変数、式を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
CONFIG 1,1 OK SAVECONFIG OK
3.2.5. SYSINFO
システム情報の表示
【書式】
【引数】
なし
【説明】
システム情報を表示します。
スタックアドレス、ヒープアドレス、SRAM未使用サイズ、キーワード数を表示します。
本コマンドは、「Tiny BASIC for Arduino STM32」のプログラム本体を拡張・改造した際の、リソース残量を把握するために利用します。
【エラーメッセージ】
-
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
【利用例】
sysinfo Stack Top:20004F87 Heap Top :20004AB8 SRAM Free:1231 symbol Num:216 OK
3.3. プログラム管理
3.3.1. CLV
変数領域の初期化
【書式】
【引数】
なし
【説明】
変数領域(変数、配列)の初期化を行います。
変数A~Z、A0~Z6、配列@(0)~@(99)はすべて0に初期化されます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
a=123 OK ?a 123 OK CLV OK ?a 0 OK
3.3.2. CONSOLE
コンソール画面切替
【書式】
CONSOLE モード
【引数】
- モード
-
0 ~ 1 の整数 または 定数 OFF、ON
モード | 機能 | 説明 |
---|---|---|
|
デバイスコンソール |
コンソール画面をデバイス画面に切り替えます。 |
|
シリアルコンソール |
コンソール画面をシリアルターミナル画面に切り替えます。 |
【説明】
コンソール画面の切替を行います。
モードの指定で、デバイスコンソールを指定した場合、利用している表示デバイス(NTSC、OLED、TFT)がコンソール画面となります。
シリアルコンソールを指定した場合、USBシリアルまたはシリアルポート接続のシリアルターミナルがコンソール画面となります。
シリアルコンソールでは、パソコン上のターミナルソフトにてスクリーン編集を行うことが出来ます。デフォルトでは2つのシリアルポート(USBシリアル、シリアル端子PA9、PA10)のうち、USBシリアルがスクリーン編集用として機能します。
シリアルポートをスクリーン編集用に利用する場合は、SMODE コマンドを使うことで、利用することが出来ます。
-
例 : シリアルコンソールをシリアルポートに切り替える
SMODE 1,"115200"
注意
|
シリアルコンソールに切り替えた場合、PS/2キーボードを利用することは出来ません。 パソコン等のシリアルコンソール無しでの利用環境での切り替えにおいてはご注意下さい。 |
シリアルコンソールを利用している状態で SCREEN コマンドを実行した場合、デバイスコンソールに切り替わり、指定したスクリーンモードの設定が反映されます。 シリアルコンソールからデバイスコンソールに切り替えた場合、スクリーンモードはデフォルトの設定となります。
【補足】
- 起動直後のモードについて
-
デフォルトではモード:0(デバイスコンソール)となります(コンソール版を除く) 。
ただし、次の設定を行うことでモード:1(シリアルコンソール)に切り替えることが出来ます。 -
- 設定
-
ボート上の BOOT1 のジャンパーピンを1にセットして起動する
-
さらに、上記の設定と併用して、
SWCLK( PA14 )ピンをHIGH(VCC接続)の場合、USBシリアルではなくシリアルポート(PA9、PA10)をシリアルコンソール画面として利用することが出来ます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
- Illegal value
-
指定した引数の値が範囲外である
- Overflow
-
指定した数値が-32767 ~ 32767を超えている
【利用例】
コンソール画面をシリアルコンソールに切り替える
CONSOLE ON
3.3.3. DELETE
プログラムの指定行削除
【引数】
- 行番号
-
削除対象の行番号: 1~32767
- 先頭行番号
-
削除対象範囲の先頭番号: 1~32767
- 末尾行番号
-
削除対象範囲の末尾番号: 1~32767
【説明】
プログラム内の指定した行、指定した範囲(先頭行番号、末尾行番号)の行を削除します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- Illegal value
-
先頭番号と末尾番号の指定に矛盾がある
【利用例】
プログラム内の20行から50行の範囲を削除する
10 ? "AAAAAA" 20 ? "BBBBBB" 30 ? "CCCCCC" 40 ? "DDDDDD" 50 ? "EEEEEE" 60 ? "FFFFFF" 70 ? "GGGGGG" DELETE 20,50 OK LIST 10 ? "AAAAAA" 60 ? "FFFFFF" 70 ? "GGGGGG" OK
3.3.4. ERASE
フラッシュメモリのプログラム削除
【引数】
- プログラム番号
-
削除対象のプログラム番号: 0 ~ 5
- 開始プログラム番号
-
削除範囲の開始プログラム番号:0 ~ 5
- 終了プログラム番号
-
削除範囲の終了プログラム番号: 0 ~ 5
【説明】
マイコン内のフラッシュメモリに保存されているプログラム(プログラム番号0~5)の削除を行います。
削除対象プログラムは、コマンド引数にてプログラム番号を指定するか、
削除するプログラム番号の範囲(開始プログラム番号、終了プログラム番号)を指定します。
【エラーメッセージ】
- Syntax error
-
書式と異なる利用を行った、プログラム番号に変数、式を指定した
- Illegal value
-
プログラム番号の指定が0~5の範囲外である
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
ERASE 0,5 OK FILES 0:(none) 1:(none) 2:(none) 3:(none) 4:(none) 5:(none) OK
3.3.5. EXPORT
フラッシュメモリ内プログラムのエクスポート
【引数】
- 対象番号
-
エクスポートするプログラム保存番号: 0 ~ 5
- 開始番号,終了番号
-
エクスポートするプログラム保存番号の範囲: 0 ~ 5
【説明】
マイコン内のフラッシュメモリに保存されているプログラム(プログラム番号0~5)を出力表示します。
ターミナルソフト等を利用することにより、出力表示されたプログラムリストをコピーすることで、
内部保存されたプログラムのバックアップを行うことが出来ます。
引数に何も指定しない場合は、0 ~ 5までの全てのプログラムを画面に出力します。
対象番号を指定した場合は、該当するプログラム番号の内容のみ出力します。
開始番号と終了番号を指定した場合はその範囲のプログラムを出力します。
出力形式は次の形式となります。
NEW 10 'oscilloscope 20 CLS 30 GPIO PB1,ANALOG 40 "LOOP" 50 R=ANA(PB1) 60 Q=R/20 70 LOCATE 0,0:?R;" " 80 PSET 223,221-Q,1 90 WAIT 50 100 GSCROLL 0,8,GW-1,GH-1,LEFT 110 GOTO "LOOP" SAVE 1
【エラーメッセージ】
- Syntax error
-
書式と異なる利用を行った、プログラム番号に変数、式を指定した
- Illegal value
-
指定した引数が有効範囲を超えている
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
EXPORT 1,2 NEW 10 'oscilloscope 20 CLS 30 GPIO PB01,ANALOG 40 "LOOP" 50 R=ANA(PB01) 60 Q=R/20 70 LOCATE 0,0:?R;" " 80 PSET GW-1,GH-Q-4,1 90 WAIT 50 100 GSCROLL 8,208,3 110 GOTO "LOOP" SAVE 1 NEW 10 CLS 20 RECT 0,0,GW,GH,1,1 30 RESETTICK 40 FOR I=0 TO 215 50 FOR X=0 TO 200 STEP 16 60 GSCROLL X,0,8,GH,0 70 GSCROLL X+8,0,8,GH,1 80 NEXT X 100 NEXT I 110 ?TICK() 120 GOTO 120 SAVE 2 OK
3.3.6. FILES
プログラム一覧表示
【引数】
- 開始プログラム番号
-
表示開始プログラム番号: 0~5
- 終了プログラム番号
-
表示終了プログラム番号: 0~5
- "ファイルパス"
-
SDカード内のディレクトリまたはファイル名(ワイルドカード指定可能)
【説明】
マイコン内のフラッシュメモリに保存されているプログラムまたは、SDカード内に保存されているファイルの一覧を表示します。
引数を指定しない場合は、内部フラッシュメモリ内のプログラム番号0~5の先頭行をリスト表示します。開始プログラム番号,終了プログラム番号を指定した場合、その範囲のリストを表示します。
プログラム番号にプログラムが保存されていない場合は(none)と表示されます。
保存されている場合は先頭行の内容の一部を表示します。
プログラム先頭行にコメントをつけると、一覧表示でのプログラムの内容が分かり易くなります。
files 0:'Edit bitmap 1:'RTC TEST 2:(none) 3:(none) 4:(none) 5:1'LED Blink OK
引数にファイルパスを指定した場合、SDカード内のファイルを一覧表示します。
ファイル名は8.3形式となります。
ファイルパスには、ディレクトリ名、ディレクトリ名+ファイル名(ワイルドカード指定可能)の記述が可能です。ワイルドカードは、*と?が利用可能です。ディレクトリ名指定の上位、下位の"/"は省略可能です。""と"/"は同じ出力となります。
FILES "" FILES "/" FILES "/*" FILES "/SRC/" FILES "/SRC" FILES "/SRC/SAMPLE/" FILES "SRC/" FILES "SRC/*.BAS" FILES "SRC/*.B??"
出力されるファイル一覧の順番は不定となります。ディレクトリファイルの場合は、ファイル名の最後に*が付きます。
files "*.bas" TEST.BAS TIME.BAS TM.BAS SOKUDO.BAS トケイ.BAS トケイ2.BAS TEST2.BAS TESTBMP.BAS AA.BAS 1.BAS 2.BAS 3.BAS サッチャン.BAS SUB.BAS ケイソク.BAS DAT*
注意
|
豊四季Tiny BASIC for Arduino STM32のファームウェアの新規書き込みまたは更新を行った直後は、フラッシュメモリ上の既存データの内容の不整合により正しく表示できない場合があります。その場合は、ERASE コマンドにてフラッシュメモリ上のプログラムの消去を行って下さい。 |
【エラーメッセージ】
- Syntax error
-
書式と異なる利用を行った、プログラム番号に変数、式を指定した
- Illegal value
-
指定した開始プログラム番号,終了プログラム番号の値が正しくない。
- Bad file name
-
指定したファイル名が正しくない
- SD I/O error
-
SDカードの利用が出来ない
- File read error
-
SDカードからのファイル読み込みに失敗した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
OK files "" TEST.BAS SYSTEM~1* FONT.BIN FOUND.000* TIME.BAS TM.BAS SOKUDO.BAS トケイ.BAS TIME2.BAS トケイ2.BAS FONTLCD.BIN PAC.BAS PAC1.BAS AKABE.IMG PAC2.BAS PAC0.BAS T1.BAS NEKO_P.BAS TEST2.BAS TESTBMP.BAS AA.BAS DIR1* VRAM.BIN A.BIN B.BIN 1.BAS 2.BAS 3.BAS サッチャン.BAS SUB.BAS ケイソク.BAS SAMPLE* TT.BAS TEST* MEM.BIN SS1306.BAS DS3231.BAS OLED.BAS OLED2.BAS RR.BAS N1.BAS T11.BAS OLEDヨコ.BAS CAT* CAT.JPG CAT2.JPG INDEX.HTM NEXT.HTM T12.BAS T13.BAS T14.BAS T15.BAS OLEDロゴ.BAS TEST.TXT TEST1.BAS TEST3.BAS TEST4.BAS メモリーMAP.BAS CHAROUT.BAS HAROUT.BAS STR_01.BAS T2.BIN T1.BIN GDATA.BIN LIFE.BAS NEKO_P2.BAS TFT_PSET.BAS TFT_LINE.BAS TFT_C.BAS TFTBMP.BAS NAME.BAS MESSAGE.BAS BMP* TT.BMP CAT.BMP IMG.BMP LOGO.BMP LOGO3.BMP MSG.BMP MSG2.BMP OK
補足
|
表示する横の列数は、スクリーンの横のサイズに応じて調整されます。 |
3.3.7. FREE
プログラム領域残量取得
【書式】
【引数】
なし
【戻り値】
プログラム領域の残りバイト数: 0 ~ 4095
【説明】
プログラム領域の残りバイト数を返します。
作成したプログラムサイズを確認する場合は、下記の記述にて行うことが可能です。
PRINT 4095-FREE()
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- '(' or ')' expected
-
引数部の記述が正しくない
【利用例】
PRINT 4095-FREE() 287 OK
3.3.8. LIST
プログラムリストの表示
【引数】
- 表示開始行番号
-
表示を開始する行番号(0 ~ 32767)
- 表示終了行番号
-
表示を終了する行番号(0 ~ 32767)
【説明】
プログラムリストの表示を行います。
引数を指定しない場合は、全てのプログラムを表示します。
表示開始番号のみ指定した場合は、その行番号のプログラムリストを表示します。
表示開始番号、表示終了番号を指定した場合は、そこ範囲のプログラムリストを表示します。
表示したプログラムリストは、カーソルを移動して編集することが出来ます。
編集した行は必ず ENTER キーを押して入力確定を行って下さい。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
LIST 10 I=0 20 PRINT "*"; 30 I=I+1:IF I<10 GOTO 20 40 PRINT 50 END OK
list 20,30 20 PRINT "*"; 30 I=I+1:IF I<10 GOTO 20 OK
3.3.9. LOAD
プログラムの読み込み
【引数】
- プログラム番号
-
内部フラッシュメモリのプログラム番号 0 ~ 5
- "ファイル名"
-
ディレクトリパス(省略可能)+ファイル8文字+拡張子3文字 の形式(63文字まで)
- モード
-
0: 上書きモード (デフォルト)、1: 追記モード
SDカードからの読み込み時のみ指定可能
【説明】
内部フラッシュメモリ、または外付けSDカードからプログラムを読み込みます。
引数を省略した場合は、内部フラッシュメモリのプログラム番号を読み込みます。
引数にプログラム番号を指定した場合は、指定したプログラム番号を読み込みます。
プログラムを読込の際、変数は初期化 されます。
引数にファイル名を指定した場合、SDカードからプログラムを読み込みます。
ファイル形式は、テキスト形式またはバイナリ形式(SAVE時にバイナリ形式指定)対応しています。
ファイル名にはディレクトリパスを付けることが出来ます。
ファイル名には大文字小文字の区別はありません。
LOAD "/SAMPLE/TEST.BAS" LOAD "/PRG1.BAS" LOAD "PRG1.BAS"
SDカードからの読み込みには、引数のモードにて
0 : 上書きモード、 1 : 追記モード を指定することが出来ます。
上書きモード の場合、メモリー上のプログラムの初期化後に読み込みます。
変数領域は初期化されます。
追記モード の場合、メモリー上の既存プログラムに追記して読み込みを行います。
ただし、行番号が同じ行は上書きされます。
また、変数領域は初期化されません。
注意
|
バイナリー形式で SAVE したプログラムを追記モードで読み込む場合、 読み込むプログラムの行番号が既存プログラムよりも若い番号が付いている場合、 行番号の重複や行並びに不整合が生じます。 追記するプログラムは、あらかじめ大きい行番号を付けて下さい。 |
【エラーメッセージ】
- Syntax error
-
書式と異なる利用を行った、プログラム番号に変数、式を指定した
- Illegal value
-
プログラム番号の指定が0~5の範囲外である
- Program not found
-
指定したプログラム番号にプログラムが保存されていない
- Bad file name
-
指定したファイル名が正しくない
- SD I/O error
-
SDカードの利用が出来ない
- File read error
-
SDカードからのファイル読み込みに失敗した
- Overflow
-
指定した数値が-32767 ~ 32767を超えている
【利用例】
LOAD 1 OK
3.3.10. LRUN
指定プログラム番号の実行
【書式】
【引数】
- プログラム番号
-
実行するプログラムの番号: 0 ~ 5
- "ファイル名"
-
"ディレクトリパス(省略可能)+ファイル8文字+拡張子3文字" の形式
- 行番号
-
プログラムの実行開始行番号: 1~32767
- "ラベル"
-
プログラムの実行開始行のラベル指定
【説明】
プログラム番号またはファイル名で指定したプログラムを実行します。
第1引数に数値を指定した場合は、内部フラッシュメモリから指定したプログラム番号のプログラムを読み込んで実行します。ファイル名を指定した場合は、SDカードから指定ファイルを読み込んで実行します。
第2引数に行番号またはラベルの指定がある場合は、その行からプログラムの実行を開始します。
ファイル名の指定には、PRINT 文と同等の記述(文字列関数の利用、文字の結合等)が可能です。
10 INPUT "PROG NO=",N,0 20 IF N=0 OR N>9 GOTO 10 20 LRUN #-2,"PRG";"N;".BAS"
上記の例では、Nの値が1~9の場合には 対応する"PRG01.BAS"~"PROG09.BAS"をロードして実行します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
プログラム番号の指定が0~5の範囲外である
- Program not found
-
指定したプログラム番号にプログラムが保存されていない
- Bad file name
-
指定したファイル名が正しくない
- SD I/O error
-
SDカードの利用が出来ない
- File read error
-
SDカードからのファイル読み込みに失敗した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 INPUT N 20 LRUN N
3.3.11. NEW
プログラムの消去
【書式】
【引数】
なし
【説明】
プログラム領域のプログラム、変数、配列変数を消去します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
.プログラムを消去する LIST 10 I=0 20 PRINT "*"; 30 I=I+1:IF I<10 GOTO 20 40 PRINT 50 END OK
run ********** OK ?I 10 OK NEW OK LIST OK ?I 0 OK
3.3.12. REM
コメント
【引数】
- コメント
-
任意の文字列
【説明】
プログラムに説明等の記載を行います。
‘ (シングルクオート)は REM の省略形です。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
【利用例】
LIST 1 REM Print starts 10 I=0:’initialize value 20 PRINT "*"; 30 I=I+1:IF I<10 GOTO 20 40 PRINT 50 END
3.3.13. RENUM
行番号の振り直し
【引数】
- 開始番号
-
振り直しをする新しい行番号の開始番号 : 0 ~ 32767
- 増分
-
行番号の増分:1 ~ 32767
【説明】
プログラム全体の行番号を指定した条件にて振り直します。
引数を省略した場合は、行番号を10行から10間隔で振り直します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
- Illegal value
-
振り直しをする新しい行番号が有効範囲を超えている
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
行番号を100から10間隔で振り直す。
LIST 10 I=0 20 PRINT "*"; 30 I=I+1:IF I<10 GOTO 20 40 PRINT 50 END OK RENUM 100,10 OK LIST 100 I=0 110 PRINT "*"; 120 I=I+1:IF I<10 GOTO 110 130 PRINT 140 END
3.3.14. RUN
プログラムの実行
【書式】
【引数】
なし
【説明】
プログラムの実行を行います。
実行中のプログラムは ESC キーまたは、CTRL+C キーにて強制終了することが出来ます。
シリアルコンソール上で ESC キーにて中断する場合は、ESC キーを2回押す必要があります。
プログラムの実行中は、カーソルが非表示となります。
プログラムの実行中は実行すべき次の行が無い場合、実行を終了します。
また END コマンドにより実行を終了します。
プログラムの実行中にエラーが発生した場合は実行を終了します。
注意
|
WAIT 命令で長い時間待ちを行っている場合は、時間待ちが終了するまで、 ESC キー、 CTRL+C キーによる強制終了を行うことが出来ません。 + |
【エラーメッセージ】
-
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
【利用例】
プログラムを実行する。
LIST 10 I=0 20 PRINT "*"; 30 I=I+1:IF I<10 GOTO 20 40 PRINT 50 END OK RUN ********** OK
3.3.15. SAVE
プログラムの保存
【引数】
- プログラム番号
-
0 ~ 5
- "ファイル名"
-
ディレクトリパス(省略可能)+ファイル8文字+拡張子3文字 の形式(63文字まで)
- 保存形式
-
1: テキスト形式(デフォルト)
0: バイナリ形式
【説明】
プログラムをマイコン内のフラッシュメモリ、またはSDカードに保存します。
引数の省略、数値を指定した場合は内部フラッシュメモリに保存します。
プログラムは最大で6つ保存可能です。保存先はプログラム番号0~5で指定します。
引数の省略した場合、プログラム番号0に保存します。
ファイル名を指定した場合は、SDカードにプログラムを保存します。
保存形式の指定により、テキスト形式またはバイナリ形式にて保存が行えます。
保存形式を指定しない場合は、テキスト形式で保存されます。
バイナリ形式での保存はプログラム領域4kバイトの全てを保存します。
注意
|
NTSC表示版では SAVE コマンド実行時に画面表示が乱れる場合があります。 |
【エラーメッセージ】
- Syntax error
-
書式と異なる利用を行った、プログラム番号に変数、式を指定した
- Illegal value
-
プログラム番号の指定が0~5の範囲外である
- Bad file name
-
指定したファイル名が正しくない
- SD I/O error
-
SDカードの利用が出来ない
- File write error
-
SDカードへのファイルの書込みに失敗した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
SAVE 1 OK
3.3.16. WIDTH
シリアルコンソール画面サイズ設定
【書式】
WIDTH 横文字数, 縦文字数
【引数】
- 横文字数
-
コンソール画面上のスクリーンの横文字数 16 ~ 128(デフォルト 80)
- 縦文字数
-
コンソール画面上のスクリーンの縦文字数 10 ~ 45(デフォルト 24)
【説明】
シリアルコンソール画面上のスクリーンサイズの設定を行います。
この設定にてスクリーンエディタの表示文字数、スクロール範囲の変更を行うことが出来ます。
スクリーンサイズは、最小サイズ16桁×10行 ~ 最大 128桁×45行 となります。
注意
|
デバイスコンソール画面で WIDTH コマンドを実行た場合、設定は無視されます。 また、シリアルコンソール画面への変更直後はデフォルトの80×24となります。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
- Illegal value
-
指定した引数の値が範囲外である
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
スクリーンサイズを80桁×30行に設定する
WIDTH 80,30
3.4. テキスト画面入出力
3.4.1. ATTR
文字表示属性の設定
【書式】
ATTR 属性
【引数】
- 属性
-
属性コード: 0 ~ 4
【説明】
文字の表示属性を設定します。指定した表示属性は以降の文字表示に反映されます。
属性に指定する属性コードは次の表の通りです。
属性コード | 機能 |
---|---|
|
標準(デフォルト) |
|
下線 |
|
反転 |
|
ブリンク |
|
ボールド |
注意
|
ターミナル版のみ利用可能です。 |
注意
|
利用するターミナルソフトにより色が正しく表示されない場合があります。 属性指定との併用では正しく表示されない場合があります。 CTRL-R 、Page UP 、Page Down キー操作を行った場合は 再表示が発生し、色情報は欠落します。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
属性コードに範囲外の値を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 CLS 20 LOCATE 5,5 30 ATTR 2:? "Hello,world" 40 ATTR 0
3.4.2. CLS
画面表示内容の全消去
【引数】
- 消去対象画面
-
0 : コンソール画面の全消去(デフォルト)
1 : デバイス画面の消去
【説明】
画面上に表示している内容を全て消します。
引数に消去対象画面を指定した場合、指定した画面の消去を行います。
OLED版、TFT版ではシリアルコンソール画面切り替え中でも、
デバイス画面へのグラフィック描画コマンドを使った描画が可能です。
その際、CLS コマンドの引数にてどちらの画面を消去するかを指定することが出来ます 。
【エラーメッセージ】
- Illegal value
-
指定した引数が有効範囲でない
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- Syntax error
-
文法エラー、書式と異なる利用を行った
【利用例】
CLS OK
3.4.3. COLOR
文字色の設定
【引数】
- 文字色
-
色コード 0~8、または RGBコード:$0009 ~ $FFFF
- 背景色
-
色コード 0~8、または RGBコード:$0009 ~ $FFFF
【説明】
文字色の設定を行います。指定した色は以降の文字表示に反映されます。
文字色、背景色で指定する色コードに対する色は次の表の通りです。
色コード | 色 |
---|---|
|
黒 |
|
赤 |
|
緑 |
|
茶 |
|
青 |
|
マゼンタ |
|
シアン |
|
白(デフォルト) |
|
黄 |
TFT(ILI9341)ディスプレイを利用している場合、上記の色コードに加えて、
RGBコード:$0009 ~ $FFFFの色指定が可能です。RGBコードは次の構成となります。

RGBコードの指定は、RGB 関数を使うことで直感的な色を指定することが出来ます。
注意
|
TFTデスプレイ、ターミナル版のみ利用可能です。 |
注意
|
利用するターミナルソフトにより色が正しく表示されない場合があります。 属性指定との併用では正しく表示されない場合があります。 画面を CTRL-R、 Page UP、 Page Down キーにて再表示した場合、 色情報は欠落します。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
色コードに範囲外の値を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 FOR I=0 TO 10 20 FOR J=0 TO 10 30 COLOR RND(8): ? "*"; 35 WAIT 100 40 NEXT J 50 ? 60 NEXT I
3.4.4. GETS
文字列の入力
【引数】
- 文字列格納先仮想アドレス
-
入力した文字列を格納する仮想アドレス $0000 ~
- 有効文字列長
-
入力した文字列のうち、有効とする文字列の長さ(バイト:デフォルト 32)
- モード
-
文字列を入力する方法の選択
0 : 文字列の対話入力(デフォルト値)
1 : 参照元仮想アドレスから入力、 または 領域のみ確保 - 参照元仮想アドレス
-
モードで1を指定した場合の参照する文字列格納アドレス
【戻り値】
文字列格納先仮想アドレス
【説明】
コンソール画面のカーソル位置での文字列入力を行います(モード 0時)。
または、参照元仮想アドレスに格納されているバイナリーデータを
文字列として取得します(モード1時)。
取得した文字列データは引数で指定した文字列格納先仮想アドレスに格納されます。
戻り値として、そのアドレスを返します。
取得した文字列は、有効文字列長(デフォルトでは32)の長さ分が文字列として利用されます。
仮想アドレスの指定には次の定数することが出来ます。
モード1において、引数の参照元仮想アドレスを省略した場合は、領域のみを確保します。
定数名 | 仮想化ドレス名 | 概要 |
---|---|---|
画面表示用メモリ(CW×CH) |
サイズはSCREENモードにより可変 |
|
変数領域 |
サイズ 420バイト |
|
配列変数領域(@(0)~@(99) ) |
サイズ 200バイト |
|
プログラム領域 |
サイズ 4,096バイト |
|
ユーザーワーク領域 |
サイズ 1,024バイト |
|
フォント256文字(フラッシュメモリ) |
サイズ 2,048バイト |
|
グラフィック表示用メモリ |
サイズはSCREENモードにより可変 |
|
フラッシュメモリプログラム保存領域 |
サイズ 4,096バイト |
指定した仮想アドレスには次の形式にて文字列が格納されます。
[文字列長(1バイト)] |
[入力した文字列] |
[文字列終端コード:0(1バイト)] |
下記の例では、変数 S1 、 S2 に文字列の入力を行い、その内容を表示しています。
10 S1=GETS(MEM,8) 20 S2=GETS(MEM+10,8) 30 ?STR$(S1) 40 ?STR$(S2) OK run 1234567890 abcdefghij 12345678 abcdefgh OK
有効文字列長に8を指定しているため、入力した文字列のうち、先頭から8バイトが格納されます。
変数に代入されている仮想アドレスに格納されている文字列を表示する場合は STR$ 関数を利用します。
変数 S2 の格納アドレスを MEM+10 としているのは、文字列8バイト分に長さと文字列終端コードの2バイトが必要なためです。
全角を含む文字列を入力した場合、有効文字列長は全角2バイト文字を考慮します。
上記のプログラムを再度実行し、今度は全角半角混合文字を入力してみます。
run あeいうえお かきくけこ あeいう かきくけ OK
入力した文字列 "あeいうえお" は11バイトです。
有効文字列長に8を指定しているため*S1* には "あeいう"の7バイト分が格納されます。
10 S=GETS(MEM) 20 ?"バイト数:";BYTE(S) 30 ?"文字数 :";LEN(S) OK run さいたまsaitama バイト数:15 文字数 :11 OK
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 FOR I=0 TO 4 20 ?"氏名(";I;")="; 30 @(I)=GETS(MEM+I*20,18) 40 NEXT I 50 ?"--- 名前リスト ---" 55 FOR I=0 TO 4 60 ?STR$(@(I)) 70 NEXT I 80 ?"------------------"
氏名(0)=たま吉 氏名(1)=ルミちゃん 氏名(2)=モコちゃん 氏名(3)=歳三くん 氏名(4)=メイちゃん --- 名前リスト --- たま吉 ルミちゃん モコちゃん 歳三くん メイちゃん ------------------ OK
3.4.5. INKEY
入力文字コード取得
【書式】
INKEY( )
【引数】
なし
【戻り値】
押したキーの文字コード: 0 ~ 255
キーが押されていない場合は0を返します。
【説明】
キーボード上の押しているキーのコードを取得します。
キーが押されていない場合は、0を返します。
押したキーが返すコードについては「キー入力コード」を参照下さい。
注意
|
ESC キー、CTRL-Cキー はプログラム中断用のため、キー入力の読み取りは出来ません。 キーボードにおいて利用出来ないキーはコードの取得が出来ません。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- '(' or ')' expected
-
’(‘ または ‘)’がない
【利用例】
10 CLS 20 I= INKEY() 30 IF I>0 LOCATE 0,0:?#3,I 40 GOTO 20
3.4.6. INPUT
数値の入力
【引数】
- 変数
-
入力した値を格納する変数または配列変数
- プロンプト
-
文字列定数 "プロンプト"
- オーバーフロー時の既定値
-
-32768 ~ 32767
【説明】
現在のカーソル位置にて数値の入力をし、指定した変数にその値を格納します。
キーボードから入力できる文字は符号-、+、数値 0~9、入力訂正の BS、DEL、入力確定のEnterキーです。
それ以外の入力はできません。
数値を入力せずに、Enterキーにて入力確定を行った場合、変数には0が格納されます。
引数に変数のみを指定した場合、"変数名:"を表示しその後ろの位置から数値を入力します。
INPUT A A:
プロンプトを指定した場合は、そのプロンプトを表示しその後ろ位置から数値を入力します。
例.
INPUT "Value=",A Value=
オーバーフロー時の既定値を指定した場合、入力値した数値がオーバーフローを発生した場合は、オーバーフロー時の既定値を変数に設定します。オーバーフロー時の既定値を設定していない場合は、Overflowエラーとなります。
INPUT A A:111111 Overflow OK
INPUT A,-1 A:111111 OK ?A -1 OK
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
INPUT A A=1234 OK
INPUT "Value=" A Value=1234 OK
3.4.7. LOCATE
カーソルの移動
【書式】
LOCATE 横位置, 縦位置
【引数】
- 横位置
-
画面上の横位置: 0 ~ CW-1
- 縦位置
-
画面上の縦位置: 0 ~ CH-1
-
CW、CHは画面の横桁数、縦行数の示す定数です。
利用するフォント等により異なります。
【説明】
カーソルを指定した位置に移動します。
縦横位置それぞれの指定に0以下の数値を指定した場合、それぞれの位置は0となります。
横位置にCW-1を超える数値を指定した場合、横位置はCW-1となります。
縦位置にCH-1を超える数値を指定した場合、縦位置はCH-1となります。
定数CW、CHに設定されている値は次のようすることで確認することができます。
?CW 37 OK ?CH 27 OK
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 CLS 20 LOCATE 5,5:PRINT "Hello,world." 30 LOCATE 6,6:PRINT "TinyBASIC" 40 LOCATE 7,7:PRINT "Thank you."
Hello,world. TinyBASIC Thank you.
3.4.8. PRINT
文字列表示
【書式】
PRINT
PRINT 文字列 | 数値
PRINT 文字列 | 数値 ;
PRINT 文字列 | 数値 ;
文字列 | 数値 ;
…
PRINT 文字列 | 数値 ;
文字列 | 数値 ;
… ;
PRINT #
桁数,文字列 | 数値 ;
文字列 | 数値 ;
… ;
… は可変指定を示す
‘;’ は連結・改行抑制指定(オプション)、カンマ ‘,’ も可能
PRINT の代わりに、省略形 ?
も利用可能
【引数】
- 文字列
-
文字列定数または文字列関数
- 数値
-
数値定数、変数、配列変数、または数値関数、式
- 連結指定
-
セミコロン’
;
’ または カンマ‘,
’
文末に付けると改行抑制される - 桁数
-
#
数値 または#-数値
の形式で指定する
例:#3
、#-3
【説明】
指定した文字列、数値をスクリーン画面のカーソル位置に表示します。
PRINT "Hello,World" Hello,World OK PRINT 123*3 369 OK PRINT HEX$(123*3) 171 OK
文字列、数値は連結指定のセミコロン’;’、またはカンマ’,’にて連結して表示することが出来ます。
また最後に’;’または’,’が付加されている場合は改行しません。
10 N=5:C=3:K=10 20 PRINT "N=";N;" C=";C; 30 PRINT " K="; 40 PRINT K RUN N=5 C=3 K=10 OK
数値の整形表示
#数値 にて桁数を指定することで、任意の桁数(指定桁に満たない場合は空白を入れる)にて等間隔で表示します。
数値の前に-(マイナス)を付加した場合、空白をではなく、0(零)で不足桁を補います。
#数値 は任意の位置、任意の回数指定できます。
桁数指定なし
PRINT 1;":";2;":";3 + 1:2:3 +
桁数指定あり(空白文字で補間)
PRINT #2,1;":";2;":";3 1: 2: 3
桁数指定あり(0で補間)
PRINT #-2,1;":";2;":";3 01:02:03
表示位置の指定
LOCATE コマンドを併用することで、スクリーン画面の任意の位置に文字を表示することが出来ます。
10 LOCATE 10,10 20 PRINT "Hello!"
色、属性の指定
スクリーン画面が SCREEN 0 のターミナルコンソールの場合、
COLOR コマンド、ATTR コマンドを併用することで、文字の前景色、背景色の指定、点滅、アンダーライン等の属性を付加することが出来ます。
10 COLOR 4,3 20 PRINT "Hello,"; 40 ATTR 2 50 PRINT "World". 60 COLOR 7,0:ATTR 0
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 GETTIME A,B,C 20 LOCATE 0,0:PRINT #-2,A;":";B;":";C 30 WAIT 1000 40 GOTO 20
10:52:00
3.4.9. REDRAW
画面表示の再表示
【書式】
【引数】
なし
【説明】
テキスト画面表示用メモリ(VRAM)の内容を画面に再表示を行います。
再表示においては、個々に色付しけした文字の色、背景色、属性は欠落します。
再表示後の表示内容は指定した文字色、背景色、属性に統一されます。
【エラーメッセージ】
- Syntax error
-
:文法エラー、書式と異なる利用を行った
- Overflow
-
:指定した数値が-32768 ~ 32767を超えている
【利用例】
10 POKE VRAM+80*5+50,ASC("b") 20 REDRAW
3.4.10. VPEEK
指定位置の文字コード参照
【書式】
VPEEK (横位置 , 縦位置)
【引数】
- 横位置
-
0 ~ CW - 1
- 縦位置
-
0 ~ CH - 1
-
CW、CHは画面の横桁数、縦行数の示す定数です。
利用するデバイス画面、画面サイズにより異なります。
【戻り値】
指定位置に表示されている文字の文字コード(0 ~ 255)
【説明】
画面上の指定位置に表示されている文字の文字コードを取得します。
引数の指定位置が範囲外の場合は0を返します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した引数の値が有効範囲を超えている
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- '(' or ')' expected
-
’(‘ または ‘)’が無い
【利用例】
10 FOR I=0 TO CW-1 20 C=VPEEK(I,0) 30 PRINT CHR$(C); 40 NEXT I 50 PRINT
3.5. 数値・文字列操作
3.5.1. ABS
絶対値の取得
【書式】
ABS (数値)
【引数】
- 数値
-
式、変数、配列変数、
数値(-32767~ 32767 )、
数値定数
の指定が可能
【戻り値】
指定した 数値 の絶対値
【説明】
指定した 数値 の絶対値を返します。
注意
|
-32768の絶対値 32768はオーバーフローとなるため、-32768を指定した場合は オバーフローエラーとなります。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32767 ~ 32767を超えている
- '(' or ')' expected
-
’(‘ または ‘)’が無い
【利用例】
10 FOR I=-3 TO 3 20 PRINT ABS(I) 30 NEXT I
RUN 3 2 1 0 2 3 OK
3.5.2. ASC
文字コード変換
【引数】
- 文字列
-
"文字列"
"ABC" の形式とし、ダブルクォーテーション文字を囲みます。 - 文字位置
-
1~32767
変換対象となる左からの文字位置を指定します。 - 変数
-
文字列参照している変数または配列変数
【戻り値】
指定した 文字列 に対応する 文字コード : 0 ~ $FFFF
(1バイト文字コード または 2バイト文字コード)
【説明】
指定した 文字列 (全角文字または半角文字)に対応する 文字コード を返します。
文字列 のみを指定した場合は、先頭の 文字コード を返します。
10 ?ASC("ABCD") RUN 65 OK
文字位置 を指定した場合は、指定した 文字列 の 文字位置 の 文字コード を返します。
10 ?HEX$(ASC("AあBうCD",4)) RUN 82A4 OK
変数 を指定した場合、変数 が参照している文字列の 文字コード を返します。
10 A="ABあCDEF" 20 ?HEX$(ASC(A)) 30 ?HEX$(ASC(A,3)) RUN 41 82A0 OK
注意
|
変数の文字列参照はプログラム中にのみ有効です。 コマンドラインでは文字列参照を正しく行うことが出来ません。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
文字指定位置が不当
- '(' or ')' expected
-
’(‘ または ‘)’がない
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 C=ASC("A") 20 FOR I=0 TO 25 30 PRINT CHR$(C+I); 40 NEXT I 50 PRINT
run ABCDEFGHIJKLMNOPQRSTUVWXYZ OK
10 S="こんにちは、世界!" 20 L=LEN(S) 30 FOR I=1 TO L 40 PRINT HEX$(ASC(S,I),2) 50 NEXT I
run 82B1 82F1 82C9 82BF 82CD 8141 90A2 8A45 8149 OK
3.5.3. BIN$
整数の2進数文字列変換
【引数】
- 数値
-
変換対象の整数値: -32768 ~ 32767
- 桁数
-
出力桁数: 0 ~ 16)
【戻り値】
2進数文字列(1桁~16桁)
【説明】
指定した 数値 を2進数文字列に変換する 文字列関数 です。
数値 には式、変数、定数等の指定が可能です。
桁数 を指定した場合は数値が 桁数 に満たない場合は、0で桁を補います。
桁数 を超える場合は数値の 桁数 を優先します。
桁数 を指定しない場合は、先頭の0は付加されません。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- '(' or ')' expected
-
’(‘ または ‘)’がない
- Illegal value
-
桁数の値が正しくない
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 A=1234:B=1 20 PRINT BIN$(A) 30 PRINT BIN$(B) 40 PRINT BIN$(A,4) 50 PRINT BIN$(B,4) run 10011010010 1 10011010010 0001 OK
3.5.4. BYTE
文字列のバイト数の取得
【引数】
- 変数
-
変数、または配列変数
- 文字列
-
"文字列"の形式(ダブルクォーテーションで囲み)
【戻り値】
文字列の長さ: 0 ~ 32767
【説明】
文字列定数、変数で参照してる文字列のバイト数をカウントし、その値を返します。
例:文字列のバイト数を求める
10 ?BYTE("12345678") 20 A="ABCDEF" 30 @(0)="abcdef" 40 ? BYTE (A) 50? BYTE (@(0)) >RUN 8 6 6 OK
注意
|
文字列のサポートは限定的です。 他の文字列関数と組み合わせた利用はサポートしていません。 例) 下記のような記述は出来ません。 ?BYTE(BIN$(100)) |
本関数は全角1文字は2バイトとしてカウントします。
全角を1文字として扱いたい場合は、LEN 関数を利用して下さい。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- '(' or ')' expected
-
’(‘ または ‘)’が無い
【利用例】
10 'BYTE関数サンプル 20 A="Hello!" 30 FOR I=1 TO BYTE(A) 40 ?STR$(A,I,1);":";ASC(A,I) 50 NEXT I
run H:72 e:101 l:108 l:108 o:111 !:33 OK
3.5.5. CHR$
文字コードから文字への変換
【引数】
- 文字コード
-
アスキーコード または シフトSJIS文字コード: 0~$FFFF
【戻り値】
指定した 文字コード に対する文字、または文字列
【説明】
指定した 文字コード に対応する文字、文字列を返します。
文字コード は2バイトシフトJISコード(全角含む)、1バイト半角アスキーコードに対応ます。
文字コード をカンマ区切りで複数指定した場合は、文字列を返します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- '(' or ')' expected
-
’(‘ または ‘)’が無い
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 C=ASC("A") 20 FOR I=0 TO 25 30 PRINT CHR$(C+I); 40 NEXT I 50 PRINT run ABCDEFGHIJKLMNOPQRSTUVWXYZ OK
10 ?CHR$($82A0,$82A2,$82A4,$82A6,$82A8) run あいうえお OK
3.5.6. DMP$
整数小数付き文字列変換
【引数】
- 数値
-
変換対象整数: -32767 ~ 32767
- 小数点桁数
-
小数点以下の桁数を指定: 0 ~ 4(省略時は2)
- 整数部桁数
-
小数点以上の桁数を指定: 0 ~ 8 (省略時は0)
【戻り値】
小数点を付加した数値文字列
【説明】
指定した 数値 を小数点付きの文字列に変換する文字列関数です。
引数の 小数点桁数 をnとした場合、数値÷10nの計算を行い、
小数点以下の数値を含めて表示します。
PRINT DMP$(3141,3) 3.141
小数点桁数 を指定しない場合、小数点桁数 はデフォルトの2となります。
PRINT DMP$(3141) 3.14
整数部桁数 を指定した場合、その桁数に満たない場合は空白で補完します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した引数の値が有効範囲を超えている
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- Illegal value
-
桁数の値が正しくない
- '(' or ')' expected
-
’(‘ または ‘)’が無い
3.5.7. HEX$
数値の16進数文字列変換
【引数】
- 数値
-
変換対象の整数値: -32767 ~ 32767
- 桁数
-
出力桁数: 0 ~ 4
【戻り値】
16進数文字列(1桁~4桁)
【説明】
指定した 数値 を16進数文字列に変換する 文字列関数 です。
数値 には式、変数、定数等の指定が可能です。
桁数 を指定した場合は 数値 が 桁数 に満たない場合は、0で桁を補います。
桁数 を超える場合は 数値 の 桁数 を優先します。
桁数 をしない場合は、先頭の0は付加されません。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- '(' or ')' expected
-
’(‘ または ‘)’がない
- Illegal value
-
桁数の値が正しくない
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 INPUT "value=",V 20 PRINT HEX$(V,4) 30 GOTO 10
3.5.8. LEN
文字列の長さの取得
【引数】
- 変数
-
変数、または配列変数
- 文字列
-
"文字列"の形式(ダブルクォーテーションで囲み)
【戻り値】
文字列の長さ: 0 ~ 32767
【説明】
文字列定数、変数で参照してる文字列の文字数をカウントし、その値を返します。
全角文字、半角文字とも1文字としてカウントします。
10 ?LEN("1あ2い34う5678") 20 A="ABさいたまCDEF" 30 @(0)="abcdef埼玉" 40 ?LEN(A) 50 ?LEN(@(0)) RUN 11 10 8 OK
注意
|
「豊四季Tiny BASIC for Arduino STM32」の文字列のサポートは限定的です。 他の文字列関数と組み合わせた利用はサポートしていません。 例) 下記のような記述は出来ません。 ?LEN(BIN$(100)) |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- '(' or ')' expected
-
’(‘ または ‘)’が無い
【利用例】
10 CLS 20 A="Hello!" 30 FOR I=1 TO LEN(A) 40 BITMAP (I-1)*30,0,FNT,ASC(A,I),6,8,5 50 NEXT I 60 LOCATE 0,5
変数Aが参照している文字列の長さ LEN 関数で取得し、その長の分、文字を拡大表示します。
実行結果

3.5.9. LET
変数への値代入
【引数】
- 変数
-
変数、または配列変数
- 配列変数
-
配列変数 @(添え字)
配列の添え字(数値)には式、定数、変数、配列変数の利用が可能 - 数値
-
式、定数、変数、配列変数の利用が可能
【説明】
変数 に値を代入します。
数値 には式、定数、変数、配列変数等を評価した整数値の記述が可能です。
配列変数 への代入は、指定した複数の 数値 の連続代入が可能です。
指定した 添え字 を起点に順番に代入します。
LET @(3)=1,2,3,4,5
上記の記述は、
LET @(3)=1: LET @(4)=2: LET @(5)=3: LET @(5)=4: LET @(5)=5
と同じです。
LET は省略可能です。
次の2は同じ結果となります。
LET A=A+1 A=A+1
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- LET without variable
-
変数が指定されていない
【利用例】
1 'Print starts 10 LET I=0:'initialize value 20 PRINT "*"; 30 LET I=I+1:IF I<10 GOTO 20 40 PRINT 50 END
3.5.10. MAP
数値のスケール変換
【書式】
MAP (値 , 範囲下限 , 範囲上限 , 新範囲下限 , 新範囲上限)
【引数】
- 値
-
変換対象の数値 -32768 ~ 32767
- 範囲下限
-
対象数値の数値の下限 -32768 ~ 32767
- 範囲上限
-
対象数値の数値の上限 -32768 ~ 32767
- 新範囲下限
-
新しい対象数値の数値の下限 -32768 ~ 32767
- 新範囲上限
-
新しい新しい対象数値の数値の下限 -32768 ~ 32767
【戻り値】
スケール変換後の値: -32767 ~ 32767
【説明】
指定した値のスケール変換を行い、その値を返します。
A=MAP(ANA(PA07),0,4095,0,99)
上記の例ではアナログ入力値0~4095を0 ~ 99のレンジに変換し、その値を返します。
アナログ入力や画面座標指定、PWMパルス出力等にて MAP 関数を使うことで、簡単にレンジ変換を行うことができます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- '(' or ')' expected
-
’(‘ または ‘)’が無い
【利用例】
10 CLS 20 GPIO PB1,ANALOG 30 V=MAP(ANA(PB1),0,4095,0,3300) 40 LOCATE 0,0:? DMP$(V,3) 50 WAIT 200 60 GOTO 30
3.5.11. RND
乱数の発生
【書式】
RND (数値)
【引数】
- 数値
-
式、変数、配列変数、
数値(0 ~ 32767)、数値定数
の指定が可能
【戻り値】
0から指定した値未満の乱数
【説明】
0から指定した値-1の範囲の乱数を発生させ、その値を返します。
R=RND(10)
上記の例では変数 R には0~9範囲の値が代入されます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- '(' or ')' expected
-
’(‘ または ‘)’が無い
【利用例】
10 @(0)="グー","チョキ","パー" 20 FOR I=1 TO 5 30 R=RND(3) 40 PRINT I,":";STR$(@(R)) 50 NEXT I run 1:チョキ 2:パー 3:チョキ 4:グー 5:パー OK
3.5.12. STR$
文字列参照・文字列の切り出し
【引数】
- 変数
-
文字列を参照している変数または配列変数
- 先頭位置
-
切り出す文字位置先頭 1~32767
- 長さ
-
切り出す文字の長さ 1~32767
- 文字列
-
ダブルクォーテーションで囲った文字列定数( "文字列" )
【戻り値】
指定した 文字列 および 変数 が参照している文字列を全部または一部を切り出して返します。
全角(シフトJIS)1文字は1文字としてカウントします。
【説明】
指定した 文字列 および 変数 が参照している文字列を全部または一部を
切り出して返す文字列関数です。
引数に 先頭位置、長さ を指定した場合は、その条件にて文字列を切り出して返します。
先頭位置 は1からの指定となります。
本関数を含め 文字列関数 は、
BLOAD、BSAVE、CAT、DWBMP、FILES、GPRINT、 KANJI、LDBMP、
LOAD、LRUN、PLAY、PRINT、REMOVE、SAVE、SPRINT
コマンドの引数にて利用可能です。
10 S="Hello,world! こんにちは世界!" 20 ?STR$(S) 30 ?STR$(S,14,8) 40 ?STR$("あいうえお",5,1)
run Hello,world! こんにちは世界! こんにちは世界! お OK
上記の例では、変数Sが参照している文字列" Hello,world! こんにちは世界!"に対して、
20行は全て出力、30行は14番目からの文字から8文字 "こんにちは世界!""を出力、
40行は直接指定した文字列"あいうえお"の5番目の文字から1文字 "お"を出力しています。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した文字位置、長さの値が不当
- '(' or ')' expected
-
’(‘ または ‘)’が無い
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 'モジレツソウサ サンプル 20 S="Hello,Tiny BASIC" 30 L=LEN(S) 40 PRINT STR$(S);" LEN=";L 50 PRINT STR$(S,1,5) 60 C=ASC(S,12) RUN Hello,Tiny BASIC LEN=16 Hello
3.5.13. STRCMP
文字列の比較
【引数】
- 文字列1
-
文字列定数 または、文字列を参照している 変数
- 文字列2
-
文字列定数 または、文字列を参照している 変数
- 長さ
-
比較を行う文字列長
【戻り値】
0:等しい
1:等しくない
【説明】
文字列1 と 文字列2 を比較し、等しい場合は0、等しくない場合は1を返します。
引数に 長さ を指定している場合は、その長さの文字列分の比較を行い判定します。
長さ の指定を行っていない場合は、単純に文字列1と文字列2の比較を行います。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した引数が正しくない
- '(' or ')' expected
-
’(‘ または ‘)’がない
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 ?"どんなペットを飼っていますか? "; 20 S=GETS(MEM) 30 IF STRCMP(S,"ねこ") ?STR$(S);"はかわいいね" ELSE ?"ねこを飼いなさい!" 40 GOTO 10
run どんなペットを飼っていますか? さる ねこを飼いなさい! どんなペットを飼っていますか? いぬ ねこを飼いなさい! どんなペットを飼っていますか? ねこ ねこはかわいいね どんなペットを飼っていますか?
3.6. 仮想メモリー参照
3.6.1. PEEK
指定アドレスの値参照
【書式】
PEEK (仮想アドレス)
【引数】
- 仮想アドレス
-
SRAM及びフラシュメモリの領域アドレス(16ビット) : $0000 ~
【戻り値】
指定した仮想アドレスに格納されている1バイトデータ:0~255
【説明】
指定した仮想アドレスに格納されている値(1バイト)を返します。
仮想アドレスの指定には次の定数を利用することで有用な領域への参照が簡単に行えます。
定数名 | 仮想化ドレス名 | 概要 |
---|---|---|
画面表示用メモリ(CW×CH) |
サイズはSCREENモードにより可変 |
|
変数領域 |
サイズ 420バイト |
|
配列変数領域(@(0)~@(99) ) |
サイズ 200バイト |
|
プログラム領域 |
サイズ 4,096バイト |
|
ユーザーワーク領域 |
サイズ 1,024バイト |
|
フォント256文字(フラッシュメモリ) |
サイズ 2,048バイト |
|
グラフィック表示用メモリ |
サイズはSCREENモードにより可変 |
|
フラッシュメモリプログラム保存領域 |
サイズ 4,096バイト |
ユーザーワーク領域は利用者が自由に利用出来る領域です。
それ以外の領域はBASICの実行にて利用する領域です。
例として画面上のカーソル位置X,Yに格納されている文字の参照は次のようになります。
C = PEEK(VRAM+Y*CW+X)
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Out of range value
-
領域外のアドレスを指定した
- '(' or ')' expected
-
括弧の指定が正しくない
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 FOR I=0 TO 7 20 D=PEEK(FNT+ASC("A")*8+I) 30 PRINT BIN$(D,8) 40 NEXT I
run 01110000 10001000 10001000 10001000 11111000 10001000 10001000 00000000 OK
3.6.2. POKE
指定アドレスへのデータ書き込み
【引数】
- 仮想アドレス
-
仮想アドレス(16ビット): $0000 ~
- データ
-
書き込むデータ(下位8ビットのみ有効)
【説明】
指定した仮想アドレスに指定したデータを書き込みます。
仮想アドレスの指定には次の定数を利用することで有用な領域への書込みが簡単に行えます。
定数名 | 仮想化ドレス名 | 概要 |
---|---|---|
画面表示用メモリ(CW×CH) |
サイズはSCREENモードにより可変 |
|
変数領域 |
サイズ 420バイト |
|
配列変数領域(@(0)~@(99) ) |
サイズ 200バイト |
|
プログラム領域 |
サイズ 4,096バイト |
|
ユーザーワーク領域 |
サイズ 1,024バイト |
|
フォント256文字(フラッシュメモリ) |
サイズ 2,048バイト |
|
グラフィック表示用メモリ |
サイズはSCREENモードにより可変 |
|
フラッシュメモリプログラム保存領域 |
サイズ 4,096バイト |
ユーザーワーク領域は利用者が自由に利用出来る領域です。
それ以外の領域はBASICの実行にて利用する領域です。
指定した仮想アドレスに上記以外の領域を指定した場合はエラーとなります。
例として画面上のカーソル位置X,Yへの文字の書込みは次のようになります。
VRAMに書き込んだ内容を画面の表示に反映するには REDRAW コマンドを実行します。
10 POKE VRAM+Y*80+X,ASC("A") 20 REDRAW
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Out of range value
-
S領域外のアドレスを指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 FOR I=0 TO 51 20 POKE MEM+I,PEEK(VAR+I) 30 NEXT I
3.7. 時間
3.7.1. TICK
経過時間取得
【引数】
- モード
-
0:経過時間をミリ秒単位で取得する(デフォルト)
1:経過時間を秒単位で取得する
【戻り値】
モード指定に従った経過時間を返す。
モード 0: 0 ~ 32767 ミリ秒の経過時間を返す(約32.767秒でオーバーフロー)
モード 1: 0 ~ 32767 秒の経過時間を返す(約9.1時間でオーバーフロー)
【説明】
起動からの経過時間を返します。
経過時間は CLT コマンドにて初期化が可能です。
CLT コマンドと組み合わせて使うことで、処理時間の測定を行うことが出来ます。
モード 指定無し、または0を指定の場合、ミリ秒単位 の経過時間を返します。
モード に1を指定した場合は、秒単位 の経過時間を返します。
注意
|
オーバーフローが発生しますので、長時間の測定には利用することが出来ません。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- '(' or ')' expected
-
’(‘ または ‘)’がない、引数の指定が正しくない
- Illegal value
-
モードの指定値が正しくない
- Overflow
-
モードの指定値が-32767 ~ 32767を超えている
【利用例】
10 A=0 20 CLT 30 FOR I=1 TO 10000 40 A=A+1 50 NEXT I 60 PRINT A 70 PRINT TICK();"msec" RUN 10000 225msec
3.7.2. DATE
現在時刻の表示
【書式】
【引数】
なし
【説明】
内蔵RTCから現在の時刻を読み、その情報を画面に表示します。
注意
|
内蔵RTC用のバックアップ電池を搭載していないボードでは、 時刻情報は電源OFFにより初期化されます。 その場合は SETDATE コマンドにて時刻設定を行って下さい |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
SETDATE 2017,4,1,12,00,00 OK DATE 2017/04/01 [Sat] 12:00:03 OK
3.7.3. GETDATE
日付の取得
【書式】
GETDATE 年格納変数, 月格納変数, 日格納変数, 曜日格納変数
【引数】
年格納変数 |
取得した西暦年を格納する変数を指定 |
月格納変数 |
取得した月を格納する変数を指定 |
日格納変数 |
取得した日を格納する変数を指定 |
曜日格納変数 |
取得した曜日コードを格納する変数を指定 |
【説明】
内蔵RTCから日付情報を取得し、その値を指定した変数に格納します。
格納される値は次の通りです。
年格納変数: 西暦年4桁整数 1970 ~ 2036
月格納変数: 1 ~ 12
日格納変数: 1 ~ 31
曜日格納変数: 曜日コード 0 ~ 6(0:月 1:火 2:水 3:木 4:金 5:土 6:日)
注意
|
内蔵RTC用のバックアップ電池を搭載していないボードでは、 時刻情報は電源OFFにより初期化されます。 その場合は SETDATE コマンドにて時刻設定を行って下さい。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
DATE 2017/04/01 [Sat] 12:03:05 OK GETDATE A,B,C,D OK PRINT a;b;c;d 2017416 OK
3.7.4. GETTIME
時刻の取得
【書式】
GETTIME 時格納変数 , 分格納変数 , 秒格納変数
【引数】
時格納変数 |
取得した時を格納する変数を指定 |
分格納変数 |
取得した分を格納する変数を指定 |
秒格納変数 |
取得した秒を格納する変数を指定 |
【説明】
内蔵RTCから日付情報を取得し、その値を指定した変数に格納します。
格納される値を次の通りです。
時格納変数: 0 ~ 23 整数
分格納変数: 0 ~ 59 整数
秒格納変数: 0 ~ 59 整数
注意
|
内蔵RTC用のバックアップ電池を搭載していないボードでは、 時刻情報は電源OFFにより初期化されます。 その場合は SETDATE コマンドにて時刻設定を行って下さい。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
DATE 2017/04/01 [Sat] 12:10:51 OK GETTIME A,B,C OK PRINT #-2,a;":";b;":";c 12:11:01 OK
補足
|
PRINT 文の #-2 は数値を2桁(0付き)で表示する指定です。 |
3.7.5. CLT
経過時間カウントのリセット
【書式】
【引数】
なし
【説明】
起動からの経過時間カウンタをリセット(0を設定)します。
TICK 関数使う前に経過時間カウントをリセットすることで0からのカウントを行うことが出来ます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 A=0 20 CLT 30 FOR I=1 TO 10000 40 A=A+1 50 NEXT I 60 PRINT A 70 PRINT TICK();"msec" RUN 10000 225msec
3.7.6. SETDATE
時刻の設定
【書式】
SETDATE 年,月,日,時,分,秒
【引数】
年 |
1900 ~ 2036 の西暦年4桁の整数 |
月 |
1 ~ 12 の整数 |
日 |
1 ~ 31 の整数 |
時 |
0 ~ 23 の整数 |
分 |
0 ~ 59 の整数 |
秒 |
0 ~ 59 の整数 |
【説明】
指定した時刻を内蔵RTCに設定します。
注意
|
内蔵RTC用のバックアップ電池を搭載していないボードでは、 時刻情報は電源OFFにより初期化されます。 その場合は SETDATE コマンドにて時刻設定を行って下さい。 |
【エラーメッセージ】
- Illegal value
-
指定した引数の数値が有効範囲以外
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
Y=2017:M=4:D=1:H=12:N=0:S=0 SETDATE Y,M,D,H,N,S OK DATE 2017/04/01 [Sat] 12:00:03 OK
3.7.7. WAIT
時間待ち
【書式】
WAIT 時間(ミリ秒)
【引数】
- 時間
-
0 ~ 32767 (単位 ミリ秒)
【説明】
引数で指定した 時間 (ミリ秒単位)、時間待ち(ウェイト)を行います。
最大で32767ミリ秒(32.8秒)の時間待ちが可能です。
長い時間待ちを行う必要がある場合は、TICK 関数や GETTIME コマンドを使った方法を検討してください。
注意
|
時間待ち中はキー操作によるプログラム中断を行うことは出来ません。 短い時間の指定にてループ処理を行う等の対策を行ってください。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
待ち時間に範囲外の値を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 SETDATE 2017,4,1,12,0,0 20 CLS 30 LOCATE 5,5 40 DATE 50 WAIT 1000 60 GOTO 30
3.8. GPIO I/O入出力
3.8.1. ANA
アナログ入力
【書式】
ANA (ピン番号)
【引数】
- ピン番号
-
0 ~ 7, 16, 17 または以下のピン番号定数
-
PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7,
PB0, PB1
-
【戻り値】
取得した値: 0~4095(12ビット)
【説明】
指定ピンのアナログ入力値を読み取り、その値を返します。
アナログ入力を行う場合は事前に GPIO コマンドによる機能設定(アナログ入力)が必要です。
注意
|
ピン番号の指定範囲及び定数は、ST32F103C8T6での利用を想定したものです。 ST32F103C8T6以外のMPUにて使う場合は、機能設定できない場合があります。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
ピン番号、モードに範囲外の値を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- '(' or ')' expected
-
’(‘ または ‘)’がない
【利用例】
10 CLS 20 GPIO PB1,ANALOG 30 A=ANA(PB1) 40 LOCATE 5,5: ? A; " " 50 GOTO 30
3.8.2. GPIO
GPIO機能設定
【書式】
GPIO ピン番号, モード
【引数】
- ピン番号
-
0 ~ 34
ピン番号は数値の他に次のピン番号定数での指定も可能です。-
PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA13, PA14, PA15,
PB0, PB1, PB2, PB3, PB4, PB5, PB8, PB10, PB11, PB12, PB13, PB14, PB15,
PC13
-
- モード
【説明】
ボード上の指定したピン番号の入出力機能の設定を行います。
Arduino の pinMode 関数に相当します。
ピン番号の指定には、0 ~ 34の数値または、定数 PA0 ~ PC15 が可能です。
また、GPIO は省略可能です。下記の2行は等価です。
GPIO PA0,OUTPUT PA0,OUTPUT
各モードの機能に対応しているピン番号は次の表の通りです。
モード | ピン番号 |
---|---|
OUTPUT_OD |
PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,PA8,PA9,PA10,PA13,PA14,PA15, |
ANALOG |
PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,PB0,PB1 |
PWM |
グループ1:PA6,PA7,PB0,PB1 |
PWMの同一グループ内ではPWMの周波数は共有となります。
ピン番号にサポートしていないモードを指定した場合、
エラー( Cannot use GPIO fuintion )となります。
注意
|
ピン番号の指定範囲及び定数は、 ST32F103C8T6での利用を想定したものです。 ST32F103C8T6以外のMPUにて使う場合は、 機能設定できない場合があります。 |
注意
|
利用するシステム構成により、利用出来ないピンがあります。 詳細については、「ボート上のピン一覧」を参照して下さい。 |
起動直後では各ピンの設定は、デジタル入力( INPUT_FL )、
またはアナログ入力( ANALOG )となります。
ただし、これは動作を保障するものではありません。
GPIO コマンドによる機能設定を行って下さい。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
ピン番号、モードに範囲外の値を指定した
- Cannot use GPIO fuintion
-
ピン番号に利用出来ないモード設定を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- Illegal value
-
指定した数値が不当である
【利用例】
10 CLS 20 GPIO PB1,ANALOG 30 A=ANA(PB1) 40 LOCATE 5,5: ? A; " " 50 GOTO 30
3.8.3. I2CCLK
I2Cバス速度設定
【書式】
I2CCLK バス速度
【引数】
- バス速度
-
100 : クロック速度 100kHz に設定する
400 : クロック速度 400kHz に設定する(デフォルト値)
【説明】
I2Cバスのクロック速度を設定します。
デフォルト値は、400(400kHz)です。
注意
|
OLED(I2C)版でI2Cバスクロックを100kHzに設定すると、画面表示速度が遅くなります。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した引数の値が不当である
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
I2CCLK 100 OK
3.8.4. I2CR
I2Cデータ受信
【書式】
I2CR (I2Cアドレス, コマンド, コマンド長, 受信データ, データ長)
【引数】
- I2Cアドレス
-
0 ~ 127 ($00 ~ $7F)(7ビット指定)
I2Cスレーブアドレスを7ビット形式で指定 - コマンド
-
0 ~ 32767($0000 ~ $1FFFF)
送信するコマンドが格納されている仮想アドレス - コマンド長
-
0 ~ 32767
送信するコマンドのバイト数 - 受信データ
-
0 ~ 32767($0000 ~ $1FFFF)
受信データを格納するSRAM内仮想アドレス - データ長
-
0 ~ 32767
受信するデータのバイト数
【説明】
I2Cスレーブデバイスからデータを受信します。
注意
|
I2Cバスは必ずプルアップ抵抗によるプルアップを行って下さい。 プルアップされていない状態で I2CR 関数を実行するとハングアップします。 |
通信対象のI2Cデバイス(スレーブ)のアドレスを引数デバイスアドレスに指定します。
受信において、コマンド等の制御データの送信が必要な場合は、
コマンド、コマンド長にてそのデータを指定します。
受信のみを行う場合は、コマンド、コマンド長に0を設定します。
コマンド、受信データは仮想アドレスにて指定します。
仮想アドレスの指定には次の定数を利用することで有用な領域への書込み・参照が簡単に行えます。
定数名 | 仮想化ドレス名 | 概要 |
---|---|---|
画面表示用メモリ(CW×CH) |
サイズはSCREENモードにより可変 |
|
変数領域 |
サイズ 420バイト |
|
配列変数領域(@(0)~@(99) ) |
サイズ 200バイト |
|
プログラム領域 |
サイズ 4,096バイト |
|
ユーザーワーク領域 |
サイズ 1,024バイト |
|
フォント256文字(フラッシュメモリ) |
サイズ 2,048バイト |
|
グラフィック表示用メモリ |
サイズはSCREENモードにより可変 |
|
フラッシュメモリプログラム保存領域 |
サイズ 4,096バイト |
注意
|
有効な仮想アドレス以外の領域への参照はエラーとなります。 |
【戻り値】
0:正常終了
1:通信バッファに対してデータが長すぎる
2:アドレス送信にNACKが返された
3:データ送信にNACKが返された
4:その他のエラー
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した引数の値が不当である
- Out of range value
-
指定した値が有効範囲を超えている
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
100 POKE MEM+0,$00,$00 110 POKE MEM+2,64,65,66,67 120 R=I2CW($50,MEM,2,MEM+2,4) 130 ? "snd r=";R 140 POKE MEM+6,0,0,0,0 150 WAIT 5 160 R=I2CR($50,MEM,2,MEM+6,4) 170 ? "rcv r=";R 180 ? "rcv data:"; 190 FOR I=0 TO 3 200 ? PEEK(MEM+6+I);" "; 210 NEXT I 220 ?
run snd r=0 rcv r=0 rcv data:64 65 66 67 OK
3.8.5. I2CW
I2Cデータ送信
【書式】
I2CW (I2Cアドレス, コマンド, コマンド長, 送信データ, データ長)
【引数】
- I2Cアドレス
-
0 ~ 127 ($00 ~ $7F)(7ビット指定)
I2Cスレーブアドレスを7ビット形式で指定 - コマンド
-
0 ~ 32767($0000 ~ $1FFFF)
送信するコマンドが格納されている仮想アドレス - コマンド長
-
0 ~ 32767
送信するコマンドのバイト数 - 送信データ
-
0 ~ 32767($0000 ~ $1FFFF)
送信するデータが格納されている仮想アドレス - データ長
-
0 ~ 32767 送信するデータのバイト数
【説明】
I2Cスレーブデバイスにデータを送信します。
(注意)I2Cバスは必ずプルアップ抵抗によるプルアップを行って下さい。
プルアップされていない状態で I2CW 関数を実行するとハングアップします。
I2Cアドレスにて送信先のI2Cスレーブアドレスを指定します。
コマンド、送信データはデータを格納した仮想アドレスを指定します。
コマンドと送信データの区別はありません。
デバイスに対して、単純にコマンド、データの順に送信しています。
仮想アドレスの指定には次の定数の利用が便利です。
定数名 | 仮想化ドレス名 | 概要 |
---|---|---|
画面表示用メモリ(CW×CH) |
サイズはSCREENモードにより可変 |
|
変数領域 |
サイズ 420バイト |
|
配列変数領域(@(0)~@(99) ) |
サイズ 200バイト |
|
プログラム領域 |
サイズ 4,096バイト |
|
ユーザーワーク領域 |
サイズ 1,024バイト |
|
フォント256文字(フラッシュメモリ) |
サイズ 2,048バイト |
|
グラフィック表示用メモリ |
サイズはSCREENモードにより可変 |
|
フラッシュメモリプログラム保存領域 |
サイズ 4,096バイト |
注意
|
有効な仮想アドレス以外の領域への参照はエラーとなります。 |
【戻り値】
0:正常終了
1:通信バッファに対してデータが長すぎる
2:アドレス送信にNACKが返された
3:データ送信にNACKが返された
4:その他のエラー
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した引数の値が不当である
- Out of range value
-
指定した値が有効範囲を超えている
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
100 POKE MEM+0,$00,$00 110 POKE MEM+2,64,65,66,67 120 R=I2CW($50,MEM,2,MEM+2,4) 130 ? "snd r=";R 140 POKE MEM+6,0,0,0,0 150 WAIT 5 160 R=I2CR($50,MEM,2,MEM+6,4) 170 ? "rcv r=";R 180 ? "rcv data:"; 190 FOR I=0 TO 3 200 ? PEEK(MEM+6+I);" "; 210 NEXT I 220 ?
run snd r=0 rcv r=0 rcv data:64 65 66 67 OK
10 FOR I=0 TO $7F 20 C=I2CW(I,MEM,0,MEM,0) 30 IF C=0 PRINT HEX$(I,2);" "; 40 NEXT I 50 PRINT :PRINT "done." 実行結果 run 50 done. OK
補足
|
I2Cスレーブアドレスのみ送信し、正常終了(ACKを返した)のアドレスを調べています。 |
3.8.6. IN
デジタル入力
【書式】
IN (ピン番号)
【引数】
- ピン番号
-
0 ~ 34
ピン番号は数値の他に次のピン番号定数の指定も可能です。-
PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA13, PA14, PA15,
PB0, PB1, PB2, PB3, PB4, PB5, PB8, PB10, PB11, PB12, PB13, PB14, PB15,
PC13
-
【説明】
指定ピンの入力値を読み取り、その値を返します。
入力を行う場合は事前に GPIO コマンドによる機能設定(入力設定)が必要です。
注意
|
ピン番号の指定範囲及び定数は、ST32F103C8T6での利用を想定したものです。 ST32F103C8T6以外のMPUにて使う場合は、機能設定できない場合があります。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
ピン番号、モードに範囲外の値を指定した
- Cannot use GPIO fuintion
-
ピン番号に利用出来ないモード設定を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- '(' or ')' expected
-
’(‘ または ‘)’がない
【利用例】
10 GPIO PC13,OUTPUT 20 GPIO PA0,INPUT_PU 30 IF IN(PA0)=OFF ?"ON":OUT PC13,0 ELSE ?"OFF":OUT PC13,1 40 WAIT 200 50 GOTO 30

タクトスイッチを押すと、BullPillボード上のLED(PC13)が点灯します。
PA0ピンは GPIO コマンドで INPUT_PU (プルアップ抵抗あり)を設定し、
ボタンを押さない場合はHIGH、押した場合はLOWとなります。
その値を IN 関数で取得し、LEDを制御しています。
BluePillボード上のLEDは、PC13がソース(吸い込み)制御を行うため、
LOW を出力するとLEDが点灯します。
'''
<<<
3.8.7. SHIFTIN
シリアルシフト入力
【引数】
- データピン番号
-
0 ~ 34 データを入力するピン
- クロックピン番号
-
0 ~ 34 クロックを出力するピン
ピン番号は数値の他に次のピン番号定数の指定も可能です。
-
PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA13, PA14, PA15,
PB0, PB1, PB2, PB3, PB4, PB5, PB8, PB10, PB11, PB12, PB13, PB14, PB15,
PC13
【戻り値】
入力値(1バイト)
【説明】
出力クロックにて同期を行い、データピンから1バイト分のデータを1ビットずつ入力します。
Arduino の shiftIn 関数と同等の動作をします。
引数に条件を指定した場合、クロックが指定した状態の時にデータピンからデータを読み取ります。
条件を指定していない場合は、条件はHIGH(Arduino の shiftIn 関数と同様の仕様)となります。
データピン、クロックピンは事前に GPIO コマンドによる機能設定(デジタル入出力)が必要です。
注意
|
ピン番号の指定範囲及び定数は、ST32F103C8T6での利用を想定したものです。 ST32F103C8T6以外のMPUにて使う場合は、機能設定できない場合があります。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
ピン番号、モードに範囲外の値を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- '(' or ')' expected
-
’(‘ または ‘)’がない
【利用例】
10 CLS 20 GPIO PB12,INPUT_FL 30 GPIO PB13,OUTPUT 40 GPIO PB14,OUTPUT 50 OUT PB13,HIGH 60 OUT PB13,LOW 70 R=SHIFTIN(PB12,PB14,LSB,LOW) 80 LOCATE 0,0:?BIN$(R,8) 90 WAIT 100 100 GOTO 50
3.8.8. SHIFTOUT
シリアルシフト出力
【書式】
SHIFTOUT データピン番号, クロックピン番号, 出力形式, 出力データ
【説明】
クロックにて同期を行い、データピンから1バイト分のデータを1ビットずつ出力します。
Arduino の shiftOut 関数と同等の動作をします。
データピン、クロックピンは事前に GPIO コマンドによる機能設定(デジタル出力)が必要です。
注意
|
ピン番号の指定範囲及び定数は、ST32F103C8T6での利用を想定したものです。 ST32F103C8T6以外のMPUにて使う場合は、機能設定できない場合があります。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
ピン番号、モードに範囲外の値を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 GPIO PB12,OUTPUT 20 GPIO PB13,OUTPUT 30 GPIO PB14,OUTPUT 40 D=$80 50 FOR I=0 TO 6 60 GOSUB "led" 70 D=D>>1 80 WAIT 200 90 NEXT I 100 FOR I=0 TO 6 110 GOSUB "led" 120 D=D<<1 130 WAIT 200 140 NEXT I 150 GOTO 40 160 "led" 170 OUT PB13,LOW 180 SHIFTOUT PB12,PB14,MSB,D 190 OUT PB13,HIGH 200 TONE 600,10 210 RETURN
3.8.9. OUT
デジタル出力
【書式】
OUT ピン番号, 出力値
【引数】
【説明】
指定ピンから、指定した出力を行います。
出力を行う場合は事前に GPIO コマンドによる機能設定(出力設定)が必要です。
注意
|
ピン番号の指定範囲及び定数は、ST32F103C8T6での利用を想定したものです。 ST32F103C8T6以外のMPUにて使う場合は、機能設定できない場合があります。 |
注意
|
利用するシステム構成により、利用出来ないピンがあります。詳細については、 「ボート上のピン一覧」を参照して下さい。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Cannot use GPIO fuintion
-
ピン番号に利用出来ないモード設定を行った
- Illegal value
-
ピン番号、モードに範囲外の値を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 P=PC13 20 GPIO P,OUTPUT 30 OUT P,HIGH 40 FOR I=1 TO 10 50 OUT P,LOW 60 WAIT 300 70 OUT P,HIGH 80 WAIT 300 90 NEXT I
3.8.10. POUT
PWM出力
【引数】
- ピン番号
-
グループ1: 6、7、 8、 9
グループ2: 10、 16、 17ピン番号に対応する下記のピン定数の指定も利用可能です。
グループ1: PA6、PA7、PB0、PB1
グループ2: PA8、PA9、PA10 - デューティー値
-
0 ~ 4095
0 ~ 4095はデューティー比 0%(停止)~100%に対応します。
デューティー比(%)をnとすると、デューティー値 = n × 4095 ÷ 100 - 周波数
-
0 ~ 32767 (単位 Hz)
指定しない場合は490Hzとなります。(Arduino Uno互換)
周波数は同一グループ内で共通設定となります。
【説明】
指定ピンから、PWM出力を行います。
出力を行う場合は事前に GPIO コマンドによるPWM設定(出力設定)が必要です。
パルス出力を停止する場合は、デューティー値に0を指定して下さい。
注意
|
ピン番号の指定範囲及び定数は、ST32F103C8T6での利用を想定したものです。 ST32F103C8T6以外のMPUにて使う場合は、機能設定できない場合があります。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
ピン番号、モードに範囲外の値を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
1 'サーボモーターセイギョ 5 CLS 10 GPIO PB0,ANALOG 20 GPIO PA8,PWM 30 P=MAP(ANA(PB0),0,4095,102,491) 40 POUT PA8,P,50 45 D=MAP(P,102,491,-90,90) 47 LOCATE 0,0:?#3,D 50 GOTO 30
3.8.11. PULSEIN
入力パルス幅の計測力
【引数】
- パルス入力ピン番号
-
データを入力するピン: 0 ~ 34
ピン番号は数値の他に次のピン番号定数の指定も可能です。
-
PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA13, PA14, PA15,
PB0, PB1, PB2, PB3, PB4, PB5, PB8, PB10, PB11, PB12, PB13, PB14, PB15,
PC13- 検出信号
-
LOW、HIGH または 0 、1 測定対象のパルス
- タイムアウト
-
パルス検出待ちタイムアウト時間 0 ~ 32767 (ミリ秒)
- スケール値
-
計測時間のスケール変換 1 ~ 1327671 (デフォルト値 1)
【戻り値】
正常時: 測定した パルス幅 0 ~ 32767(単位はスケール値 × マイクロ秒)
タイムアウト時:0
オバーフロー時:-1
【説明】
パルス入力ピン番号で指定したピンから入力される信号のパルス幅を計測し、その値を返します。
測定完了は、入力ピンの状態が検出信号の状態になった時点で計測を開始し、
検出信号の状態でなくなた時点で計測を終了します。
たとえば、測定する検出信号がHIGHの場合、PULSEIN 関数はピンがHIGHになるのを待ち、
HIGHになった時点で計測を開始し、ピンがLOWになるタイミングで計測を終了し、
そのパルスの長さを返します。タイムアウト内に完全なパルスが受信されなかった場合は0を返します。
測定したパスルが整数値32767を超えた場合は、オーバーフローとし-1を返します。
オーバーフローを回避したい場合は、スケール値を適宜調整して下さい。
スケール値が1の場合、1~31767マイクロ秒までのパルスの測定を行うことが出来ます。
この場合、500kHz~15Hzまでのパルスを測定出来ます。
15Hzより遅い、信号の測定はオーバーフローが発生します。
スケール値が1000の場合、1~31767ミリ秒までのパルスの測定を行うことが出来ます。
この場合、500Hz~0.015Hzまでのパルスの測定が可能です。
本関数は Arduino の pulseIn 関数を利用して計測しています。
測定値はあくまでも目安であり、精度はあまり高くありません。
データピン、クロックピンは事前に GPIO コマンドによる機能設定(デジタル入出力)が必要です。
注意
|
ピン番号の指定範囲及び定数は、ST32F103C8T6での利用を想定したものです。 ST32F103C8T6以外のMPUにて使う場合は、機能設定できない場合があります。 |
NTSC版では、NTSCビデオ信号生成を随時並行して行っているため測定値に誤差が生じます。
NTSC版で利用の場合は、コンソールモードにで測定することで精度が向上します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
ピン番号、モードに範囲外の値を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- '(' or ')' expected
-
’(‘ または ‘)’がない
【利用例】
10 CLS 20 GPIO PA8,INPUT_PU 30 A=PULSEIN(PA8,LOW,200,1) 40 LOCATE 0,0:?#8,A 50 GOTO 30
補足
|
PA8ピンは5Vトレラント(5Vの入力が可能)です。 パスル計測等には5Vトレラントのピンの利用を推奨します。 |
3.9. サウンド
3.9.1. NOTONE
単音出力停止
【書式】
【引数】
なし
【説明】
TONE コマンドによるパスル出力を停止します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
【利用例】
10 TONE 400 20 WAIT 200 30 NOTONE
3.9.2. PLAY
音楽演奏(MML文)
【書式】
PLAY "MML文"
【引数】
- MML文
-
MMLを定義した文字列
【説明】
MML(Music Macro Language)にて定義した文法を元に、
接続している圧電スピーカーを使って単音による、音楽演奏を行います。
MML文には次のコマンドを利用することが出来ます。
-
- 音階記号 [
#
|+
|-
][長さ][.
] -
-
音階指定:C、D、E、F、G、A、B または c、d、e、f、g、a、b
順番に ド、レ、ミ、ファ、ソ、ラ、シ、ド の音階に対応します。
#
:半音上げる(省略可能)
+
:半音上げる(省略可能)
-
:半音下げる(省略可能) -
長さ :1、2、4、8、16、32、64
(省略時はLによる長さ、デフォルト値 4)、省略可能
1は全音符、2は2分音符、4は四分音符、64は64分の一音符 -
.
:長さを半分伸ばす
-
- R[長さ][
.
]:休符 -
-
長さ:1、2、4、8、16、32、64
(省略時はLによる長さ、デフォルト値 4)、省略可能
1は全音符、2は2分音符、4は四分音符、64は64分の一音符 -
.
:長さを半分伸ばす
-
- L<長さ>[
.
] : 音の長さ指定 -
音階記号の長さ省略時の長さの設定。設定前初期値は4(四分音符)
-
長さ: 1、2、4、8、16、32、64
(省略時はLによる長さ、デフォルト値 4)、省略可能
1は全音符、2は2分音符、4は四分音符、64は64分の一音符 -
.
:長さを半分伸ばす
-
- O<オクターブ> : 音の高さを指定
-
-
オクターブ:1~8 初期値は4
-
<
:1オクターブ下げる>
:1オクターブ上げる- T<テンポ>:テンポを指定
-
初期値は120、32~255
- V<音の大きさ>:ボリューム設定
-
初期値は15、0(無音) ~ 15(最大)
PWMのパルス幅で音の大きさを簡易的に再現しています。 - ?:デバッグON
-
演奏中の音階記号を表示します。
PLAYコマンド事に指定する必要があります。 - 空白文字
-
何もせずスキップします。
- 音階記号 [
演奏の中断は ESC キー2回押し、または CTRL+Cキーにて行うことが出来ます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal MML
-
MML文の文法エラー
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
PLAY "CDEFGAB>C" OK
1'ねこふんじゃった 10 PLAY "v15l16d+c+r8f+rf+rd+c+r8f+rf+rd+c+l8rf+r 20 PLAY "f+rl16frfrd+c+r8frfrd+c+r8frfrd+c+l8" 30 PLAY "rfrfrl16f+rf+rd+c+r8f+rf+rd+c+r8f+r 40 PLAY "f+rd+c+l8rf+rf+rl16frfrd+c+r8frfrd+c+r8fr" 50 PLAY "frd+c+l8rfrfrl16f+rf+rd+c+l8rf+rf+rf+r 60 PLAY "f+rf+rf+rl16frfrd+c+l8rfrfrfrfrfrfrl16" 70 PLAY "f+rf+rd+c+r8f+rf+rd+c+r8f+rf+rd+c+l8r 80 PLAY "f+rf+rl16frfrd+c+r8frfrd+c+r8frfrd+c+l8" 90 PLAY "rfrfrl16f+rf+r8.f+rc+c+d8c+8.frf+"
MMLは、下記のサイトに公開されているものを利用しています。
-
主体性の無いページ(http://astr.me.land.to/)
3.9.3. TEMPO
音楽演奏のテンポの設定
【書式】
TEMPO テンポ
【引数】
- テンポ
-
32 ~ 500 (デフォルト 120)
【説明】
PLAY コマンドによる音楽演奏のテンポの設定を行います。
デフォルト値は120です。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
引数に範囲外の値を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 TEMPO 160 20 PLAY "CDEFGAB"
3.9.4. TONE
単音出力
【引数】
- 周波数
-
0 ~ 32767 (Hz) 0の場合は消音
- 出力期間
-
0 ~ 32767 (ミリ秒) 0の場合は、継続再生
【説明】
PB9 ピンより、指定した周波数のパルス出力(デューティ比50%)を行います。
PB9 ピンに圧電スピーカー(圧電サウンダ)を接続すること音を出すことが出来ます。
出力期間の指定がある場合は、その期間パスルを出力します(ミリ秒単位)。
出力期間の指定がある場合、出力完了待ちを行います。
出力期間の指定がない場合は、NOTONE コマンドで停止指示をするまでパスルを出力し続けます。
( TONE 0は NOTONE と等価です)
ド | ド♯ | レ | レ♯ | ミ | ファ | ファ♯ | ソ | ソ♯ | ラ | ラ♯ | シ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
33 |
35 |
37 |
39 |
41 |
44 |
46 |
49 |
52 |
55 |
58 |
62 |
2 |
65 |
69 |
73 |
78 |
82 |
87 |
93 |
98 |
104 |
110 |
117 |
123 |
3 |
131 |
139 |
147 |
156 |
165 |
175 |
185 |
196 |
208 |
220 |
233 |
247 |
4 |
262 |
277 |
294 |
311 |
330 |
349 |
370 |
392 |
415 |
440 |
466 |
494 |
5 |
523 |
554 |
587 |
622 |
659 |
698 |
740 |
784 |
831 |
880 |
932 |
988 |
6 |
1047 |
1109 |
1175 |
1245 |
1319 |
1397 |
1480 |
1568 |
1661 |
1760 |
1865 |
1976 |
7 |
2093 |
2217 |
2349 |
2489 |
2637 |
2794 |
2960 |
3136 |
3322 |
3520 |
3729 |
3951 |
8 |
4186 |
4435 |
4699 |
4978 |
5274 |
5588 |
5920 |
6272 |
6643 |
7040 |
7459 |
7902 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 IF INKEY() = 32 TONE 800,50 20 GOTO 10
3.10. ファイル操作
3.10.1. BLOAD
SDカードからバイナリデータ読込
【書式】
BLOAD "ファイル名" , アドレス, バイト数 [,ファイル内位置]
【引数】
- "ファイル名"
-
"ディレクトリパス(省略可能) + ファイル8文字 + 拡張子3文字" の形式
- アドレス
-
読み込みデータ格納アドレス $0000 ~
- バイト数
-
読み込みデータサイズ 1~32767
- ファイル内位置
-
ファイル内読み込み開始位置(バイト) 0~32767(省略時 0)
【説明】
SDカードから指定した ファイル の内容を指定した アドレス に指定 バイト数 分、読み込みます。
アドレス には仮想アドレスを有効範囲内で指定します。
ファイル内位置 を指定した場合は、ファイル先頭から指定位置のバイト位置からデータを読み込みます。
仮想アドレスの指定には次の定数を利用することで有用な領域の指定が簡単に行えます。
定数名 | 仮想化ドレス名 | 概要 |
---|---|---|
画面表示用メモリ(CW×CH) |
サイズはSCREENモードにより可変 |
|
変数領域 |
サイズ 420バイト |
|
配列変数領域(@(0)~@(99) ) |
サイズ 200バイト |
|
プログラム領域 |
サイズ 4,096バイト |
|
ユーザーワーク領域 |
サイズ 1,024バイト |
|
フォント256文字(フラッシュメモリ) |
サイズ 2,048バイト |
|
グラフィック表示用メモリ |
サイズはSCREENモードにより可変 |
|
フラッシュメモリプログラム保存領域 |
サイズ 4,096バイト |
パソコンで作成したデータファイルや、BSAVE で保存したユーザーワーク領域、
変数領域等内容を読み込んで利用することが出来ます。
ファイル名には、PRINT 文と同じ書式の記述が可能です。
フラッシュメモリプログラム保存領域に対しては、ERASEコマンドによる消去した直後に、1回だけ直接読み込んで更新することが出来ます。
10 N=1 20 BLOAD #-2,"DATA";N;".BIN",MEM,1024 OK
上記の例では、ファイル "DATA01.BIN"をユーザー作業領域に読み込みます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した引数が有効範囲を超えている
- Bad file name
-
指定したファイル名が正しくない
- SD I/O error
-
SDカードの利用が出来ない
- File read error
-
SDカードからのファイル読み込みに失敗した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
BSAVE "GDATA.BIN",GRAM,6048 OK CLS OK BLOAD "GDATA.BIN",GRAM,6048 OK
3.10.2. BSAVE
SDカードへのバイナリデータ保存
【書式】
BSAVE "ファイル名" ,アドレス ,バイト数 [,ファイル内位置]
【引数】
- "ファイル名"
-
"ディレクトリパス(省略可能)+ファイル8文字+拡張子3文字" の形式
- アドレス
-
保存データ格納アドレス: $0000~
- バイト数
-
保存データサイズ: 1~32767
- ファイル内位置
-
ファイル内読み込み開始位置(バイト) 0~32767(省略時 0)
【説明】
指定した アドレス に格納されいてるバイナリデータをSDカードに保存します。
アドレスには仮想アドレスを有効範囲内で指定します。
ファイル内位置 を指定した場合は、ファイル先頭から指定位置のからデータを書き込みます(たたし、既存領域の更新のみ対応)。
仮想アドレスの指定には次の定数を利用することで有用な領域の指定が簡単に行えます。
定数名 | 仮想化ドレス名 | 概要 |
---|---|---|
画面表示用メモリ(CW×CH) |
サイズはSCREENモードにより可変 |
|
変数領域 |
サイズ 420バイト |
|
配列変数領域(@(0)~@(99) ) |
サイズ 200バイト |
|
プログラム領域 |
サイズ 4,096バイト |
|
ユーザーワーク領域 |
サイズ 1,024バイト |
|
フォント256文字(フラッシュメモリ) |
サイズ 2,048バイト |
|
グラフィック表示用メモリ |
サイズはSCREENモードにより可変 |
|
フラッシュメモリプログラム保存領域 |
サイズ 4,096バイト |
ファイル名には、PRINT 文と同じ書式の記述が可能です。
10 N=1 20 BSAVE #-2,"DATA";N;".BIN",MEM,1024 OK
上記の例では、ユーザー作業領域をファイル名 "DATA01.BIN"に保存します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した引数が有効範囲を超えている
- Bad file name
-
指定したファイル名が正しくない
- SD I/O error
-
SDカードの利用が出来ない
- File write error
-
SDカードへのファイル書き込みに失敗した。
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
BSAVE "GDATA.BIN",GRAM,6048 OK CLS OK BLOAD "GDATA.BIN",GRAM,6048 OK
3.10.3. CAT
ファイルの内容表示
【書式】
CAT "ファイル名"
【引数】
- "ファイル名"
-
"ディレクトリパス(省略可能)+ファイル8文字+拡張子3文字" の形式(63文字まで)
【説明】
SDカード内の指定したテキストファイルの内容を画面に表示します。
表示テキストには先頭にコメントコマンド(')が付加されます。
ファイル名にはディレクトリ名+ファイル名の形式での記述が可能です。
上位のディレクトリ名は"/"です(名前指定において省略可能)。
次の2つは同じ動作をします。
CAT "/SAMPLE.BAS" CAT "SAMPLE.BAS"
ディレクトリ内のファイルを表示する場合はそのディレクトリ名も指定します。
CAT "/SRC/SAMPLE.BAS"
または
CAT "SRC/SAMPLE.BAS"
注意
|
バイナリ形式のファイルには対応していません。 |
ファイル名には、PRINT 文と同じ書式の記述が可能です。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Bad file name
-
指定したファイル名が正しくない
- SD I/O error
-
SDカードの利用が出来ない
- File read error
-
SDカードからのファイル読み込みに失敗した
【利用例】
CAT "/SRC/SAMPLE.BAS" ’10 PRINT "Hello Tiny BASIC” ’20 PRINT “Hello Arduino STM32” ’30 END OK
3.10.4. LDBMP
ビットマップファイルの読み込み
【書式】
LDBMP "ファイル名", 仮想アドレス, Bx, By, 幅, 高さ[,色指定]
【引数】
- "ファイル名"
-
"ディレクトリパス(省略可能)+ファイル8文字+拡張子3文字" の形式
- 仮想アドレス
-
データの読み込みアドレス(仮想アドレス)
- Bx
-
ビットマップ画像の切り出し横座標: 0 ~ 32767
- By
-
ビットマップ画像の切り出し縦座標: 0 ~ 32767
- 幅
-
ビットマップ画像の切り出しドット幅: 1 ~ 32767
- 高さ
-
ビットマップ画像の切り出しドット高: 1 ~ 32767
- 色指定
-
0 変換なし、1 反転
【説明】
SDカード内のWindowsビットマップファイル(モノクロ2値)の指定領域を
指定した仮想メモリ上に格納します。
読み込む画像はファイル名で指定します。
仮想アドレスの指定には次の定数を利用することで有用な領域の指定が簡単に行えます。
定数名 | 仮想化ドレス名 | 概要 |
---|---|---|
画面表示用メモリ(CW×CH) |
サイズはSCREENモードにより可変 |
|
変数領域 |
サイズ 420バイト |
|
配列変数領域(@(0)~@(99) ) |
サイズ 200バイト |
|
プログラム領域 |
サイズ 4,096バイト |
|
ユーザーワーク領域 |
サイズ 1,024バイト |
|
フォント256文字(フラッシュメモリ) |
サイズ 2,048バイト |
|
グラフィック表示用メモリ |
サイズはSCREENモードにより可変 |
|
フラッシュメモリプログラム保存領域 |
サイズ 4,096バイト |
ビットマップ画像上の座標Bx、Byから指定した幅、高さの画像を指定したアドレスに
連続データとして格納します。

指定した幅、高さがビットマップ画像よりも大きい場合は、
切り出し幅、高さを画像サイズにて調整します。
引数の色指定にて、元の画像の白・黒を反転して読み込む指定が可能です。
注意
|
連続したデータが指定した保存可能な領域を オーバーするチェックは行っていません。 あらかじめ画像サイズを見積もった上で利用して下さい。 ユーザーワーク領域(1024バイト)を利用した場合、格納できる画像は、 128ドット×64ドットの画像程度です。 大きい画像を表示する場合、グラフィック表示用メモリに直接読み込むか、 DWBMP コマンドを利用して下さい。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】

10 CLS 20 LDBMP "TT.BMP",MEM,0,0,96,64 30 BITMAP 10,30,MEM,0,96,64,2 40 GOTO 40

同画像を、「豊」「四」「季」「TBASIC」の4つに分けて読込み、BITMAP コマンドで
分離して表示する。「豊」は反転して読み込む。
10 CLS 20 LDBMP "TT.BMP",MEM,0,0,32,32,1 30 LDBMP "TT.BMP",MEM+128,32,0,32,32 40 LDBMP "TT.BMP",MEM+256,64,0,32,32 50 LDBMP "TT.BMP",MEM+384,0,32,96,32 60 BITMAP 10,30,MEM,0,32,32,2 70 BITMAP 74,40,MEM,1,32,32,2 80 BITMAP 138,50,MEM,2,32,32,2 90 BITMAP 10,120,MEM+384,0,96,32,2

大きいサイズの画像を直接グラフィック表示用メモリに読み込んで画像を表示する
10 CLS 20 LDBMP "CAT.BMP",GRAM,0,0,GW,GH 30 GOTO 30

画像はHelm42さんの猫絵を利用させて頂いています。
http://free-illustrations.gatag.net/tag/%E7%8C%AB-%E3%83%8D%E3%82%B3
3.10.5. MKDIR
ディレクトリの作成
【書式】
MKDIR "ディレクトリ名"
【引数】
- “ディレクトリ名”
-
1~63文字までのディレクトリ名
【説明】
SDカード内に指定したディレクトリを作成します。
指定するディレクトリ名は、上位ディレクトリ名を含めて最大63文字まで指定可能です。
作成するディレクトリの名称は8文字可能です。大文字小文字の区別はありません。
上位のディレクトリ名は"/"です(名前指定において省略可能)。
次の2つは同じ動作をします。
MKDIR "/DIR1" MIDIR "DIR1"
サブディレクトリの作成は次のように記述します。
MKDIR "/DIR1/SUBDIR"
または
MKDIR "DIR1/SUBDIR"
上位のディレクトリがない場合にサブディレクトリ作成を行った場合、
親ディレクトリも作成されます。
次のコマンドでは、DIR2とDIR2/SUBDIR が作成されます。
MKDIR “DIR2/SUBDIR”
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Bad file name
-
指定したファイル名が正しくない
- SD I/O error
-
SDカードの利用が出来ない
- File write error
-
SDカードへのファイル書き込みに失敗した。
【利用例】
MKDIR "SRC" OK
3.10.6. REMOVE
ファイルの削除
【書式】
REMOVE "ファイル名"
【引数】
- "ファイル名"
-
"ディレクトリパス(省略可能)+ファイル8文字+拡張子3文字" の形式(63文字まで)
【説明】
SDカード内の指定したファイルを削除します。
ファイル名にはディレクトリ名+ファイル名の形式での記述が可能です。
上位のディレクトリ名は"/"です(名前指定において省略可能)。
次の2つは同じ動作をします。
REMOVE "/SAMPLE.BAS" REMOVE "SAMPLE.BAS"
ディレクトリ内のファイルを削除する場合はそのディレクトリ名も指定します。
REMOVE "/SRC/SAMPLE.BAS"
または
REMOVE "SRC/SAMPLE.BAS"
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Bad file name
-
指定したファイル名が正しくない
- SD I/O error
-
SDカードの利用が出来ない
- File write error
-
SDカードへのファイル書き込みに失敗した。
【利用例】
REMOVE "/SRC/SAMPLE.BAS" OK
3.10.7. RMDIR
ディレクトリの削除
【書式】
RMDIR "ディレクトリ名"
【引数】
- "ディレクトリ名"
-
1~63文字までのディレクトリ名
【説明】
SDカード内の指定したディレクトリを削除します。
指定したディレクトリにサブディレクトリやファイルが存在する場合、そのファイルも削除されます。
指定するディレクトリ名は、上位ディレクトリ名を含めて最大63文字まで指定可能です。
作成するディレクトリの名称は8文字可能です。大文字小文字の区別はありません。
上位のディレクトリ名は"/"です(名前指定において省略可能)。
次の2つは同じ動作をします。
RMDIR "/DIR1" RMDIR "DIR1"
サブディレクトリの削除は次のように記述します。
RMDIR "/DIR1/SUBDIR"
または
RMDIR "DIR1/SUBDIR"
注意
|
ルートディレクトリの削除は出来ません。 RMDIR "/" は"Bad file name"エラーとなります。 |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Bad file name
-
指定したファイル名が正しくない
- SD I/O error
-
SDカードの利用が出来ない
- File write error
-
SDカードへのファイル書き込みに失敗した。
【利用例】
RMDIR "SRC" OK
3.11. グラフィック表示
3.11.1. BITMAP
ビットマップ画像の描画
【書式】
BITMAP 横座標, 縦座標, アドレス, インデックス, 幅, 高さ [,倍率 [,色 [,モード]]]
【引数】
- 横座標
-
0 ~ GW-1
- 縦座標
-
0 ~ GH-1
- アドレス
-
数値(任意の仮想アドレス)
- インデックス
-
0 ~ 32767
- 幅
-
1 ~ GW-1
- 高さ
-
1 ~ GH-1
- 倍率
-
1 ~ 8
- 色
-
0 ~ 8, $0009 ~ $FFFF デフォルト値:7(白)
TFT版のみ有効 - モード
-
0: モノクロビットマップ(デフォルト値)
1: 16ビット色ビットマップ
TFT版のみ有効
【説明】
指定した座標に指定した アドレス に格納されている ビットマップ画像 を描画します。
インデックス を指定することで、複数の画像パターンを切り替えて表示することが出来ます。
画像パターンが1のみの場合は、インデックス に0を指定します。
ビットマップ画像 は、1ドットを1ビットの 0 or 1の連続データで定義します。
TFT版では1ドットに16ビットを割り当てた16ビット色の利用も可能です。
この場合、引数のモードにて1を指定します。
TFT版でモノクロビットマップを利用する場合、引数にて色指定を行うことが出来ます。
色コードについては、COLOR コマンドの引数を参照して下さい。
引数の アドレス には描画対象の画像データの先頭格納アドレスを指定します。
インデックス には画像データの先頭格納の格納位置を指定します。
モノクロビットマップの場合、+
(幅 + 7) / 8 + 高さ x インデックス
の計算にて参照する画像格納位置を移動します。
16ビット色ビットマップでは1ドット2バイトとし、+
幅 x 高さ x 2 x インデックス
の計算で参照する画像格納位置を移動します。
仮想アドレスの指定には次の定数を利用することで有用な領域の指定が簡単に行えます。
定数名 | 仮想化ドレス名 | 概要 |
---|---|---|
画面表示用メモリ(CW×CH) |
サイズはSCREENモードにより可変 |
|
変数領域 |
サイズ 420バイト |
|
配列変数領域(@(0)~@(99) ) |
サイズ 200バイト |
|
プログラム領域 |
サイズ 4,096バイト |
|
ユーザーワーク領域 |
サイズ 1,024バイト |
|
フォント256文字(フラッシュメモリ) |
サイズ 2,048バイト |
|
グラフィック表示用メモリ |
サイズはSCREENモードにより可変 |
|
フラッシュメモリプログラム保存領域 |
サイズ 4,096バイト |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 CLS 20 POKE MEM+0,$10,$40,$48,$90,$5F,$D0,$77,$70 30 POKE MEM+8,$3F,$E0,$1F,$C0,$10,$40,$20,$20 40 POKE MEM+16,$10,$40,$08,$80,$1F,$C0,$37,$60 50 POKE MEM+24,$7F,$F0,$5F,$D0,$50,$50,$0D,$80 60 FOR A=0 TO 20 70 BITMAP A,0,MEM,A%2,12,8,4 80 WAIT 200 90 NEXT A

3.11.2. CIRCLE
円の描画
【書式】
CIRCLE 横中心座標, 縦中心座標, 半径, 色, モード
【引数】
- 横中心座標
-
:0 ~ GW-1
- 縦中心座標
-
:0 ~ GH-1
- 半径
-
:1 ~ GW-1
- 色
-
0 黒 、1 白 、2 反転 (NTSC、OLED画面利用時)
0 ~ 8 または RGBコード $0009~$FFFF(TFT画面利用時) - モード
-
0 塗りつぶしなし,0以外 塗りつぶしあり
GW、GHはグラフィック画面の横ドット数、縦ドット数を示す定数です。
この定数は、画面解像度により変わります。
【説明】
指定した中心座標(横中心座標,縦中心座標)を起点に指定した半径の円を色で描画します。
NTSC版、OLED版では、2色のみ利用可能です。
色に2をした場合は、座標位置の色を反転して描画します。
TFT(ILI9341)ディスプレイでは色コード 0~8 または、
RGBコードとして $0009 ~ $FFFFの色指定が可能です。
色コード 0~8は次の色に割り当てています。
色コード | 色 |
---|---|
|
黒 |
|
赤 |
|
緑 |
|
茶 |
|
青 |
|
マゼンタ |
|
シアン |
|
白(デフォルト) |
|
黄 |
RGBコードの指定は、RGB 関数を使うことで直感的な色を指定することが出来ます。
CIRCLE 100,100,50,RGB(31,0,0),1
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 CLS 20 FOR Y=0 TO 215 STEP 40 30 FOR X=0 TO 223 STEP 40 40 CIRCLE X,Y,30,1,0 50 NEXT X 60 NEXT Y 70 GOTO 70

3.11.3. CSCROLL
キャラクタ画面スクロール
【書式】
CSCROLL x1, y1, x2 ,y2, 方向
【引数】
【説明】
画面の指定範囲でテキストを1文字単位でスクロールします。
本コマンドは、シリアルコンソール画面では利用出来ません。
画面全体をスクロールしたい場合は、

CSCROLL 0,0,CW-1,CH-1,LEFT
のように、画面の左上の位置と画面右下の位置を指定します。
指定した範囲をスクロールしたい場合は、
CSCROLL 3,3,13,5,LEFT
のように範囲を指定します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- Illegal value
-
指定した数値が不当である
- Not supported
-
シリアルコンソール画面で実行した
【利用例】
10 CLS 20 LOCATE 10,10:?"Hello,TinyBASIC" 25 WAIT 200 30 FOR I=0 TO 15 40 CSCROLL 10,10,24,10,LEFT 50 WAIT 500 60 NEXT I
3.11.4. DWBMP
BMPファイルの表示
【書式】
DWBMP "ファイル名", x, y [, Bx, By, 幅, 高さ[,色指定]]
【引数】
- "ファイル名"
-
"ディレクトリパス(省略可能)+ファイル8文字+拡張子3文字" の形式
- x
-
画像表示位置 横: 0 ~ GW-1
- y
-
画像表示位置 縦: 0 ~ GH-1
- Bx
-
ビットマップ画像の切り出し横座標: 0 ~ 32767(省略時は0)
- By
-
ビットマップ画像の切り出し縦座標: 0 ~ 32767(省略時は0)
- 幅
-
ビットマップ画像の切り出しドット幅: 1 ~ GW(省略時は画像幅)
- 高さ
-
ビットマップ画像の切り出しドット高: 1 ~ GH(省略時は画像高さ)
- 色指定
-
0 変換なし、1 反転 (省略時 0)
TFTディスプレイの場合、16ビット色ビットマップファイル利用では無視されます。
【説明】
SDカード内のWindowsビットマップファイルの指定領域の画像を切り出して、指定した座標(x,y)に表示します。
NTSC、OLEDディスプレイの場合、ビットマップファイルはモノクロ(白黒2値)画像のみ利用出来ます。
TFTデスプレイの場合、16ビット色ビットマップファイルも利用出来ます。
ビットマップ画像上の座標Bx、Byから指定した幅、高さの画像を切り出して指定位置に表示します。

表示位置のx、 ビットマップ画像の切り出し位置Bx、切り出し幅はバイト境界である8の倍数である必要があります。8の倍数でない場合は8の倍数に丸めます。
NTSC、OLEDディスプレイの場合、引数の色指定にて、元の画像の白・黒を反転して読み込む指定が可能です。
TFTディスプレイの場合、引数の色指定は利用出来ません。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
下記の横96ドット、縦64ドットの画像(768バイト)ファイル"TT.BMP"を3つ表示する。
それのれの画像表示開始位置は、座標(0,0)、座標(8,64)、座標(16,130)とする。

10 CLS 20 DWBMP "TT.BMP",0,0,0,0,96,64 30 DWBMP "TT.BMP",8,65,0,0,96,64 40 DWBMP "TT.BMP",16,130,0,0,96,64 50 GOTO 50

同画像から指定境域の画像を切り出して表示する
10 CLS 20 DWBMP "TT.BMP",0,0,0,0,30,30 30 DWBMP "TT.BMP",8,33,0,0,64,32 40 DWBMP "TT.BMP",16,66,0,32,96,32 50 GOTO 50

3.11.5. GCLS
グラフィックデバイス画面のクリア
【書式】
【引数】
なし
【説明】
グラフィックデバイス画面(NTSC、TFT、OLED)の表示内容を消去します。
TFT、OLED版でシリアルコンソールモードを利用している際に、グラフィックデバイス画面をクリアする場合に利用します。シリアルコンソール画面をクリアしたい場合は、CLSコマンドを利用して下さい。
NTSC版では、シリアルコンソールモード中は、グラフィックデバイス画面の利用が出来ないため、GCLSコマンドによる画面消去は行うことが出来出来ません。実行しても何も処理を行いません。
【エラーメッセージ】
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- Syntax error
-
文法エラー、書式と異なる利用を行った
【利用例】
GCLS OK
3.11.6. GCOLOR
グラフィック文字描画の前景色、背景色の設定
【引数】
- 文字色
-
色コード 0~8、または RGBコード:$0009 ~ $FFFF
- 背景色
-
色コード 0~8、または RGBコード:$0009 ~ $FFFF
【説明】
グラフィックデバイス画面の文字色、背景色を設定します。
OLED画面では、単色(0 または 1)のみ設定可能です。
NTSC画面では、設定は無効となります(0~8以外の値の設定時はエラーとなります)。
シリアルコンソール版では、COLORコマンドと同じ動作となります。
TFT(ILI9341)ディスプレイでは、色コードの他に、16ビット色が利用可能です。
色コード | 色 |
---|---|
|
黒 |
|
赤 |
|
緑 |
|
茶 |
|
青 |
|
マゼンタ |
|
シアン |
|
白(デフォルト) |
|
黄 |
16ビット色(RGBコード)は次の構成となります。

16ビット色(RGBコード)は、RGB 関数を使うここで簡単に得られます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
色コードに範囲外の値を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 GCOLOR 7,4:GCLS 20 FOR X=0 TO GW-1 STEP 6 30 FOR Y=0 TO GH-1 STEP 8 40 GCOLOR RGB(RND(31),RND(63),RND(31)) 50 GPRINT X,Y,"*" 60 NEXT Y 70 ? 80 NEXT X 90 GOTO 80
3.11.7. GINP
指定領域内ピクセル検出(数値関数)
【書式】
GINP (横位置,縦位置,高さ,幅,色)
【引数】
- 横位置
-
0~GW - 1
- 縦位置
-
0~GH - 1
- 幅
-
1 ~ GW-1
- 高さ
-
1 ~ GH-1
- 色
-
0 黒 、1 白 (NTSC、OLED画面利用時)
0 ~ 8 または RGBコード $0009~$FFFF(TFT画面利用時)
GW、GHはグラフィック画面の横ドット数、縦ドット数を示す定数です。
画面解像度より異なります。
【戻り値】
1 :指定領域内(境界含む)に指定した色のピクセルが存在する
0 :指定領域内(境界含む)に指定した色のピクセルが存在しない
【説明】
指定した領域内の指定した色のピクセルが存在するをチェックし、その結果を返します。

NTSC版、OLED版では、2色(0 黒 、1 白)の指定可能です。
TFT(ILI9341)ディスプレイでは色コード 0~8 または、
RGBコードとして $0009 ~ $FFFFの色指定が可能です。
色コード 0~8は次の色に割り当てています。
色コード | 色 |
---|---|
|
黒 |
|
赤 |
|
緑 |
|
茶 |
|
青 |
|
マゼンタ |
|
シアン |
|
白(デフォルト) |
|
黄 |
RGBコードの指定は、RGB 関数を使うことで直感的な色を指定することが出来ます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- '(' or ')' expected
-
’(‘ または ‘)’が無い
【利用例】
10 B=0 10 FOR I=0 TO 7 20 B=(B<<1)+GPEEK(I,0) 30 NEXT I 40 PRINT BIN$(B,8) 50 END
3.11.8. GPEEK
画面上の指定位置ピクセルの参照(数値関数)
【書式】
GPEEK (横位置 , 縦位置)
【引数】
- 横位置
-
0~GW - 1
- 縦位置
-
0~GH - 1
GW、GHはグラフィック画面の横ドット数、縦ドット数を示す定数です。
画面解像度により異なります。
【戻り値】
指定位置に表示されているピクセルの色: 0 または 1
【説明】
画面上の指定位置に表示されているピクセルを参照します。
引数の指定位置が範囲外の場合は0を返します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- '(' or ')' expected
-
’(‘ または ‘)’が無い
【利用例】
10 B=0 10 FOR I=0 TO 7 20 B=(B<<1)+GPEEK(I,0) 30 NEXT I 40 PRINT BIN$(B,8) 50 END
3.11.9. GPRINT
文字列の描画
【書式】
GPRINT 横座標, 縦座標
GPRINT 横座標, 縦座標, 文字列 | 数値
GPRINT 横座標, 縦座標, 文字列 | 数値 ;
GPRINT 横座標, 縦座標, 文字列 | 数値 ;
文字列 | 数値 ;
…
GPRINT 横座標, 縦座標, 文字列 | 数値 ;
文字列 | 数値 ;
… ;
GPRINT 横座標, 縦座標, #
桁数 , 文字列 | 数値;文字列 | 数値 ;
… ;
| はいずれのうち1つを示す
… は可変指定を示す
;
は連結指定、カンマ’,’も可能
【引数】
- 横座標
-
横描画位置 0 ~ GW-1(通常は223)
- 縦座標
-
縦描画位置 0 ~ GH-1(通常は215)
- 文字列
-
文字列定数または文字列関数
- 数値
-
数値定数、変数、配列変数、または数値関数、式
- 連結指定
-
セミコロン’;’ または カンマ‘,’
文末に付けると改行抑制される - 桁数
-
#数値 または #-数値 の形式で指定する
例:#3 、 #-3
【説明】
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 GETTIME A,B,C 20 GPRINT 0,0,#-2,A;":";B;":";C 30 WAIT 1000 40 GOTO 10
10:52:00
3.11.10. GSCROLL
グラフィックスクロール
【書式】
GSCROLL x1, y1, x2, y2,方向
【引数】
GW、GHはグラフィック画面の横ドット数、縦ドット数を示す定数です。
この定数は、画面解像度により変わります。
【説明】
画面上の指定範囲表示内容を1ドット単位でスクロールします。
注意
|
本コマンドは、シリアルコンソール画面、 TFTディスプレイでは利用出来ません。 |
NTSC版での使用時には次の制約があります。OLEDディスプレイでは制約はありません。
右上横方向x1は 8の倍数で指定 して下さい(バイト境界指定)。
左下横座標x2は 8の倍数-1 で指定指定して下さい(バイト境界指定)。
上記以外の数値を指定した場合、指定数値をバイト境界に補正します。
画面全体を左スクロールしたい場合は、

GSCROLL 0, 0,GW-1,GH-1 , LEFT
のように、画面全体の領域を指定します。
指定した範囲をスクロールしたい場合は、
GSCROLL 16,30,207,100, LEFT
のように範囲を指定します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- Illegal value
-
指定した数値が不当である
【利用例】
10 'oscilloscope 20 CLS 30 GPIO PB1,ANALOG 40 "LOOP" 50 R=ANA(PB1) 60 Q=R/20 70 LOCATE 0,0:?R;" " 80 PSET 223,221-Q,1 90 WAIT 50 100 GSCROLL 0,8,GW-1,GH-1,LEFT 110 GOTO "LOOP"
3.11.11. LINE
直線の描画
【書式】
LINE 横座標1, 縦座標1, 横座標2, 縦座標2,色
【引数】
- 横座標1
-
0 ~ GW-1
- 縦座標1
-
0 ~ GH-1
- 横座標2
-
0 ~ GW-1
- 縦座標2
-
0 ~ GH-1
- 色
-
0 黒 、1 白 、2 反転 (NTSC、OLED画面利用時)
0 ~ 8 または RGBコード $0009~$FFFF(TFT画面利用時)
GW、GHはグラフィック画面の横ドット数、縦ドット数を示す定数です。
この定数は、画面解像度により変わります。
【説明】
指定したグラフィク座標 (横座標1,縦座標1)と(横座標2,縦座標2)間を結ぶ直線を指定した色で描画します。
NTSC版、OLED版では、2色のみ利用可能です。
色に2をした場合は、座標位置の色を反転して描画します。
TFT(ILI9341)ディスプレイでは色コード 0~8 または、
RGBコードとして $0009 ~ $FFFFの色指定が可能です。
色コード 0~8は次の色に割り当てています。
色コード | 色 |
---|---|
|
黒 |
|
赤 |
|
緑 |
|
茶 |
|
青 |
|
マゼンタ |
|
シアン |
|
白(デフォルト) |
|
黄 |
RGBコードの指定は、RGB 関数を使うことで直感的な色を指定することが出来ます。
LINE 100,100,200,200,RGB(31,0,0)
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 CLS 20 FOR X=0 TO 223 STEP 4 30 LINE X,0,223-X,215,1 40 NEXT X 50 GOTO 50

3.11.12. PSET
点の描画
【書式】
PSET 横座標, 縦座標, 色
【引数】
- 横座標
-
0 ~ GW-1 (注意 最大値は利用環境により異なる場合があります)
- 縦座標
-
0 ~ GH-1 (注意 最大値は利用環境により異なる場合があります)
- 色
-
0 黒 、1 白 、2 反転 (NTSC、OLED画面利用時)
0 ~ 8 または RGBコード $0009~$FFFF(TFT画面利用時)
GW、GHはグラフィック画面の横ドット数、縦ドット数を示す定数です。
この定数は、画面解像度に設定等により変わります。
【説明】
指定したグラフィク座標に指定した色の点を描画します。
本コマンドはシリアルコンソールでは利用出来ません。
NTSC版、OLED版では、2色のみ利用可能です。
色に2をした場合は、座標位置の色を反転して描画します。
TFT(ILI9341)ディスプレイでは色コード 0~8 または、
RGBコードとして $0009 ~ $FFFFの色指定が可能です。
色コード 0~8は次の色に割り当てています。
色コード | 色 |
---|---|
|
黒 |
|
赤 |
|
緑 |
|
茶 |
|
青 |
|
マゼンタ |
|
シアン |
|
白(デフォルト) |
|
黄 |
RGBコードの指定は、RGB 関数を使うことで直感的な色を指定することが出来ます。
PSET 100,100,RGB(31,0,0)
注意
|
範囲外の座標を指定した場合、 範囲内の境界に描画します。 + |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 CLS 20 FOR N=0 TO 30000 30 IF V!=99 Y=Y+V:V=V+1 40 X=RND(200)-100 50 Y=RND(200)-100 60 IF X*X+Y*Y<10000 PSET X+110,Y+108,1 70 NEXT N 80 GOTO 80

3.11.13. RECT
矩形の描画
【書式】
RECT x1, y1,x2, y2, 色, モード
【引数】
- x1
-
左上横座標0 ~ GW-1(最大値は環境により可変)
- y1
-
左上縦座標0 ~ GH-1(最大値は環境により可変)
- x2
-
右下横座標0 ~ GW-1(最大値は環境により可変)
- y2
-
右下縦座標0 ~ GH-1(最大値は環境により可変)
- 色
-
0 黒 、1 白 、2 反転 (NTSC、OLED画面利用時)
0 ~ 8 または RGBコード $0009~$FFFF(TFT画面利用時) - モード
-
0 塗りつぶしなし,0以外 塗りつぶしあり
GW、GHはグラフィック画面の横ドット数、縦ドット数を示す定数です。
この定数は、画面解像度により変わります。
【説明】
指定した位置に指定した色で矩形を描画します。
NTSC版、OLED版では、2色のみ利用可能です。
色に2をした場合は、座標位置の色を反転して描画します。
TFT(ILI9341)ディスプレイでは色コード 0~8 または、
RGBコードとして $0009 ~ $FFFFの色指定が可能です。
色コード 0~8は次の色に割り当てています。
色コード | 色 |
---|---|
|
黒 |
|
赤 |
|
緑 |
|
茶 |
|
青 |
|
マゼンタ |
|
シアン |
|
白(デフォルト) |
|
黄 |
RGBコードの指定は、RGB 関数を使うことで直感的な色を指定することが出来ます。
RECT 100,100,200,200,RGB(31,0,0),1
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- Illegal value
-
指定した数値が不当である
【利用例】
10 CLS 20 RECT 50,50,70,90,1,1 30 RECT 60,60,80,80,2,0 40 RECT 80,80,110,110,1,0 50 GOTO 50

3.11.14. RGB
3原色からRGBコード変換(数値関数)
【書式】
RGB (赤, 緑, 青)
【引数】
- 赤
-
赤色のレベル 0 ~ 31 (5ビット)
- 緑
-
緑色のレベル 0 ~ 63 (6ビット)
- 青
-
青色のレベル 0 ~ 31 (5ビット)
【戻り値】
RGBコード(16ビット)
【説明】
赤、緑、青の各色成分のレベルを合成した16ビットのRGBコードを返します。
本関数はカラー表示可能なTFTディスプレイの色指定を補助する関数です。
TFT(ILI9341)ディスプレイでは16ビットの色指定が可能です。
RGBコードは次の構成となります。

TFT(ILI9341)ディスプレイではRGBコードとして $0009 ~ $FFFFの色指定が可能です。
$0000~$0008は、次の色に割り当てています。
色コード | 色 |
---|---|
|
黒 |
|
赤 |
|
緑 |
|
茶 |
|
青 |
|
マゼンタ |
|
シアン |
|
白(デフォルト) |
|
黄 |
RGBコードは、緑のみ6ビット(0~63)であることに注意して下さい。
(人間の目は赤・青・緑のうち、緑に敏感なため、1ビット多く割り当てられています)
RGBコードの0~8は、色コードとして利用しているため、
RGB(0,0,0) ~ RGB(0,0,8)はRGBコードとしては利用できません。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が有効範囲を超えている
- '(' or ')' expected
-
’(‘ または ‘)’が無い
【利用例】
10 CLS 20 FOR C=0 TO 31 30 RECT 0,0,GW-1,GH-1,RGB(C,C,C),1 40 NEXT C
3.11.15. SCREEN
スクリーンモードの設定
【書式】
SCREEN モード [,画面向き]
【引数】
- モード
-
1 ~ 6 の整数
- 画面向き
-
0 ~ 3 の整数
【説明】
デバイスコンソールのスクリーンモードの設定を行います。
設定可能なモード、画面向きは利用するデバイスコンソールにより異なります。
デバイスコンソールがNTSCビデオ出力画面の場合
- モードの設定値
-
次の値の指定が可能です。
モード(値) | 名称 | 機能 |
---|---|---|
|
モード1 |
画面解像度 224×216ドット |
|
モード2 |
画面解像度 224×108ドット |
|
モード3 |
画面解像度 112×108ドット |
- 画面向き
-
指定出来ません
デバイスコンソールがOLEDディスプレイの場合
- モードの設定値
-
次の値の指定が可能です。
モード(値) | 名称 | 機能 |
---|---|---|
|
ノーマルモード |
画面解像度 128×64 |
|
フォント倍角 |
画面解像度 128×64 |
|
フォント3倍角 |
画面解像度 128×64 |
- 画面向き
-
0(デフォルト) ~ 3の指定で90度ずつ回転することが出来ます。
TFT(ILI9341)ディスプレイの場合
- モードの設定値
-
次の値の指定が可能です。
モード(値) | 名称 | 機能 |
---|---|---|
|
ノーマルモード |
画面解像度 320×240 |
|
フォント倍角 |
画面解像度 320×240 |
|
フォント3倍角 |
画面解像度 320×240 |
|
フォント4倍角 |
画面解像度 320×240 |
|
フォント5倍角 |
画面解像度 320×240 |
|
フォント6倍角 |
画面解像度 320×240 |
- 画面向き
-
0(デフォルト) ~ 3の指定で90度ずつ回転することが出来ます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った、引数に数値以外を指定した
- Illegal value
-
指定した引数の値が範囲外である
- Overflow
-
指定した数値が-32767 ~ 32767を超えている
【利用例】
スクリーンモードをモード1に設定する
SCREEN 1
3.12. シリアル通信
3.12.1. SCLOSE
シリアル通信クローズ
【書式】
SCLOSE 通信速度
【引数】
なし
【説明】
データ通信設定したシリアルポートのシリアル通信を終了します。
シリアルポートが既にオープン状態の場合は、シリアルポートをクローズしてからオープンします。
シリアル通信の利用には次のコマンドが利用出来ます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
【利用例】
10 SOPEN "9600" 20 SPRINT "Hello,TinyBASIC" 30 SCLOSE
3.12.2. SMODE
シリアルポート機能設定
【引数】
- 通信速度
-
文字列形式の数値 "110"~ "921600"
- 制御コード処理指定
-
0 制御コードを処理しない、1:制御コードを処理する
【説明】
2つのシリアルポート(USBポート、GPIOシリアルポート)に関する機能設定を行います。
シリアルポートが既にオープン状態の場合は、シリアルポートをクローズしてからオープンします。
シリアル通信の利用には次のコマンドが利用出来ます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した引数に範囲外の値を指定した
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
SMODE 1,"115200" OK
3.12.3. SOPEN
シリアル通信オープン
【書式】
SOPEN 通信速度
【引数】
- 通信速度
-
文字列形式の数値 "110"~ "921600"
例:"115200"
【説明】
データ通信設定したGPIOシリアルポート(PA9、PA10)のシリアル通信の利用を開始します。
通信速度は文字列形式の数値で指定します。
シリアルポートが既にオープン状態の場合は、シリアルポートをクローズしてからオープンします。
シリアル通信の利用には次のコマンドが利用出来ます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した引数に範囲外の値を指定した
【利用例】
10 SMODE 0 20 SOPEN "9600" 30 SPRINT "Hello,TinyBASIC" 40 SCLOSE
3.12.4. SPRINT
シリアル通信文字列出力
【書式】
SPRINT
SPRINT 文字列 | 数値
SPRINT 文字列 | 数値 ;
SPRINT 文字列 | 数値 ;
文字列 | 数値 ;
…
SPRINT 文字列 | 数値 ;
文字列 | 数値 ;
… ;
SPRINT #
桁数 ,
文字列 | 数値 ;
文字列 | 数値 ;
… ;
| はいずれのうち1つを示す
… は可変指定を示す
’;
’ は連結指定、カンマ ’,
’ も可能
【引数】
- 文字列
-
文字列定数または文字列関数
- 数値
-
数値定数、変数、配列変数、または数値関数、式
- 連結指定
-
セミコロン ’
;
’ または カンマ ’,
’
文末に付けると改行抑制される - 桁数
-
’
#
’ 数値 または ’#
’ -数値 の形式で指定する
例:#3
、#-3
【説明】
指定した文字列、数値をデータ通信設定したシリアルポートに出力します。
書式は PRINT 文と同じです。
表示要素である文字列、数値は区切り文字のセミコロン’;
’、またはカンマ’,
’にて連結して表示することが出来ます。
連結表示において、数値は桁指定により指定した桁幅にて等間隔で表示します。
桁指定においてマイナスの数値を指定した場合は、間隔を0で補完します。
正の数値の場合は空白文字で補完します。
SPRINT 文の引数の最後に’;
’または’,
’が付加されている場合は改行しません。
付加されていない場合は引数の内容を表示後、改行します。
シリアルポートが既にオープン状態の場合は、シリアルポートをクローズしてからオープンします。
シリアル通信の利用には次のコマンドが利用出来ます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 SOPEN "9600" 20 SPRINT "Hello,TinyBASIC" 30 SCLOSE
3.12.5. SREAD
シリアル通信1バイト受信(数値関数)
【書式】
SREAD ()
【引数】
なし
【戻り値】
受信データ :0 ~ 255、データなしの場合は-1
【説明】
データ通信設定したシリアルポートから1バイトデータを受信します。
データが無い場合は-1を返します。データが無い場合の受信待ちは行いません。
シリアルポートが既にオープン状態の場合は、シリアルポートをクローズしてからオープンします。
シリアル通信の利用には次のコマンドが利用出来ます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
【利用例】
10 SOPEN "115200" 20 IF SREADY()=0 GOTO 20 30 D=SREAD() 40 IF D=ASC(".") GOTO 80 50 IF D=$0D ? 60 IF D>=32 ? CHR$(D); 70 GOTO 20 80 SCLOSE 90 ? :? "Done."
画面に受信した文字を表示します。
受信したデータが `.`の場合はプログラムを終了します。
表示可能な文字はそのまま表示します。
受信したデータ$ODの場合は改行します。
それ以外の制御文字は無視します。
3.12.6. SREADY
シリアル通信データ受信確認(数値関数)
【書式】
SREADY ()
【引数】
なし
【戻り値】
0:受信データなし
1:受信データあり
【説明】
シリアルポートに受信可能なデータが着信しているかを確認します。
シリアルポートから SREAD 関数にてデータの受信を行う際に、事前にデータの有無を確認することが出来ます。
シリアルポートが既にオープン状態の場合は、シリアルポートをクローズしてからオープンします。
シリアル通信の利用には次のコマンドが利用出来ます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
【利用例】
10 SOPEN "115200" 20 IF SREADY()=0 GOTO 20 30 D=SREAD() 40 IF D=ASC(".") GOTO 80 50 IF D=$0D ? 60 IF D>=32 ? CHR$(D); 70 GOTO 20 80 SCLOSE 90 ? :? "Done."
画面に受信した文字を表示します。
受信したデータが `.`の場合はプログラムを終了します。
表示可能な文字はそのまま表示します。
受信したデータ$ODの場合は改行します。
それ以外の制御文字は無視します。
3.12.7. SWRITE
シリアル通信1バイト出力
【書式】
SWRITE 送信データ
【引数】
- 送信データ
-
0~255
(1バイトデータ、変数指定時は上位8ビットは無視)
【説明】
データ通信設定したシリアルポートに1バイト分のデータを出力します。
シリアルポートが既にオープン状態の場合は、シリアルポートをクローズしてからオープンします。
シリアル通信の利用には次のコマンドが利用出来ます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
【利用例】
10 SOPEN "115200" 20 FOR C=ASC("A") TO ASC("Z") 30 SWRITE C 40 NEXT C 50 SCLOSE
3.13. 仮想EEPROM
3.13.1. EEPFORMAT
仮想EEPROMのフォーマット
【書式】
【引数】
なし
【説明】
仮想EEPROMのフォーマットして初期化を行います。
仮想EEPROMとは内部フラッシュメモリの一部をソフトウェアにてEEPROMのように利用するものです。
仮想EEPROMに書き込んだデータは、マイコンボードの電源を落としても保持されます。
EEPFORMAT コマンドは仮想的にEEPROMとして利用するためにフラッシュメモリの初期化処理を行います。
既に EEPWTIRE コマンドにてデータの書込みを行っている場合、そのデータを含めて初期化されます。
仮想EEPROMはフラッシュメモリの2ページ(1024バイト×2)を利用しています。
フラッシュメモリの書込み回数の制約を考慮し、同じアドレスへの繰り返し書き込みに対して書き込み位置を分散しています。
仮想EEPROMへのデータ保存は2バイト単位(変数のバイト数と同じ)です。
保存可能なデータ量は250ワード(250バイト)となります。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
【利用例】
EEPFORMAT OK
3.13.2. EEPREAD
仮想EEPROMデータ読み込み(数値関数)
【書式】
EEPREAD (アドレス)
【引数】
- アドレス
-
仮想EEPROM内アドレス 0 ~ 32767
【戻り値】
読みだした2バイトデータ(-32768~32767, $0000~$FFFF)
【説明】
仮想EEPROMの指定したアドレスから2バイトデータを取得します。
書き込み単位は2バイトです。仮想EEPROMに初めてデータ書き込みを行う場合は事前に EEPFORMAT コマンドで初期化をしておく必要があります。
仮想EEPROMとは内部フラッシュメモリの一部をソフトウェアにてEEPROMのように利用するものです。仮想EEPROMに書き込んだデータは、マイコンボードの電源を落としても保持されます。
仮想EEPROMはフラッシュメモリの2ページ(1024バイト×2)を利用しています。
フラッシュメモリの書込み回数の制約を考慮し、同じアドレスへの繰り返し書き込みに対して書き込み位置を分散しています。
保存可能なデータ量は最大で250ワード(500バイト)となります。
EEPWRITE 、EEPREAD コマンドで指定する読書きを指定するアドレスは実際にはアドレスではなく、検索キーです。0~32767の間に任意で利用出来ます。
検索キー数はデータ保存量が250ワードの制約から、250以内に抑える必要あります。仮想EEPROMの機構から数十以内に抑えることを推奨します。
EEPREAD コマンドは、指定したアドレスを検索キーとして該当するデータを返します。該当するデータない場合は0を返します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- EEPROM bad FLASH
-
フラッシュメモリの異常が発生した
【利用例】
EEPWRITE 1234, 123 OK ?EEPREAD(1234) 123 OK
3.13.3. EEPWRITE
仮想EEPROMデータ書き込み
【書式】
EEPWRITE アドレス, データ
【引数】
- アドレス
-
仮想EEPROM内アドレス 0 ~ 32767
- データ
-
書き込みデータ -32768 ~ 32767 または $0000 ~ $FFFF(2バイト分)
【説明】
仮想EEPROMの指定したアドレスにデータを書き込みます。
書き込み単位は2バイトです。仮想EEPROMに初めてデータ書き込みを行う場合は事前に EEPFORMAT コマンドで初期化をしておく必要があります。
仮想EEPROMとは内部フラッシュメモリの一部をソフトウェアにてEEPROMのように利用するものです。仮想EEPROMに書き込んだデータは、マイコンボードの電源を落としても保持されます。
仮想EEPROMはフラッシュメモリの2ページ(1024バイト×2)を利用しています。
フラッシュメモリの書込み回数の制約を考慮し、同じアドレスへの繰り返し書き込みに対して書き込み位置を分散しています。
保存可能なデータ量は最大で250ワード(500バイト)となります。
EEPWRITE 、EEPREAD コマンドで指定する読書きを指定するアドレスは実際にはアドレスではなく、検索キーです。0~32767の間に任意で利用出来ます。
検索キー数はデータ保存量が250ワードの制約から、250以内に抑える必要あります。仮想EEPROMの機構から数十以内に抑えることを推奨します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- EEPROM out size
-
書き込み容量を超えた
- EEPROM bad FLASH
-
フラッシュメモリの異常が発生した
【利用例】
EEPWRITE 1234, 123 OK ?EEPREAD(1234) 123 OK
3.14. 漢字フォント
3.14.1. KANJI
漢字文字列の描画
【書式】
KANJI 横座標, 縦座標, 文字列
【引数】
【説明】
指定した座標にSDカード漢字フォントを使った文字列描画を行います。
NTSC、OLED、TFTのグラフィックデバイス画面にて描画にて利用出来ます。
半角カタカナフォントは未サポートのため、代わりに対応する全角カタカナのデータ(全角)で描画します。
文字列には、PRINTと同等の記述が可能です(ただし、改行、改行抑制は不可)。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- Illegal value
-
指定した引数が有効範囲を超えている
- SD I/O error
-
SDカードの利用が出来ない
- File open error
-
漢字フォント読み込み失敗
【利用例】
SETKANJI 16,1,2,2,GW-1 KANJI 0,0,"さいたま"
3.14.2. KFONT
漢字フォントデータの取得(数値関数)
【書式】
KFONT(アドレス, 文字コード, サイズ)
【引数】
- アドレス
-
取得したフォントデータを格納する仮想アドレス
- 文字コード
-
1バイト半角文字コード または 2バイト シフトJISコード
- サイズ
-
取得するフォントサイズ(ドット)
8、10、12、14、16、20、24 のいずれかを指定する
【戻り値】
取得結果を返す
0:該当フォントなし、1:全角文字、 2:半角文字
【説明】
文字コード、フォントサイズ(8、10、12、14、16、20、24)に対応するフォントデータを取得し、指定した仮想アドレスに格納します。
8~24の範囲で、8、10、12、14、16、20、24以外の値を指定した場合は、その値以下の近いフォントサイスが選択されます。
半角カタカナフォントは未サポートのため、代わりに対応する全角カタカナのデータ(全角)を取得します。
仮想アドレスの指定には次の定数を利用することで有用な領域への書込み・参照が簡単に行えます。
定数名 | 仮想化ドレス名 | 概要 |
---|---|---|
画面表示用メモリ(CW×CH) |
サイズはSCREENモードにより可変 |
|
変数領域 |
サイズ 420バイト |
|
配列変数領域(@(0)~@(99) ) |
サイズ 200バイト |
|
プログラム領域 |
サイズ 4,096バイト |
|
ユーザーワーク領域 |
サイズ 1,024バイト |
|
フォント256文字(フラッシュメモリ) |
サイズ 2,048バイト |
|
グラフィック表示用メモリ |
サイズはSCREENモードにより可変 |
|
フラッシュメモリプログラム保存領域 |
サイズ 4,096バイト |
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した引数が有効範囲を超えている
- SD I/O error
-
SDカードの利用が出来ない
- File open error
-
漢字フォント読み込み失敗
【利用例】
10 R=KFONT(MEM,ASC("あ"),8) 20 FOR I=0 TO 7 30 FOR J=0 TO 7 40 IF PEEK(MEM+I)&($80>>J) ?"#"; ELSE ?" "; 50 NEXT J 60 ? 70 NEXT I
run # ##### # #### ## # # # ## # ## # OK
3.14.3. SETKANJI
漢字フォントの描画の設定
【書式】
SETKANJI サイズ,[倍角[,横間隔,行間[,折り返し]]]
【引数】
- サイズ
-
取得するフォントサイズ(ドット)
8、10、12、14、16、20、24 のいずれかを指定する - 倍角
-
1 ~ 16
描画を行う拡大倍率(倍) - 横間隔
-
横に表示するフォントとフォントの間隔(ドット)
- 行間
-
縦に表示するフォントとフォントの間隔(ドット)
- 折返し
-
画面左側の折返し改行する横座標(ドット)
1 ~ GW - 1
【説明】
KANJIコマンドで利用する漢字フォントに対しての設定を行います。
サイズにはフォントサイズ(8、10、12、14、16、20、24)、倍角には1~16、横間隔、
行間は文字と文字の間に空けるドット数、折り返しには画面右側の折り返しする横座標を指定すします。
デフォルトの設定は、SETKANJI 8,1,0,0,GW-1 です。
8~24の範囲で、8、10、12、14、16、20、24以外の値を指定した場合は、その値以下の近いフォントサイスが選択されます。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Overflow
-
指定した数値が-32768 ~ 32767を超えている
- Illegal value
-
指定した引数が有効範囲を超えている
【利用例】
SETKANJI 16,1,2,2,GW-1 KANJI 0,0,"さいたま"
3.14.4. ZEN
半角文字コードを全角に変換(数値関数)
【書式】
ZEN(文字コード)
【引数】
- 文字コード
-
1バイト半角文字コード または 2バイト シフトJISコード
【戻り値】
変換した文字コード
変換できない場合は文字コードをそのまま返す
【説明】
指定した 文字コード が半角文字の場合、その全角文字コードを返します。
変換可能な*文字コード*は、半角記号、英数字、半角カタカナです。
変換できない場合は、引数の 文字コード をそのまま前します。
【エラーメッセージ】
- Syntax error
-
文法エラー、書式と異なる利用を行った
- Illegal value
-
指定した引数が有効範囲を超えている
【利用例】
?HEX$(ZEN(ASC("A"))) 8260 OK