1章 命令一覧
まず、BASICの各命令について、その構文と機能の一覧を示します。それぞれの命令は図2.1の書式で解説されています。
[図2.1 命令一覧表の書式]
- 命令の書式
- 命令のタイプ,命令の機能、動作
(a) 命令の構文
キーワードの前に“*”が付いている命令は、ver1.0の命令に構文や機能の上で変更があったもの、またはver2.0で新しく追加されたものです。
構文の記述には、以下の記法を用いています。
・[項目] ……………………省略可能であることを示す。
・[, 項目・・・] …………同様な項目をいくつでも並べてよいことを示す。
・{項目1|項目2} …………どれかひとつの項目を選ぶことを示す。
また、構文の中で使用されている<ファイル名>とは、以下のような形式で、入出力の対象となるI/O機器やファイルを指定する文字列です。この中で、カセットファイルに対する<filenname>は6文字以下の任意文字列、ディスクおよびRAMディスクに対する<filename>は、"<filename前部(8文字以下)>+<拡張子(3文字以下)>"の形式の文字列で表されます。<ドライブ>はA〜H(上限は接続されているドライブの数により決定)の1文字で表されます。
“CAS:<filename>”…………………カセットファイル
“MEM:<filename>”…………………RAMディスク
“CRT:”………………………………テキスト画面
“GRP:”………………………………グラフィック画面
“LPT:”………………………………プリンタ
“<ドライブ>:<filename>”………ディスクファイル
(b) 命令のタイプ
以下の4種類があります。
・ファンクション…………与えたパラメータにしたがって、なんらかの値を返すもの
・システム変数……………BASICシステムが持っている変数。一般に代入も可能
・ステートメント…………なんらかの動作を行うもの
・コマンド…………………BASICインタープリタ自身に関する指示を与えるもの
(c) 命令の機能または動作
各命令がどのような動作を行うものか簡単に述べます。ver2.0で追加または変更された命令については、2章でさらに詳しい命令を行います。
1.1 MSX BASIC ver2.0の命令
A
- ABS (<数式>)
- ファンクション <数式>の絶対値を返す。
- ASC (<文字列>)
- ファンクション <文字列>の最初の文字のキャラクタコードを返す。
- ATN (<数式>)
- ファンクション <数式>の逆正接(アークタンジェント)を返す。角度の単位はラジアン。
- AUTO [<行番号>[,<増分>]]
- コマンド 行番号を自動的に発生する。
B
- * BASE (<数式>)
- システム変数 VRAM上に割り当てられている画面関係のテーブルアドレスを持つ。
- BEEP
- ステートメント BEEP音を音声端子に出力する。
- BIN$ (<数式>)
- ファンクション <数式>の値を2進表記の文字列に変換し、その結果を返す。
- BLOAD "<ファイル名>"[,R[,[<オフセット値>]]
- コマンド マシン語プログラムをロードする。
- BSAVE "<ファイル名>",<開始アドレス>,<終了アドレス>[,<実行開始アドレス>]
- コマンド マシン語プログラムをセーブする。
C
- CALL <拡張ステートメント名>[(<引数>[,<引数>・・・])]
- ステートメント 各種のカートリッジを差し込むことによって追加された拡張ステートメントを呼び出す。
- * CALL MEMINI [(<RAMディスクの上限>)]
- ステートメント RAMディスクで使うメモリの上限を指定する。
- * CALL MFILES
- ステートメント RAMディスクに記録されているファイル名を表示する。
- * CALL MKILL("<ファイル名>")
- ステートメント RAMディスク中のファイルを削除する。
- * CALL MNAME("<旧ファイル名>" AS "<新ファイル名>")
- ステートメント RAMディスク中のファイル名を付け換える。
- CDBL (<数式>)
- ファンクション <数式>の値を倍精度実数値に変換し、その結果を返す。
- CHR$ (<数式>)
- ファンクション <数式>の値のキャラクタコードを持つ文字を返す。
- CINT (<数式>)
- ファンクション <数式>の値を整数値に変換し、その結果を返す。
- * CIRCLE {(X,Y)|STEP(X,Y)},<半径>[,<色>[,<開始角度>[,<終了角度>[,<比率>]]]]
- ステートメント (X,Y)を中心とし、<半径>で指定する大きさの円を描く。
- CLEAR [<文字列領域の大きさ>[,<メモリの上限>]]
- ステートメント 変数の初期化およびメモリ領域の大きさの設定をする。
- CLOAD ["<ファイル名>"]
- コマンド カセットからプログラムをロードする。
- CLOAD? ["<ファイル名>"]
- コマンド メモリ上のプログラムとカセット上のプログラムを比較する。
- CLOSE [ [#]<ファイル番号>[,[#]<ファイル番号>・・・] ]
- コマンド <ファイル番号>に対応するファイルを閉じる。
- CLS
- ステートメント 画面を消去する。
- * COLOR [<前景色>[,<背景色>[,<周辺色>]]]
- ステートメント 画面の各部の色を指定する。
- * COLOR [=NEW]
- ステートメント パレットを初期化する。
- * COLOR= (<パレット番号>,<赤の輝度>,<緑の輝度>,<青の輝度>)
- ステートメント パレットに色を設定する。
- * COLOR=RESTORE
- ステートメント カラーパレット保存テーブルの内容をパレット・レジスタに入れる。
- * COLOR SPRITE (<スプライト面番号>)=<色>
- ステートメント <スプライト面番号>のスプライトを指定した色にする。
- * COLOE SPRITE$ (<スプライト面番号>)=<文字列>
- ステートメント スプライトの横ラインごとの色を<文字列>で指定する。
- CONT
- コマンド 停止したプログラムの実行を再開する。
- * COPY <ソース> TO <デスティネーション>
- ステートメント 画面、配列、ディスクファイル間で画像データを転送する。
- * COPY SCREEN [<モード>]
- ステートメント カラーバスのデータをVRAMに書き込む(オプション機能)。
- COS (<数式>)
- ファンクション <数式>の値に対する余弦(コサイン)を返す。角度の単位はラジアン。
- CSAVE "<ファイル名>"[,<ボーレート>]
- コマンド プログラムをカセットにセーブする。
- CSNG (<数式>)
- ファンクション <数式>の値を単精度実数値に変換し、その結果を返す。
- CSRLIN
- システム変数 テキスト画面上のカーソルの行位置を持つ。代入はできない。
D
- DATA <定数>[,<定数>・・・]
- ステートメント READ命令で読み出すためのデータを用意する。
- DEF FN <名前>[(<引数>[,<引数>・・・])]=<関数の定義式>
- ステートメント ユーザー関数を定義する。
- DEFINT <文字の範囲>[,<文字の範囲>・・・]
- ステートメント 指定された変数を整数型として宣言する。
- DEFSNG <文字の範囲>[,<文字の範囲>・・・]
- ステートメント 指定された変数を単精度実数型として宣言する。
- DEFDBL <文字の範囲>[,<文字の範囲>・・・]
- ステートメント 指定された変数を倍精度実数型として宣言する
- DEFSTR <文字の範囲>[,<文字の範囲>・・・]
- ステートメント 指定された変数を文字型として宣言する。
- DEF USR [<番号>]=<開始アドレス>
- ステートメント USR関数が呼び出すマシン語ルーチンの実行開始アドレスを定義する。
- DELETE {[<始点行番号>-<終点行番号>]|<行番号>|-<終点行番号>}
- コマンド プログラム中の指定された部分を削除する。
- DIM <変数> (<添字の最大値>[,<添字の最大値>])
- ステートメント 配列変数を定義し、メモリに割り当てる。
- DRAW <文字式>
- ステートメント <文字式(DRAWマクロ)>にしたがって画面に線を描く。
E
- END
- ステートメント プログラムを終了し、ファイルをすべて閉じ、コマンドレベルに戻る。
- EOF (<ファイル番号>)
- ファンクション ファイルの終わりに達したかを調べ、終わりなら-1を返す。
- ERASE <配列変数名>[,<配列変数名>・・・]
- ステートメント 配列変数を削除する。
- ERL
- システム変数 発生したエラーのエラーコードを持つ。代入はできない。
- ERR
- システム変数 エラーが発生した行番号を持つ。代入はできない。
- ERROR <エラーコード>
- ステートメント プログラムをエラー状態にする。
- EXP (<数式>)
- ファンクション 自然対数の底eの<数式>乗の値を返す。
F
- FIX (<数式>)
- ファンクション <数式>の小数点以下を取り去った値を返す。
- FOR <変数名>=<初期値> TO <終値> [STEP <増分>]
- ステートメント FOR命令からNEXT命令までを、指定回数繰り返し実行する。
- FRE ({<数式>|<文字式>})
- ファンクション 未使用のユーザーエリア、または未使用の文字領域の大きさを返す。
G
- * GET DATE <文字変数名>[,A]
- ステートメント 日付を文字変数に代入する。
- * GET TIME <文字変数名>[,A]
- ステートメント 時刻を文字変数に代入する。
- GOSUB <行番号>
- ステートメント <行番号>にあるサブルーチンを呼び出す。
- GOTO <行番号>
- ステートメント <行番号>へジャンプする。
H
- HEX$(<数式>)
- ファンクション <数式>の値を16進表記の文字列に変換し、その結果を返す。
I
- IF <条件> THEN {<文>|<行番号>} [ELSE {<文>|<行番号>}]
- ステートメント 条件判断を行う。<条件>≠0ならば真とみなす。
- IF <条件> GOTO <行番号> [ELSE {<文>|<行番号>}]
- ステートメント 条件判断を行う。<条件>≠0ならば真とみなす。
- INKEY$
- ファンクション キーが押されている場合はその文字を、それ以外は空文字列を返す。
- INP(<ポート番号>)
- ファンクション <ポート番号>で指定されたポートを読み取り、その結果を出す。
- INPUT ["<プロンプト文>";]<変数名>[,<変数名>・・・]
- ステートメント キーボードから入力されたデータを指定の変数に代入する。
- INPUT #<ファイル番号>,<変数名>[,<変数名>・・・]
- ステートメント ファイルからデータを読み込み、指定の変数に代入する。
- INPUT$(<文字数>[,[#]<ファイル番号>])
- ファンクション キーボードまたはファイルから、指定された長さの文字列を読み込む。
- INSTR([<数式>,}<文字式1>,<文字式2>)
- ファンクション <文字式1>の左側から<文字式2>を探し始め、見つかればその位置を、そうでなければ0を返す。<数式>は探し始める文字の位置。
- INT(<数式>)
- ファンクション <数式>以下の最大の整数を返す。
- INTERVAL {ON|OFF|STOP}
- ステートメント タイマ割り込みを許可、禁止、保留する。
K
- KEY <キー番号>,<文字列>
- コマンド ファンクションキーを再定義する。
- KEY LIST
- コマンド ファンクションキーの内容を表示する。
- KEY (<キー番号>) {ON|OFF|STOP}
- ステートメント ファンクションキー割り込みを許可、禁止、保留する。
- KEY {ON|OFF}
- ステートメント ファンクションキーの内容を画面下方に表示するかどうかを指定する。
L
- LEFT$ (<文字式>,<数式>)
- ファンクション <文字式>の左側から<数式>個分の文字列を取り出す。
- LEN (<文字式>)
- ファンクション <文字式>の文字数を返す。
- [LET] <変数名>=<式>
- ステートメント 整数に<式>の値を代入する。
- * LINE [{(X1,Y1)|STEP(X1,Y1)}]-{(X2,Y2)|STEP(X2,Y2)}[,<色>[,{B|BF}[,<ロジカルオペレーション>]]]
- ステートメント 画面に直線または四角形を描く。
- LINE INPUT ["<プロンプト文>";]<文字変数名>
- ステートメント キーボードから入力された文字データ1行分すべてを文字型変数に代入する。
- LINE INPUT #<ファイル番号>,<文字変数名>
- ステートメント 1行単位のデータをファイルから読み込み、文字変数に代入する。
- LIST [ [<行番号>]-[<行番号>] ]
- コマンド メモリ上のプログラムを画面に表示する。
- LLIST [ [<行番号>]-[<行番号>] ]
- コマンド メモリ上のプログラムをプリンタに出力する。
- LOAD "<ファイル名>"[,R]
- コマンド アスキーセーブしてあるプログラムをロードする。
- * LOCATE [<X座標>[,<Y座標>[,<カーソルスイッチ>]]]
- ステートメント テキスト画面でのカーソル位置を指定する。
- LOG (<数式>)
- ファンクション <数式>の自然対数を返す。
- LPOS (<数式>)
- システム変数 プリンタのヘッド位置を持つ。代入はできない。
- LPRINT [<式>[{;|,}<式>・・・]]
- ステートメント プリンタに文字や数値を出力する。
- LPRINT USING <書式>;<式>[{;|,}<式>・・・]
- ステートメント <書式>に基づいてプリンタに文字や数値を出力する。
M
- MAXFILES= <ファイル数>
- ステートメント オープン可能なファイルの数を設定する。
- MERGE "<ファイル名>"
- コマンド メモリ上のプログラムとアスキーセーブされた(外部記憶装置の)プログラムを混合する。
- MID$ (<文字式>,<数式1>[,<数式2>])
- ファンクション <文字式>の<数式1>番目から<数式2>個分の文字を取り出す。
- MID$ (<文字変数名>,<数式1>[,<数式2>])=<文字式>
- ステートメント 文字変数中の<数式1>番目から<数式2>個分の文字を<文字式>の最初から<数式2>個分の文字と置き換える。
- MOTOR [{ON|OFF}]
- ステートメント カセットのモータをON/OFFする。
N
- NEW
- コマンド メモリ上のプログラムを削除し、変数をクリアする。
- NEXT [<変数名>[,<変数名>・・・]]
- ステートメント FOR命令の終わりを示す。
O
- OCT$ (<数式>)
- ファンクション <数式>の値を8進数表記の文字列に変換し、その結果を返す。
- ON ERROR GOTO <行番号>
- ステートメント エラー処理ルーチンの開始行を定義する。
- ON <数式> GOSUB <行番号>[,<行番号>・・・]
- ステートメント <数式>の値に応じた<行番号>のサブルーチンを実行する。
- ON <数式> GOTO <行番号>[,<行番号>・・・]
- ステートメント <数式>の値に応じた<行番号>へジャンプする。
- ON INTERVAL= <時間> GOSUB <行番号>
- ステートメント タイマ割り込みの間隔と、割り込み処理ルーチンの開始行を定義する。
- ON KEY GOSUB <行番号>[,<行番号>・・・]
- ステートメント ファンクションキーによる割り込み処理ルーチンの開始行を定義する。
- ON SPRITE GOSUB <行番号>
- ステートメント スプライトの重なりによる割り込み処理ルーチンの開始行を定義する。
- ON STOP GOSUB <行番号>
- ステートメント CTRL+STOPによる割り込み処理ルーチンの開始行を定義する。
- ON STRIG GOSUB <行番号>
- ステートメント トリガボタンによる割り込み処理ルーチンの開始行を定義する。
- OPEN "<ファイル名>" [FOR <モード>] AS #<ファイル番号>
- ステートメント ファイルを指定したモードでオープンする
- OUT <ポート番号>,<数式>
- ステートメント <ポート番号>で指定された出力ポートにデータを送る。
P
- * PAD (<数式>)
- ファンクション <数式>で指定したタブレット、マウス、ライトペン、トラックボールの状態について調べ、その結果を返す。
- * PAINT {(X,Y)|STEP(X,Y)}[,<色>[,<境界色>]]
- ステートメント 指定された<境界色>で囲まれた領域を、<色>で塗りつぶす。
- PDL (<パドル番号>)
- ファンクション 指定された番号のパドルの状態を返す。
- PEEK (<アドレス>)
- ファンクション <アドレス>で指定されたメモリ1バイトの内容を返す。
- PLAY <文字式1>[,<文字式2>[,<文字式3>]]
- ステートメント <文字式(ミュージックマクロ)>にしたがって音楽を演奏する。
- PLAY (<ボイスチャンネル>)
- ファンクション 音楽が演奏中かどうか調べ、その結果を返す(演奏中なら-1)。
- POINT (X,Y)
- ファンクション (X,Y)で指定された座標のドットの色を返す。
- POKE <アドレス>,<データ>
- ステートメント <アドレス>で使用されたメモリに<データ>1バイトを書き込む。
- POS (<数式>)
- システム変数 テキスト画面でのカーソルの水平位置を持つ。代入はできない。
- * PRESET {(X,Y)|STEP(X,Y)}[,<色>[,<ロジカルオペレーション>]]
- ステートメント グラフィック画面の(X,Y)で指定された座標のドットを消す。
- PRINT [<式>[{;|,}<式>・・・]]
- ステートメント 画面に文字や数字を表示する。
- PRINT USING <書式>;<式>[{;|,}<式>・・・]]
- ステートメント <書式>に基づいて画面に文字や数字を表示する。
- PRINT #<ファイル番号>,[<式>[{;|,}<式>・・・]
- ステートメント <ファイル番号>で指定されたファイルに文字や数字を書き込む。
- PRINT #<ファイル番号>,USING <書式>;<式>[{;|,}<式>・・・]
- ステートメント <書式>に基づいて<ファイル番号>で指定されたファイルに文字や数字を書き込む。
- * PSET {(X,Y)|STEP(X,Y)}[,<色>[,<ロジカルオペレーション>]]
- ステートメント グラフィック画面の(X,Y)で指定された座標にドットを描く。
- * PUT KANJI [(X,Y)],<JIS漢字コード>[,<色>[,<ロジカルオペレーション>[,<モード>]]]
- ステートメント 画面に漢字を表示する(漢字ROMが必要)。
- * PUT SRPITE <スプライト面番号>[,{(X,Y)|STEP(X,Y)}[,<色>[,<スプライトパターン番号>]]]
- ステートメント スプライトパターンを表示する。
R
- READ <変数名>[,<変数名>・・・]
- ステートメント DATA文のデータを読み込み、変数に代入します。
- REM
- ステートメント プログラムにコメントを入れる。
- RENUM [<新行番号>[,<旧行番号>[,<増分>]]]
- コマンド 行番号を付け直す。
- RESTORE [<行番号>]
- ステートメント READ命令で読み始めるDATAの行番号を指定する。
- RESUME {[0]|NEXT|<行番号>}
- ステートメント エラー回数処理を終了し、プログラムの実行を再開する。
- RETURN [<行番号>]
- ステートメント サブルーチンから戻る。
- RIGHT$ (<文字式>,<数式>)
- ファンクション <文字式>の右側から<数式>個分の文字列を取り出す。
- RND [(<数式>)]
- ファンクション 0以上1未満の乱数を返す。
- RUN [<行番号>]
- コマンド <行番号>からプログラムを実行する。
S
- SAVE "<ファイル名>"
- コマンド プログラムをアスキーセーブする。
- * SCREEN <画面モード>[,<スプライトサイズ>[,<キークリックスイッチ>[,<カセットボーレート>[,<プリンタオプション>[,<インターレースモード>]]]]]
- ステートメント 画面モード、その他を設定する。
- * SET ADJUST (<X座標オフセット>,<Y座標オフセット>)
- ステートメント 画面の表示位置を変える。範囲はそれぞれ-7〜8。
- * SET BEEP <音色>,<音量>
- ステートメント BEEP音を選択する。範囲はそれぞれ1〜4。
- * SET DATE <文字式>[,A]
- ステートメント 日付を設定する。Aはアラームの指定。
- * SET PAGE <ディスプレイページ>,<アクティブページ>
- ステートメント 表示ページと、データの読み書きを行うページを指定する。
- * SET PASSWORD <文字式>
- ステートメント パスワードを設定する。
- * SET PROMPT <文字式>
- ステートメント プロンプトを設定する(6文字まで)。
- * SET SCREEN
- ステートメント 現在設定されているSCREEN命令のパラメータを保存する。
- * SET TIME <文字式>[,A]
- ステートメント 時刻を設定する。Aはアラームの設定。
- * SET TITLE <文字式>[,<タイトル色>]
- ステートメント リセット時に表示されるタイトル画面のタイトル文字列と色を設定する。
- * SET VIDEO [<モード>[,<Ym>[,<CB>[,<同期>[,<音声>[,<ビデオ入力>[,<AVコントロール>]]]]]]]
- ステートメント スーパーインポーズその他のモードを設定する(オプション機能)。
- SGN (<数式>)
- ファンクション 符号を調べ、その結果を返す(正=1, 零=0, 負=-1)。
- SIN (<数式>)
- ファンクション <数式>の正弦(サイン)を返す。角度の単位はラジアン。
- SOUND <レジスタ番号>,<データ>
- ステートメント PSGのレジスタに値を書き込む。
- SPACE$ (<数式>)
- ファンクション <数式>の長さ分の空白を持った文字列を返す。
- SPC (<数式>)
- ファンクション PRINT系の命令中で<数式>分の空白を出力する。
- SPRITE {ON|OFF|STOP}
- ステートメント スプライトの重なりによる割り込みを許可、禁止、保留する。
- SPRITE$ (<スプライトパターン番号>)
- システム変数 スプライトパターンを持つ。
- SQR (<数式>)
- ファンクション <数式>の平方根を返す。
- STICK (<ジョイスティック番号>)
- ファンクション ジョイスティックの押されている方向を調べ、その結果を返す。
- STOP
- ステートメント プログラムの実行を停止する。
- STOP {ON|OFF|STOP}
- ステートメント CTRL+STOPによる割り込みを許可、禁止、保留する。
- STRIG (<ジョイスティック番号>)
- ファンクション トリガボタンの状態を調べ、その結果を返す。
- STRIG (<ジョイスティック番号>) {ON|OFF|STOP}
- ステートメント トリガボタンによる割り込みを許可、禁止、保留する。
- STR$ (<数式>)
- ファンクション <数式>の値を10進表記の文字列に変換し、その結果を返す。
- STRING$ (<数式1>,{<文字式>|<数式2>})
- ファンクション <文字式>の先頭文字または<数式2>のコードを持つ文字を<数式1>分の長さの文字列にして返す。
- SWAP <変数名>,<変数名>
- ステートメント 2つの変数の値を変換する。
T
- TAB (<数式>)
- ファンクション PRINT系の命令中で、指定した桁まで空白を出力する。
- TAN (<数式>)
- ファンクション <数式>の正接(タンジェント)を返す。角度の単位はラジアン。
- TIME
- システム変数 インターバルタイマの値を持つ。
- TRON
- コマンド 実行しているプログラムの行番号を画面に表示し続ける。
- TROFF
- コマンド TRONをキャンセルし、行番号の表示をやめる。
U
- USR [<番号>] (<引数>)
- ファンクション マシン語ルーチンを呼び出す。
V
- VAL (<文字式>)
- ファンクション <文字式>を数値に変換し、その結果を返す。
- VARPTR (<変数名>)
- ファンクション 変数の格納されているアドレスを返す。
- VARPTR (#<ファイル番号>)
- ファンクション ファイル・コントロールブロックの開始アドレスを返す。
- * VDP (<レジスタ番号>)
- システム変数 VDPのレジスタに対し、データの読み書きをする。
- * VPEEK (<アドレス>)
- ファンクション VRAMの<アドレス>からデータを読み出す。
- * VPOKE <アドレス>,<データ>
- ステートメント VRAMの<アドレス>にデータを書き込む。
W
- WAIT <ポート番号>,<数式1>[,<数式2>]
- ステートメント 入力ポートのデータが指定された値になるまで、実行を中断する。
- * WIDTH <桁数>
- ステートメント 画面の1行の桁数を指定する。