BCスケジュール構造
BCスケジュールの作成方法は、DDC社EMACEとほぼ同じ方法で行うことが可能です。下図にBCスケジュールの構造を示します。
設定例
① 複数のマイナー・フレームを使用する方法
② 複数のマイナー・フレーム+ウォッチドック・タイマーを使用する方法
③ 高優先度非同期メッセージを挿入する方法
④ 汎用フラグによる条件付きメッセージを使用する方法
設定例 ① 複数のマイナー・フレームを使用する方法
次の条件で作成したBCスケジュール例を以下の表に示します。
- 1msec(1000μsec) マイナー・フレーム周期
- 3つのマイナー・フレームを持つBCスケジュール
- 3msec メジャー・フレーム周期
アドレス | OP コード |
条件 | パラメータ | 説明 |
0x1B70 | LFT | ALWAYS | フレーム時間ロード | |
0x1B71 | 0x000A | 1000μsecマイナー・フレーム時間 (MINOR1を3回実行するので3msecで1周する) |
||
0x1B72 | SET | ALWAYS | ||
0x1B73 | 0x0000 | フレーム時間開始 | ||
0x1B74 | CAL | ALWAYS | コール・サブルーチン | |
0x1B75 | 0x1B82 | MINOR1コール(MINOR1先頭アドレス) | ||
0x1B76 | CAL | ALWAYS | コール・サブルーチン | |
0x1B77 | 0x1B8A | NEXTFRAMEコール(NEXTFRAME先頭アドレス) | ||
0x1B78 | CAL | ALWAYS | コール・サブルーチン | |
0x1B79 | 0x1B82 | MINOR1コール(MINOR1先頭アドレス) | ||
0x1B7A | CAL | ALWAYS | コール・サブルーチン | |
0x1B7B | 0x1B8A | NEXTFRAMEコール(NEXTFRAME先頭アドレス) | ||
0x1B7C | CAL | ALWAYS | コール・サブルーチン | |
0x1B7D | 0x1B82 | MINOR1コール(MINOR1先頭アドレス) | ||
0x1B7E | WFT | ALWAYS | ||
0x1B7F | 0x0000 | フレーム終了時間まで待機 | ||
0x1B80 | JMP | ALWAYS | ||
0x1B81 | 0x0000 | BC命令リスト先頭にジャンプ |
アドレス | OP コード |
条件 | パラメータ | 説明 |
0x1B82 | XEQ | ALWAYS | ||
0x1B83 | MSG1 | MSG1ポインタ:MCSB1 | ||
0x1B84 | XEQ | ALWAYS | ||
0x1B85 | MSG2 | MSG2ポインタ:MCSB2 | ||
0x1B86 | XEQ | ALWAYS | ||
0x1B87 | MSG3 | MSG3ポインタ:MCSB3 | ||
0x1B88 | RTN | ALWAYS | ||
0x1B89 | 0x0000 | サブルーチン・リターン |
アドレス | OP コード |
条件 | パラメータ | 説明 |
0x1B8A | WFT | ALWAYS | ||
0x1B8B | 0x0000 | フレーム時間終了まで待機 | ||
0x1B8C | LFT | ALWAYS | フレーム時間ロード | |
0x1B8D | 0x000A | 1000μsecのマイナー・フレーム時間再セット | ||
0x1B8E | SFT | ALWAYS | ||
0x1B8F | 0x0000 | フレーム時間開始 | ||
0x1B90 | RTN | ALWAYS | ||
0x1B91 | 0x0000 | サブルーチン・リターン |
設定例 ② 複数のマイナー・フレーム+ウォッチドック・タイマーを使用する方法
上記の例にウォッチドック・タイマーを追加する場合の例を示します。
アドレス | OP コード |
条件 | パラメータ | 説明 |
0x1B8A | WFT | ALWAYS | ||
0x1B8B | 0x0001 | 100μsecフレーム時間と比較 | ||
0x1B8C | JMP | GT/EQ FLAG | ||
0x1B8D | 0x1B8A | タイマーが100μsecを超えると、NEXTFRAMEの先頭にジャンプ | ||
0x1B8E | LFT | ALWAYS | フレーム時間ロード | |
0x1B8F | 0x000A | 1000μsecのマイナー・フレーム時間再セット | ||
0x1B90 | SFT | ALWAYS | ||
0x1B91 | 0x0000 | フレーム時間開始 | ||
0x1B92 | RTN | ALWAYS | ||
0x1B93 | 0x0000 | サブルーチン・リターン |
設定例 ③ 高優先度非同期メッセージを挿入する方法
高優先度非同期メッセージを追加する例。
アドレス | OP コード |
条件 | パラメータ | 説明 |
0x1B82 | XEQ | ALWAYS | ||
0x1B83 | MSG1 | MSG1ポインタ:MCSB1 | ||
0x1B84 | CAL | GP3_1 | ||
0x1B85 | ASYNCH_HP | 【ASYNCH_HP】は、高優先度非同期メッセージ・フレームのポインタです。 BC汎用フラグ3がホストによって設定されている場合に【ASYNCH_HP】を呼び出します。 | ||
0x1B86 | XEQ | ALWAYS | ||
0x1B87 | MSG2 | MSG2ポインタ:MCSB2 | ||
0x1B88 | CAL | GP3_1 | ||
0x1B89 | ASYNCH_HP | |||
0x1B8A | XEQ | ALWAYS | ||
0x1B8B | MSG3 | MSG3ポインタ:MCSB3 | ||
0x1B8C | CAL | GP3_1 | ||
0x1B8D | ASYNCH_HP | |||
0x1B8E | RTN | ALWAYS | ||
0x1B8F | 0x0000 | サブルーチン・リターン |
アドレス | OP コード |
条件 | パラメータ | 説明 |
0x1B90 | XEQ | ALWAYS | ||
0x1B91 | ASYNC_MSG1 | ASYNC_MSG1ポインタ:MCSB1 | ||
0x1B92 | XEQ | ALWAYS | ||
0x1B93 | ASYNC_MSG2 | ASYNC_MSG2ポインタ:MCSB2 | ||
0x1B94 | FLG | ALWAYS | ||
0x1B95 | 0x0800 | GP3フラグ・クリア | ||
0x1B96 | RTN | ALWAYS | ||
0x1B97 | 0x0000 | サブルーチン・リターン |
設定例 ④ 汎用フラグによる条件付きメッセージを使用する方法
汎用フラグを使用して、条件付きメッセージを作成できます。
- 汎用フラグを複数組み合わせることで、より多くのメッセージ分岐を使用することができます。
- GPF0および1は、フレーム・タイマー比較に使用されるので、ここではGPF4-2を使用します。
- 下記の表は、3つの汎用フラグを用いて、4つのメッセージをサポートする場合の例です。
GPF4 | GPF3 | GPF2 | メッセージ |
1 | 1 | 1 | 条件付きメッセージ MSG4 |
1 | 1 | 0 | 条件付きメッセージ MSG3 |
1 | 0 | 1 | 条件付きメッセージ MSG2 |
1 | 0 | 0 | 条件付きメッセージ MSG1 |
0 | X | X | MSG1/MSG2/MSG3 |
メモリ 位置 |
OP コード |
条件 | パラメータ | 説明 |
1 | XEQ | ALWAYS | MSG1 | 同期メッセージ |
2 | XEQ | ALWAYS | MSG2 | 同期メッセージ |
3 | XEQ | ALWAYS | MSG3 | 同期メッセージ |
4 | JMP | GPF4_1 | +2 | フレーム位置を2つジャンプ |
5 | JMP | GPF4_0 | -4 | フレーム先頭に戻る |
6 | JMP | GPF3_0 | +2 | フレーム位置を2つジャンプ |
7 | JMP | GPF3_1 | +3 | フレーム位置を3つジャンプ |
8 | JMP | GPF2_0 | +4 | フレーム位置を4つジャンプ |
9 | JMP | GPF2_1 | +6 | フレーム位置を6つジャンプ |
10 | JMP | GPF2_0 | +8 | フレーム位置を8つジャンプ |
11 | JMP | GPF2_1 | +10 | フレーム位置を10つジャンプ |
12 | XEQ | ALWAYS | 条件付きMSG1 | GPF4:2 = 100 の場合に実行 |
13 | FLG | ALWAYS | フラグクリア | |
14 | JMP | ALWAYS | -13 | フレーム先頭に戻る |
15 | XEQ | ALWAYS | 条件付きMSG2 | GPF4:2 = 101 の場合に実行 |
16 | FLG | ALWAYS | フラグクリア | |
17 | JMP | ALWAYS | -16 | フレーム先頭に戻る |
18 | XEQ | ALWAYS | 条件付きMSG3 | GPF4:2 = 110 の場合に実行 |
19 | FLG | ALWAYS | フラグクリア | |
20 | JMP | ALWAYS | -19 | フレーム先頭に戻る |
21 | XEQ | ALWAYS | 条件付きMSG4 | GPF4:2 = 111 の場合に実行 |
22 | FLG | ALWAYS | フラグクリア | |
23 | JMP | ALWAYS | -22 | フレーム先頭に戻る |