xeij/MC68EC030.java (3/3)
1 2 3
      w = XEiJ.busRwze (t);  //pcwz。拡張ワード
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            t)  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaCntWord

  //a = efaCltWord (ea)  //|  M  WXZ  |
  //  制御可変モードのワードオペランドの実効アドレスを求める
  //  efaCntWordとの違いは(d16,PC)と(d8,PC,Rn.wl)がないこと
  //  efaCltLongとの違いはサイクル数のみ
  @SuppressWarnings ("fallthrough") public static int efaCltWord (int ea) throws M68kException {
    int t, w, x;
    switch (ea) {
    case 0b010_000:  //(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[ 8];
      }
      //fallthrough
    case 0b010_001:  //(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[ 9];
      }
      //fallthrough
    case 0b010_010:  //(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[10];
      }
      //fallthrough
    case 0b010_011:  //(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[11];
      }
      //fallthrough
    case 0b010_100:  //(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[12];
      }
      //fallthrough
    case 0b010_101:  //(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[13];
      }
      //fallthrough
    case 0b010_110:  //(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[14];
      }
      //fallthrough
    case 0b010_111:  //(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[15];
      } else {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[ea - (0b010_000 - 8)];
      }
    case 0b101_000:  //(d16,A0)
    case 0b101_001:  //(d16,A1)
    case 0b101_010:  //(d16,A2)
    case 0b101_011:  //(d16,A3)
    case 0b101_100:  //(d16,A4)
    case 0b101_101:  //(d16,A5)
    case 0b101_110:  //(d16,A6)
    case 0b101_111:  //(d16,A7)
      XEiJ.mpuCycleCount += 8;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。ワードディスプレースメント
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 2;
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
      }
    case 0b110_000:  //(d8,A0,Rn.wl)
    case 0b110_001:  //(d8,A1,Rn.wl)
    case 0b110_010:  //(d8,A2,Rn.wl)
    case 0b110_011:  //(d8,A3,Rn.wl)
    case 0b110_100:  //(d8,A4,Rn.wl)
    case 0b110_101:  //(d8,A5,Rn.wl)
    case 0b110_110:  //(d8,A6,Rn.wl)
    case 0b110_111:  //(d8,A7,Rn.wl)
      XEiJ.mpuCycleCount += 10;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
      } else {
        w = XEiJ.regPC;
        XEiJ.regPC = w + 2;
        w = XEiJ.busRwze (w);  //pcwz。拡張ワード
      }
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            XEiJ.regRn[ea - (0b110_000 - 8)])  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_000:  //(xxx).W
      XEiJ.mpuCycleCount += 8;
      return XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
    case 0b111_001:  //(xxx).L
      XEiJ.mpuCycleCount += 12;
      return XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaCltWord

  //a = efaAnyLong (ea)  //|  M+-WXZPI|
  //  任意のモードのロングオペランドの実効アドレスを求める
  //  efaAnyWordとの違いは(Ar)+と-(Ar)がArを4変化させることと、#<data>がPCを4変化させることと、
  //  オペランドのアクセスが1ワード増える分の4サイクルが追加されていること
  @SuppressWarnings ("fallthrough") public static int efaAnyLong (int ea) throws M68kException {
    int t, w, x;
    switch (ea) {
    case 0b010_000:  //(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ 8];
      }
      //fallthrough
    case 0b010_001:  //(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ 9];
      }
      //fallthrough
    case 0b010_010:  //(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[10];
      }
      //fallthrough
    case 0b010_011:  //(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[11];
      }
      //fallthrough
    case 0b010_100:  //(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[12];
      }
      //fallthrough
    case 0b010_101:  //(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[13];
      }
      //fallthrough
    case 0b010_110:  //(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[14];
      }
      //fallthrough
    case 0b010_111:  //(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[15];
      } else {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ea - (0b010_000 - 8)];
      }
    case 0b011_000:  //(A0)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[ 8] += 4) - 4;
      }
      //fallthrough
    case 0b011_001:  //(A1)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[ 9] += 4) - 4;
      }
      //fallthrough
    case 0b011_010:  //(A2)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[10] += 4) - 4;
      }
      //fallthrough
    case 0b011_011:  //(A3)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[11] += 4) - 4;
      }
      //fallthrough
    case 0b011_100:  //(A4)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[12] += 4) - 4;
      }
      //fallthrough
    case 0b011_101:  //(A5)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[13] += 4) - 4;
      }
      //fallthrough
    case 0b011_110:  //(A6)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[14] += 4) - 4;
      }
      //fallthrough
    case 0b011_111:  //(A7)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[15] += 4) - 4;
      } else {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[ea - (0b011_000 - 8)] += 4) - 4;
      }
    case 0b100_000:  //-(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[ 8] -= 4;
      }
      //fallthrough
    case 0b100_001:  //-(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[ 9] -= 4;
      }
      //fallthrough
    case 0b100_010:  //-(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[10] -= 4;
      }
      //fallthrough
    case 0b100_011:  //-(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[11] -= 4;
      }
      //fallthrough
    case 0b100_100:  //-(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[12] -= 4;
      }
      //fallthrough
    case 0b100_101:  //-(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[13] -= 4;
      }
      //fallthrough
    case 0b100_110:  //-(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[14] -= 4;
      }
      //fallthrough
    case 0b100_111:  //-(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[15] -= 4;
      } else {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[ea - (0b100_000 - 8)] -= 4;
      }
    case 0b101_000:  //(d16,A0)
    case 0b101_001:  //(d16,A1)
    case 0b101_010:  //(d16,A2)
    case 0b101_011:  //(d16,A3)
    case 0b101_100:  //(d16,A4)
    case 0b101_101:  //(d16,A5)
    case 0b101_110:  //(d16,A6)
    case 0b101_111:  //(d16,A7)
      XEiJ.mpuCycleCount += 12;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。ワードディスプレースメント
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 2;
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
      }
    case 0b110_000:  //(d8,A0,Rn.wl)
    case 0b110_001:  //(d8,A1,Rn.wl)
    case 0b110_010:  //(d8,A2,Rn.wl)
    case 0b110_011:  //(d8,A3,Rn.wl)
    case 0b110_100:  //(d8,A4,Rn.wl)
    case 0b110_101:  //(d8,A5,Rn.wl)
    case 0b110_110:  //(d8,A6,Rn.wl)
    case 0b110_111:  //(d8,A7,Rn.wl)
      XEiJ.mpuCycleCount += 14;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
      } else {
        w = XEiJ.regPC;
        XEiJ.regPC = w + 2;
        w = XEiJ.busRwze (w);  //pcwz。拡張ワード
      }
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            XEiJ.regRn[ea - (0b110_000 - 8)])  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_000:  //(xxx).W
      XEiJ.mpuCycleCount += 12;
      return XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
    case 0b111_001:  //(xxx).L
      XEiJ.mpuCycleCount += 16;
      return XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
    case 0b111_010:  //(d16,PC)
      XEiJ.mpuCycleCount += 12;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      return (t  //ベースレジスタ
              + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
    case 0b111_011:  //(d8,PC,Rn.wl)
      XEiJ.mpuCycleCount += 14;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      w = XEiJ.busRwze (t);  //pcwz。拡張ワード
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            t)  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_100:  //#<data>
      XEiJ.mpuCycleCount += 8;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regPC += 4) - 4;
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 4;
        return t;
      }
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaAnyLong

  //a = efaMemLong (ea)  //|  M+-WXZP |
  //  メモリモードのロングオペランドの実効アドレスを求める
  //  efaAnyLongとの違いは#<data>がないこと
  @SuppressWarnings ("fallthrough") public static int efaMemLong (int ea) throws M68kException {
    int t, w, x;
    switch (ea) {
    case 0b010_000:  //(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ 8];
      }
      //fallthrough
    case 0b010_001:  //(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ 9];
      }
      //fallthrough
    case 0b010_010:  //(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[10];
      }
      //fallthrough
    case 0b010_011:  //(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[11];
      }
      //fallthrough
    case 0b010_100:  //(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[12];
      }
      //fallthrough
    case 0b010_101:  //(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[13];
      }
      //fallthrough
    case 0b010_110:  //(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[14];
      }
      //fallthrough
    case 0b010_111:  //(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[15];
      } else {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ea - (0b010_000 - 8)];
      }
    case 0b011_000:  //(A0)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[ 8] += 4) - 4;
      }
      //fallthrough
    case 0b011_001:  //(A1)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[ 9] += 4) - 4;
      }
      //fallthrough
    case 0b011_010:  //(A2)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[10] += 4) - 4;
      }
      //fallthrough
    case 0b011_011:  //(A3)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[11] += 4) - 4;
      }
      //fallthrough
    case 0b011_100:  //(A4)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[12] += 4) - 4;
      }
      //fallthrough
    case 0b011_101:  //(A5)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[13] += 4) - 4;
      }
      //fallthrough
    case 0b011_110:  //(A6)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[14] += 4) - 4;
      }
      //fallthrough
    case 0b011_111:  //(A7)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[15] += 4) - 4;
      } else {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[ea - (0b011_000 - 8)] += 4) - 4;
      }
    case 0b100_000:  //-(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[ 8] -= 4;
      }
      //fallthrough
    case 0b100_001:  //-(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[ 9] -= 4;
      }
      //fallthrough
    case 0b100_010:  //-(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[10] -= 4;
      }
      //fallthrough
    case 0b100_011:  //-(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[11] -= 4;
      }
      //fallthrough
    case 0b100_100:  //-(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[12] -= 4;
      }
      //fallthrough
    case 0b100_101:  //-(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[13] -= 4;
      }
      //fallthrough
    case 0b100_110:  //-(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[14] -= 4;
      }
      //fallthrough
    case 0b100_111:  //-(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[15] -= 4;
      } else {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[ea - (0b100_000 - 8)] -= 4;
      }
    case 0b101_000:  //(d16,A0)
    case 0b101_001:  //(d16,A1)
    case 0b101_010:  //(d16,A2)
    case 0b101_011:  //(d16,A3)
    case 0b101_100:  //(d16,A4)
    case 0b101_101:  //(d16,A5)
    case 0b101_110:  //(d16,A6)
    case 0b101_111:  //(d16,A7)
      XEiJ.mpuCycleCount += 12;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。ワードディスプレースメント
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 2;
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
      }
    case 0b110_000:  //(d8,A0,Rn.wl)
    case 0b110_001:  //(d8,A1,Rn.wl)
    case 0b110_010:  //(d8,A2,Rn.wl)
    case 0b110_011:  //(d8,A3,Rn.wl)
    case 0b110_100:  //(d8,A4,Rn.wl)
    case 0b110_101:  //(d8,A5,Rn.wl)
    case 0b110_110:  //(d8,A6,Rn.wl)
    case 0b110_111:  //(d8,A7,Rn.wl)
      XEiJ.mpuCycleCount += 14;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
      } else {
        w = XEiJ.regPC;
        XEiJ.regPC = w + 2;
        w = XEiJ.busRwze (w);  //pcwz。拡張ワード
      }
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            XEiJ.regRn[ea - (0b110_000 - 8)])  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_000:  //(xxx).W
      XEiJ.mpuCycleCount += 12;
      return XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
    case 0b111_001:  //(xxx).L
      XEiJ.mpuCycleCount += 16;
      return XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
    case 0b111_010:  //(d16,PC)
      XEiJ.mpuCycleCount += 12;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      return (t  //ベースレジスタ
              + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
    case 0b111_011:  //(d8,PC,Rn.wl)
      XEiJ.mpuCycleCount += 14;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      w = XEiJ.busRwze (t);  //pcwz。拡張ワード
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            t)  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaMemLong

  //a = efaMltLong (ea)  //|  M+-WXZ  |
  //  メモリ可変モードのロングオペランドの実効アドレスを求める
  //  efaMemLongとの違いは(d16,PC)と(d8,PC,Rn.wl)がないこと
  @SuppressWarnings ("fallthrough") public static int efaMltLong (int ea) throws M68kException {
    int t, w, x;
    switch (ea) {
    case 0b010_000:  //(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ 8];
      }
      //fallthrough
    case 0b010_001:  //(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ 9];
      }
      //fallthrough
    case 0b010_010:  //(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[10];
      }
      //fallthrough
    case 0b010_011:  //(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[11];
      }
      //fallthrough
    case 0b010_100:  //(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[12];
      }
      //fallthrough
    case 0b010_101:  //(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[13];
      }
      //fallthrough
    case 0b010_110:  //(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[14];
      }
      //fallthrough
    case 0b010_111:  //(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[15];
      } else {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ea - (0b010_000 - 8)];
      }
    case 0b011_000:  //(A0)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[ 8] += 4) - 4;
      }
      //fallthrough
    case 0b011_001:  //(A1)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[ 9] += 4) - 4;
      }
      //fallthrough
    case 0b011_010:  //(A2)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[10] += 4) - 4;
      }
      //fallthrough
    case 0b011_011:  //(A3)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[11] += 4) - 4;
      }
      //fallthrough
    case 0b011_100:  //(A4)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[12] += 4) - 4;
      }
      //fallthrough
    case 0b011_101:  //(A5)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[13] += 4) - 4;
      }
      //fallthrough
    case 0b011_110:  //(A6)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[14] += 4) - 4;
      }
      //fallthrough
    case 0b011_111:  //(A7)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[15] += 4) - 4;
      } else {
        XEiJ.mpuCycleCount += 8;
        return (XEiJ.regRn[ea - (0b011_000 - 8)] += 4) - 4;
      }
    case 0b100_000:  //-(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[ 8] -= 4;
      }
      //fallthrough
    case 0b100_001:  //-(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[ 9] -= 4;
      }
      //fallthrough
    case 0b100_010:  //-(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[10] -= 4;
      }
      //fallthrough
    case 0b100_011:  //-(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[11] -= 4;
      }
      //fallthrough
    case 0b100_100:  //-(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[12] -= 4;
      }
      //fallthrough
    case 0b100_101:  //-(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[13] -= 4;
      }
      //fallthrough
    case 0b100_110:  //-(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[14] -= 4;
      }
      //fallthrough
    case 0b100_111:  //-(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[15] -= 4;
      } else {
        XEiJ.mpuCycleCount += 10;
        return XEiJ.regRn[ea - (0b100_000 - 8)] -= 4;
      }
    case 0b101_000:  //(d16,A0)
    case 0b101_001:  //(d16,A1)
    case 0b101_010:  //(d16,A2)
    case 0b101_011:  //(d16,A3)
    case 0b101_100:  //(d16,A4)
    case 0b101_101:  //(d16,A5)
    case 0b101_110:  //(d16,A6)
    case 0b101_111:  //(d16,A7)
      XEiJ.mpuCycleCount += 12;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。ワードディスプレースメント
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 2;
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
      }
    case 0b110_000:  //(d8,A0,Rn.wl)
    case 0b110_001:  //(d8,A1,Rn.wl)
    case 0b110_010:  //(d8,A2,Rn.wl)
    case 0b110_011:  //(d8,A3,Rn.wl)
    case 0b110_100:  //(d8,A4,Rn.wl)
    case 0b110_101:  //(d8,A5,Rn.wl)
    case 0b110_110:  //(d8,A6,Rn.wl)
    case 0b110_111:  //(d8,A7,Rn.wl)
      XEiJ.mpuCycleCount += 14;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
      } else {
        w = XEiJ.regPC;
        XEiJ.regPC = w + 2;
        w = XEiJ.busRwze (w);  //pcwz。拡張ワード
      }
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            XEiJ.regRn[ea - (0b110_000 - 8)])  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_000:  //(xxx).W
      XEiJ.mpuCycleCount += 12;
      return XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
    case 0b111_001:  //(xxx).L
      XEiJ.mpuCycleCount += 16;
      return XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaMltLong

  //a = efaCntLong (ea)  //|  M  WXZP |
  //  制御モードのロングオペランドの実効アドレスを求める
  //  efaMemLongとの違いは(Ar)+と-(Ar)がないこと
  //  efaCntWordとの違いはサイクル数のみ
  @SuppressWarnings ("fallthrough") public static int efaCntLong (int ea) throws M68kException {
    int t, w, x;
    switch (ea) {
    case 0b010_000:  //(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ 8];
      }
      //fallthrough
    case 0b010_001:  //(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ 9];
      }
      //fallthrough
    case 0b010_010:  //(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[10];
      }
      //fallthrough
    case 0b010_011:  //(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[11];
      }
      //fallthrough
    case 0b010_100:  //(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[12];
      }
      //fallthrough
    case 0b010_101:  //(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[13];
      }
      //fallthrough
    case 0b010_110:  //(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[14];
      }
      //fallthrough
    case 0b010_111:  //(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[15];
      } else {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ea - (0b010_000 - 8)];
      }
    case 0b101_000:  //(d16,A0)
    case 0b101_001:  //(d16,A1)
    case 0b101_010:  //(d16,A2)
    case 0b101_011:  //(d16,A3)
    case 0b101_100:  //(d16,A4)
    case 0b101_101:  //(d16,A5)
    case 0b101_110:  //(d16,A6)
    case 0b101_111:  //(d16,A7)
      XEiJ.mpuCycleCount += 12;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。ワードディスプレースメント
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 2;
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
      }
    case 0b110_000:  //(d8,A0,Rn.wl)
    case 0b110_001:  //(d8,A1,Rn.wl)
    case 0b110_010:  //(d8,A2,Rn.wl)
    case 0b110_011:  //(d8,A3,Rn.wl)
    case 0b110_100:  //(d8,A4,Rn.wl)
    case 0b110_101:  //(d8,A5,Rn.wl)
    case 0b110_110:  //(d8,A6,Rn.wl)
    case 0b110_111:  //(d8,A7,Rn.wl)
      XEiJ.mpuCycleCount += 14;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
      } else {
        w = XEiJ.regPC;
        XEiJ.regPC = w + 2;
        w = XEiJ.busRwze (w);  //pcwz。拡張ワード
      }
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            XEiJ.regRn[ea - (0b110_000 - 8)])  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_000:  //(xxx).W
      XEiJ.mpuCycleCount += 12;
      return XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
    case 0b111_001:  //(xxx).L
      XEiJ.mpuCycleCount += 16;
      return XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
    case 0b111_010:  //(d16,PC)
      XEiJ.mpuCycleCount += 12;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      return (t  //ベースレジスタ
              + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
    case 0b111_011:  //(d8,PC,Rn.wl)
      XEiJ.mpuCycleCount += 14;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      w = XEiJ.busRwze (t);  //pcwz。拡張ワード
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            t)  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaCntLong

  //a = efaCltLong (ea)  //|  M  WXZ  |
  //  制御可変モードのワードオペランドの実効アドレスを求める
  //  efaCntLongとの違いは(d16,PC)と(d8,PC,Rn.wl)がないこと
  //  efaCltWordとの違いはサイクル数のみ
  @SuppressWarnings ("fallthrough") public static int efaCltLong (int ea) throws M68kException {
    int t, w, x;
    switch (ea) {
    case 0b010_000:  //(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ 8];
      }
      //fallthrough
    case 0b010_001:  //(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ 9];
      }
      //fallthrough
    case 0b010_010:  //(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[10];
      }
      //fallthrough
    case 0b010_011:  //(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[11];
      }
      //fallthrough
    case 0b010_100:  //(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[12];
      }
      //fallthrough
    case 0b010_101:  //(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[13];
      }
      //fallthrough
    case 0b010_110:  //(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[14];
      }
      //fallthrough
    case 0b010_111:  //(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[15];
      } else {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ea - (0b010_000 - 8)];
      }
    case 0b101_000:  //(d16,A0)
    case 0b101_001:  //(d16,A1)
    case 0b101_010:  //(d16,A2)
    case 0b101_011:  //(d16,A3)
    case 0b101_100:  //(d16,A4)
    case 0b101_101:  //(d16,A5)
    case 0b101_110:  //(d16,A6)
    case 0b101_111:  //(d16,A7)
      XEiJ.mpuCycleCount += 12;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。ワードディスプレースメント
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 2;
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
      }
    case 0b110_000:  //(d8,A0,Rn.wl)
    case 0b110_001:  //(d8,A1,Rn.wl)
    case 0b110_010:  //(d8,A2,Rn.wl)
    case 0b110_011:  //(d8,A3,Rn.wl)
    case 0b110_100:  //(d8,A4,Rn.wl)
    case 0b110_101:  //(d8,A5,Rn.wl)
    case 0b110_110:  //(d8,A6,Rn.wl)
    case 0b110_111:  //(d8,A7,Rn.wl)
      XEiJ.mpuCycleCount += 14;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
      } else {
        w = XEiJ.regPC;
        XEiJ.regPC = w + 2;
        w = XEiJ.busRwze (w);  //pcwz。拡張ワード
      }
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            XEiJ.regRn[ea - (0b110_000 - 8)])  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_000:  //(xxx).W
      XEiJ.mpuCycleCount += 12;
      return XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
    case 0b111_001:  //(xxx).L
      XEiJ.mpuCycleCount += 16;
      return XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaCltLong

  //a = efaAnyQuad (ea)  //|  M+-WXZPI|
  //  任意のモードのクワッドオペランドの実効アドレスを求める
  //  efaAnyLongとの違いは(Ar)+と-(Ar)がArを8変化させることと、#<data>がPCを8変化させることと、
  //  オペランドのアクセスが2ワード増える分の8サイクルが追加されていること
  @SuppressWarnings ("fallthrough") public static int efaAnyQuad (int ea) throws M68kException {
    int t, w, x;
    switch (ea) {
    case 0b010_000:  //(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[ 8];
      }
      //fallthrough
    case 0b010_001:  //(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[ 9];
      }
      //fallthrough
    case 0b010_010:  //(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[10];
      }
      //fallthrough
    case 0b010_011:  //(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[11];
      }
      //fallthrough
    case 0b010_100:  //(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[12];
      }
      //fallthrough
    case 0b010_101:  //(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[13];
      }
      //fallthrough
    case 0b010_110:  //(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[14];
      }
      //fallthrough
    case 0b010_111:  //(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[15];
      } else {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[ea - (0b010_000 - 8)];
      }
    case 0b011_000:  //(A0)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[ 8] += 8) - 8;
      }
      //fallthrough
    case 0b011_001:  //(A1)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[ 9] += 8) - 8;
      }
      //fallthrough
    case 0b011_010:  //(A2)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[10] += 8) - 8;
      }
      //fallthrough
    case 0b011_011:  //(A3)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[11] += 8) - 8;
      }
      //fallthrough
    case 0b011_100:  //(A4)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[12] += 8) - 8;
      }
      //fallthrough
    case 0b011_101:  //(A5)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[13] += 8) - 8;
      }
      //fallthrough
    case 0b011_110:  //(A6)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[14] += 8) - 8;
      }
      //fallthrough
    case 0b011_111:  //(A7)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[15] += 8) - 8;
      } else {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[ea - (0b011_000 - 8)] += 8) - 8;
      }
    case 0b100_000:  //-(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[ 8] -= 8;
      }
      //fallthrough
    case 0b100_001:  //-(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[ 9] -= 8;
      }
      //fallthrough
    case 0b100_010:  //-(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[10] -= 8;
      }
      //fallthrough
    case 0b100_011:  //-(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[11] -= 8;
      }
      //fallthrough
    case 0b100_100:  //-(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[12] -= 8;
      }
      //fallthrough
    case 0b100_101:  //-(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[13] -= 8;
      }
      //fallthrough
    case 0b100_110:  //-(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[14] -= 8;
      }
      //fallthrough
    case 0b100_111:  //-(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[15] -= 8;
      } else {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[ea - (0b100_000 - 8)] -= 8;
      }
    case 0b101_000:  //(d16,A0)
    case 0b101_001:  //(d16,A1)
    case 0b101_010:  //(d16,A2)
    case 0b101_011:  //(d16,A3)
    case 0b101_100:  //(d16,A4)
    case 0b101_101:  //(d16,A5)
    case 0b101_110:  //(d16,A6)
    case 0b101_111:  //(d16,A7)
      XEiJ.mpuCycleCount += 20;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。ワードディスプレースメント
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 2;
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
      }
    case 0b110_000:  //(d8,A0,Rn.wl)
    case 0b110_001:  //(d8,A1,Rn.wl)
    case 0b110_010:  //(d8,A2,Rn.wl)
    case 0b110_011:  //(d8,A3,Rn.wl)
    case 0b110_100:  //(d8,A4,Rn.wl)
    case 0b110_101:  //(d8,A5,Rn.wl)
    case 0b110_110:  //(d8,A6,Rn.wl)
    case 0b110_111:  //(d8,A7,Rn.wl)
      XEiJ.mpuCycleCount += 22;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
      } else {
        w = XEiJ.regPC;
        XEiJ.regPC = w + 2;
        w = XEiJ.busRwze (w);  //pcwz。拡張ワード
      }
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            XEiJ.regRn[ea - (0b110_000 - 8)])  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_000:  //(xxx).W
      XEiJ.mpuCycleCount += 20;
      return XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
    case 0b111_001:  //(xxx).L
      XEiJ.mpuCycleCount += 24;
      return XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
    case 0b111_010:  //(d16,PC)
      XEiJ.mpuCycleCount += 20;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      return (t  //ベースレジスタ
              + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
    case 0b111_011:  //(d8,PC,Rn.wl)
      XEiJ.mpuCycleCount += 22;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      w = XEiJ.busRwze (t);  //pcwz。拡張ワード
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            t)  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_100:  //#<data>
      XEiJ.mpuCycleCount += 16;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regPC += 8) - 8;
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 8;
        return t;
      }
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaAnyQuad

  //a = efaMltQuad (ea)  //|  M+-WXZ  |
  //  メモリ可変モードのクワッドオペランドの実効アドレスを求める
  //  efaMltLongとの違いは(Ar)+と-(Ar)がArを8変化させることと、#<data>がPCを8変化させることと、
  //  オペランドのアクセスが2ワード増える分の8サイクルが追加されていること
  @SuppressWarnings ("fallthrough") public static int efaMltQuad (int ea) throws M68kException {
    int t, w, x;
    switch (ea) {
    case 0b010_000:  //(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[ 8];
      }
      //fallthrough
    case 0b010_001:  //(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[ 9];
      }
      //fallthrough
    case 0b010_010:  //(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[10];
      }
      //fallthrough
    case 0b010_011:  //(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[11];
      }
      //fallthrough
    case 0b010_100:  //(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[12];
      }
      //fallthrough
    case 0b010_101:  //(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[13];
      }
      //fallthrough
    case 0b010_110:  //(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[14];
      }
      //fallthrough
    case 0b010_111:  //(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[15];
      } else {
        XEiJ.mpuCycleCount += 16;
        return XEiJ.regRn[ea - (0b010_000 - 8)];
      }
    case 0b011_000:  //(A0)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[ 8] += 8) - 8;
      }
      //fallthrough
    case 0b011_001:  //(A1)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[ 9] += 8) - 8;
      }
      //fallthrough
    case 0b011_010:  //(A2)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[10] += 8) - 8;
      }
      //fallthrough
    case 0b011_011:  //(A3)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[11] += 8) - 8;
      }
      //fallthrough
    case 0b011_100:  //(A4)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[12] += 8) - 8;
      }
      //fallthrough
    case 0b011_101:  //(A5)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[13] += 8) - 8;
      }
      //fallthrough
    case 0b011_110:  //(A6)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[14] += 8) - 8;
      }
      //fallthrough
    case 0b011_111:  //(A7)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[15] += 8) - 8;
      } else {
        XEiJ.mpuCycleCount += 16;
        return (XEiJ.regRn[ea - (0b011_000 - 8)] += 8) - 8;
      }
    case 0b100_000:  //-(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[ 8] -= 8;
      }
      //fallthrough
    case 0b100_001:  //-(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[ 9] -= 8;
      }
      //fallthrough
    case 0b100_010:  //-(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[10] -= 8;
      }
      //fallthrough
    case 0b100_011:  //-(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[11] -= 8;
      }
      //fallthrough
    case 0b100_100:  //-(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[12] -= 8;
      }
      //fallthrough
    case 0b100_101:  //-(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[13] -= 8;
      }
      //fallthrough
    case 0b100_110:  //-(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[14] -= 8;
      }
      //fallthrough
    case 0b100_111:  //-(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[15] -= 8;
      } else {
        XEiJ.mpuCycleCount += 18;
        return XEiJ.regRn[ea - (0b100_000 - 8)] -= 8;
      }
    case 0b101_000:  //(d16,A0)
    case 0b101_001:  //(d16,A1)
    case 0b101_010:  //(d16,A2)
    case 0b101_011:  //(d16,A3)
    case 0b101_100:  //(d16,A4)
    case 0b101_101:  //(d16,A5)
    case 0b101_110:  //(d16,A6)
    case 0b101_111:  //(d16,A7)
      XEiJ.mpuCycleCount += 20;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。ワードディスプレースメント
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 2;
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
      }
    case 0b110_000:  //(d8,A0,Rn.wl)
    case 0b110_001:  //(d8,A1,Rn.wl)
    case 0b110_010:  //(d8,A2,Rn.wl)
    case 0b110_011:  //(d8,A3,Rn.wl)
    case 0b110_100:  //(d8,A4,Rn.wl)
    case 0b110_101:  //(d8,A5,Rn.wl)
    case 0b110_110:  //(d8,A6,Rn.wl)
    case 0b110_111:  //(d8,A7,Rn.wl)
      XEiJ.mpuCycleCount += 22;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
      } else {
        w = XEiJ.regPC;
        XEiJ.regPC = w + 2;
        w = XEiJ.busRwze (w);  //pcwz。拡張ワード
      }
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            XEiJ.regRn[ea - (0b110_000 - 8)])  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_000:  //(xxx).W
      XEiJ.mpuCycleCount += 20;
      return XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
    case 0b111_001:  //(xxx).L
      XEiJ.mpuCycleCount += 24;
      return XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaMltQuad

  //a = efaAnyExtd (ea)  //|  M+-WXZPI|
  //  任意のモードのエクステンデッドオペランドの実効アドレスを求める
  //  efaAnyQuadとの違いは(Ar)+と-(Ar)がArを12変化させることと、#<data>がPCを12変化させることと、
  //  オペランドのアクセスが2ワード増える分の8サイクルが追加されていること
  @SuppressWarnings ("fallthrough") public static int efaAnyExtd (int ea) throws M68kException {
    int t, w, x;
    switch (ea) {
    case 0b010_000:  //(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[ 8];
      }
      //fallthrough
    case 0b010_001:  //(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[ 9];
      }
      //fallthrough
    case 0b010_010:  //(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[10];
      }
      //fallthrough
    case 0b010_011:  //(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[11];
      }
      //fallthrough
    case 0b010_100:  //(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[12];
      }
      //fallthrough
    case 0b010_101:  //(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[13];
      }
      //fallthrough
    case 0b010_110:  //(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[14];
      }
      //fallthrough
    case 0b010_111:  //(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[15];
      } else {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[ea - (0b010_000 - 8)];
      }
    case 0b011_000:  //(A0)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[ 8] += 12) - 12;
      }
      //fallthrough
    case 0b011_001:  //(A1)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[ 9] += 12) - 12;
      }
      //fallthrough
    case 0b011_010:  //(A2)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[10] += 12) - 12;
      }
      //fallthrough
    case 0b011_011:  //(A3)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[11] += 12) - 12;
      }
      //fallthrough
    case 0b011_100:  //(A4)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[12] += 12) - 12;
      }
      //fallthrough
    case 0b011_101:  //(A5)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[13] += 12) - 12;
      }
      //fallthrough
    case 0b011_110:  //(A6)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[14] += 12) - 12;
      }
      //fallthrough
    case 0b011_111:  //(A7)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[15] += 12) - 12;
      } else {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[ea - (0b011_000 - 8)] += 12) - 12;
      }
    case 0b100_000:  //-(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 26;
        return XEiJ.regRn[ 8] -= 12;
      }
      //fallthrough
    case 0b100_001:  //-(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 26;
        return XEiJ.regRn[ 9] -= 12;
      }
      //fallthrough
    case 0b100_010:  //-(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 26;
        return XEiJ.regRn[10] -= 12;
      }
      //fallthrough
    case 0b100_011:  //-(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 26;
        return XEiJ.regRn[11] -= 12;
      }
      //fallthrough
    case 0b100_100:  //-(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 26;
        return XEiJ.regRn[12] -= 12;
      }
      //fallthrough
    case 0b100_101:  //-(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 26;
        return XEiJ.regRn[13] -= 12;
      }
      //fallthrough
    case 0b100_110:  //-(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 26;
        return XEiJ.regRn[14] -= 12;
      }
      //fallthrough
    case 0b100_111:  //-(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 26;
        return XEiJ.regRn[15] -= 12;
      } else {
        XEiJ.mpuCycleCount += 26;
        return XEiJ.regRn[ea - (0b100_000 - 8)] -= 12;
      }
    case 0b101_000:  //(d16,A0)
    case 0b101_001:  //(d16,A1)
    case 0b101_010:  //(d16,A2)
    case 0b101_011:  //(d16,A3)
    case 0b101_100:  //(d16,A4)
    case 0b101_101:  //(d16,A5)
    case 0b101_110:  //(d16,A6)
    case 0b101_111:  //(d16,A7)
      XEiJ.mpuCycleCount += 28;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。ワードディスプレースメント
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 2;
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
      }
    case 0b110_000:  //(d8,A0,Rn.wl)
    case 0b110_001:  //(d8,A1,Rn.wl)
    case 0b110_010:  //(d8,A2,Rn.wl)
    case 0b110_011:  //(d8,A3,Rn.wl)
    case 0b110_100:  //(d8,A4,Rn.wl)
    case 0b110_101:  //(d8,A5,Rn.wl)
    case 0b110_110:  //(d8,A6,Rn.wl)
    case 0b110_111:  //(d8,A7,Rn.wl)
      XEiJ.mpuCycleCount += 30;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
      } else {
        w = XEiJ.regPC;
        XEiJ.regPC = w + 2;
        w = XEiJ.busRwze (w);  //pcwz。拡張ワード
      }
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            XEiJ.regRn[ea - (0b110_000 - 8)])  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_000:  //(xxx).W
      XEiJ.mpuCycleCount += 28;
      return XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
    case 0b111_001:  //(xxx).L
      XEiJ.mpuCycleCount += 32;
      return XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
    case 0b111_010:  //(d16,PC)
      XEiJ.mpuCycleCount += 28;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      return (t  //ベースレジスタ
              + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
    case 0b111_011:  //(d8,PC,Rn.wl)
      XEiJ.mpuCycleCount += 30;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      w = XEiJ.busRwze (t);  //pcwz。拡張ワード
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            t)  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_100:  //#<data>
      XEiJ.mpuCycleCount += 24;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regPC += 12) - 12;
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 12;
        return t;
      }
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaAnyExtd

  //a = efaMltExtd (ea)  //|  M+-WXZ  |
  //  メモリ可変モードのエクステンデッドオペランドの実効アドレスを求める
  //  efaMltQuadとの違いは(Ar)+と-(Ar)がArを12変化させることと、#<data>がPCを12変化させることと、
  //  オペランドのアクセスが2ワード増える分の8サイクルが追加されていること
  @SuppressWarnings ("fallthrough") public static int efaMltExtd (int ea) throws M68kException {
    int t, w, x;
    switch (ea) {
    case 0b010_000:  //(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[ 8];
      }
      //fallthrough
    case 0b010_001:  //(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[ 9];
      }
      //fallthrough
    case 0b010_010:  //(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[10];
      }
      //fallthrough
    case 0b010_011:  //(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[11];
      }
      //fallthrough
    case 0b010_100:  //(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[12];
      }
      //fallthrough
    case 0b010_101:  //(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[13];
      }
      //fallthrough
    case 0b010_110:  //(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[14];
      }
      //fallthrough
    case 0b010_111:  //(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[15];
      } else {
        XEiJ.mpuCycleCount += 24;
        return XEiJ.regRn[ea - (0b010_000 - 8)];
      }
    case 0b011_000:  //(A0)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[ 8] += 12) - 12;
      }
      //fallthrough
    case 0b011_001:  //(A1)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[ 9] += 12) - 12;
      }
      //fallthrough
    case 0b011_010:  //(A2)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[10] += 12) - 12;
      }
      //fallthrough
    case 0b011_011:  //(A3)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[11] += 12) - 12;
      }
      //fallthrough
    case 0b011_100:  //(A4)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[12] += 12) - 12;
      }
      //fallthrough
    case 0b011_101:  //(A5)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[13] += 12) - 12;
      }
      //fallthrough
    case 0b011_110:  //(A6)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[14] += 12) - 12;
      }
      //fallthrough
    case 0b011_111:  //(A7)+
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[15] += 12) - 12;
      } else {
        XEiJ.mpuCycleCount += 24;
        return (XEiJ.regRn[ea - (0b011_000 - 8)] += 12) - 12;
      }
    case 0b100_000:  //-(A0)
    case 0b100_001:  //-(A1)
    case 0b100_010:  //-(A2)
    case 0b100_011:  //-(A3)
    case 0b100_100:  //-(A4)
    case 0b100_101:  //-(A5)
    case 0b100_110:  //-(A6)
    case 0b100_111:  //-(A7)
      XEiJ.mpuCycleCount += 26;
      return XEiJ.regRn[ea - (0b100_000 - 8)] -= 12;
    case 0b101_000:  //(d16,A0)
    case 0b101_001:  //(d16,A1)
    case 0b101_010:  //(d16,A2)
    case 0b101_011:  //(d16,A3)
    case 0b101_100:  //(d16,A4)
    case 0b101_101:  //(d16,A5)
    case 0b101_110:  //(d16,A6)
    case 0b101_111:  //(d16,A7)
      XEiJ.mpuCycleCount += 28;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。ワードディスプレースメント
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 2;
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
      }
    case 0b110_000:  //(d8,A0,Rn.wl)
    case 0b110_001:  //(d8,A1,Rn.wl)
    case 0b110_010:  //(d8,A2,Rn.wl)
    case 0b110_011:  //(d8,A3,Rn.wl)
    case 0b110_100:  //(d8,A4,Rn.wl)
    case 0b110_101:  //(d8,A5,Rn.wl)
    case 0b110_110:  //(d8,A6,Rn.wl)
    case 0b110_111:  //(d8,A7,Rn.wl)
      XEiJ.mpuCycleCount += 30;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
      } else {
        w = XEiJ.regPC;
        XEiJ.regPC = w + 2;
        w = XEiJ.busRwze (w);  //pcwz。拡張ワード
      }
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            XEiJ.regRn[ea - (0b110_000 - 8)])  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_000:  //(xxx).W
      XEiJ.mpuCycleCount += 28;
      return XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
    case 0b111_001:  //(xxx).L
      XEiJ.mpuCycleCount += 32;
      return XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaMltExtd

  //a = efaLeaPea (ea)  //|  M  WXZP |
  //  LEA命令とPEA命令のオペランドの実効アドレスを求める
  //  efaCntWordとの違いはサイクル数のみ
  //  LEA命令のベースサイクル数4を含んでいるのでLEA命令ではベースサイクル数を加えなくてよい
  //  PEA命令のベースサイクル数は12-4=8
  @SuppressWarnings ("fallthrough") public static int efaLeaPea (int ea) throws M68kException {
    int t, w, x;
    switch (ea) {
    case 0b010_000:  //(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[ 8];
      }
      //fallthrough
    case 0b010_001:  //(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[ 9];
      }
      //fallthrough
    case 0b010_010:  //(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[10];
      }
      //fallthrough
    case 0b010_011:  //(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[11];
      }
      //fallthrough
    case 0b010_100:  //(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[12];
      }
      //fallthrough
    case 0b010_101:  //(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[13];
      }
      //fallthrough
    case 0b010_110:  //(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[14];
      }
      //fallthrough
    case 0b010_111:  //(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[15];
      } else {
        XEiJ.mpuCycleCount += 4;
        return XEiJ.regRn[ea - (0b010_000 - 8)];
      }
    case 0b101_000:  //(d16,A0)
    case 0b101_001:  //(d16,A1)
    case 0b101_010:  //(d16,A2)
    case 0b101_011:  //(d16,A3)
    case 0b101_100:  //(d16,A4)
    case 0b101_101:  //(d16,A5)
    case 0b101_110:  //(d16,A6)
    case 0b101_111:  //(d16,A7)
      XEiJ.mpuCycleCount += 8;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。ワードディスプレースメント
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 2;
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
      }
    case 0b110_000:  //(d8,A0,Rn.wl)
    case 0b110_001:  //(d8,A1,Rn.wl)
    case 0b110_010:  //(d8,A2,Rn.wl)
    case 0b110_011:  //(d8,A3,Rn.wl)
    case 0b110_100:  //(d8,A4,Rn.wl)
    case 0b110_101:  //(d8,A5,Rn.wl)
    case 0b110_110:  //(d8,A6,Rn.wl)
    case 0b110_111:  //(d8,A7,Rn.wl)
      XEiJ.mpuCycleCount += 12;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
      } else {
        w = XEiJ.regPC;
        XEiJ.regPC = w + 2;
        w = XEiJ.busRwze (w);  //pcwz。拡張ワード
      }
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            XEiJ.regRn[ea - (0b110_000 - 8)])  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_000:  //(xxx).W
      XEiJ.mpuCycleCount += 8;
      return XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
    case 0b111_001:  //(xxx).L
      XEiJ.mpuCycleCount += 12;
      return XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
    case 0b111_010:  //(d16,PC)
      XEiJ.mpuCycleCount += 8;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      return (t  //ベースレジスタ
              + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
    case 0b111_011:  //(d8,PC,Rn.wl)
      XEiJ.mpuCycleCount += 12;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      w = XEiJ.busRwze (t);  //pcwz。拡張ワード
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            t)  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaLeaPea

  //a = efaJmpJsr (ea)  //|  M  WXZP |
  //  JMP命令とJSR命令のオペランドの実効アドレスを求める
  //  efaCntWordとの違いはサイクル数のみ
  //  JMP命令のベースサイクル数8を含んでいるのでJMP命令ではベースサイクル数を加えなくてよい
  //  JSR命令のベースサイクル数は16-8=8
  @SuppressWarnings ("fallthrough") public static int efaJmpJsr (int ea) throws M68kException {
    int t, w, x;
    switch (ea) {
    case 0b010_000:  //(A0)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ 8];
      }
      //fallthrough
    case 0b010_001:  //(A1)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ 9];
      }
      //fallthrough
    case 0b010_010:  //(A2)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[10];
      }
      //fallthrough
    case 0b010_011:  //(A3)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[11];
      }
      //fallthrough
    case 0b010_100:  //(A4)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[12];
      }
      //fallthrough
    case 0b010_101:  //(A5)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[13];
      }
      //fallthrough
    case 0b010_110:  //(A6)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[14];
      }
      //fallthrough
    case 0b010_111:  //(A7)
      if (XEiJ.EFA_SEPARATE_AR) {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[15];
      } else {
        XEiJ.mpuCycleCount += 8;
        return XEiJ.regRn[ea - (0b010_000 - 8)];
      }
    case 0b101_000:  //(d16,A0)
    case 0b101_001:  //(d16,A1)
    case 0b101_010:  //(d16,A2)
    case 0b101_011:  //(d16,A3)
    case 0b101_100:  //(d16,A4)
    case 0b101_101:  //(d16,A5)
    case 0b101_110:  //(d16,A6)
    case 0b101_111:  //(d16,A7)
      XEiJ.mpuCycleCount += 10;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。ワードディスプレースメント
      } else {
        t = XEiJ.regPC;
        XEiJ.regPC = t + 2;
        return (XEiJ.regRn[ea - (0b101_000 - 8)]  //ベースレジスタ
                + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
      }
    case 0b110_000:  //(d8,A0,Rn.wl)
    case 0b110_001:  //(d8,A1,Rn.wl)
    case 0b110_010:  //(d8,A2,Rn.wl)
    case 0b110_011:  //(d8,A3,Rn.wl)
    case 0b110_100:  //(d8,A4,Rn.wl)
    case 0b110_101:  //(d8,A5,Rn.wl)
    case 0b110_110:  //(d8,A6,Rn.wl)
    case 0b110_111:  //(d8,A7,Rn.wl)
      XEiJ.mpuCycleCount += 14;
      if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
        w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
      } else {
        w = XEiJ.regPC;
        XEiJ.regPC = w + 2;
        w = XEiJ.busRwze (w);  //pcwz。拡張ワード
      }
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            XEiJ.regRn[ea - (0b110_000 - 8)])  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    case 0b111_000:  //(xxx).W
      XEiJ.mpuCycleCount += 10;
      return XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
    case 0b111_001:  //(xxx).L
      XEiJ.mpuCycleCount += 12;
      return XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
    case 0b111_010:  //(d16,PC)
      XEiJ.mpuCycleCount += 10;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      return (t  //ベースレジスタ
              + XEiJ.busRwse (t));  //pcws。ワードディスプレースメント
    case 0b111_011:  //(d8,PC,Rn.wl)
      XEiJ.mpuCycleCount += 14;
      t = XEiJ.regPC;
      XEiJ.regPC = t + 2;
      w = XEiJ.busRwze (t);  //pcwz。拡張ワード
      XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
      t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
            t)  //ベースレジスタ
           + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
              w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
              w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
              XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
      x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
           (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
            XEiJ.regRn[w >> 12])  //ロングインデックス
           << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
      return ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
              ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
               XEiJ.busRls (t) + x)  //ポストインデックス
              + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
                 (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングアウタディスプレースメント
    }  //switch
    M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
    throw M68kException.m6eSignal;
  }  //efaJmpJsr



  //コプロ命令途中割り込みとコプロプロトコル違反
  //  擬似的に「エラー($000D)が発生しました」が出るようにする
  //
  //  リセット
  //    終了時刻は現在時刻
  //    NULLステートをセット
  //    通常状態に移行
  //    FP0-FP7はqNaN
  //    FPCR/FPSR/FPIARは0
  //  FSAVE
  //    NULLステート
  //      headは0x00380000
  //      nは0
  //      サイクル数は14
  //    IDLEステート
  //      headは0x1f380000
  //      nは0x38>>2
  //      通常状態または命令途中を保存
  //      body2は通常状態は0、命令途中0x0f800000
  //      cyclesは68881は50、68882は98
  //    実効アドレスを求める
  //    ステートフレームを書く
  //      -(Ar)
  //        末尾から
  //        Arを書き換える
  //      -(Ar)以外
  //        先頭から
  //    通常状態に移行
  //    終了時刻を設定
  //  FRESTORE
  //    実効アドレスを求める
  //    ステートフレームの先頭を読む
  //    NULLステート
  //      cyclesは19
  //      リセット
  //    IDLEステートまたは不明
  //      cyclesは68881は55、68882は103
  //      ステートフレームの本体を読む
  //      先頭から
  //      通常状態または命令途中を復元
  //      NULLステートをクリア
  //    (Ar)+のときArを書き換える
  //    終了時刻を設定
  //  FSAVE/FRESTORE以外のコプロ命令
  //    NULLステートをクリア
  //    命令途中
  //      通常状態に移行
  //      終了時刻は現在時刻
  //      プロトコル違反
  //    終了時刻前
  //      待機中に移行
  //      PCを巻き戻す
  //    終了時刻後
  //      通常状態に移行
  //      終了時刻を設定
  //      コプロ命令を実行
  //  割り込み
  //    待機中
  //      命令途中に移行
  //      フォーマット$9のスタックフレームをプッシュ
  //    待機中でない
  //      フォーマット$0のスタックフレームをプッシュ
  //  RTE
  //    スタックフレームをポップ
  //    フォーマット$9
  //      通常状態に移行
  //
  static final boolean CPV_ON = true;
  static final long CPV_FREQ = 33333333;  //コプロの動作周波数。33MHz
  static long cpvEndTime;  //終了時刻
  static boolean cpvNullState;  //NULLステート
  static final int CPV_NORMAL = 0;  //通常状態
  static final int CPV_WAITING = 1;  //待機中
  static final int CPV_MID_INSTRUCTION = 2;  //命令途中
  static int cpvStatus;  //状態

  //cpvReset ()
  //  リセット
  static void cpvReset () {
    //終了時刻は現在時刻
    cpvEndTime = XEiJ.mpuClockTime;
    //NULLステートをセット
    cpvNullState = true;
    //通常状態に移行
    cpvStatus = CPV_NORMAL;
    //FP0-FP7はqNaN
    for (int n = 0; n < 8; n++) {
      XEiJ.fpuBox.epbFPn[n].setnan ();
    }
    //FPCR/FPSR/FPIARは0
    XEiJ.fpuBox.epbFpcr = 0;
    XEiJ.fpuBox.epbFpsr = 0;
    XEiJ.fpuBox.epbFpiar = 0;
  }  //cpvReset

  //done = cpvCommon (w)
  //  FSAVE/FRESTORE以外のコプロ命令
  static boolean cpvCommon (int w) throws M68kException {
    //NULLステートをクリア
    cpvNullState = false;
    if (cpvStatus == CPV_MID_INSTRUCTION) {  //命令途中
      //通常状態に移行
      cpvStatus = CPV_NORMAL;
      //終了時刻は現在時刻
      cpvEndTime = XEiJ.mpuClockTime;
      //プロトコル違反
      XEiJ.mpuCycleCount += 34;
      int vectorNumber = 0x000d;
      int save_sr = XEiJ.regSRT1 | XEiJ.regSRT0 | XEiJ.regSRS | XEiJ.regSRM | XEiJ.regSRI | XEiJ.regCCR;
      int sp = XEiJ.regRn[15];
      XEiJ.regSRT1 = XEiJ.regSRT0 = 0;  //srのTビットを消す
      if (XEiJ.regSRS == 0) {  //ユーザモードのとき
        XEiJ.regSRS = XEiJ.REG_SR_S;  //スーパーバイザモードへ移行する
        XEiJ.mpuUSP = sp;  //USPを保存
        sp = XEiJ.regSRM != 0 ? XEiJ.mpuMSP : XEiJ.mpuISP;  //SSPを復元
        if (DataBreakPoint.DBP_ON) {
          DataBreakPoint.dbpMemoryMap = DataBreakPoint.dbpSuperMap;  //スーパーバイザメモリマップに切り替える
        } else {
          XEiJ.busMemoryMap = XEiJ.busSuperMap;  //スーパーバイザメモリマップに切り替える
        }
        if (InstructionBreakPoint.IBP_ON) {
          InstructionBreakPoint.ibpOp1MemoryMap = InstructionBreakPoint.ibpOp1SuperMap;
        }
      }
      XEiJ.regRn[15] = (sp -= 20);
      //+16
      //  プログラムの中の無関係な命令やスタックエリアなどを指している
      //  たまたまバスに乗っていたアドレスを指しているような乱雑さで詳細は不明
      XEiJ.busWl (sp + 16, XEiJ.regPC0);
      //+12
      //  0x000ff230、0x000ff23cなど
      //  違う命令でも同じだったり同じ命令でもオペランドによって違ったりする
      //  同じ命令かつ同じオペランドだと同じようなのでルールはあるようだが詳細は不明
      XEiJ.busWl (sp + 12, 0x000ff200);
      XEiJ.busWl (sp + 8, XEiJ.regPC0);  //命令の先頭
      XEiJ.busWw (sp + 6, 0x9000 | (vectorNumber << 2));  //フォーマットとオフセット
      XEiJ.busWl (sp + 2, XEiJ.regPC);  //次にフェッチするアドレス。次の命令とは限らない
      XEiJ.busWw (sp, save_sr);  //sr
      irpSetPC (XEiJ.busRlsf (XEiJ.mpuVBR + (vectorNumber << 2)));  //例外ベクタを取り出してジャンプする
      return true;
    } else if ((XEiJ.mpuClockTime - cpvEndTime) < 0L) {  //終了時刻前
      //待機中に移行
      cpvStatus = CPV_WAITING;
      //PCを巻き戻す
      XEiJ.regPC = XEiJ.regPC0;
      XEiJ.mpuCycleCount += 4;
      return true;
    } else {  //終了時刻後
      //通常状態に移行
      cpvStatus = CPV_NORMAL;
      //終了時刻を設定
      int cycles = 0;
      if (w == -1) {  //FScc/FDBcc/FTRAPcc
        int mmm_000 = XEiJ.regOC & 0b111_000;
        if (mmm_000 == 0b001_000) {  //FDBcc
          //  真で分岐しないとき18、偽で分岐しないとき22、偽で分岐するとき18
          cycles += 18;
        } else if (mmm_000 == 0b111_000) {  //FTRAPcc
          //  トラップするとき36、しないとき16、ワードは+2、ロングは+4
          cycles += 16;
        } else {  //FScc
          //  Drは16、(Ar)+と-(Ar)は真のとき18、偽のとき17、他は16+ea
          cycles += 16;
        }
      } else if (w == -2) {  //FBccW
        //  分岐するとき18、分岐しないとき16
        //  FNOPはFBF.W (*)+4の別名
        cycles += 16;
      } else if (w == -3) {  //FBccL
        //  分岐するとき18、分岐しないとき16
        cycles += 16;
      } else {  //Fgen
        int t = w >> 13;
        int m = w >> 10 & 7;
        //int n = w >> 7 & 7;
        //int c = w & 0x7f;
        int i = (XEiJ.currentCopro0 & 2) != 0 ? 1 : 0;  //0=68881,1=68882
        if (t == 0) {
          //$0xxx-$1xxx: Fop.X FPm,FPn
          int c = w & 0x3f;  //6bit
          cycles += CPV_REG[i << 9 | c << 3 | 7];
        } else if (t == 2 && m == 7) {
          //$5Cxx-$5Fxx: FMOVECR.X #c,FPn
          cycles += CPV_CR[i];
        } else if (t == 2) {
          //$40xx-$5Bxx: F[op]c.[LSXPWDB]m <ea>,FPn
          //  srcがRnのとき-5、dstがRnのとき-2
          int c = w & 0x3f;  //6bit
          cycles += CPV_REG[i << 9 | c << 3 | m];
        } else if (t == 3) {
          //$6xxx-$7xxx: FMOVE.[LSXPsWDBPd]m FPn,<ea>
          cycles += CPV_MEM[i << 3 | m];
        } else if (t == 4) {
          //$8xxx-$9xxx: FMOVEM.L <ea>,FPCR/FPSR/FPIAR
          //  25+6n n==1でsrcがRrのとき-5、dstがRrのとき-2
        } else if (t == 5) {
          //$Axxx-$Bxxx: FMOVEM.L FPCR/FPSR/FPIAR,<ea>
          //  25+6n  n==1でsrcがRrのとき-5、dstがRrのとき-2
        } else if (t == 6) {
          //$Cxxx-$Dxxx: FMOVEM.X <ea>,<list>
          //  33+31n  listがDrのとき+14
        } else if (t == 8) {
          //$Exxx-$Fxxx: FMOVEM.X <list>,<ea>
          //  35+25n  listがDrのとき+14
        }
      }
      cpvEndTime = XEiJ.mpuClockTime + (XEiJ.TMR_FREQ / CPV_FREQ) * cycles;
      //コプロ命令を実行
      return false;
    }
  }  //cpvCommon

  //CPV_CR
  //  FMOVECR.X #c,FPnのサイクル数
  //!!! Totalのみ
