MSX-BASICにはプログラム中で使用するコマンド等に割り当てられた文字列がいくつかあり、これを予約語と呼んでいます。 予約語はユーザーが指定する変数名、関数名には使用できません。また、予約語を先頭から含む場合も変数名、関数名には使用できません。
MSXプログラミングの予約語の一覧
MSX-BASICで割り当てられている予約語は以下のとおりです。ABC順で記載します。
***MSX-BASICの予約語一覧*** ABS AND ASC ATN ATTR$ AUTO BASE BEEP BIN$ BLOAD BSAVE CALL CDBL CHAR$ CINT CIRCLE CLEAR CLOAD CLOSE CLS CMD COLOR CONT COPY COS CSAVE CSNG CSRLIN CVD CVS DATA DEF DEFDBL DEFINT DEFSNG DEFSTR DEFELE DIM DRAW DSKF DSKI$ DSKO$ ELSE END EOF EQV ERASE ERL ERR ERROR EXP FIELD FILES FIX FN FOR FRE GET GO TO GOSUB GOTO HEX$ IF IMP INKEY$ INP INPUT INSTR IPL KEY KILL LEFT$ LEN LET LFILES LINE LLIST LOAD LOC LOCATE LOF LOG LPOS LPRINT LSET MAX MERGE MID$ MKD$ MKI$ MKS$ MOD MOTOR NAME NEW NEXT NOT OCT$ OFF ON OPEN OR OUT PAD PAINT PDL PEEK PLAY POINT POKE PRESET PRINT PSET PUT READ REM RENUM RESTORE RESUME RETURN RIGHT$ RND RSET RUN SAVE SCREEN SET SGN SIN SOUND SPACE$ SPC( SPRITE SQR STEP STICK STOP STR$ STRIG STRING$ SWAP TAB( TAN THEN TIME TO TROFF TRON USING USR VAL VARPTR VDP VPEEK WAIT WIDTH XOR
MSX-BASICでは入力補助(予約語の通知や引数を誘導する機能)がないため、上記の予約語を覚えておく必要があります。ただすべてを覚えておくことは大変な手間ですので、特徴的なものだけでも覚えておくようにしましょう。 また、使用する変数をある程度固定してしまうのも良いと思います。
MSXプログラミングの予約語の特徴
MSX-BASICは最大32KBのメモリをプログラムコードだけでなく、変数、配列変数などでシェアしています。大きなプログラムになってくるとメモリの節約が必要となってきます。 また、プログラムの高速化のためにプログラムコードを短くすることも有効です。
予約語があることでMSX-BASICのインタープリターがプログラムコードを翻訳していくときに、ユーザーが作成した変数などではなくプログラムのコマンド等であることを理解します。 そのためプログラムコード中の空白(スペース)を省略することができます。
予約語があるからこそできるテクニックです。
空白省略ができる例
予約語の前後は空白(スペース)を省略することができます。下のプログラム(***空白を省略する例***)は全く空白(スペース)が入っていないですが問題なくRUNできます。
***空白を記載する例*** 10 FOR I=0 TO 10 20 PRINT I 30 NEXT I ***空白を省略する例*** 10 FORI=0TO10 20 PRINTI 30 NEXTI
空白省略ができない例
予約語の前後であっても空白(スペース)を省略してしまうと別の予約語となってしまう場合は空白(スペース)を省略できません。
***空白あり(10行目)と空白なし(15行目)*** 10 X OR Y ここでのXは変数 15 XORY ここではXORと読まれる 10 F OR G ここでのFは変数 15 FORG ここではFORと読まれる MSXプログラミングの予約語によるエラー
予約語がらみでよく出るエラーは Illigal function call です。
ステートメントや関数の使い方が間違っている。引数などが指定範囲を超えている。
との説明がありますが、変数と思って記載していたのが実は予約語であった場合にも起こりえます。変数であれば、ダイレクトモードで以下のように入力して確認します。
PRINT 変数名
変数に入っている値、文字列などが表示されます。 変数でなく予約語であればエラーが出ます。
PRINT ON ONは予約語 Syntax error PRINT ONI ONIは予約語ではないが、ONが予約語 Syntax error PRINT OF OFは予約語ではなく変数 0 Ok PRINT OFFEN OFFは予約語 Syntax error
MSXプログラミングの変数の管理
変数であるかどうかを確認するほかの方法は、補助ツール MSX-AID を使うと便利です。 MSX-AIDにはバリアブルリスト(変数名をリスト化)を表示する機能があります。
*** MSX-AIDのバリアブルリストの使い方 *** CALL VARLIST プログラムの中で使われているすべての変数を画面に表示 CALL VARLIST(,P) プログラムの中で使われているすべての変数をプリンタに出力 CALL VARLIST("AB") プログラムの中で使われているABという変数をすべて画面に表示 CALL VARLIST("A*") プログラムの中で使われているAで始まる変数をすべて画面に表示 CALL VARLIST("A*",P) プログラムの中で使われているBで始まる変数すべてをプリンタに表示
プログラムの投稿の際に変数リストを表示すると使用者の助けとなります。プログラムを作成しながら変数リストを作るか、あらかじめ定めた規則(変数リスト)に従ってプログラムを作成するかは自由ですが、意図しないエラー、バグを防ぐためにも変数リストは整えていたほうが良いでしょう。
MSX BASICリファレンス
予約語を含むMSX BASICのリファレンスの公開を始めました。取り急ぎ公開とし、順次更新していきます。よろしければご活用ください。