X-
BASICは、1980年代後半に
シャープが開発・販売したパーソナル
コンピュータ、
X68000のために、
ハドソンと
シャープが共同で開発したプログラミング言語です。その名称に「
BASIC」とありますが、従来の多くの
BASIC言語とは一線を画す、
C言語ライクな構造化構文を採用している点が最大の特徴です。この独自性から、一般的な
BASICとは異なる印象を持つユーザーも少なくありません。
一般的な
BASIC言語ではキーワードや変数名を大文字で記述することが多い中、X-
BASICでは予約語が小文字で記述されるなど、小文字を積極的に使用する点も独自性の一つです。
言語仕様の特徴
構文
実行可能なプログラムコードは、従来の
BASICと同様に各行の先頭に
行番号を記述する必要があります。しかし、トークン(キーワード、変数名など)の大文字・小文字は区別され、言語の予約語は小文字で記述されます。
構造化構文を表現するため、処理のまとまりであるブロックはブレース `{}` で囲んで記述します。これにより、複数のステートメントをグループ化することが可能です。
変数と配列
X-
BASICの変数は型を持ち、使用前に型を指定して宣言する必要があります。サポートされている基本的なデータ型は以下の通りです。
`int`: 32ビット長の符号付き整数を扱います。
`char`: 8ビット長の符号なし整数を扱います。
`float`: 倍精度浮動小数点数を扱います。
`str`: 最大255文字の文字列を扱います。
配列は `dim` ステートメントを用いて定義し、要素へのアクセスは添え字を丸括弧 `()` で囲んで指定します。
制御構造
繰り返し処理のための制御構造として、基本的な `for~next` に加え、`while~endwhile` および `repeat~until` ステートメントが用意されていました。`while~endwhile` ループ内では、`break` や `continue` といった制御フローを変更するステートメントも使用できます。
関数
ユーザー定義関数は、プログラムの終端を示す `end` ステートメントより後の行に、`func` から `endfunc` までのブロックとして記述します。関数が受け取る引数は、丸括弧 `()` の中に、変数名とその型をカンマ区切りで列挙して定義します。
また、ユーザーが定義した関数は、
行番号を付けずにファイルとして保存することで、ライブラリのように再利用可能なモジュールとして管理できます。これらの関数ライブラリを使用する際は、プログラムの終端を示す`end`よりも後の行に、
行番号を付けてロードする必要がありました。
外部関数
X-
BASICインタプリタ環境は、
アセンブリ言語などで記述された外部モジュールを追加・削除することで、
インタプリタの機能を拡張し、外部関数として利用できる柔軟な仕組みを備えていました。
開発環境とコンパイル
X68000には、エディタ機能を内蔵したX-
BASICインタプリタ環境が標準で付属していました。これは手軽にプログラムを作成・実行できる環境でしたが、より高速な実行性能を求める場合、別売りのC
コンパイラと組み合わせる方法がありました。
この方法では、X-
BASICのソースコードを一度
C言語に変換し、それを
機械語にコンパイルするという手順を踏んで実行ファイルを生成します。
ただし、X-
BASICから
C言語への変換時には、両言語の仕様(特に
演算子の優先順位など)に細かな違いが存在し、意図しない動作を引き起こす可能性がありました。この問題を軽減するため、ソースコードの構文をチェックし、潜在的な問題を検出する専用ツール「XBAStoC CHECKER PRO-68K(通称BCチェッカ)」が提供されていました。
関連情報
X-
BASICの学習を深めるための解説書も複数出版されており、『
X68000 X-
BASIC入門』などが存在します。
X-
BASICは、その開発プラットフォームである
X68000の特性を活かす設計がなされており、
BASIC言語の一種でありながら、
C言語のような側面も持ち合わせています。
X68000のOSである
Human68k上でのプログラミング言語の一つとして広く利用されました。