/*
  public static final char[] CPV_CR = {
    //68881
    29,
    //68882
    32,
  };
*/
  //perl ../misc/itoc.pl MC68EC030.java CPV_CR
  public static final char[] CPV_CR = "\35 ".toCharArray ();

  //CPV_MEM
  //  FMOVE.* FPn,<ea>のサイクル数
  //!!! Totalのみ
/*
  public static final char[] CPV_MEM = {
    //68881
    //L   S   X    Ps    W   D    B    Pd
    100, 80, 72, 2002, 100, 86, 100, 2016,
    //68882
    //L   S   X    Ps    W   D    B    Pd
    110, 38, 50, 2006, 110, 44, 110, 2020,
  };
*/
  //perl ../misc/itoc.pl MC68EC030.java CPV_MEM
  public static final char[] CPV_MEM = "dPH\u07d2dVd\u07e0n&2\u07d6n,n\u07e4".toCharArray ();

  //CPV_REG
  //  Fop.* *,FPnのサイクル数
  //!!! Totalのみ
/*
  public static final char[] CPV_REG = {
    //68881
    //L    S    X     P    W    D    B  FPm
     60,  52,  56,  870,  60,  58,  60,  33,  //$xx00: FMOVE.* *m,FPn
     82,  74,  78,  892,  82,  80,  82,  55,  //$xx01: FINT.* *m,FPn
    714, 706, 710, 1524, 714, 712, 714, 687,  //$xx02: FSINH.* *m,FPn
     82,  74,  78,  892,  82,  80,  82,  55,  //$xx03: FINTRZ.* *m,FPn
    134, 126, 130,  944, 134, 132, 134, 107,  //$xx04: FSQRT.* *m,FPn
    134, 126, 130,  944, 134, 132, 134, 107,  //$xx05: FSQRT.* *m,FPn (MC68882)
    598, 590, 594, 1408, 598, 596, 598, 571,  //$xx06: FLOGNP1.* *m,FPn
    598, 590, 594, 1408, 598, 596, 598, 571,  //$xx07: FLOGNP1.* *m,FPn (MC68882)
    572, 564, 568, 1382, 572, 570, 572, 545,  //$xx08: FETOXM1.* *m,FPn
    688, 680, 684, 1498, 688, 686, 688, 661,  //$xx09: FTANH.* *m,FPn
    430, 422, 426, 1240, 430, 428, 430, 403,  //$xx0A: FATAN.* *m,FPn
    430, 422, 426, 1240, 430, 428, 430, 403,  //$xx0B: FATAN.* *m,FPn (MC68882)
    608, 600, 604, 1418, 608, 606, 608, 581,  //$xx0C: FASIN.* *m,FPn
    720, 712, 716, 1530, 720, 718, 720, 693,  //$xx0D: FATANH.* *m,FPn
    418, 410, 414, 1228, 418, 416, 418, 391,  //$xx0E: FSIN.* *m,FPn
    500, 492, 496, 1310, 500, 498, 500, 473,  //$xx0F: FTAN.* *m,FPn
    524, 516, 520, 1334, 524, 522, 524, 497,  //$xx10: FETOX.* *m,FPn
    594, 586, 590, 1404, 594, 592, 594, 567,  //$xx11: FTWOTOX.* *m,FPn
    594, 586, 590, 1404, 594, 592, 594, 567,  //$xx12: FTENTOX.* *m,FPn
    594, 586, 590, 1404, 594, 592, 594, 567,  //$xx13: FTENTOX.* *m,FPn (MC68882)
    552, 544, 548, 1362, 552, 550, 552, 525,  //$xx14: FLOGN.* *m,FPn
    608, 600, 604, 1418, 608, 606, 608, 581,  //$xx15: FLOG10.* *m,FPn
    608, 600, 604, 1418, 608, 606, 608, 581,  //$xx16: FLOG2.* *m,FPn
    608, 600, 604, 1418, 608, 606, 608, 581,  //$xx17: FLOG2.* *m,FPn (MC68882)
     62,  54,  58,  872,  62,  60,  62,  35,  //$xx18: FABS.* *m,FPn
    634, 626, 630, 1444, 634, 632, 634, 607,  //$xx19: FCOSH.* *m,FPn
     62,  54,  58,  872,  62,  60,  62,  35,  //$xx1A: FNEG.* *m,FPn
     62,  54,  58,  872,  62,  60,  62,  35,  //$xx1B: FNEG.* *m,FPn (MC68882)
    652, 644, 648, 1462, 652, 650, 652, 625,  //$xx1C: FACOS.* *m,FPn
    418, 410, 414, 1228, 418, 416, 418, 391,  //$xx1D: FCOS.* *m,FPn
     72,  64,  68,  882,  72,  70,  72,  45,  //$xx1E: FGETEXP.* *m,FPn
     58,  50,  54,  868,  58,  56,  58,  31,  //$xx1F: FGETMAN.* *m,FPn
    132, 124, 128,  940, 132, 130, 132, 103,  //$xx20: FDIV.* *m,FPn
     99,  91,  95,  907,  99,  97,  99,  70,  //$xx21: FMOD.* *m,FPn
     80,  72,  76,  888,  80,  78,  80,  51,  //$xx22: FADD.* *m,FPn
    100,  92,  96,  908, 100,  98, 100,  71,  //$xx23: FMUL.* *m,FPn
     98,  90,  94,  906,  98,  96,  98,  69,  //$xx24: FSGLDIV.* *m,FPn
    129, 121, 125,  937, 129, 127, 129, 100,  //$xx25: FREM.* *m,FPn
     70,  62,  66,  878,  70,  68,  70,  41,  //$xx26: FSCALE.* *m,FPn
     88,  80,  84,  896,  88,  86,  88,  59,  //$xx27: FSGLMUL.* *m,FPn
     80,  72,  76,  888,  80,  78,  80,  51,  //$xx28: FSUB.* *m,FPn
     80,  72,  76,  888,  80,  78,  80,  51,  //$xx29: FSUB.* *m,FPn (MC68882)
     80,  72,  76,  888,  80,  78,  80,  51,  //$xx2A: FSUB.* *m,FPn (MC68882)
     80,  72,  76,  888,  80,  78,  80,  51,  //$xx2B: FSUB.* *m,FPn (MC68882)
     80,  72,  76,  888,  80,  78,  80,  51,  //$xx2C: FSUB.* *m,FPn (MC68882)
     80,  72,  76,  888,  80,  78,  80,  51,  //$xx2D: FSUB.* *m,FPn (MC68882)
     80,  72,  76,  888,  80,  78,  80,  51,  //$xx2E: FSUB.* *m,FPn (MC68882)
     80,  72,  76,  888,  80,  78,  80,  51,  //$xx2F: FSUB.* *m,FPn (MC68882)
    478, 470, 474, 1288, 478, 476, 478, 451,  //$xx30: FSINCOS.* *m,FP0:FPn (c=0,s=n)
    478, 470, 474, 1288, 478, 476, 478, 451,  //$xx31: FSINCOS.* *m,FP1:FPn (c=1,s=n)
    478, 470, 474, 1288, 478, 476, 478, 451,  //$xx32: FSINCOS.* *m,FP2:FPn (c=2,s=n)
    478, 470, 474, 1288, 478, 476, 478, 451,  //$xx33: FSINCOS.* *m,FP3:FPn (c=3,s=n)
    478, 470, 474, 1288, 478, 476, 478, 451,  //$xx34: FSINCOS.* *m,FP4:FPn (c=4,s=n)
    478, 470, 474, 1288, 478, 476, 478, 451,  //$xx35: FSINCOS.* *m,FP5:FPn (c=5,s=n)
    478, 470, 474, 1288, 478, 476, 478, 451,  //$xx36: FSINCOS.* *m,FP6:FPn (c=6,s=n)
    478, 470, 474, 1288, 478, 476, 478, 451,  //$xx37: FSINCOS.* *m,FP7:FPn (c=7,s=n)
     62,  54,  58,  870,  62,  60,  62,  33,  //$xx38: FCMP.* *m,FPn
     62,  54,  58,  870,  62,  60,  62,  33,  //$xx39: FCMP.* *m,FPn (MC68882)
     60,  52,  56,  870,  60,  58,  60,  33,  //$xx3A: FTST.* *m
     60,  52,  56,  870,  60,  58,  60,  33,  //$xx3B: FTST.* *m (MC68882)
     62,  54,  58,  870,  62,  60,  62,  33,  //$xx3C: FCMP.* *m,FPn (MC68882)
     62,  54,  58,  870,  62,  60,  62,  33,  //$xx3D: FCMP.* *m,FPn (MC68882)
     60,  52,  56,  870,  60,  58,  60,  33,  //$xx3E: FTST.* *m (MC68882)
     60,  52,  56,  870,  60,  58,  60,  33,  //$xx3F: FTST.* *m (MC68882)
    //68882
    //L    S    X     P    W    D    B  FPm
     48,  34,  46,  891,  48,  40,  48,  21,  //$xx00: FMOVE.* *m,FPn
     88,  71,  83,  913,  88,  77,  88,  58,  //$xx01: FINT.* *m,FPn
    720, 703, 715, 1545, 720, 709, 720, 690,  //$xx02: FSINH.* *m,FPn
     88,  71,  83,  913,  88,  77,  88,  58,  //$xx03: FINTRZ.* *m,FPn
    140, 123, 135,  965, 140, 129, 140, 110,  //$xx04: FSQRT.* *m,FPn
    140, 123, 135,  965, 140, 129, 140, 110,  //$xx05: FSQRT.* *m,FPn (MC68882)
    604, 587, 599, 1429, 604, 593, 604, 574,  //$xx06: FLOGNP1.* *m,FPn
    604, 587, 599, 1429, 604, 593, 604, 574,  //$xx07: FLOGNP1.* *m,FPn (MC68882)
    578, 561, 573, 1403, 578, 567, 578, 548,  //$xx08: FETOXM1.* *m,FPn
    694, 677, 689, 1519, 694, 683, 694, 664,  //$xx09: FTANH.* *m,FPn
    436, 419, 431, 1261, 436, 425, 436, 406,  //$xx0A: FATAN.* *m,FPn
    436, 419, 431, 1261, 436, 425, 436, 406,  //$xx0B: FATAN.* *m,FPn (MC68882)
    614, 597, 609, 1439, 614, 603, 614, 584,  //$xx0C: FASIN.* *m,FPn
    726, 709, 721, 1551, 726, 715, 726, 696,  //$xx0D: FATANH.* *m,FPn
    424, 407, 419, 1249, 424, 413, 424, 394,  //$xx0E: FSIN.* *m,FPn
    506, 489, 501, 1331, 506, 495, 506, 476,  //$xx0F: FTAN.* *m,FPn
    530, 513, 525, 1355, 530, 519, 530, 500,  //$xx10: FETOX.* *m,FPn
    600, 583, 595, 1425, 600, 589, 600, 570,  //$xx11: FTWOTOX.* *m,FPn
    600, 583, 595, 1425, 600, 589, 600, 570,  //$xx12: FTENTOX.* *m,FPn
    600, 583, 595, 1425, 600, 589, 600, 570,  //$xx13: FTENTOX.* *m,FPn (MC68882)
    558, 541, 553, 1383, 558, 547, 558, 528,  //$xx14: FLOGN.* *m,FPn
    614, 597, 609, 1439, 614, 603, 614, 584,  //$xx15: FLOG10.* *m,FPn
    614, 597, 609, 1439, 614, 603, 614, 584,  //$xx16: FLOG2.* *m,FPn
    614, 597, 609, 1439, 614, 603, 614, 584,  //$xx17: FLOG2.* *m,FPn (MC68882)
     68,  51,  63,  893,  68,  57,  68,  38,  //$xx18: FABS.* *m,FPn
    640, 623, 635, 1465, 640, 629, 640, 610,  //$xx19: FCOSH.* *m,FPn
     68,  51,  63,  893,  68,  57,  68,  38,  //$xx1A: FNEG.* *m,FPn
     68,  51,  63,  893,  68,  57,  68,  38,  //$xx1B: FNEG.* *m,FPn (MC68882)
    658, 641, 653, 1483, 658, 647, 658, 628,  //$xx1C: FACOS.* *m,FPn
    424, 407, 419, 1249, 424, 413, 424, 394,  //$xx1D: FCOS.* *m,FPn
     78,  61,  73,  903,  78,  67,  78,  48,  //$xx1E: FGETEXP.* *m,FPn
     64,  47,  59,  889,  64,  53,  64,  34,  //$xx1F: FGETMAN.* *m,FPn
    146, 121, 133,  961, 146, 127, 146, 108,  //$xx20: FDIV.* *m,FPn
    113,  88, 100,  928, 113,  94, 113,  75,  //$xx21: FMOD.* *m,FPn
     94,  69,  81,  909,  94,  75,  94,  56,  //$xx22: FADD.* *m,FPn
    114,  89, 101,  929, 114,  95, 114,  76,  //$xx23: FMUL.* *m,FPn
    112,  87,  99,  927, 112,  93, 112,  74,  //$xx24: FSGLDIV.* *m,FPn
    143, 118, 130,  958, 143, 124, 143, 105,  //$xx25: FREM.* *m,FPn
     84,  59,  71,  899,  84,  65,  84,  46,  //$xx26: FSCALE.* *m,FPn
    102,  77,  89,  917, 102,  83, 102,  64,  //$xx27: FSGLMUL.* *m,FPn
     94,  69,  81,  909,  94,  75,  94,  56,  //$xx28: FSUB.* *m,FPn
     94,  69,  81,  909,  94,  75,  94,  56,  //$xx29: FSUB.* *m,FPn (MC68882)
     94,  69,  81,  909,  94,  75,  94,  56,  //$xx2A: FSUB.* *m,FPn (MC68882)
     94,  69,  81,  909,  94,  75,  94,  56,  //$xx2B: FSUB.* *m,FPn (MC68882)
     94,  69,  81,  909,  94,  75,  94,  56,  //$xx2C: FSUB.* *m,FPn (MC68882)
     94,  69,  81,  909,  94,  75,  94,  56,  //$xx2D: FSUB.* *m,FPn (MC68882)
     94,  69,  81,  909,  94,  75,  94,  56,  //$xx2E: FSUB.* *m,FPn (MC68882)
     94,  69,  81,  909,  94,  75,  94,  56,  //$xx2F: FSUB.* *m,FPn (MC68882)
    484, 467, 479, 1309, 484, 473, 484, 454,  //$xx30: FSINCOS.* *m,FP0:FPn (c=0,s=n)
    484, 467, 479, 1309, 484, 473, 484, 454,  //$xx31: FSINCOS.* *m,FP1:FPn (c=1,s=n)
    484, 467, 479, 1309, 484, 473, 484, 454,  //$xx32: FSINCOS.* *m,FP2:FPn (c=2,s=n)
    484, 467, 479, 1309, 484, 473, 484, 454,  //$xx33: FSINCOS.* *m,FP3:FPn (c=3,s=n)
    484, 467, 479, 1309, 484, 473, 484, 454,  //$xx34: FSINCOS.* *m,FP4:FPn (c=4,s=n)
    484, 467, 479, 1309, 484, 473, 484, 454,  //$xx35: FSINCOS.* *m,FP5:FPn (c=5,s=n)
    484, 467, 479, 1309, 484, 473, 484, 454,  //$xx36: FSINCOS.* *m,FP6:FPn (c=6,s=n)
    484, 467, 479, 1309, 484, 473, 484, 454,  //$xx37: FSINCOS.* *m,FP7:FPn (c=7,s=n)
     76,  51,  63,  891,  76,  57,  76,  38,  //$xx38: FCMP.* *m,FPn
     76,  51,  63,  891,  76,  57,  76,  38,  //$xx39: FCMP.* *m,FPn (MC68882)
     66,  49,  61,  891,  66,  55,  66,  36,  //$xx3A: FTST.* *m
     66,  49,  61,  891,  66,  55,  66,  36,  //$xx3B: FTST.* *m (MC68882)
     76,  51,  63,  891,  76,  57,  76,  38,  //$xx3C: FCMP.* *m,FPn (MC68882)
     76,  51,  63,  891,  76,  57,  76,  38,  //$xx3D: FCMP.* *m,FPn (MC68882)
     66,  49,  61,  891,  66,  55,  66,  36,  //$xx3E: FTST.* *m (MC68882)
     66,  49,  61,  891,  66,  55,  66,  36,  //$xx3F: FTST.* *m (MC68882)
  };
*/
  //perl ../misc/itoc.pl MC68EC030.java CPV_REG
  public static final char[] CPV_REG = "<48\u0366<:<!RJN\u037cRPR7\u02ca\u02c2\u02c6\u05f4\u02ca\u02c8\u02ca\u02afRJN\u037cRPR7\206~\202\u03b0\206\204\206k\206~\202\u03b0\206\204\206k\u0256\u024e\u0252\u0580\u0256\u0254\u0256\u023b\u0256\u024e\u0252\u0580\u0256\u0254\u0256\u023b\u023c\u0234\u0238\u0566\u023c\u023a\u023c\u0221\u02b0\u02a8\u02ac\u05da\u02b0\u02ae\u02b0\u0295\u01ae\u01a6\u01aa\u04d8\u01ae\u01ac\u01ae\u0193\u01ae\u01a6\u01aa\u04d8\u01ae\u01ac\u01ae\u0193\u0260\u0258\u025c\u058a\u0260\u025e\u0260\u0245\u02d0\u02c8\u02cc\u05fa\u02d0\u02ce\u02d0\u02b5\u01a2\u019a\u019e\u04cc\u01a2\u01a0\u01a2\u0187\u01f4\u01ec\u01f0\u051e\u01f4\u01f2\u01f4\u01d9\u020c\u0204\u0208\u0536\u020c\u020a\u020c\u01f1\u0252\u024a\u024e\u057c\u0252\u0250\u0252\u0237\u0252\u024a\u024e\u057c\u0252\u0250\u0252\u0237\u0252\u024a\u024e\u057c\u0252\u0250\u0252\u0237\u0228\u0220\u0224\u0552\u0228\u0226\u0228\u020d\u0260\u0258\u025c\u058a\u0260\u025e\u0260\u0245\u0260\u0258\u025c\u058a\u0260\u025e\u0260\u0245\u0260\u0258\u025c\u058a\u0260\u025e\u0260\u0245>6:\u0368><>#\u027a\u0272\u0276\u05a4\u027a\u0278\u027a\u025f>6:\u0368><>#>6:\u0368><>#\u028c\u0284\u0288\u05b6\u028c\u028a\u028c\u0271\u01a2\u019a\u019e\u04cc\u01a2\u01a0\u01a2\u0187H@D\u0372HFH-:26\u0364:8:\37\204|\200\u03ac\204\202\204gc[_\u038bcacFPHL\u0378PNP3d\\`\u038cdbdGbZ^\u038ab`bE\201y}\u03a9\201\177\201dF>B\u036eFDF)XPT\u0380XVX;PHL\u0378PNP3PHL\u0378PNP3PHL\u0378PNP3PHL\u0378PNP3PHL\u0378PNP3PHL\u0378PNP3PHL\u0378PNP3PHL\u0378PNP3\u01de\u01d6\u01da\u0508\u01de\u01dc\u01de\u01c3\u01de\u01d6\u01da\u0508\u01de\u01dc\u01de\u01c3\u01de\u01d6\u01da\u0508\u01de\u01dc\u01de\u01c3\u01de\u01d6\u01da\u0508\u01de\u01dc\u01de\u01c3\u01de\u01d6\u01da\u0508\u01de\u01dc\u01de\u01c3\u01de\u01d6\u01da\u0508\u01de\u01dc\u01de\u01c3\u01de\u01d6\u01da\u0508\u01de\u01dc\u01de\u01c3\u01de\u01d6\u01da\u0508\u01de\u01dc\u01de\u01c3>6:\u0366><>!>6:\u0366><>!<48\u0366<:<!<48\u0366<:<!>6:\u0366><>!>6:\u0366><>!<48\u0366<:<!<48\u0366<:<!0\".\u037b0(0\25XGS\u0391XMX:\u02d0\u02bf\u02cb\u0609\u02d0\u02c5\u02d0\u02b2XGS\u0391XMX:\214{\207\u03c5\214\201\214n\214{\207\u03c5\214\201\214n\u025c\u024b\u0257\u0595\u025c\u0251\u025c\u023e\u025c\u024b\u0257\u0595\u025c\u0251\u025c\u023e\u0242\u0231\u023d\u057b\u0242\u0237\u0242\u0224\u02b6\u02a5\u02b1\u05ef\u02b6\u02ab\u02b6\u0298\u01b4\u01a3\u01af\u04ed\u01b4\u01a9\u01b4\u0196\u01b4\u01a3\u01af\u04ed\u01b4\u01a9\u01b4\u0196\u0266\u0255\u0261\u059f\u0266\u025b\u0266\u0248\u02d6\u02c5\u02d1\u060f\u02d6\u02cb\u02d6\u02b8\u01a8\u0197\u01a3\u04e1\u01a8\u019d\u01a8\u018a\u01fa\u01e9\u01f5\u0533\u01fa\u01ef\u01fa\u01dc\u0212\u0201\u020d\u054b\u0212\u0207\u0212\u01f4\u0258\u0247\u0253\u0591\u0258\u024d\u0258\u023a\u0258\u0247\u0253\u0591\u0258\u024d\u0258\u023a\u0258\u0247\u0253\u0591\u0258\u024d\u0258\u023a\u022e\u021d\u0229\u0567\u022e\u0223\u022e\u0210\u0266\u0255\u0261\u059f\u0266\u025b\u0266\u0248\u0266\u0255\u0261\u059f\u0266\u025b\u0266\u0248\u0266\u0255\u0261\u059f\u0266\u025b\u0266\u0248D3?\u037dD9D&\u0280\u026f\u027b\u05b9\u0280\u0275\u0280\u0262D3?\u037dD9D&D3?\u037dD9D&\u0292\u0281\u028d\u05cb\u0292\u0287\u0292\u0274\u01a8\u0197\u01a3\u04e1\u01a8\u019d\u01a8\u018aN=I\u0387NCN0@/;\u0379@5@\"\222y\205\u03c1\222\177\222lqXd\u03a0q^qK^EQ\u038d^K^8rYe\u03a1r_rLpWc\u039fp]pJ\217v\202\u03be\217|\217iT;G\u0383TAT.fMY\u0395fSf@^EQ\u038d^K^8^EQ\u038d^K^8^EQ\u038d^K^8^EQ\u038d^K^8^EQ\u038d^K^8^EQ\u038d^K^8^EQ\u038d^K^8^EQ\u038d^K^8\u01e4\u01d3\u01df\u051d\u01e4\u01d9\u01e4\u01c6\u01e4\u01d3\u01df\u051d\u01e4\u01d9\u01e4\u01c6\u01e4\u01d3\u01df\u051d\u01e4\u01d9\u01e4\u01c6\u01e4\u01d3\u01df\u051d\u01e4\u01d9\u01e4\u01c6\u01e4\u01d3\u01df\u051d\u01e4\u01d9\u01e4\u01c6\u01e4\u01d3\u01df\u051d\u01e4\u01d9\u01e4\u01c6\u01e4\u01d3\u01df\u051d\u01e4\u01d9\u01e4\u01c6\u01e4\u01d3\u01df\u051d\u01e4\u01d9\u01e4\u01c6L3?\u037bL9L&L3?\u037bL9L&B1=\u037bB7B$B1=\u037bB7B$L3?\u037bL9L&L3?\u037bL9L&B1=\u037bB7B$B1=\u037bB7B$".toCharArray ();



}  //class MC68EC030


1 2 3