命令 | ver | 説明 |
A=B | 01b | 単純な代入文です。Bの部分は式になっていてもOKです。 |
PRINT ... | 01b | 式の値をコンソールに表示します。 |
FOR A=B,C ... NEXT | 01b | 定番の繰り返し命令です。終値の後ろに増分値を指定することもできます。 |
FORNE A=B,C ... NEXT | 01b | FOR I=0,10 ... NEXT は、I=10も回りますが、FORNEだとI=9までしか回りません。 |
DOLOOP ... ENDDO 条件 | 01b | do~while相当のループです。条件を省略すると無限ループになります。 |
IF 条件 THEN ... ELSE ... FI | 01b | 定番のIF文です。ELSE節は省略可能です。 |
LABEL ラベル名 | 01b | GOTOやGOSUBの飛び先のためにラベルを宣言できます。 |
IF 条件 GOTO 行番号orラベル | 01b | 条件ジャンプです。 |
GOTO 行番号orラベル | 01b | 無条件ジャンプです。 |
GOSUB 行番号orラベル | 01b | サブルーチンを呼び出します。 |
RETURN | 01b | サブルーチンから復帰します。 |
NORETURN | 01b | サブルーチンから復帰しますが、呼び出し元には帰りません。行番号orラベルを追加指定することもできて、その場合はGOTO動作も行います。 |
PUSH 式 | 01b | 式の値をスタックに保存します。 |
POP 変数名 | 01b | スタックから値を取り出します。今のES-BASICにはローカル変数がないので、PUSH/POPとGOSUB/RETURNを使うと、再帰処理ができるようになります。 |
LIST | 01b | プログラムを表示します。 |
RUN | 01b | プログラムを実行します。 |
RENUM | 01b | 行番号を付け直します。BASICが好きな人には定番の命令です(笑)。 |
NEW | 01b | プログラムを全行消去します。ただし変数の値は消えません。 |
EXIT | 01b | ES-BASICを終了します。 |
END | 01b | プログラムを正常終了します。 |
STOP | 01b | プログラムを中断します。どの行で中断したのかも表示されます。再開はできません。主にエラー終了のために使います。 |
PAUSE | 01b | プログラムを一時停止します。どの行で中断したのかも表示されます。RESUME命令で再開可能です。停止中に変数を見たり変更したりすることが可能です。 |
LOAD ファイル名 | 01b | ファイルからプログラムを読み込みます。プログラムではなくコマンド列でもOKです。 |
ALIAS | 01b | 変数名や予約語や演算子に別名を与えます。 |
RAND | 01b | 0~32767の乱数を生成します。たいていは%で適当な範囲に丸めてから使います。 |
INPUT | 01b | コンソールから数値を入力します。 |
OPENWIN | 01b | グラフィックウィンドウのサイズを指定します。 |
A=RGBCOL(red,green,blue) | 01b | RGB値からカラーコードを取得します。r/g/bはそれぞれ0~255です。 |
GCLS | 01b | グラフィックウィンドウ全体を一色で塗りつぶします。 |
SETPIX | 01b | グラフィックウィンドウに点を描画します。 |
FILLRECT | 01b | グラフィックウィンドウに塗りつぶした長方形を描画します。 |
DRAWRECT | 01b | グラフィックウィンドウに塗りつぶさない長方形を描画します。 |
FILLOVAL | 01b | グラフィックウィンドウに塗りつぶした楕円形を描画します。 |
DRAWOVAL | 01b | グラフィックウィンドウに塗りつぶさない楕円形を描画します。 |
DRAWLINE | 01b | グラフィックウィンドウに直線を描画します。 |
FILL | 01b | グラフィックウィンドウの任意の領域を塗りつぶします。 |
GPRINTI | 01b | グラフィックウィンドウ内に数値を描画します。 |
GPRINTS | 01d | グラフィックウィンドウ内に文字列を描画します。 |
EWAIT | 01b | 指定した時間だけ待機します(sleep)。単位はミリ秒です。 |
EINKEY | 01b | グラフィックウィンドウへのキー入力を得ます。何も入力がないときは0を返します。 |
FLUSHWIN | 01b | 描画結果を確実に画面に反映させます。たいていはこの命令を使いませんが、負荷が高いときでも画面に反映させたいときは、時々使います。 |
ECHR | 01b | グラフィックウィンドウ内にキャラクタを描画します。 |
GETCHR | 01b | グラフィックウィンドウ内の指定された座標に表示されているキャラクタの番号を取得します。 |
GETCOL | 01b | グラフィックウィンドウ内の指定された座標に表示されているキャラクタの色を取得します。 |
CHRBOX | 01b | ECHRを繰り返してキャラクタで長方形を描画します。 |
ARY INT NEW A[B] | 01b | B個の要素を持つ配列Aを準備します。Bは定数式でなくても構いません。内部的には配列のリサイズもできるようになっているのですが、まだリサイズ命令を作っていません。 |
ARY INT DEL A | 01b | 配列Aを破棄します。 |
FF16SIN | 01b | 三角関数の値を計算します。角度はラジアンではなく65536が1周になるような単位で渡します。また結果は小数ではなく65536倍した結果(=固定小数点)で渡されます。 |
FF16COS | 01b | FF16SINのコサイン版です。 |
REGS | 01b | 現在のレジスタの値を簡単に確認できます。 |
CODE | 01b | これは必殺技みたいな命令で、16進数列を書くとそれを機械語として実行します。インライン機械語みたいなものです。 |
| | 試してみたい機械語があったとき、これで試して、REGSで結果を見たりして遊びます。それ以外ではめったに使いません。機械語を間違えればすぐにES-BASICが落ちます(笑)。 |
LWAIT | 01b | 実行速度を指定します。-1が一番高速でいくつかのデバッグ機能は無効になります。0はデバッグ機能がすべて有効になっている中では最も高速、1以上は適当にウェイトがかかるようになります。 |
TIMEMODE | 01b | 1を指定すると、コマンドやプログラムの実行に要した時間が表示されるようになります。高速化のために試行錯誤したいとき、これはかなり重宝します。 |
CODEDUMP | 01b | 1を指定すると、コマンドやプログラムがどんな機械語になったのかを確認することができます。 |
LINECOUNTER | 01b | プログラムを実行した後にこの命令を実行すると、どの行が何度実行されたのかを簡単に確認することができます。 |
| | これで「ここは通ったかな?」などとPRINTデバッグする必要はなくなるし、どこが負荷が重いのかを簡単に確認することもできます。 |
NODEBUG | 01b | これはプログラム内で使う命令で、1を指定すると以降の行はLWAITが0以上でもデバッグ対象にはならなくなります。0を指定すると、以降の行はまたLWAITに応じてデバッグ対象になるようになります。 |
| | これで怪しくない部分を高速に実行できるようになります。 |
DEBUGTRAP 行番号orラベル | 01b | この命令で指定されたサブルーチンは、デバッグトラップルーチンだと認識されるようになります。0を指定すると設定が解除されます。 |
| | デバッグトラップルーチンは、各行を実行する前に必ず呼び出されるサブルーチンで、変数$LINEにこれから実行しようとする行番号が入ります。 |
| | これにより、変数の値を監視したり、ある行の実行の前だけ別の処理を追加したり、NORETURNを使ってある行の実行をスキップしたり、そのほかいろいろな応用ができます。 |
| | デバッグトラップルーチンの中にデバッグ対象行があると、呼び出しが無限に止まらなくなってしまうので(笑)、NODEBUG命令で対象外に指定しておく必要があります。 |
PROGSEL | 01b | 実はES-BASICは複数のプログラムを同時に管理することもできます。これはプログラムスロットを切り替える命令です。 |
| | PAUSE中に変数をいろいろ表示したいのなら、別スロットに変数を表示するためのプログラムを書いておいて、それをRUNすればいいのです。 |
PROGRUN スロット番号 | 01b | PROGSELでアクティブなスロット番号を切り替えずにRUNする命令です。 |
PROGNEW スロット番号 | 01b | PROGSELでアクティブなスロット番号を切り替えずにNEWする命令です。 |
PROGLIST | 01b | 現在プログラムが格納されているスロット番号の一覧と、そこに入っているプログラムの行数を表示します。 |
PROGDEL スロット番号 | 01b | 指定されたプログラムスロットを削除します。 |
CONST(式) | 01b | 式の内容をコンパイル時に計算して定数として埋め込みます。 |
| | したがってCONSTの中で変数を参照していて、その変数の値をあとから変更しても、ここの値はコンパイル時(=実行開始時)から不変のままになります。 |
@CMPLTIME ~ @EXECTIME | 01b | @CMPLTIMEのあとに書かれた行は、実行時ではなくコンパイル時に実行されます。@EXECTIMEまでがコンパイル時実行の対象です。 |
| | その演算結果を$RETVALに格納して、以降のプログラムでCONST($RETVAL)として参照して使うのが普通です。こうすることで、C++でのconstexprみたいなことができます。 |
| | ES-BASICはスクリプト言語なので、プログラムを実行して値を得ることは基本的に朝飯前です。だからこんな機能も簡単に実現できています。 |
| | これにより、複雑な計算結果を定数として使いたいときに、計算を言語に任せることができます。 |
FF16SQRT | 01d | 固定小数点での平方根を計算します。 |
CLRKEYBUF | 01d | キーバッファをクリアします。 |
KWAIT | 01d | 指定されたキーが押されるまで待ちます。 |
SETGMODE | 01d | 描画モードを指定します。 |
GETPIX | 01d | 画面上の点の色を取得します。 |
BITBLT | 01d | 配列データを画面の矩形範囲に転送します。 |