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 | フレーム先頭に戻る |
