J3Wではプロセスが1つの単位となって,順に命令を実行します. プロセスと は,1つの仮想のCPUが命令を実行することを示します. CPUが実行す る命令には別のCPU(プロセス)を作成する命令,「物体」を作成する命 令,「物体」を運動させる命令,計算を行う命令,文字を表示する命令など 多くの命令があります. ここでいう「物体」とは頂点と頂点で構成された 多角形をを示します.
以下にJ3Wの全命令を簡単に解説します. 詳細は【10】章を参照して下さい.
J3Wの中心的な存在であるプロセスの生成と削除,プロセス間の通信に関する 命令には以下の10種類があります.
GENPRC | プロセスの生成,レジスタをコピー |
DELPRC | プロセスの削除 |
NOOP | 指定時間の間何もしない メッセージを受けると次の命令へ進む |
THROW | 制御を別のプロセスに渡す |
WAIT | プロセスの一時停止 時間無制限のNOP |
STPALL | 全プロセスの停止と消滅 |
SEND | 指定プロセスIDにメッセージ送出 |
RECEIV | メッセージを取得 |
SENDTO | 指定プロセスNoにメッセージ送出 |
CHILD | 子「物体」とプロセスの生成 |
1つのプロセスは1つの「物体」を持つことができます. 以下の命令を使用 して「物体」の形状を設定したり,位置や角度の設定と取得を行います. 「物体」を持っていないプロセスが以下の命令を実行するとエラーとなりま す.
GENOBJ | 「物体」の生成 |
DEFPNT | 「物体」の頂点の定義 |
DEFPLN | 「物体」の面の定義 |
DELOBJ | 「物体」の削除 |
SETEYE | この命令を実行した「物体」が視点(目)を持つ |
POINT | 「物体」頂点の定義 座標は(RX,RY,RZ) |
GETVXN | 頂点番号の取得 |
PLANE | 面の定義(データメモリ使用) |
TRANSP | 頂点座標全体の平行移動 |
UPDTVP | 頂点番号の相対指定 |
RSETVP | 頂点番号の絶対指定 |
SLIDE | 頂点登録時のオフセットを設定 |
HOME | 頂点登録時のオフセットを解除 |
GETPOS | 「物体」の位置と姿勢を取得 |
SETPOS | 「物体」の位置と姿勢を設定 |
PRCPOS | 指定プロセスの位置と姿勢を得る |
DISTNC | 指定プロセスIDまでの距離を得る |
PRIOR | ポリゴンの表示優先順位を指定 |
RELATV | 「物体」間の相対位置と角度を返す |
RELAT2 | ワールド座標と「物体」との相対位置と角度を返す |
LOOK | 指定プロセスへの角度を返す |
FINDVX | 「物体」の頂点番号を取得 |
SETVTX | 「物体」頂点位置の更新 |
GETVTX | 「物体」頂点位置の取得 |
SETPLN | ポリゴンデータの設定 |
GETPLN | ポリゴンデータの読み出し |
SETSCL | 「物体」が属する座標系の縮尺の設定 |
GETSCL | 「物体」が属する座標系の縮尺の取得 |
EMIT | 光源となる「物体」が設定 |
「物体」を持っているプロセスが以下の命令を実行すると,「物体」は空間 内で運動します. 「物体」を持っていないプロセスが以下の命令を実行する とエラーとなります.
MOVF | 前進 X座標の増加 |
MOVB | 後退 X座標の減少 |
MOVL | 左移動 Y座標の減少 |
MOVR | 右移動 Y座標の増加 |
MOVU | 上移動 Z座標の減少 |
MOVD | 下移動 Z座標の増加 |
ROTH | ヘッド回転 横を向く |
ROTP | ピッチ回転 見上げる |
ROTB | バンク回転 首をかしげる |
MOVALL | RX,RY,RZ,RH,RP,RBの値で同時に移動と回転を行う |
MOVALH | RX,RY,RZ,RH,RP,RBの値で同時に移動と回転を行う |
SETGRV | 重力加速度の設定 初期値はゼロ |
GETGRV | 重力加速度の取得 |
SETACL | 加速度の設定 初期値はゼロ |
GETACL | 加速度の取得 |
SETVEL | 速度,角速度の設定 初期値はゼロ |
GETVEL | 速度,角速度の取得 |
SETWVL | 「物体」の速度を世界座標系で設定 初期値はゼロ |
GETWVL | 「物体」の速度を世界座標系で取得 |
SCALE | 指定した時間で「物体」の縮尺を変化 |
●テクスチャ
物体にテクスチャマッピングすることができます.
PNTUV | 「物体」頂点の定義(UV座標付き) |
DEFPNT | 「物体」の頂点の定義(UV座標付き) |
TXFILE | テクスチャビットマップファイル読み込み |
TXSET | テクスチャ指定 |
TXAXIS | テクスチャ貼り付け軸の指定 |
TXALPH | テクスチャの透明度の指定 |
TXSCAL | テクスチャの拡大率の指定 |
TXCHG | テクスチャの変更 |
TXMAP | テクスチャのマッピング方法の指定 |
TXBIAS | テクスチャ座標のオフセットの設定 |
●演算
レジスタを用いて演算を行います. 結果は指定したレジスタに返ります.
INC | 指定レジスタに1を加算 |
DEC | 指定レジスタから1を減算 |
ADD | レジスタにレジスタ,メモリ,定数を加算 |
SUB | レジスタからレジスタ,メモリ,定数を減算 |
MUL | レジスタにレジスタ,メモリ,定数を乗算 |
DIV | レジスタをレジスタ,メモリ,定数で除算 |
SHL | レジスタをレジスタ,メモリ,定数で左シフト |
SHR | レジスタにレジスタ,メモリ,定数で右シフト |
AND | レジスタにレジスタ,メモリ,定数をビット積 |
OR | レジスタにレジスタ,メモリ,定数をビット和 |
NOT | レジスタをビット反転 |
CMP | レジスタをレジスタ,メモリ,定数と比較 |
NEG | レジスタの符号反転 |
SQRT | レジスタの平方根 |
SIN | サイン 角度8倍, 結果10000倍 |
COS | コサイン 角度8倍, 結果10000倍 |
ATAN | アークタンジェント |
RANDOM | レジスタに乱数を取得 |
プロセスは命令を順番に実行しますが,実行する順序を変更する命令です. 次に実行する命令のあるアドレスを渡します.
BRA | 無条件にジャンプ |
BEQ | 演算結果が0か等しいならジャンプ |
BNE | 演算結果が非0か等しくないならジャンプ |
BGR | より大きいならジャンプ |
BGE | より大きいか等しいならジャンプ |
BLS | より小さいならジャンプ |
BLE | より小さいか等しいならジャンプ |
BMI | 演算結果が負ならジャンプ |
BPL | 演算結果が0以上ならジャンプ |
LOOP | RLレジスタの回数分の繰り返し |
CALL | 副手続きの呼出し |
RETURN | 副手続きからのリターン CALLの次の命令に処理が移る |
レジスタの設定,メモリへの格納,スタックへの退避とスタックからの復帰 等に関する命令です.
PUSH | レジスタのプッシュ |
POP | レジスタのポップ |
CLEARA | 位置姿勢レジスタの一括クリア |
PUSHA | 位置姿勢レジスタのスタックへの一括プッシュ |
POPA | 位置姿勢レジスタのスタックから一括ポップ |
CLEARG | 汎用レジスタの一括クリア |
PUSHG | 汎用レジスタのスタックへの一括プッシュ |
POPG | 汎用レジスタのスタックから一括ポップ |
ENTER | スタックフレームの作成 |
LEAVE | スタックフレームの解放 |
CALLTB | 共有メモリのテーブルで呼び出し |
LOAD | レジスタに値を設定 |
LOADM | デ-タメモリに値を設定 |
XLOAD | レジスタ相対でデータメモリの値を取得 |
CLOAD | 共有メモリからレジスタに値を取得 |
LOADBP | ローカル変数をレジスタにコピー |
STORE | レジスタをデータメモリにコピー |
XSTORE | レジスタ相対指定でレジスタをデータメモリにコピー |
CSTORE | レジスタを共有メモリに格納 |
STORBP | レジスタをスタック上のローカル変数にコピー |
テキスト画面とグラフィック画面への文字出力,線分の描画,音の出力と キーボード,マウスからの入力に関する命令です. これらの命令はプロセス 毎に独立していません. どのプロセスも同じデバイスに対して操作すること になります.
GRAPHM | グラフィックモードに設定 |
TEXTM | テキストモードに設定 |
BCOLOR | グラフィックウインドウの背景色の設定 (0-255) |
ZOOM | グラフィックウインドウの視野角の設定 (0:90度,1:53度) |
INKEY | キーコードをレジスタに入力 |
RAWKEY | キーチェック |
MOUSE | マウス座標の取得 |
OUTNUM | レジスタ1の示す値をテキストウインドウへ出力 |
OUTCHR | テキストウインドウへ1文字の出力 |
OUTSTM | データメモリの文字列をテキストウインドウへ出力 |
OUTSTR | 文字列をテキストウインドウへ出力 |
GRNUM | レジスタの示す値をグラフィックウインドウへ出力 |
GRCHR | グラフィックウインドウへ1文字の出力 |
GRSTM | データメモリ文字列をグラフィックウインドウへ出力 |
GRSTR | 文字列をグラフィックウインドウへ出力 |
GRCOL | グラフィックウインドウの文字色を設定 |
GRCLR | グラフィックウインドウの文字列クリア |
GRCSR | グラフィックウインドウ文字カーソルの設定(0-1999) |
GRPOS | グラフィックウインドウの文字書き込み位置取得 |
GRLINE | グラフィックウインドウのラインの描画設定 |
GRLINC | グラフィックウインドウのラインの消去 |
NOTE | MIDI 音階出力 |
MIDI | MIDIメッセージ(0..127, 0..127)の出力 |
●システム関連命令
J3Wシステム(プロセスに依存しない)に関する状態の取得と設定,共有メ モリのファイル入出力に関する命令です.
SYSTIM | システム時間の取得 |
SYSCNT | ジョブ実行ループ回数の取得 |
SYSPRC | 現在のプロセス数の取得 |
DATA | 共有メモリに書き込む数値列を指定 |
WRITE | 共有メモリをファイルに書出し RX:位置, RY:サイズ |
READ | 共有メモリにファイルから読み込み RX:位置 |
LIGHT | 光源の強度,方向の設定 |
PARALL | 点光源,平行光源の指定 |
COLNUM | シェイディング可能な色数を取得 |
COLWDT | シェイディング段数を取得 |
CNTVTX | 総頂点数を取得 |
CNTPLY | 総ポリゴン数を取得 |
SETCOL | 色の再設定 |
RSTCOL | 色をデフォルトに戻す |
VER | J3Wのバージョン番号を返す |