MSXプログラミングでゲーム開発準備【予約語編】

予約語

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=O TO 10
20 PRINT I
30 NEXT I


***空白を省略する例***

10 FORI=OTO10
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

*** MSX-AIDのバリアブルリストの使い方 ***

CALL VARLIST
  
 プログラムの中で使われているすべての変数を画面に表示

CALL VARLIST(,P)
  
 プログラムの中で使われているすべての変数をプリンタに出力

CALL VARLIST("AB")
  
 プログラムの中で使われているABという変数をすべて画面に表示

CALL VARLIST("A*")
  
 プログラムの中で使われているAで始まる変数をすべて画面に表示

CALL VARLIST("A*",P)
  
 プログラムの中で使われているBで始まる変数すべてをプリンタに表示

プログラムの投稿の際に変数リストを表示すると使用者の助けとなります。プログラムを作成しながら変数リストを作るか、あらかじめ定めた規則(変数リスト)に従ってプログラムを作成するかは自由ですが、意図しないエラー、バグを防ぐためにも変数リストは整えていたほうが良いでしょう。

MSX BASICリファレンス

予約語を含むMSX BASICのリファレンスの公開を始めました。取り急ぎ公開とし、順次更新していきます。よろしければご活用ください。

Appendix I. MSX BASICリファレンス