xeij/MC68EC030.java (3/3)- Source code ソースコード - XEiJ - STUDIO KAMADA
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
STUDIO KAMADA
Copyright © 1999-2026 Makoto Kamada