プチコンmkII









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== != < <= > >=
7AND 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形式)。
BGUユーザー用4バンク
(BGU0〜BGU3)
SPUユーザー用8バンク
(SPU0〜SPU7)
同時発色数上画面と下画面に独立した色の指定が可能。下記色数の合計。
BG透明含む16色x16種
SP透明含む16色x16種
GRP256色(0番は透明色)
パレット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に行番号が記録されます。

1Syntax errorおかしな文法が含まれています。
2Out of range数値が有効範囲を超えました。
3Out of memoryメモリーが不足しています。
4Undefined label分岐先が見つかりません。
5NEXT without FORFORに対応しないNEXTがあります。
6Out of DATAREADで取得するためのDATAが不足しています。
7Illegal function call関数や命令の機能の指定方法が間違っています。
8Duplicate definition配列や変数を二重に定義しました。
9Can't continueCONTでプログラムを再開できません。
10Missing operandパラメータが不足しています。
11Duplicate labelラベルを二重に定義しました。
12Illegal resource type指定されたリソース種類文字列は存在しません。
13Illegal character type指定された種類のキャラは存在しません。
14String too long文字列が長すぎます。ラベルは8文字、文字列は256文字以内で収めてください。
15Division by zero0による除算を行いました。
16Overflow演算結果が許容範囲を超えました。
17Subscript out of range配列変数の添字が範囲外です。
18Type mismatch変数の型が一致しません。
19Fomula too complex式が複雑すぎます(括弧が多すぎるなど)。
20RETURN without GOSUBGOSUBがないのにRETURNがあります。
21FOR without NEXTNEXTに対応しないFORがあります。
22Illegal MMLMMLに間違いがあります。