11 BASIC基本仕様
BASIC基本仕様
SmileBASICの基本仕様や制限事項について。
11 BASIC基本仕様
基本要素
文字 | マルチバイト文字で管理 |
---|---|
文字種類 | 数字、英数字、カナ、記号 |
数の表現 | 32ビット固定小数(四捨五入) 4096を1.0として扱う。 整数部は、±524287の範囲。 範囲外の数値は扱えません。 |
16進表記 | &H |
2進表記 | &B |
変数 | 英字で始まる最大16文字まで、ただし _(アンダースコア) は受け付ける。文字列型の変数は、名前の最後に$をつける。 (例) ANS=75:C$="TEXT" |
ラベル文字列 | @で始まるラベル名が入った文字列型変数 |
配列 | 要素数の合計は262144個、2次元配列まで対応。括弧は () 又は []。添字は0から始まる。 (例) DIM NO(10)の範囲は、 NO(0)〜NO(9)まで。 文字列用の変数は最大4096個までしか利用できません。配列としての定義と実際に利用できる個数が異なります。最大数を超えるとエラーとなります。 |
複数命令 | 可能( :(コロン)で区切る) |
サブルーチンとネスト | 制限無し、FOR〜NEXT も同様(メモリーの範囲内) |
ファイル制御構造 | ファイル読み書き中は専用ダイアログが表示されて終わるまで強制待機。 |
ファイル読み書き単位 | リソース単位(ユーザーによる自由な読み書きはできません) |
ファイル名 | 英字で始まる8文字以内 ( 'A'〜'Z' , '_' , '0'〜'9' ) |
演算子(算術・比較・ビット)
◆算術演算子は、以下の5種類
+ | 加算 (A+B) |
---|---|
- | 減算 (A-B) |
* | 乗算 (A*B) |
/ | 除算 (A/B) ※0除算はエラー |
% | 剰余 (A%B) ※0除算はエラー |
文字列変数は加算と乗算が利用できます。
(例) 文字列の足し算
A$="ABC":B$="XYZ":PRINT A$+B$
結果→ ABCXYZ
(例) 文字列の掛け算(乗算)
A$="ABC"*4:PRINT A$
結果→ ABCABCABCABC
◆比較演算子は、以下の6種類
> | 左辺が右辺より大きい (A>B) |
---|---|
< | 左辺が右辺より小さい (A<B) |
>= | 左辺が右辺より大きいか等しい (A>=B) ※=>は禁止 |
<= | 左辺が右辺より小さいか等しい (A<=B) ※=<は禁止 |
== | 両辺が等しい (A==B) |
!= | 両辺が等しくない (A!=B) |
◆ビット演算子は、以下の4種類
AND | 論理積 (A AND B) |
---|---|
OR | 論理和 (A OR B) |
XOR | 排他的論理和 (A XOR B) |
NOT | 否定 (NOT A) |
◆真偽を反転する演算子
! | 真偽反転記号 ※ !TRUE は、FALSEと同じ ※ !FALSEは、TRUEと同じ |
---|
◆演算子優先順位
1 | ( )[] で囲まれた部分 |
---|---|
2 | マイナス NOT ! |
3 | 関数 |
4 | * / %(乗除余) |
5 | + - |
6 | == != < <= > >= |
7 | AND OR XOR |
編集機能
テキスト用のメモリーは約52万文字程度の文字を扱うことができます。これ以上の文字を入力した場合は、最大行数(行内の最大文字数)以内でも登録できなくなります。
エディタ | 「編集モード」に搭載される行単位のテキストエディタ。ENTERキーの入力で自動的に行番号が挿入される。テキストの折り返しは行わない。 |
---|---|
行の範囲 | 1〜9999(1行の文字数が多い時、最大行数まで使えない) |
行番号の扱い | テキストエディタの行の番号として扱う。改行で自動的に増加し、GOTOやGOSUBなどの命令は、行番号指定はできない仕様となっている。分岐命令については、行番号ではなく「@ラベル名」を利用する。 |
1行の文字数 | 1行100文字まで、画面に表示できない範囲は横方向へのスクロールで確認。(テキスト用のメモリーが不足すると1行内の文字数に満たない状態でも入力できなくなります) |
入力装置
キーボード | ソフトウェアキーボード (英字、カナ、記号) |
---|---|
ハードウェアボタン | 利用可能(セレクトボタンはESCキーとして利用、Lボタンとスタートボタンは実行時のみ開放) |
タッチパネル | システム変数 TCHST、TCHX、TCHY で利用可能 |
表示関係
表示優先順位 | ユーザーSPRITE及びグラフィック面は、ユーザー用BG面に対して優先順位設定可能。 | ||||||
---|---|---|---|---|---|---|---|
前 上画面 表示階層 奥 | コンソール画面 ユーザー用BG面(前) ユーザー用SPRITE面 ユーザー用BG面(奥) グラフィック面 背景面 | ||||||
前 下画面 表示階層 奥 | キーボードおよびパネル ユーザー用BG面(前) ユーザー用SPRITE面 ユーザー用BG面(奥) グラフィック面 背景面 | ||||||
解像度 | 256x192ドット | ||||||
コンソール文字数 | 32文字x24行(最終行で改行すると1行スクロールする) | ||||||
アニメ機能 | SPRITE命令による簡易アニメ再生 | ||||||
キャラ機能 | 8x8ドット単位の画像。SPRITEやBG専用のリソース(CHR形式)。
| ||||||
同時発色数 | 上画面と下画面に独立した色の指定が可能。下記色数の合計。
| ||||||
パレット | SPRITEとBG用の色は、透明1色を含む16色を1パレットと呼びパレット単位で色番号を指定する。 | ||||||
文字色 | 文字用の色は、SPRITEとBG用に定義されている各パレット内の色番号15番目を利用している。この色を変更した場合、画面内の文字色も変化する。 | ||||||
背景色 | BG用のパレット0番の0番目の色は、背景色として利用されます。 |
サウンド関係
同時発音数 | BGMと効果音と音声合成を合わせて16音(PSG含まず)。 |
---|---|
効果音 | プリセット音70種類。周波数、音量、パンポットの変更。同時に8音まで再生。 |
音声合成 | カタカナ文字列で音声を発声。話者、感情、ピッチ等の変更。 |
BGM用音源 | 128種類の楽器音。 2種類のドラムセット。 PSGとノイズ音源。 ユーザー定義簡易波形音源。 |
BGM用波形定義 | 32種類の波形定義に対応。 |
BGM | プリセット30曲。 ユーザー定義128曲。 最大8曲同時に演奏が可能。 |
エラー番号表
BASICを実行中に発生するエラーや警告表現には以下の要素があります。エラー発生時、システム変数ERRにエラー番号、ERLに行番号が記録されます。
1 | Syntax error | おかしな文法が含まれています。 |
---|---|---|
2 | Out of range | 数値が有効範囲を超えました。 |
3 | Out of memory | メモリーが不足しています。 |
4 | Undefined label | 分岐先が見つかりません。 |
5 | NEXT without FOR | FORに対応しないNEXTがあります。 |
6 | Out of DATA | READで取得するためのDATAが不足しています。 |
7 | Illegal function call | 関数や命令の機能の指定方法が間違っています。 |
8 | Duplicate definition | 配列や変数を二重に定義しました。 |
9 | Can't continue | CONTでプログラムを再開できません。 |
10 | Missing operand | パラメータが不足しています。 |
11 | Duplicate label | ラベルを二重に定義しました。 |
12 | Illegal resource type | 指定されたリソース種類文字列は存在しません。 |
13 | Illegal character type | 指定された種類のキャラは存在しません。 |
14 | String too long | 文字列が長すぎます。ラベルは8文字、文字列は256文字以内で収めてください。 |
15 | Division by zero | 0による除算を行いました。 |
16 | Overflow | 演算結果が許容範囲を超えました。 |
17 | Subscript out of range | 配列変数の添字が範囲外です。 |
18 | Type mismatch | 変数の型が一致しません。 |
19 | Fomula too complex | 式が複雑すぎます(括弧が多すぎるなど)。 |
20 | RETURN without GOSUB | GOSUBがないのにRETURNがあります。 |
21 | FOR without NEXT | NEXTに対応しないFORがあります。 |
22 | Illegal MML | MMLに間違いがあります。 |