WaitInstruction.java
     1: //========================================================================================
     2: //  WaitInstruction.java
     3: //    en:Wait instruction
     4: //    ja:待機命令
     5: //  Copyright (C) 2003-2024 Makoto Kamada
     6: //
     7: //  This file is part of the XEiJ (X68000 Emulator in Java).
     8: //  You can use, modify and redistribute the XEiJ if the conditions are met.
     9: //  Read the XEiJ License for more details.
    10: //  https://stdkmd.net/xeij/
    11: //========================================================================================
    12: 
    13: package xeij;
    14: 
    15: //待機命令
    16: //  待機ポイントを踏んだときに本来の命令の代わりに実行されるエミュレータ拡張命令
    17: //  終了条件が成立するまで同じアドレスに留まる
    18: //    プログラムカウンタを巻き戻す
    19: //    命令の実行時間を加える
    20: //    トレース例外を処理する
    21: //    デバイスを呼び出す
    22: //    割り込みを受け付ける
    23: //  終了条件が成立したら待機ポイントを撤去する
    24: //  終了条件
    25: //    データの準備ができたとき
    26: //    決められた実時間が経過したとき
    27: //    など
    28: //  終了条件のテストに時間がかかる場合はテストの頻度を下げること
    29: //    デバイス呼び出しと割り込み受け付けの頻度を確保するため待機命令の実行時間は短く設定されている
    30: //    テストの所要時間が待機命令の実行時間より長いと負荷率が100%を超えてしまう
    31: 
    32: //class WaitInstruction
    33: public class WaitInstruction {
    34: 
    35:   public static WaitInstruction instruction;  //現在の待機命令
    36: 
    37:   //execute ()
    38:   //  待機命令を実行する
    39:   public static void execute () {
    40:     XEiJ.regPC = XEiJ.regPC0;  //PCを巻き戻す
    41:     XEiJ.mpuClockTime += XEiJ.TMR_FREQ * 1 / 1000000;  //1us。10MHzのとき10サイクル
    42:     if (instruction.terminate ()) {  //終了する
    43:       InstructionBreakPoint.ibpRemoveWaitPoint (XEiJ.regPC, XEiJ.regSRS);  //待機ポイントを撤去する
    44:     }
    45:   }
    46: 
    47:   //terminate ()
    48:   //  終了条件
    49:   public boolean terminate () {
    50:     return true;
    51:   }  //terminate
    52: 
    53:   //REWIND_AR
    54:   //  (Ar)+|-(Ar)のリードで命令を中止したとき変化したArを巻き戻すためのテーブル
    55:   //    R[8+(OC&7)]+=REWIND_AR[OC>>3]
    56:   //  以下の命令には対応していない
    57:   //    FMOVEM  FRESTORE  FSAVE  MOVE16  MOVEM  PFLUSHR  PRESTORE  PSAVE
    58:   public static final byte[] REWIND_AR = "\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\1\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\1\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\1\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\1\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\1\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\1\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\1\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\1\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\377\0\377\1\0\0\0\0\376\0\376\2\0\0\0\0\374\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\377\0\377\1\0\0\0\0\376\0\376\2\0\0\0\0\374\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\377\0\377\1\0\0\0\0\376\0\376\2\0\0\0\0\374\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\377\0\377\1\0\0\0\0\376\0\376\2\0\0\0\0\374\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\377\0\377\1\0\0\0\0\376\0\376\2\0\0\0\0\374\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\377\0\377\1\0\0\0\0\376\0\376\2\0\0\0\0\374\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\377\0\377\1\0\0\0\0\376\0\376\2\0\0\0\0\374\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\377\0\377\1\0\0\0\0\376\0\376\2\0\0\0\0\374\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\376\2\0\0\0\0\0\0\374\4\0\0\0\0\0\0\376\2\0\0\0\0\1\0\377\1\0\0\0\0\2\0\376\2\0\0\0\0\4\0\374\4\0\0\0\0\0\0\374\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\4\0\0\0\0\0\0\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0".getBytes (XEiJ.ISO_8859_1);
    59: 
    60: }  //class WaitInstruction