<BASIC言語の書式> BASICプログラムの記述は、行番号式、ラベル式、その混合、いずれの方法でも構 いません。以下、仕様について述べます。 <利用可能な変数型> 利用できる変数の型は、32ビット符号付整数(-2147483648 以上 +2147483647 以 下)と、文字列型の2種類です。文字列の末端部には0x00が付加されます。 A-Zの26個の整数型変数が利用可能です。文字列として扱う場合はA$のように記 述します。ただし、A(整数型)とA$(文字列型)を同時に使用することは出来ま せん。 整数型の定数は、10進法で記述します。16進法を使う場合、「$1200」のよう に、頭に「$」を付加するか、「0x1200」の様に表記して下さい。 文字列型の定数は、「"」で囲って記述してください。「"」を使用する場合は、 「CHR$($22)」のように記述することが出来ます。 <命令> 以下、x, y, z等は整数値を、x$, y$, z$は文字列を、x#, y#, z#は浮動 小数点型実数値を指します。xxx, yyy, zzz, www等は任意のステートメントを 指します。[ ]は省略可能である事を示します。 命令同士を「:」で区切ることにより、一行で複数のコマンドを処理すること が出来ます。 BGCOLOR r,g,b 背景色指定。 BREAK FOR-NEXT, DO-LOOP, WHILE-WENDループから抜け出す。 CDATA x[,y[,z[...]]] データー列を8ビット整数値で指定する。 CLEAR すべての文字列型変数と整数型配列を破棄し、整数値を0とする。また、 PCGの使用をやめ、表示キャラクターをリセットする。 CLS スクリーン消去。 COLOR x テキスト色指定。 CONTINUE FOR-NEXT, DO-LOOP, WHILE-WENDループ中で、以降のコードをスキップす る。 CURSOR x,y カーソル位置指定。 CDATA xxx[,yyy[,zzz[...]]] データー列を8ビット整数値で指定する。 DATA xxx[,yyy[,zzz[...]]] データー列を整数値もしくは文字列で指定する。 DIM xxx [, yyy [, zzz [, ... ]]] 整数型もしくは浮動小数点型の配列を割り当てる。 xxx,yyy,zzzは、例えば「A(10)」のように記述する。この場合、A(0)から A(10)までの11個の整数型変数が確保される。浮動小数点型配列の場合は、 「A#(10)」の様に記述する。多次元配列も、宣言することが出来る。 DO WHILE x LOOP x が0以外の場合、DO文からLOOP文までのステートメントを繰り返し実行する。 DO UNTIL x LOOP x が0の場合、DO文からLOOP文までのステートメントを繰り返し実行する。 DO LOOP WHILE x DO文からLOOP文までのステートメントを実行し、x が0以外の場合、繰り返す。 DO LOOP UNTIL x DO文からLOOP文までのステートメントを実行し、x が0の場合、繰り返す。 DRAWCOUNT DRAWCOUNT値を指定する。DRAWCOUNT値に付いては、DRAWCOUNT()関数を 参照。 END BASICプログラムを停止する。 EXEC x[,y[,z[...]]] 機械語を実行する。ただし、x,y,zは32ビット整数値。 FOR x=yyy TO zzz [ STEP www ] NEXT yyyで示された計算結果をxに代入し、xの値がzzzになるまで次のNEXT文 までのステートメントを、繰り返し実行する。繰り返しのたび、xの値は wwwずつ増加する(省略された場合は1ずつ)。「NEXT」の次に何も記述 しないことに注意。 GOSUB xxx [, yyy [, zzz [, ... ]]] 現在の実行位置を記憶し、xxx行目(もしくはラベル)に移動する。yyy, zzz 等は、サブルーチンに引き継がれる引数(ARGS()関数を参照)。 GOTO xxx xxx行目(もしくはラベル)に移動する。 IF xまたはx# THEN yyy [ ELSE zzz ] xが0以外のとき、yyyを、0のときzzzを実行。yyyおよびzzzは、複数のステート メントを「:」で挟んで記述可能。 IF xまたはx# THEN xxx [ELSEIF yまたはy# THEN yyy] [ELSE zzz] ENDIF xが0以外の時xxxを、それ以外で且つyが0以外の時(記述された場合)yyyを、 それ以外の場合にzzzを実行。ELSEIFステートメントは、複数記述可。各行で、 THENステートメントの次には何も記入しないことに注意。 LABEL xxx GOTO/GOSUBのジャンプ先を登録する。xxxは、英数字6文字以内の文字列。 [LET] x=yyy yで示された計算結果を、x(整数型変数)に代入する。「LET」は省略可。 [LET] x#=yyy yで示された計算結果を、x(浮動小数点型変数)に代入する。「LET」は省略可。 [LET] x$=yyy yyyで示された文字列(もしくは連結結果;連結演算子は「+」)を、x$に 代入する。「LET」は省略可。 MUSIC x$ BGMを演奏する。詳細は、下記の項を参照。 VAR xxx [, yyy [, zzz [, ... ]]] サブルーチン内で使う、ローカル変数を指定する。xxx, yyy等は、A-Zの アルファベットで指定する。 USEVAR xxx [, yyy [, zzz [, ... ]]] 英数字で最大6文字までの変数名を使用できるようにする。 このステートメント以降でxxx, yyy等の長い変数名が使用可能となる。 WHILE x WEND x が0以外の場合、WHILE文からWEND文までのステートメントを繰り返し実行する。 PALETTE n,r,g,b パレット指定。 PCG x,y,z ASCIIコードがxの文字の表示キャラクターを変更する。y,zは、キャラク ターデーター。詳細は、下記の項を参照。 POKE x,y xで示される物理的アドレスに、yで示される値(1バイト値)を書き込む。 PRINT [ xまたはx$またはx# [ ,または; [ yまたはy$またはy# [ ... ]]]] ディスプレイに、整数値または文字列を表示する。「;」を使用した場 合、次の表示が続けて行われる。「,」を使用した場合、10文字ずつ に区切って表示される。どちらも使用しない場合、次の表示は行を変え て行われる。 REM xxx 何も実行しない RESTORE xxx DATA読み出し開始位置を指定。xxxは行番号もしくはラベル。 RETURN 最後に実行されたGOSUB文の次のステートメントに移動する。戻り値を指 定することがができる。この場合の戻り値はGOSUB()関数にて取得が可能。 SCROLL x,y 画面を横方向、もしくは縦方向(斜めも可)に動かす。動かす方向と大きさ は、x, yでそれぞれ、横方向の移動度、縦方向の移動度として指定する。 SOUND xxx 効果音を再生する。詳細は、下記の項を参照。xxxは行番号もしく はラベル。 SYSTEM x , y 様々なシステム値の設定を行なう。<SYSTEM>の項を参照。 USEGRAPHIC [x] グラフィックディスプレイを使用、もしくは使用停止する。x=0で使用停止、 x=1で使用、x=2で画面とパレットをクリアーして使用、x=3でグラフィック領 域を確保するが表示はキャラクターディスプレイのまま。ただし、グラフィッ クディスプレイ未使用の状態でx=0の場合は、領域を確保する。xを省略した場 合は、x=1と同じ。 USEPCG [x] PCGを使用、もしくは使用停止する。x=0で使用停止、x=1で使用、x=2で キャラクターをリセットして使用。xを省略した場合は、x=1と同じ。 WAIT x xで示された時間、プログラムの実行を停止する。xが60の場合、約1秒間 停止。 WIDTH x キャラクターディスプレイの横幅を文字数で指定。xは30もしくは40。 <グラフィック関連命令> BOXFILL [x1,y1],x2,y2[,c] 座標(x1,y1),(x2,y2)を対角線とするカラーcで塗られた長方形を描画。 CIRCLE [x,y],r[,c] 座標(x,y)を中心に、半径r、カラーcの円を描画。 CIRCLEFILL [x,y],r[,c] 座標(x,y)を中心に、半径r、カラーcで塗られた円を描画。 GCLS 画面クリアー。 GCOLOR c それぞれの命令で、cを省略した場合の色を指定。 GPALETTE n,r,g,b パレット指定。 GPRINT [x,y],c,bc,s$ 座標(x,y)にカラーcで文字列s$を表示、bc:背景色(負数の場合背景色指定なし)。 LINE [x1,y1],x2,y2[,c] 座標(x1,y1)から(x2,y2)にカラーcで線分を描画。 POINT x,y グラフィック現在位置を、設定する。 PSET [x,y][,c] 座標(x,y)の位置にカラーcで点を描画。 PUTBMP [x,y],m,n,bbb 横m*縦nドットのキャラクター(bbbで指定)を座標(x,y)に表示。 サイズm*nの配列bmpに、単純にカラー番号を並べる。 ただし、カラーが0の部分は透明色として扱う。ただし、bbbはラベル名もし くは配列へのポインター。 (GCOLOR()関数も参照のこと) <ファイル関連命令> FCLOSE [x] ファイルを閉じる。引数(x)がある場合は、そのファイルハンドルで指定されたファ イルを閉じる。 FGET x,y バッファー(xに配列として指定)にyバイト読み込む。関数として呼ばれた場合は、 読み込みに成功したバイト数を返す。 FILE x アクティブなファイルハンドル(1もしくは2)をxに指定する。 FOPEN x$,y$[,z] x$で示される名前のファイルを、y$で示されたモードで開く。同時に開けるファイ ルの数は、2つまで。関数として呼ばれた場合は、ファイルハンドルを返す。y$と しては、次のものが有効。 "r" :ファイルを読み込みモードで開く。 "r+" :"r"と同じだが書き込みも可能。 "w" :ファイルを書き込みモードで開く。同名のファイルが在る場合は、 以前のファイルは消去される。 "w+" :"w"と同じだが、読み込みも可能。 "a" :ファイルを書き込みモードで開く。同名のファイルが在る場合は、 ファイルは消去されず、ファイルの最後尾から書き込まれる。 "a+" :"a"と同じだが、読み込みも可能。 zには、割り当てたいファイルハンドル(1もしくは2)を指定する。省略した場 合、1が指定される。 FPRINT [ xまたはx$またはx# [ ,または; [ yまたはy$またはy# [ ... ]]]] PRINT命令と同じだが、画面ではなくファイルに情報が書き込まれる。 FPUT x,y バッファー(xに配列として指定)のyバイト分を書き込む。関数として呼ばれた場合 は、書き込みに成功したバイト数を返す。 FPUTC x xで示される1バイトのデーターをファイルに書き込む。関数として呼ばれた場合 は、書き込みに成功したバイト数(1もしくは0)を返す。 FREMOVE x$ x$で示される名前のファイルを、SDカードから削除する。関数として呼ばれた場合 は、削除に成功したか(0)、失敗したか(-1)を返す。 FSEEK x xで示されるファイル位置に移動する。 (FEOF(), FGETC(), FINPUT$(), FLEN(), FSEEK()関数も参照のこと) <整数型関数> 以下、x, y, zは整数値を、x$, y$, z$は文字列を指します。[ ]は省略可能である事 を示します。 ABS(x) xの絶対値を返す。 ARGS(x) サブルーチン中で、GOSUBに渡されたx番目の引数を整数値として取り出す。 ASC(x$) 文字列の最初の一文字の、アスキーコードを返す。 CREAD() DATA文の後から、一つずつデーター(8ビット整数値)を読み出す。「READ()」 関数も参照。 DRAWCOUNT() DRAWCOUNT値を得る。DRAWCOUNTは16ビット整数値で、1/60秒ごとに1ずつ 増える。 FEOF() FOPENで開いたファイルの現在のファイル位置が、末端に到達しているかどうか を返す。1で末端に到達、0で未到達。 FGETC() FOPENで開いたファイルから1バイト読み込み、整数値として返す。ファイル 末端に到達しているなどで読み込みに失敗した場合、-1を返す。 FLEN() FOPENで開いたファイルのファイル長を、バイト数で返す。 FSEEK() FOPENで開いたファイルの、現在のファイル位置を返す。 GCOLOR(x,y) グラフィック座標(x,y)の表示中パレット番号を返す。 GOSUB(xxx [, y [, z [, ... ]]]) GOSUB命令と同じだが、戻り値(RETURNを参照)を得ることが出来る。xxxは、 ラベルもしくは行番号。。yyy, zzz 等は、サブルーチンに引き継がれる引数( ARGS()関数を参照)。 INKEY([x]) xを指定しない場合、現在押されているキーのASCII値を返す。押されていな い場合は、0。ASCII値でxを指定した場合、そのキーが押されているかどう かを返す。 INT(x#) 実数値x#を整数値に変換して返す。 KEYS([x]) キー入力を得る。xの値は以下の通り。xを指定しない場合は、x=63と同じ。 KEYUP: 1 KEYDOWN: 2 KEYLEFT: 4 KEYRIGHT: 8 KEYSTART: 16 KEYFIRE: 32 LEN(x$) 文字列の長さを返す。 MUSIC() BGMの演奏の残り数を返す。 NOT(x) x=0の場合に1を、そうでない場合に0を返す。 PEEK(x) xで示される物理アドレスから1バイト読み取り、返す。 READ() DATA文の後から、一つずつデーター(32ビット整数値)を読み出す。「CREAD()」 関数も参照。 RND() 0から32767までの擬似乱数を返す。 SGN(x) xの符号(-1, 0, または1)を返す。 STRNCMP(x$,y$,z) 2つの文字列のうちz文字分を比較し、結果を返す。同じ文字列の場合は0。 SYSTEM(x) 様々なシステム値を、整数値で返す。「<システム変数>」の項を参照。 TVRAM([x]) ビデオRAMのx番目の内容を、バイト値で返す。xを省略した場合、ビデオ RAMの開始位置の物理アドレスを返す。 VAL(x$) 10進数もしくは16進数文字列としてのx$の値を、整数値で返す。 <浮動小数点型関数> ACOS#(x#) x# の逆余弦を実数値で返す。 ARGS#(x) サブルーチン中で、GOSUBに渡されたx番目の引数を実数値として取り出す。 ASIN#(x#) x# の逆正弦を実数値で返す。 ATAN#(x#) x# の逆正接を実数値で返す。 ATAN2#(y#,x#) y#/x# の逆正接を実数値で返す。 CEIL#(x#) x# 以上の最小の整数を実数値で返す。 COS#(x#) x# の余弦を実数値で返す。 COSH#(x#) x# の双曲線余弦を実数値で返す。 EXP#(x#) eを底とする x# の指数関数値を実数値で返す。 FABS#(x#) x# の絶対値を実数値で返す。 FLOAT#(x) 整数値 x を浮動小数点型実数値に変換して返す。 FLOOR#(x#) x# 以下の最大の整数を実数値で返す。 FMOD#(x#,y#) x# を y# で割った剰余を実数値で返す。 GOSUB#(xxx [, y [, z [, ... ]]]) GOSUB命令と同じだが、戻り値(RETURNを参照)を得ることが出来る。xxxは、 ラベルもしくは行番号。。yyy, zzz 等は、サブルーチンに引き継がれる引数( ARGS()関数を参照)。 LOG#(x#) x# の自然対数を実数値で返す。 LOG10#(x#) x# の常用対数を実数値で返す。 MODF#(x#) x# の小数部を実数値で返す。 PI# 3.141593を返す。 POW#(x#,y#) x# の y# 乗を実数値で返す。 SIN#(x#) x# の正弦を実数値で返す。 SINH#(x#) x# の双曲線正弦を実数値で返す。 SQRT#(x#) x# の平方根を実数値で返す。 TAN#(x#) x# の正接を実数値で返す。 TANH#(x#) x# の双曲線正接を実数値で返す。 VAL#(x$) 10進数文字列としてのx$の値を、実数値で返す。 <文字列型関数> A$(x [,y])など xの値が0の場合、文字列全体を返す。 xの値が正の場合、xで示される位置より右側の文字列を返す。 xの値が負のとき、文字列の右側x文字を返す。 yが指定された場合、y文字分の文字列を返す。 ARGS$(x) サブルーチン中で、GOSUBに渡されたx番目の引数を文字列として取り出す。 CHR$(x) xをアスキーコードとする文字を返す。 DEC$(x) xの値を、10進数の文字列として返す。 FINPUT$([x]) FOPENで開いたファイルから、xで示された長さの文字列を読み込む。xが省略された 場合は、行の最後まで読み込む(改行コードが含まれる)。 FLOAT$(x#) 実数値x#を、10進数の文字列として返す。 GOSUB$(xxx [, y [, z [, ... ]]]) GOSUB命令と同じだが、戻り値(RETURNを参照)を文字列として得ることが出来る。 xxxは、ラベルもしくは行番号。。yyy, zzz 等は、サブルーチンに引き継がれる引数 (ARGS()関数を参照)。 HEX$(x [,y]) xの値を、16進数の文字列として返す。yが指定された場合、yバイト長の 文字列になる。 INPUT$() 文字列入力状態になり、入力が終了すると(Enterが押されると)文字列を返す。 SPRINTF$(x$,y#) x$で示される書式に従って、実数y#の内容を文字列として返す。 SYSTEM$(x) 様々なシステム値を、文字列で返す。「<システム変数>」の項を参照。 READ$() DATA文の後から、一つずつ文字列データーを読み出す。 <整数演算子> -x 符号を反転 x + y 整数加算 x - y 整数減算 x * y 整数乗算 x / y 整数除算 x % y 整数剰余 x >> y xの値をyビット右シフト x << y xの値をyビット左シフト x = y 2つの整数値が等しい場合に1、そうでないときに0 x != y 2つの整数値が等しい場合に0、そうでないときに1 x < y xがyより小さい場合に1、そうでないときに0 x <= y xがyより小さいか等しい場合に1、そうでないときに0 x > y xがyより多きい場合に1、そうでないときに0 x >= y xがyより多きいか等しい場合に1、そうでないときに0 x AND y xとyの値のビットごとの AND(論理積でないことに注意) x OR y xとyの値のビットごとの OR x XOR y xとyの値のビットごとの XOR なお、整数演算子の優先順位は、優先度が高いものから以下の順です。 + - (単項演算子) * / % + - (加算・減算) << >> < <= > >= = != XOR AND OR <文字列演算子> x$ + y$ 文字列の連結 <浮動小数点型演算子> -x# 符号を反転 x# + y# 実数加算 x# - y# 実数減算 x# * y# 実数乗算 x# / y# 実数除算 x# = y# 2つの実数値が等しい場合に1、そうでないときに0 x# != y# 2つの実数値が等しい場合に0、そうでないときに1 x# < y# xがyより小さい場合に1、そうでないときに0 x# <= y# xがyより小さいか等しい場合に1、そうでないときに0 x# > y# xがyより多きい場合に1、そうでないときに0 x# >= y# xがyより多きいか等しい場合に1、そうでないときに0 x# AND y# xとyの値の論理積(ビットごとの AND でないことに注意) x# OR y# xとyの値の論理和(ビットごとの OR でないことに注意) なお、実数演算子の優先順位は、優先度が高いものから以下の順です。 + - (単項演算子) * / + - (加算・減算) < <= > >= = != AND OR <MUSIC> MUSIC命令では、BGM用のデーターを文字列で指定します。文字列の書式は、ABC notationに準拠しています。ただし、すべての記法が使えるわけではありません。 なお、キーや速度などのデフォルト設定値は以下の通りです。 Q: 1/4=90 L: 1/8 K: C BGM演奏時に一度に設定できる音の数は、31迄です。これを超えて音楽を再生したい 場合は、MUSIC()関数の戻り値を調べ、その値が十分小さくなってから、次のMUSIC命 令を実行するようにします。 添付のmusic.basに、使い方に関するサンプルがありますので、参考にして下さい。 <SOUND> SOUND命令では、DATA列のデーターを、行番号もしくはラベルで指定します。SOUND命 令による効果音再生中は、BGMは再生されません。また、前の効果音が終わる前に次 のSOUND命令を実行すると、前の効果音の再生は停止し、新しい効果音がすぐに再生 されます。 DATA列では、32ビット整数値として、交換音を表現します。この整数値の下位16 ビットは周波数の指定です。2048が440Hz(ラの音)に対応します。値が大きくなるほ ど、より低い音が出ます。上位16ビットは、音の長さです。1が、1/60秒に相当し ます。最後に、65535以下の値で、効果音の繰り返し回数を指定します。これらのデー ターの数は、32を超えないようにして下さい。 添付のsound.basに、使い方に関するサンプルがありますので、参考にして下さい。 <PCG> PCG(Programmable Character Generator)を用いると、ASCIIコードごとにフォント を指定して、疑似グラフィックスとして表示させることが出来ます。使用する場合 は、まず USEPCG とします。フォントの変更は、PCGステートメントを用いて、 PCG 0x80,0x80402010,0x08040201 の様に設定します。この例では、ASCIIコード0x80の文字のフォントを設定してい て、バックスラッシュの様な記号(左上から右下に向かう斜め線)が表示されるよう になります。PCGの利用を停止し、オリジナルのフォントに戻す場合は、 USEPCG 0 とします。再度PCGを使用したい場合は、 USEPCG として下さい。先に設定したフォントデーターが、復活します。なお、先に設定し たフォントデーターを破棄してPCGの使用を始めたい場合は、 USEPCG 2 として下さい。 <システム変数> SYSTEM関数及びSYSTEMステートメントを用いて、各種システム情報をやりとりするこ とが出来ます。 SYSTEM$(0) MachiKania バージョン文字列、"Zoea"を返す。 SYSTEM$(1) MachiKania バージョン文字列、"1.0"等を返す。 SYSTEM$(2) BASIC バージョン文字列、"KM-1200"等を返す。 SYSTEM$(3) 現在実行中のHEXファイル名、"ZOEA.HEX"等を返す。 SYSTEM(20) キャラクターディスプレイ横幅を返す。 SYSTEM(21) キャラクターディスプレイ縦幅を返す。 SYSTEM(22) グラフィックディスプレイ横幅を返す。 SYSTEM(23) グラフィックディスプレイ横幅を返す。 SYSTEM(24) キャラクターディスプレイ用の指定色を返す。 SYSTEM(25) グラフィックディスプレイ用の指定色を返す。 SYSTEM(26) キャラクターディスプレイの、現在のX位置を返す。 SYSTEM(27) キャラクターディスプレイの、現在のY位置を返す。 SYSTEM(28) グラフィックディスプレイの、現在のX位置を返す。 SYSTEM(29) グラフィックディスプレイの、現在のY位置を返す。 SYSTEM(40) PS/2キーボードを使用中かどうかを返す。 SYSTEM(41) PS/2キーボード情報、vkeyを返す。 SYSTEM(42) PS/2キーボード情報、lockkeyを返す。 SYSTEM(43) PS/2キーボード情報、keytypeを返す。 SYSTEM(100) 変数格納領域(g_var_mem)へのポインターを返す。 SYSTEM(101) 乱数シードへのポインターを返す。 SYSTEM(102) キャラクターディスプレイ領域(TVRAM)へのポインターを返す。 SYSTEM(103) フォント領域へのポインターを返す。 SYSTEM(104) PCGフォント領域へのポインターを返す。 SYSTEM(105) グラフィックディスプレイ領域へのポインターを返す。 SYSTEM 200,x ディスプレイの表示を停止(xが0のとき)、もしくは開始(xが0以外の時)する。 <ヒント> FOR-NEXTループ、WHILE-WENDループ、DO-LOOPループの途中で、GOTO文でループの 外に飛んだり、RETURN文を実行したりすると、予期せぬ結果(機器のリセット等)を 引き起こします。ただし、GOSUB文でサブルーチンを呼んだり、別のループをネスト して使う事は可能です。 ON GOTO分やON GOSUB文はサポートしていません。ただし、例えば次のように記述す ることで、同様の動作をさせることは可能です。 GOSUB 10000+A .... 10000 PRINT "A=0" : RETURN 10001 PRINT "A=1" : RETURN 10002 PRINT "A=2" : RETURN 一行中で連続して文字列を扱うと、"String too complexed"というエラーがでて、 停止することがあります。この場合は、文字列を扱う命令を独立した行するか、文 字列関連の演算を幾つかのステップに分けて、それぞれ1行ずつの記述にして試し てみて下さい。 <バージョン履歴> ・KM-1204 2017年8月公開。  1.USEVARステートメントを追加。  2.CLEARステートメント実行でグラフィックモードから抜けるように変更。 ・KM-1203 2017年1月公開。  1.ファイル入出力機能を追加。 ・KM-1202 2016年10月公開。  1.WIDTHステートメントを追加。  2.特殊なデーター列・文字列に於ける、リンク時の不具合及びREAD()関数実行時    に於ける不具合を修正。  3.多次元配列中で演算子を使った場合の不具合を解消。 ・KM-1201 2016年9月公開。  1.CONTINUEステートメントを追加。  2.ATAN2#()関数を追加。  3.IF-THEN-ELSEステートメントでエラーがでる不具合を修正。  4.負の実数値の扱いにおける不具合を修正。 ・KM-1200 2016年8月公開。  1.グラフィックディスプレイ機能および、関連のステートメント群を追加。  2.浮動小数点演算機能、及び、算術演算関数群を追加。  3.VAR, BREAK, SYSTEMステートメントを追加。  4.DO-LOOP, WHILE-WENDループ構造文を追加。  5.IF THEN - ELSEIF - ELSE - ENDIFによる、複数行での条件分岐表現を追加。  6.GOSUBステートメント及びGOSUB()関数に第二以降の引数を指定出来る様にし、    サブルーチン中でARGS()関数により取り出せるようにした。  7.8ビット整数型を扱うCDATAステートメントとCREAD()関数を追加。  8.DATAステートメントで文字列を扱える様にし、READ$()で読めるようにした。  9.多次元配列をサポート。  10.例外発生時に、情報を表示するようにした。  11.FOR-NEXTループに於いて、TO値に一致する時だけではなく、値を超えた場合    でもループを抜けるようにした。  12.MUSICステートメント用のスクリプトにエラーがある際、エラー発生行が正し    く表示されない不具合を修正。  13.ビットシフト演算子を、追加。 ・KM-1120 2016年2月公開。  1.PCG機能を追加。  2.SCROLL命令を追加。  3.WAIT命令を追加。  4.「Ctrl+Break」キーによる実行停止に対応。  5.FOR無しでNEXTを実行した場合、GOSUB無しでRETURNを実行した場合にエラー    を表示して停止するようにした。 ・Ver 1.1.0 (KM-1110) 2015年12月公開。  1.2015年11月21日に変更されたPIC32TVGSの仕様に対応。  2.PS/2キーボードに対応。  3.INKEY() INPUT$() VAL() DEC$() の4つの関数を追加。  4.TVRAM() ASC() PEEK()が、0x80-0xFFの値に関して負の数を返していた不具合    を修正。  5.DIMステートメントにより配列を定義した際、すべての要素がゼロになるよう    にした。  6.単項演算子、「-」「+」を追加。  7.LABEL定義されていない飛び先にGOTOするとリセットされる不具合を修正。  8.同一のLABELを複数回使用している場合に、コンパイルエラーが出るように修    正。  9.引数を持たないPRINT文に対応。 ・Ver 1.0.5 (KM-1100) 最初の正規公開バージョン。