[PREV] [NEXT] [INDEX]

【2】命令の概説

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のバージョン番号を返す


[PREV] [NEXT] [INDEX]
ご意見・ご感想は,水谷 純 <mizutani.jun@nifty.ne.jp>まで.