MC68EC030.java
     1: //========================================================================================
     2: //  MC68EC030.java
     3: //    en:MC68EC030 core
     4: //    ja:MC68EC030コア
     5: //  Copyright (C) 2003-2017 Makoto Kamada
     6: //
     7: //  This file is part of the XEiJ (X68000 Emulator in Java).
     8: //  You can use, modify and redistribute the XEiJ if the conditions are met.
     9: //  Read the XEiJ License for more details.
    10: //  http://stdkmd.com/xeij/
    11: //========================================================================================
    12: 
    13: package xeij;
    14: 
    15: import java.lang.*;  //Boolean,Character,Class,Comparable,Double,Exception,Float,IllegalArgumentException,Integer,Long,Math,Number,Object,Runnable,SecurityException,String,StringBuilder,System
    16: 
    17: public class MC68EC030 {
    18: 
    19:   //ゼロ除算のときの未定義フラグ
    20:   //  MC68030はゼロ除算のときオペランド以外の要因でZとVが変化する
    21:   //  VはDIV/MULの正常終了後ゼロ除算までにDBccが奇数回実行されたときセット
    22:   //  参考
    23:   //    https://twitter.com/moveccr/status/814032098692513792
    24:   //    https://twitter.com/isaki68k/status/814036909030682624
    25:   public static final boolean M30_DIV_ZERO_V_FLAG = true;  //true=ゼロ除算のVフラグの再現を試みる
    26:   public static boolean m30DivZeroVFlag;
    27: 
    28:   public static void mpuCore () {
    29: 
    30:     //コアメーター計測開始
    31:     long nanoStart = System.nanoTime ();
    32: 
    33:     XEiJ.busSuper (RP5C15.rtcFirst, 0x00e8a000, 0x00e8c000);  //RTC RTC
    34:     //XEiJ.busSuperMap[0x00e8a000 >>> XEiJ.BUS_PAGE_BITS] = RP5C15.rtcFirst;
    35: 
    36:     if (Profiling.PFF_ON) {
    37:       if (Profiling.pffStage == Profiling.PFF_STAGE_START) {
    38:         Profiling.pffClear ();
    39:       } else if (Profiling.pffStage == Profiling.PFF_STAGE_STOP) {
    40:         Profiling.pffReport ();
    41:       }
    42:     }
    43: 
    44:     //例外ループ
    45:     //  別のメソッドで検出された例外を命令ループの外側でcatchすることで命令ループを高速化する
    46:   errorLoop:
    47:     while (XEiJ.mpuClockTime < XEiJ.mpuClockLimit) {
    48:       try {
    49:         //命令ループ
    50:         while (XEiJ.mpuClockTime < XEiJ.mpuClockLimit) {
    51:           int t;
    52:           //命令を実行する
    53:           XEiJ.mpuTraceFlag = XEiJ.regSRT1;  //命令実行前のsrT1
    54:           XEiJ.mpuCycleCount = 0;  //第1オペコードからROMのアクセスウエイトを有効にする。命令のサイクル数はすべてXEiJ.mpuCycleCount+=~で加えること
    55:           XEiJ.regPC0 = t = XEiJ.regPC;  //命令の先頭アドレス
    56:           XEiJ.regPC = t + 2;
    57:           XEiJ.regOC = (InstructionBreakPoint.IBP_ON ? InstructionBreakPoint.ibpOp1MemoryMap : DataBreakPoint.DBP_ON ? XEiJ.regSRS != 0 ? XEiJ.busSuperMap : XEiJ.busUserMap : XEiJ.busMemoryMap)[t >>> XEiJ.BUS_PAGE_BITS].mmdRwz (t);  //第1オペコード。必ずゼロ拡張すること。pcに奇数が入っていることはないのでアドレスエラーのチェックを省略する
    58: 
    59:           //命令の処理
    60:           //  第1オペコードの上位10ビットで分岐する
    61:         irpSwitch:
    62:           switch (XEiJ.regOC >>> 6) {  //第1オペコードの上位10ビット。XEiJ.regOCはゼロ拡張されているので0b1111_111_111&を省略
    63: 
    64:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
    65:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
    66:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
    67:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
    68:             //ORI.B #<data>,<ea>                              |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_000_000_mmm_rrr-{data}
    69:             //OR.B #<data>,<ea>                               |A|012346|-|-UUUU|-**00|  M+-WXZ  |0000_000_000_mmm_rrr-{data}  [ORI.B #<data>,<ea>]
    70:             //ORI.B #<data>,CCR                               |-|012346|-|*****|*****|          |0000_000_000_111_100-{data}
    71:           case 0b0000_000_000:
    72:             irpOriByte ();
    73:             break irpSwitch;
    74: 
    75:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
    76:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
    77:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
    78:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
    79:             //ORI.W #<data>,<ea>                              |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_000_001_mmm_rrr-{data}
    80:             //OR.W #<data>,<ea>                               |A|012346|-|-UUUU|-**00|  M+-WXZ  |0000_000_001_mmm_rrr-{data}  [ORI.W #<data>,<ea>]
    81:             //ORI.W #<data>,SR                                |-|012346|P|*****|*****|          |0000_000_001_111_100-{data}
    82:           case 0b0000_000_001:
    83:             irpOriWord ();
    84:             break irpSwitch;
    85: 
    86:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
    87:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
    88:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
    89:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
    90:             //ORI.L #<data>,<ea>                              |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_000_010_mmm_rrr-{data}
    91:             //OR.L #<data>,<ea>                               |A|012346|-|-UUUU|-**00|  M+-WXZ  |0000_000_010_mmm_rrr-{data}  [ORI.L #<data>,<ea>]
    92:           case 0b0000_000_010:
    93:             irpOriLong ();
    94:             break irpSwitch;
    95: 
    96:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
    97:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
    98:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
    99:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   100:             //BITREV.L Dr                                     |-|------|-|-----|-----|D         |0000_000_011_000_rrr (ISA_C)
   101:             //CMP2.B <ea>,Rn                                  |-|--234S|-|-UUUU|-U*U*|  M  WXZP |0000_000_011_mmm_rrr-rnnn000000000000
   102:             //CHK2.B <ea>,Rn                                  |-|--234S|-|-UUUU|-U*U*|  M  WXZP |0000_000_011_mmm_rrr-rnnn100000000000
   103:           case 0b0000_000_011:
   104:             irpCmp2Chk2Byte ();
   105:             break irpSwitch;
   106: 
   107:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   108:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   109:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   110:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   111:             //BTST.L Dq,Dr                                    |-|012346|-|--U--|--*--|D         |0000_qqq_100_000_rrr
   112:             //MOVEP.W (d16,Ar),Dq                             |-|01234S|-|-----|-----|          |0000_qqq_100_001_rrr-{data}
   113:             //BTST.B Dq,<ea>                                  |-|012346|-|--U--|--*--|  M+-WXZPI|0000_qqq_100_mmm_rrr
   114:           case 0b0000_000_100:
   115:           case 0b0000_001_100:
   116:           case 0b0000_010_100:
   117:           case 0b0000_011_100:
   118:           case 0b0000_100_100:
   119:           case 0b0000_101_100:
   120:           case 0b0000_110_100:
   121:           case 0b0000_111_100:
   122:             irpBtstReg ();
   123:             break irpSwitch;
   124: 
   125:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   126:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   127:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   128:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   129:             //BCHG.L Dq,Dr                                    |-|012346|-|--U--|--*--|D         |0000_qqq_101_000_rrr
   130:             //MOVEP.L (d16,Ar),Dq                             |-|01234S|-|-----|-----|          |0000_qqq_101_001_rrr-{data}
   131:             //BCHG.B Dq,<ea>                                  |-|012346|-|--U--|--*--|  M+-WXZ  |0000_qqq_101_mmm_rrr
   132:           case 0b0000_000_101:
   133:           case 0b0000_001_101:
   134:           case 0b0000_010_101:
   135:           case 0b0000_011_101:
   136:           case 0b0000_100_101:
   137:           case 0b0000_101_101:
   138:           case 0b0000_110_101:
   139:           case 0b0000_111_101:
   140:             irpBchgReg ();
   141:             break irpSwitch;
   142: 
   143:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   144:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   145:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   146:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   147:             //BCLR.L Dq,Dr                                    |-|012346|-|--U--|--*--|D         |0000_qqq_110_000_rrr
   148:             //MOVEP.W Dq,(d16,Ar)                             |-|01234S|-|-----|-----|          |0000_qqq_110_001_rrr-{data}
   149:             //BCLR.B Dq,<ea>                                  |-|012346|-|--U--|--*--|  M+-WXZ  |0000_qqq_110_mmm_rrr
   150:           case 0b0000_000_110:
   151:           case 0b0000_001_110:
   152:           case 0b0000_010_110:
   153:           case 0b0000_011_110:
   154:           case 0b0000_100_110:
   155:           case 0b0000_101_110:
   156:           case 0b0000_110_110:
   157:           case 0b0000_111_110:
   158:             irpBclrReg ();
   159:             break irpSwitch;
   160: 
   161:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   162:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   163:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   164:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   165:             //BSET.L Dq,Dr                                    |-|012346|-|--U--|--*--|D         |0000_qqq_111_000_rrr
   166:             //MOVEP.L Dq,(d16,Ar)                             |-|01234S|-|-----|-----|          |0000_qqq_111_001_rrr-{data}
   167:             //BSET.B Dq,<ea>                                  |-|012346|-|--U--|--*--|  M+-WXZ  |0000_qqq_111_mmm_rrr
   168:           case 0b0000_000_111:
   169:           case 0b0000_001_111:
   170:           case 0b0000_010_111:
   171:           case 0b0000_011_111:
   172:           case 0b0000_100_111:
   173:           case 0b0000_101_111:
   174:           case 0b0000_110_111:
   175:           case 0b0000_111_111:
   176:             irpBsetReg ();
   177:             break irpSwitch;
   178: 
   179:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   180:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   181:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   182:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   183:             //ANDI.B #<data>,<ea>                             |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_001_000_mmm_rrr-{data}
   184:             //AND.B #<data>,<ea>                              |A|012346|-|-UUUU|-**00|  M+-WXZ  |0000_001_000_mmm_rrr-{data}  [ANDI.B #<data>,<ea>]
   185:             //ANDI.B #<data>,CCR                              |-|012346|-|*****|*****|          |0000_001_000_111_100-{data}
   186:           case 0b0000_001_000:
   187:             irpAndiByte ();
   188:             break irpSwitch;
   189: 
   190:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   191:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   192:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   193:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   194:             //ANDI.W #<data>,<ea>                             |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_001_001_mmm_rrr-{data}
   195:             //AND.W #<data>,<ea>                              |A|012346|-|-UUUU|-**00|  M+-WXZ  |0000_001_001_mmm_rrr-{data}  [ANDI.W #<data>,<ea>]
   196:             //ANDI.W #<data>,SR                               |-|012346|P|*****|*****|          |0000_001_001_111_100-{data}
   197:           case 0b0000_001_001:
   198:             irpAndiWord ();
   199:             break irpSwitch;
   200: 
   201:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   202:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   203:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   204:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   205:             //ANDI.L #<data>,<ea>                             |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_001_010_mmm_rrr-{data}
   206:             //AND.L #<data>,<ea>                              |A|012346|-|-UUUU|-**00|  M+-WXZ  |0000_001_010_mmm_rrr-{data}  [ANDI.L #<data>,<ea>]
   207:           case 0b0000_001_010:
   208:             irpAndiLong ();
   209:             break irpSwitch;
   210: 
   211:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   212:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   213:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   214:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   215:             //BYTEREV.L Dr                                    |-|------|-|-----|-----|D         |0000_001_011_000_rrr (ISA_C)
   216:             //CMP2.W <ea>,Rn                                  |-|--234S|-|-UUUU|-U*U*|  M  WXZP |0000_001_011_mmm_rrr-rnnn000000000000
   217:             //CHK2.W <ea>,Rn                                  |-|--234S|-|-UUUU|-U*U*|  M  WXZP |0000_001_011_mmm_rrr-rnnn100000000000
   218:           case 0b0000_001_011:
   219:             irpCmp2Chk2Word ();
   220:             break irpSwitch;
   221: 
   222:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   223:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   224:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   225:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   226:             //SUBI.B #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0000_010_000_mmm_rrr-{data}
   227:             //SUB.B #<data>,<ea>                              |A|012346|-|UUUUU|*****|  M+-WXZ  |0000_010_000_mmm_rrr-{data}  [SUBI.B #<data>,<ea>]
   228:           case 0b0000_010_000:
   229:             irpSubiByte ();
   230:             break irpSwitch;
   231: 
   232:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   233:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   234:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   235:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   236:             //SUBI.W #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0000_010_001_mmm_rrr-{data}
   237:             //SUB.W #<data>,<ea>                              |A|012346|-|UUUUU|*****|  M+-WXZ  |0000_010_001_mmm_rrr-{data}  [SUBI.W #<data>,<ea>]
   238:           case 0b0000_010_001:
   239:             irpSubiWord ();
   240:             break irpSwitch;
   241: 
   242:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   243:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   244:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   245:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   246:             //SUBI.L #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0000_010_010_mmm_rrr-{data}
   247:             //SUB.L #<data>,<ea>                              |A|012346|-|UUUUU|*****|  M+-WXZ  |0000_010_010_mmm_rrr-{data}  [SUBI.L #<data>,<ea>]
   248:           case 0b0000_010_010:
   249:             irpSubiLong ();
   250:             break irpSwitch;
   251: 
   252:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   253:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   254:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   255:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   256:             //FF1.L Dr                                        |-|------|-|-UUUU|-**00|D         |0000_010_011_000_rrr (ISA_C)
   257:             //CMP2.L <ea>,Rn                                  |-|--234S|-|-UUUU|-U*U*|  M  WXZP |0000_010_011_mmm_rrr-rnnn000000000000
   258:             //CHK2.L <ea>,Rn                                  |-|--234S|-|-UUUU|-U*U*|  M  WXZP |0000_010_011_mmm_rrr-rnnn100000000000
   259:           case 0b0000_010_011:
   260:             irpCmp2Chk2Long ();
   261:             break irpSwitch;
   262: 
   263:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   264:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   265:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   266:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   267:             //ADDI.B #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0000_011_000_mmm_rrr-{data}
   268:           case 0b0000_011_000:
   269:             irpAddiByte ();
   270:             break irpSwitch;
   271: 
   272:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   273:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   274:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   275:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   276:             //ADDI.W #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0000_011_001_mmm_rrr-{data}
   277:           case 0b0000_011_001:
   278:             irpAddiWord ();
   279:             break irpSwitch;
   280: 
   281:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   282:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   283:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   284:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   285:             //ADDI.L #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0000_011_010_mmm_rrr-{data}
   286:           case 0b0000_011_010:
   287:             irpAddiLong ();
   288:             break irpSwitch;
   289: 
   290:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   291:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   292:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   293:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   294:             //BTST.L #<data>,Dr                               |-|012346|-|--U--|--*--|D         |0000_100_000_000_rrr-{data}
   295:             //BTST.B #<data>,<ea>                             |-|012346|-|--U--|--*--|  M+-WXZP |0000_100_000_mmm_rrr-{data}
   296:           case 0b0000_100_000:
   297:             irpBtstImm ();
   298:             break irpSwitch;
   299: 
   300:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   301:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   302:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   303:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   304:             //BCHG.L #<data>,Dr                               |-|012346|-|--U--|--*--|D         |0000_100_001_000_rrr-{data}
   305:             //BCHG.B #<data>,<ea>                             |-|012346|-|--U--|--*--|  M+-WXZ  |0000_100_001_mmm_rrr-{data}
   306:           case 0b0000_100_001:
   307:             irpBchgImm ();
   308:             break irpSwitch;
   309: 
   310:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   311:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   312:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   313:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   314:             //BCLR.L #<data>,Dr                               |-|012346|-|--U--|--*--|D         |0000_100_010_000_rrr-{data}
   315:             //BCLR.B #<data>,<ea>                             |-|012346|-|--U--|--*--|  M+-WXZ  |0000_100_010_mmm_rrr-{data}
   316:           case 0b0000_100_010:
   317:             irpBclrImm ();
   318:             break irpSwitch;
   319: 
   320:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   321:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   322:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   323:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   324:             //BSET.L #<data>,Dr                               |-|012346|-|--U--|--*--|D         |0000_100_011_000_rrr-{data}
   325:             //BSET.B #<data>,<ea>                             |-|012346|-|--U--|--*--|  M+-WXZ  |0000_100_011_mmm_rrr-{data}
   326:           case 0b0000_100_011:
   327:             irpBsetImm ();
   328:             break irpSwitch;
   329: 
   330:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   331:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   332:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   333:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   334:             //EORI.B #<data>,<ea>                             |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_101_000_mmm_rrr-{data}
   335:             //EOR.B #<data>,<ea>                              |A|012346|-|-UUUU|-**00|D M+-WXZ  |0000_101_000_mmm_rrr-{data}  [EORI.B #<data>,<ea>]
   336:             //EORI.B #<data>,CCR                              |-|012346|-|*****|*****|          |0000_101_000_111_100-{data}
   337:           case 0b0000_101_000:
   338:             irpEoriByte ();
   339:             break irpSwitch;
   340: 
   341:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   342:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   343:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   344:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   345:             //EORI.W #<data>,<ea>                             |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_101_001_mmm_rrr-{data}
   346:             //EOR.W #<data>,<ea>                              |A|012346|-|-UUUU|-**00|D M+-WXZ  |0000_101_001_mmm_rrr-{data}  [EORI.W #<data>,<ea>]
   347:             //EORI.W #<data>,SR                               |-|012346|P|*****|*****|          |0000_101_001_111_100-{data}
   348:           case 0b0000_101_001:
   349:             irpEoriWord ();
   350:             break irpSwitch;
   351: 
   352:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   353:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   354:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   355:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   356:             //EORI.L #<data>,<ea>                             |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_101_010_mmm_rrr-{data}
   357:             //EOR.L #<data>,<ea>                              |A|012346|-|-UUUU|-**00|D M+-WXZ  |0000_101_010_mmm_rrr-{data}  [EORI.L #<data>,<ea>]
   358:           case 0b0000_101_010:
   359:             irpEoriLong ();
   360:             break irpSwitch;
   361: 
   362:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   363:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   364:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   365:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   366:             //CAS.B Dc,Du,<ea>                                |-|--2346|-|-UUUU|-****|  M+-WXZ  |0000_101_011_mmm_rrr-0000000uuu000ccc
   367:           case 0b0000_101_011:
   368:             irpCasByte ();
   369:             break irpSwitch;
   370: 
   371:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   372:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   373:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   374:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   375:             //CMPI.B #<data>,<ea>                             |-|--2346|-|-UUUU|-****|D M+-WXZP |0000_110_000_mmm_rrr-{data}
   376:             //CMP.B #<data>,<ea>                              |A|--2346|-|-UUUU|-****|  M+-WXZP |0000_110_000_mmm_rrr-{data}  [CMPI.B #<data>,<ea>]
   377:           case 0b0000_110_000:
   378:             irpCmpiByte ();
   379:             break irpSwitch;
   380: 
   381:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   382:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   383:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   384:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   385:             //CMPI.W #<data>,<ea>                             |-|--2346|-|-UUUU|-****|D M+-WXZP |0000_110_001_mmm_rrr-{data}
   386:             //CMP.W #<data>,<ea>                              |A|--2346|-|-UUUU|-****|  M+-WXZP |0000_110_001_mmm_rrr-{data}  [CMPI.W #<data>,<ea>]
   387:           case 0b0000_110_001:
   388:             irpCmpiWord ();
   389:             break irpSwitch;
   390: 
   391:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   392:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   393:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   394:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   395:             //CMPI.L #<data>,<ea>                             |-|--2346|-|-UUUU|-****|D M+-WXZP |0000_110_010_mmm_rrr-{data}
   396:             //CMP.L #<data>,<ea>                              |A|--2346|-|-UUUU|-****|  M+-WXZP |0000_110_010_mmm_rrr-{data}  [CMPI.L #<data>,<ea>]
   397:           case 0b0000_110_010:
   398:             irpCmpiLong ();
   399:             break irpSwitch;
   400: 
   401:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   402:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   403:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   404:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   405:             //CAS.W Dc,Du,<ea>                                |-|--2346|-|-UUUU|-****|  M+-WXZ  |0000_110_011_mmm_rrr-0000000uuu000ccc        (68060 software emulate misaligned <ea>)
   406:             //CAS2.W Dc1:Dc2,Du1:Du2,(Rn1):(Rn2)              |-|--234S|-|-UUUU|-****|          |0000_110_011_111_100-rnnn000uuu000ccc(1)-rnnn_000_uuu_000_ccc(2)
   407:           case 0b0000_110_011:
   408:             irpCasWord ();
   409:             break irpSwitch;
   410: 
   411:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   412:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   413:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   414:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   415:             //MOVES.B <ea>,Rn                                 |-|-12346|P|-----|-----|  M+-WXZ  |0000_111_000_mmm_rrr-rnnn000000000000
   416:             //MOVES.B Rn,<ea>                                 |-|-12346|P|-----|-----|  M+-WXZ  |0000_111_000_mmm_rrr-rnnn100000000000
   417:           case 0b0000_111_000:
   418:             irpMovesByte ();
   419:             break irpSwitch;
   420: 
   421:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   422:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   423:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   424:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   425:             //MOVES.W <ea>,Rn                                 |-|-12346|P|-----|-----|  M+-WXZ  |0000_111_001_mmm_rrr-rnnn000000000000
   426:             //MOVES.W Rn,<ea>                                 |-|-12346|P|-----|-----|  M+-WXZ  |0000_111_001_mmm_rrr-rnnn100000000000
   427:           case 0b0000_111_001:
   428:             irpMovesWord ();
   429:             break irpSwitch;
   430: 
   431:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   432:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   433:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   434:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   435:             //MOVES.L <ea>,Rn                                 |-|-12346|P|-----|-----|  M+-WXZ  |0000_111_010_mmm_rrr-rnnn000000000000
   436:             //MOVES.L Rn,<ea>                                 |-|-12346|P|-----|-----|  M+-WXZ  |0000_111_010_mmm_rrr-rnnn100000000000
   437:           case 0b0000_111_010:
   438:             irpMovesLong ();
   439:             break irpSwitch;
   440: 
   441:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   442:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   443:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   444:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   445:             //CAS.L Dc,Du,<ea>                                |-|--2346|-|-UUUU|-****|  M+-WXZ  |0000_111_011_mmm_rrr-0000000uuu000ccc        (68060 software emulate misaligned <ea>)
   446:             //CAS2.L Dc1:Dc2,Du1:Du2,(Rn1):(Rn2)              |-|--234S|-|-UUUU|-****|          |0000_111_011_111_100-rnnn000uuu000ccc(1)-rnnn_000_uuu_000_ccc(2)
   447:           case 0b0000_111_011:
   448:             irpCasLong ();
   449:             break irpSwitch;
   450: 
   451:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   452:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   453:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   454:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   455:             //MOVE.B <ea>,Dq                                  |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_qqq_000_mmm_rrr
   456:           case 0b0001_000_000:
   457:           case 0b0001_001_000:
   458:           case 0b0001_010_000:
   459:           case 0b0001_011_000:
   460:           case 0b0001_100_000:
   461:           case 0b0001_101_000:
   462:           case 0b0001_110_000:
   463:           case 0b0001_111_000:
   464:             irpMoveToDRByte ();
   465:             break irpSwitch;
   466: 
   467:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   468:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   469:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   470:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   471:             //MOVE.B <ea>,(Aq)                                |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_qqq_010_mmm_rrr
   472:           case 0b0001_000_010:
   473:           case 0b0001_001_010:
   474:           case 0b0001_010_010:
   475:           case 0b0001_011_010:
   476:           case 0b0001_100_010:
   477:           case 0b0001_101_010:
   478:           case 0b0001_110_010:
   479:           case 0b0001_111_010:
   480:             irpMoveToMMByte ();
   481:             break irpSwitch;
   482: 
   483:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   484:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   485:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   486:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   487:             //MOVE.B <ea>,(Aq)+                               |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_qqq_011_mmm_rrr
   488:           case 0b0001_000_011:
   489:           case 0b0001_001_011:
   490:           case 0b0001_010_011:
   491:           case 0b0001_011_011:
   492:           case 0b0001_100_011:
   493:           case 0b0001_101_011:
   494:           case 0b0001_110_011:
   495:           case 0b0001_111_011:
   496:             irpMoveToMPByte ();
   497:             break irpSwitch;
   498: 
   499:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   500:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   501:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   502:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   503:             //MOVE.B <ea>,-(Aq)                               |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_qqq_100_mmm_rrr
   504:           case 0b0001_000_100:
   505:           case 0b0001_001_100:
   506:           case 0b0001_010_100:
   507:           case 0b0001_011_100:
   508:           case 0b0001_100_100:
   509:           case 0b0001_101_100:
   510:           case 0b0001_110_100:
   511:           case 0b0001_111_100:
   512:             irpMoveToMNByte ();
   513:             break irpSwitch;
   514: 
   515:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   516:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   517:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   518:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   519:             //MOVE.B <ea>,(d16,Aq)                            |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_qqq_101_mmm_rrr
   520:           case 0b0001_000_101:
   521:           case 0b0001_001_101:
   522:           case 0b0001_010_101:
   523:           case 0b0001_011_101:
   524:           case 0b0001_100_101:
   525:           case 0b0001_101_101:
   526:           case 0b0001_110_101:
   527:           case 0b0001_111_101:
   528:             irpMoveToMWByte ();
   529:             break irpSwitch;
   530: 
   531:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   532:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   533:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   534:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   535:             //MOVE.B <ea>,(d8,Aq,Rn.wl)                       |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_qqq_110_mmm_rrr
   536:           case 0b0001_000_110:
   537:           case 0b0001_001_110:
   538:           case 0b0001_010_110:
   539:           case 0b0001_011_110:
   540:           case 0b0001_100_110:
   541:           case 0b0001_101_110:
   542:           case 0b0001_110_110:
   543:           case 0b0001_111_110:
   544:             irpMoveToMXByte ();
   545:             break irpSwitch;
   546: 
   547:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   548:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   549:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   550:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   551:             //MOVE.B <ea>,(xxx).W                             |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_000_111_mmm_rrr
   552:           case 0b0001_000_111:
   553:             irpMoveToZWByte ();
   554:             break irpSwitch;
   555: 
   556:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   557:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   558:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   559:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   560:             //MOVE.B <ea>,(xxx).L                             |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_001_111_mmm_rrr
   561:           case 0b0001_001_111:
   562:             irpMoveToZLByte ();
   563:             break irpSwitch;
   564: 
   565:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   566:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   567:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   568:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   569:             //MOVE.L <ea>,Dq                                  |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0010_qqq_000_mmm_rrr
   570:           case 0b0010_000_000:
   571:           case 0b0010_001_000:
   572:           case 0b0010_010_000:
   573:           case 0b0010_011_000:
   574:           case 0b0010_100_000:
   575:           case 0b0010_101_000:
   576:           case 0b0010_110_000:
   577:           case 0b0010_111_000:
   578:             irpMoveToDRLong ();
   579:             break irpSwitch;
   580: 
   581:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   582:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   583:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   584:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   585:             //MOVEA.L <ea>,Aq                                 |-|012346|-|-----|-----|DAM+-WXZPI|0010_qqq_001_mmm_rrr
   586:             //MOVE.L <ea>,Aq                                  |A|012346|-|-----|-----|DAM+-WXZPI|0010_qqq_001_mmm_rrr [MOVEA.L <ea>,Aq]
   587:           case 0b0010_000_001:
   588:           case 0b0010_001_001:
   589:           case 0b0010_010_001:
   590:           case 0b0010_011_001:
   591:           case 0b0010_100_001:
   592:           case 0b0010_101_001:
   593:           case 0b0010_110_001:
   594:           case 0b0010_111_001:
   595:             irpMoveaLong ();
   596:             break irpSwitch;
   597: 
   598:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   599:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   600:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   601:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   602:             //MOVE.L <ea>,(Aq)                                |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0010_qqq_010_mmm_rrr
   603:           case 0b0010_000_010:
   604:           case 0b0010_001_010:
   605:           case 0b0010_010_010:
   606:           case 0b0010_011_010:
   607:           case 0b0010_100_010:
   608:           case 0b0010_101_010:
   609:           case 0b0010_110_010:
   610:           case 0b0010_111_010:
   611:             irpMoveToMMLong ();
   612:             break irpSwitch;
   613: 
   614:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   615:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   616:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   617:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   618:             //MOVE.L <ea>,(Aq)+                               |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0010_qqq_011_mmm_rrr
   619:           case 0b0010_000_011:
   620:           case 0b0010_001_011:
   621:           case 0b0010_010_011:
   622:           case 0b0010_011_011:
   623:           case 0b0010_100_011:
   624:           case 0b0010_101_011:
   625:           case 0b0010_110_011:
   626:           case 0b0010_111_011:
   627:             irpMoveToMPLong ();
   628:             break irpSwitch;
   629: 
   630:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   631:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   632:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   633:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   634:             //MOVE.L <ea>,-(Aq)                               |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0010_qqq_100_mmm_rrr
   635:           case 0b0010_000_100:
   636:           case 0b0010_001_100:
   637:           case 0b0010_010_100:
   638:           case 0b0010_011_100:
   639:           case 0b0010_100_100:
   640:           case 0b0010_101_100:
   641:           case 0b0010_110_100:
   642:           case 0b0010_111_100:
   643:             irpMoveToMNLong ();
   644:             break irpSwitch;
   645: 
   646:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   647:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   648:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   649:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   650:             //MOVE.L <ea>,(d16,Aq)                            |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0010_qqq_101_mmm_rrr
   651:           case 0b0010_000_101:
   652:           case 0b0010_001_101:
   653:           case 0b0010_010_101:
   654:           case 0b0010_011_101:
   655:           case 0b0010_100_101:
   656:           case 0b0010_101_101:
   657:           case 0b0010_110_101:
   658:           case 0b0010_111_101:
   659:             irpMoveToMWLong ();
   660:             break irpSwitch;
   661: 
   662:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   663:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   664:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   665:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   666:             //MOVE.L <ea>,(d8,Aq,Rn.wl)                       |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0010_qqq_110_mmm_rrr
   667:           case 0b0010_000_110:
   668:           case 0b0010_001_110:
   669:           case 0b0010_010_110:
   670:           case 0b0010_011_110:
   671:           case 0b0010_100_110:
   672:           case 0b0010_101_110:
   673:           case 0b0010_110_110:
   674:           case 0b0010_111_110:
   675:             irpMoveToMXLong ();
   676:             break irpSwitch;
   677: 
   678:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   679:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   680:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   681:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   682:             //MOVE.L <ea>,(xxx).W                             |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0010_000_111_mmm_rrr
   683:           case 0b0010_000_111:
   684:             irpMoveToZWLong ();
   685:             break irpSwitch;
   686: 
   687:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   688:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   689:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   690:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   691:             //MOVE.L <ea>,(xxx).L                             |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0010_001_111_mmm_rrr
   692:           case 0b0010_001_111:
   693:             irpMoveToZLLong ();
   694:             break irpSwitch;
   695: 
   696:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   697:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   698:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   699:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   700:             //MOVE.W <ea>,Dq                                  |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0011_qqq_000_mmm_rrr
   701:           case 0b0011_000_000:
   702:           case 0b0011_001_000:
   703:           case 0b0011_010_000:
   704:           case 0b0011_011_000:
   705:           case 0b0011_100_000:
   706:           case 0b0011_101_000:
   707:           case 0b0011_110_000:
   708:           case 0b0011_111_000:
   709:             irpMoveToDRWord ();
   710:             break irpSwitch;
   711: 
   712:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   713:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   714:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   715:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   716:             //MOVEA.W <ea>,Aq                                 |-|012346|-|-----|-----|DAM+-WXZPI|0011_qqq_001_mmm_rrr
   717:             //MOVE.W <ea>,Aq                                  |A|012346|-|-----|-----|DAM+-WXZPI|0011_qqq_001_mmm_rrr [MOVEA.W <ea>,Aq]
   718:           case 0b0011_000_001:
   719:           case 0b0011_001_001:
   720:           case 0b0011_010_001:
   721:           case 0b0011_011_001:
   722:           case 0b0011_100_001:
   723:           case 0b0011_101_001:
   724:           case 0b0011_110_001:
   725:           case 0b0011_111_001:
   726:             irpMoveaWord ();
   727:             break irpSwitch;
   728: 
   729:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   730:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   731:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   732:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   733:             //MOVE.W <ea>,(Aq)                                |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0011_qqq_010_mmm_rrr
   734:           case 0b0011_000_010:
   735:           case 0b0011_001_010:
   736:           case 0b0011_010_010:
   737:           case 0b0011_011_010:
   738:           case 0b0011_100_010:
   739:           case 0b0011_101_010:
   740:           case 0b0011_110_010:
   741:           case 0b0011_111_010:
   742:             irpMoveToMMWord ();
   743:             break irpSwitch;
   744: 
   745:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   746:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   747:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   748:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   749:             //MOVE.W <ea>,(Aq)+                               |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0011_qqq_011_mmm_rrr
   750:           case 0b0011_000_011:
   751:           case 0b0011_001_011:
   752:           case 0b0011_010_011:
   753:           case 0b0011_011_011:
   754:           case 0b0011_100_011:
   755:           case 0b0011_101_011:
   756:           case 0b0011_110_011:
   757:           case 0b0011_111_011:
   758:             irpMoveToMPWord ();
   759:             break irpSwitch;
   760: 
   761:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   762:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   763:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   764:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   765:             //MOVE.W <ea>,-(Aq)                               |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0011_qqq_100_mmm_rrr
   766:           case 0b0011_000_100:
   767:           case 0b0011_001_100:
   768:           case 0b0011_010_100:
   769:           case 0b0011_011_100:
   770:           case 0b0011_100_100:
   771:           case 0b0011_101_100:
   772:           case 0b0011_110_100:
   773:           case 0b0011_111_100:
   774:             irpMoveToMNWord ();
   775:             break irpSwitch;
   776: 
   777:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   778:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   779:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   780:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   781:             //MOVE.W <ea>,(d16,Aq)                            |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0011_qqq_101_mmm_rrr
   782:           case 0b0011_000_101:
   783:           case 0b0011_001_101:
   784:           case 0b0011_010_101:
   785:           case 0b0011_011_101:
   786:           case 0b0011_100_101:
   787:           case 0b0011_101_101:
   788:           case 0b0011_110_101:
   789:           case 0b0011_111_101:
   790:             irpMoveToMWWord ();
   791:             break irpSwitch;
   792: 
   793:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   794:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   795:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   796:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   797:             //MOVE.W <ea>,(d8,Aq,Rn.wl)                       |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0011_qqq_110_mmm_rrr
   798:           case 0b0011_000_110:
   799:           case 0b0011_001_110:
   800:           case 0b0011_010_110:
   801:           case 0b0011_011_110:
   802:           case 0b0011_100_110:
   803:           case 0b0011_101_110:
   804:           case 0b0011_110_110:
   805:           case 0b0011_111_110:
   806:             irpMoveToMXWord ();
   807:             break irpSwitch;
   808: 
   809:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   810:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   811:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   812:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   813:             //MOVE.W <ea>,(xxx).W                             |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0011_000_111_mmm_rrr
   814:           case 0b0011_000_111:
   815:             irpMoveToZWWord ();
   816:             break irpSwitch;
   817: 
   818:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   819:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   820:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   821:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   822:             //MOVE.W <ea>,(xxx).L                             |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0011_001_111_mmm_rrr
   823:           case 0b0011_001_111:
   824:             irpMoveToZLWord ();
   825:             break irpSwitch;
   826: 
   827:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   828:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   829:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   830:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   831:             //NEGX.B <ea>                                     |-|012346|-|*UUUU|*****|D M+-WXZ  |0100_000_000_mmm_rrr
   832:           case 0b0100_000_000:
   833:             irpNegxByte ();
   834:             break irpSwitch;
   835: 
   836:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   837:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   838:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   839:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   840:             //NEGX.W <ea>                                     |-|012346|-|*UUUU|*****|D M+-WXZ  |0100_000_001_mmm_rrr
   841:           case 0b0100_000_001:
   842:             irpNegxWord ();
   843:             break irpSwitch;
   844: 
   845:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   846:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   847:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   848:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   849:             //NEGX.L <ea>                                     |-|012346|-|*UUUU|*****|D M+-WXZ  |0100_000_010_mmm_rrr
   850:           case 0b0100_000_010:
   851:             irpNegxLong ();
   852:             break irpSwitch;
   853: 
   854:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   855:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   856:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   857:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   858:             //MOVE.W SR,<ea>                                  |-|-12346|P|*****|-----|D M+-WXZ  |0100_000_011_mmm_rrr
   859:           case 0b0100_000_011:
   860:             irpMoveFromSR ();
   861:             break irpSwitch;
   862: 
   863:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   864:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   865:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   866:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   867:             //CHK.L <ea>,Dq                                   |-|--2346|-|-UUUU|-*UUU|D M+-WXZPI|0100_qqq_100_mmm_rrr
   868:           case 0b0100_000_100:
   869:           case 0b0100_001_100:
   870:           case 0b0100_010_100:
   871:           case 0b0100_011_100:
   872:           case 0b0100_100_100:
   873:           case 0b0100_101_100:
   874:           case 0b0100_110_100:
   875:           case 0b0100_111_100:
   876:             irpChkLong ();
   877:             break irpSwitch;
   878: 
   879:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   880:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   881:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   882:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   883:             //CHK.W <ea>,Dq                                   |-|012346|-|-UUUU|-*UUU|D M+-WXZPI|0100_qqq_110_mmm_rrr
   884:           case 0b0100_000_110:
   885:           case 0b0100_001_110:
   886:           case 0b0100_010_110:
   887:           case 0b0100_011_110:
   888:           case 0b0100_100_110:
   889:           case 0b0100_101_110:
   890:           case 0b0100_110_110:
   891:           case 0b0100_111_110:
   892:             irpChkWord ();
   893:             break irpSwitch;
   894: 
   895:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   896:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   897:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   898:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   899:             //LEA.L <ea>,Aq                                   |-|012346|-|-----|-----|  M  WXZP |0100_qqq_111_mmm_rrr
   900:             //EXTB.L Dr                                       |-|--2346|-|-UUUU|-**00|D         |0100_100_111_000_rrr
   901:           case 0b0100_000_111:
   902:           case 0b0100_001_111:
   903:           case 0b0100_010_111:
   904:           case 0b0100_011_111:
   905:           case 0b0100_100_111:
   906:           case 0b0100_101_111:
   907:           case 0b0100_110_111:
   908:           case 0b0100_111_111:
   909:             irpLea ();
   910:             break irpSwitch;
   911: 
   912:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   913:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   914:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   915:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   916:             //CLR.B <ea>                                      |-|012346|-|-UUUU|-0100|D M+-WXZ  |0100_001_000_mmm_rrr (68000 and 68008 read before clear)
   917:           case 0b0100_001_000:
   918:             irpClrByte ();
   919:             break irpSwitch;
   920: 
   921:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   922:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   923:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   924:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   925:             //CLR.W <ea>                                      |-|012346|-|-UUUU|-0100|D M+-WXZ  |0100_001_001_mmm_rrr (68000 and 68008 read before clear)
   926:           case 0b0100_001_001:
   927:             irpClrWord ();
   928:             break irpSwitch;
   929: 
   930:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   931:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   932:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   933:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   934:             //CLR.L <ea>                                      |-|012346|-|-UUUU|-0100|D M+-WXZ  |0100_001_010_mmm_rrr (68000 and 68008 read before clear)
   935:           case 0b0100_001_010:
   936:             irpClrLong ();
   937:             break irpSwitch;
   938: 
   939:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   940:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   941:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   942:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   943:             //MOVE.W CCR,<ea>                                 |-|-12346|-|*****|-----|D M+-WXZ  |0100_001_011_mmm_rrr
   944:           case 0b0100_001_011:
   945:             irpMoveFromCCR ();
   946:             break irpSwitch;
   947: 
   948:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   949:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   950:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   951:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   952:             //NEG.B <ea>                                      |-|012346|-|UUUUU|*****|D M+-WXZ  |0100_010_000_mmm_rrr
   953:           case 0b0100_010_000:
   954:             irpNegByte ();
   955:             break irpSwitch;
   956: 
   957:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   958:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   959:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   960:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   961:             //NEG.W <ea>                                      |-|012346|-|UUUUU|*****|D M+-WXZ  |0100_010_001_mmm_rrr
   962:           case 0b0100_010_001:
   963:             irpNegWord ();
   964:             break irpSwitch;
   965: 
   966:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   967:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   968:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   969:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   970:             //NEG.L <ea>                                      |-|012346|-|UUUUU|*****|D M+-WXZ  |0100_010_010_mmm_rrr
   971:           case 0b0100_010_010:
   972:             irpNegLong ();
   973:             break irpSwitch;
   974: 
   975:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   976:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   977:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   978:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   979:             //MOVE.W <ea>,CCR                                 |-|012346|-|UUUUU|*****|D M+-WXZPI|0100_010_011_mmm_rrr
   980:           case 0b0100_010_011:
   981:             irpMoveToCCR ();
   982:             break irpSwitch;
   983: 
   984:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   985:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   986:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   987:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   988:             //NOT.B <ea>                                      |-|012346|-|-UUUU|-**00|D M+-WXZ  |0100_011_000_mmm_rrr
   989:           case 0b0100_011_000:
   990:             irpNotByte ();
   991:             break irpSwitch;
   992: 
   993:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   994:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
   995:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
   996:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
   997:             //NOT.W <ea>                                      |-|012346|-|-UUUU|-**00|D M+-WXZ  |0100_011_001_mmm_rrr
   998:           case 0b0100_011_001:
   999:             irpNotWord ();
  1000:             break irpSwitch;
  1001: 
  1002:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1003:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1004:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1005:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1006:             //NOT.L <ea>                                      |-|012346|-|-UUUU|-**00|D M+-WXZ  |0100_011_010_mmm_rrr
  1007:           case 0b0100_011_010:
  1008:             irpNotLong ();
  1009:             break irpSwitch;
  1010: 
  1011:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1012:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1013:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1014:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1015:             //MOVE.W <ea>,SR                                  |-|012346|P|UUUUU|*****|D M+-WXZPI|0100_011_011_mmm_rrr
  1016:           case 0b0100_011_011:
  1017:             irpMoveToSR ();
  1018:             break irpSwitch;
  1019: 
  1020:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1021:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1022:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1023:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1024:             //NBCD.B <ea>                                     |-|012346|-|UUUUU|*U*U*|D M+-WXZ  |0100_100_000_mmm_rrr
  1025:             //LINK.L Ar,#<data>                               |-|--2346|-|-----|-----|          |0100_100_000_001_rrr-{data}
  1026:           case 0b0100_100_000:
  1027:             irpNbcd ();
  1028:             break irpSwitch;
  1029: 
  1030:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1031:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1032:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1033:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1034:             //SWAP.W Dr                                       |-|012346|-|-UUUU|-**00|D         |0100_100_001_000_rrr
  1035:             //BKPT #<data>                                    |-|-12346|-|-----|-----|          |0100_100_001_001_ddd
  1036:             //PEA.L <ea>                                      |-|012346|-|-----|-----|  M  WXZP |0100_100_001_mmm_rrr
  1037:           case 0b0100_100_001:
  1038:             irpPea ();
  1039:             break irpSwitch;
  1040: 
  1041:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1042:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1043:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1044:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1045:             //EXT.W Dr                                        |-|012346|-|-UUUU|-**00|D         |0100_100_010_000_rrr
  1046:             //MOVEM.W <list>,<ea>                             |-|012346|-|-----|-----|  M -WXZ  |0100_100_010_mmm_rrr-llllllllllllllll
  1047:           case 0b0100_100_010:
  1048:             irpMovemToMemWord ();
  1049:             break irpSwitch;
  1050: 
  1051:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1052:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1053:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1054:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1055:             //EXT.L Dr                                        |-|012346|-|-UUUU|-**00|D         |0100_100_011_000_rrr
  1056:             //MOVEM.L <list>,<ea>                             |-|012346|-|-----|-----|  M -WXZ  |0100_100_011_mmm_rrr-llllllllllllllll
  1057:           case 0b0100_100_011:
  1058:             irpMovemToMemLong ();
  1059:             break irpSwitch;
  1060: 
  1061:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1062:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1063:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1064:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1065:             //TST.B <ea>                                      |-|012346|-|-UUUU|-**00|D M+-WXZ  |0100_101_000_mmm_rrr
  1066:             //TST.B <ea>                                      |-|--2346|-|-UUUU|-**00|        PI|0100_101_000_mmm_rrr
  1067:           case 0b0100_101_000:
  1068:             irpTstByte ();
  1069:             break irpSwitch;
  1070: 
  1071:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1072:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1073:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1074:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1075:             //TST.W <ea>                                      |-|012346|-|-UUUU|-**00|D M+-WXZ  |0100_101_001_mmm_rrr
  1076:             //TST.W <ea>                                      |-|--2346|-|-UUUU|-**00| A      PI|0100_101_001_mmm_rrr
  1077:           case 0b0100_101_001:
  1078:             irpTstWord ();
  1079:             break irpSwitch;
  1080: 
  1081:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1082:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1083:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1084:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1085:             //TST.L <ea>                                      |-|012346|-|-UUUU|-**00|D M+-WXZ  |0100_101_010_mmm_rrr
  1086:             //TST.L <ea>                                      |-|--2346|-|-UUUU|-**00| A      PI|0100_101_010_mmm_rrr
  1087:           case 0b0100_101_010:
  1088:             irpTstLong ();
  1089:             break irpSwitch;
  1090: 
  1091:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1092:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1093:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1094:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1095:             //TAS.B <ea>                                      |-|012346|-|-UUUU|-**00|D M+-WXZ  |0100_101_011_mmm_rrr
  1096:             //ILLEGAL                                         |-|012346|-|-----|-----|          |0100_101_011_111_100
  1097:           case 0b0100_101_011:
  1098:             irpTas ();
  1099:             break irpSwitch;
  1100: 
  1101:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1102:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1103:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1104:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1105:             //MULU.L <ea>,Dl                                  |-|--2346|-|-UUUU|-***0|D M+-WXZPI|0100_110_000_mmm_rrr-0lll000000000hhh        (h is not used)
  1106:             //MULU.L <ea>,Dh:Dl                               |-|--234S|-|-UUUU|-***0|D M+-WXZPI|0100_110_000_mmm_rrr-0lll010000000hhh        (if h=l then result is not defined)
  1107:             //MULS.L <ea>,Dl                                  |-|--2346|-|-UUUU|-***0|D M+-WXZPI|0100_110_000_mmm_rrr-0lll100000000hhh        (h is not used)
  1108:             //MULS.L <ea>,Dh:Dl                               |-|--234S|-|-UUUU|-***0|D M+-WXZPI|0100_110_000_mmm_rrr-0lll110000000hhh        (if h=l then result is not defined)
  1109:           case 0b0100_110_000:
  1110:             irpMuluMulsLong ();
  1111:             break irpSwitch;
  1112: 
  1113:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1114:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1115:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1116:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1117:             //DIVU.L <ea>,Dq                                  |-|--2346|-|-UUUU|-***0|D M+-WXZPI|0100_110_001_mmm_rrr-0qqq000000000qqq
  1118:             //DIVUL.L <ea>,Dr:Dq                              |-|--2346|-|-UUUU|-***0|D M+-WXZPI|0100_110_001_mmm_rrr-0qqq000000000rrr        (q is not equal to r)
  1119:             //DIVU.L <ea>,Dr:Dq                               |-|--234S|-|-UUUU|-***0|D M+-WXZPI|0100_110_001_mmm_rrr-0qqq010000000rrr        (q is not equal to r)
  1120:             //DIVS.L <ea>,Dq                                  |-|--2346|-|-UUUU|-***0|D M+-WXZPI|0100_110_001_mmm_rrr-0qqq100000000qqq
  1121:             //DIVSL.L <ea>,Dr:Dq                              |-|--2346|-|-UUUU|-***0|D M+-WXZPI|0100_110_001_mmm_rrr-0qqq100000000rrr        (q is not equal to r)
  1122:             //DIVS.L <ea>,Dr:Dq                               |-|--234S|-|-UUUU|-***0|D M+-WXZPI|0100_110_001_mmm_rrr-0qqq110000000rrr        (q is not equal to r)
  1123:           case 0b0100_110_001:
  1124:             irpDivuDivsLong ();
  1125:             break irpSwitch;
  1126: 
  1127:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1128:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1129:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1130:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1131:             //SATS.L Dr                                       |-|------|-|-UUUU|-**00|D         |0100_110_010_000_rrr (ISA_B)
  1132:             //MOVEM.W <ea>,<list>                             |-|012346|-|-----|-----|  M+ WXZP |0100_110_010_mmm_rrr-llllllllllllllll
  1133:           case 0b0100_110_010:
  1134:             irpMovemToRegWord ();
  1135:             break irpSwitch;
  1136: 
  1137:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1138:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1139:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1140:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1141:             //MOVEM.L <ea>,<list>                             |-|012346|-|-----|-----|  M+ WXZP |0100_110_011_mmm_rrr-llllllllllllllll
  1142:           case 0b0100_110_011:
  1143:             irpMovemToRegLong ();
  1144:             break irpSwitch;
  1145: 
  1146:           case 0b0100_111_001:
  1147:             switch (XEiJ.regOC & 0b111_111) {
  1148: 
  1149:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1150:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1151:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1152:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1153:               //TRAP #<vector>                                  |-|012346|-|-----|-----|          |0100_111_001_00v_vvv
  1154:             case 0b000_000:
  1155:             case 0b000_001:
  1156:             case 0b000_010:
  1157:             case 0b000_011:
  1158:             case 0b000_100:
  1159:             case 0b000_101:
  1160:             case 0b000_110:
  1161:             case 0b000_111:
  1162:             case 0b001_000:
  1163:             case 0b001_001:
  1164:             case 0b001_010:
  1165:             case 0b001_011:
  1166:             case 0b001_100:
  1167:             case 0b001_101:
  1168:             case 0b001_110:
  1169:               irpTrap ();
  1170:               break irpSwitch;
  1171:             case 0b001_111:
  1172:               irpTrap15 ();
  1173:               break irpSwitch;
  1174: 
  1175:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1176:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1177:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1178:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1179:               //LINK.W Ar,#<data>                               |-|012346|-|-----|-----|          |0100_111_001_010_rrr-{data}
  1180:             case 0b010_000:
  1181:             case 0b010_001:
  1182:             case 0b010_010:
  1183:             case 0b010_011:
  1184:             case 0b010_100:
  1185:             case 0b010_101:
  1186:             case 0b010_110:
  1187:             case 0b010_111:
  1188:               irpLinkWord ();
  1189:               break irpSwitch;
  1190: 
  1191:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1192:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1193:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1194:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1195:               //UNLK Ar                                         |-|012346|-|-----|-----|          |0100_111_001_011_rrr
  1196:             case 0b011_000:
  1197:             case 0b011_001:
  1198:             case 0b011_010:
  1199:             case 0b011_011:
  1200:             case 0b011_100:
  1201:             case 0b011_101:
  1202:             case 0b011_110:
  1203:             case 0b011_111:
  1204:               irpUnlk ();
  1205:               break irpSwitch;
  1206: 
  1207:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1208:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1209:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1210:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1211:               //MOVE.L Ar,USP                                   |-|012346|P|-----|-----|          |0100_111_001_100_rrr
  1212:             case 0b100_000:
  1213:             case 0b100_001:
  1214:             case 0b100_010:
  1215:             case 0b100_011:
  1216:             case 0b100_100:
  1217:             case 0b100_101:
  1218:             case 0b100_110:
  1219:             case 0b100_111:
  1220:               irpMoveToUsp ();
  1221:               break irpSwitch;
  1222: 
  1223:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1224:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1225:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1226:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1227:               //MOVE.L USP,Ar                                   |-|012346|P|-----|-----|          |0100_111_001_101_rrr
  1228:             case 0b101_000:
  1229:             case 0b101_001:
  1230:             case 0b101_010:
  1231:             case 0b101_011:
  1232:             case 0b101_100:
  1233:             case 0b101_101:
  1234:             case 0b101_110:
  1235:             case 0b101_111:
  1236:               irpMoveFromUsp ();
  1237:               break irpSwitch;
  1238: 
  1239:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1240:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1241:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1242:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1243:               //RESET                                           |-|012346|P|-----|-----|          |0100_111_001_110_000
  1244:             case 0b110_000:
  1245:               irpReset ();
  1246:               break irpSwitch;
  1247: 
  1248:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1249:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1250:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1251:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1252:               //NOP                                             |-|012346|-|-----|-----|          |0100_111_001_110_001
  1253:             case 0b110_001:
  1254:               irpNop ();
  1255:               break irpSwitch;
  1256: 
  1257:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1258:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1259:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1260:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1261:               //STOP #<data>                                    |-|012346|P|UUUUU|*****|          |0100_111_001_110_010-{data}
  1262:             case 0b110_010:
  1263:               irpStop ();
  1264:               break irpSwitch;
  1265: 
  1266:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1267:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1268:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1269:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1270:               //RTE                                             |-|012346|P|UUUUU|*****|          |0100_111_001_110_011
  1271:             case 0b110_011:
  1272:               irpRte ();
  1273:               break irpSwitch;
  1274: 
  1275:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1276:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1277:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1278:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1279:               //RTD #<data>                                     |-|-12346|-|-----|-----|          |0100_111_001_110_100-{data}
  1280:             case 0b110_100:
  1281:               irpRtd ();
  1282:               break irpSwitch;
  1283: 
  1284:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1285:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1286:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1287:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1288:               //RTS                                             |-|012346|-|-----|-----|          |0100_111_001_110_101
  1289:             case 0b110_101:
  1290:               irpRts ();
  1291:               break irpSwitch;
  1292: 
  1293:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1294:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1295:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1296:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1297:               //TRAPV                                           |-|012346|-|---*-|-----|          |0100_111_001_110_110
  1298:             case 0b110_110:
  1299:               irpTrapv ();
  1300:               break irpSwitch;
  1301: 
  1302:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1303:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1304:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1305:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1306:               //RTR                                             |-|012346|-|UUUUU|*****|          |0100_111_001_110_111
  1307:             case 0b110_111:
  1308:               irpRtr ();
  1309:               break irpSwitch;
  1310: 
  1311:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1312:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1313:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1314:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1315:               //MOVEC.L Rc,Rn                                   |-|-12346|P|-----|-----|          |0100_111_001_111_010-rnnncccccccccccc
  1316:             case 0b111_010:
  1317:               irpMovecFromControl ();
  1318:               break irpSwitch;
  1319: 
  1320:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1321:               //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1322:               //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1323:               //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1324:               //MOVEC.L Rn,Rc                                   |-|-12346|P|-----|-----|          |0100_111_001_111_011-rnnncccccccccccc
  1325:             case 0b111_011:
  1326:               irpMovecToControl ();
  1327:               break irpSwitch;
  1328: 
  1329:             default:
  1330:               irpIllegal ();
  1331: 
  1332:             }  //switch XEiJ.regOC & 0b111_111
  1333:             break irpSwitch;
  1334: 
  1335:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1336:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1337:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1338:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1339:             //JSR <ea>                                        |-|012346|-|-----|-----|  M  WXZP |0100_111_010_mmm_rrr
  1340:             //JBSR.L <label>                                  |A|012346|-|-----|-----|          |0100_111_010_111_001-{address}       [JSR <label>]
  1341:           case 0b0100_111_010:
  1342:             irpJsr ();
  1343:             break irpSwitch;
  1344: 
  1345:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1346:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1347:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1348:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1349:             //JMP <ea>                                        |-|012346|-|-----|-----|  M  WXZP |0100_111_011_mmm_rrr
  1350:             //JBRA.L <label>                                  |A|012346|-|-----|-----|          |0100_111_011_111_001-{address}       [JMP <label>]
  1351:           case 0b0100_111_011:
  1352:             irpJmp ();
  1353:             break irpSwitch;
  1354: 
  1355:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1356:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1357:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1358:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1359:             //ADDQ.B #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0101_qqq_000_mmm_rrr
  1360:             //INC.B <ea>                                      |A|012346|-|UUUUU|*****|D M+-WXZ  |0101_001_000_mmm_rrr [ADDQ.B #1,<ea>]
  1361:           case 0b0101_000_000:
  1362:           case 0b0101_001_000:
  1363:           case 0b0101_010_000:
  1364:           case 0b0101_011_000:
  1365:           case 0b0101_100_000:
  1366:           case 0b0101_101_000:
  1367:           case 0b0101_110_000:
  1368:           case 0b0101_111_000:
  1369:             irpAddqByte ();
  1370:             break irpSwitch;
  1371: 
  1372:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1373:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1374:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1375:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1376:             //ADDQ.W #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0101_qqq_001_mmm_rrr
  1377:             //ADDQ.W #<data>,Ar                               |-|012346|-|-----|-----| A        |0101_qqq_001_001_rrr
  1378:             //INC.W <ea>                                      |A|012346|-|UUUUU|*****|D M+-WXZ  |0101_001_001_mmm_rrr [ADDQ.W #1,<ea>]
  1379:             //INC.W Ar                                        |A|012346|-|-----|-----| A        |0101_001_001_001_rrr [ADDQ.W #1,Ar]
  1380:           case 0b0101_000_001:
  1381:           case 0b0101_001_001:
  1382:           case 0b0101_010_001:
  1383:           case 0b0101_011_001:
  1384:           case 0b0101_100_001:
  1385:           case 0b0101_101_001:
  1386:           case 0b0101_110_001:
  1387:           case 0b0101_111_001:
  1388:             irpAddqWord ();
  1389:             break irpSwitch;
  1390: 
  1391:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1392:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1393:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1394:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1395:             //ADDQ.L #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0101_qqq_010_mmm_rrr
  1396:             //ADDQ.L #<data>,Ar                               |-|012346|-|-----|-----| A        |0101_qqq_010_001_rrr
  1397:             //INC.L <ea>                                      |A|012346|-|UUUUU|*****|D M+-WXZ  |0101_001_010_mmm_rrr [ADDQ.L #1,<ea>]
  1398:             //INC.L Ar                                        |A|012346|-|-----|-----| A        |0101_001_010_001_rrr [ADDQ.L #1,Ar]
  1399:           case 0b0101_000_010:
  1400:           case 0b0101_001_010:
  1401:           case 0b0101_010_010:
  1402:           case 0b0101_011_010:
  1403:           case 0b0101_100_010:
  1404:           case 0b0101_101_010:
  1405:           case 0b0101_110_010:
  1406:           case 0b0101_111_010:
  1407:             irpAddqLong ();
  1408:             break irpSwitch;
  1409: 
  1410:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1411:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1412:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1413:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1414:             //ST.B <ea>                                       |-|012346|-|-----|-----|D M+-WXZ  |0101_000_011_mmm_rrr
  1415:             //SNF.B <ea>                                      |A|012346|-|-----|-----|D M+-WXZ  |0101_000_011_mmm_rrr [ST.B <ea>]
  1416:             //DBT.W Dr,<label>                                |-|012346|-|-----|-----|          |0101_000_011_001_rrr-{offset}
  1417:             //DBNF.W Dr,<label>                               |A|012346|-|-----|-----|          |0101_000_011_001_rrr-{offset}        [DBT.W Dr,<label>]
  1418:             //TRAPT.W #<data>                                 |-|--2346|-|-----|-----|          |0101_000_011_111_010-{data}
  1419:             //TPNF.W #<data>                                  |A|--2346|-|-----|-----|          |0101_000_011_111_010-{data}  [TRAPT.W #<data>]
  1420:             //TPT.W #<data>                                   |A|--2346|-|-----|-----|          |0101_000_011_111_010-{data}  [TRAPT.W #<data>]
  1421:             //TRAPNF.W #<data>                                |A|--2346|-|-----|-----|          |0101_000_011_111_010-{data}  [TRAPT.W #<data>]
  1422:             //TRAPT.L #<data>                                 |-|--2346|-|-----|-----|          |0101_000_011_111_011-{data}
  1423:             //TPNF.L #<data>                                  |A|--2346|-|-----|-----|          |0101_000_011_111_011-{data}  [TRAPT.L #<data>]
  1424:             //TPT.L #<data>                                   |A|--2346|-|-----|-----|          |0101_000_011_111_011-{data}  [TRAPT.L #<data>]
  1425:             //TRAPNF.L #<data>                                |A|--2346|-|-----|-----|          |0101_000_011_111_011-{data}  [TRAPT.L #<data>]
  1426:             //TRAPT                                           |-|--2346|-|-----|-----|          |0101_000_011_111_100
  1427:             //TPNF                                            |A|--2346|-|-----|-----|          |0101_000_011_111_100 [TRAPT]
  1428:             //TPT                                             |A|--2346|-|-----|-----|          |0101_000_011_111_100 [TRAPT]
  1429:             //TRAPNF                                          |A|--2346|-|-----|-----|          |0101_000_011_111_100 [TRAPT]
  1430:           case 0b0101_000_011:
  1431:             irpSt ();
  1432:             break irpSwitch;
  1433: 
  1434:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1435:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1436:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1437:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1438:             //SUBQ.B #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0101_qqq_100_mmm_rrr
  1439:             //DEC.B <ea>                                      |A|012346|-|UUUUU|*****|D M+-WXZ  |0101_001_100_mmm_rrr [SUBQ.B #1,<ea>]
  1440:           case 0b0101_000_100:
  1441:           case 0b0101_001_100:
  1442:           case 0b0101_010_100:
  1443:           case 0b0101_011_100:
  1444:           case 0b0101_100_100:
  1445:           case 0b0101_101_100:
  1446:           case 0b0101_110_100:
  1447:           case 0b0101_111_100:
  1448:             irpSubqByte ();
  1449:             break irpSwitch;
  1450: 
  1451:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1452:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1453:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1454:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1455:             //SUBQ.W #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0101_qqq_101_mmm_rrr
  1456:             //SUBQ.W #<data>,Ar                               |-|012346|-|-----|-----| A        |0101_qqq_101_001_rrr
  1457:             //DEC.W <ea>                                      |A|012346|-|UUUUU|*****|D M+-WXZ  |0101_001_101_mmm_rrr [SUBQ.W #1,<ea>]
  1458:             //DEC.W Ar                                        |A|012346|-|-----|-----| A        |0101_001_101_001_rrr [SUBQ.W #1,Ar]
  1459:           case 0b0101_000_101:
  1460:           case 0b0101_001_101:
  1461:           case 0b0101_010_101:
  1462:           case 0b0101_011_101:
  1463:           case 0b0101_100_101:
  1464:           case 0b0101_101_101:
  1465:           case 0b0101_110_101:
  1466:           case 0b0101_111_101:
  1467:             irpSubqWord ();
  1468:             break irpSwitch;
  1469: 
  1470:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1471:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1472:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1473:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1474:             //SUBQ.L #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0101_qqq_110_mmm_rrr
  1475:             //SUBQ.L #<data>,Ar                               |-|012346|-|-----|-----| A        |0101_qqq_110_001_rrr
  1476:             //DEC.L <ea>                                      |A|012346|-|UUUUU|*****|D M+-WXZ  |0101_001_110_mmm_rrr [SUBQ.L #1,<ea>]
  1477:             //DEC.L Ar                                        |A|012346|-|-----|-----| A        |0101_001_110_001_rrr [SUBQ.L #1,Ar]
  1478:           case 0b0101_000_110:
  1479:           case 0b0101_001_110:
  1480:           case 0b0101_010_110:
  1481:           case 0b0101_011_110:
  1482:           case 0b0101_100_110:
  1483:           case 0b0101_101_110:
  1484:           case 0b0101_110_110:
  1485:           case 0b0101_111_110:
  1486:             irpSubqLong ();
  1487:             break irpSwitch;
  1488: 
  1489:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1490:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1491:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1492:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1493:             //SF.B <ea>                                       |-|012346|-|-----|-----|D M+-WXZ  |0101_000_111_mmm_rrr
  1494:             //SNT.B <ea>                                      |A|012346|-|-----|-----|D M+-WXZ  |0101_000_111_mmm_rrr [SF.B <ea>]
  1495:             //DBF.W Dr,<label>                                |-|012346|-|-----|-----|          |0101_000_111_001_rrr-{offset}
  1496:             //DBNT.W Dr,<label>                               |A|012346|-|-----|-----|          |0101_000_111_001_rrr-{offset}        [DBF.W Dr,<label>]
  1497:             //DBRA.W Dr,<label>                               |A|012346|-|-----|-----|          |0101_000_111_001_rrr-{offset}        [DBF.W Dr,<label>]
  1498:             //TRAPF.W #<data>                                 |-|--2346|-|-----|-----|          |0101_000_111_111_010-{data}
  1499:             //TPF.W #<data>                                   |A|--2346|-|-----|-----|          |0101_000_111_111_010-{data}  [TRAPF.W #<data>]
  1500:             //TPNT.W #<data>                                  |A|--2346|-|-----|-----|          |0101_000_111_111_010-{data}  [TRAPF.W #<data>]
  1501:             //TRAPNT.W #<data>                                |A|--2346|-|-----|-----|          |0101_000_111_111_010-{data}  [TRAPF.W #<data>]
  1502:             //TRAPF.L #<data>                                 |-|--2346|-|-----|-----|          |0101_000_111_111_011-{data}
  1503:             //TPF.L #<data>                                   |A|--2346|-|-----|-----|          |0101_000_111_111_011-{data}  [TRAPF.L #<data>]
  1504:             //TPNT.L #<data>                                  |A|--2346|-|-----|-----|          |0101_000_111_111_011-{data}  [TRAPF.L #<data>]
  1505:             //TRAPNT.L #<data>                                |A|--2346|-|-----|-----|          |0101_000_111_111_011-{data}  [TRAPF.L #<data>]
  1506:             //TRAPF                                           |-|--2346|-|-----|-----|          |0101_000_111_111_100
  1507:             //TPF                                             |A|--2346|-|-----|-----|          |0101_000_111_111_100 [TRAPF]
  1508:             //TPNT                                            |A|--2346|-|-----|-----|          |0101_000_111_111_100 [TRAPF]
  1509:             //TRAPNT                                          |A|--2346|-|-----|-----|          |0101_000_111_111_100 [TRAPF]
  1510:           case 0b0101_000_111:
  1511:             irpSf ();
  1512:             break irpSwitch;
  1513: 
  1514:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1515:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1516:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1517:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1518:             //SHI.B <ea>                                      |-|012346|-|--*-*|-----|D M+-WXZ  |0101_001_011_mmm_rrr
  1519:             //SNLS.B <ea>                                     |A|012346|-|--*-*|-----|D M+-WXZ  |0101_001_011_mmm_rrr [SHI.B <ea>]
  1520:             //DBHI.W Dr,<label>                               |-|012346|-|--*-*|-----|          |0101_001_011_001_rrr-{offset}
  1521:             //DBNLS.W Dr,<label>                              |A|012346|-|--*-*|-----|          |0101_001_011_001_rrr-{offset}        [DBHI.W Dr,<label>]
  1522:             //TRAPHI.W #<data>                                |-|--2346|-|--*-*|-----|          |0101_001_011_111_010-{data}
  1523:             //TPHI.W #<data>                                  |A|--2346|-|--*-*|-----|          |0101_001_011_111_010-{data}  [TRAPHI.W #<data>]
  1524:             //TPNLS.W #<data>                                 |A|--2346|-|--*-*|-----|          |0101_001_011_111_010-{data}  [TRAPHI.W #<data>]
  1525:             //TRAPNLS.W #<data>                               |A|--2346|-|--*-*|-----|          |0101_001_011_111_010-{data}  [TRAPHI.W #<data>]
  1526:             //TRAPHI.L #<data>                                |-|--2346|-|--*-*|-----|          |0101_001_011_111_011-{data}
  1527:             //TPHI.L #<data>                                  |A|--2346|-|--*-*|-----|          |0101_001_011_111_011-{data}  [TRAPHI.L #<data>]
  1528:             //TPNLS.L #<data>                                 |A|--2346|-|--*-*|-----|          |0101_001_011_111_011-{data}  [TRAPHI.L #<data>]
  1529:             //TRAPNLS.L #<data>                               |A|--2346|-|--*-*|-----|          |0101_001_011_111_011-{data}  [TRAPHI.L #<data>]
  1530:             //TRAPHI                                          |-|--2346|-|--*-*|-----|          |0101_001_011_111_100
  1531:             //TPHI                                            |A|--2346|-|--*-*|-----|          |0101_001_011_111_100 [TRAPHI]
  1532:             //TPNLS                                           |A|--2346|-|--*-*|-----|          |0101_001_011_111_100 [TRAPHI]
  1533:             //TRAPNLS                                         |A|--2346|-|--*-*|-----|          |0101_001_011_111_100 [TRAPHI]
  1534:           case 0b0101_001_011:
  1535:             irpShi ();
  1536:             break irpSwitch;
  1537: 
  1538:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1539:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1540:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1541:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1542:             //SLS.B <ea>                                      |-|012346|-|--*-*|-----|D M+-WXZ  |0101_001_111_mmm_rrr
  1543:             //SNHI.B <ea>                                     |A|012346|-|--*-*|-----|D M+-WXZ  |0101_001_111_mmm_rrr [SLS.B <ea>]
  1544:             //DBLS.W Dr,<label>                               |-|012346|-|--*-*|-----|          |0101_001_111_001_rrr-{offset}
  1545:             //DBNHI.W Dr,<label>                              |A|012346|-|--*-*|-----|          |0101_001_111_001_rrr-{offset}        [DBLS.W Dr,<label>]
  1546:             //TRAPLS.W #<data>                                |-|--2346|-|--*-*|-----|          |0101_001_111_111_010-{data}
  1547:             //TPLS.W #<data>                                  |A|--2346|-|--*-*|-----|          |0101_001_111_111_010-{data}
  1548:             //TPNHI.W #<data>                                 |A|--2346|-|--*-*|-----|          |0101_001_111_111_010-{data}  [TRAPLS.W #<data>]
  1549:             //TRAPNHI.W #<data>                               |A|--2346|-|--*-*|-----|          |0101_001_111_111_010-{data}  [TRAPLS.W #<data>]
  1550:             //TRAPLS.L #<data>                                |-|--2346|-|--*-*|-----|          |0101_001_111_111_011-{data}
  1551:             //TPLS.L #<data>                                  |A|--2346|-|--*-*|-----|          |0101_001_111_111_011-{data}
  1552:             //TPNHI.L #<data>                                 |A|--2346|-|--*-*|-----|          |0101_001_111_111_011-{data}  [TRAPLS.L #<data>]
  1553:             //TRAPNHI.L #<data>                               |A|--2346|-|--*-*|-----|          |0101_001_111_111_011-{data}  [TRAPLS.L #<data>]
  1554:             //TRAPLS                                          |-|--2346|-|--*-*|-----|          |0101_001_111_111_100
  1555:             //TPLS                                            |A|--2346|-|--*-*|-----|          |0101_001_111_111_100 [TRAPLS]
  1556:             //TPNHI                                           |A|--2346|-|--*-*|-----|          |0101_001_111_111_100 [TRAPLS]
  1557:             //TRAPNHI                                         |A|--2346|-|--*-*|-----|          |0101_001_111_111_100 [TRAPLS]
  1558:           case 0b0101_001_111:
  1559:             irpSls ();
  1560:             break irpSwitch;
  1561: 
  1562:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1563:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1564:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1565:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1566:             //SCC.B <ea>                                      |-|012346|-|----*|-----|D M+-WXZ  |0101_010_011_mmm_rrr
  1567:             //SHS.B <ea>                                      |A|012346|-|----*|-----|D M+-WXZ  |0101_010_011_mmm_rrr [SCC.B <ea>]
  1568:             //SNCS.B <ea>                                     |A|012346|-|----*|-----|D M+-WXZ  |0101_010_011_mmm_rrr [SCC.B <ea>]
  1569:             //SNLO.B <ea>                                     |A|012346|-|----*|-----|D M+-WXZ  |0101_010_011_mmm_rrr [SCC.B <ea>]
  1570:             //DBCC.W Dr,<label>                               |-|012346|-|----*|-----|          |0101_010_011_001_rrr-{offset}
  1571:             //DBHS.W Dr,<label>                               |A|012346|-|----*|-----|          |0101_010_011_001_rrr-{offset}        [DBCC.W Dr,<label>]
  1572:             //DBNCS.W Dr,<label>                              |A|012346|-|----*|-----|          |0101_010_011_001_rrr-{offset}        [DBCC.W Dr,<label>]
  1573:             //DBNLO.W Dr,<label>                              |A|012346|-|----*|-----|          |0101_010_011_001_rrr-{offset}        [DBCC.W Dr,<label>]
  1574:             //TRAPCC.W #<data>                                |-|--2346|-|----*|-----|          |0101_010_011_111_010-{data}
  1575:             //TPCC.W #<data>                                  |A|--2346|-|----*|-----|          |0101_010_011_111_010-{data}  [TRAPCC.W #<data>]
  1576:             //TPHS.W #<data>                                  |A|--2346|-|----*|-----|          |0101_010_011_111_010-{data}  [TRAPCC.W #<data>]
  1577:             //TPNCS.W #<data>                                 |A|--2346|-|----*|-----|          |0101_010_011_111_010-{data}  [TRAPCC.W #<data>]
  1578:             //TPNLO.W #<data>                                 |A|--2346|-|----*|-----|          |0101_010_011_111_010-{data}  [TRAPCC.W #<data>]
  1579:             //TRAPHS.W #<data>                                |A|--2346|-|----*|-----|          |0101_010_011_111_010-{data}  [TRAPCC.W #<data>]
  1580:             //TRAPNCS.W #<data>                               |A|--2346|-|----*|-----|          |0101_010_011_111_010-{data}  [TRAPCC.W #<data>]
  1581:             //TRAPNLO.W #<data>                               |A|--2346|-|----*|-----|          |0101_010_011_111_010-{data}  [TRAPCC.W #<data>]
  1582:             //TRAPCC.L #<data>                                |-|--2346|-|----*|-----|          |0101_010_011_111_011-{data}
  1583:             //TPCC.L #<data>                                  |A|--2346|-|----*|-----|          |0101_010_011_111_011-{data}  [TRAPCC.L #<data>]
  1584:             //TPHS.L #<data>                                  |A|--2346|-|----*|-----|          |0101_010_011_111_011-{data}  [TRAPCC.L #<data>]
  1585:             //TPNCS.L #<data>                                 |A|--2346|-|----*|-----|          |0101_010_011_111_011-{data}  [TRAPCC.L #<data>]
  1586:             //TPNLO.L #<data>                                 |A|--2346|-|----*|-----|          |0101_010_011_111_011-{data}  [TRAPCC.L #<data>]
  1587:             //TRAPHS.L #<data>                                |A|--2346|-|----*|-----|          |0101_010_011_111_011-{data}  [TRAPCC.L #<data>]
  1588:             //TRAPNCS.L #<data>                               |A|--2346|-|----*|-----|          |0101_010_011_111_011-{data}  [TRAPCC.L #<data>]
  1589:             //TRAPNLO.L #<data>                               |A|--2346|-|----*|-----|          |0101_010_011_111_011-{data}  [TRAPCC.L #<data>]
  1590:             //TRAPCC                                          |-|--2346|-|----*|-----|          |0101_010_011_111_100
  1591:             //TPCC                                            |A|--2346|-|----*|-----|          |0101_010_011_111_100 [TRAPCC]
  1592:             //TPHS                                            |A|--2346|-|----*|-----|          |0101_010_011_111_100 [TRAPCC]
  1593:             //TPNCS                                           |A|--2346|-|----*|-----|          |0101_010_011_111_100 [TRAPCC]
  1594:             //TPNLO                                           |A|--2346|-|----*|-----|          |0101_010_011_111_100 [TRAPCC]
  1595:             //TRAPHS                                          |A|--2346|-|----*|-----|          |0101_010_011_111_100 [TRAPCC]
  1596:             //TRAPNCS                                         |A|--2346|-|----*|-----|          |0101_010_011_111_100 [TRAPCC]
  1597:             //TRAPNLO                                         |A|--2346|-|----*|-----|          |0101_010_011_111_100 [TRAPCC]
  1598:           case 0b0101_010_011:
  1599:             irpShs ();
  1600:             break irpSwitch;
  1601: 
  1602:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1603:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1604:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1605:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1606:             //SCS.B <ea>                                      |-|012346|-|----*|-----|D M+-WXZ  |0101_010_111_mmm_rrr
  1607:             //SLO.B <ea>                                      |A|012346|-|----*|-----|D M+-WXZ  |0101_010_111_mmm_rrr [SCS.B <ea>]
  1608:             //SNCC.B <ea>                                     |A|012346|-|----*|-----|D M+-WXZ  |0101_010_111_mmm_rrr [SCS.B <ea>]
  1609:             //SNHS.B <ea>                                     |A|012346|-|----*|-----|D M+-WXZ  |0101_010_111_mmm_rrr [SCS.B <ea>]
  1610:             //DBCS.W Dr,<label>                               |-|012346|-|----*|-----|          |0101_010_111_001_rrr-{offset}
  1611:             //DBLO.W Dr,<label>                               |A|012346|-|----*|-----|          |0101_010_111_001_rrr-{offset}        [DBCS.W Dr,<label>]
  1612:             //DBNCC.W Dr,<label>                              |A|012346|-|----*|-----|          |0101_010_111_001_rrr-{offset}        [DBCS.W Dr,<label>]
  1613:             //DBNHS.W Dr,<label>                              |A|012346|-|----*|-----|          |0101_010_111_001_rrr-{offset}        [DBCS.W Dr,<label>]
  1614:             //TRAPCS.W #<data>                                |-|--2346|-|----*|-----|          |0101_010_111_111_010-{data}
  1615:             //TPCS.W #<data>                                  |A|--2346|-|----*|-----|          |0101_010_111_111_010-{data}  [TRAPCS.W #<data>]
  1616:             //TPLO.W #<data>                                  |A|--2346|-|----*|-----|          |0101_010_111_111_010-{data}  [TRAPCS.W #<data>]
  1617:             //TPNCC.W #<data>                                 |A|--2346|-|----*|-----|          |0101_010_111_111_010-{data}  [TRAPCS.W #<data>]
  1618:             //TPNHS.W #<data>                                 |A|--2346|-|----*|-----|          |0101_010_111_111_010-{data}  [TRAPCS.W #<data>]
  1619:             //TRAPLO.W #<data>                                |A|--2346|-|----*|-----|          |0101_010_111_111_010-{data}  [TRAPCS.W #<data>]
  1620:             //TRAPNCC.W #<data>                               |A|--2346|-|----*|-----|          |0101_010_111_111_010-{data}  [TRAPCS.W #<data>]
  1621:             //TRAPNHS.W #<data>                               |A|--2346|-|----*|-----|          |0101_010_111_111_010-{data}  [TRAPCS.W #<data>]
  1622:             //TRAPCS.L #<data>                                |-|--2346|-|----*|-----|          |0101_010_111_111_011-{data}
  1623:             //TPCS.L #<data>                                  |A|--2346|-|----*|-----|          |0101_010_111_111_011-{data}  [TRAPCS.L #<data>]
  1624:             //TPLO.L #<data>                                  |A|--2346|-|----*|-----|          |0101_010_111_111_011-{data}  [TRAPCS.L #<data>]
  1625:             //TPNCC.L #<data>                                 |A|--2346|-|----*|-----|          |0101_010_111_111_011-{data}  [TRAPCS.L #<data>]
  1626:             //TPNHS.L #<data>                                 |A|--2346|-|----*|-----|          |0101_010_111_111_011-{data}  [TRAPCS.L #<data>]
  1627:             //TRAPLO.L #<data>                                |A|--2346|-|----*|-----|          |0101_010_111_111_011-{data}  [TRAPCS.L #<data>]
  1628:             //TRAPNCC.L #<data>                               |A|--2346|-|----*|-----|          |0101_010_111_111_011-{data}  [TRAPCS.L #<data>]
  1629:             //TRAPNHS.L #<data>                               |A|--2346|-|----*|-----|          |0101_010_111_111_011-{data}  [TRAPCS.L #<data>]
  1630:             //TRAPCS                                          |-|--2346|-|----*|-----|          |0101_010_111_111_100
  1631:             //TPCS                                            |A|--2346|-|----*|-----|          |0101_010_111_111_100 [TRAPCS]
  1632:             //TPLO                                            |A|--2346|-|----*|-----|          |0101_010_111_111_100 [TRAPCS]
  1633:             //TPNCC                                           |A|--2346|-|----*|-----|          |0101_010_111_111_100 [TRAPCS]
  1634:             //TPNHS                                           |A|--2346|-|----*|-----|          |0101_010_111_111_100 [TRAPCS]
  1635:             //TRAPLO                                          |A|--2346|-|----*|-----|          |0101_010_111_111_100 [TRAPCS]
  1636:             //TRAPNCC                                         |A|--2346|-|----*|-----|          |0101_010_111_111_100 [TRAPCS]
  1637:             //TRAPNHS                                         |A|--2346|-|----*|-----|          |0101_010_111_111_100 [TRAPCS]
  1638:           case 0b0101_010_111:
  1639:             irpSlo ();
  1640:             break irpSwitch;
  1641: 
  1642:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1643:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1644:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1645:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1646:             //SNE.B <ea>                                      |-|012346|-|--*--|-----|D M+-WXZ  |0101_011_011_mmm_rrr
  1647:             //SNEQ.B <ea>                                     |A|012346|-|--*--|-----|D M+-WXZ  |0101_011_011_mmm_rrr [SNE.B <ea>]
  1648:             //SNZ.B <ea>                                      |A|012346|-|--*--|-----|D M+-WXZ  |0101_011_011_mmm_rrr [SNE.B <ea>]
  1649:             //SNZE.B <ea>                                     |A|012346|-|--*--|-----|D M+-WXZ  |0101_011_011_mmm_rrr [SNE.B <ea>]
  1650:             //DBNE.W Dr,<label>                               |-|012346|-|--*--|-----|          |0101_011_011_001_rrr-{offset}
  1651:             //DBNEQ.W Dr,<label>                              |A|012346|-|--*--|-----|          |0101_011_011_001_rrr-{offset}        [DBNE.W Dr,<label>]
  1652:             //DBNZ.W Dr,<label>                               |A|012346|-|--*--|-----|          |0101_011_011_001_rrr-{offset}        [DBNE.W Dr,<label>]
  1653:             //DBNZE.W Dr,<label>                              |A|012346|-|--*--|-----|          |0101_011_011_001_rrr-{offset}        [DBNE.W Dr,<label>]
  1654:             //TRAPNE.W #<data>                                |-|--2346|-|--*--|-----|          |0101_011_011_111_010-{data}
  1655:             //TPNE.W #<data>                                  |A|--2346|-|--*--|-----|          |0101_011_011_111_010-{data}  [TRAPNE.W #<data>]
  1656:             //TPNEQ.W #<data>                                 |A|--2346|-|--*--|-----|          |0101_011_011_111_010-{data}  [TRAPNE.W #<data>]
  1657:             //TPNZ.W #<data>                                  |A|--2346|-|--*--|-----|          |0101_011_011_111_010-{data}  [TRAPNE.W #<data>]
  1658:             //TPNZE.W #<data>                                 |A|--2346|-|--*--|-----|          |0101_011_011_111_010-{data}  [TRAPNE.W #<data>]
  1659:             //TRAPNEQ.W #<data>                               |A|--2346|-|--*--|-----|          |0101_011_011_111_010-{data}  [TRAPNE.W #<data>]
  1660:             //TRAPNZ.W #<data>                                |A|--2346|-|--*--|-----|          |0101_011_011_111_010-{data}  [TRAPNE.W #<data>]
  1661:             //TRAPNZE.W #<data>                               |A|--2346|-|--*--|-----|          |0101_011_011_111_010-{data}  [TRAPNE.W #<data>]
  1662:             //TRAPNE.L #<data>                                |-|--2346|-|--*--|-----|          |0101_011_011_111_011-{data}
  1663:             //TPNE.L #<data>                                  |A|--2346|-|--*--|-----|          |0101_011_011_111_011-{data}  [TRAPNE.L #<data>]
  1664:             //TPNEQ.L #<data>                                 |A|--2346|-|--*--|-----|          |0101_011_011_111_011-{data}  [TRAPNE.L #<data>]
  1665:             //TPNZ.L #<data>                                  |A|--2346|-|--*--|-----|          |0101_011_011_111_011-{data}  [TRAPNE.L #<data>]
  1666:             //TPNZE.L #<data>                                 |A|--2346|-|--*--|-----|          |0101_011_011_111_011-{data}  [TRAPNE.L #<data>]
  1667:             //TRAPNEQ.L #<data>                               |A|--2346|-|--*--|-----|          |0101_011_011_111_011-{data}  [TRAPNE.L #<data>]
  1668:             //TRAPNZ.L #<data>                                |A|--2346|-|--*--|-----|          |0101_011_011_111_011-{data}  [TRAPNE.L #<data>]
  1669:             //TRAPNZE.L #<data>                               |A|--2346|-|--*--|-----|          |0101_011_011_111_011-{data}  [TRAPNE.L #<data>]
  1670:             //TRAPNE                                          |-|--2346|-|--*--|-----|          |0101_011_011_111_100
  1671:             //TPNE                                            |A|--2346|-|--*--|-----|          |0101_011_011_111_100 [TRAPNE]
  1672:             //TPNEQ                                           |A|--2346|-|--*--|-----|          |0101_011_011_111_100 [TRAPNE]
  1673:             //TPNZ                                            |A|--2346|-|--*--|-----|          |0101_011_011_111_100 [TRAPNE]
  1674:             //TPNZE                                           |A|--2346|-|--*--|-----|          |0101_011_011_111_100 [TRAPNE]
  1675:             //TRAPNEQ                                         |A|--2346|-|--*--|-----|          |0101_011_011_111_100 [TRAPNE]
  1676:             //TRAPNZ                                          |A|--2346|-|--*--|-----|          |0101_011_011_111_100 [TRAPNE]
  1677:             //TRAPNZE                                         |A|--2346|-|--*--|-----|          |0101_011_011_111_100 [TRAPNE]
  1678:           case 0b0101_011_011:
  1679:             irpSne ();
  1680:             break irpSwitch;
  1681: 
  1682:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1683:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1684:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1685:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1686:             //SEQ.B <ea>                                      |-|012346|-|--*--|-----|D M+-WXZ  |0101_011_111_mmm_rrr
  1687:             //SNNE.B <ea>                                     |A|012346|-|--*--|-----|D M+-WXZ  |0101_011_111_mmm_rrr [SEQ.B <ea>]
  1688:             //SNNZ.B <ea>                                     |A|012346|-|--*--|-----|D M+-WXZ  |0101_011_111_mmm_rrr [SEQ.B <ea>]
  1689:             //SZE.B <ea>                                      |A|012346|-|--*--|-----|D M+-WXZ  |0101_011_111_mmm_rrr [SEQ.B <ea>]
  1690:             //DBEQ.W Dr,<label>                               |-|012346|-|--*--|-----|          |0101_011_111_001_rrr-{offset}
  1691:             //DBNNE.W Dr,<label>                              |A|012346|-|--*--|-----|          |0101_011_111_001_rrr-{offset}        [DBEQ.W Dr,<label>]
  1692:             //DBNNZ.W Dr,<label>                              |A|012346|-|--*--|-----|          |0101_011_111_001_rrr-{offset}        [DBEQ.W Dr,<label>]
  1693:             //DBZE.W Dr,<label>                               |A|012346|-|--*--|-----|          |0101_011_111_001_rrr-{offset}        [DBEQ.W Dr,<label>]
  1694:             //TRAPEQ.W #<data>                                |-|--2346|-|--*--|-----|          |0101_011_111_111_010-{data}
  1695:             //TPEQ.W #<data>                                  |A|--2346|-|--*--|-----|          |0101_011_111_111_010-{data}  [TRAPEQ.W #<data>]
  1696:             //TPNNE.W #<data>                                 |A|--2346|-|--*--|-----|          |0101_011_111_111_010-{data}  [TRAPEQ.W #<data>]
  1697:             //TPNNZ.W #<data>                                 |A|--2346|-|--*--|-----|          |0101_011_111_111_010-{data}  [TRAPEQ.W #<data>]
  1698:             //TPZE.W #<data>                                  |A|--2346|-|--*--|-----|          |0101_011_111_111_010-{data}  [TRAPEQ.W #<data>]
  1699:             //TRAPNNE.W #<data>                               |A|--2346|-|--*--|-----|          |0101_011_111_111_010-{data}  [TRAPEQ.W #<data>]
  1700:             //TRAPNNZ.W #<data>                               |A|--2346|-|--*--|-----|          |0101_011_111_111_010-{data}  [TRAPEQ.W #<data>]
  1701:             //TRAPZE.W #<data>                                |A|--2346|-|--*--|-----|          |0101_011_111_111_010-{data}  [TRAPEQ.W #<data>]
  1702:             //TRAPEQ.L #<data>                                |-|--2346|-|--*--|-----|          |0101_011_111_111_011-{data}
  1703:             //TPEQ.L #<data>                                  |A|--2346|-|--*--|-----|          |0101_011_111_111_011-{data}  [TRAPEQ.L #<data>]
  1704:             //TPNNE.L #<data>                                 |A|--2346|-|--*--|-----|          |0101_011_111_111_011-{data}  [TRAPEQ.L #<data>]
  1705:             //TPNNZ.L #<data>                                 |A|--2346|-|--*--|-----|          |0101_011_111_111_011-{data}  [TRAPEQ.L #<data>]
  1706:             //TPZE.L #<data>                                  |A|--2346|-|--*--|-----|          |0101_011_111_111_011-{data}  [TRAPEQ.L #<data>]
  1707:             //TRAPNNE.L #<data>                               |A|--2346|-|--*--|-----|          |0101_011_111_111_011-{data}  [TRAPEQ.L #<data>]
  1708:             //TRAPNNZ.L #<data>                               |A|--2346|-|--*--|-----|          |0101_011_111_111_011-{data}  [TRAPEQ.L #<data>]
  1709:             //TRAPZE.L #<data>                                |A|--2346|-|--*--|-----|          |0101_011_111_111_011-{data}  [TRAPEQ.L #<data>]
  1710:             //TRAPEQ                                          |-|--2346|-|--*--|-----|          |0101_011_111_111_100
  1711:             //TPEQ                                            |A|--2346|-|--*--|-----|          |0101_011_111_111_100 [TRAPEQ]
  1712:             //TPNNE                                           |A|--2346|-|--*--|-----|          |0101_011_111_111_100 [TRAPEQ]
  1713:             //TPNNZ                                           |A|--2346|-|--*--|-----|          |0101_011_111_111_100 [TRAPEQ]
  1714:             //TPZE                                            |A|--2346|-|--*--|-----|          |0101_011_111_111_100 [TRAPEQ]
  1715:             //TRAPNNE                                         |A|--2346|-|--*--|-----|          |0101_011_111_111_100 [TRAPEQ]
  1716:             //TRAPNNZ                                         |A|--2346|-|--*--|-----|          |0101_011_111_111_100 [TRAPEQ]
  1717:             //TRAPZE                                          |A|--2346|-|--*--|-----|          |0101_011_111_111_100 [TRAPEQ]
  1718:           case 0b0101_011_111:
  1719:             irpSeq ();
  1720:             break irpSwitch;
  1721: 
  1722:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1723:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1724:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1725:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1726:             //SVC.B <ea>                                      |-|012346|-|---*-|-----|D M+-WXZ  |0101_100_011_mmm_rrr
  1727:             //SNVS.B <ea>                                     |A|012346|-|---*-|-----|D M+-WXZ  |0101_100_011_mmm_rrr [SVC.B <ea>]
  1728:             //DBVC.W Dr,<label>                               |-|012346|-|---*-|-----|          |0101_100_011_001_rrr-{offset}
  1729:             //DBNVS.W Dr,<label>                              |A|012346|-|---*-|-----|          |0101_100_011_001_rrr-{offset}        [DBVC.W Dr,<label>]
  1730:             //TRAPVC.W #<data>                                |-|--2346|-|---*-|-----|          |0101_100_011_111_010-{data}
  1731:             //TPNVS.W #<data>                                 |A|--2346|-|---*-|-----|          |0101_100_011_111_010-{data}  [TRAPVC.W #<data>]
  1732:             //TPVC.W #<data>                                  |A|--2346|-|---*-|-----|          |0101_100_011_111_010-{data}  [TRAPVC.W #<data>]
  1733:             //TRAPNVS.W #<data>                               |A|--2346|-|---*-|-----|          |0101_100_011_111_010-{data}  [TRAPVC.W #<data>]
  1734:             //TRAPVC.L #<data>                                |-|--2346|-|---*-|-----|          |0101_100_011_111_011-{data}
  1735:             //TPNVS.L #<data>                                 |A|--2346|-|---*-|-----|          |0101_100_011_111_011-{data}  [TRAPVC.L #<data>]
  1736:             //TPVC.L #<data>                                  |A|--2346|-|---*-|-----|          |0101_100_011_111_011-{data}  [TRAPVC.L #<data>]
  1737:             //TRAPNVS.L #<data>                               |A|--2346|-|---*-|-----|          |0101_100_011_111_011-{data}  [TRAPVC.L #<data>]
  1738:             //TRAPVC                                          |-|--2346|-|---*-|-----|          |0101_100_011_111_100
  1739:             //TPNVS                                           |A|--2346|-|---*-|-----|          |0101_100_011_111_100 [TRAPVC]
  1740:             //TPVC                                            |A|--2346|-|---*-|-----|          |0101_100_011_111_100 [TRAPVC]
  1741:             //TRAPNVS                                         |A|--2346|-|---*-|-----|          |0101_100_011_111_100 [TRAPVC]
  1742:           case 0b0101_100_011:
  1743:             irpSvc ();
  1744:             break irpSwitch;
  1745: 
  1746:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1747:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1748:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1749:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1750:             //SVS.B <ea>                                      |-|012346|-|---*-|-----|D M+-WXZ  |0101_100_111_mmm_rrr
  1751:             //SNVC.B <ea>                                     |A|012346|-|---*-|-----|D M+-WXZ  |0101_100_111_mmm_rrr [SVS.B <ea>]
  1752:             //DBVS.W Dr,<label>                               |-|012346|-|---*-|-----|          |0101_100_111_001_rrr-{offset}
  1753:             //DBNVC.W Dr,<label>                              |A|012346|-|---*-|-----|          |0101_100_111_001_rrr-{offset}        [DBVS.W Dr,<label>]
  1754:             //TRAPVS.W #<data>                                |-|--2346|-|---*-|-----|          |0101_100_111_111_010-{data}
  1755:             //TPNVC.W #<data>                                 |A|--2346|-|---*-|-----|          |0101_100_111_111_010-{data}  [TRAPVS.W #<data>]
  1756:             //TPVS.W #<data>                                  |A|--2346|-|---*-|-----|          |0101_100_111_111_010-{data}  [TRAPVS.W #<data>]
  1757:             //TRAPNVC.W #<data>                               |A|--2346|-|---*-|-----|          |0101_100_111_111_010-{data}  [TRAPVS.W #<data>]
  1758:             //TRAPVS.L #<data>                                |-|--2346|-|---*-|-----|          |0101_100_111_111_011-{data}
  1759:             //TPNVC.L #<data>                                 |A|--2346|-|---*-|-----|          |0101_100_111_111_011-{data}  [TRAPVS.L #<data>]
  1760:             //TPVS.L #<data>                                  |A|--2346|-|---*-|-----|          |0101_100_111_111_011-{data}  [TRAPVS.L #<data>]
  1761:             //TRAPNVC.L #<data>                               |A|--2346|-|---*-|-----|          |0101_100_111_111_011-{data}  [TRAPVS.L #<data>]
  1762:             //TRAPVS                                          |-|--2346|-|---*-|-----|          |0101_100_111_111_100
  1763:             //TPNVC                                           |A|--2346|-|---*-|-----|          |0101_100_111_111_100 [TRAPVS]
  1764:             //TPVS                                            |A|--2346|-|---*-|-----|          |0101_100_111_111_100 [TRAPVS]
  1765:             //TRAPNVC                                         |A|--2346|-|---*-|-----|          |0101_100_111_111_100 [TRAPVS]
  1766:           case 0b0101_100_111:
  1767:             irpSvs ();
  1768:             break irpSwitch;
  1769: 
  1770:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1771:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1772:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1773:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1774:             //SPL.B <ea>                                      |-|012346|-|-*---|-----|D M+-WXZ  |0101_101_011_mmm_rrr
  1775:             //SNMI.B <ea>                                     |A|012346|-|-*---|-----|D M+-WXZ  |0101_101_011_mmm_rrr [SPL.B <ea>]
  1776:             //DBPL.W Dr,<label>                               |-|012346|-|-*---|-----|          |0101_101_011_001_rrr-{offset}
  1777:             //DBNMI.W Dr,<label>                              |A|012346|-|-*---|-----|          |0101_101_011_001_rrr-{offset}        [DBPL.W Dr,<label>]
  1778:             //TRAPPL.W #<data>                                |-|--2346|-|-*---|-----|          |0101_101_011_111_010-{data}
  1779:             //TPNMI.W #<data>                                 |A|--2346|-|-*---|-----|          |0101_101_011_111_010-{data}  [TRAPPL.W #<data>]
  1780:             //TPPL.W #<data>                                  |A|--2346|-|-*---|-----|          |0101_101_011_111_010-{data}  [TRAPPL.W #<data>]
  1781:             //TRAPNMI.W #<data>                               |A|--2346|-|-*---|-----|          |0101_101_011_111_010-{data}  [TRAPPL.W #<data>]
  1782:             //TRAPPL.L #<data>                                |-|--2346|-|-*---|-----|          |0101_101_011_111_011-{data}
  1783:             //TPNMI.L #<data>                                 |A|--2346|-|-*---|-----|          |0101_101_011_111_011-{data}  [TRAPPL.L #<data>]
  1784:             //TPPL.L #<data>                                  |A|--2346|-|-*---|-----|          |0101_101_011_111_011-{data}  [TRAPPL.L #<data>]
  1785:             //TRAPNMI.L #<data>                               |A|--2346|-|-*---|-----|          |0101_101_011_111_011-{data}  [TRAPPL.L #<data>]
  1786:             //TRAPPL                                          |-|--2346|-|-*---|-----|          |0101_101_011_111_100
  1787:             //TPNMI                                           |A|--2346|-|-*---|-----|          |0101_101_011_111_100 [TRAPPL]
  1788:             //TPPL                                            |A|--2346|-|-*---|-----|          |0101_101_011_111_100 [TRAPPL]
  1789:             //TRAPNMI                                         |A|--2346|-|-*---|-----|          |0101_101_011_111_100 [TRAPPL]
  1790:           case 0b0101_101_011:
  1791:             irpSpl ();
  1792:             break irpSwitch;
  1793: 
  1794:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1795:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1796:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1797:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1798:             //SMI.B <ea>                                      |-|012346|-|-*---|-----|D M+-WXZ  |0101_101_111_mmm_rrr
  1799:             //SNPL.B <ea>                                     |A|012346|-|-*---|-----|D M+-WXZ  |0101_101_111_mmm_rrr [SMI.B <ea>]
  1800:             //DBMI.W Dr,<label>                               |-|012346|-|-*---|-----|          |0101_101_111_001_rrr-{offset}
  1801:             //DBNPL.W Dr,<label>                              |A|012346|-|-*---|-----|          |0101_101_111_001_rrr-{offset}        [DBMI.W Dr,<label>]
  1802:             //TRAPMI.W #<data>                                |-|--2346|-|-*---|-----|          |0101_101_111_111_010-{data}
  1803:             //TPMI.W #<data>                                  |A|--2346|-|-*---|-----|          |0101_101_111_111_010-{data}  [TRAPMI.W #<data>]
  1804:             //TPNPL.W #<data>                                 |A|--2346|-|-*---|-----|          |0101_101_111_111_010-{data}  [TRAPMI.W #<data>]
  1805:             //TRAPNPL.W #<data>                               |A|--2346|-|-*---|-----|          |0101_101_111_111_010-{data}  [TRAPMI.W #<data>]
  1806:             //TRAPMI.L #<data>                                |-|--2346|-|-*---|-----|          |0101_101_111_111_011-{data}
  1807:             //TPMI.L #<data>                                  |A|--2346|-|-*---|-----|          |0101_101_111_111_011-{data}  [TRAPMI.L #<data>]
  1808:             //TPNPL.L #<data>                                 |A|--2346|-|-*---|-----|          |0101_101_111_111_011-{data}  [TRAPMI.L #<data>]
  1809:             //TRAPNPL.L #<data>                               |A|--2346|-|-*---|-----|          |0101_101_111_111_011-{data}  [TRAPMI.L #<data>]
  1810:             //TRAPMI                                          |-|--2346|-|-*---|-----|          |0101_101_111_111_100
  1811:             //TPMI                                            |A|--2346|-|-*---|-----|          |0101_101_111_111_100 [TRAPMI]
  1812:             //TPNPL                                           |A|--2346|-|-*---|-----|          |0101_101_111_111_100 [TRAPMI]
  1813:             //TRAPNPL                                         |A|--2346|-|-*---|-----|          |0101_101_111_111_100 [TRAPMI]
  1814:           case 0b0101_101_111:
  1815:             irpSmi ();
  1816:             break irpSwitch;
  1817: 
  1818:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1819:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1820:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1821:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1822:             //SGE.B <ea>                                      |-|012346|-|-*-*-|-----|D M+-WXZ  |0101_110_011_mmm_rrr
  1823:             //SNLT.B <ea>                                     |A|012346|-|-*-*-|-----|D M+-WXZ  |0101_110_011_mmm_rrr [SGE.B <ea>]
  1824:             //DBGE.W Dr,<label>                               |-|012346|-|-*-*-|-----|          |0101_110_011_001_rrr-{offset}
  1825:             //DBNLT.W Dr,<label>                              |A|012346|-|-*-*-|-----|          |0101_110_011_001_rrr-{offset}        [DBGE.W Dr,<label>]
  1826:             //TRAPGE.W #<data>                                |-|--2346|-|-*-*-|-----|          |0101_110_011_111_010-{data}
  1827:             //TPGE.W #<data>                                  |A|--2346|-|-*-*-|-----|          |0101_110_011_111_010-{data}  [TRAPGE.W #<data>]
  1828:             //TPNLT.W #<data>                                 |A|--2346|-|-*-*-|-----|          |0101_110_011_111_010-{data}  [TRAPGE.W #<data>]
  1829:             //TRAPNLT.W #<data>                               |A|--2346|-|-*-*-|-----|          |0101_110_011_111_010-{data}  [TRAPGE.W #<data>]
  1830:             //TRAPGE.L #<data>                                |-|--2346|-|-*-*-|-----|          |0101_110_011_111_011-{data}
  1831:             //TPGE.L #<data>                                  |A|--2346|-|-*-*-|-----|          |0101_110_011_111_011-{data}  [TRAPGE.L #<data>]
  1832:             //TPNLT.L #<data>                                 |A|--2346|-|-*-*-|-----|          |0101_110_011_111_011-{data}  [TRAPGE.L #<data>]
  1833:             //TRAPNLT.L #<data>                               |A|--2346|-|-*-*-|-----|          |0101_110_011_111_011-{data}  [TRAPGE.L #<data>]
  1834:             //TRAPGE                                          |-|--2346|-|-*-*-|-----|          |0101_110_011_111_100
  1835:             //TPGE                                            |A|--2346|-|-*-*-|-----|          |0101_110_011_111_100 [TRAPGE]
  1836:             //TPNLT                                           |A|--2346|-|-*-*-|-----|          |0101_110_011_111_100 [TRAPGE]
  1837:             //TRAPNLT                                         |A|--2346|-|-*-*-|-----|          |0101_110_011_111_100 [TRAPGE]
  1838:           case 0b0101_110_011:
  1839:             irpSge ();
  1840:             break irpSwitch;
  1841: 
  1842:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1843:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1844:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1845:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1846:             //SLT.B <ea>                                      |-|012346|-|-*-*-|-----|D M+-WXZ  |0101_110_111_mmm_rrr
  1847:             //SNGE.B <ea>                                     |A|012346|-|-*-*-|-----|D M+-WXZ  |0101_110_111_mmm_rrr [SLT.B <ea>]
  1848:             //DBLT.W Dr,<label>                               |-|012346|-|-*-*-|-----|          |0101_110_111_001_rrr-{offset}
  1849:             //DBNGE.W Dr,<label>                              |A|012346|-|-*-*-|-----|          |0101_110_111_001_rrr-{offset}        [DBLT.W Dr,<label>]
  1850:             //TRAPLT.W #<data>                                |-|--2346|-|-*-*-|-----|          |0101_110_111_111_010-{data}
  1851:             //TPLT.W #<data>                                  |A|--2346|-|-*-*-|-----|          |0101_110_111_111_010-{data}  [TRAPLT.W #<data>]
  1852:             //TPNGE.W #<data>                                 |A|--2346|-|-*-*-|-----|          |0101_110_111_111_010-{data}  [TRAPLT.W #<data>]
  1853:             //TRAPNGE.W #<data>                               |A|--2346|-|-*-*-|-----|          |0101_110_111_111_010-{data}  [TRAPLT.W #<data>]
  1854:             //TRAPLT.L #<data>                                |-|--2346|-|-*-*-|-----|          |0101_110_111_111_011-{data}
  1855:             //TPLT.L #<data>                                  |A|--2346|-|-*-*-|-----|          |0101_110_111_111_011-{data}  [TRAPLT.L #<data>]
  1856:             //TPNGE.L #<data>                                 |A|--2346|-|-*-*-|-----|          |0101_110_111_111_011-{data}  [TRAPLT.L #<data>]
  1857:             //TRAPNGE.L #<data>                               |A|--2346|-|-*-*-|-----|          |0101_110_111_111_011-{data}  [TRAPLT.L #<data>]
  1858:             //TRAPLT                                          |-|--2346|-|-*-*-|-----|          |0101_110_111_111_100
  1859:             //TPLT                                            |A|--2346|-|-*-*-|-----|          |0101_110_111_111_100 [TRAPLT]
  1860:             //TPNGE                                           |A|--2346|-|-*-*-|-----|          |0101_110_111_111_100 [TRAPLT]
  1861:             //TRAPNGE                                         |A|--2346|-|-*-*-|-----|          |0101_110_111_111_100 [TRAPLT]
  1862:           case 0b0101_110_111:
  1863:             irpSlt ();
  1864:             break irpSwitch;
  1865: 
  1866:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1867:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1868:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1869:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1870:             //SGT.B <ea>                                      |-|012346|-|-***-|-----|D M+-WXZ  |0101_111_011_mmm_rrr
  1871:             //SNLE.B <ea>                                     |A|012346|-|-***-|-----|D M+-WXZ  |0101_111_011_mmm_rrr [SGT.B <ea>]
  1872:             //DBGT.W Dr,<label>                               |-|012346|-|-***-|-----|          |0101_111_011_001_rrr-{offset}
  1873:             //DBNLE.W Dr,<label>                              |A|012346|-|-***-|-----|          |0101_111_011_001_rrr-{offset}        [DBGT.W Dr,<label>]
  1874:             //TRAPGT.W #<data>                                |-|--2346|-|-***-|-----|          |0101_111_011_111_010-{data}
  1875:             //TPGT.W #<data>                                  |A|--2346|-|-***-|-----|          |0101_111_011_111_010-{data}  [TRAPGT.W #<data>]
  1876:             //TPNLE.W #<data>                                 |A|--2346|-|-***-|-----|          |0101_111_011_111_010-{data}  [TRAPGT.W #<data>]
  1877:             //TRAPNLE.W #<data>                               |A|--2346|-|-***-|-----|          |0101_111_011_111_010-{data}  [TRAPGT.W #<data>]
  1878:             //TRAPGT.L #<data>                                |-|--2346|-|-***-|-----|          |0101_111_011_111_011-{data}
  1879:             //TPGT.L #<data>                                  |A|--2346|-|-***-|-----|          |0101_111_011_111_011-{data}  [TRAPGT.L #<data>]
  1880:             //TPNLE.L #<data>                                 |A|--2346|-|-***-|-----|          |0101_111_011_111_011-{data}  [TRAPGT.L #<data>]
  1881:             //TRAPNLE.L #<data>                               |A|--2346|-|-***-|-----|          |0101_111_011_111_011-{data}  [TRAPGT.L #<data>]
  1882:             //TRAPGT                                          |-|--2346|-|-***-|-----|          |0101_111_011_111_100
  1883:             //TPGT                                            |A|--2346|-|-***-|-----|          |0101_111_011_111_100 [TRAPGT]
  1884:             //TPNLE                                           |A|--2346|-|-***-|-----|          |0101_111_011_111_100 [TRAPGT]
  1885:             //TRAPNLE                                         |A|--2346|-|-***-|-----|          |0101_111_011_111_100 [TRAPGT]
  1886:           case 0b0101_111_011:
  1887:             irpSgt ();
  1888:             break irpSwitch;
  1889: 
  1890:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1891:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1892:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1893:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1894:             //SLE.B <ea>                                      |-|012346|-|-***-|-----|D M+-WXZ  |0101_111_111_mmm_rrr
  1895:             //SNGT.B <ea>                                     |A|012346|-|-***-|-----|D M+-WXZ  |0101_111_111_mmm_rrr [SLE.B <ea>]
  1896:             //DBLE.W Dr,<label>                               |-|012346|-|-***-|-----|          |0101_111_111_001_rrr-{offset}
  1897:             //DBNGT.W Dr,<label>                              |A|012346|-|-***-|-----|          |0101_111_111_001_rrr-{offset}        [DBLE.W Dr,<label>]
  1898:             //TRAPLE.W #<data>                                |-|--2346|-|-***-|-----|          |0101_111_111_111_010-{data}
  1899:             //TPLE.W #<data>                                  |A|--2346|-|-***-|-----|          |0101_111_111_111_010-{data}  [TRAPLE.W #<data>]
  1900:             //TPNGT.W #<data>                                 |A|--2346|-|-***-|-----|          |0101_111_111_111_010-{data}  [TRAPLE.W #<data>]
  1901:             //TRAPNGT.W #<data>                               |A|--2346|-|-***-|-----|          |0101_111_111_111_010-{data}  [TRAPLE.W #<data>]
  1902:             //TRAPLE.L #<data>                                |-|--2346|-|-***-|-----|          |0101_111_111_111_011-{data}
  1903:             //TPLE.L #<data>                                  |A|--2346|-|-***-|-----|          |0101_111_111_111_011-{data}  [TRAPLE.L #<data>]
  1904:             //TPNGT.L #<data>                                 |A|--2346|-|-***-|-----|          |0101_111_111_111_011-{data}  [TRAPLE.L #<data>]
  1905:             //TRAPNGT.L #<data>                               |A|--2346|-|-***-|-----|          |0101_111_111_111_011-{data}  [TRAPLE.L #<data>]
  1906:             //TRAPLE                                          |-|--2346|-|-***-|-----|          |0101_111_111_111_100
  1907:             //TPLE                                            |A|--2346|-|-***-|-----|          |0101_111_111_111_100 [TRAPLE]
  1908:             //TPNGT                                           |A|--2346|-|-***-|-----|          |0101_111_111_111_100 [TRAPLE]
  1909:             //TRAPNGT                                         |A|--2346|-|-***-|-----|          |0101_111_111_111_100 [TRAPLE]
  1910:           case 0b0101_111_111:
  1911:             irpSle ();
  1912:             break irpSwitch;
  1913: 
  1914:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1915:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1916:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1917:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1918:             //BRA.W <label>                                   |-|012346|-|-----|-----|          |0110_000_000_000_000-{offset}
  1919:             //JBRA.W <label>                                  |A|012346|-|-----|-----|          |0110_000_000_000_000-{offset}        [BRA.W <label>]
  1920:             //BRA.S <label>                                   |-|012346|-|-----|-----|          |0110_000_000_sss_sss (s is not equal to 0)
  1921:             //JBRA.S <label>                                  |A|012346|-|-----|-----|          |0110_000_000_sss_sss (s is not equal to 0)   [BRA.S <label>]
  1922:           case 0b0110_000_000:
  1923:             irpBrasw ();
  1924:             break irpSwitch;
  1925: 
  1926:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1927:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1928:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1929:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1930:             //BRA.S <label>                                   |-|012346|-|-----|-----|          |0110_000_001_sss_sss
  1931:             //JBRA.S <label>                                  |A|012346|-|-----|-----|          |0110_000_001_sss_sss [BRA.S <label>]
  1932:           case 0b0110_000_001:
  1933:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1934:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1935:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1936:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1937:             //BRA.S <label>                                   |-|012346|-|-----|-----|          |0110_000_010_sss_sss
  1938:             //JBRA.S <label>                                  |A|012346|-|-----|-----|          |0110_000_010_sss_sss [BRA.S <label>]
  1939:           case 0b0110_000_010:
  1940:             irpBras ();
  1941:             break irpSwitch;
  1942: 
  1943:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1944:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1945:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1946:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1947:             //BRA.S <label>                                   |-|--2346|-|-----|-----|          |0110_000_011_sss_sss (s is not equal to 63)
  1948:             //JBRA.S <label>                                  |A|--2346|-|-----|-----|          |0110_000_011_sss_sss (s is not equal to 63)  [BRA.S <label>]
  1949:             //BRA.L <label>                                   |-|--2346|-|-----|-----|          |0110_000_011_111_111-{offset}
  1950:           case 0b0110_000_011:
  1951:             irpBrasl ();
  1952:             break irpSwitch;
  1953: 
  1954:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1955:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1956:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1957:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1958:             //BSR.W <label>                                   |-|012346|-|-----|-----|          |0110_000_100_000_000-{offset}
  1959:             //JBSR.W <label>                                  |A|012346|-|-----|-----|          |0110_000_100_000_000-{offset}        [BSR.W <label>]
  1960:             //BSR.S <label>                                   |-|012346|-|-----|-----|          |0110_000_100_sss_sss (s is not equal to 0)
  1961:             //JBSR.S <label>                                  |A|012346|-|-----|-----|          |0110_000_100_sss_sss (s is not equal to 0)   [BSR.S <label>]
  1962:           case 0b0110_000_100:
  1963:             irpBsrsw ();
  1964:             break irpSwitch;
  1965: 
  1966:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1967:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1968:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1969:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1970:             //BSR.S <label>                                   |-|012346|-|-----|-----|          |0110_000_101_sss_sss
  1971:             //JBSR.S <label>                                  |A|012346|-|-----|-----|          |0110_000_101_sss_sss [BSR.S <label>]
  1972:           case 0b0110_000_101:
  1973:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1974:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1975:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1976:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1977:             //BSR.S <label>                                   |-|012346|-|-----|-----|          |0110_000_110_sss_sss
  1978:             //JBSR.S <label>                                  |A|012346|-|-----|-----|          |0110_000_110_sss_sss [BSR.S <label>]
  1979:           case 0b0110_000_110:
  1980:             irpBsrs ();
  1981:             break irpSwitch;
  1982: 
  1983:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1984:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1985:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1986:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1987:             //BSR.S <label>                                   |-|--2346|-|-----|-----|          |0110_000_111_sss_sss (s is not equal to 63)
  1988:             //JBSR.S <label>                                  |A|--2346|-|-----|-----|          |0110_000_111_sss_sss (s is not equal to 63)  [BSR.S <label>]
  1989:             //BSR.L <label>                                   |-|--2346|-|-----|-----|          |0110_000_111_111_111-{offset}
  1990:           case 0b0110_000_111:
  1991:             irpBsrsl ();
  1992:             break irpSwitch;
  1993: 
  1994:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1995:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  1996:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  1997:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  1998:             //BHI.W <label>                                   |-|012346|-|--*-*|-----|          |0110_001_000_000_000-{offset}
  1999:             //BNLS.W <label>                                  |A|012346|-|--*-*|-----|          |0110_001_000_000_000-{offset}        [BHI.W <label>]
  2000:             //JBHI.W <label>                                  |A|012346|-|--*-*|-----|          |0110_001_000_000_000-{offset}        [BHI.W <label>]
  2001:             //JBNLS.W <label>                                 |A|012346|-|--*-*|-----|          |0110_001_000_000_000-{offset}        [BHI.W <label>]
  2002:             //BHI.S <label>                                   |-|012346|-|--*-*|-----|          |0110_001_000_sss_sss (s is not equal to 0)
  2003:             //BNLS.S <label>                                  |A|012346|-|--*-*|-----|          |0110_001_000_sss_sss (s is not equal to 0)   [BHI.S <label>]
  2004:             //JBHI.S <label>                                  |A|012346|-|--*-*|-----|          |0110_001_000_sss_sss (s is not equal to 0)   [BHI.S <label>]
  2005:             //JBNLS.S <label>                                 |A|012346|-|--*-*|-----|          |0110_001_000_sss_sss (s is not equal to 0)   [BHI.S <label>]
  2006:             //JBLS.L <label>                                  |A|012346|-|--*-*|-----|          |0110_001_000_000_110-0100111011111001-{address}      [BHI.S (*)+8;JMP <label>]
  2007:             //JBNHI.L <label>                                 |A|012346|-|--*-*|-----|          |0110_001_000_000_110-0100111011111001-{address}      [BHI.S (*)+8;JMP <label>]
  2008:           case 0b0110_001_000:
  2009:             irpBhisw ();
  2010:             break irpSwitch;
  2011: 
  2012:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2013:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2014:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2015:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2016:             //BHI.S <label>                                   |-|012346|-|--*-*|-----|          |0110_001_001_sss_sss
  2017:             //BNLS.S <label>                                  |A|012346|-|--*-*|-----|          |0110_001_001_sss_sss [BHI.S <label>]
  2018:             //JBHI.S <label>                                  |A|012346|-|--*-*|-----|          |0110_001_001_sss_sss [BHI.S <label>]
  2019:             //JBNLS.S <label>                                 |A|012346|-|--*-*|-----|          |0110_001_001_sss_sss [BHI.S <label>]
  2020:           case 0b0110_001_001:
  2021:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2022:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2023:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2024:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2025:             //BHI.S <label>                                   |-|012346|-|--*-*|-----|          |0110_001_010_sss_sss
  2026:             //BNLS.S <label>                                  |A|012346|-|--*-*|-----|          |0110_001_010_sss_sss [BHI.S <label>]
  2027:             //JBHI.S <label>                                  |A|012346|-|--*-*|-----|          |0110_001_010_sss_sss [BHI.S <label>]
  2028:             //JBNLS.S <label>                                 |A|012346|-|--*-*|-----|          |0110_001_010_sss_sss [BHI.S <label>]
  2029:           case 0b0110_001_010:
  2030:             irpBhis ();
  2031:             break irpSwitch;
  2032: 
  2033:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2034:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2035:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2036:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2037:             //BHI.S <label>                                   |-|--2346|-|--*-*|-----|          |0110_001_011_sss_sss (s is not equal to 63)
  2038:             //BNLS.S <label>                                  |A|--2346|-|--*-*|-----|          |0110_001_011_sss_sss (s is not equal to 63)  [BHI.S <label>]
  2039:             //JBHI.S <label>                                  |A|--2346|-|--*-*|-----|          |0110_001_011_sss_sss (s is not equal to 63)  [BHI.S <label>]
  2040:             //JBNLS.S <label>                                 |A|--2346|-|--*-*|-----|          |0110_001_011_sss_sss (s is not equal to 63)  [BHI.S <label>]
  2041:             //BHI.L <label>                                   |-|--2346|-|--*-*|-----|          |0110_001_011_111_111-{offset}
  2042:             //BNLS.L <label>                                  |A|--2346|-|--*-*|-----|          |0110_001_011_111_111-{offset}        [BHI.L <label>]
  2043:           case 0b0110_001_011:
  2044:             irpBhisl ();
  2045:             break irpSwitch;
  2046: 
  2047:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2048:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2049:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2050:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2051:             //BLS.W <label>                                   |-|012346|-|--*-*|-----|          |0110_001_100_000_000-{offset}
  2052:             //BNHI.W <label>                                  |A|012346|-|--*-*|-----|          |0110_001_100_000_000-{offset}        [BLS.W <label>]
  2053:             //JBLS.W <label>                                  |A|012346|-|--*-*|-----|          |0110_001_100_000_000-{offset}        [BLS.W <label>]
  2054:             //JBNHI.W <label>                                 |A|012346|-|--*-*|-----|          |0110_001_100_000_000-{offset}        [BLS.W <label>]
  2055:             //BLS.S <label>                                   |-|012346|-|--*-*|-----|          |0110_001_100_sss_sss (s is not equal to 0)
  2056:             //BNHI.S <label>                                  |A|012346|-|--*-*|-----|          |0110_001_100_sss_sss (s is not equal to 0)   [BLS.S <label>]
  2057:             //JBLS.S <label>                                  |A|012346|-|--*-*|-----|          |0110_001_100_sss_sss (s is not equal to 0)   [BLS.S <label>]
  2058:             //JBNHI.S <label>                                 |A|012346|-|--*-*|-----|          |0110_001_100_sss_sss (s is not equal to 0)   [BLS.S <label>]
  2059:             //JBHI.L <label>                                  |A|012346|-|--*-*|-----|          |0110_001_100_000_110-0100111011111001-{address}      [BLS.S (*)+8;JMP <label>]
  2060:             //JBNLS.L <label>                                 |A|012346|-|--*-*|-----|          |0110_001_100_000_110-0100111011111001-{address}      [BLS.S (*)+8;JMP <label>]
  2061:           case 0b0110_001_100:
  2062:             irpBlssw ();
  2063:             break irpSwitch;
  2064: 
  2065:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2066:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2067:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2068:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2069:             //BLS.S <label>                                   |-|012346|-|--*-*|-----|          |0110_001_101_sss_sss
  2070:             //BNHI.S <label>                                  |A|012346|-|--*-*|-----|          |0110_001_101_sss_sss [BLS.S <label>]
  2071:             //JBLS.S <label>                                  |A|012346|-|--*-*|-----|          |0110_001_101_sss_sss [BLS.S <label>]
  2072:             //JBNHI.S <label>                                 |A|012346|-|--*-*|-----|          |0110_001_101_sss_sss [BLS.S <label>]
  2073:           case 0b0110_001_101:
  2074:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2075:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2076:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2077:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2078:             //BLS.S <label>                                   |-|012346|-|--*-*|-----|          |0110_001_110_sss_sss
  2079:             //BNHI.S <label>                                  |A|012346|-|--*-*|-----|          |0110_001_110_sss_sss [BLS.S <label>]
  2080:             //JBLS.S <label>                                  |A|012346|-|--*-*|-----|          |0110_001_110_sss_sss [BLS.S <label>]
  2081:             //JBNHI.S <label>                                 |A|012346|-|--*-*|-----|          |0110_001_110_sss_sss [BLS.S <label>]
  2082:           case 0b0110_001_110:
  2083:             irpBlss ();
  2084:             break irpSwitch;
  2085: 
  2086:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2087:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2088:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2089:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2090:             //BLS.S <label>                                   |-|--2346|-|--*-*|-----|          |0110_001_111_sss_sss (s is not equal to 63)
  2091:             //BNHI.S <label>                                  |A|--2346|-|--*-*|-----|          |0110_001_111_sss_sss (s is not equal to 63)  [BLS.S <label>]
  2092:             //JBLS.S <label>                                  |A|--2346|-|--*-*|-----|          |0110_001_111_sss_sss (s is not equal to 63)  [BLS.S <label>]
  2093:             //JBNHI.S <label>                                 |A|--2346|-|--*-*|-----|          |0110_001_111_sss_sss (s is not equal to 63)  [BLS.S <label>]
  2094:             //BLS.L <label>                                   |-|--2346|-|--*-*|-----|          |0110_001_111_111_111-{offset}
  2095:             //BNHI.L <label>                                  |A|--2346|-|--*-*|-----|          |0110_001_111_111_111-{offset}        [BLS.L <label>]
  2096:           case 0b0110_001_111:
  2097:             irpBlssl ();
  2098:             break irpSwitch;
  2099: 
  2100:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2101:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2102:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2103:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2104:             //BCC.W <label>                                   |-|012346|-|----*|-----|          |0110_010_000_000_000-{offset}
  2105:             //BHS.W <label>                                   |A|012346|-|----*|-----|          |0110_010_000_000_000-{offset}        [BCC.W <label>]
  2106:             //BNCS.W <label>                                  |A|012346|-|----*|-----|          |0110_010_000_000_000-{offset}        [BCC.W <label>]
  2107:             //BNLO.W <label>                                  |A|012346|-|----*|-----|          |0110_010_000_000_000-{offset}        [BCC.W <label>]
  2108:             //JBCC.W <label>                                  |A|012346|-|----*|-----|          |0110_010_000_000_000-{offset}        [BCC.W <label>]
  2109:             //JBHS.W <label>                                  |A|012346|-|----*|-----|          |0110_010_000_000_000-{offset}        [BCC.W <label>]
  2110:             //JBNCS.W <label>                                 |A|012346|-|----*|-----|          |0110_010_000_000_000-{offset}        [BCC.W <label>]
  2111:             //JBNLO.W <label>                                 |A|012346|-|----*|-----|          |0110_010_000_000_000-{offset}        [BCC.W <label>]
  2112:             //BCC.S <label>                                   |-|012346|-|----*|-----|          |0110_010_000_sss_sss (s is not equal to 0)
  2113:             //BHS.S <label>                                   |A|012346|-|----*|-----|          |0110_010_000_sss_sss (s is not equal to 0)   [BCC.S <label>]
  2114:             //BNCS.S <label>                                  |A|012346|-|----*|-----|          |0110_010_000_sss_sss (s is not equal to 0)   [BCC.S <label>]
  2115:             //BNLO.S <label>                                  |A|012346|-|----*|-----|          |0110_010_000_sss_sss (s is not equal to 0)   [BCC.S <label>]
  2116:             //JBCC.S <label>                                  |A|012346|-|----*|-----|          |0110_010_000_sss_sss (s is not equal to 0)   [BCC.S <label>]
  2117:             //JBHS.S <label>                                  |A|012346|-|----*|-----|          |0110_010_000_sss_sss (s is not equal to 0)   [BCC.S <label>]
  2118:             //JBNCS.S <label>                                 |A|012346|-|----*|-----|          |0110_010_000_sss_sss (s is not equal to 0)   [BCC.S <label>]
  2119:             //JBNLO.S <label>                                 |A|012346|-|----*|-----|          |0110_010_000_sss_sss (s is not equal to 0)   [BCC.S <label>]
  2120:             //JBCS.L <label>                                  |A|012346|-|----*|-----|          |0110_010_000_000_110-0100111011111001-{address}      [BCC.S (*)+8;JMP <label>]
  2121:             //JBLO.L <label>                                  |A|012346|-|----*|-----|          |0110_010_000_000_110-0100111011111001-{address}      [BCC.S (*)+8;JMP <label>]
  2122:             //JBNCC.L <label>                                 |A|012346|-|----*|-----|          |0110_010_000_000_110-0100111011111001-{address}      [BCC.S (*)+8;JMP <label>]
  2123:             //JBNHS.L <label>                                 |A|012346|-|----*|-----|          |0110_010_000_000_110-0100111011111001-{address}      [BCC.S (*)+8;JMP <label>]
  2124:           case 0b0110_010_000:
  2125:             irpBhssw ();
  2126:             break irpSwitch;
  2127: 
  2128:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2129:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2130:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2131:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2132:             //BCC.S <label>                                   |-|012346|-|----*|-----|          |0110_010_001_sss_sss
  2133:             //BHS.S <label>                                   |A|012346|-|----*|-----|          |0110_010_001_sss_sss [BCC.S <label>]
  2134:             //BNCS.S <label>                                  |A|012346|-|----*|-----|          |0110_010_001_sss_sss [BCC.S <label>]
  2135:             //BNLO.S <label>                                  |A|012346|-|----*|-----|          |0110_010_001_sss_sss [BCC.S <label>]
  2136:             //JBCC.S <label>                                  |A|012346|-|----*|-----|          |0110_010_001_sss_sss [BCC.S <label>]
  2137:             //JBHS.S <label>                                  |A|012346|-|----*|-----|          |0110_010_001_sss_sss [BCC.S <label>]
  2138:             //JBNCS.S <label>                                 |A|012346|-|----*|-----|          |0110_010_001_sss_sss [BCC.S <label>]
  2139:             //JBNLO.S <label>                                 |A|012346|-|----*|-----|          |0110_010_001_sss_sss [BCC.S <label>]
  2140:           case 0b0110_010_001:
  2141:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2142:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2143:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2144:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2145:             //BCC.S <label>                                   |-|012346|-|----*|-----|          |0110_010_010_sss_sss
  2146:             //BHS.S <label>                                   |A|012346|-|----*|-----|          |0110_010_010_sss_sss [BCC.S <label>]
  2147:             //BNCS.S <label>                                  |A|012346|-|----*|-----|          |0110_010_010_sss_sss [BCC.S <label>]
  2148:             //BNLO.S <label>                                  |A|012346|-|----*|-----|          |0110_010_010_sss_sss [BCC.S <label>]
  2149:             //JBCC.S <label>                                  |A|012346|-|----*|-----|          |0110_010_010_sss_sss [BCC.S <label>]
  2150:             //JBHS.S <label>                                  |A|012346|-|----*|-----|          |0110_010_010_sss_sss [BCC.S <label>]
  2151:             //JBNCS.S <label>                                 |A|012346|-|----*|-----|          |0110_010_010_sss_sss [BCC.S <label>]
  2152:             //JBNLO.S <label>                                 |A|012346|-|----*|-----|          |0110_010_010_sss_sss [BCC.S <label>]
  2153:           case 0b0110_010_010:
  2154:             irpBhss ();
  2155:             break irpSwitch;
  2156: 
  2157:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2158:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2159:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2160:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2161:             //BCC.S <label>                                   |-|--2346|-|----*|-----|          |0110_010_011_sss_sss (s is not equal to 63)
  2162:             //BHS.S <label>                                   |A|--2346|-|----*|-----|          |0110_010_011_sss_sss (s is not equal to 63)  [BCC.S <label>]
  2163:             //BNCS.S <label>                                  |A|--2346|-|----*|-----|          |0110_010_011_sss_sss (s is not equal to 63)  [BCC.S <label>]
  2164:             //BNLO.S <label>                                  |A|--2346|-|----*|-----|          |0110_010_011_sss_sss (s is not equal to 63)  [BCC.S <label>]
  2165:             //JBCC.S <label>                                  |A|--2346|-|----*|-----|          |0110_010_011_sss_sss (s is not equal to 63)  [BCC.S <label>]
  2166:             //JBHS.S <label>                                  |A|--2346|-|----*|-----|          |0110_010_011_sss_sss (s is not equal to 63)  [BCC.S <label>]
  2167:             //JBNCS.S <label>                                 |A|--2346|-|----*|-----|          |0110_010_011_sss_sss (s is not equal to 63)  [BCC.S <label>]
  2168:             //JBNLO.S <label>                                 |A|--2346|-|----*|-----|          |0110_010_011_sss_sss (s is not equal to 63)  [BCC.S <label>]
  2169:             //BCC.L <label>                                   |-|--2346|-|----*|-----|          |0110_010_011_111_111-{offset}
  2170:             //BHS.L <label>                                   |A|--2346|-|----*|-----|          |0110_010_011_111_111-{offset}        [BCC.L <label>]
  2171:             //BNCS.L <label>                                  |A|--2346|-|----*|-----|          |0110_010_011_111_111-{offset}        [BCC.L <label>]
  2172:             //BNLO.L <label>                                  |A|--2346|-|----*|-----|          |0110_010_011_111_111-{offset}        [BCC.L <label>]
  2173:           case 0b0110_010_011:
  2174:             irpBhssl ();
  2175:             break irpSwitch;
  2176: 
  2177:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2178:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2179:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2180:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2181:             //BCS.W <label>                                   |-|012346|-|----*|-----|          |0110_010_100_000_000-{offset}
  2182:             //BLO.W <label>                                   |A|012346|-|----*|-----|          |0110_010_100_000_000-{offset}        [BCS.W <label>]
  2183:             //BNCC.W <label>                                  |A|012346|-|----*|-----|          |0110_010_100_000_000-{offset}        [BCS.W <label>]
  2184:             //BNHS.W <label>                                  |A|012346|-|----*|-----|          |0110_010_100_000_000-{offset}        [BCS.W <label>]
  2185:             //JBCS.W <label>                                  |A|012346|-|----*|-----|          |0110_010_100_000_000-{offset}        [BCS.W <label>]
  2186:             //JBLO.W <label>                                  |A|012346|-|----*|-----|          |0110_010_100_000_000-{offset}        [BCS.W <label>]
  2187:             //JBNCC.W <label>                                 |A|012346|-|----*|-----|          |0110_010_100_000_000-{offset}        [BCS.W <label>]
  2188:             //JBNHS.W <label>                                 |A|012346|-|----*|-----|          |0110_010_100_000_000-{offset}        [BCS.W <label>]
  2189:             //BCS.S <label>                                   |-|012346|-|----*|-----|          |0110_010_100_sss_sss (s is not equal to 0)
  2190:             //BLO.S <label>                                   |A|012346|-|----*|-----|          |0110_010_100_sss_sss (s is not equal to 0)   [BCS.S <label>]
  2191:             //BNCC.S <label>                                  |A|012346|-|----*|-----|          |0110_010_100_sss_sss (s is not equal to 0)   [BCS.S <label>]
  2192:             //BNHS.S <label>                                  |A|012346|-|----*|-----|          |0110_010_100_sss_sss (s is not equal to 0)   [BCS.S <label>]
  2193:             //JBCS.S <label>                                  |A|012346|-|----*|-----|          |0110_010_100_sss_sss (s is not equal to 0)   [BCS.S <label>]
  2194:             //JBLO.S <label>                                  |A|012346|-|----*|-----|          |0110_010_100_sss_sss (s is not equal to 0)   [BCS.S <label>]
  2195:             //JBNCC.S <label>                                 |A|012346|-|----*|-----|          |0110_010_100_sss_sss (s is not equal to 0)   [BCS.S <label>]
  2196:             //JBNHS.S <label>                                 |A|012346|-|----*|-----|          |0110_010_100_sss_sss (s is not equal to 0)   [BCS.S <label>]
  2197:             //JBCC.L <label>                                  |A|012346|-|----*|-----|          |0110_010_100_000_110-0100111011111001-{address}      [BCS.S (*)+8;JMP <label>]
  2198:             //JBHS.L <label>                                  |A|012346|-|----*|-----|          |0110_010_100_000_110-0100111011111001-{address}      [BCS.S (*)+8;JMP <label>]
  2199:             //JBNCS.L <label>                                 |A|012346|-|----*|-----|          |0110_010_100_000_110-0100111011111001-{address}      [BCS.S (*)+8;JMP <label>]
  2200:             //JBNLO.L <label>                                 |A|012346|-|----*|-----|          |0110_010_100_000_110-0100111011111001-{address}      [BCS.S (*)+8;JMP <label>]
  2201:           case 0b0110_010_100:
  2202:             irpBlosw ();
  2203:             break irpSwitch;
  2204: 
  2205:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2206:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2207:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2208:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2209:             //BCS.S <label>                                   |-|012346|-|----*|-----|          |0110_010_101_sss_sss
  2210:             //BLO.S <label>                                   |A|012346|-|----*|-----|          |0110_010_101_sss_sss [BCS.S <label>]
  2211:             //BNCC.S <label>                                  |A|012346|-|----*|-----|          |0110_010_101_sss_sss [BCS.S <label>]
  2212:             //BNHS.S <label>                                  |A|012346|-|----*|-----|          |0110_010_101_sss_sss [BCS.S <label>]
  2213:             //JBCS.S <label>                                  |A|012346|-|----*|-----|          |0110_010_101_sss_sss [BCS.S <label>]
  2214:             //JBLO.S <label>                                  |A|012346|-|----*|-----|          |0110_010_101_sss_sss [BCS.S <label>]
  2215:             //JBNCC.S <label>                                 |A|012346|-|----*|-----|          |0110_010_101_sss_sss [BCS.S <label>]
  2216:             //JBNHS.S <label>                                 |A|012346|-|----*|-----|          |0110_010_101_sss_sss [BCS.S <label>]
  2217:           case 0b0110_010_101:
  2218:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2219:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2220:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2221:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2222:             //BCS.S <label>                                   |-|012346|-|----*|-----|          |0110_010_110_sss_sss
  2223:             //BLO.S <label>                                   |A|012346|-|----*|-----|          |0110_010_110_sss_sss [BCS.S <label>]
  2224:             //BNCC.S <label>                                  |A|012346|-|----*|-----|          |0110_010_110_sss_sss [BCS.S <label>]
  2225:             //BNHS.S <label>                                  |A|012346|-|----*|-----|          |0110_010_110_sss_sss [BCS.S <label>]
  2226:             //JBCS.S <label>                                  |A|012346|-|----*|-----|          |0110_010_110_sss_sss [BCS.S <label>]
  2227:             //JBLO.S <label>                                  |A|012346|-|----*|-----|          |0110_010_110_sss_sss [BCS.S <label>]
  2228:             //JBNCC.S <label>                                 |A|012346|-|----*|-----|          |0110_010_110_sss_sss [BCS.S <label>]
  2229:             //JBNHS.S <label>                                 |A|012346|-|----*|-----|          |0110_010_110_sss_sss [BCS.S <label>]
  2230:           case 0b0110_010_110:
  2231:             irpBlos ();
  2232:             break irpSwitch;
  2233: 
  2234:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2235:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2236:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2237:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2238:             //BCS.S <label>                                   |-|--2346|-|----*|-----|          |0110_010_111_sss_sss (s is not equal to 63)
  2239:             //BLO.S <label>                                   |A|--2346|-|----*|-----|          |0110_010_111_sss_sss (s is not equal to 63)  [BCS.S <label>]
  2240:             //BNCC.S <label>                                  |A|--2346|-|----*|-----|          |0110_010_111_sss_sss (s is not equal to 63)  [BCS.S <label>]
  2241:             //BNHS.S <label>                                  |A|--2346|-|----*|-----|          |0110_010_111_sss_sss (s is not equal to 63)  [BCS.S <label>]
  2242:             //JBCS.S <label>                                  |A|--2346|-|----*|-----|          |0110_010_111_sss_sss (s is not equal to 63)  [BCS.S <label>]
  2243:             //JBLO.S <label>                                  |A|--2346|-|----*|-----|          |0110_010_111_sss_sss (s is not equal to 63)  [BCS.S <label>]
  2244:             //JBNCC.S <label>                                 |A|--2346|-|----*|-----|          |0110_010_111_sss_sss (s is not equal to 63)  [BCS.S <label>]
  2245:             //JBNHS.S <label>                                 |A|--2346|-|----*|-----|          |0110_010_111_sss_sss (s is not equal to 63)  [BCS.S <label>]
  2246:             //BCS.L <label>                                   |-|--2346|-|----*|-----|          |0110_010_111_111_111-{offset}
  2247:             //BLO.L <label>                                   |A|--2346|-|----*|-----|          |0110_010_111_111_111-{offset}        [BCS.L <label>]
  2248:             //BNCC.L <label>                                  |A|--2346|-|----*|-----|          |0110_010_111_111_111-{offset}        [BCS.L <label>]
  2249:             //BNHS.L <label>                                  |A|--2346|-|----*|-----|          |0110_010_111_111_111-{offset}        [BCS.L <label>]
  2250:           case 0b0110_010_111:
  2251:             irpBlosl ();
  2252:             break irpSwitch;
  2253: 
  2254:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2255:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2256:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2257:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2258:             //BNE.W <label>                                   |-|012346|-|--*--|-----|          |0110_011_000_000_000-{offset}
  2259:             //BNEQ.W <label>                                  |A|012346|-|--*--|-----|          |0110_011_000_000_000-{offset}        [BNE.W <label>]
  2260:             //BNZ.W <label>                                   |A|012346|-|--*--|-----|          |0110_011_000_000_000-{offset}        [BNE.W <label>]
  2261:             //BNZE.W <label>                                  |A|012346|-|--*--|-----|          |0110_011_000_000_000-{offset}        [BNE.W <label>]
  2262:             //JBNE.W <label>                                  |A|012346|-|--*--|-----|          |0110_011_000_000_000-{offset}        [BNE.W <label>]
  2263:             //JBNEQ.W <label>                                 |A|012346|-|--*--|-----|          |0110_011_000_000_000-{offset}        [BNE.W <label>]
  2264:             //JBNZ.W <label>                                  |A|012346|-|--*--|-----|          |0110_011_000_000_000-{offset}        [BNE.W <label>]
  2265:             //JBNZE.W <label>                                 |A|012346|-|--*--|-----|          |0110_011_000_000_000-{offset}        [BNE.W <label>]
  2266:             //BNE.S <label>                                   |-|012346|-|--*--|-----|          |0110_011_000_sss_sss (s is not equal to 0)
  2267:             //BNEQ.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_000_sss_sss (s is not equal to 0)   [BNE.S <label>]
  2268:             //BNZ.S <label>                                   |A|012346|-|--*--|-----|          |0110_011_000_sss_sss (s is not equal to 0)   [BNE.S <label>]
  2269:             //BNZE.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_000_sss_sss (s is not equal to 0)   [BNE.S <label>]
  2270:             //JBNE.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_000_sss_sss (s is not equal to 0)   [BNE.S <label>]
  2271:             //JBNEQ.S <label>                                 |A|012346|-|--*--|-----|          |0110_011_000_sss_sss (s is not equal to 0)   [BNE.S <label>]
  2272:             //JBNZ.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_000_sss_sss (s is not equal to 0)   [BNE.S <label>]
  2273:             //JBNZE.S <label>                                 |A|012346|-|--*--|-----|          |0110_011_000_sss_sss (s is not equal to 0)   [BNE.S <label>]
  2274:             //JBEQ.L <label>                                  |A|012346|-|--*--|-----|          |0110_011_000_000_110-0100111011111001-{address}      [BNE.S (*)+8;JMP <label>]
  2275:             //JBNEQ.L <label>                                 |A|012346|-|--*--|-----|          |0110_011_000_000_110-0100111011111001-{address}      [BNE.S (*)+8;JMP <label>]
  2276:             //JBNNE.L <label>                                 |A|012346|-|--*--|-----|          |0110_011_000_000_110-0100111011111001-{address}      [BNE.S (*)+8;JMP <label>]
  2277:             //JBNNZ.L <label>                                 |A|012346|-|--*--|-----|          |0110_011_000_000_110-0100111011111001-{address}      [BNE.S (*)+8;JMP <label>]
  2278:             //JBNZ.L <label>                                  |A|012346|-|--*--|-----|          |0110_011_000_000_110-0100111011111001-{address}      [BNE.S (*)+8;JMP <label>]
  2279:             //JBNZE.L <label>                                 |A|012346|-|--*--|-----|          |0110_011_000_000_110-0100111011111001-{address}      [BNE.S (*)+8;JMP <label>]
  2280:             //JBZE.L <label>                                  |A|012346|-|--*--|-----|          |0110_011_000_000_110-0100111011111001-{address}      [BNE.S (*)+8;JMP <label>]
  2281:           case 0b0110_011_000:
  2282:             irpBnesw ();
  2283:             break irpSwitch;
  2284: 
  2285:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2286:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2287:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2288:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2289:             //BNE.S <label>                                   |-|012346|-|--*--|-----|          |0110_011_001_sss_sss
  2290:             //BNEQ.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_001_sss_sss [BNE.S <label>]
  2291:             //BNZ.S <label>                                   |A|012346|-|--*--|-----|          |0110_011_001_sss_sss [BNE.S <label>]
  2292:             //BNZE.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_001_sss_sss [BNE.S <label>]
  2293:             //JBNE.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_001_sss_sss [BNE.S <label>]
  2294:             //JBNEQ.S <label>                                 |A|012346|-|--*--|-----|          |0110_011_001_sss_sss [BNE.S <label>]
  2295:             //JBNZ.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_001_sss_sss [BNE.S <label>]
  2296:             //JBNZE.S <label>                                 |A|012346|-|--*--|-----|          |0110_011_001_sss_sss [BNE.S <label>]
  2297:           case 0b0110_011_001:
  2298:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2299:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2300:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2301:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2302:             //BNE.S <label>                                   |-|012346|-|--*--|-----|          |0110_011_010_sss_sss
  2303:             //BNEQ.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_010_sss_sss [BNE.S <label>]
  2304:             //BNZ.S <label>                                   |A|012346|-|--*--|-----|          |0110_011_010_sss_sss [BNE.S <label>]
  2305:             //BNZE.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_010_sss_sss [BNE.S <label>]
  2306:             //JBNE.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_010_sss_sss [BNE.S <label>]
  2307:             //JBNEQ.S <label>                                 |A|012346|-|--*--|-----|          |0110_011_010_sss_sss [BNE.S <label>]
  2308:             //JBNZ.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_010_sss_sss [BNE.S <label>]
  2309:             //JBNZE.S <label>                                 |A|012346|-|--*--|-----|          |0110_011_010_sss_sss [BNE.S <label>]
  2310:           case 0b0110_011_010:
  2311:             irpBnes ();
  2312:             break irpSwitch;
  2313: 
  2314:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2315:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2316:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2317:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2318:             //BNE.S <label>                                   |-|--2346|-|--*--|-----|          |0110_011_011_sss_sss (s is not equal to 63)
  2319:             //BNEQ.S <label>                                  |A|--2346|-|--*--|-----|          |0110_011_011_sss_sss (s is not equal to 63)  [BNE.S <label>]
  2320:             //BNZ.S <label>                                   |A|--2346|-|--*--|-----|          |0110_011_011_sss_sss (s is not equal to 63)  [BNE.S <label>]
  2321:             //BNZE.S <label>                                  |A|--2346|-|--*--|-----|          |0110_011_011_sss_sss (s is not equal to 63)  [BNE.S <label>]
  2322:             //JBNE.S <label>                                  |A|--2346|-|--*--|-----|          |0110_011_011_sss_sss (s is not equal to 63)  [BNE.S <label>]
  2323:             //JBNEQ.S <label>                                 |A|--2346|-|--*--|-----|          |0110_011_011_sss_sss (s is not equal to 63)  [BNE.S <label>]
  2324:             //JBNZ.S <label>                                  |A|--2346|-|--*--|-----|          |0110_011_011_sss_sss (s is not equal to 63)  [BNE.S <label>]
  2325:             //JBNZE.S <label>                                 |A|--2346|-|--*--|-----|          |0110_011_011_sss_sss (s is not equal to 63)  [BNE.S <label>]
  2326:             //BNE.L <label>                                   |-|--2346|-|--*--|-----|          |0110_011_011_111_111-{offset}
  2327:             //BNEQ.L <label>                                  |A|--2346|-|--*--|-----|          |0110_011_011_111_111-{offset}        [BNE.L <label>]
  2328:             //BNZ.L <label>                                   |A|--2346|-|--*--|-----|          |0110_011_011_111_111-{offset}        [BNE.L <label>]
  2329:             //BNZE.L <label>                                  |A|--2346|-|--*--|-----|          |0110_011_011_111_111-{offset}        [BNE.L <label>]
  2330:           case 0b0110_011_011:
  2331:             irpBnesl ();
  2332:             break irpSwitch;
  2333: 
  2334:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2335:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2336:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2337:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2338:             //BEQ.W <label>                                   |-|012346|-|--*--|-----|          |0110_011_100_000_000-{offset}
  2339:             //BNNE.W <label>                                  |A|012346|-|--*--|-----|          |0110_011_100_000_000-{offset}        [BEQ.W <label>]
  2340:             //BNNZ.W <label>                                  |A|012346|-|--*--|-----|          |0110_011_100_000_000-{offset}        [BEQ.W <label>]
  2341:             //BZE.W <label>                                   |A|012346|-|--*--|-----|          |0110_011_100_000_000-{offset}        [BEQ.W <label>]
  2342:             //JBEQ.W <label>                                  |A|012346|-|--*--|-----|          |0110_011_100_000_000-{offset}        [BEQ.W <label>]
  2343:             //JBNNE.W <label>                                 |A|012346|-|--*--|-----|          |0110_011_100_000_000-{offset}        [BEQ.W <label>]
  2344:             //JBNNZ.W <label>                                 |A|012346|-|--*--|-----|          |0110_011_100_000_000-{offset}        [BEQ.W <label>]
  2345:             //JBZE.W <label>                                  |A|012346|-|--*--|-----|          |0110_011_100_000_000-{offset}        [BEQ.W <label>]
  2346:             //BEQ.S <label>                                   |-|012346|-|--*--|-----|          |0110_011_100_sss_sss (s is not equal to 0)
  2347:             //BNNE.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_100_sss_sss (s is not equal to 0)   [BEQ.S <label>]
  2348:             //BNNZ.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_100_sss_sss (s is not equal to 0)   [BEQ.S <label>]
  2349:             //BZE.S <label>                                   |A|012346|-|--*--|-----|          |0110_011_100_sss_sss (s is not equal to 0)   [BEQ.S <label>]
  2350:             //JBEQ.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_100_sss_sss (s is not equal to 0)   [BEQ.S <label>]
  2351:             //JBNNE.S <label>                                 |A|012346|-|--*--|-----|          |0110_011_100_sss_sss (s is not equal to 0)   [BEQ.S <label>]
  2352:             //JBNNZ.S <label>                                 |A|012346|-|--*--|-----|          |0110_011_100_sss_sss (s is not equal to 0)   [BEQ.S <label>]
  2353:             //JBZE.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_100_sss_sss (s is not equal to 0)   [BEQ.S <label>]
  2354:             //JBNE.L <label>                                  |A|012346|-|--*--|-----|          |0110_011_100_000_110-0100111011111001-{address}      [BEQ.S (*)+8;JMP <label>]
  2355:           case 0b0110_011_100:
  2356:             irpBeqsw ();
  2357:             break irpSwitch;
  2358: 
  2359:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2360:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2361:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2362:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2363:             //BEQ.S <label>                                   |-|012346|-|--*--|-----|          |0110_011_101_sss_sss
  2364:             //BNNE.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_101_sss_sss [BEQ.S <label>]
  2365:             //BNNZ.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_101_sss_sss [BEQ.S <label>]
  2366:             //BZE.S <label>                                   |A|012346|-|--*--|-----|          |0110_011_101_sss_sss [BEQ.S <label>]
  2367:             //JBEQ.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_101_sss_sss [BEQ.S <label>]
  2368:             //JBNNE.S <label>                                 |A|012346|-|--*--|-----|          |0110_011_101_sss_sss [BEQ.S <label>]
  2369:             //JBNNZ.S <label>                                 |A|012346|-|--*--|-----|          |0110_011_101_sss_sss [BEQ.S <label>]
  2370:             //JBZE.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_101_sss_sss [BEQ.S <label>]
  2371:           case 0b0110_011_101:
  2372:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2373:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2374:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2375:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2376:             //BEQ.S <label>                                   |-|012346|-|--*--|-----|          |0110_011_110_sss_sss
  2377:             //BNNE.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_110_sss_sss [BEQ.S <label>]
  2378:             //BNNZ.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_110_sss_sss [BEQ.S <label>]
  2379:             //BZE.S <label>                                   |A|012346|-|--*--|-----|          |0110_011_110_sss_sss [BEQ.S <label>]
  2380:             //JBEQ.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_110_sss_sss [BEQ.S <label>]
  2381:             //JBNNE.S <label>                                 |A|012346|-|--*--|-----|          |0110_011_110_sss_sss [BEQ.S <label>]
  2382:             //JBNNZ.S <label>                                 |A|012346|-|--*--|-----|          |0110_011_110_sss_sss [BEQ.S <label>]
  2383:             //JBZE.S <label>                                  |A|012346|-|--*--|-----|          |0110_011_110_sss_sss [BEQ.S <label>]
  2384:           case 0b0110_011_110:
  2385:             irpBeqs ();
  2386:             break irpSwitch;
  2387: 
  2388:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2389:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2390:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2391:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2392:             //BEQ.S <label>                                   |-|--2346|-|--*--|-----|          |0110_011_111_sss_sss (s is not equal to 63)
  2393:             //BNNE.S <label>                                  |A|--2346|-|--*--|-----|          |0110_011_111_sss_sss (s is not equal to 63)  [BEQ.S <label>]
  2394:             //BNNZ.S <label>                                  |A|--2346|-|--*--|-----|          |0110_011_111_sss_sss (s is not equal to 63)  [BEQ.S <label>]
  2395:             //BZE.S <label>                                   |A|--2346|-|--*--|-----|          |0110_011_111_sss_sss (s is not equal to 63)  [BEQ.S <label>]
  2396:             //JBEQ.S <label>                                  |A|--2346|-|--*--|-----|          |0110_011_111_sss_sss (s is not equal to 63)  [BEQ.S <label>]
  2397:             //JBNNE.S <label>                                 |A|--2346|-|--*--|-----|          |0110_011_111_sss_sss (s is not equal to 63)  [BEQ.S <label>]
  2398:             //JBNNZ.S <label>                                 |A|--2346|-|--*--|-----|          |0110_011_111_sss_sss (s is not equal to 63)  [BEQ.S <label>]
  2399:             //JBZE.S <label>                                  |A|--2346|-|--*--|-----|          |0110_011_111_sss_sss (s is not equal to 63)  [BEQ.S <label>]
  2400:             //BEQ.L <label>                                   |-|--2346|-|--*--|-----|          |0110_011_111_111_111-{offset}
  2401:             //BNNE.L <label>                                  |A|--2346|-|--*--|-----|          |0110_011_111_111_111-{offset}        [BEQ.L <label>]
  2402:             //BNNZ.L <label>                                  |A|--2346|-|--*--|-----|          |0110_011_111_111_111-{offset}        [BEQ.L <label>]
  2403:             //BZE.L <label>                                   |A|--2346|-|--*--|-----|          |0110_011_111_111_111-{offset}        [BEQ.L <label>]
  2404:           case 0b0110_011_111:
  2405:             irpBeqsl ();
  2406:             break irpSwitch;
  2407: 
  2408:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2409:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2410:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2411:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2412:             //BVC.W <label>                                   |-|012346|-|---*-|-----|          |0110_100_000_000_000-{offset}
  2413:             //BNVS.W <label>                                  |A|012346|-|---*-|-----|          |0110_100_000_000_000-{offset}        [BVC.W <label>]
  2414:             //JBNVS.W <label>                                 |A|012346|-|---*-|-----|          |0110_100_000_000_000-{offset}        [BVC.W <label>]
  2415:             //JBVC.W <label>                                  |A|012346|-|---*-|-----|          |0110_100_000_000_000-{offset}        [BVC.W <label>]
  2416:             //BVC.S <label>                                   |-|012346|-|---*-|-----|          |0110_100_000_sss_sss (s is not equal to 0)
  2417:             //BNVS.S <label>                                  |A|012346|-|---*-|-----|          |0110_100_000_sss_sss (s is not equal to 0)   [BVC.S <label>]
  2418:             //JBNVS.S <label>                                 |A|012346|-|---*-|-----|          |0110_100_000_sss_sss (s is not equal to 0)   [BVC.S <label>]
  2419:             //JBVC.S <label>                                  |A|012346|-|---*-|-----|          |0110_100_000_sss_sss (s is not equal to 0)   [BVC.S <label>]
  2420:             //JBNVC.L <label>                                 |A|012346|-|---*-|-----|          |0110_100_000_000_110-0100111011111001-{address}      [BVC.S (*)+8;JMP <label>]
  2421:             //JBVS.L <label>                                  |A|012346|-|---*-|-----|          |0110_100_000_000_110-0100111011111001-{address}      [BVC.S (*)+8;JMP <label>]
  2422:           case 0b0110_100_000:
  2423:             irpBvcsw ();
  2424:             break irpSwitch;
  2425: 
  2426:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2427:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2428:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2429:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2430:             //BVC.S <label>                                   |-|012346|-|---*-|-----|          |0110_100_001_sss_sss
  2431:             //BNVS.S <label>                                  |A|012346|-|---*-|-----|          |0110_100_001_sss_sss [BVC.S <label>]
  2432:             //JBNVS.S <label>                                 |A|012346|-|---*-|-----|          |0110_100_001_sss_sss [BVC.S <label>]
  2433:             //JBVC.S <label>                                  |A|012346|-|---*-|-----|          |0110_100_001_sss_sss [BVC.S <label>]
  2434:           case 0b0110_100_001:
  2435:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2436:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2437:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2438:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2439:             //BVC.S <label>                                   |-|012346|-|---*-|-----|          |0110_100_010_sss_sss
  2440:             //BNVS.S <label>                                  |A|012346|-|---*-|-----|          |0110_100_010_sss_sss [BVC.S <label>]
  2441:             //JBNVS.S <label>                                 |A|012346|-|---*-|-----|          |0110_100_010_sss_sss [BVC.S <label>]
  2442:             //JBVC.S <label>                                  |A|012346|-|---*-|-----|          |0110_100_010_sss_sss [BVC.S <label>]
  2443:           case 0b0110_100_010:
  2444:             irpBvcs ();
  2445:             break irpSwitch;
  2446: 
  2447:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2448:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2449:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2450:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2451:             //BVC.S <label>                                   |-|--2346|-|---*-|-----|          |0110_100_011_sss_sss (s is not equal to 63)
  2452:             //BNVS.S <label>                                  |A|--2346|-|---*-|-----|          |0110_100_011_sss_sss (s is not equal to 63)  [BVC.S <label>]
  2453:             //JBNVS.S <label>                                 |A|--2346|-|---*-|-----|          |0110_100_011_sss_sss (s is not equal to 63)  [BVC.S <label>]
  2454:             //JBVC.S <label>                                  |A|--2346|-|---*-|-----|          |0110_100_011_sss_sss (s is not equal to 63)  [BVC.S <label>]
  2455:             //BVC.L <label>                                   |-|--2346|-|---*-|-----|          |0110_100_011_111_111-{offset}
  2456:             //BNVS.L <label>                                  |A|--2346|-|---*-|-----|          |0110_100_011_111_111-{offset}        [BVC.L <label>]
  2457:           case 0b0110_100_011:
  2458:             irpBvcsl ();
  2459:             break irpSwitch;
  2460: 
  2461:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2462:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2463:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2464:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2465:             //BVS.W <label>                                   |-|012346|-|---*-|-----|          |0110_100_100_000_000-{offset}
  2466:             //BNVC.W <label>                                  |A|012346|-|---*-|-----|          |0110_100_100_000_000-{offset}        [BVS.W <label>]
  2467:             //JBNVC.W <label>                                 |A|012346|-|---*-|-----|          |0110_100_100_000_000-{offset}        [BVS.W <label>]
  2468:             //JBVS.W <label>                                  |A|012346|-|---*-|-----|          |0110_100_100_000_000-{offset}        [BVS.W <label>]
  2469:             //BVS.S <label>                                   |-|012346|-|---*-|-----|          |0110_100_100_sss_sss (s is not equal to 0)
  2470:             //BNVC.S <label>                                  |A|012346|-|---*-|-----|          |0110_100_100_sss_sss (s is not equal to 0)   [BVS.S <label>]
  2471:             //JBNVC.S <label>                                 |A|012346|-|---*-|-----|          |0110_100_100_sss_sss (s is not equal to 0)   [BVS.S <label>]
  2472:             //JBVS.S <label>                                  |A|012346|-|---*-|-----|          |0110_100_100_sss_sss (s is not equal to 0)   [BVS.S <label>]
  2473:             //JBNVS.L <label>                                 |A|012346|-|---*-|-----|          |0110_100_100_000_110-0100111011111001-{address}      [BVS.S (*)+8;JMP <label>]
  2474:             //JBVC.L <label>                                  |A|012346|-|---*-|-----|          |0110_100_100_000_110-0100111011111001-{address}      [BVS.S (*)+8;JMP <label>]
  2475:           case 0b0110_100_100:
  2476:             irpBvssw ();
  2477:             break irpSwitch;
  2478: 
  2479:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2480:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2481:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2482:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2483:             //BVS.S <label>                                   |-|012346|-|---*-|-----|          |0110_100_101_sss_sss
  2484:             //BNVC.S <label>                                  |A|012346|-|---*-|-----|          |0110_100_101_sss_sss [BVS.S <label>]
  2485:             //JBNVC.S <label>                                 |A|012346|-|---*-|-----|          |0110_100_101_sss_sss [BVS.S <label>]
  2486:             //JBVS.S <label>                                  |A|012346|-|---*-|-----|          |0110_100_101_sss_sss [BVS.S <label>]
  2487:           case 0b0110_100_101:
  2488:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2489:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2490:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2491:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2492:             //BVS.S <label>                                   |-|012346|-|---*-|-----|          |0110_100_110_sss_sss
  2493:             //BNVC.S <label>                                  |A|012346|-|---*-|-----|          |0110_100_110_sss_sss [BVS.S <label>]
  2494:             //JBNVC.S <label>                                 |A|012346|-|---*-|-----|          |0110_100_110_sss_sss [BVS.S <label>]
  2495:             //JBVS.S <label>                                  |A|012346|-|---*-|-----|          |0110_100_110_sss_sss [BVS.S <label>]
  2496:           case 0b0110_100_110:
  2497:             irpBvss ();
  2498:             break irpSwitch;
  2499: 
  2500:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2501:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2502:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2503:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2504:             //BVS.S <label>                                   |-|--2346|-|---*-|-----|          |0110_100_111_sss_sss (s is not equal to 63)
  2505:             //BNVC.S <label>                                  |A|--2346|-|---*-|-----|          |0110_100_111_sss_sss (s is not equal to 63)  [BVS.S <label>]
  2506:             //JBNVC.S <label>                                 |A|--2346|-|---*-|-----|          |0110_100_111_sss_sss (s is not equal to 63)  [BVS.S <label>]
  2507:             //JBVS.S <label>                                  |A|--2346|-|---*-|-----|          |0110_100_111_sss_sss (s is not equal to 63)  [BVS.S <label>]
  2508:             //BVS.L <label>                                   |-|--2346|-|---*-|-----|          |0110_100_111_111_111-{offset}
  2509:             //BNVC.L <label>                                  |A|--2346|-|---*-|-----|          |0110_100_111_111_111-{offset}        [BVS.L <label>]
  2510:           case 0b0110_100_111:
  2511:             irpBvssl ();
  2512:             break irpSwitch;
  2513: 
  2514:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2515:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2516:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2517:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2518:             //BPL.W <label>                                   |-|012346|-|-*---|-----|          |0110_101_000_000_000-{offset}
  2519:             //BNMI.W <label>                                  |A|012346|-|-*---|-----|          |0110_101_000_000_000-{offset}        [BPL.W <label>]
  2520:             //JBNMI.W <label>                                 |A|012346|-|-*---|-----|          |0110_101_000_000_000-{offset}        [BPL.W <label>]
  2521:             //JBPL.W <label>                                  |A|012346|-|-*---|-----|          |0110_101_000_000_000-{offset}        [BPL.W <label>]
  2522:             //BPL.S <label>                                   |-|012346|-|-*---|-----|          |0110_101_000_sss_sss (s is not equal to 0)
  2523:             //BNMI.S <label>                                  |A|012346|-|-*---|-----|          |0110_101_000_sss_sss (s is not equal to 0)   [BPL.S <label>]
  2524:             //JBNMI.S <label>                                 |A|012346|-|-*---|-----|          |0110_101_000_sss_sss (s is not equal to 0)   [BPL.S <label>]
  2525:             //JBPL.S <label>                                  |A|012346|-|-*---|-----|          |0110_101_000_sss_sss (s is not equal to 0)   [BPL.S <label>]
  2526:             //JBMI.L <label>                                  |A|012346|-|-*---|-----|          |0110_101_000_000_110-0100111011111001-{address}      [BPL.S (*)+8;JMP <label>]
  2527:             //JBNPL.L <label>                                 |A|012346|-|-*---|-----|          |0110_101_000_000_110-0100111011111001-{address}      [BPL.S (*)+8;JMP <label>]
  2528:           case 0b0110_101_000:
  2529:             irpBplsw ();
  2530:             break irpSwitch;
  2531: 
  2532:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2533:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2534:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2535:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2536:             //BPL.S <label>                                   |-|012346|-|-*---|-----|          |0110_101_001_sss_sss
  2537:             //BNMI.S <label>                                  |A|012346|-|-*---|-----|          |0110_101_001_sss_sss [BPL.S <label>]
  2538:             //JBNMI.S <label>                                 |A|012346|-|-*---|-----|          |0110_101_001_sss_sss [BPL.S <label>]
  2539:             //JBPL.S <label>                                  |A|012346|-|-*---|-----|          |0110_101_001_sss_sss [BPL.S <label>]
  2540:           case 0b0110_101_001:
  2541:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2542:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2543:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2544:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2545:             //BPL.S <label>                                   |-|012346|-|-*---|-----|          |0110_101_010_sss_sss
  2546:             //BNMI.S <label>                                  |A|012346|-|-*---|-----|          |0110_101_010_sss_sss [BPL.S <label>]
  2547:             //JBNMI.S <label>                                 |A|012346|-|-*---|-----|          |0110_101_010_sss_sss [BPL.S <label>]
  2548:             //JBPL.S <label>                                  |A|012346|-|-*---|-----|          |0110_101_010_sss_sss [BPL.S <label>]
  2549:           case 0b0110_101_010:
  2550:             irpBpls ();
  2551:             break irpSwitch;
  2552: 
  2553:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2554:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2555:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2556:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2557:             //BPL.S <label>                                   |-|--2346|-|-*---|-----|          |0110_101_011_sss_sss (s is not equal to 63)
  2558:             //BNMI.S <label>                                  |A|--2346|-|-*---|-----|          |0110_101_011_sss_sss (s is not equal to 63)  [BPL.S <label>]
  2559:             //JBNMI.S <label>                                 |A|--2346|-|-*---|-----|          |0110_101_011_sss_sss (s is not equal to 63)  [BPL.S <label>]
  2560:             //JBPL.S <label>                                  |A|--2346|-|-*---|-----|          |0110_101_011_sss_sss (s is not equal to 63)  [BPL.S <label>]
  2561:             //BPL.L <label>                                   |-|--2346|-|-*---|-----|          |0110_101_011_111_111-{offset}
  2562:             //BNMI.L <label>                                  |A|--2346|-|-*---|-----|          |0110_101_011_111_111-{offset}        [BPL.L <label>]
  2563:           case 0b0110_101_011:
  2564:             irpBplsl ();
  2565:             break irpSwitch;
  2566: 
  2567:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2568:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2569:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2570:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2571:             //BMI.W <label>                                   |-|012346|-|-*---|-----|          |0110_101_100_000_000-{offset}
  2572:             //BNPL.W <label>                                  |A|012346|-|-*---|-----|          |0110_101_100_000_000-{offset}        [BMI.W <label>]
  2573:             //JBMI.W <label>                                  |A|012346|-|-*---|-----|          |0110_101_100_000_000-{offset}        [BMI.W <label>]
  2574:             //JBNPL.W <label>                                 |A|012346|-|-*---|-----|          |0110_101_100_000_000-{offset}        [BMI.W <label>]
  2575:             //BMI.S <label>                                   |-|012346|-|-*---|-----|          |0110_101_100_sss_sss (s is not equal to 0)
  2576:             //BNPL.S <label>                                  |A|012346|-|-*---|-----|          |0110_101_100_sss_sss (s is not equal to 0)   [BMI.S <label>]
  2577:             //JBMI.S <label>                                  |A|012346|-|-*---|-----|          |0110_101_100_sss_sss (s is not equal to 0)   [BMI.S <label>]
  2578:             //JBNPL.S <label>                                 |A|012346|-|-*---|-----|          |0110_101_100_sss_sss (s is not equal to 0)   [BMI.S <label>]
  2579:             //JBNMI.L <label>                                 |A|012346|-|-*---|-----|          |0110_101_100_000_110-0100111011111001-{address}      [BMI.S (*)+8;JMP <label>]
  2580:             //JBPL.L <label>                                  |A|012346|-|-*---|-----|          |0110_101_100_000_110-0100111011111001-{address}      [BMI.S (*)+8;JMP <label>]
  2581:           case 0b0110_101_100:
  2582:             irpBmisw ();
  2583:             break irpSwitch;
  2584: 
  2585:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2586:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2587:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2588:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2589:             //BMI.S <label>                                   |-|012346|-|-*---|-----|          |0110_101_101_sss_sss
  2590:             //BNPL.S <label>                                  |A|012346|-|-*---|-----|          |0110_101_101_sss_sss [BMI.S <label>]
  2591:             //JBMI.S <label>                                  |A|012346|-|-*---|-----|          |0110_101_101_sss_sss [BMI.S <label>]
  2592:             //JBNPL.S <label>                                 |A|012346|-|-*---|-----|          |0110_101_101_sss_sss [BMI.S <label>]
  2593:           case 0b0110_101_101:
  2594:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2595:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2596:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2597:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2598:             //BMI.S <label>                                   |-|012346|-|-*---|-----|          |0110_101_110_sss_sss
  2599:             //BNPL.S <label>                                  |A|012346|-|-*---|-----|          |0110_101_110_sss_sss [BMI.S <label>]
  2600:             //JBMI.S <label>                                  |A|012346|-|-*---|-----|          |0110_101_110_sss_sss [BMI.S <label>]
  2601:             //JBNPL.S <label>                                 |A|012346|-|-*---|-----|          |0110_101_110_sss_sss [BMI.S <label>]
  2602:           case 0b0110_101_110:
  2603:             irpBmis ();
  2604:             break irpSwitch;
  2605: 
  2606:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2607:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2608:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2609:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2610:             //BMI.S <label>                                   |-|--2346|-|-*---|-----|          |0110_101_111_sss_sss (s is not equal to 63)
  2611:             //BNPL.S <label>                                  |A|--2346|-|-*---|-----|          |0110_101_111_sss_sss (s is not equal to 63)  [BMI.S <label>]
  2612:             //JBMI.S <label>                                  |A|--2346|-|-*---|-----|          |0110_101_111_sss_sss (s is not equal to 63)  [BMI.S <label>]
  2613:             //JBNPL.S <label>                                 |A|--2346|-|-*---|-----|          |0110_101_111_sss_sss (s is not equal to 63)  [BMI.S <label>]
  2614:             //BMI.L <label>                                   |-|--2346|-|-*---|-----|          |0110_101_111_111_111-{offset}
  2615:             //BNPL.L <label>                                  |A|--2346|-|-*---|-----|          |0110_101_111_111_111-{offset}        [BMI.L <label>]
  2616:           case 0b0110_101_111:
  2617:             irpBmisl ();
  2618:             break irpSwitch;
  2619: 
  2620:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2621:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2622:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2623:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2624:             //BGE.W <label>                                   |-|012346|-|-*-*-|-----|          |0110_110_000_000_000-{offset}
  2625:             //BNLT.W <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_000_000_000-{offset}        [BGE.W <label>]
  2626:             //JBGE.W <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_000_000_000-{offset}        [BGE.W <label>]
  2627:             //JBNLT.W <label>                                 |A|012346|-|-*-*-|-----|          |0110_110_000_000_000-{offset}        [BGE.W <label>]
  2628:             //BGE.S <label>                                   |-|012346|-|-*-*-|-----|          |0110_110_000_sss_sss (s is not equal to 0)
  2629:             //BNLT.S <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_000_sss_sss (s is not equal to 0)   [BGE.S <label>]
  2630:             //JBGE.S <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_000_sss_sss (s is not equal to 0)   [BGE.S <label>]
  2631:             //JBNLT.S <label>                                 |A|012346|-|-*-*-|-----|          |0110_110_000_sss_sss (s is not equal to 0)   [BGE.S <label>]
  2632:             //JBLT.L <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_000_000_110-0100111011111001-{address}      [BGE.S (*)+8;JMP <label>]
  2633:             //JBNGE.L <label>                                 |A|012346|-|-*-*-|-----|          |0110_110_000_000_110-0100111011111001-{address}      [BGE.S (*)+8;JMP <label>]
  2634:           case 0b0110_110_000:
  2635:             irpBgesw ();
  2636:             break irpSwitch;
  2637: 
  2638:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2639:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2640:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2641:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2642:             //BGE.S <label>                                   |-|012346|-|-*-*-|-----|          |0110_110_001_sss_sss
  2643:             //BNLT.S <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_001_sss_sss [BGE.S <label>]
  2644:             //JBGE.S <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_001_sss_sss [BGE.S <label>]
  2645:             //JBNLT.S <label>                                 |A|012346|-|-*-*-|-----|          |0110_110_001_sss_sss [BGE.S <label>]
  2646:           case 0b0110_110_001:
  2647:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2648:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2649:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2650:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2651:             //BGE.S <label>                                   |-|012346|-|-*-*-|-----|          |0110_110_010_sss_sss
  2652:             //BNLT.S <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_010_sss_sss [BGE.S <label>]
  2653:             //JBGE.S <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_010_sss_sss [BGE.S <label>]
  2654:             //JBNLT.S <label>                                 |A|012346|-|-*-*-|-----|          |0110_110_010_sss_sss [BGE.S <label>]
  2655:           case 0b0110_110_010:
  2656:             irpBges ();
  2657:             break irpSwitch;
  2658: 
  2659:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2660:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2661:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2662:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2663:             //BGE.S <label>                                   |-|--2346|-|-*-*-|-----|          |0110_110_011_sss_sss (s is not equal to 63)
  2664:             //BNLT.S <label>                                  |A|--2346|-|-*-*-|-----|          |0110_110_011_sss_sss (s is not equal to 63)  [BGE.S <label>]
  2665:             //JBGE.S <label>                                  |A|--2346|-|-*-*-|-----|          |0110_110_011_sss_sss (s is not equal to 63)  [BGE.S <label>]
  2666:             //JBNLT.S <label>                                 |A|--2346|-|-*-*-|-----|          |0110_110_011_sss_sss (s is not equal to 63)  [BGE.S <label>]
  2667:             //BGE.L <label>                                   |-|--2346|-|-*-*-|-----|          |0110_110_011_111_111-{offset}
  2668:             //BNLT.L <label>                                  |A|--2346|-|-*-*-|-----|          |0110_110_011_111_111-{offset}        [BGE.L <label>]
  2669:           case 0b0110_110_011:
  2670:             irpBgesl ();
  2671:             break irpSwitch;
  2672: 
  2673:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2674:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2675:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2676:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2677:             //BLT.W <label>                                   |-|012346|-|-*-*-|-----|          |0110_110_100_000_000-{offset}
  2678:             //BNGE.W <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_100_000_000-{offset}        [BLT.W <label>]
  2679:             //JBLT.W <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_100_000_000-{offset}        [BLT.W <label>]
  2680:             //JBNGE.W <label>                                 |A|012346|-|-*-*-|-----|          |0110_110_100_000_000-{offset}        [BLT.W <label>]
  2681:             //BLT.S <label>                                   |-|012346|-|-*-*-|-----|          |0110_110_100_sss_sss (s is not equal to 0)
  2682:             //BNGE.S <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_100_sss_sss (s is not equal to 0)   [BLT.S <label>]
  2683:             //JBLT.S <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_100_sss_sss (s is not equal to 0)   [BLT.S <label>]
  2684:             //JBNGE.S <label>                                 |A|012346|-|-*-*-|-----|          |0110_110_100_sss_sss (s is not equal to 0)   [BLT.S <label>]
  2685:             //JBGE.L <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_100_000_110-0100111011111001-{address}      [BLT.S (*)+8;JMP <label>]
  2686:             //JBNLT.L <label>                                 |A|012346|-|-*-*-|-----|          |0110_110_100_000_110-0100111011111001-{address}      [BLT.S (*)+8;JMP <label>]
  2687:           case 0b0110_110_100:
  2688:             irpBltsw ();
  2689:             break irpSwitch;
  2690: 
  2691:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2692:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2693:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2694:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2695:             //BLT.S <label>                                   |-|012346|-|-*-*-|-----|          |0110_110_101_sss_sss
  2696:             //BNGE.S <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_101_sss_sss [BLT.S <label>]
  2697:             //JBLT.S <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_101_sss_sss [BLT.S <label>]
  2698:             //JBNGE.S <label>                                 |A|012346|-|-*-*-|-----|          |0110_110_101_sss_sss [BLT.S <label>]
  2699:           case 0b0110_110_101:
  2700:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2701:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2702:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2703:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2704:             //BLT.S <label>                                   |-|012346|-|-*-*-|-----|          |0110_110_110_sss_sss
  2705:             //BNGE.S <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_110_sss_sss [BLT.S <label>]
  2706:             //JBLT.S <label>                                  |A|012346|-|-*-*-|-----|          |0110_110_110_sss_sss [BLT.S <label>]
  2707:             //JBNGE.S <label>                                 |A|012346|-|-*-*-|-----|          |0110_110_110_sss_sss [BLT.S <label>]
  2708:           case 0b0110_110_110:
  2709:             irpBlts ();
  2710:             break irpSwitch;
  2711: 
  2712:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2713:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2714:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2715:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2716:             //BLT.S <label>                                   |-|--2346|-|-*-*-|-----|          |0110_110_111_sss_sss (s is not equal to 63)
  2717:             //BNGE.S <label>                                  |A|--2346|-|-*-*-|-----|          |0110_110_111_sss_sss (s is not equal to 63)  [BLT.S <label>]
  2718:             //JBLT.S <label>                                  |A|--2346|-|-*-*-|-----|          |0110_110_111_sss_sss (s is not equal to 63)  [BLT.S <label>]
  2719:             //JBNGE.S <label>                                 |A|--2346|-|-*-*-|-----|          |0110_110_111_sss_sss (s is not equal to 63)  [BLT.S <label>]
  2720:             //BLT.L <label>                                   |-|--2346|-|-*-*-|-----|          |0110_110_111_111_111-{offset}
  2721:             //BNGE.L <label>                                  |A|--2346|-|-*-*-|-----|          |0110_110_111_111_111-{offset}        [BLT.L <label>]
  2722:           case 0b0110_110_111:
  2723:             irpBltsl ();
  2724:             break irpSwitch;
  2725: 
  2726:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2727:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2728:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2729:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2730:             //BGT.W <label>                                   |-|012346|-|-***-|-----|          |0110_111_000_000_000-{offset}
  2731:             //BNLE.W <label>                                  |A|012346|-|-***-|-----|          |0110_111_000_000_000-{offset}        [BGT.W <label>]
  2732:             //JBGT.W <label>                                  |A|012346|-|-***-|-----|          |0110_111_000_000_000-{offset}        [BGT.W <label>]
  2733:             //JBNLE.W <label>                                 |A|012346|-|-***-|-----|          |0110_111_000_000_000-{offset}        [BGT.W <label>]
  2734:             //BGT.S <label>                                   |-|012346|-|-***-|-----|          |0110_111_000_sss_sss (s is not equal to 0)
  2735:             //BNLE.S <label>                                  |A|012346|-|-***-|-----|          |0110_111_000_sss_sss (s is not equal to 0)   [BGT.S <label>]
  2736:             //JBGT.S <label>                                  |A|012346|-|-***-|-----|          |0110_111_000_sss_sss (s is not equal to 0)   [BGT.S <label>]
  2737:             //JBNLE.S <label>                                 |A|012346|-|-***-|-----|          |0110_111_000_sss_sss (s is not equal to 0)   [BGT.S <label>]
  2738:             //JBLE.L <label>                                  |A|012346|-|-***-|-----|          |0110_111_000_000_110-0100111011111001-{address}      [BGT.S (*)+8;JMP <label>]
  2739:             //JBNGT.L <label>                                 |A|012346|-|-***-|-----|          |0110_111_000_000_110-0100111011111001-{address}      [BGT.S (*)+8;JMP <label>]
  2740:           case 0b0110_111_000:
  2741:             irpBgtsw ();
  2742:             break irpSwitch;
  2743: 
  2744:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2745:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2746:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2747:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2748:             //BGT.S <label>                                   |-|012346|-|-***-|-----|          |0110_111_001_sss_sss
  2749:             //BNLE.S <label>                                  |A|012346|-|-***-|-----|          |0110_111_001_sss_sss [BGT.S <label>]
  2750:             //JBGT.S <label>                                  |A|012346|-|-***-|-----|          |0110_111_001_sss_sss [BGT.S <label>]
  2751:             //JBNLE.S <label>                                 |A|012346|-|-***-|-----|          |0110_111_001_sss_sss [BGT.S <label>]
  2752:           case 0b0110_111_001:
  2753:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2754:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2755:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2756:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2757:             //BGT.S <label>                                   |-|012346|-|-***-|-----|          |0110_111_010_sss_sss
  2758:             //BNLE.S <label>                                  |A|012346|-|-***-|-----|          |0110_111_010_sss_sss [BGT.S <label>]
  2759:             //JBGT.S <label>                                  |A|012346|-|-***-|-----|          |0110_111_010_sss_sss [BGT.S <label>]
  2760:             //JBNLE.S <label>                                 |A|012346|-|-***-|-----|          |0110_111_010_sss_sss [BGT.S <label>]
  2761:           case 0b0110_111_010:
  2762:             irpBgts ();
  2763:             break irpSwitch;
  2764: 
  2765:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2766:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2767:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2768:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2769:             //BGT.S <label>                                   |-|--2346|-|-***-|-----|          |0110_111_011_sss_sss (s is not equal to 63)
  2770:             //BNLE.S <label>                                  |A|--2346|-|-***-|-----|          |0110_111_011_sss_sss (s is not equal to 63)  [BGT.S <label>]
  2771:             //JBGT.S <label>                                  |A|--2346|-|-***-|-----|          |0110_111_011_sss_sss (s is not equal to 63)  [BGT.S <label>]
  2772:             //JBNLE.S <label>                                 |A|--2346|-|-***-|-----|          |0110_111_011_sss_sss (s is not equal to 63)  [BGT.S <label>]
  2773:             //BGT.L <label>                                   |-|--2346|-|-***-|-----|          |0110_111_011_111_111-{offset}
  2774:             //BNLE.L <label>                                  |A|--2346|-|-***-|-----|          |0110_111_011_111_111-{offset}        [BGT.L <label>]
  2775:           case 0b0110_111_011:
  2776:             irpBgtsl ();
  2777:             break irpSwitch;
  2778: 
  2779:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2780:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2781:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2782:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2783:             //BLE.W <label>                                   |-|012346|-|-***-|-----|          |0110_111_100_000_000-{offset}
  2784:             //BNGT.W <label>                                  |A|012346|-|-***-|-----|          |0110_111_100_000_000-{offset}        [BLE.W <label>]
  2785:             //JBLE.W <label>                                  |A|012346|-|-***-|-----|          |0110_111_100_000_000-{offset}        [BLE.W <label>]
  2786:             //JBNGT.W <label>                                 |A|012346|-|-***-|-----|          |0110_111_100_000_000-{offset}        [BLE.W <label>]
  2787:             //BLE.S <label>                                   |-|012346|-|-***-|-----|          |0110_111_100_sss_sss (s is not equal to 0)
  2788:             //BNGT.S <label>                                  |A|012346|-|-***-|-----|          |0110_111_100_sss_sss (s is not equal to 0)   [BLE.S <label>]
  2789:             //JBLE.S <label>                                  |A|012346|-|-***-|-----|          |0110_111_100_sss_sss (s is not equal to 0)   [BLE.S <label>]
  2790:             //JBNGT.S <label>                                 |A|012346|-|-***-|-----|          |0110_111_100_sss_sss (s is not equal to 0)   [BLE.S <label>]
  2791:             //JBGT.L <label>                                  |A|012346|-|-***-|-----|          |0110_111_100_000_110-0100111011111001-{address}      [BLE.S (*)+8;JMP <label>]
  2792:             //JBNLE.L <label>                                 |A|012346|-|-***-|-----|          |0110_111_100_000_110-0100111011111001-{address}      [BLE.S (*)+8;JMP <label>]
  2793:           case 0b0110_111_100:
  2794:             irpBlesw ();
  2795:             break irpSwitch;
  2796: 
  2797:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2798:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2799:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2800:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2801:             //BLE.S <label>                                   |-|012346|-|-***-|-----|          |0110_111_101_sss_sss
  2802:             //BNGT.S <label>                                  |A|012346|-|-***-|-----|          |0110_111_101_sss_sss [BLE.S <label>]
  2803:             //JBLE.S <label>                                  |A|012346|-|-***-|-----|          |0110_111_101_sss_sss [BLE.S <label>]
  2804:             //JBNGT.S <label>                                 |A|012346|-|-***-|-----|          |0110_111_101_sss_sss [BLE.S <label>]
  2805:           case 0b0110_111_101:
  2806:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2807:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2808:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2809:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2810:             //BLE.S <label>                                   |-|012346|-|-***-|-----|          |0110_111_110_sss_sss
  2811:             //BNGT.S <label>                                  |A|012346|-|-***-|-----|          |0110_111_110_sss_sss [BLE.S <label>]
  2812:             //JBLE.S <label>                                  |A|012346|-|-***-|-----|          |0110_111_110_sss_sss [BLE.S <label>]
  2813:             //JBNGT.S <label>                                 |A|012346|-|-***-|-----|          |0110_111_110_sss_sss [BLE.S <label>]
  2814:           case 0b0110_111_110:
  2815:             irpBles ();
  2816:             break irpSwitch;
  2817: 
  2818:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2819:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2820:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2821:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2822:             //BLE.S <label>                                   |-|--2346|-|-***-|-----|          |0110_111_111_sss_sss (s is not equal to 63)
  2823:             //BNGT.S <label>                                  |A|--2346|-|-***-|-----|          |0110_111_111_sss_sss (s is not equal to 63)  [BLE.S <label>]
  2824:             //JBLE.S <label>                                  |A|--2346|-|-***-|-----|          |0110_111_111_sss_sss (s is not equal to 63)  [BLE.S <label>]
  2825:             //JBNGT.S <label>                                 |A|--2346|-|-***-|-----|          |0110_111_111_sss_sss (s is not equal to 63)  [BLE.S <label>]
  2826:             //BLE.L <label>                                   |-|--2346|-|-***-|-----|          |0110_111_111_111_111-{offset}
  2827:             //BNGT.L <label>                                  |A|--2346|-|-***-|-----|          |0110_111_111_111_111-{offset}        [BLE.L <label>]
  2828:           case 0b0110_111_111:
  2829:             irpBlesl ();
  2830:             break irpSwitch;
  2831: 
  2832:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2833:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2834:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2835:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2836:             //IOCS <name>                                     |A|012346|-|UUUUU|UUUUU|          |0111_000_0dd_ddd_ddd-0100111001001111        [MOVEQ.L #<data>,D0;TRAP #15]
  2837:             //MOVEQ.L #<data>,Dq                              |-|012346|-|-UUUU|-**00|          |0111_qqq_0dd_ddd_ddd
  2838:           case 0b0111_000_000:
  2839:           case 0b0111_000_001:
  2840:           case 0b0111_000_010:
  2841:           case 0b0111_000_011:
  2842:           case 0b0111_001_000:
  2843:           case 0b0111_001_001:
  2844:           case 0b0111_001_010:
  2845:           case 0b0111_001_011:
  2846:           case 0b0111_010_000:
  2847:           case 0b0111_010_001:
  2848:           case 0b0111_010_010:
  2849:           case 0b0111_010_011:
  2850:           case 0b0111_011_000:
  2851:           case 0b0111_011_001:
  2852:           case 0b0111_011_010:
  2853:           case 0b0111_011_011:
  2854:           case 0b0111_100_000:
  2855:           case 0b0111_100_001:
  2856:           case 0b0111_100_010:
  2857:           case 0b0111_100_011:
  2858:           case 0b0111_101_000:
  2859:           case 0b0111_101_001:
  2860:           case 0b0111_101_010:
  2861:           case 0b0111_101_011:
  2862:           case 0b0111_110_000:
  2863:           case 0b0111_110_001:
  2864:           case 0b0111_110_010:
  2865:           case 0b0111_110_011:
  2866:           case 0b0111_111_000:
  2867:           case 0b0111_111_001:
  2868:           case 0b0111_111_010:
  2869:           case 0b0111_111_011:
  2870:             irpMoveq ();
  2871:             break irpSwitch;
  2872: 
  2873:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2874:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2875:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2876:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2877:             //MVS.B <ea>,Dq                                   |-|------|-|-UUUU|-**00|D M+-WXZPI|0111_qqq_100_mmm_rrr (ISA_B)
  2878:           case 0b0111_000_100:
  2879:           case 0b0111_001_100:
  2880:           case 0b0111_010_100:
  2881:           case 0b0111_011_100:
  2882:           case 0b0111_100_100:
  2883:           case 0b0111_101_100:
  2884:           case 0b0111_110_100:
  2885:           case 0b0111_111_100:
  2886:             irpMvsByte ();
  2887:             break irpSwitch;
  2888: 
  2889:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2890:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2891:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2892:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2893:             //MVS.W <ea>,Dq                                   |-|------|-|-UUUU|-**00|D M+-WXZPI|0111_qqq_101_mmm_rrr (ISA_B)
  2894:           case 0b0111_000_101:
  2895:           case 0b0111_001_101:
  2896:           case 0b0111_010_101:
  2897:           case 0b0111_011_101:
  2898:           case 0b0111_100_101:
  2899:           case 0b0111_101_101:
  2900:           case 0b0111_110_101:
  2901:           case 0b0111_111_101:
  2902:             irpMvsWord ();
  2903:             break irpSwitch;
  2904: 
  2905:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2906:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2907:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2908:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2909:             //MVZ.B <ea>,Dq                                   |-|------|-|-UUUU|-0*00|D M+-WXZPI|0111_qqq_110_mmm_rrr (ISA_B)
  2910:           case 0b0111_000_110:
  2911:           case 0b0111_001_110:
  2912:           case 0b0111_010_110:
  2913:           case 0b0111_011_110:
  2914:           case 0b0111_100_110:
  2915:           case 0b0111_101_110:
  2916:           case 0b0111_110_110:
  2917:           case 0b0111_111_110:
  2918:             irpMvzByte ();
  2919:             break irpSwitch;
  2920: 
  2921:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2922:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2923:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2924:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2925:             //MVZ.W <ea>,Dq                                   |-|------|-|-UUUU|-0*00|D M+-WXZPI|0111_qqq_111_mmm_rrr (ISA_B)
  2926:           case 0b0111_000_111:
  2927:           case 0b0111_001_111:
  2928:           case 0b0111_010_111:
  2929:           case 0b0111_011_111:
  2930:           case 0b0111_100_111:
  2931:           case 0b0111_101_111:
  2932:           case 0b0111_110_111:
  2933:           case 0b0111_111_111:
  2934:             irpMvzWord ();
  2935:             break irpSwitch;
  2936: 
  2937:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2938:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2939:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2940:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2941:             //OR.B <ea>,Dq                                    |-|012346|-|-UUUU|-**00|D M+-WXZPI|1000_qqq_000_mmm_rrr
  2942:           case 0b1000_000_000:
  2943:           case 0b1000_001_000:
  2944:           case 0b1000_010_000:
  2945:           case 0b1000_011_000:
  2946:           case 0b1000_100_000:
  2947:           case 0b1000_101_000:
  2948:           case 0b1000_110_000:
  2949:           case 0b1000_111_000:
  2950:             irpOrToRegByte ();
  2951:             break irpSwitch;
  2952: 
  2953:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2954:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2955:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2956:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2957:             //OR.W <ea>,Dq                                    |-|012346|-|-UUUU|-**00|D M+-WXZPI|1000_qqq_001_mmm_rrr
  2958:           case 0b1000_000_001:
  2959:           case 0b1000_001_001:
  2960:           case 0b1000_010_001:
  2961:           case 0b1000_011_001:
  2962:           case 0b1000_100_001:
  2963:           case 0b1000_101_001:
  2964:           case 0b1000_110_001:
  2965:           case 0b1000_111_001:
  2966:             irpOrToRegWord ();
  2967:             break irpSwitch;
  2968: 
  2969:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2970:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2971:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2972:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2973:             //OR.L <ea>,Dq                                    |-|012346|-|-UUUU|-**00|D M+-WXZPI|1000_qqq_010_mmm_rrr
  2974:           case 0b1000_000_010:
  2975:           case 0b1000_001_010:
  2976:           case 0b1000_010_010:
  2977:           case 0b1000_011_010:
  2978:           case 0b1000_100_010:
  2979:           case 0b1000_101_010:
  2980:           case 0b1000_110_010:
  2981:           case 0b1000_111_010:
  2982:             irpOrToRegLong ();
  2983:             break irpSwitch;
  2984: 
  2985:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2986:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  2987:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  2988:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  2989:             //DIVU.W <ea>,Dq                                  |-|012346|-|-UUUU|-***0|D M+-WXZPI|1000_qqq_011_mmm_rrr
  2990:           case 0b1000_000_011:
  2991:           case 0b1000_001_011:
  2992:           case 0b1000_010_011:
  2993:           case 0b1000_011_011:
  2994:           case 0b1000_100_011:
  2995:           case 0b1000_101_011:
  2996:           case 0b1000_110_011:
  2997:           case 0b1000_111_011:
  2998:             irpDivuWord ();
  2999:             break irpSwitch;
  3000: 
  3001:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3002:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3003:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3004:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3005:             //SBCD.B Dr,Dq                                    |-|012346|-|UUUUU|*U*U*|          |1000_qqq_100_000_rrr
  3006:             //SBCD.B -(Ar),-(Aq)                              |-|012346|-|UUUUU|*U*U*|          |1000_qqq_100_001_rrr
  3007:             //OR.B Dq,<ea>                                    |-|012346|-|-UUUU|-**00|  M+-WXZ  |1000_qqq_100_mmm_rrr
  3008:           case 0b1000_000_100:
  3009:           case 0b1000_001_100:
  3010:           case 0b1000_010_100:
  3011:           case 0b1000_011_100:
  3012:           case 0b1000_100_100:
  3013:           case 0b1000_101_100:
  3014:           case 0b1000_110_100:
  3015:           case 0b1000_111_100:
  3016:             irpOrToMemByte ();
  3017:             break irpSwitch;
  3018: 
  3019:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3020:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3021:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3022:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3023:             //PACK Dr,Dq,#<data>                              |-|--2346|-|-----|-----|          |1000_qqq_101_000_rrr-{data}
  3024:             //PACK -(Ar),-(Aq),#<data>                        |-|--2346|-|-----|-----|          |1000_qqq_101_001_rrr-{data}
  3025:             //OR.W Dq,<ea>                                    |-|012346|-|-UUUU|-**00|  M+-WXZ  |1000_qqq_101_mmm_rrr
  3026:           case 0b1000_000_101:
  3027:           case 0b1000_001_101:
  3028:           case 0b1000_010_101:
  3029:           case 0b1000_011_101:
  3030:           case 0b1000_100_101:
  3031:           case 0b1000_101_101:
  3032:           case 0b1000_110_101:
  3033:           case 0b1000_111_101:
  3034:             irpOrToMemWord ();
  3035:             break irpSwitch;
  3036: 
  3037:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3038:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3039:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3040:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3041:             //UNPK Dr,Dq,#<data>                              |-|--2346|-|-----|-----|          |1000_qqq_110_000_rrr-{data}
  3042:             //UNPK -(Ar),-(Aq),#<data>                        |-|--2346|-|-----|-----|          |1000_qqq_110_001_rrr-{data}
  3043:             //OR.L Dq,<ea>                                    |-|012346|-|-UUUU|-**00|  M+-WXZ  |1000_qqq_110_mmm_rrr
  3044:           case 0b1000_000_110:
  3045:           case 0b1000_001_110:
  3046:           case 0b1000_010_110:
  3047:           case 0b1000_011_110:
  3048:           case 0b1000_100_110:
  3049:           case 0b1000_101_110:
  3050:           case 0b1000_110_110:
  3051:           case 0b1000_111_110:
  3052:             irpOrToMemLong ();
  3053:             break irpSwitch;
  3054: 
  3055:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3056:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3057:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3058:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3059:             //DIVS.W <ea>,Dq                                  |-|012346|-|-UUUU|-***0|D M+-WXZPI|1000_qqq_111_mmm_rrr
  3060:           case 0b1000_000_111:
  3061:           case 0b1000_001_111:
  3062:           case 0b1000_010_111:
  3063:           case 0b1000_011_111:
  3064:           case 0b1000_100_111:
  3065:           case 0b1000_101_111:
  3066:           case 0b1000_110_111:
  3067:           case 0b1000_111_111:
  3068:             irpDivsWord ();
  3069:             break irpSwitch;
  3070: 
  3071:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3072:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3073:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3074:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3075:             //SUB.B <ea>,Dq                                   |-|012346|-|UUUUU|*****|D M+-WXZPI|1001_qqq_000_mmm_rrr
  3076:           case 0b1001_000_000:
  3077:           case 0b1001_001_000:
  3078:           case 0b1001_010_000:
  3079:           case 0b1001_011_000:
  3080:           case 0b1001_100_000:
  3081:           case 0b1001_101_000:
  3082:           case 0b1001_110_000:
  3083:           case 0b1001_111_000:
  3084:             irpSubToRegByte ();
  3085:             break irpSwitch;
  3086: 
  3087:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3088:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3089:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3090:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3091:             //SUB.W <ea>,Dq                                   |-|012346|-|UUUUU|*****|DAM+-WXZPI|1001_qqq_001_mmm_rrr
  3092:           case 0b1001_000_001:
  3093:           case 0b1001_001_001:
  3094:           case 0b1001_010_001:
  3095:           case 0b1001_011_001:
  3096:           case 0b1001_100_001:
  3097:           case 0b1001_101_001:
  3098:           case 0b1001_110_001:
  3099:           case 0b1001_111_001:
  3100:             irpSubToRegWord ();
  3101:             break irpSwitch;
  3102: 
  3103:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3104:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3105:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3106:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3107:             //SUB.L <ea>,Dq                                   |-|012346|-|UUUUU|*****|DAM+-WXZPI|1001_qqq_010_mmm_rrr
  3108:           case 0b1001_000_010:
  3109:           case 0b1001_001_010:
  3110:           case 0b1001_010_010:
  3111:           case 0b1001_011_010:
  3112:           case 0b1001_100_010:
  3113:           case 0b1001_101_010:
  3114:           case 0b1001_110_010:
  3115:           case 0b1001_111_010:
  3116:             irpSubToRegLong ();
  3117:             break irpSwitch;
  3118: 
  3119:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3120:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3121:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3122:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3123:             //SUBA.W <ea>,Aq                                  |-|012346|-|-----|-----|DAM+-WXZPI|1001_qqq_011_mmm_rrr
  3124:             //SUB.W <ea>,Aq                                   |A|012346|-|-----|-----|DAM+-WXZPI|1001_qqq_011_mmm_rrr [SUBA.W <ea>,Aq]
  3125:             //CLR.W Ar                                        |A|012346|-|-----|-----| A        |1001_rrr_011_001_rrr [SUBA.W Ar,Ar]
  3126:           case 0b1001_000_011:
  3127:           case 0b1001_001_011:
  3128:           case 0b1001_010_011:
  3129:           case 0b1001_011_011:
  3130:           case 0b1001_100_011:
  3131:           case 0b1001_101_011:
  3132:           case 0b1001_110_011:
  3133:           case 0b1001_111_011:
  3134:             irpSubaWord ();
  3135:             break irpSwitch;
  3136: 
  3137:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3138:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3139:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3140:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3141:             //SUBX.B Dr,Dq                                    |-|012346|-|*UUUU|*****|          |1001_qqq_100_000_rrr
  3142:             //SUBX.B -(Ar),-(Aq)                              |-|012346|-|*UUUU|*****|          |1001_qqq_100_001_rrr
  3143:             //SUB.B Dq,<ea>                                   |-|012346|-|UUUUU|*****|  M+-WXZ  |1001_qqq_100_mmm_rrr
  3144:           case 0b1001_000_100:
  3145:           case 0b1001_001_100:
  3146:           case 0b1001_010_100:
  3147:           case 0b1001_011_100:
  3148:           case 0b1001_100_100:
  3149:           case 0b1001_101_100:
  3150:           case 0b1001_110_100:
  3151:           case 0b1001_111_100:
  3152:             irpSubToMemByte ();
  3153:             break irpSwitch;
  3154: 
  3155:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3156:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3157:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3158:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3159:             //SUBX.W Dr,Dq                                    |-|012346|-|*UUUU|*****|          |1001_qqq_101_000_rrr
  3160:             //SUBX.W -(Ar),-(Aq)                              |-|012346|-|*UUUU|*****|          |1001_qqq_101_001_rrr
  3161:             //SUB.W Dq,<ea>                                   |-|012346|-|UUUUU|*****|  M+-WXZ  |1001_qqq_101_mmm_rrr
  3162:           case 0b1001_000_101:
  3163:           case 0b1001_001_101:
  3164:           case 0b1001_010_101:
  3165:           case 0b1001_011_101:
  3166:           case 0b1001_100_101:
  3167:           case 0b1001_101_101:
  3168:           case 0b1001_110_101:
  3169:           case 0b1001_111_101:
  3170:             irpSubToMemWord ();
  3171:             break irpSwitch;
  3172: 
  3173:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3174:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3175:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3176:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3177:             //SUBX.L Dr,Dq                                    |-|012346|-|*UUUU|*****|          |1001_qqq_110_000_rrr
  3178:             //SUBX.L -(Ar),-(Aq)                              |-|012346|-|*UUUU|*****|          |1001_qqq_110_001_rrr
  3179:             //SUB.L Dq,<ea>                                   |-|012346|-|UUUUU|*****|  M+-WXZ  |1001_qqq_110_mmm_rrr
  3180:           case 0b1001_000_110:
  3181:           case 0b1001_001_110:
  3182:           case 0b1001_010_110:
  3183:           case 0b1001_011_110:
  3184:           case 0b1001_100_110:
  3185:           case 0b1001_101_110:
  3186:           case 0b1001_110_110:
  3187:           case 0b1001_111_110:
  3188:             irpSubToMemLong ();
  3189:             break irpSwitch;
  3190: 
  3191:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3192:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3193:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3194:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3195:             //SUBA.L <ea>,Aq                                  |-|012346|-|-----|-----|DAM+-WXZPI|1001_qqq_111_mmm_rrr
  3196:             //SUB.L <ea>,Aq                                   |A|012346|-|-----|-----|DAM+-WXZPI|1001_qqq_111_mmm_rrr [SUBA.L <ea>,Aq]
  3197:             //CLR.L Ar                                        |A|012346|-|-----|-----| A        |1001_rrr_111_001_rrr [SUBA.L Ar,Ar]
  3198:           case 0b1001_000_111:
  3199:           case 0b1001_001_111:
  3200:           case 0b1001_010_111:
  3201:           case 0b1001_011_111:
  3202:           case 0b1001_100_111:
  3203:           case 0b1001_101_111:
  3204:           case 0b1001_110_111:
  3205:           case 0b1001_111_111:
  3206:             irpSubaLong ();
  3207:             break irpSwitch;
  3208: 
  3209:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3210:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3211:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3212:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3213:             //SXCALL <name>                                   |A|012346|-|UUUUU|*****|          |1010_0dd_ddd_ddd_ddd [ALINE #<data>]
  3214:           case 0b1010_000_000:
  3215:           case 0b1010_000_001:
  3216:           case 0b1010_000_010:
  3217:           case 0b1010_000_011:
  3218:           case 0b1010_000_100:
  3219:           case 0b1010_000_101:
  3220:           case 0b1010_000_110:
  3221:           case 0b1010_000_111:
  3222:           case 0b1010_001_000:
  3223:           case 0b1010_001_001:
  3224:           case 0b1010_001_010:
  3225:           case 0b1010_001_011:
  3226:           case 0b1010_001_100:
  3227:           case 0b1010_001_101:
  3228:           case 0b1010_001_110:
  3229:           case 0b1010_001_111:
  3230:           case 0b1010_010_000:
  3231:           case 0b1010_010_001:
  3232:           case 0b1010_010_010:
  3233:           case 0b1010_010_011:
  3234:           case 0b1010_010_100:
  3235:           case 0b1010_010_101:
  3236:           case 0b1010_010_110:
  3237:           case 0b1010_010_111:
  3238:           case 0b1010_011_000:
  3239:           case 0b1010_011_001:
  3240:           case 0b1010_011_010:
  3241:           case 0b1010_011_011:
  3242:           case 0b1010_011_100:
  3243:           case 0b1010_011_101:
  3244:           case 0b1010_011_110:
  3245:           case 0b1010_011_111:
  3246:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3247:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3248:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3249:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3250:             //ALINE #<data>                                   |-|012346|-|UUUUU|*****|          |1010_ddd_ddd_ddd_ddd (line 1010 emulator)
  3251:           case 0b1010_100_000:
  3252:           case 0b1010_100_001:
  3253:           case 0b1010_100_010:
  3254:           case 0b1010_100_011:
  3255:           case 0b1010_100_100:
  3256:           case 0b1010_100_101:
  3257:           case 0b1010_100_110:
  3258:           case 0b1010_100_111:
  3259:           case 0b1010_101_000:
  3260:           case 0b1010_101_001:
  3261:           case 0b1010_101_010:
  3262:           case 0b1010_101_011:
  3263:           case 0b1010_101_100:
  3264:           case 0b1010_101_101:
  3265:           case 0b1010_101_110:
  3266:           case 0b1010_101_111:
  3267:           case 0b1010_110_000:
  3268:           case 0b1010_110_001:
  3269:           case 0b1010_110_010:
  3270:           case 0b1010_110_011:
  3271:           case 0b1010_110_100:
  3272:           case 0b1010_110_101:
  3273:           case 0b1010_110_110:
  3274:           case 0b1010_110_111:
  3275:           case 0b1010_111_000:
  3276:           case 0b1010_111_001:
  3277:           case 0b1010_111_010:
  3278:           case 0b1010_111_011:
  3279:           case 0b1010_111_100:
  3280:           case 0b1010_111_101:
  3281:           case 0b1010_111_110:
  3282:           case 0b1010_111_111:
  3283:             irpAline ();
  3284:             break irpSwitch;
  3285: 
  3286:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3287:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3288:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3289:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3290:             //CMP.B <ea>,Dq                                   |-|012346|-|-UUUU|-****|D M+-WXZPI|1011_qqq_000_mmm_rrr
  3291:           case 0b1011_000_000:
  3292:           case 0b1011_001_000:
  3293:           case 0b1011_010_000:
  3294:           case 0b1011_011_000:
  3295:           case 0b1011_100_000:
  3296:           case 0b1011_101_000:
  3297:           case 0b1011_110_000:
  3298:           case 0b1011_111_000:
  3299:             irpCmpByte ();
  3300:             break irpSwitch;
  3301: 
  3302:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3303:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3304:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3305:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3306:             //CMP.W <ea>,Dq                                   |-|012346|-|-UUUU|-****|DAM+-WXZPI|1011_qqq_001_mmm_rrr
  3307:           case 0b1011_000_001:
  3308:           case 0b1011_001_001:
  3309:           case 0b1011_010_001:
  3310:           case 0b1011_011_001:
  3311:           case 0b1011_100_001:
  3312:           case 0b1011_101_001:
  3313:           case 0b1011_110_001:
  3314:           case 0b1011_111_001:
  3315:             irpCmpWord ();
  3316:             break irpSwitch;
  3317: 
  3318:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3319:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3320:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3321:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3322:             //CMP.L <ea>,Dq                                   |-|012346|-|-UUUU|-****|DAM+-WXZPI|1011_qqq_010_mmm_rrr
  3323:           case 0b1011_000_010:
  3324:           case 0b1011_001_010:
  3325:           case 0b1011_010_010:
  3326:           case 0b1011_011_010:
  3327:           case 0b1011_100_010:
  3328:           case 0b1011_101_010:
  3329:           case 0b1011_110_010:
  3330:           case 0b1011_111_010:
  3331:             irpCmpLong ();
  3332:             break irpSwitch;
  3333: 
  3334:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3335:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3336:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3337:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3338:             //CMPA.W <ea>,Aq                                  |-|012346|-|-UUUU|-****|DAM+-WXZPI|1011_qqq_011_mmm_rrr
  3339:             //CMP.W <ea>,Aq                                   |A|012346|-|-UUUU|-****|DAM+-WXZPI|1011_qqq_011_mmm_rrr [CMPA.W <ea>,Aq]
  3340:           case 0b1011_000_011:
  3341:           case 0b1011_001_011:
  3342:           case 0b1011_010_011:
  3343:           case 0b1011_011_011:
  3344:           case 0b1011_100_011:
  3345:           case 0b1011_101_011:
  3346:           case 0b1011_110_011:
  3347:           case 0b1011_111_011:
  3348:             irpCmpaWord ();
  3349:             break irpSwitch;
  3350: 
  3351:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3352:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3353:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3354:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3355:             //EOR.B Dq,<ea>                                   |-|012346|-|-UUUU|-**00|D M+-WXZ  |1011_qqq_100_mmm_rrr
  3356:             //CMPM.B (Ar)+,(Aq)+                              |-|012346|-|-UUUU|-****|          |1011_qqq_100_001_rrr
  3357:           case 0b1011_000_100:
  3358:           case 0b1011_001_100:
  3359:           case 0b1011_010_100:
  3360:           case 0b1011_011_100:
  3361:           case 0b1011_100_100:
  3362:           case 0b1011_101_100:
  3363:           case 0b1011_110_100:
  3364:           case 0b1011_111_100:
  3365:             irpEorByte ();
  3366:             break irpSwitch;
  3367: 
  3368:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3369:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3370:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3371:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3372:             //EOR.W Dq,<ea>                                   |-|012346|-|-UUUU|-**00|D M+-WXZ  |1011_qqq_101_mmm_rrr
  3373:             //CMPM.W (Ar)+,(Aq)+                              |-|012346|-|-UUUU|-****|          |1011_qqq_101_001_rrr
  3374:           case 0b1011_000_101:
  3375:           case 0b1011_001_101:
  3376:           case 0b1011_010_101:
  3377:           case 0b1011_011_101:
  3378:           case 0b1011_100_101:
  3379:           case 0b1011_101_101:
  3380:           case 0b1011_110_101:
  3381:           case 0b1011_111_101:
  3382:             irpEorWord ();
  3383:             break irpSwitch;
  3384: 
  3385:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3386:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3387:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3388:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3389:             //EOR.L Dq,<ea>                                   |-|012346|-|-UUUU|-**00|D M+-WXZ  |1011_qqq_110_mmm_rrr
  3390:             //CMPM.L (Ar)+,(Aq)+                              |-|012346|-|-UUUU|-****|          |1011_qqq_110_001_rrr
  3391:           case 0b1011_000_110:
  3392:           case 0b1011_001_110:
  3393:           case 0b1011_010_110:
  3394:           case 0b1011_011_110:
  3395:           case 0b1011_100_110:
  3396:           case 0b1011_101_110:
  3397:           case 0b1011_110_110:
  3398:           case 0b1011_111_110:
  3399:             irpEorLong ();
  3400:             break irpSwitch;
  3401: 
  3402:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3403:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3404:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3405:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3406:             //CMPA.L <ea>,Aq                                  |-|012346|-|-UUUU|-****|DAM+-WXZPI|1011_qqq_111_mmm_rrr
  3407:             //CMP.L <ea>,Aq                                   |A|012346|-|-UUUU|-****|DAM+-WXZPI|1011_qqq_111_mmm_rrr [CMPA.L <ea>,Aq]
  3408:           case 0b1011_000_111:
  3409:           case 0b1011_001_111:
  3410:           case 0b1011_010_111:
  3411:           case 0b1011_011_111:
  3412:           case 0b1011_100_111:
  3413:           case 0b1011_101_111:
  3414:           case 0b1011_110_111:
  3415:           case 0b1011_111_111:
  3416:             irpCmpaLong ();
  3417:             break irpSwitch;
  3418: 
  3419:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3420:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3421:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3422:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3423:             //AND.B <ea>,Dq                                   |-|012346|-|-UUUU|-**00|D M+-WXZPI|1100_qqq_000_mmm_rrr
  3424:           case 0b1100_000_000:
  3425:           case 0b1100_001_000:
  3426:           case 0b1100_010_000:
  3427:           case 0b1100_011_000:
  3428:           case 0b1100_100_000:
  3429:           case 0b1100_101_000:
  3430:           case 0b1100_110_000:
  3431:           case 0b1100_111_000:
  3432:             irpAndToRegByte ();
  3433:             break irpSwitch;
  3434: 
  3435:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3436:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3437:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3438:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3439:             //AND.W <ea>,Dq                                   |-|012346|-|-UUUU|-**00|D M+-WXZPI|1100_qqq_001_mmm_rrr
  3440:           case 0b1100_000_001:
  3441:           case 0b1100_001_001:
  3442:           case 0b1100_010_001:
  3443:           case 0b1100_011_001:
  3444:           case 0b1100_100_001:
  3445:           case 0b1100_101_001:
  3446:           case 0b1100_110_001:
  3447:           case 0b1100_111_001:
  3448:             irpAndToRegWord ();
  3449:             break irpSwitch;
  3450: 
  3451:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3452:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3453:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3454:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3455:             //AND.L <ea>,Dq                                   |-|012346|-|-UUUU|-**00|D M+-WXZPI|1100_qqq_010_mmm_rrr
  3456:           case 0b1100_000_010:
  3457:           case 0b1100_001_010:
  3458:           case 0b1100_010_010:
  3459:           case 0b1100_011_010:
  3460:           case 0b1100_100_010:
  3461:           case 0b1100_101_010:
  3462:           case 0b1100_110_010:
  3463:           case 0b1100_111_010:
  3464:             irpAndToRegLong ();
  3465:             break irpSwitch;
  3466: 
  3467:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3468:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3469:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3470:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3471:             //MULU.W <ea>,Dq                                  |-|012346|-|-UUUU|-***0|D M+-WXZPI|1100_qqq_011_mmm_rrr
  3472:           case 0b1100_000_011:
  3473:           case 0b1100_001_011:
  3474:           case 0b1100_010_011:
  3475:           case 0b1100_011_011:
  3476:           case 0b1100_100_011:
  3477:           case 0b1100_101_011:
  3478:           case 0b1100_110_011:
  3479:           case 0b1100_111_011:
  3480:             irpMuluWord ();
  3481:             break irpSwitch;
  3482: 
  3483:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3484:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3485:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3486:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3487:             //ABCD.B Dr,Dq                                    |-|012346|-|UUUUU|*U*U*|          |1100_qqq_100_000_rrr
  3488:             //ABCD.B -(Ar),-(Aq)                              |-|012346|-|UUUUU|*U*U*|          |1100_qqq_100_001_rrr
  3489:             //AND.B Dq,<ea>                                   |-|012346|-|-UUUU|-**00|  M+-WXZ  |1100_qqq_100_mmm_rrr
  3490:           case 0b1100_000_100:
  3491:           case 0b1100_001_100:
  3492:           case 0b1100_010_100:
  3493:           case 0b1100_011_100:
  3494:           case 0b1100_100_100:
  3495:           case 0b1100_101_100:
  3496:           case 0b1100_110_100:
  3497:           case 0b1100_111_100:
  3498:             irpAndToMemByte ();
  3499:             break irpSwitch;
  3500: 
  3501:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3502:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3503:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3504:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3505:             //EXG.L Dq,Dr                                     |-|012346|-|-----|-----|          |1100_qqq_101_000_rrr
  3506:             //EXG.L Aq,Ar                                     |-|012346|-|-----|-----|          |1100_qqq_101_001_rrr
  3507:             //AND.W Dq,<ea>                                   |-|012346|-|-UUUU|-**00|  M+-WXZ  |1100_qqq_101_mmm_rrr
  3508:           case 0b1100_000_101:
  3509:           case 0b1100_001_101:
  3510:           case 0b1100_010_101:
  3511:           case 0b1100_011_101:
  3512:           case 0b1100_100_101:
  3513:           case 0b1100_101_101:
  3514:           case 0b1100_110_101:
  3515:           case 0b1100_111_101:
  3516:             irpAndToMemWord ();
  3517:             break irpSwitch;
  3518: 
  3519:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3520:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3521:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3522:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3523:             //EXG.L Dq,Ar                                     |-|012346|-|-----|-----|          |1100_qqq_110_001_rrr
  3524:             //AND.L Dq,<ea>                                   |-|012346|-|-UUUU|-**00|  M+-WXZ  |1100_qqq_110_mmm_rrr
  3525:           case 0b1100_000_110:
  3526:           case 0b1100_001_110:
  3527:           case 0b1100_010_110:
  3528:           case 0b1100_011_110:
  3529:           case 0b1100_100_110:
  3530:           case 0b1100_101_110:
  3531:           case 0b1100_110_110:
  3532:           case 0b1100_111_110:
  3533:             irpAndToMemLong ();
  3534:             break irpSwitch;
  3535: 
  3536:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3537:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3538:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3539:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3540:             //MULS.W <ea>,Dq                                  |-|012346|-|-UUUU|-***0|D M+-WXZPI|1100_qqq_111_mmm_rrr
  3541:           case 0b1100_000_111:
  3542:           case 0b1100_001_111:
  3543:           case 0b1100_010_111:
  3544:           case 0b1100_011_111:
  3545:           case 0b1100_100_111:
  3546:           case 0b1100_101_111:
  3547:           case 0b1100_110_111:
  3548:           case 0b1100_111_111:
  3549:             irpMulsWord ();
  3550:             break irpSwitch;
  3551: 
  3552:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3553:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3554:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3555:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3556:             //ADD.B <ea>,Dq                                   |-|012346|-|UUUUU|*****|D M+-WXZPI|1101_qqq_000_mmm_rrr
  3557:           case 0b1101_000_000:
  3558:           case 0b1101_001_000:
  3559:           case 0b1101_010_000:
  3560:           case 0b1101_011_000:
  3561:           case 0b1101_100_000:
  3562:           case 0b1101_101_000:
  3563:           case 0b1101_110_000:
  3564:           case 0b1101_111_000:
  3565:             irpAddToRegByte ();
  3566:             break irpSwitch;
  3567: 
  3568:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3569:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3570:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3571:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3572:             //ADD.W <ea>,Dq                                   |-|012346|-|UUUUU|*****|DAM+-WXZPI|1101_qqq_001_mmm_rrr
  3573:           case 0b1101_000_001:
  3574:           case 0b1101_001_001:
  3575:           case 0b1101_010_001:
  3576:           case 0b1101_011_001:
  3577:           case 0b1101_100_001:
  3578:           case 0b1101_101_001:
  3579:           case 0b1101_110_001:
  3580:           case 0b1101_111_001:
  3581:             irpAddToRegWord ();
  3582:             break irpSwitch;
  3583: 
  3584:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3585:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3586:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3587:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3588:             //ADD.L <ea>,Dq                                   |-|012346|-|UUUUU|*****|DAM+-WXZPI|1101_qqq_010_mmm_rrr
  3589:           case 0b1101_000_010:
  3590:           case 0b1101_001_010:
  3591:           case 0b1101_010_010:
  3592:           case 0b1101_011_010:
  3593:           case 0b1101_100_010:
  3594:           case 0b1101_101_010:
  3595:           case 0b1101_110_010:
  3596:           case 0b1101_111_010:
  3597:             irpAddToRegLong ();
  3598:             break irpSwitch;
  3599: 
  3600:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3601:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3602:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3603:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3604:             //ADDA.W <ea>,Aq                                  |-|012346|-|-----|-----|DAM+-WXZPI|1101_qqq_011_mmm_rrr
  3605:             //ADD.W <ea>,Aq                                   |A|012346|-|-----|-----|DAM+-WXZPI|1101_qqq_011_mmm_rrr [ADDA.W <ea>,Aq]
  3606:           case 0b1101_000_011:
  3607:           case 0b1101_001_011:
  3608:           case 0b1101_010_011:
  3609:           case 0b1101_011_011:
  3610:           case 0b1101_100_011:
  3611:           case 0b1101_101_011:
  3612:           case 0b1101_110_011:
  3613:           case 0b1101_111_011:
  3614:             irpAddaWord ();
  3615:             break irpSwitch;
  3616: 
  3617:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3618:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3619:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3620:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3621:             //ADDX.B Dr,Dq                                    |-|012346|-|*UUUU|*****|          |1101_qqq_100_000_rrr
  3622:             //ADDX.B -(Ar),-(Aq)                              |-|012346|-|*UUUU|*****|          |1101_qqq_100_001_rrr
  3623:             //ADD.B Dq,<ea>                                   |-|012346|-|UUUUU|*****|  M+-WXZ  |1101_qqq_100_mmm_rrr
  3624:           case 0b1101_000_100:
  3625:           case 0b1101_001_100:
  3626:           case 0b1101_010_100:
  3627:           case 0b1101_011_100:
  3628:           case 0b1101_100_100:
  3629:           case 0b1101_101_100:
  3630:           case 0b1101_110_100:
  3631:           case 0b1101_111_100:
  3632:             irpAddToMemByte ();
  3633:             break irpSwitch;
  3634: 
  3635:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3636:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3637:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3638:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3639:             //ADDX.W Dr,Dq                                    |-|012346|-|*UUUU|*****|          |1101_qqq_101_000_rrr
  3640:             //ADDX.W -(Ar),-(Aq)                              |-|012346|-|*UUUU|*****|          |1101_qqq_101_001_rrr
  3641:             //ADD.W Dq,<ea>                                   |-|012346|-|UUUUU|*****|  M+-WXZ  |1101_qqq_101_mmm_rrr
  3642:           case 0b1101_000_101:
  3643:           case 0b1101_001_101:
  3644:           case 0b1101_010_101:
  3645:           case 0b1101_011_101:
  3646:           case 0b1101_100_101:
  3647:           case 0b1101_101_101:
  3648:           case 0b1101_110_101:
  3649:           case 0b1101_111_101:
  3650:             irpAddToMemWord ();
  3651:             break irpSwitch;
  3652: 
  3653:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3654:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3655:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3656:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3657:             //ADDX.L Dr,Dq                                    |-|012346|-|*UUUU|*****|          |1101_qqq_110_000_rrr
  3658:             //ADDX.L -(Ar),-(Aq)                              |-|012346|-|*UUUU|*****|          |1101_qqq_110_001_rrr
  3659:             //ADD.L Dq,<ea>                                   |-|012346|-|UUUUU|*****|  M+-WXZ  |1101_qqq_110_mmm_rrr
  3660:           case 0b1101_000_110:
  3661:           case 0b1101_001_110:
  3662:           case 0b1101_010_110:
  3663:           case 0b1101_011_110:
  3664:           case 0b1101_100_110:
  3665:           case 0b1101_101_110:
  3666:           case 0b1101_110_110:
  3667:           case 0b1101_111_110:
  3668:             irpAddToMemLong ();
  3669:             break irpSwitch;
  3670: 
  3671:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3672:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3673:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3674:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3675:             //ADDA.L <ea>,Aq                                  |-|012346|-|-----|-----|DAM+-WXZPI|1101_qqq_111_mmm_rrr
  3676:             //ADD.L <ea>,Aq                                   |A|012346|-|-----|-----|DAM+-WXZPI|1101_qqq_111_mmm_rrr [ADDA.L <ea>,Aq]
  3677:           case 0b1101_000_111:
  3678:           case 0b1101_001_111:
  3679:           case 0b1101_010_111:
  3680:           case 0b1101_011_111:
  3681:           case 0b1101_100_111:
  3682:           case 0b1101_101_111:
  3683:           case 0b1101_110_111:
  3684:           case 0b1101_111_111:
  3685:             irpAddaLong ();
  3686:             break irpSwitch;
  3687: 
  3688:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3689:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3690:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3691:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3692:             //ASR.B #<data>,Dr                                |-|012346|-|UUUUU|***0*|          |1110_qqq_000_000_rrr
  3693:             //LSR.B #<data>,Dr                                |-|012346|-|UUUUU|***0*|          |1110_qqq_000_001_rrr
  3694:             //ROXR.B #<data>,Dr                               |-|012346|-|*UUUU|***0*|          |1110_qqq_000_010_rrr
  3695:             //ROR.B #<data>,Dr                                |-|012346|-|-UUUU|-**0*|          |1110_qqq_000_011_rrr
  3696:             //ASR.B Dq,Dr                                     |-|012346|-|UUUUU|***0*|          |1110_qqq_000_100_rrr
  3697:             //LSR.B Dq,Dr                                     |-|012346|-|UUUUU|***0*|          |1110_qqq_000_101_rrr
  3698:             //ROXR.B Dq,Dr                                    |-|012346|-|*UUUU|***0*|          |1110_qqq_000_110_rrr
  3699:             //ROR.B Dq,Dr                                     |-|012346|-|-UUUU|-**0*|          |1110_qqq_000_111_rrr
  3700:             //ASR.B Dr                                        |A|012346|-|UUUUU|***0*|          |1110_001_000_000_rrr [ASR.B #1,Dr]
  3701:             //LSR.B Dr                                        |A|012346|-|UUUUU|***0*|          |1110_001_000_001_rrr [LSR.B #1,Dr]
  3702:             //ROXR.B Dr                                       |A|012346|-|*UUUU|***0*|          |1110_001_000_010_rrr [ROXR.B #1,Dr]
  3703:             //ROR.B Dr                                        |A|012346|-|-UUUU|-**0*|          |1110_001_000_011_rrr [ROR.B #1,Dr]
  3704:           case 0b1110_000_000:
  3705:           case 0b1110_001_000:
  3706:           case 0b1110_010_000:
  3707:           case 0b1110_011_000:
  3708:           case 0b1110_100_000:
  3709:           case 0b1110_101_000:
  3710:           case 0b1110_110_000:
  3711:           case 0b1110_111_000:
  3712:             irpXxrToRegByte ();
  3713:             break irpSwitch;
  3714: 
  3715:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3716:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3717:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3718:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3719:             //ASR.W #<data>,Dr                                |-|012346|-|UUUUU|***0*|          |1110_qqq_001_000_rrr
  3720:             //LSR.W #<data>,Dr                                |-|012346|-|UUUUU|***0*|          |1110_qqq_001_001_rrr
  3721:             //ROXR.W #<data>,Dr                               |-|012346|-|*UUUU|***0*|          |1110_qqq_001_010_rrr
  3722:             //ROR.W #<data>,Dr                                |-|012346|-|-UUUU|-**0*|          |1110_qqq_001_011_rrr
  3723:             //ASR.W Dq,Dr                                     |-|012346|-|UUUUU|***0*|          |1110_qqq_001_100_rrr
  3724:             //LSR.W Dq,Dr                                     |-|012346|-|UUUUU|***0*|          |1110_qqq_001_101_rrr
  3725:             //ROXR.W Dq,Dr                                    |-|012346|-|*UUUU|***0*|          |1110_qqq_001_110_rrr
  3726:             //ROR.W Dq,Dr                                     |-|012346|-|-UUUU|-**0*|          |1110_qqq_001_111_rrr
  3727:             //ASR.W Dr                                        |A|012346|-|UUUUU|***0*|          |1110_001_001_000_rrr [ASR.W #1,Dr]
  3728:             //LSR.W Dr                                        |A|012346|-|UUUUU|***0*|          |1110_001_001_001_rrr [LSR.W #1,Dr]
  3729:             //ROXR.W Dr                                       |A|012346|-|*UUUU|***0*|          |1110_001_001_010_rrr [ROXR.W #1,Dr]
  3730:             //ROR.W Dr                                        |A|012346|-|-UUUU|-**0*|          |1110_001_001_011_rrr [ROR.W #1,Dr]
  3731:           case 0b1110_000_001:
  3732:           case 0b1110_001_001:
  3733:           case 0b1110_010_001:
  3734:           case 0b1110_011_001:
  3735:           case 0b1110_100_001:
  3736:           case 0b1110_101_001:
  3737:           case 0b1110_110_001:
  3738:           case 0b1110_111_001:
  3739:             irpXxrToRegWord ();
  3740:             break irpSwitch;
  3741: 
  3742:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3743:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3744:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3745:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3746:             //ASR.L #<data>,Dr                                |-|012346|-|UUUUU|***0*|          |1110_qqq_010_000_rrr
  3747:             //LSR.L #<data>,Dr                                |-|012346|-|UUUUU|***0*|          |1110_qqq_010_001_rrr
  3748:             //ROXR.L #<data>,Dr                               |-|012346|-|*UUUU|***0*|          |1110_qqq_010_010_rrr
  3749:             //ROR.L #<data>,Dr                                |-|012346|-|-UUUU|-**0*|          |1110_qqq_010_011_rrr
  3750:             //ASR.L Dq,Dr                                     |-|012346|-|UUUUU|***0*|          |1110_qqq_010_100_rrr
  3751:             //LSR.L Dq,Dr                                     |-|012346|-|UUUUU|***0*|          |1110_qqq_010_101_rrr
  3752:             //ROXR.L Dq,Dr                                    |-|012346|-|*UUUU|***0*|          |1110_qqq_010_110_rrr
  3753:             //ROR.L Dq,Dr                                     |-|012346|-|-UUUU|-**0*|          |1110_qqq_010_111_rrr
  3754:             //ASR.L Dr                                        |A|012346|-|UUUUU|***0*|          |1110_001_010_000_rrr [ASR.L #1,Dr]
  3755:             //LSR.L Dr                                        |A|012346|-|UUUUU|***0*|          |1110_001_010_001_rrr [LSR.L #1,Dr]
  3756:             //ROXR.L Dr                                       |A|012346|-|*UUUU|***0*|          |1110_001_010_010_rrr [ROXR.L #1,Dr]
  3757:             //ROR.L Dr                                        |A|012346|-|-UUUU|-**0*|          |1110_001_010_011_rrr [ROR.L #1,Dr]
  3758:           case 0b1110_000_010:
  3759:           case 0b1110_001_010:
  3760:           case 0b1110_010_010:
  3761:           case 0b1110_011_010:
  3762:           case 0b1110_100_010:
  3763:           case 0b1110_101_010:
  3764:           case 0b1110_110_010:
  3765:           case 0b1110_111_010:
  3766:             irpXxrToRegLong ();
  3767:             break irpSwitch;
  3768: 
  3769:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3770:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3771:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3772:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3773:             //ASR.W <ea>                                      |-|012346|-|UUUUU|***0*|  M+-WXZ  |1110_000_011_mmm_rrr
  3774:           case 0b1110_000_011:
  3775:             irpAsrToMem ();
  3776:             break irpSwitch;
  3777: 
  3778:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3779:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3780:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3781:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3782:             //ASL.B #<data>,Dr                                |-|012346|-|UUUUU|*****|          |1110_qqq_100_000_rrr
  3783:             //LSL.B #<data>,Dr                                |-|012346|-|UUUUU|***0*|          |1110_qqq_100_001_rrr
  3784:             //ROXL.B #<data>,Dr                               |-|012346|-|*UUUU|***0*|          |1110_qqq_100_010_rrr
  3785:             //ROL.B #<data>,Dr                                |-|012346|-|-UUUU|-**0*|          |1110_qqq_100_011_rrr
  3786:             //ASL.B Dq,Dr                                     |-|012346|-|UUUUU|*****|          |1110_qqq_100_100_rrr
  3787:             //LSL.B Dq,Dr                                     |-|012346|-|UUUUU|***0*|          |1110_qqq_100_101_rrr
  3788:             //ROXL.B Dq,Dr                                    |-|012346|-|*UUUU|***0*|          |1110_qqq_100_110_rrr
  3789:             //ROL.B Dq,Dr                                     |-|012346|-|-UUUU|-**0*|          |1110_qqq_100_111_rrr
  3790:             //ASL.B Dr                                        |A|012346|-|UUUUU|*****|          |1110_001_100_000_rrr [ASL.B #1,Dr]
  3791:             //LSL.B Dr                                        |A|012346|-|UUUUU|***0*|          |1110_001_100_001_rrr [LSL.B #1,Dr]
  3792:             //ROXL.B Dr                                       |A|012346|-|*UUUU|***0*|          |1110_001_100_010_rrr [ROXL.B #1,Dr]
  3793:             //ROL.B Dr                                        |A|012346|-|-UUUU|-**0*|          |1110_001_100_011_rrr [ROL.B #1,Dr]
  3794:           case 0b1110_000_100:
  3795:           case 0b1110_001_100:
  3796:           case 0b1110_010_100:
  3797:           case 0b1110_011_100:
  3798:           case 0b1110_100_100:
  3799:           case 0b1110_101_100:
  3800:           case 0b1110_110_100:
  3801:           case 0b1110_111_100:
  3802:             irpXxlToRegByte ();
  3803:             break irpSwitch;
  3804: 
  3805:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3806:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3807:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3808:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3809:             //ASL.W #<data>,Dr                                |-|012346|-|UUUUU|*****|          |1110_qqq_101_000_rrr
  3810:             //LSL.W #<data>,Dr                                |-|012346|-|UUUUU|***0*|          |1110_qqq_101_001_rrr
  3811:             //ROXL.W #<data>,Dr                               |-|012346|-|*UUUU|***0*|          |1110_qqq_101_010_rrr
  3812:             //ROL.W #<data>,Dr                                |-|012346|-|-UUUU|-**0*|          |1110_qqq_101_011_rrr
  3813:             //ASL.W Dq,Dr                                     |-|012346|-|UUUUU|*****|          |1110_qqq_101_100_rrr
  3814:             //LSL.W Dq,Dr                                     |-|012346|-|UUUUU|***0*|          |1110_qqq_101_101_rrr
  3815:             //ROXL.W Dq,Dr                                    |-|012346|-|*UUUU|***0*|          |1110_qqq_101_110_rrr
  3816:             //ROL.W Dq,Dr                                     |-|012346|-|-UUUU|-**0*|          |1110_qqq_101_111_rrr
  3817:             //ASL.W Dr                                        |A|012346|-|UUUUU|*****|          |1110_001_101_000_rrr [ASL.W #1,Dr]
  3818:             //LSL.W Dr                                        |A|012346|-|UUUUU|***0*|          |1110_001_101_001_rrr [LSL.W #1,Dr]
  3819:             //ROXL.W Dr                                       |A|012346|-|*UUUU|***0*|          |1110_001_101_010_rrr [ROXL.W #1,Dr]
  3820:             //ROL.W Dr                                        |A|012346|-|-UUUU|-**0*|          |1110_001_101_011_rrr [ROL.W #1,Dr]
  3821:           case 0b1110_000_101:
  3822:           case 0b1110_001_101:
  3823:           case 0b1110_010_101:
  3824:           case 0b1110_011_101:
  3825:           case 0b1110_100_101:
  3826:           case 0b1110_101_101:
  3827:           case 0b1110_110_101:
  3828:           case 0b1110_111_101:
  3829:             irpXxlToRegWord ();
  3830:             break irpSwitch;
  3831: 
  3832:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3833:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3834:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3835:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3836:             //ASL.L #<data>,Dr                                |-|012346|-|UUUUU|*****|          |1110_qqq_110_000_rrr
  3837:             //LSL.L #<data>,Dr                                |-|012346|-|UUUUU|***0*|          |1110_qqq_110_001_rrr
  3838:             //ROXL.L #<data>,Dr                               |-|012346|-|*UUUU|***0*|          |1110_qqq_110_010_rrr
  3839:             //ROL.L #<data>,Dr                                |-|012346|-|-UUUU|-**0*|          |1110_qqq_110_011_rrr
  3840:             //ASL.L Dq,Dr                                     |-|012346|-|UUUUU|*****|          |1110_qqq_110_100_rrr
  3841:             //LSL.L Dq,Dr                                     |-|012346|-|UUUUU|***0*|          |1110_qqq_110_101_rrr
  3842:             //ROXL.L Dq,Dr                                    |-|012346|-|*UUUU|***0*|          |1110_qqq_110_110_rrr
  3843:             //ROL.L Dq,Dr                                     |-|012346|-|-UUUU|-**0*|          |1110_qqq_110_111_rrr
  3844:             //ASL.L Dr                                        |A|012346|-|UUUUU|*****|          |1110_001_110_000_rrr [ASL.L #1,Dr]
  3845:             //LSL.L Dr                                        |A|012346|-|UUUUU|***0*|          |1110_001_110_001_rrr [LSL.L #1,Dr]
  3846:             //ROXL.L Dr                                       |A|012346|-|*UUUU|***0*|          |1110_001_110_010_rrr [ROXL.L #1,Dr]
  3847:             //ROL.L Dr                                        |A|012346|-|-UUUU|-**0*|          |1110_001_110_011_rrr [ROL.L #1,Dr]
  3848:           case 0b1110_000_110:
  3849:           case 0b1110_001_110:
  3850:           case 0b1110_010_110:
  3851:           case 0b1110_011_110:
  3852:           case 0b1110_100_110:
  3853:           case 0b1110_101_110:
  3854:           case 0b1110_110_110:
  3855:           case 0b1110_111_110:
  3856:             irpXxlToRegLong ();
  3857:             break irpSwitch;
  3858: 
  3859:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3860:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3861:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3862:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3863:             //ASL.W <ea>                                      |-|012346|-|UUUUU|*****|  M+-WXZ  |1110_000_111_mmm_rrr
  3864:           case 0b1110_000_111:
  3865:             irpAslToMem ();
  3866:             break irpSwitch;
  3867: 
  3868:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3869:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3870:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3871:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3872:             //LSR.W <ea>                                      |-|012346|-|UUUUU|*0*0*|  M+-WXZ  |1110_001_011_mmm_rrr
  3873:           case 0b1110_001_011:
  3874:             irpLsrToMem ();
  3875:             break irpSwitch;
  3876: 
  3877:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3878:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3879:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3880:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3881:             //LSL.W <ea>                                      |-|012346|-|UUUUU|***0*|  M+-WXZ  |1110_001_111_mmm_rrr
  3882:           case 0b1110_001_111:
  3883:             irpLslToMem ();
  3884:             break irpSwitch;
  3885: 
  3886:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3887:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3888:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3889:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3890:             //ROXR.W <ea>                                     |-|012346|-|*UUUU|***0*|  M+-WXZ  |1110_010_011_mmm_rrr
  3891:           case 0b1110_010_011:
  3892:             irpRoxrToMem ();
  3893:             break irpSwitch;
  3894: 
  3895:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3896:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3897:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3898:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3899:             //ROXL.W <ea>                                     |-|012346|-|*UUUU|***0*|  M+-WXZ  |1110_010_111_mmm_rrr
  3900:           case 0b1110_010_111:
  3901:             irpRoxlToMem ();
  3902:             break irpSwitch;
  3903: 
  3904:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3905:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3906:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3907:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3908:             //ROR.W <ea>                                      |-|012346|-|-UUUU|-**0*|  M+-WXZ  |1110_011_011_mmm_rrr
  3909:           case 0b1110_011_011:
  3910:             irpRorToMem ();
  3911:             break irpSwitch;
  3912: 
  3913:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3914:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3915:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3916:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3917:             //ROL.W <ea>                                      |-|012346|-|-UUUU|-**0*|  M+-WXZ  |1110_011_111_mmm_rrr
  3918:           case 0b1110_011_111:
  3919:             irpRolToMem ();
  3920:             break irpSwitch;
  3921: 
  3922:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3923:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3924:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3925:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3926:             //BFTST <ea>{#o:#w}                               |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_100_011_mmm_rrr-00000ooooo0wwwww
  3927:             //BFTST <ea>{#o:Dw}                               |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_100_011_mmm_rrr-00000ooooo100www
  3928:             //BFTST <ea>{Do:#w}                               |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_100_011_mmm_rrr-0000100ooo0wwwww
  3929:             //BFTST <ea>{Do:Dw}                               |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_100_011_mmm_rrr-0000100ooo100www
  3930:           case 0b1110_100_011:
  3931:             irpBftst ();
  3932:             break irpSwitch;
  3933: 
  3934:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3935:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3936:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3937:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3938:             //BFEXTU <ea>{#o:#w},Dn                           |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_100_111_mmm_rrr-0nnn0ooooo0wwwww
  3939:             //BFEXTU <ea>{#o:Dw},Dn                           |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_100_111_mmm_rrr-0nnn0ooooo100www
  3940:             //BFEXTU <ea>{Do:#w},Dn                           |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_100_111_mmm_rrr-0nnn100ooo0wwwww
  3941:             //BFEXTU <ea>{Do:Dw},Dn                           |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_100_111_mmm_rrr-0nnn100ooo100www
  3942:           case 0b1110_100_111:
  3943:             irpBfextu ();
  3944:             break irpSwitch;
  3945: 
  3946:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3947:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3948:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3949:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3950:             //BFCHG <ea>{#o:#w}                               |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_101_011_mmm_rrr-00000ooooo0wwwww
  3951:             //BFCHG <ea>{#o:Dw}                               |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_101_011_mmm_rrr-00000ooooo100www
  3952:             //BFCHG <ea>{Do:#w}                               |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_101_011_mmm_rrr-0000100ooo0wwwww
  3953:             //BFCHG <ea>{Do:Dw}                               |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_101_011_mmm_rrr-0000100ooo100www
  3954:           case 0b1110_101_011:
  3955:             irpBfchg ();
  3956:             break irpSwitch;
  3957: 
  3958:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3959:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3960:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3961:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3962:             //BFEXTS <ea>{#o:#w},Dn                           |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_101_111_mmm_rrr-0nnn0ooooo0wwwww
  3963:             //BFEXTS <ea>{#o:Dw},Dn                           |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_101_111_mmm_rrr-0nnn0ooooo100www
  3964:             //BFEXTS <ea>{Do:#w},Dn                           |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_101_111_mmm_rrr-0nnn100ooo0wwwww
  3965:             //BFEXTS <ea>{Do:Dw},Dn                           |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_101_111_mmm_rrr-0nnn100ooo100www
  3966:           case 0b1110_101_111:
  3967:             irpBfexts ();
  3968:             break irpSwitch;
  3969: 
  3970:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3971:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3972:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3973:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3974:             //BFCLR <ea>{#o:#w}                               |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_110_011_mmm_rrr-00000ooooo0wwwww
  3975:             //BFCLR <ea>{#o:Dw}                               |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_110_011_mmm_rrr-00000ooooo100www
  3976:             //BFCLR <ea>{Do:#w}                               |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_110_011_mmm_rrr-0000100ooo0wwwww
  3977:             //BFCLR <ea>{Do:Dw}                               |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_110_011_mmm_rrr-0000100ooo100www
  3978:           case 0b1110_110_011:
  3979:             irpBfclr ();
  3980:             break irpSwitch;
  3981: 
  3982:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3983:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3984:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3985:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3986:             //BFFFO <ea>{#o:#w},Dn                            |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_110_111_mmm_rrr-0nnn0ooooo0wwwww
  3987:             //BFFFO <ea>{#o:Dw},Dn                            |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_110_111_mmm_rrr-0nnn0ooooo100www
  3988:             //BFFFO <ea>{Do:#w},Dn                            |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_110_111_mmm_rrr-0nnn100ooo0wwwww
  3989:             //BFFFO <ea>{Do:Dw},Dn                            |-|--2346|-|-UUUU|-**00|D M  WXZP |1110_110_111_mmm_rrr-0nnn100ooo100www
  3990:           case 0b1110_110_111:
  3991:             irpBfffo ();
  3992:             break irpSwitch;
  3993: 
  3994:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3995:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  3996:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  3997:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  3998:             //BFSET <ea>{#o:#w}                               |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_111_011_mmm_rrr-00000ooooo0wwwww
  3999:             //BFSET <ea>{#o:Dw}                               |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_111_011_mmm_rrr-00000ooooo100www
  4000:             //BFSET <ea>{Do:#w}                               |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_111_011_mmm_rrr-0000100ooo0wwwww
  4001:             //BFSET <ea>{Do:Dw}                               |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_111_011_mmm_rrr-0000100ooo100www
  4002:           case 0b1110_111_011:
  4003:             irpBfset ();
  4004:             break irpSwitch;
  4005: 
  4006:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4007:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  4008:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  4009:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4010:             //BFINS Dn,<ea>{#o:#w}                            |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_111_111_mmm_rrr-0nnn0ooooo0wwwww
  4011:             //BFINS Dn,<ea>{#o:Dw}                            |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_111_111_mmm_rrr-0nnn0ooooo100www
  4012:             //BFINS Dn,<ea>{Do:#w}                            |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_111_111_mmm_rrr-0nnn100ooo0wwwww
  4013:             //BFINS Dn,<ea>{Do:Dw}                            |-|--2346|-|-UUUU|-**00|D M  WXZ  |1110_111_111_mmm_rrr-0nnn100ooo100www
  4014:           case 0b1110_111_111:
  4015:             irpBfins ();
  4016:             break irpSwitch;
  4017: 
  4018:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4019:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  4020:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  4021:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4022:             //PFLUSHA                                         |-|---3--|P|-----|-----|          |1111_000_000_000_000-0010010000000000
  4023:             //PFLUSH SFC,#<mask>                              |-|---3--|P|-----|-----|          |1111_000_000_000_000-00110000mmm00000
  4024:             //PFLUSH DFC,#<mask>                              |-|---3--|P|-----|-----|          |1111_000_000_000_000-00110000mmm00001
  4025:             //PFLUSH Dn,#<mask>                               |-|---3--|P|-----|-----|          |1111_000_000_000_000-00110000mmm01nnn
  4026:             //PFLUSH #<data>,#<mask>                          |-|---3--|P|-----|-----|          |1111_000_000_000_000-00110000mmm10ddd
  4027:             //PMOVE.L <ea>,TTn                                |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-00001n0000000000
  4028:             //PMOVEFD.L <ea>,TTn                              |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-00001n0100000000
  4029:             //PMOVE.L TTn,<ea>                                |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-00001n1000000000
  4030:             //PLOADW SFC,<ea>                                 |-|--M3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0010000000000000
  4031:             //PLOADW DFC,<ea>                                 |-|--M3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0010000000000001
  4032:             //PLOADW Dn,<ea>                                  |-|--M3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0010000000001nnn
  4033:             //PLOADW #<data>,<ea>                             |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0010000000010ddd
  4034:             //PLOADR SFC,<ea>                                 |-|--M3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0010001000000000
  4035:             //PLOADR DFC,<ea>                                 |-|--M3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0010001000000001
  4036:             //PLOADR Dn,<ea>                                  |-|--M3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0010001000001nnn
  4037:             //PLOADR #<data>,<ea>                             |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0010001000010ddd
  4038:             //PFLUSH SFC,#<mask>,<ea>                         |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-00111000mmm00000
  4039:             //PFLUSH DFC,#<mask>,<ea>                         |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-00111000mmm00001
  4040:             //PFLUSH Dn,#<mask>,<ea>                          |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-00111000mmm01nnn
  4041:             //PFLUSH #<data>,#<mask>,<ea>                     |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-00111000mmm10ddd
  4042:             //PMOVE.L <ea>,TC                                 |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0100000000000000
  4043:             //PMOVEFD.L <ea>,TC                               |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0100000100000000
  4044:             //PMOVE.L TC,<ea>                                 |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0100001000000000
  4045:             //PMOVE.Q <ea>,SRP                                |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0100100000000000
  4046:             //PMOVEFD.Q <ea>,SRP                              |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0100100100000000
  4047:             //PMOVE.Q SRP,<ea>                                |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0100101000000000
  4048:             //PMOVE.Q <ea>,CRP                                |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0100110000000000
  4049:             //PMOVEFD.Q <ea>,CRP                              |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0100110100000000
  4050:             //PMOVE.Q CRP,<ea>                                |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0100111000000000
  4051:             //PMOVE.W <ea>,MMUSR                              |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0110000000000000
  4052:             //PMOVE.W MMUSR,<ea>                              |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-0110001000000000
  4053:             //PTESTW SFC,<ea>,#<level>                        |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll0000000000
  4054:             //PTESTW DFC,<ea>,#<level>                        |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll0000000001
  4055:             //PTESTW Dn,<ea>,#<level>                         |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll0000001nnn
  4056:             //PTESTW #<data>,<ea>,#<level>                    |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll0000010ddd
  4057:             //PTESTW SFC,<ea>,#<level>,An                     |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll01nnn00000
  4058:             //PTESTW DFC,<ea>,#<level>,An                     |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll01nnn00001
  4059:             //PTESTW Dn,<ea>,#<level>,An                      |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll01nnn01nnn
  4060:             //PTESTW #<data>,<ea>,#<level>,An                 |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll01nnn10ddd
  4061:             //PTESTR SFC,<ea>,#<level>                        |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll1000000000
  4062:             //PTESTR DFC,<ea>,#<level>                        |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll1000000001
  4063:             //PTESTR Dn,<ea>,#<level>                         |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll1000001nnn
  4064:             //PTESTR #<data>,<ea>,#<level>                    |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll1000010ddd
  4065:             //PTESTR SFC,<ea>,#<level>,An                     |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll11nnn00000
  4066:             //PTESTR DFC,<ea>,#<level>,An                     |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll11nnn00001
  4067:             //PTESTR Dn,<ea>,#<level>,An                      |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll11nnn01nnn
  4068:             //PTESTR #<data>,<ea>,#<level>,An                 |-|---3--|P|-----|-----|  M  WXZ  |1111_000_000_mmm_rrr-100lll11nnn10ddd
  4069:           case 0b1111_000_000:
  4070:             irpPgen ();
  4071:             break irpSwitch;
  4072: 
  4073:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4074:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  4075:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  4076:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4077:             //FTST.X FPm                                      |-|--CC46|-|-----|-----|          |1111_001_000_000_000-000mmm0000111010
  4078:             //FMOVE.X FPm,FPn                                 |-|--CC46|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0000000
  4079:             //FINT.X FPm,FPn                                  |-|--CCS6|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0000001
  4080:             //FSINH.X FPm,FPn                                 |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0000010
  4081:             //FINTRZ.X FPm,FPn                                |-|--CCS6|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0000011
  4082:             //FSQRT.X FPm,FPn                                 |-|--CC46|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0000100
  4083:             //FLOGNP1.X FPm,FPn                               |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0000110
  4084:             //FETOXM1.X FPm,FPn                               |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0001000
  4085:             //FTANH.X FPm,FPn                                 |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0001001
  4086:             //FATAN.X FPm,FPn                                 |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0001010
  4087:             //FASIN.X FPm,FPn                                 |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0001100
  4088:             //FATANH.X FPm,FPn                                |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0001101
  4089:             //FSIN.X FPm,FPn                                  |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0001110
  4090:             //FTAN.X FPm,FPn                                  |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0001111
  4091:             //FETOX.X FPm,FPn                                 |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0010000
  4092:             //FTWOTOX.X FPm,FPn                               |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0010001
  4093:             //FTENTOX.X FPm,FPn                               |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0010010
  4094:             //FLOGN.X FPm,FPn                                 |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0010100
  4095:             //FLOG10.X FPm,FPn                                |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0010101
  4096:             //FLOG2.X FPm,FPn                                 |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0010110
  4097:             //FABS.X FPm,FPn                                  |-|--CC46|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0011000
  4098:             //FCOSH.X FPm,FPn                                 |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0011001
  4099:             //FNEG.X FPm,FPn                                  |-|--CC46|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0011010
  4100:             //FACOS.X FPm,FPn                                 |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0011100
  4101:             //FCOS.X FPm,FPn                                  |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0011101
  4102:             //FGETEXP.X FPm,FPn                               |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0011110
  4103:             //FGETMAN.X FPm,FPn                               |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0011111
  4104:             //FDIV.X FPm,FPn                                  |-|--CC46|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0100000
  4105:             //FMOD.X FPm,FPn                                  |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0100001
  4106:             //FADD.X FPm,FPn                                  |-|--CC46|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0100010
  4107:             //FMUL.X FPm,FPn                                  |-|--CC46|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0100011
  4108:             //FSGLDIV.X FPm,FPn                               |-|--CCS6|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0100100
  4109:             //FREM.X FPm,FPn                                  |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0100101
  4110:             //FSCALE.X FPm,FPn                                |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0100110
  4111:             //FSGLMUL.X FPm,FPn                               |-|--CCS6|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0100111
  4112:             //FSUB.X FPm,FPn                                  |-|--CC46|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0101000
  4113:             //FCMP.X FPm,FPn                                  |-|--CC46|-|-----|-----|          |1111_001_000_000_000-000mmmnnn0111000
  4114:             //FSINCOS.X FPm,FPc:FPs                           |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-000mmmsss0110ccc
  4115:             //FMOVECR.X #ccc,FPn                              |-|--CCSS|-|-----|-----|          |1111_001_000_000_000-010111nnn0cccccc
  4116:             //FMOVE.L FPn,<ea>                                |-|--CC46|-|-----|-----|D M+-WXZ  |1111_001_000_mmm_rrr-011000nnn0000000
  4117:             //FMOVE.S FPn,<ea>                                |-|--CC46|-|-----|-----|D M+-WXZ  |1111_001_000_mmm_rrr-011001nnn0000000
  4118:             //FMOVE.W FPn,<ea>                                |-|--CC46|-|-----|-----|D M+-WXZ  |1111_001_000_mmm_rrr-011100nnn0000000
  4119:             //FMOVE.B FPn,<ea>                                |-|--CC46|-|-----|-----|D M+-WXZ  |1111_001_000_mmm_rrr-011110nnn0000000
  4120:             //FMOVE.L FPIAR,<ea>                              |-|--CC46|-|-----|-----|DAM+-WXZ  |1111_001_000_mmm_rrr-1010010000000000
  4121:             //FMOVEM.L FPIAR,<ea>                             |-|--CC46|-|-----|-----|DAM+-WXZ  |1111_001_000_mmm_rrr-1010010000000000
  4122:             //FMOVE.L FPSR,<ea>                               |-|--CC46|-|-----|-----|D M+-WXZ  |1111_001_000_mmm_rrr-1010100000000000
  4123:             //FMOVEM.L FPSR,<ea>                              |-|--CC46|-|-----|-----|D M+-WXZ  |1111_001_000_mmm_rrr-1010100000000000
  4124:             //FMOVE.L FPCR,<ea>                               |-|--CC46|-|-----|-----|D M+-WXZ  |1111_001_000_mmm_rrr-1011000000000000
  4125:             //FMOVEM.L FPCR,<ea>                              |-|--CC46|-|-----|-----|D M+-WXZ  |1111_001_000_mmm_rrr-1011000000000000
  4126:             //FTST.L <ea>                                     |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-0100000000111010
  4127:             //FMOVE.L <ea>,FPn                                |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0000000
  4128:             //FINT.L <ea>,FPn                                 |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0000001
  4129:             //FSINH.L <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0000010
  4130:             //FINTRZ.L <ea>,FPn                               |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0000011
  4131:             //FSQRT.L <ea>,FPn                                |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0000100
  4132:             //FLOGNP1.L <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0000110
  4133:             //FETOXM1.L <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0001000
  4134:             //FTANH.L <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0001001
  4135:             //FATAN.L <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0001010
  4136:             //FASIN.L <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0001100
  4137:             //FATANH.L <ea>,FPn                               |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0001101
  4138:             //FSIN.L <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0001110
  4139:             //FTAN.L <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0001111
  4140:             //FETOX.L <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0010000
  4141:             //FTWOTOX.L <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0010001
  4142:             //FTENTOX.L <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0010010
  4143:             //FLOGN.L <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0010100
  4144:             //FLOG10.L <ea>,FPn                               |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0010101
  4145:             //FLOG2.L <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0010110
  4146:             //FABS.L <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0011000
  4147:             //FCOSH.L <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0011001
  4148:             //FNEG.L <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0011010
  4149:             //FACOS.L <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0011100
  4150:             //FCOS.L <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0011101
  4151:             //FGETEXP.L <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0011110
  4152:             //FGETMAN.L <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0011111
  4153:             //FDIV.L <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0100000
  4154:             //FMOD.L <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0100001
  4155:             //FADD.L <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0100010
  4156:             //FMUL.L <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0100011
  4157:             //FSGLDIV.L <ea>,FPn                              |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0100100
  4158:             //FREM.L <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0100101
  4159:             //FSCALE.L <ea>,FPn                               |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0100110
  4160:             //FSGLMUL.L <ea>,FPn                              |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0100111
  4161:             //FSUB.L <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0101000
  4162:             //FCMP.L <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000nnn0111000
  4163:             //FSINCOS.L <ea>,FPc:FPs                          |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010000sss0110ccc
  4164:             //FTST.S <ea>                                     |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-0100010000111010
  4165:             //FMOVE.S <ea>,FPn                                |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0000000
  4166:             //FINT.S <ea>,FPn                                 |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0000001
  4167:             //FSINH.S <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0000010
  4168:             //FINTRZ.S <ea>,FPn                               |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0000011
  4169:             //FSQRT.S <ea>,FPn                                |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0000100
  4170:             //FLOGNP1.S <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0000110
  4171:             //FETOXM1.S <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0001000
  4172:             //FTANH.S <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0001001
  4173:             //FATAN.S <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0001010
  4174:             //FASIN.S <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0001100
  4175:             //FATANH.S <ea>,FPn                               |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0001101
  4176:             //FSIN.S <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0001110
  4177:             //FTAN.S <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0001111
  4178:             //FETOX.S <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0010000
  4179:             //FTWOTOX.S <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0010001
  4180:             //FTENTOX.S <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0010010
  4181:             //FLOGN.S <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0010100
  4182:             //FLOG10.S <ea>,FPn                               |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0010101
  4183:             //FLOG2.S <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0010110
  4184:             //FABS.S <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0011000
  4185:             //FCOSH.S <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0011001
  4186:             //FNEG.S <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0011010
  4187:             //FACOS.S <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0011100
  4188:             //FCOS.S <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0011101
  4189:             //FGETEXP.S <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0011110
  4190:             //FGETMAN.S <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0011111
  4191:             //FDIV.S <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0100000
  4192:             //FMOD.S <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0100001
  4193:             //FADD.S <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0100010
  4194:             //FMUL.S <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0100011
  4195:             //FSGLDIV.S <ea>,FPn                              |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0100100
  4196:             //FREM.S <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0100101
  4197:             //FSCALE.S <ea>,FPn                               |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0100110
  4198:             //FSGLMUL.S <ea>,FPn                              |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0100111
  4199:             //FSUB.S <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0101000
  4200:             //FCMP.S <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001nnn0111000
  4201:             //FSINCOS.S <ea>,FPc:FPs                          |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010001sss0110ccc
  4202:             //FTST.W <ea>                                     |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-0101000000111010
  4203:             //FMOVE.W <ea>,FPn                                |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0000000
  4204:             //FINT.W <ea>,FPn                                 |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0000001
  4205:             //FSINH.W <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0000010
  4206:             //FINTRZ.W <ea>,FPn                               |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0000011
  4207:             //FSQRT.W <ea>,FPn                                |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0000100
  4208:             //FLOGNP1.W <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0000110
  4209:             //FETOXM1.W <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0001000
  4210:             //FTANH.W <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0001001
  4211:             //FATAN.W <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0001010
  4212:             //FASIN.W <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0001100
  4213:             //FATANH.W <ea>,FPn                               |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0001101
  4214:             //FSIN.W <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0001110
  4215:             //FTAN.W <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0001111
  4216:             //FETOX.W <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0010000
  4217:             //FTWOTOX.W <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0010001
  4218:             //FTENTOX.W <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0010010
  4219:             //FLOGN.W <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0010100
  4220:             //FLOG10.W <ea>,FPn                               |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0010101
  4221:             //FLOG2.W <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0010110
  4222:             //FABS.W <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0011000
  4223:             //FCOSH.W <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0011001
  4224:             //FNEG.W <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0011010
  4225:             //FACOS.W <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0011100
  4226:             //FCOS.W <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0011101
  4227:             //FGETEXP.W <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0011110
  4228:             //FGETMAN.W <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0011111
  4229:             //FDIV.W <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0100000
  4230:             //FMOD.W <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0100001
  4231:             //FADD.W <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0100010
  4232:             //FMUL.W <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0100011
  4233:             //FSGLDIV.W <ea>,FPn                              |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0100100
  4234:             //FREM.W <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0100101
  4235:             //FSCALE.W <ea>,FPn                               |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0100110
  4236:             //FSGLMUL.W <ea>,FPn                              |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0100111
  4237:             //FSUB.W <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0101000
  4238:             //FCMP.W <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100nnn0111000
  4239:             //FSINCOS.W <ea>,FPc:FPs                          |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010100sss0110ccc
  4240:             //FTST.B <ea>                                     |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-0101100000111010
  4241:             //FMOVE.B <ea>,FPn                                |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0000000
  4242:             //FINT.B <ea>,FPn                                 |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0000001
  4243:             //FSINH.B <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0000010
  4244:             //FINTRZ.B <ea>,FPn                               |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0000011
  4245:             //FSQRT.B <ea>,FPn                                |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0000100
  4246:             //FLOGNP1.B <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0000110
  4247:             //FETOXM1.B <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0001000
  4248:             //FTANH.B <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0001001
  4249:             //FATAN.B <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0001010
  4250:             //FASIN.B <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0001100
  4251:             //FATANH.B <ea>,FPn                               |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0001101
  4252:             //FSIN.B <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0001110
  4253:             //FTAN.B <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0001111
  4254:             //FETOX.B <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0010000
  4255:             //FTWOTOX.B <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0010001
  4256:             //FTENTOX.B <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0010010
  4257:             //FLOGN.B <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0010100
  4258:             //FLOG10.B <ea>,FPn                               |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0010101
  4259:             //FLOG2.B <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0010110
  4260:             //FABS.B <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0011000
  4261:             //FCOSH.B <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0011001
  4262:             //FNEG.B <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0011010
  4263:             //FACOS.B <ea>,FPn                                |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0011100
  4264:             //FCOS.B <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0011101
  4265:             //FGETEXP.B <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0011110
  4266:             //FGETMAN.B <ea>,FPn                              |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0011111
  4267:             //FDIV.B <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0100000
  4268:             //FMOD.B <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0100001
  4269:             //FADD.B <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0100010
  4270:             //FMUL.B <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0100011
  4271:             //FSGLDIV.B <ea>,FPn                              |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0100100
  4272:             //FREM.B <ea>,FPn                                 |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0100101
  4273:             //FSCALE.B <ea>,FPn                               |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0100110
  4274:             //FSGLMUL.B <ea>,FPn                              |-|--CCS6|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0100111
  4275:             //FSUB.B <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0101000
  4276:             //FCMP.B <ea>,FPn                                 |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110nnn0111000
  4277:             //FSINCOS.B <ea>,FPc:FPs                          |-|--CCSS|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-010110sss0110ccc
  4278:             //FMOVE.L <ea>,FPIAR                              |-|--CC46|-|-----|-----|DAM+-WXZPI|1111_001_000_mmm_rrr-1000010000000000
  4279:             //FMOVEM.L <ea>,FPIAR                             |-|--CC46|-|-----|-----|DAM+-WXZPI|1111_001_000_mmm_rrr-1000010000000000
  4280:             //FMOVE.L <ea>,FPSR                               |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-1000100000000000
  4281:             //FMOVEM.L <ea>,FPSR                              |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-1000100000000000
  4282:             //FMOVE.L <ea>,FPCR                               |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-1001000000000000
  4283:             //FMOVEM.L <ea>,FPCR                              |-|--CC46|-|-----|-----|D M+-WXZPI|1111_001_000_mmm_rrr-1001000000000000
  4284:             //FMOVE.X FPn,<ea>                                |-|--CC46|-|-----|-----|  M+-WXZ  |1111_001_000_mmm_rrr-011010nnn0000000
  4285:             //FMOVE.P FPn,<ea>{#k}                            |-|--CCSS|-|-----|-----|  M+-WXZ  |1111_001_000_mmm_rrr-011011nnnkkkkkkk
  4286:             //FMOVE.D FPn,<ea>                                |-|--CC46|-|-----|-----|  M+-WXZ  |1111_001_000_mmm_rrr-011101nnn0000000
  4287:             //FMOVE.P FPn,<ea>{Dk}                            |-|--CCSS|-|-----|-----|  M+-WXZ  |1111_001_000_mmm_rrr-011111nnnkkk0000
  4288:             //FMOVEM.L FPSR/FPIAR,<ea>                        |-|--CC46|-|-----|-----|  M+-WXZ  |1111_001_000_mmm_rrr-1010110000000000
  4289:             //FMOVEM.L FPCR/FPIAR,<ea>                        |-|--CC46|-|-----|-----|  M+-WXZ  |1111_001_000_mmm_rrr-1011010000000000
  4290:             //FMOVEM.L FPCR/FPSR,<ea>                         |-|--CC46|-|-----|-----|  M+-WXZ  |1111_001_000_mmm_rrr-1011100000000000
  4291:             //FMOVEM.L FPCR/FPSR/FPIAR,<ea>                   |-|--CC46|-|-----|-----|  M+-WXZ  |1111_001_000_mmm_rrr-1011110000000000
  4292:             //FMOVEM.X #<data>,<ea>                           |-|--CC46|-|-----|-----|  M  WXZ  |1111_001_000_mmm_rrr-11110000dddddddd
  4293:             //FMOVEM.X <list>,<ea>                            |-|--CC46|-|-----|-----|  M  WXZ  |1111_001_000_mmm_rrr-11110000llllllll
  4294:             //FMOVEM.X Dl,<ea>                                |-|--CC4S|-|-----|-----|  M  WXZ  |1111_001_000_mmm_rrr-111110000lll0000
  4295:             //FMOVEM.L <ea>,FPSR/FPIAR                        |-|--CC46|-|-----|-----|  M+-WXZP |1111_001_000_mmm_rrr-1000110000000000
  4296:             //FMOVEM.L <ea>,FPCR/FPIAR                        |-|--CC46|-|-----|-----|  M+-WXZP |1111_001_000_mmm_rrr-1001010000000000
  4297:             //FMOVEM.L <ea>,FPCR/FPSR                         |-|--CC46|-|-----|-----|  M+-WXZP |1111_001_000_mmm_rrr-1001100000000000
  4298:             //FMOVEM.L <ea>,FPCR/FPSR/FPIAR                   |-|--CC46|-|-----|-----|  M+-WXZP |1111_001_000_mmm_rrr-1001110000000000
  4299:             //FMOVEM.X <ea>,#<data>                           |-|--CC46|-|-----|-----|  M+ WXZP |1111_001_000_mmm_rrr-11010000dddddddd
  4300:             //FMOVEM.X <ea>,<list>                            |-|--CC46|-|-----|-----|  M+ WXZP |1111_001_000_mmm_rrr-11010000llllllll
  4301:             //FMOVEM.X <ea>,Dl                                |-|--CC4S|-|-----|-----|  M+ WXZP |1111_001_000_mmm_rrr-110110000lll0000
  4302:             //FTST.X <ea>                                     |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-0100100000111010
  4303:             //FMOVE.X <ea>,FPn                                |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0000000
  4304:             //FINT.X <ea>,FPn                                 |-|--CCS6|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0000001
  4305:             //FSINH.X <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0000010
  4306:             //FINTRZ.X <ea>,FPn                               |-|--CCS6|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0000011
  4307:             //FSQRT.X <ea>,FPn                                |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0000100
  4308:             //FLOGNP1.X <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0000110
  4309:             //FETOXM1.X <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0001000
  4310:             //FTANH.X <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0001001
  4311:             //FATAN.X <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0001010
  4312:             //FASIN.X <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0001100
  4313:             //FATANH.X <ea>,FPn                               |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0001101
  4314:             //FSIN.X <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0001110
  4315:             //FTAN.X <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0001111
  4316:             //FETOX.X <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0010000
  4317:             //FTWOTOX.X <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0010001
  4318:             //FTENTOX.X <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0010010
  4319:             //FLOGN.X <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0010100
  4320:             //FLOG10.X <ea>,FPn                               |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0010101
  4321:             //FLOG2.X <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0010110
  4322:             //FABS.X <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0011000
  4323:             //FCOSH.X <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0011001
  4324:             //FNEG.X <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0011010
  4325:             //FACOS.X <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0011100
  4326:             //FCOS.X <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0011101
  4327:             //FGETEXP.X <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0011110
  4328:             //FGETMAN.X <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0011111
  4329:             //FDIV.X <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0100000
  4330:             //FMOD.X <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0100001
  4331:             //FADD.X <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0100010
  4332:             //FMUL.X <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0100011
  4333:             //FSGLDIV.X <ea>,FPn                              |-|--CCS6|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0100100
  4334:             //FREM.X <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0100101
  4335:             //FSCALE.X <ea>,FPn                               |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0100110
  4336:             //FSGLMUL.X <ea>,FPn                              |-|--CCS6|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0100111
  4337:             //FSUB.X <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0101000
  4338:             //FCMP.X <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010nnn0111000
  4339:             //FSINCOS.X <ea>,FPc:FPs                          |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010010sss0110ccc
  4340:             //FTST.P <ea>                                     |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-0100110000111010
  4341:             //FMOVE.P <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0000000
  4342:             //FINT.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0000001
  4343:             //FSINH.P <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0000010
  4344:             //FINTRZ.P <ea>,FPn                               |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0000011
  4345:             //FSQRT.P <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0000100
  4346:             //FLOGNP1.P <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0000110
  4347:             //FETOXM1.P <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0001000
  4348:             //FTANH.P <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0001001
  4349:             //FATAN.P <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0001010
  4350:             //FASIN.P <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0001100
  4351:             //FATANH.P <ea>,FPn                               |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0001101
  4352:             //FSIN.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0001110
  4353:             //FTAN.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0001111
  4354:             //FETOX.P <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0010000
  4355:             //FTWOTOX.P <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0010001
  4356:             //FTENTOX.P <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0010010
  4357:             //FLOGN.P <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0010100
  4358:             //FLOG10.P <ea>,FPn                               |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0010101
  4359:             //FLOG2.P <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0010110
  4360:             //FABS.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0011000
  4361:             //FCOSH.P <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0011001
  4362:             //FNEG.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0011010
  4363:             //FACOS.P <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0011100
  4364:             //FCOS.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0011101
  4365:             //FGETEXP.P <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0011110
  4366:             //FGETMAN.P <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0011111
  4367:             //FDIV.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0100000
  4368:             //FMOD.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0100001
  4369:             //FADD.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0100010
  4370:             //FMUL.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0100011
  4371:             //FSGLDIV.P <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0100100
  4372:             //FREM.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0100101
  4373:             //FSCALE.P <ea>,FPn                               |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0100110
  4374:             //FSGLMUL.P <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0100111
  4375:             //FSUB.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0101000
  4376:             //FCMP.P <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011nnn0111000
  4377:             //FSINCOS.P <ea>,FPc:FPs                          |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010011sss0110ccc
  4378:             //FTST.D <ea>                                     |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-0101010000111010
  4379:             //FMOVE.D <ea>,FPn                                |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0000000
  4380:             //FINT.D <ea>,FPn                                 |-|--CCS6|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0000001
  4381:             //FSINH.D <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0000010
  4382:             //FINTRZ.D <ea>,FPn                               |-|--CCS6|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0000011
  4383:             //FSQRT.D <ea>,FPn                                |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0000100
  4384:             //FLOGNP1.D <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0000110
  4385:             //FETOXM1.D <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0001000
  4386:             //FTANH.D <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0001001
  4387:             //FATAN.D <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0001010
  4388:             //FASIN.D <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0001100
  4389:             //FATANH.D <ea>,FPn                               |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0001101
  4390:             //FSIN.D <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0001110
  4391:             //FTAN.D <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0001111
  4392:             //FETOX.D <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0010000
  4393:             //FTWOTOX.D <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0010001
  4394:             //FTENTOX.D <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0010010
  4395:             //FLOGN.D <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0010100
  4396:             //FLOG10.D <ea>,FPn                               |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0010101
  4397:             //FLOG2.D <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0010110
  4398:             //FABS.D <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0011000
  4399:             //FCOSH.D <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0011001
  4400:             //FNEG.D <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0011010
  4401:             //FACOS.D <ea>,FPn                                |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0011100
  4402:             //FCOS.D <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0011101
  4403:             //FGETEXP.D <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0011110
  4404:             //FGETMAN.D <ea>,FPn                              |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0011111
  4405:             //FDIV.D <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0100000
  4406:             //FMOD.D <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0100001
  4407:             //FADD.D <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0100010
  4408:             //FMUL.D <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0100011
  4409:             //FSGLDIV.D <ea>,FPn                              |-|--CCS6|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0100100
  4410:             //FREM.D <ea>,FPn                                 |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0100101
  4411:             //FSCALE.D <ea>,FPn                               |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0100110
  4412:             //FSGLMUL.D <ea>,FPn                              |-|--CCS6|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0100111
  4413:             //FSUB.D <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0101000
  4414:             //FCMP.D <ea>,FPn                                 |-|--CC46|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101nnn0111000
  4415:             //FSINCOS.D <ea>,FPc:FPs                          |-|--CCSS|-|-----|-----|  M+-WXZPI|1111_001_000_mmm_rrr-010101sss0110ccc
  4416:             //FMOVEM.X #<data>,-(Ar)                          |-|--CC46|-|-----|-----|    -     |1111_001_000_100_rrr-11100000dddddddd
  4417:             //FMOVEM.X <list>,-(Ar)                           |-|--CC46|-|-----|-----|    -     |1111_001_000_100_rrr-11100000llllllll
  4418:             //FMOVEM.X Dl,-(Ar)                               |-|--CC4S|-|-----|-----|    -     |1111_001_000_100_rrr-111010000lll0000
  4419:             //FMOVEM.L #<data>,#<data>,FPSR/FPIAR             |-|--CC4S|-|-----|-----|         I|1111_001_000_111_100-1000110000000000-{data}
  4420:             //FMOVEM.L #<data>,#<data>,FPCR/FPIAR             |-|--CC4S|-|-----|-----|         I|1111_001_000_111_100-1001010000000000-{data}
  4421:             //FMOVEM.L #<data>,#<data>,FPCR/FPSR              |-|--CC4S|-|-----|-----|         I|1111_001_000_111_100-1001100000000000-{data}
  4422:             //FMOVEM.L #<data>,#<data>,#<data>,FPCR/FPSR/FPIAR|-|--CC4S|-|-----|-----|         I|1111_001_000_111_100-1001110000000000-{data}
  4423:           case 0b1111_001_000:
  4424:             irpFgen ();
  4425:             break irpSwitch;
  4426: 
  4427:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4428:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  4429:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  4430:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4431:             //FSF.B <ea>                                      |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000000000
  4432:             //FSEQ.B <ea>                                     |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000000001
  4433:             //FSOGT.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000000010
  4434:             //FSOGE.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000000011
  4435:             //FSOLT.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000000100
  4436:             //FSOLE.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000000101
  4437:             //FSOGL.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000000110
  4438:             //FSOR.B <ea>                                     |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000000111
  4439:             //FSUN.B <ea>                                     |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000001000
  4440:             //FSUEQ.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000001001
  4441:             //FSUGT.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000001010
  4442:             //FSUGE.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000001011
  4443:             //FSULT.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000001100
  4444:             //FSULE.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000001101
  4445:             //FSNE.B <ea>                                     |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000001110
  4446:             //FST.B <ea>                                      |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000001111
  4447:             //FSSF.B <ea>                                     |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000010000
  4448:             //FSSEQ.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000010001
  4449:             //FSGT.B <ea>                                     |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000010010
  4450:             //FSGE.B <ea>                                     |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000010011
  4451:             //FSLT.B <ea>                                     |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000010100
  4452:             //FSLE.B <ea>                                     |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000010101
  4453:             //FSGL.B <ea>                                     |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000010110
  4454:             //FSGLE.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000010111
  4455:             //FSNGLE.B <ea>                                   |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000011000
  4456:             //FSNGL.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000011001
  4457:             //FSNLE.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000011010
  4458:             //FSNLT.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000011011
  4459:             //FSNGE.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000011100
  4460:             //FSNGT.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000011101
  4461:             //FSSNE.B <ea>                                    |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000011110
  4462:             //FSST.B <ea>                                     |-|--CC4S|-|-----|-----|D M+-WXZ  |1111_001_001_mmm_rrr-0000000000011111
  4463:             //FDBF Dr,<label>                                 |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000000000-{offset}
  4464:             //FDBRA Dr,<label>                                |A|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000000000-{offset}       [FDBF Dr,<label>]
  4465:             //FDBEQ Dr,<label>                                |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000000001-{offset}
  4466:             //FDBOGT Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000000010-{offset}
  4467:             //FDBOGE Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000000011-{offset}
  4468:             //FDBOLT Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000000100-{offset}
  4469:             //FDBOLE Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000000101-{offset}
  4470:             //FDBOGL Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000000110-{offset}
  4471:             //FDBOR Dr,<label>                                |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000000111-{offset}
  4472:             //FDBUN Dr,<label>                                |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000001000-{offset}
  4473:             //FDBUEQ Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000001001-{offset}
  4474:             //FDBUGT Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000001010-{offset}
  4475:             //FDBUGE Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000001011-{offset}
  4476:             //FDBULT Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000001100-{offset}
  4477:             //FDBULE Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000001101-{offset}
  4478:             //FDBNE Dr,<label>                                |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000001110-{offset}
  4479:             //FDBT Dr,<label>                                 |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000001111-{offset}
  4480:             //FDBSF Dr,<label>                                |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000010000-{offset}
  4481:             //FDBSEQ Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000010001-{offset}
  4482:             //FDBGT Dr,<label>                                |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000010010-{offset}
  4483:             //FDBGE Dr,<label>                                |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000010011-{offset}
  4484:             //FDBLT Dr,<label>                                |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000010100-{offset}
  4485:             //FDBLE Dr,<label>                                |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000010101-{offset}
  4486:             //FDBGL Dr,<label>                                |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000010110-{offset}
  4487:             //FDBGLE Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000010111-{offset}
  4488:             //FDBNGLE Dr,<label>                              |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000011000-{offset}
  4489:             //FDBNGL Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000011001-{offset}
  4490:             //FDBNLE Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000011010-{offset}
  4491:             //FDBNLT Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000011011-{offset}
  4492:             //FDBNGE Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000011100-{offset}
  4493:             //FDBNGT Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000011101-{offset}
  4494:             //FDBSNE Dr,<label>                               |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000011110-{offset}
  4495:             //FDBST Dr,<label>                                |-|--CC4S|-|-----|-----|          |1111_001_001_001_rrr-0000000000011111-{offset}
  4496:             //FTRAPF.W #<data>                                |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000000000-{data}
  4497:             //FTRAPEQ.W #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000000001-{data}
  4498:             //FTRAPOGT.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000000010-{data}
  4499:             //FTRAPOGE.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000000011-{data}
  4500:             //FTRAPOLT.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000000100-{data}
  4501:             //FTRAPOLE.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000000101-{data}
  4502:             //FTRAPOGL.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000000110-{data}
  4503:             //FTRAPOR.W #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000000111-{data}
  4504:             //FTRAPUN.W #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000001000-{data}
  4505:             //FTRAPUEQ.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000001001-{data}
  4506:             //FTRAPUGT.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000001010-{data}
  4507:             //FTRAPUGE.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000001011-{data}
  4508:             //FTRAPULT.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000001100-{data}
  4509:             //FTRAPULE.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000001101-{data}
  4510:             //FTRAPNE.W #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000001110-{data}
  4511:             //FTRAPT.W #<data>                                |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000001111-{data}
  4512:             //FTRAPSF.W #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000010000-{data}
  4513:             //FTRAPSEQ.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000010001-{data}
  4514:             //FTRAPGT.W #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000010010-{data}
  4515:             //FTRAPGE.W #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000010011-{data}
  4516:             //FTRAPLT.W #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000010100-{data}
  4517:             //FTRAPLE.W #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000010101-{data}
  4518:             //FTRAPGL.W #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000010110-{data}
  4519:             //FTRAPGLE.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000010111-{data}
  4520:             //FTRAPNGLE.W #<data>                             |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000011000-{data}
  4521:             //FTRAPNGL.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000011001-{data}
  4522:             //FTRAPNLE.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000011010-{data}
  4523:             //FTRAPNLT.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000011011-{data}
  4524:             //FTRAPNGE.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000011100-{data}
  4525:             //FTRAPNGT.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000011101-{data}
  4526:             //FTRAPSNE.W #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000011110-{data}
  4527:             //FTRAPST.W #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_010-0000000000011111-{data}
  4528:             //FTRAPF.L #<data>                                |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000000000-{data}
  4529:             //FTRAPEQ.L #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000000001-{data}
  4530:             //FTRAPOGT.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000000010-{data}
  4531:             //FTRAPOGE.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000000011-{data}
  4532:             //FTRAPOLT.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000000100-{data}
  4533:             //FTRAPOLE.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000000101-{data}
  4534:             //FTRAPOGL.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000000110-{data}
  4535:             //FTRAPOR.L #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000000111-{data}
  4536:             //FTRAPUN.L #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000001000-{data}
  4537:             //FTRAPUEQ.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000001001-{data}
  4538:             //FTRAPUGT.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000001010-{data}
  4539:             //FTRAPUGE.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000001011-{data}
  4540:             //FTRAPULT.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000001100-{data}
  4541:             //FTRAPULE.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000001101-{data}
  4542:             //FTRAPNE.L #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000001110-{data}
  4543:             //FTRAPT.L #<data>                                |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000001111-{data}
  4544:             //FTRAPSF.L #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000010000-{data}
  4545:             //FTRAPSEQ.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000010001-{data}
  4546:             //FTRAPGT.L #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000010010-{data}
  4547:             //FTRAPGE.L #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000010011-{data}
  4548:             //FTRAPLT.L #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000010100-{data}
  4549:             //FTRAPLE.L #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000010101-{data}
  4550:             //FTRAPGL.L #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000010110-{data}
  4551:             //FTRAPGLE.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000010111-{data}
  4552:             //FTRAPNGLE.L #<data>                             |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000011000-{data}
  4553:             //FTRAPNGL.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000011001-{data}
  4554:             //FTRAPNLE.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000011010-{data}
  4555:             //FTRAPNLT.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000011011-{data}
  4556:             //FTRAPNGE.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000011100-{data}
  4557:             //FTRAPNGT.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000011101-{data}
  4558:             //FTRAPSNE.L #<data>                              |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000011110-{data}
  4559:             //FTRAPST.L #<data>                               |-|--CC4S|-|-----|-----|          |1111_001_001_111_011-0000000000011111-{data}
  4560:             //FTRAPF                                          |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000000000
  4561:             //FTRAPEQ                                         |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000000001
  4562:             //FTRAPOGT                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000000010
  4563:             //FTRAPOGE                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000000011
  4564:             //FTRAPOLT                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000000100
  4565:             //FTRAPOLE                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000000101
  4566:             //FTRAPOGL                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000000110
  4567:             //FTRAPOR                                         |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000000111
  4568:             //FTRAPUN                                         |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000001000
  4569:             //FTRAPUEQ                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000001001
  4570:             //FTRAPUGT                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000001010
  4571:             //FTRAPUGE                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000001011
  4572:             //FTRAPULT                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000001100
  4573:             //FTRAPULE                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000001101
  4574:             //FTRAPNE                                         |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000001110
  4575:             //FTRAPT                                          |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000001111
  4576:             //FTRAPSF                                         |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000010000
  4577:             //FTRAPSEQ                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000010001
  4578:             //FTRAPGT                                         |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000010010
  4579:             //FTRAPGE                                         |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000010011
  4580:             //FTRAPLT                                         |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000010100
  4581:             //FTRAPLE                                         |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000010101
  4582:             //FTRAPGL                                         |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000010110
  4583:             //FTRAPGLE                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000010111
  4584:             //FTRAPNGLE                                       |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000011000
  4585:             //FTRAPNGL                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000011001
  4586:             //FTRAPNLE                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000011010
  4587:             //FTRAPNLT                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000011011
  4588:             //FTRAPNGE                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000011100
  4589:             //FTRAPNGT                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000011101
  4590:             //FTRAPSNE                                        |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000011110
  4591:             //FTRAPST                                         |-|--CC4S|-|-----|-----|          |1111_001_001_111_100-0000000000011111
  4592:           case 0b1111_001_001:
  4593:             irpFscc ();
  4594:             break irpSwitch;
  4595: 
  4596:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4597:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  4598:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  4599:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4600:             //FNOP                                            |A|--CC46|-|-----|-----|          |1111_001_010_000_000-0000000000000000        [FBF.W (*)+2]
  4601:             //FBF.W <label>                                   |-|--CC46|-|-----|-----|          |1111_001_010_000_000-{offset}
  4602:             //FBEQ.W <label>                                  |-|--CC46|-|-----|-----|          |1111_001_010_000_001-{offset}
  4603:             //FBOGT.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_000_010-{offset}
  4604:             //FBOGE.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_000_011-{offset}
  4605:             //FBOLT.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_000_100-{offset}
  4606:             //FBOLE.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_000_101-{offset}
  4607:             //FBOGL.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_000_110-{offset}
  4608:             //FBOR.W <label>                                  |-|--CC46|-|-----|-----|          |1111_001_010_000_111-{offset}
  4609:             //FBUN.W <label>                                  |-|--CC46|-|-----|-----|          |1111_001_010_001_000-{offset}
  4610:             //FBUEQ.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_001_001-{offset}
  4611:             //FBUGT.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_001_010-{offset}
  4612:             //FBUGE.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_001_011-{offset}
  4613:             //FBULT.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_001_100-{offset}
  4614:             //FBULE.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_001_101-{offset}
  4615:             //FBNE.W <label>                                  |-|--CC46|-|-----|-----|          |1111_001_010_001_110-{offset}
  4616:             //FBT.W <label>                                   |-|--CC46|-|-----|-----|          |1111_001_010_001_111-{offset}
  4617:             //FBRA.W <label>                                  |A|--CC46|-|-----|-----|          |1111_001_010_001_111-{offset}        [FBT.W <label>]
  4618:             //FBSF.W <label>                                  |-|--CC46|-|-----|-----|          |1111_001_010_010_000-{offset}
  4619:             //FBSEQ.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_010_001-{offset}
  4620:             //FBGT.W <label>                                  |-|--CC46|-|-----|-----|          |1111_001_010_010_010-{offset}
  4621:             //FBGE.W <label>                                  |-|--CC46|-|-----|-----|          |1111_001_010_010_011-{offset}
  4622:             //FBLT.W <label>                                  |-|--CC46|-|-----|-----|          |1111_001_010_010_100-{offset}
  4623:             //FBLE.W <label>                                  |-|--CC46|-|-----|-----|          |1111_001_010_010_101-{offset}
  4624:             //FBGL.W <label>                                  |-|--CC46|-|-----|-----|          |1111_001_010_010_110-{offset}
  4625:             //FBGLE.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_010_111-{offset}
  4626:             //FBNGLE.W <label>                                |-|--CC46|-|-----|-----|          |1111_001_010_011_000-{offset}
  4627:             //FBNGL.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_011_001-{offset}
  4628:             //FBNLE.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_011_010-{offset}
  4629:             //FBNLT.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_011_011-{offset}
  4630:             //FBNGE.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_011_100-{offset}
  4631:             //FBNGT.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_011_101-{offset}
  4632:             //FBSNE.W <label>                                 |-|--CC46|-|-----|-----|          |1111_001_010_011_110-{offset}
  4633:             //FBST.W <label>                                  |-|--CC46|-|-----|-----|          |1111_001_010_011_111-{offset}
  4634:           case 0b1111_001_010:
  4635:             irpFbccWord ();
  4636:             break irpSwitch;
  4637: 
  4638:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4639:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  4640:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  4641:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4642:             //FBF.L <label>                                   |-|--CC46|-|-----|-----|          |1111_001_011_000_000-{offset}
  4643:             //FBEQ.L <label>                                  |-|--CC46|-|-----|-----|          |1111_001_011_000_001-{offset}
  4644:             //FBOGT.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_000_010-{offset}
  4645:             //FBOGE.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_000_011-{offset}
  4646:             //FBOLT.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_000_100-{offset}
  4647:             //FBOLE.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_000_101-{offset}
  4648:             //FBOGL.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_000_110-{offset}
  4649:             //FBOR.L <label>                                  |-|--CC46|-|-----|-----|          |1111_001_011_000_111-{offset}
  4650:             //FBUN.L <label>                                  |-|--CC46|-|-----|-----|          |1111_001_011_001_000-{offset}
  4651:             //FBUEQ.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_001_001-{offset}
  4652:             //FBUGT.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_001_010-{offset}
  4653:             //FBUGE.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_001_011-{offset}
  4654:             //FBULT.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_001_100-{offset}
  4655:             //FBULE.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_001_101-{offset}
  4656:             //FBNE.L <label>                                  |-|--CC46|-|-----|-----|          |1111_001_011_001_110-{offset}
  4657:             //FBT.L <label>                                   |-|--CC46|-|-----|-----|          |1111_001_011_001_111-{offset}
  4658:             //FBRA.L <label>                                  |A|--CC46|-|-----|-----|          |1111_001_011_001_111-{offset}        [FBT.L <label>]
  4659:             //FBSF.L <label>                                  |-|--CC46|-|-----|-----|          |1111_001_011_010_000-{offset}
  4660:             //FBSEQ.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_010_001-{offset}
  4661:             //FBGT.L <label>                                  |-|--CC46|-|-----|-----|          |1111_001_011_010_010-{offset}
  4662:             //FBGE.L <label>                                  |-|--CC46|-|-----|-----|          |1111_001_011_010_011-{offset}
  4663:             //FBLT.L <label>                                  |-|--CC46|-|-----|-----|          |1111_001_011_010_100-{offset}
  4664:             //FBLE.L <label>                                  |-|--CC46|-|-----|-----|          |1111_001_011_010_101-{offset}
  4665:             //FBGL.L <label>                                  |-|--CC46|-|-----|-----|          |1111_001_011_010_110-{offset}
  4666:             //FBGLE.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_010_111-{offset}
  4667:             //FBNGLE.L <label>                                |-|--CC46|-|-----|-----|          |1111_001_011_011_000-{offset}
  4668:             //FBNGL.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_011_001-{offset}
  4669:             //FBNLE.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_011_010-{offset}
  4670:             //FBNLT.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_011_011-{offset}
  4671:             //FBNGE.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_011_100-{offset}
  4672:             //FBNGT.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_011_101-{offset}
  4673:             //FBSNE.L <label>                                 |-|--CC46|-|-----|-----|          |1111_001_011_011_110-{offset}
  4674:             //FBST.L <label>                                  |-|--CC46|-|-----|-----|          |1111_001_011_011_111-{offset}
  4675:           case 0b1111_001_011:
  4676:             irpFbccLong ();
  4677:             break irpSwitch;
  4678: 
  4679:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4680:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  4681:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  4682:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4683:             //FSAVE <ea>                                      |-|--CC46|P|-----|-----|  M -WXZ  |1111_001_100_mmm_rrr
  4684:           case 0b1111_001_100:
  4685:             irpFsave ();
  4686:             break irpSwitch;
  4687: 
  4688:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4689:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  4690:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  4691:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4692:             //FRESTORE <ea>                                   |-|--CC46|P|-----|-----|  M+ WXZP |1111_001_101_mmm_rrr
  4693:           case 0b1111_001_101:
  4694:             irpFrestore ();
  4695:             break irpSwitch;
  4696: 
  4697:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4698:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  4699:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  4700:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4701:             //FPACK <data>                                    |A|012346|-|UUUUU|*****|          |1111_111_0dd_ddd_ddd [FLINE #<data>]
  4702:           case 0b1111_111_000:
  4703:           case 0b1111_111_001:
  4704:           case 0b1111_111_010:
  4705:           case 0b1111_111_011:
  4706:             irpFpack ();
  4707:             break irpSwitch;
  4708: 
  4709:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4710:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  4711:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  4712:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4713:             //DOS <data>                                      |A|012346|-|UUUUU|UUUUU|          |1111_111_1dd_ddd_ddd [FLINE #<data>]
  4714:           case 0b1111_111_100:
  4715:           case 0b1111_111_101:
  4716:           case 0b1111_111_110:
  4717:           case 0b1111_111_111:
  4718:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4719:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  4720:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  4721:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4722:             //FLINE #<data>                                   |-|012346|-|UUUUU|UUUUU|          |1111_ddd_ddd_ddd_ddd (line 1111 emulator)
  4723:           case 0b1111_000_001:
  4724:           case 0b1111_000_010:
  4725:           case 0b1111_000_011:
  4726:           case 0b1111_000_100:
  4727:           case 0b1111_000_101:
  4728:           case 0b1111_000_110:
  4729:           case 0b1111_000_111:
  4730:           case 0b1111_001_110:
  4731:           case 0b1111_001_111:
  4732:           case 0b1111_010_000:
  4733:           case 0b1111_010_001:
  4734:           case 0b1111_010_010:
  4735:           case 0b1111_010_011:
  4736:           case 0b1111_010_100:
  4737:           case 0b1111_010_101:
  4738:           case 0b1111_010_110:
  4739:           case 0b1111_010_111:
  4740:           case 0b1111_011_000:
  4741:           case 0b1111_011_001:
  4742:           case 0b1111_011_010:
  4743:           case 0b1111_011_011:
  4744:           case 0b1111_011_100:
  4745:           case 0b1111_011_101:
  4746:           case 0b1111_011_110:
  4747:           case 0b1111_011_111:
  4748:           case 0b1111_100_000:
  4749:           case 0b1111_100_001:
  4750:           case 0b1111_100_010:
  4751:           case 0b1111_100_011:
  4752:           case 0b1111_100_100:
  4753:           case 0b1111_100_101:
  4754:           case 0b1111_100_110:
  4755:           case 0b1111_100_111:
  4756:           case 0b1111_101_000:
  4757:           case 0b1111_101_001:
  4758:           case 0b1111_101_010:
  4759:           case 0b1111_101_011:
  4760:           case 0b1111_101_100:
  4761:           case 0b1111_101_101:
  4762:           case 0b1111_101_110:
  4763:           case 0b1111_101_111:
  4764:           case 0b1111_110_000:
  4765:           case 0b1111_110_001:
  4766:           case 0b1111_110_010:
  4767:           case 0b1111_110_011:
  4768:           case 0b1111_110_100:
  4769:           case 0b1111_110_101:
  4770:           case 0b1111_110_110:
  4771:           case 0b1111_110_111:
  4772:             irpFline ();
  4773:             break irpSwitch;
  4774: 
  4775:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4776:             //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  4777:             //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  4778:             //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  4779:             //HFSBOOT                                         |-|012346|-|-----|-----|          |0100_111_000_000_000
  4780:             //HFSINST                                         |-|012346|-|-----|-----|          |0100_111_000_000_001
  4781:             //HFSSTR                                          |-|012346|-|-----|-----|          |0100_111_000_000_010
  4782:             //HFSINT                                          |-|012346|-|-----|-----|          |0100_111_000_000_011
  4783:             //EMXNOP                                          |-|012346|-|-----|-----|          |0100_111_000_000_100
  4784:           case 0b0100_111_000:
  4785:             irpEmx ();
  4786:             break;
  4787: 
  4788:           default:
  4789:             irpIllegal ();
  4790: 
  4791:           }  //switch XEiJ.regOC >>> 6
  4792: 
  4793:           //トレース例外
  4794:           //  命令実行前にsrのTビットがセットされていたとき命令実行後にトレース例外が発生する
  4795:           //  トレース例外の発動は命令の機能拡張であり、他の例外処理で命令が中断されたときはトレース例外は発生しない
  4796:           //  命令例外はトレース例外の前に、割り込み例外はトレース例外の後に処理される
  4797:           //  未実装命令のエミュレーションルーチンはrteの直前にsrのTビットを復元することで未実装命令が1個の命令としてトレースされたように見せる
  4798:           //    ;DOSコールの終了
  4799:           //    ~008616:
  4800:           //            btst.b  #$07,(sp)
  4801:           //            bne.s   ~00861E
  4802:           //            rte
  4803:           //    ~00861E:
  4804:           //            ori.w   #$8000,sr
  4805:           //            rte
  4806:           if (XEiJ.mpuTraceFlag != 0) {  //命令実行前にsrのTビットがセットされていた
  4807:             XEiJ.mpuCycleCount += 34;
  4808:             irpException (M68kException.M6E_TRACE, XEiJ.regPC, XEiJ.regSRT1 | XEiJ.regSRT0 | XEiJ.regSRS | XEiJ.regSRM | XEiJ.regSRI | XEiJ.regCCR, 0x2000, XEiJ.regPC0);  //pcは次の命令
  4809:           }
  4810:           //クロックをカウントアップする
  4811:           //  オペランドをアクセスした時点ではまだXEiJ.mpuClockTimeが更新されていないのでXEiJ.mpuClockTime<xxxClock
  4812:           //  xxxTickを呼び出すときはXEiJ.mpuClockTime>=xxxClock
  4813:           XEiJ.mpuClockTime += XEiJ.mpuModifiedUnit * XEiJ.mpuCycleCount;
  4814:           //デバイスを呼び出す
  4815:           TickerQueue.tkqRun (XEiJ.mpuClockTime);
  4816:           //割り込みを受け付ける
  4817:           if ((t = XEiJ.mpuIMR & XEiJ.mpuIRR) != 0) {  //マスクされているレベルよりも高くて受け付けていない割り込みがあるとき
  4818:             if (XEiJ.MPU_INTERRUPT_SWITCH) {
  4819:               switch (t) {
  4820:               case 0b00000001:
  4821:               case 0b00000011:
  4822:               case 0b00000101:
  4823:               case 0b00000111:
  4824:               case 0b00001001:
  4825:               case 0b00001011:
  4826:               case 0b00001101:
  4827:               case 0b00001111:
  4828:               case 0b00010001:
  4829:               case 0b00010011:
  4830:               case 0b00010101:
  4831:               case 0b00010111:
  4832:               case 0b00011001:
  4833:               case 0b00011011:
  4834:               case 0b00011101:
  4835:               case 0b00011111:
  4836:               case 0b00100001:
  4837:               case 0b00100011:
  4838:               case 0b00100101:
  4839:               case 0b00100111:
  4840:               case 0b00101001:
  4841:               case 0b00101011:
  4842:               case 0b00101101:
  4843:               case 0b00101111:
  4844:               case 0b00110001:
  4845:               case 0b00110011:
  4846:               case 0b00110101:
  4847:               case 0b00110111:
  4848:               case 0b00111001:
  4849:               case 0b00111011:
  4850:               case 0b00111101:
  4851:               case 0b00111111:
  4852:               case 0b01000001:
  4853:               case 0b01000011:
  4854:               case 0b01000101:
  4855:               case 0b01000111:
  4856:               case 0b01001001:
  4857:               case 0b01001011:
  4858:               case 0b01001101:
  4859:               case 0b01001111:
  4860:               case 0b01010001:
  4861:               case 0b01010011:
  4862:               case 0b01010101:
  4863:               case 0b01010111:
  4864:               case 0b01011001:
  4865:               case 0b01011011:
  4866:               case 0b01011101:
  4867:               case 0b01011111:
  4868:               case 0b01100001:
  4869:               case 0b01100011:
  4870:               case 0b01100101:
  4871:               case 0b01100111:
  4872:               case 0b01101001:
  4873:               case 0b01101011:
  4874:               case 0b01101101:
  4875:               case 0b01101111:
  4876:               case 0b01110001:
  4877:               case 0b01110011:
  4878:               case 0b01110101:
  4879:               case 0b01110111:
  4880:               case 0b01111001:
  4881:               case 0b01111011:
  4882:               case 0b01111101:
  4883:               case 0b01111111:
  4884:               case 0b10000001:
  4885:               case 0b10000011:
  4886:               case 0b10000101:
  4887:               case 0b10000111:
  4888:               case 0b10001001:
  4889:               case 0b10001011:
  4890:               case 0b10001101:
  4891:               case 0b10001111:
  4892:               case 0b10010001:
  4893:               case 0b10010011:
  4894:               case 0b10010101:
  4895:               case 0b10010111:
  4896:               case 0b10011001:
  4897:               case 0b10011011:
  4898:               case 0b10011101:
  4899:               case 0b10011111:
  4900:               case 0b10100001:
  4901:               case 0b10100011:
  4902:               case 0b10100101:
  4903:               case 0b10100111:
  4904:               case 0b10101001:
  4905:               case 0b10101011:
  4906:               case 0b10101101:
  4907:               case 0b10101111:
  4908:               case 0b10110001:
  4909:               case 0b10110011:
  4910:               case 0b10110101:
  4911:               case 0b10110111:
  4912:               case 0b10111001:
  4913:               case 0b10111011:
  4914:               case 0b10111101:
  4915:               case 0b10111111:
  4916:               case 0b11000001:
  4917:               case 0b11000011:
  4918:               case 0b11000101:
  4919:               case 0b11000111:
  4920:               case 0b11001001:
  4921:               case 0b11001011:
  4922:               case 0b11001101:
  4923:               case 0b11001111:
  4924:               case 0b11010001:
  4925:               case 0b11010011:
  4926:               case 0b11010101:
  4927:               case 0b11010111:
  4928:               case 0b11011001:
  4929:               case 0b11011011:
  4930:               case 0b11011101:
  4931:               case 0b11011111:
  4932:               case 0b11100001:
  4933:               case 0b11100011:
  4934:               case 0b11100101:
  4935:               case 0b11100111:
  4936:               case 0b11101001:
  4937:               case 0b11101011:
  4938:               case 0b11101101:
  4939:               case 0b11101111:
  4940:               case 0b11110001:
  4941:               case 0b11110011:
  4942:               case 0b11110101:
  4943:               case 0b11110111:
  4944:               case 0b11111001:
  4945:               case 0b11111011:
  4946:               case 0b11111101:
  4947:               case 0b11111111:
  4948:                 //レベル7
  4949:                 XEiJ.mpuIRR &= ~XEiJ.MPU_SYS_INTERRUPT_MASK;  //割り込みを受け付ける
  4950:                 if ((t = XEiJ.sysAcknowledge ()) != 0) {  //デバイスにベクタ番号を要求して割り込み処理中の状態になったとき
  4951:                   irpInterrupt (t, XEiJ.MPU_SYS_INTERRUPT_LEVEL);  //割り込み処理を開始する
  4952:                 }
  4953:                 break;
  4954:               case 0b00000010:
  4955:               case 0b00000110:
  4956:               case 0b00001010:
  4957:               case 0b00001110:
  4958:               case 0b00010010:
  4959:               case 0b00010110:
  4960:               case 0b00011010:
  4961:               case 0b00011110:
  4962:               case 0b00100010:
  4963:               case 0b00100110:
  4964:               case 0b00101010:
  4965:               case 0b00101110:
  4966:               case 0b00110010:
  4967:               case 0b00110110:
  4968:               case 0b00111010:
  4969:               case 0b00111110:
  4970:               case 0b01000010:
  4971:               case 0b01000110:
  4972:               case 0b01001010:
  4973:               case 0b01001110:
  4974:               case 0b01010010:
  4975:               case 0b01010110:
  4976:               case 0b01011010:
  4977:               case 0b01011110:
  4978:               case 0b01100010:
  4979:               case 0b01100110:
  4980:               case 0b01101010:
  4981:               case 0b01101110:
  4982:               case 0b01110010:
  4983:               case 0b01110110:
  4984:               case 0b01111010:
  4985:               case 0b01111110:
  4986:               case 0b10000010:
  4987:               case 0b10000110:
  4988:               case 0b10001010:
  4989:               case 0b10001110:
  4990:               case 0b10010010:
  4991:               case 0b10010110:
  4992:               case 0b10011010:
  4993:               case 0b10011110:
  4994:               case 0b10100010:
  4995:               case 0b10100110:
  4996:               case 0b10101010:
  4997:               case 0b10101110:
  4998:               case 0b10110010:
  4999:               case 0b10110110:
  5000:               case 0b10111010:
  5001:               case 0b10111110:
  5002:               case 0b11000010:
  5003:               case 0b11000110:
  5004:               case 0b11001010:
  5005:               case 0b11001110:
  5006:               case 0b11010010:
  5007:               case 0b11010110:
  5008:               case 0b11011010:
  5009:               case 0b11011110:
  5010:               case 0b11100010:
  5011:               case 0b11100110:
  5012:               case 0b11101010:
  5013:               case 0b11101110:
  5014:               case 0b11110010:
  5015:               case 0b11110110:
  5016:               case 0b11111010:
  5017:               case 0b11111110:
  5018:                 //レベル6
  5019:                 XEiJ.mpuIRR &= ~XEiJ.MPU_MFP_INTERRUPT_MASK;  //割り込みを受け付ける
  5020:                 if ((t = MC68901.mfpAcknowledge ()) != 0) {  //デバイスにベクタ番号を要求して割り込み処理中の状態になったとき
  5021:                   irpInterrupt (t, XEiJ.MPU_MFP_INTERRUPT_LEVEL);  //割り込み処理を開始する
  5022:                 }
  5023:                 break;
  5024:               case 0b00000100:
  5025:               case 0b00001100:
  5026:               case 0b00010100:
  5027:               case 0b00011100:
  5028:               case 0b00100100:
  5029:               case 0b00101100:
  5030:               case 0b00110100:
  5031:               case 0b00111100:
  5032:               case 0b01000100:
  5033:               case 0b01001100:
  5034:               case 0b01010100:
  5035:               case 0b01011100:
  5036:               case 0b01100100:
  5037:               case 0b01101100:
  5038:               case 0b01110100:
  5039:               case 0b01111100:
  5040:               case 0b10000100:
  5041:               case 0b10001100:
  5042:               case 0b10010100:
  5043:               case 0b10011100:
  5044:               case 0b10100100:
  5045:               case 0b10101100:
  5046:               case 0b10110100:
  5047:               case 0b10111100:
  5048:               case 0b11000100:
  5049:               case 0b11001100:
  5050:               case 0b11010100:
  5051:               case 0b11011100:
  5052:               case 0b11100100:
  5053:               case 0b11101100:
  5054:               case 0b11110100:
  5055:               case 0b11111100:
  5056:                 //レベル5
  5057:                 XEiJ.mpuIRR &= ~XEiJ.MPU_SCC_INTERRUPT_MASK;  //割り込みを受け付ける
  5058:                 if ((t = Z8530.sccAcknowledge ()) != 0) {  //デバイスにベクタ番号を要求して割り込み処理中の状態になったとき
  5059:                   irpInterrupt (t, XEiJ.MPU_SCC_INTERRUPT_LEVEL);  //割り込み処理を開始する
  5060:                 }
  5061:                 break;
  5062:               case 0b00010000:
  5063:               case 0b00110000:
  5064:               case 0b01010000:
  5065:               case 0b01110000:
  5066:               case 0b10010000:
  5067:               case 0b10110000:
  5068:               case 0b11010000:
  5069:               case 0b11110000:
  5070:                 //レベル3
  5071:                 XEiJ.mpuIRR &= ~XEiJ.MPU_DMA_INTERRUPT_MASK;  //割り込みを受け付ける
  5072:                 if ((t = HD63450.dmaAcknowledge ()) != 0) {  //デバイスにベクタ番号を要求して割り込み処理中の状態になったとき
  5073:                   irpInterrupt (t, XEiJ.MPU_DMA_INTERRUPT_LEVEL);  //割り込み処理を開始する
  5074:                 }
  5075:                 break;
  5076:               case 0b00100000:
  5077:               case 0b01100000:
  5078:               case 0b10100000:
  5079:               case 0b11100000:
  5080:                 //レベル2
  5081:                 XEiJ.mpuIRR &= ~XEiJ.MPU_EB2_INTERRUPT_MASK;  //割り込みを受け付ける
  5082:                 if ((t = XEiJ.eb2Acknowledge ()) != 0) {  //デバイスにベクタ番号を要求して割り込み処理中の状態になったとき
  5083:                   irpInterrupt (t, XEiJ.MPU_EB2_INTERRUPT_LEVEL);  //割り込み処理を開始する
  5084:                 }
  5085:                 break;
  5086:               case 0b01000000:
  5087:               case 0b11000000:
  5088:                 //レベル1
  5089:                 XEiJ.mpuIRR &= ~XEiJ.MPU_IOI_INTERRUPT_MASK;  //割り込みを受け付ける
  5090:                 if ((t = IOInterrupt.ioiAcknowledge ()) != 0) {  //デバイスにベクタ番号を要求して割り込み処理中の状態になったとき
  5091:                   irpInterrupt (t, XEiJ.MPU_IOI_INTERRUPT_LEVEL);  //割り込み処理を開始する
  5092:                 }
  5093:                 break;
  5094:               }
  5095:             } else {
  5096:               t &= -t;
  5097:               //  x&=-xはxの最下位の1のビットだけを残す演算
  5098:               //  すなわちマスクされているレベルよりも高くて受け付けていない割り込みの中で最高レベルの割り込みのビットだけが残る
  5099:               //  最高レベルの割り込みのビットしか残っていないので、割り込みの有無をレベルの高い順ではなく使用頻度の高い順に調べられる
  5100:               //  MFPやDMAの割り込みがかかる度にそれより優先度の高いインタラプトスイッチが押されていないかどうかを確かめる必要がない
  5101:               if (t == XEiJ.MPU_MFP_INTERRUPT_MASK) {
  5102:                 XEiJ.mpuIRR &= ~XEiJ.MPU_MFP_INTERRUPT_MASK;  //割り込みを受け付ける
  5103:                 if ((t = MC68901.mfpAcknowledge ()) != 0) {  //デバイスにベクタ番号を要求して割り込み処理中の状態になったとき
  5104:                   irpInterrupt (t, XEiJ.MPU_MFP_INTERRUPT_LEVEL);  //割り込み処理を開始する
  5105:                 }
  5106:               } else if (t == XEiJ.MPU_DMA_INTERRUPT_MASK) {
  5107:                 XEiJ.mpuIRR &= ~XEiJ.MPU_DMA_INTERRUPT_MASK;  //割り込みを受け付ける
  5108:                 if ((t = HD63450.dmaAcknowledge ()) != 0) {  //デバイスにベクタ番号を要求して割り込み処理中の状態になったとき
  5109:                   irpInterrupt (t, XEiJ.MPU_DMA_INTERRUPT_LEVEL);  //割り込み処理を開始する
  5110:                 }
  5111:               } else if (t == XEiJ.MPU_SCC_INTERRUPT_MASK) {
  5112:                 XEiJ.mpuIRR &= ~XEiJ.MPU_SCC_INTERRUPT_MASK;  //割り込みを受け付ける
  5113:                 if ((t = Z8530.sccAcknowledge ()) != 0) {  //デバイスにベクタ番号を要求して割り込み処理中の状態になったとき
  5114:                   irpInterrupt (t, XEiJ.MPU_SCC_INTERRUPT_LEVEL);  //割り込み処理を開始する
  5115:                 }
  5116:               } else if (t == XEiJ.MPU_IOI_INTERRUPT_MASK) {
  5117:                 XEiJ.mpuIRR &= ~XEiJ.MPU_IOI_INTERRUPT_MASK;  //割り込みを受け付ける
  5118:                 if ((t = IOInterrupt.ioiAcknowledge ()) != 0) {  //デバイスにベクタ番号を要求して割り込み処理中の状態になったとき
  5119:                   irpInterrupt (t, XEiJ.MPU_IOI_INTERRUPT_LEVEL);  //割り込み処理を開始する
  5120:                 }
  5121:               } else if (t == XEiJ.MPU_EB2_INTERRUPT_MASK) {
  5122:                 XEiJ.mpuIRR &= ~XEiJ.MPU_EB2_INTERRUPT_MASK;  //割り込みを受け付ける
  5123:                 if ((t = XEiJ.eb2Acknowledge ()) != 0) {  //デバイスにベクタ番号を要求して割り込み処理中の状態になったとき
  5124:                   irpInterrupt (t, XEiJ.MPU_EB2_INTERRUPT_LEVEL);  //割り込み処理を開始する
  5125:                 }
  5126:               } else if (t == XEiJ.MPU_SYS_INTERRUPT_MASK) {
  5127:                 XEiJ.mpuIRR &= ~XEiJ.MPU_SYS_INTERRUPT_MASK;  //割り込みを受け付ける
  5128:                 if ((t = XEiJ.sysAcknowledge ()) != 0) {  //デバイスにベクタ番号を要求して割り込み処理中の状態になったとき
  5129:                   irpInterrupt (t, XEiJ.MPU_SYS_INTERRUPT_LEVEL);  //割り込み処理を開始する
  5130:                 }
  5131:               }
  5132:             }
  5133:           }  //if t!=0
  5134:           if (MC68901.MFP_DELAYED_INTERRUPT) {
  5135:             XEiJ.mpuIRR |= XEiJ.mpuDIRR;  //遅延割り込み要求
  5136:             XEiJ.mpuDIRR = 0;
  5137:           }
  5138:         }  //命令ループ
  5139:       } catch (M68kException e) {
  5140:         if (M68kException.m6eNumber < 0) {  //命令ブレークポイントによる停止
  5141:           XEiJ.regPC = XEiJ.regPC0;
  5142:           XEiJ.mpuStop1 (null);  //"Instruction Break Point"
  5143:           break errorLoop;
  5144:         }
  5145:         //例外処理
  5146:         //  ここで処理するのはベクタ番号が2~31の例外に限る。TRAP #n命令はインライン展開する
  5147:         //  例外処理のサイクル数はXEiJ.BUS_ERRORとADDRESS_ERROR以外は34になっているので必要ならば補正してからthrowする
  5148:         //  使用頻度が高いと思われる例外はインライン展開するのでここには来ない
  5149:         //    例外処理をインライン展開する場合はMC68000とMC68030のコードを分けなければならずコードが冗長になる
  5150:         //    使用頻度が低いと思われる例外はインライン展開しない
  5151:         //  セーブされるpcは以下の例外は命令の先頭、これ以外は次の命令
  5152:         //     2  XEiJ.BUS_ERROR
  5153:         //     3  ADDRESS_ERROR
  5154:         //     4  ILLEGAL_INSTRUCTION
  5155:         //     8  PRIVILEGE_VIOLATION
  5156:         //    10  LINE_1010_EMULATOR
  5157:         //    11  LINE_1111_EMULATOR
  5158:         //                                      fedcba9876543210fedcba9876543210
  5159:         //if ((1 << M68kException.m6eNumber & 0b00000000000000000000110100011100) != 0) {
  5160:         //    0123456789abcdef0123456789abcdef
  5161:         if (0b00111000101100000000000000000000 << M68kException.m6eNumber < 0) {
  5162:           XEiJ.regPC = XEiJ.regPC0;  //セーブされるpcは命令の先頭
  5163:         }
  5164:         try {
  5165:           int save_sr = XEiJ.regSRT1 | XEiJ.regSRT0 | XEiJ.regSRS | XEiJ.regSRM | XEiJ.regSRI | XEiJ.regCCR;
  5166:           int sp = XEiJ.regRn[15];
  5167:           XEiJ.regSRT1 = XEiJ.regSRT0 = 0;  //srのTビットを消す
  5168:           if (XEiJ.regSRS == 0) {  //ユーザモードのとき
  5169:             XEiJ.regSRS = XEiJ.REG_SR_S;  //スーパーバイザモードへ移行する
  5170:             XEiJ.mpuUSP = sp;  //USPを保存
  5171:             sp = XEiJ.regSRM != 0 ? XEiJ.mpuMSP : XEiJ.mpuISP;  //SSPを復元
  5172:             if (DataBreakPoint.DBP_ON) {
  5173:               DataBreakPoint.dbpMemoryMap = DataBreakPoint.dbpSuperMap;  //スーパーバイザメモリマップに切り替える
  5174:             } else {
  5175:               XEiJ.busMemoryMap = XEiJ.busSuperMap;  //スーパーバイザメモリマップに切り替える
  5176:             }
  5177:             if (InstructionBreakPoint.IBP_ON) {
  5178:               InstructionBreakPoint.ibpOp1MemoryMap = InstructionBreakPoint.ibpOp1SuperMap;
  5179:             }
  5180:           }
  5181:           if (M68kException.m6eNumber <= M68kException.M6E_ADDRESS_ERROR) {
  5182:             //ホストファイルシステムのデバイスコマンドを強制終了させる
  5183:             HFS.hfsState = HFS.HFS_STATE_IDLE;
  5184:             XEiJ.mpuClockTime += 50 * XEiJ.mpuModifiedUnit;
  5185:             if (false) {
  5186:               //FORMAT $Aの例外スタックフレームを作る
  5187:               //  命令境界のバスエラーまたはアドレスエラー
  5188:               XEiJ.regRn[15] = sp -= 32;
  5189:               XEiJ.busWl (sp + 28, 0);  //31-30:内部レジスタ,29-28:内部レジスタ
  5190:               XEiJ.busWl (sp + 24, 0);  //27-24:データ出力バッファ
  5191:               XEiJ.busWl (sp + 20, 0);  //23-22:内部レジスタ,21-20:内部レジスタ
  5192:               XEiJ.busWl (sp + 16, M68kException.m6eAddress);  //19-16:データサイクルフォルトアドレス
  5193:               XEiJ.busWl (sp + 12, 0);  //15-14:命令パイプステージB,13-12:命令パイプステージC
  5194:               XEiJ.busWl (sp + 8, 0);  //11-10:特殊ステータスレジスタ,9-8:内部レジスタ
  5195:               XEiJ.busWw (sp + 6, 0xa000 | M68kException.m6eNumber << 2);  //7-6:フォーマットとベクタオフセット
  5196:             } else {
  5197:               //FORMAT $Bの例外スタックフレームを作る
  5198:               //  命令途中のバスエラーまたはアドレスエラー
  5199:               XEiJ.regRn[15] = sp -= 92;
  5200:               XEiJ.busWl (sp + 88, 0);  //91-58:内部レジスタ
  5201:               XEiJ.busWl (sp + 84, 0);
  5202:               XEiJ.busWl (sp + 80, 0);
  5203:               XEiJ.busWl (sp + 76, 0);
  5204:               XEiJ.busWl (sp + 72, 0);
  5205:               XEiJ.busWl (sp + 68, 0);
  5206:               XEiJ.busWl (sp + 64, 0);
  5207:               XEiJ.busWl (sp + 60, 0);
  5208:               XEiJ.busWl (sp + 56, 0);  //57-56:バージョンナンバーと内部情報
  5209:               XEiJ.busWl (sp + 52, 0);
  5210:               XEiJ.busWl (sp + 48, 0);  //53-48:内部レジスタ
  5211:               XEiJ.busWl (sp + 44, 0);  //47-44:データ入力バッファ
  5212:               XEiJ.busWl (sp + 40, 0);  //43-40:内部レジスタ
  5213:               XEiJ.busWl (sp + 36, 0);  //39-36:ステージBアドレス
  5214:               XEiJ.busWl (sp + 32, 0);  //35-28:内部レジスタ
  5215:               XEiJ.busWl (sp + 28, 0);
  5216:               XEiJ.busWl (sp + 24, 0);  //27-24:データ出力バッファ
  5217:               XEiJ.busWl (sp + 20, 0);  //23-22:内部レジスタ,21-20:内部レジスタ
  5218:               XEiJ.busWl (sp + 16, M68kException.m6eAddress);  //19-16:データサイクルフォルトアドレス
  5219:               XEiJ.busWl (sp + 12, 0);  //15-14:命令パイプステージB,13-12:命令パイプステージC
  5220:               XEiJ.busWl (sp + 8, 0);  //11-10:特殊ステータスレジスタ,9-8:内部レジスタ
  5221:               XEiJ.busWw (sp + 6, 0xb000 | M68kException.m6eNumber << 2);  //7-6:フォーマットとベクタオフセット
  5222:             }
  5223:             //                   111111111122222222223333333333444444444455555555556666
  5224:             //         0123456789012345678901234567890123456789012345678901234567890123
  5225:           } else if (0b0001011101000000000000000000000000000000000000000000000000000000L << M68kException.m6eNumber < 0L) {
  5226:             //FORMAT $2の例外スタックフレームを作る
  5227:             XEiJ.mpuClockTime += 34 * XEiJ.mpuModifiedUnit;
  5228:             XEiJ.regRn[15] = sp -= 12;
  5229:             XEiJ.busWl (sp + 8, M68kException.m6eAddress);  //11-8:命令アドレス
  5230:             XEiJ.busWw (sp + 6, 0x2000 | M68kException.m6eNumber << 2);  //7-6:フォーマットとベクタオフセット
  5231:           } else {
  5232:             //FORMAT $0の例外スタックフレームを作る
  5233:             XEiJ.mpuClockTime += 34 * XEiJ.mpuModifiedUnit;
  5234:             XEiJ.regRn[15] = sp -= 8;
  5235:             XEiJ.busWw (sp + 6, 0x0000 | M68kException.m6eNumber << 2);  //7-6:フォーマットとベクタオフセット
  5236:           }
  5237:           XEiJ.busWl (sp + 2, XEiJ.regPC);  //5-2:プログラムカウンタ
  5238:           XEiJ.busWw (sp, save_sr);  //1-0:ステータスレジスタ
  5239:           irpSetPC (XEiJ.busRlsf (XEiJ.mpuVBR + (M68kException.m6eNumber << 2)));  //例外ベクタを取り出してジャンプする
  5240:           if (XEiJ.dbgStopOnError) {  //エラーで停止する場合
  5241:             if (XEiJ.dbgDoStopOnError ()) {
  5242:               break errorLoop;
  5243:             }
  5244:           }
  5245:         } catch (M68kException ee) {  //ダブルバスフォルト
  5246:           XEiJ.dbgDoubleBusFault ();
  5247:           break errorLoop;
  5248:         }
  5249:       }  //catch M68kException
  5250:     }  //例外ループ
  5251: 
  5252:     //  通常
  5253:     //    pc0  最後に実行した命令
  5254:     //    pc  次に実行する命令
  5255:     //  バスエラー、アドレスエラー、不当命令、特権違反で停止したとき
  5256:     //    pc0  エラーを発生させた命令
  5257:     //    pc  例外処理ルーチンの先頭
  5258:     //  ダブルバスフォルトで停止したとき
  5259:     //    pc0  エラーを発生させた命令
  5260:     //    pc  エラーを発生させた命令
  5261:     //  命令ブレークポイントで停止したとき
  5262:     //    pc0  命令ブレークポイントが設定された、次に実行する命令
  5263:     //    pc  命令ブレークポイントが設定された、次に実行する命令
  5264:     //  データブレークポイントで停止したとき
  5265:     //    pc0  データを書き換えた、最後に実行した命令
  5266:     //    pc  次に実行する命令
  5267: 
  5268:     //分岐ログに停止レコードを記録する
  5269:     if (BranchLog.BLG_ON) {
  5270:       //BranchLog.blgStop ();
  5271:       int i = (char) BranchLog.blgNewestRecord << BranchLog.BLG_RECORD_SHIFT;
  5272:       BranchLog.blgArray[i] = BranchLog.blgHead | BranchLog.blgSuper;
  5273:       BranchLog.blgArray[i + 1] = XEiJ.regPC;  //次に実行する命令
  5274:     }
  5275: 
  5276:     //デバッグウインドウを更新する
  5277:     if (XEiJ.dbgVisibleMask != 0) {  //デバッグ関連ウインドウが表示されている
  5278:       XEiJ.dbgUpdate ();
  5279:     }
  5280: 
  5281:     //コアメーター計測終了
  5282:     long nanoEnd = System.nanoTime ();
  5283:     Indicator.indTotalNano += nanoEnd - nanoStart;
  5284:     if (--Indicator.indCount == 0) {
  5285:       Indicator.indUpdate (nanoEnd);
  5286:     }
  5287: 
  5288:   }  //mpuCore()
  5289: 
  5290: 
  5291: 
  5292:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5293:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5294:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5295:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5296:   //ORI.B #<data>,<ea>                              |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_000_000_mmm_rrr-{data}
  5297:   //OR.B #<data>,<ea>                               |A|012346|-|-UUUU|-**00|  M+-WXZ  |0000_000_000_mmm_rrr-{data}  [ORI.B #<data>,<ea>]
  5298:   //ORI.B #<data>,CCR                               |-|012346|-|*****|*****|          |0000_000_000_111_100-{data}
  5299:   public static void irpOriByte () throws M68kException {
  5300:     if (Profiling.PFF_ON) {
  5301:       Profiling.pffStart[Profiling.PRF.irpOriByte.ordinal ()] = System.nanoTime ();
  5302:     }
  5303:     int ea = XEiJ.regOC & 63;
  5304:     int z;
  5305:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5306:       z = XEiJ.busRbs ((XEiJ.regPC += 2) - 1);  //pcbs
  5307:     } else {
  5308:       z = XEiJ.regPC;
  5309:       XEiJ.regPC = z + 2;
  5310:       z = XEiJ.busRbs (z + 1);  //pcbs
  5311:     }
  5312:     if (ea < XEiJ.EA_AR) {  //ORI.B #<data>,Dr
  5313:       if (XEiJ.DBG_ORI_BYTE_ZERO_D0) {
  5314:         if (z == 0 && ea == 0 && XEiJ.dbgOriByteZeroD0) {  //ORI.B #$00,D0
  5315:           M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
  5316:           throw M68kException.m6eSignal;
  5317:         }
  5318:       }
  5319:       XEiJ.mpuCycleCount += 8;
  5320:       z = XEiJ.regRn[ea] |= 255 & z;  //0拡張してからOR
  5321:       XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  5322:     } else if (ea == XEiJ.EA_IM) {  //ORI.B #<data>,CCR
  5323:       XEiJ.mpuCycleCount += 20;
  5324:       XEiJ.regCCR |= XEiJ.REG_CCR_MASK & z;
  5325:     } else {  //ORI.B #<data>,<mem>
  5326:       XEiJ.mpuCycleCount += 12;
  5327:       int a = efaMltByte (ea);
  5328:       XEiJ.busWb (a, z |= XEiJ.busRbs (a));
  5329:       XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  5330:     }
  5331:     if (Profiling.PFF_ON) {
  5332:       Profiling.pffTotal[Profiling.PRF.irpOriByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpOriByte.ordinal ()];
  5333:       Profiling.pffCount[Profiling.PRF.irpOriByte.ordinal ()]++;
  5334:     }
  5335:   }  //irpOriByte
  5336: 
  5337:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5338:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5339:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5340:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5341:   //ORI.W #<data>,<ea>                              |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_000_001_mmm_rrr-{data}
  5342:   //OR.W #<data>,<ea>                               |A|012346|-|-UUUU|-**00|  M+-WXZ  |0000_000_001_mmm_rrr-{data}  [ORI.W #<data>,<ea>]
  5343:   //ORI.W #<data>,SR                                |-|012346|P|*****|*****|          |0000_000_001_111_100-{data}
  5344:   public static void irpOriWord () throws M68kException {
  5345:     if (Profiling.PFF_ON) {
  5346:       Profiling.pffStart[Profiling.PRF.irpOriWord.ordinal ()] = System.nanoTime ();
  5347:     }
  5348:     int ea = XEiJ.regOC & 63;
  5349:     if (ea < XEiJ.EA_AR) {  //ORI.W #<data>,Dr
  5350:       int z;
  5351:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5352:         z = XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
  5353:       } else {
  5354:         z = XEiJ.regPC;
  5355:         XEiJ.regPC = z + 2;
  5356:         z = XEiJ.busRwse (z);  //pcws
  5357:       }
  5358:       XEiJ.mpuCycleCount += 8;
  5359:       z = XEiJ.regRn[ea] |= (char) z;  //0拡張してからOR
  5360:       XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | (char) z - 1 >> 31 & XEiJ.REG_CCR_Z | ((short) z < 0 ? XEiJ.REG_CCR_N : 0);  //ccr_tst_word
  5361:     } else if (ea == XEiJ.EA_IM) {  //ORI.W #<data>,SR
  5362:       if (XEiJ.regSRS == 0) {  //ユーザモードのとき
  5363:         M68kException.m6eNumber = M68kException.M6E_PRIVILEGE_VIOLATION;
  5364:         throw M68kException.m6eSignal;
  5365:       }
  5366:       //以下はスーパーバイザモード
  5367:       XEiJ.mpuCycleCount += 20;
  5368:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5369:         irpSetSR (XEiJ.regSRT1 | XEiJ.regSRT0 | XEiJ.regSRS | XEiJ.regSRM | XEiJ.regSRI | XEiJ.regCCR | XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。特権違反チェックが先
  5370:       } else {
  5371:         int t = XEiJ.regPC;
  5372:         XEiJ.regPC = t + 2;
  5373:         irpSetSR (XEiJ.regSRT1 | XEiJ.regSRT0 | XEiJ.regSRS | XEiJ.regSRM | XEiJ.regSRI | XEiJ.regCCR | XEiJ.busRwse (t));  //pcws。特権違反チェックが先
  5374:       }
  5375:     } else {  //ORI.W #<data>,<mem>
  5376:       int z;
  5377:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5378:         z = XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
  5379:       } else {
  5380:         z = XEiJ.regPC;
  5381:         XEiJ.regPC = z + 2;
  5382:         z = XEiJ.busRwse (z);  //pcws
  5383:       }
  5384:       XEiJ.mpuCycleCount += 12;
  5385:       int a = efaMltWord (ea);
  5386:       XEiJ.busWw (a, z |= XEiJ.busRws (a));
  5387:       XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | (char) z - 1 >> 31 & XEiJ.REG_CCR_Z | ((short) z < 0 ? XEiJ.REG_CCR_N : 0);  //ccr_tst_word
  5388:     }
  5389:     if (Profiling.PFF_ON) {
  5390:       Profiling.pffTotal[Profiling.PRF.irpOriWord.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpOriWord.ordinal ()];
  5391:       Profiling.pffCount[Profiling.PRF.irpOriWord.ordinal ()]++;
  5392:     }
  5393:   }  //irpOriWord
  5394: 
  5395:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5396:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5397:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5398:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5399:   //ORI.L #<data>,<ea>                              |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_000_010_mmm_rrr-{data}
  5400:   //OR.L #<data>,<ea>                               |A|012346|-|-UUUU|-**00|  M+-WXZ  |0000_000_010_mmm_rrr-{data}  [ORI.L #<data>,<ea>]
  5401:   public static void irpOriLong () throws M68kException {
  5402:     if (Profiling.PFF_ON) {
  5403:       Profiling.pffStart[Profiling.PRF.irpOriLong.ordinal ()] = System.nanoTime ();
  5404:     }
  5405:     int ea = XEiJ.regOC & 63;
  5406:     int y;
  5407:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5408:       y = XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
  5409:     } else {
  5410:       y = XEiJ.regPC;
  5411:       XEiJ.regPC = y + 4;
  5412:       y = XEiJ.busRlse (y);  //pcls
  5413:     }
  5414:     int z;
  5415:     if (ea < XEiJ.EA_AR) {  //ORI.L #<data>,Dr
  5416:       XEiJ.mpuCycleCount += 16;
  5417:       z = XEiJ.regRn[ea] |= y;
  5418:     } else {  //ORI.L #<data>,<mem>
  5419:       XEiJ.mpuCycleCount += 20;
  5420:       int a = efaMltLong (ea);
  5421:       XEiJ.busWl (a, z = XEiJ.busRls (a) | y);
  5422:     }
  5423:     XEiJ.regCCR = z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X);  //ccr_tst
  5424:     if (Profiling.PFF_ON) {
  5425:       Profiling.pffTotal[Profiling.PRF.irpOriLong.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpOriLong.ordinal ()];
  5426:       Profiling.pffCount[Profiling.PRF.irpOriLong.ordinal ()]++;
  5427:     }
  5428:   }  //irpOriLong
  5429: 
  5430:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5431:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5432:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5433:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5434:   //BITREV.L Dr                                     |-|------|-|-----|-----|D         |0000_000_011_000_rrr (ISA_C)
  5435:   //CMP2.B <ea>,Rn                                  |-|--234S|-|-UUUU|-U*U*|  M  WXZP |0000_000_011_mmm_rrr-rnnn000000000000
  5436:   //CHK2.B <ea>,Rn                                  |-|--234S|-|-UUUU|-U*U*|  M  WXZP |0000_000_011_mmm_rrr-rnnn100000000000
  5437:   //
  5438:   //BITREV.L Dr
  5439:   //  Drのビットの並びを逆順にする。CCRは変化しない
  5440:   //
  5441:   //CHK2.B <ea>,Rn
  5442:   //  <ea>から下限と上限をリードしてRnが範囲内か調べる
  5443:   //  CHK2.B <ea>,Anは下限と上限をそれぞれロングに符号拡張してロングで比較する
  5444:   //  Rnが下限または上限と等しいときZをセットする
  5445:   //  Rnが範囲外のときCをセットする。このときCHK instruction例外が発生する
  5446:   //  060ISPのソースは注釈に誤りが多いので注釈ではなくコードを参考にする
  5447:   //  CCR
  5448:   //    X  変化しない
  5449:   //    N  変化しない(M68000PRMでは未定義)
  5450:   //    Z  Rn-LB==0||Rn-LB==UB-LB
  5451:   //    V  変化しない(M68000PRMでは未定義)
  5452:   //    C  Rn-LB>UB-LB(符号なし比較)
  5453:   //
  5454:   //CMP2.B <ea>,Rn
  5455:   //  <ea>から下限と上限をリードしてRnが範囲内か調べる
  5456:   //  CMP2.B <ea>,Anは下限と上限をそれぞれロングに符号拡張してロングで比較する
  5457:   //  Rnが下限または上限と等しいときZをセットする
  5458:   //  Rnが範囲外のときCをセットする
  5459:   //  060ISPのソースは注釈に誤りが多いので注釈ではなくコードを参考にする
  5460:   //  CCR
  5461:   //    X  変化しない
  5462:   //    N  変化しない(M68000PRMでは未定義)
  5463:   //    Z  Rn-LB==0||Rn-LB==UB-LB
  5464:   //    V  変化しない(M68000PRMでは未定義)
  5465:   //    C  Rn-LB>UB-LB(符号なし比較)
  5466:   public static void irpCmp2Chk2Byte () throws M68kException {
  5467:     if (Profiling.PFF_ON) {
  5468:       Profiling.pffStart[Profiling.PRF.irpCmp2Chk2Byte.ordinal ()] = System.nanoTime ();
  5469:     }
  5470:     int ea = XEiJ.regOC & 63;
  5471:     if (ea < XEiJ.EA_AR) {  //BITREV.L Dr
  5472:       XEiJ.mpuCycleCount += 4;
  5473:       if (XEiJ.IRP_BITREV_REVERSE) {  //2.83ns  0x0f801f3c
  5474:         XEiJ.regRn[ea] = Integer.reverse (XEiJ.regRn[ea]);
  5475:       } else if (XEiJ.IRP_BITREV_SHIFT) {  //2.57ns  0x0f801f3c
  5476:         int x = XEiJ.regRn[ea];
  5477:         x = x << 16 | x >>> 16;
  5478:         x = x << 8 & 0xff00ff00 | x >>> 8 & 0x00ff00ff;
  5479:         x = x << 4 & 0xf0f0f0f0 | x >>> 4 & 0x0f0f0f0f;
  5480:         x = x << 2 & 0xcccccccc | x >>> 2 & 0x33333333;
  5481:         XEiJ.regRn[ea] = x << 1 & 0xaaaaaaaa | x >>> 1 & 0x55555555;
  5482:       } else if (XEiJ.IRP_BITREV_TABLE) {  //1.57ns  0x0f801f3c
  5483:         int x = XEiJ.regRn[ea];
  5484:         XEiJ.regRn[ea] = XEiJ.MPU_BITREV_TABLE_0[x & 2047] | XEiJ.MPU_BITREV_TABLE_1[x << 10 >>> 21] | XEiJ.MPU_BITREV_TABLE_2[x >>> 22];
  5485:       }
  5486:     } else {  //CMP2/CHK2.B <ea>,Rn
  5487:       XEiJ.mpuCycleCount += 8;
  5488:       int w;
  5489:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5490:         w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz
  5491:       } else {
  5492:         w = XEiJ.regPC;
  5493:         XEiJ.regPC = w + 2;
  5494:         w = XEiJ.busRwze (w);  //pcwz
  5495:       }
  5496:       int d = XEiJ.regRn[w >> 12];  //Rn
  5497:       if (0 <= (short) w) {  //Dnのとき
  5498:         d = (byte) d;  //符号拡張する
  5499:       }
  5500:       int a = efaCntByte (ea);
  5501:       int l = XEiJ.busRbs (a);  //LB
  5502:       int u = XEiJ.busRbs (a + 1);  //UB
  5503:       //U-D,L-D,D-Lのいずれかに帰着させる
  5504:       //  参考
  5505:       //    https://twitter.com/moveccr/status/814309539012976640
  5506:       //    https://twitter.com/moveccr/status/814309679845109760
  5507:       //    https://twitter.com/moveccr/status/814310106598871040
  5508:       int x, y;
  5509:       if (Integer.compareUnsigned (l, d) < 0 && Integer.compareUnsigned (l, u) <= 0 || d == u) {
  5510:         x = u;
  5511:         y = d;
  5512:       } else if (Integer.compareUnsigned (d, u) < 0 && Integer.compareUnsigned (u, l) < 0) {
  5513:         x = l;
  5514:         y = d;
  5515:       } else {
  5516:         x = d;
  5517:         y = l;
  5518:       }
  5519:       int z = x - y;
  5520:       int c = (x & (y ^ z) ^ (y | z)) >>> 31;
  5521:       XEiJ.regCCR = (XEiJ.regCCR & XEiJ.REG_CCR_X |  //X
  5522:                      z >>> 28 & XEiJ.REG_CCR_N |  //N
  5523:                      (z == 0 ? XEiJ.REG_CCR_Z : 0) |  //Z
  5524:                      ((x ^ y) & (x ^ z)) >>> 31 << 1 |  //V
  5525:                      c);  //C
  5526:       if ((w >> 11 & c) != 0) {  //CHK2でCがセットされたとき
  5527:         XEiJ.mpuCycleCount += 40 - 8 - 34;
  5528:         M68kException.m6eAddress = XEiJ.regPC0;  //アドレスは命令の先頭
  5529:         M68kException.m6eNumber = M68kException.M6E_CHK_INSTRUCTION;
  5530:         throw M68kException.m6eSignal;
  5531:       }
  5532:     }
  5533:     if (Profiling.PFF_ON) {
  5534:       Profiling.pffTotal[Profiling.PRF.irpCmp2Chk2Byte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpCmp2Chk2Byte.ordinal ()];
  5535:       Profiling.pffCount[Profiling.PRF.irpCmp2Chk2Byte.ordinal ()]++;
  5536:     }
  5537:   }  //irpCmp2Chk2Byte
  5538: 
  5539:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5540:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5541:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5542:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5543:   //BTST.L Dq,Dr                                    |-|012346|-|--U--|--*--|D         |0000_qqq_100_000_rrr
  5544:   //MOVEP.W (d16,Ar),Dq                             |-|01234S|-|-----|-----|          |0000_qqq_100_001_rrr-{data}
  5545:   //BTST.B Dq,<ea>                                  |-|012346|-|--U--|--*--|  M+-WXZPI|0000_qqq_100_mmm_rrr
  5546:   public static void irpBtstReg () throws M68kException {
  5547:     if (Profiling.PFF_ON) {
  5548:       Profiling.pffStart[Profiling.PRF.irpBtstReg.ordinal ()] = System.nanoTime ();
  5549:     }
  5550:     int ea = XEiJ.regOC & 63;
  5551:     int qqq = XEiJ.regOC >> 9;  //qqq
  5552:     if (ea >> 3 == XEiJ.MMM_AR) {  //MOVEP.W (d16,Ar),Dq
  5553:       XEiJ.mpuCycleCount += 16;
  5554:       int a;
  5555:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5556:         a = XEiJ.regRn[ea] + XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws。このr[ea]はアドレスレジスタ
  5557:       } else {
  5558:         a = XEiJ.regPC;
  5559:         XEiJ.regPC = a + 2;
  5560:         a = XEiJ.regRn[ea] + XEiJ.busRwse (a);  //pcws。このr[ea]はアドレスレジスタ
  5561:       }
  5562:       XEiJ.regRn[qqq] = ~0xffff & XEiJ.regRn[qqq] | XEiJ.busRbz (a) << 8 | XEiJ.busRbz (a + 2);  //Javaは評価順序が保証されている
  5563:     } else {  //BTST.L Dq,Dr/<ea>
  5564:       int y = XEiJ.regRn[qqq];
  5565:       if (ea < XEiJ.EA_AR) {  //BTST.L Dq,Dr
  5566:         XEiJ.mpuCycleCount += 6;
  5567:         XEiJ.regCCR = XEiJ.regCCR & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_N | XEiJ.REG_CCR_V | XEiJ.REG_CCR_C) | (~XEiJ.regRn[ea] >>> y & 1) << 2;  //ccr_btst。intのシフトは5bitでマスクされるので&31を省略
  5568:       } else {  //BTST.B Dq,<ea>
  5569:         XEiJ.mpuCycleCount += 4;
  5570:         XEiJ.regCCR = XEiJ.regCCR & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_N | XEiJ.REG_CCR_V | XEiJ.REG_CCR_C) | (~XEiJ.busRbs (efaAnyByte (ea)) >>> (y & 7) & 1) << 2;  //ccr_btst
  5571:       }
  5572:     }
  5573:     if (Profiling.PFF_ON) {
  5574:       Profiling.pffTotal[Profiling.PRF.irpBtstReg.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpBtstReg.ordinal ()];
  5575:       Profiling.pffCount[Profiling.PRF.irpBtstReg.ordinal ()]++;
  5576:     }
  5577:   }  //irpBtstReg
  5578: 
  5579:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5580:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5581:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5582:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5583:   //BCHG.L Dq,Dr                                    |-|012346|-|--U--|--*--|D         |0000_qqq_101_000_rrr
  5584:   //MOVEP.L (d16,Ar),Dq                             |-|01234S|-|-----|-----|          |0000_qqq_101_001_rrr-{data}
  5585:   //BCHG.B Dq,<ea>                                  |-|012346|-|--U--|--*--|  M+-WXZ  |0000_qqq_101_mmm_rrr
  5586:   public static void irpBchgReg () throws M68kException {
  5587:     if (Profiling.PFF_ON) {
  5588:       Profiling.pffStart[Profiling.PRF.irpBchgReg.ordinal ()] = System.nanoTime ();
  5589:     }
  5590:     int ea = XEiJ.regOC & 63;
  5591:     int qqq = XEiJ.regOC >> 9;  //qqq
  5592:     if (ea >> 3 == XEiJ.MMM_AR) {  //MOVEP.L (d16,Ar),Dq
  5593:       XEiJ.mpuCycleCount += 24;
  5594:       int a;
  5595:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5596:         a = XEiJ.regRn[ea] + XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws。このr[ea]はアドレスレジスタ
  5597:       } else {
  5598:         a = XEiJ.regPC;
  5599:         XEiJ.regPC = a + 2;
  5600:         a = XEiJ.regRn[ea] + XEiJ.busRwse (a);  //pcws。このr[ea]はアドレスレジスタ
  5601:       }
  5602:       XEiJ.regRn[qqq] = XEiJ.busRbs (a) << 24 | XEiJ.busRbz (a + 2) << 16 | XEiJ.busRbz (a + 4) << 8 | XEiJ.busRbz (a + 6);  //Javaは評価順序が保証されている
  5603:     } else {  //BCHG.L Dq,Dr/<ea>
  5604:       int x;
  5605:       int y = XEiJ.regRn[qqq];
  5606:       if (ea < XEiJ.EA_AR) {  //BCHG.L Dq,Dr
  5607:         XEiJ.regRn[ea] = (x = XEiJ.regRn[ea]) ^ (y = 1 << y);  //intのシフトは5bitでマスクされるので1<<(y&0x1f)の&0x1fを省略
  5608:         XEiJ.mpuCycleCount += (char) y != 0 ? 6 : 8;  //(0xffff&y)!=0
  5609:       } else {  //BCHG.B Dq,<ea>
  5610:         XEiJ.mpuCycleCount += 8;
  5611:         int a = efaMltByte (ea);
  5612:         XEiJ.busWb (a, (x = XEiJ.busRbs (a)) ^ (y = 1 << (y & 7)));
  5613:       }
  5614:       XEiJ.regCCR = XEiJ.regCCR & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_N | XEiJ.REG_CCR_V | XEiJ.REG_CCR_C) | (x & y) - 1 >>> 31 << 2;  //ccr_btst
  5615:     }
  5616:     if (Profiling.PFF_ON) {
  5617:       Profiling.pffTotal[Profiling.PRF.irpBchgReg.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpBchgReg.ordinal ()];
  5618:       Profiling.pffCount[Profiling.PRF.irpBchgReg.ordinal ()]++;
  5619:     }
  5620:   }  //irpBchgReg
  5621: 
  5622:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5623:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5624:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5625:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5626:   //BCLR.L Dq,Dr                                    |-|012346|-|--U--|--*--|D         |0000_qqq_110_000_rrr
  5627:   //MOVEP.W Dq,(d16,Ar)                             |-|01234S|-|-----|-----|          |0000_qqq_110_001_rrr-{data}
  5628:   //BCLR.B Dq,<ea>                                  |-|012346|-|--U--|--*--|  M+-WXZ  |0000_qqq_110_mmm_rrr
  5629:   public static void irpBclrReg () throws M68kException {
  5630:     if (Profiling.PFF_ON) {
  5631:       Profiling.pffStart[Profiling.PRF.irpBclrReg.ordinal ()] = System.nanoTime ();
  5632:     }
  5633:     int ea = XEiJ.regOC & 63;
  5634:     int y = XEiJ.regRn[XEiJ.regOC >> 9];  //qqq
  5635:     if (ea >> 3 == XEiJ.MMM_AR) {  //MOVEP.W Dq,(d16,Ar)
  5636:       XEiJ.mpuCycleCount += 16;
  5637:       int a;
  5638:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5639:         a = XEiJ.regRn[ea] + XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws。このr[ea]はアドレスレジスタ
  5640:       } else {
  5641:         a = XEiJ.regPC;
  5642:         XEiJ.regPC = a + 2;
  5643:         a = XEiJ.regRn[ea] + XEiJ.busRwse (a);  //pcws。このr[ea]はアドレスレジスタ
  5644:       }
  5645:       XEiJ.busWb (a, y >> 8);
  5646:       XEiJ.busWb (a + 2, y);
  5647:     } else {  //BCLR.L Dq,Dr/<ea>
  5648:       int x;
  5649:       if (ea < XEiJ.EA_AR) {  //BCLR.L Dq,Dr
  5650:         XEiJ.regRn[ea] = (x = XEiJ.regRn[ea]) & ~(y = 1 << y);  //intのシフトは5bitでマスクされるので1<<(y&0x1f)の&0x1fを省略
  5651:         XEiJ.mpuCycleCount += (char) y != 0 ? 8 : 10;  //(0xffff&y)!=0
  5652:       } else {  //BCLR.B Dq,<ea>
  5653:         XEiJ.mpuCycleCount += 8;
  5654:         int a = efaMltByte (ea);
  5655:         XEiJ.busWb (a, (x = XEiJ.busRbs (a)) & ~(y = 1 << (y & 7)));
  5656:       }
  5657:       XEiJ.regCCR = XEiJ.regCCR & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_N | XEiJ.REG_CCR_V | XEiJ.REG_CCR_C) | (x & y) - 1 >>> 31 << 2;  //ccr_btst
  5658:     }
  5659:     if (Profiling.PFF_ON) {
  5660:       Profiling.pffTotal[Profiling.PRF.irpBclrReg.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpBclrReg.ordinal ()];
  5661:       Profiling.pffCount[Profiling.PRF.irpBclrReg.ordinal ()]++;
  5662:     }
  5663:   }  //irpBclrReg
  5664: 
  5665:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5666:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5667:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5668:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5669:   //BSET.L Dq,Dr                                    |-|012346|-|--U--|--*--|D         |0000_qqq_111_000_rrr
  5670:   //MOVEP.L Dq,(d16,Ar)                             |-|01234S|-|-----|-----|          |0000_qqq_111_001_rrr-{data}
  5671:   //BSET.B Dq,<ea>                                  |-|012346|-|--U--|--*--|  M+-WXZ  |0000_qqq_111_mmm_rrr
  5672:   public static void irpBsetReg () throws M68kException {
  5673:     if (Profiling.PFF_ON) {
  5674:       Profiling.pffStart[Profiling.PRF.irpBsetReg.ordinal ()] = System.nanoTime ();
  5675:     }
  5676:     int ea = XEiJ.regOC & 63;
  5677:     int y = XEiJ.regRn[XEiJ.regOC >> 9];  //qqq
  5678:     if (ea >> 3 == XEiJ.MMM_AR) {  //MOVEP.L Dq,(d16,Ar)
  5679:       XEiJ.mpuCycleCount += 24;
  5680:       int a;
  5681:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5682:         a = XEiJ.regRn[ea] + XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws。このr[ea]はアドレスレジスタ
  5683:       } else {
  5684:         a = XEiJ.regPC;
  5685:         XEiJ.regPC = a + 2;
  5686:         a = XEiJ.regRn[ea] + XEiJ.busRwse (a);  //pcws。このr[ea]はアドレスレジスタ
  5687:       }
  5688:       XEiJ.busWb (a, y >> 24);
  5689:       XEiJ.busWb (a + 2, y >> 16);
  5690:       XEiJ.busWb (a + 4, y >> 8);
  5691:       XEiJ.busWb (a + 6, y);
  5692:     } else {  //BSET.L Dq,Dr/<ea>
  5693:       int x;
  5694:       if (ea < XEiJ.EA_AR) {  //BSET.L Dq,Dr
  5695:         XEiJ.regRn[ea] = (x = XEiJ.regRn[ea]) | (y = 1 << y);  //intのシフトは5bitでマスクされるので1<<(y&0x1f)の&0x1fを省略
  5696:         XEiJ.mpuCycleCount += (char) y != 0 ? 6 : 8;  //(0xffff&y)!=0
  5697:       } else {  //BSET.B Dq,<ea>
  5698:         XEiJ.mpuCycleCount += 8;
  5699:         int a = efaMltByte (ea);
  5700:         XEiJ.busWb (a, (x = XEiJ.busRbs (a)) | (y = 1 << (y & 7)));
  5701:       }
  5702:       XEiJ.regCCR = XEiJ.regCCR & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_N | XEiJ.REG_CCR_V | XEiJ.REG_CCR_C) | (x & y) - 1 >>> 31 << 2;  //ccr_btst
  5703:     }
  5704:     if (Profiling.PFF_ON) {
  5705:       Profiling.pffTotal[Profiling.PRF.irpBsetReg.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpBsetReg.ordinal ()];
  5706:       Profiling.pffCount[Profiling.PRF.irpBsetReg.ordinal ()]++;
  5707:     }
  5708:   }  //irpBsetReg
  5709: 
  5710:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5711:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5712:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5713:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5714:   //ANDI.B #<data>,<ea>                             |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_001_000_mmm_rrr-{data}
  5715:   //AND.B #<data>,<ea>                              |A|012346|-|-UUUU|-**00|  M+-WXZ  |0000_001_000_mmm_rrr-{data}  [ANDI.B #<data>,<ea>]
  5716:   //ANDI.B #<data>,CCR                              |-|012346|-|*****|*****|          |0000_001_000_111_100-{data}
  5717:   public static void irpAndiByte () throws M68kException {
  5718:     if (Profiling.PFF_ON) {
  5719:       Profiling.pffStart[Profiling.PRF.irpAndiByte.ordinal ()] = System.nanoTime ();
  5720:     }
  5721:     int ea = XEiJ.regOC & 63;
  5722:     int z;
  5723:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5724:       z = XEiJ.busRbs ((XEiJ.regPC += 2) - 1);  //pcbs
  5725:     } else {
  5726:       z = XEiJ.regPC;
  5727:       XEiJ.regPC = z + 2;
  5728:       z = XEiJ.busRbs (z + 1);  //pcbs
  5729:     }
  5730:     if (ea < XEiJ.EA_AR) {  //ANDI.B #<data>,Dr
  5731:       XEiJ.mpuCycleCount += 8;
  5732:       z = XEiJ.regRn[ea] &= ~255 | z;  //1拡張してからAND
  5733:       XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  5734:     } else if (ea == XEiJ.EA_IM) {  //ANDI.B #<data>,CCR
  5735:       XEiJ.mpuCycleCount += 20;
  5736:       XEiJ.regCCR &= z;
  5737:     } else {  //ANDI.B #<data>,<mem>
  5738:       XEiJ.mpuCycleCount += 12;
  5739:       int a = efaMltByte (ea);
  5740:       XEiJ.busWb (a, z &= XEiJ.busRbs (a));
  5741:       XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  5742:     }
  5743:     if (Profiling.PFF_ON) {
  5744:       Profiling.pffTotal[Profiling.PRF.irpAndiByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpAndiByte.ordinal ()];
  5745:       Profiling.pffCount[Profiling.PRF.irpAndiByte.ordinal ()]++;
  5746:     }
  5747:   }  //irpAndiByte
  5748: 
  5749:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5750:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5751:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5752:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5753:   //ANDI.W #<data>,<ea>                             |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_001_001_mmm_rrr-{data}
  5754:   //AND.W #<data>,<ea>                              |A|012346|-|-UUUU|-**00|  M+-WXZ  |0000_001_001_mmm_rrr-{data}  [ANDI.W #<data>,<ea>]
  5755:   //ANDI.W #<data>,SR                               |-|012346|P|*****|*****|          |0000_001_001_111_100-{data}
  5756:   public static void irpAndiWord () throws M68kException {
  5757:     if (Profiling.PFF_ON) {
  5758:       Profiling.pffStart[Profiling.PRF.irpAndiWord.ordinal ()] = System.nanoTime ();
  5759:     }
  5760:     int ea = XEiJ.regOC & 63;
  5761:     if (ea < XEiJ.EA_AR) {  //ANDI.W #<data>,Dr
  5762:       int z;
  5763:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5764:         z = XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
  5765:       } else {
  5766:         z = XEiJ.regPC;
  5767:         XEiJ.regPC = z + 2;
  5768:         z = XEiJ.busRwse (z);  //pcws
  5769:       }
  5770:       XEiJ.mpuCycleCount += 8;
  5771:       z = XEiJ.regRn[ea] &= ~65535 | z;  //1拡張してからAND
  5772:       XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | (char) z - 1 >> 31 & XEiJ.REG_CCR_Z | ((short) z < 0 ? XEiJ.REG_CCR_N : 0);  //ccr_tst_word
  5773:     } else if (ea == XEiJ.EA_IM) {  //ANDI.W #<data>,SR
  5774:       if (XEiJ.regSRS == 0) {  //ユーザモードのとき
  5775:         M68kException.m6eNumber = M68kException.M6E_PRIVILEGE_VIOLATION;
  5776:         throw M68kException.m6eSignal;
  5777:       }
  5778:       //以下はスーパーバイザモード
  5779:       XEiJ.mpuCycleCount += 20;
  5780:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5781:         irpSetSR ((XEiJ.regSRT1 | XEiJ.regSRT0 | XEiJ.regSRS | XEiJ.regSRM | XEiJ.regSRI | XEiJ.regCCR) & XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。特権違反チェックが先
  5782:       } else {
  5783:         int t = XEiJ.regPC;
  5784:         XEiJ.regPC = t + 2;
  5785:         irpSetSR ((XEiJ.regSRT1 | XEiJ.regSRT0 | XEiJ.regSRS | XEiJ.regSRM | XEiJ.regSRI | XEiJ.regCCR) & XEiJ.busRwse (t));  //pcws。特権違反チェックが先
  5786:       }
  5787:     } else {  //ANDI.W #<data>,<mem>
  5788:       int z;
  5789:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5790:         z = XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
  5791:       } else {
  5792:         z = XEiJ.regPC;
  5793:         XEiJ.regPC = z + 2;
  5794:         z = XEiJ.busRwse (z);  //pcws
  5795:       }
  5796:       XEiJ.mpuCycleCount += 12;
  5797:       int a = efaMltWord (ea);
  5798:       XEiJ.busWw (a, z &= XEiJ.busRws (a));
  5799:       XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | (char) z - 1 >> 31 & XEiJ.REG_CCR_Z | ((short) z < 0 ? XEiJ.REG_CCR_N : 0);  //ccr_tst_word
  5800:     }
  5801:     if (Profiling.PFF_ON) {
  5802:       Profiling.pffTotal[Profiling.PRF.irpAndiWord.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpAndiWord.ordinal ()];
  5803:       Profiling.pffCount[Profiling.PRF.irpAndiWord.ordinal ()]++;
  5804:     }
  5805:   }  //irpAndiWord
  5806: 
  5807:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5808:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5809:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5810:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5811:   //ANDI.L #<data>,<ea>                             |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_001_010_mmm_rrr-{data}
  5812:   //AND.L #<data>,<ea>                              |A|012346|-|-UUUU|-**00|  M+-WXZ  |0000_001_010_mmm_rrr-{data}  [ANDI.L #<data>,<ea>]
  5813:   public static void irpAndiLong () throws M68kException {
  5814:     if (Profiling.PFF_ON) {
  5815:       Profiling.pffStart[Profiling.PRF.irpAndiLong.ordinal ()] = System.nanoTime ();
  5816:     }
  5817:     int ea = XEiJ.regOC & 63;
  5818:     int y;
  5819:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5820:       y = XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
  5821:     } else {
  5822:       y = XEiJ.regPC;
  5823:       XEiJ.regPC = y + 4;
  5824:       y = XEiJ.busRlse (y);  //pcls
  5825:     }
  5826:     int z;
  5827:     if (ea < XEiJ.EA_AR) {  //ANDI.L #<data>,Dr
  5828:       XEiJ.mpuCycleCount += 16;
  5829:       z = XEiJ.regRn[ea] &= y;
  5830:     } else {  //ANDI.L #<data>,<mem>
  5831:       XEiJ.mpuCycleCount += 20;
  5832:       int a = efaMltLong (ea);
  5833:       XEiJ.busWl (a, z = XEiJ.busRls (a) & y);
  5834:     }
  5835:     XEiJ.regCCR = z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X);  //ccr_tst
  5836:     if (Profiling.PFF_ON) {
  5837:       Profiling.pffTotal[Profiling.PRF.irpAndiLong.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpAndiLong.ordinal ()];
  5838:       Profiling.pffCount[Profiling.PRF.irpAndiLong.ordinal ()]++;
  5839:     }
  5840:   }  //irpAndiLong
  5841: 
  5842:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5843:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5844:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5845:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5846:   //BYTEREV.L Dr                                    |-|------|-|-----|-----|D         |0000_001_011_000_rrr (ISA_C)
  5847:   //CMP2.W <ea>,Rn                                  |-|--234S|-|-UUUU|-U*U*|  M  WXZP |0000_001_011_mmm_rrr-rnnn000000000000
  5848:   //CHK2.W <ea>,Rn                                  |-|--234S|-|-UUUU|-U*U*|  M  WXZP |0000_001_011_mmm_rrr-rnnn100000000000
  5849:   //
  5850:   //BYTEREV.L Dr
  5851:   //  Drのバイトの並びを逆順にする。CCRは変化しない
  5852:   //
  5853:   //CHK2.W <ea>,Rn
  5854:   //  <ea>から下限と上限をリードしてRnが範囲内か調べる
  5855:   //  CHK2.W <ea>,Anは下限と上限をそれぞれロングに符号拡張してロングで比較する
  5856:   //  Rnが下限または上限と等しいときZをセットする
  5857:   //  Rnが範囲外のときCをセットする。このときCHK instruction例外が発生する
  5858:   //  060ISPのソースは注釈に誤りが多いので注釈ではなくコードを参考にする
  5859:   //  CCR
  5860:   //    X  変化しない
  5861:   //    N  変化しない(M68000PRMでは未定義)
  5862:   //    Z  Rn-LB==0||Rn-LB==UB-LB
  5863:   //    V  変化しない(M68000PRMでは未定義)
  5864:   //    C  Rn-LB>UB-LB(符号なし比較)
  5865:   //
  5866:   //CMP2.W <ea>,Rn
  5867:   //  <ea>から下限と上限をリードしてRnが範囲内か調べる
  5868:   //  CMP2.W <ea>,Anは下限と上限をそれぞれロングに符号拡張してロングで比較する
  5869:   //  Rnが下限または上限と等しいときZをセットする
  5870:   //  Rnが範囲外のときCをセットする
  5871:   //  060ISPのソースは注釈に誤りが多いので注釈ではなくコードを参考にする
  5872:   //  CCR
  5873:   //    X  変化しない
  5874:   //    N  変化しない(M68000PRMでは未定義)
  5875:   //    Z  Rn-LB==0||Rn-LB==UB-LB
  5876:   //    V  変化しない(M68000PRMでは未定義)
  5877:   //    C  Rn-LB>UB-LB(符号なし比較)
  5878:   public static void irpCmp2Chk2Word () throws M68kException {
  5879:     if (Profiling.PFF_ON) {
  5880:       Profiling.pffStart[Profiling.PRF.irpCmp2Chk2Word.ordinal ()] = System.nanoTime ();
  5881:     }
  5882:     int ea = XEiJ.regOC & 63;
  5883:     if (ea < XEiJ.EA_AR) {  //BYTEREV.L Dr
  5884:       XEiJ.mpuCycleCount += 4;
  5885:       if (true) {  //0.10ns-0.18ns  0x782750ec
  5886:         XEiJ.regRn[ea] = Integer.reverseBytes (XEiJ.regRn[ea]);
  5887:       } else {  //1.06ns  0x782750ec
  5888:         int x = XEiJ.regRn[ea];
  5889:         XEiJ.regRn[ea] = x << 24 | x << 8 & 0x00ff0000 | x >>> 8 & 0x0000ff00 | x >>> 24;
  5890:       }
  5891:     } else {  //CMP2/CHK2.W <ea>,Rn
  5892:       XEiJ.mpuCycleCount += 8;
  5893:       int w;
  5894:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5895:         w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz
  5896:       } else {
  5897:         w = XEiJ.regPC;
  5898:         XEiJ.regPC = w + 2;
  5899:         w = XEiJ.busRwze (w);  //pcwz
  5900:       }
  5901:       int d = XEiJ.regRn[w >> 12];  //Rn
  5902:       if (0 <= (short) w) {  //Dnのとき
  5903:         d = (short) d;  //符号拡張する
  5904:       }
  5905:       int a = efaCntWord (ea);
  5906:       int l = XEiJ.busRws (a);  //LB
  5907:       int u = XEiJ.busRws (a + 2);  //UB
  5908:       //U-D,L-D,D-Lのいずれかに帰着させる
  5909:       //  参考
  5910:       //    https://twitter.com/moveccr/status/814309539012976640
  5911:       //    https://twitter.com/moveccr/status/814309679845109760
  5912:       //    https://twitter.com/moveccr/status/814310106598871040
  5913:       int x, y;
  5914:       if (Integer.compareUnsigned (l, d) < 0 && Integer.compareUnsigned (l, u) <= 0 || d == u) {
  5915:         x = u;
  5916:         y = d;
  5917:       } else if (Integer.compareUnsigned (d, u) < 0 && Integer.compareUnsigned (u, l) < 0) {
  5918:         x = l;
  5919:         y = d;
  5920:       } else {
  5921:         x = d;
  5922:         y = l;
  5923:       }
  5924:       int z = x - y;
  5925:       int c = (x & (y ^ z) ^ (y | z)) >>> 31;
  5926:       XEiJ.regCCR = (XEiJ.regCCR & XEiJ.REG_CCR_X |  //X
  5927:                      z >>> 28 & XEiJ.REG_CCR_N |  //N
  5928:                      (z == 0 ? XEiJ.REG_CCR_Z : 0) |  //Z
  5929:                      ((x ^ y) & (x ^ z)) >>> 31 << 1 |  //V
  5930:                      c);  //C
  5931:       if ((w >> 11 & c) != 0) {  //CHK2でCがセットされたとき
  5932:         XEiJ.mpuCycleCount += 40 - 8 - 34;
  5933:         M68kException.m6eAddress = XEiJ.regPC0;  //アドレスは命令の先頭
  5934:         M68kException.m6eNumber = M68kException.M6E_CHK_INSTRUCTION;
  5935:         throw M68kException.m6eSignal;
  5936:       }
  5937:     }
  5938:     if (Profiling.PFF_ON) {
  5939:       Profiling.pffTotal[Profiling.PRF.irpCmp2Chk2Word.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpCmp2Chk2Word.ordinal ()];
  5940:       Profiling.pffCount[Profiling.PRF.irpCmp2Chk2Word.ordinal ()]++;
  5941:     }
  5942:   }  //irpCmp2Chk2Word
  5943: 
  5944:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5945:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5946:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5947:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5948:   //SUBI.B #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0000_010_000_mmm_rrr-{data}
  5949:   //SUB.B #<data>,<ea>                              |A|012346|-|UUUUU|*****|  M+-WXZ  |0000_010_000_mmm_rrr-{data}  [SUBI.B #<data>,<ea>]
  5950:   public static void irpSubiByte () throws M68kException {
  5951:     if (Profiling.PFF_ON) {
  5952:       Profiling.pffStart[Profiling.PRF.irpSubiByte.ordinal ()] = System.nanoTime ();
  5953:     }
  5954:     int ea = XEiJ.regOC & 63;
  5955:     int x;
  5956:     int y;
  5957:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5958:       y = XEiJ.busRbs ((XEiJ.regPC += 2) - 1);  //pcbs
  5959:     } else {
  5960:       y = XEiJ.regPC;
  5961:       XEiJ.regPC = y + 2;
  5962:       y = XEiJ.busRbs (y + 1);  //pcbs
  5963:     }
  5964:     int z;
  5965:     if (ea < XEiJ.EA_AR) {  //SUBI.B #<data>,Dr
  5966:       XEiJ.mpuCycleCount += 8;
  5967:       z = (byte) (XEiJ.regRn[ea] = ~0xff & (x = XEiJ.regRn[ea]) | 0xff & (x = (byte) x) - y);
  5968:     } else {  //SUBI.B #<data>,<mem>
  5969:       XEiJ.mpuCycleCount += 12;
  5970:       int a = efaMltByte (ea);
  5971:       XEiJ.busWb (a, z = (byte) ((x = XEiJ.busRbs (a)) - y));
  5972:     }
  5973:     XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.REG_CCR_Z : 0) |
  5974:            ((x ^ y) & (x ^ z)) >>> 31 << 1 |
  5975:            (x & (y ^ z) ^ (y | z)) >> 31 & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_C));  //ccr_sub
  5976:     if (Profiling.PFF_ON) {
  5977:       Profiling.pffTotal[Profiling.PRF.irpSubiByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpSubiByte.ordinal ()];
  5978:       Profiling.pffCount[Profiling.PRF.irpSubiByte.ordinal ()]++;
  5979:     }
  5980:   }  //irpSubiByte
  5981: 
  5982:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5983:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  5984:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  5985:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  5986:   //SUBI.W #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0000_010_001_mmm_rrr-{data}
  5987:   //SUB.W #<data>,<ea>                              |A|012346|-|UUUUU|*****|  M+-WXZ  |0000_010_001_mmm_rrr-{data}  [SUBI.W #<data>,<ea>]
  5988:   public static void irpSubiWord () throws M68kException {
  5989:     if (Profiling.PFF_ON) {
  5990:       Profiling.pffStart[Profiling.PRF.irpSubiWord.ordinal ()] = System.nanoTime ();
  5991:     }
  5992:     int ea = XEiJ.regOC & 63;
  5993:     int x;
  5994:     int y;
  5995:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  5996:       y = XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
  5997:     } else {
  5998:       y = XEiJ.regPC;
  5999:       XEiJ.regPC = y + 2;
  6000:       y = XEiJ.busRwse (y);  //pcws
  6001:     }
  6002:     int z;
  6003:     if (ea < XEiJ.EA_AR) {  //SUBI.W #<data>,Dr
  6004:       XEiJ.mpuCycleCount += 8;
  6005:       z = (short) (XEiJ.regRn[ea] = ~0xffff & (x = XEiJ.regRn[ea]) | (char) ((x = (short) x) - y));
  6006:     } else {  //SUBI.W #<data>,<mem>
  6007:       XEiJ.mpuCycleCount += 12;
  6008:       int a = efaMltWord (ea);
  6009:       XEiJ.busWw (a, z = (short) ((x = XEiJ.busRws (a)) - y));
  6010:     }
  6011:     XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.REG_CCR_Z : 0) |
  6012:            ((x ^ y) & (x ^ z)) >>> 31 << 1 |
  6013:            (x & (y ^ z) ^ (y | z)) >> 31 & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_C));  //ccr_sub
  6014:     if (Profiling.PFF_ON) {
  6015:       Profiling.pffTotal[Profiling.PRF.irpSubiWord.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpSubiWord.ordinal ()];
  6016:       Profiling.pffCount[Profiling.PRF.irpSubiWord.ordinal ()]++;
  6017:     }
  6018:   }  //irpSubiWord
  6019: 
  6020:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6021:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6022:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6023:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6024:   //SUBI.L #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0000_010_010_mmm_rrr-{data}
  6025:   //SUB.L #<data>,<ea>                              |A|012346|-|UUUUU|*****|  M+-WXZ  |0000_010_010_mmm_rrr-{data}  [SUBI.L #<data>,<ea>]
  6026:   public static void irpSubiLong () throws M68kException {
  6027:     if (Profiling.PFF_ON) {
  6028:       Profiling.pffStart[Profiling.PRF.irpSubiLong.ordinal ()] = System.nanoTime ();
  6029:     }
  6030:     int ea = XEiJ.regOC & 63;
  6031:     int x;
  6032:     int y;
  6033:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6034:       y = XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
  6035:     } else {
  6036:       y = XEiJ.regPC;
  6037:       XEiJ.regPC = y + 4;
  6038:       y = XEiJ.busRlse (y);  //pcls
  6039:     }
  6040:     int z;
  6041:     if (ea < XEiJ.EA_AR) {  //SUBI.L #<data>,Dr
  6042:       XEiJ.mpuCycleCount += 16;
  6043:       XEiJ.regRn[ea] = z = (x = XEiJ.regRn[ea]) - y;
  6044:     } else {  //SUBI.L #<data>,<mem>
  6045:       XEiJ.mpuCycleCount += 20;
  6046:       int a = efaMltLong (ea);
  6047:       XEiJ.busWl (a, z = (x = XEiJ.busRls (a)) - y);
  6048:     }
  6049:     XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.REG_CCR_Z : 0) |
  6050:            ((x ^ y) & (x ^ z)) >>> 31 << 1 |
  6051:            (x & (y ^ z) ^ (y | z)) >> 31 & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_C));  //ccr_sub
  6052:     if (Profiling.PFF_ON) {
  6053:       Profiling.pffTotal[Profiling.PRF.irpSubiLong.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpSubiLong.ordinal ()];
  6054:       Profiling.pffCount[Profiling.PRF.irpSubiLong.ordinal ()]++;
  6055:     }
  6056:   }  //irpSubiLong
  6057: 
  6058:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6059:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6060:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6061:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6062:   //FF1.L Dr                                        |-|------|-|-UUUU|-**00|D         |0000_010_011_000_rrr (ISA_C)
  6063:   //CMP2.L <ea>,Rn                                  |-|--234S|-|-UUUU|-U*U*|  M  WXZP |0000_010_011_mmm_rrr-rnnn000000000000
  6064:   //CHK2.L <ea>,Rn                                  |-|--234S|-|-UUUU|-U*U*|  M  WXZP |0000_010_011_mmm_rrr-rnnn100000000000
  6065:   //
  6066:   //CHK2.L <ea>,Rn
  6067:   //  <ea>から下限と上限をリードしてRnが範囲内か調べる
  6068:   //  Rnが下限または上限と等しいときZをセットする
  6069:   //  Rnが範囲外のときCをセットする。このときCHK instruction例外が発生する
  6070:   //  060ISPのソースは注釈に誤りが多いので注釈ではなくコードを参考にする
  6071:   //  CCR
  6072:   //    X  変化しない
  6073:   //    N  変化しない(M68000PRMでは未定義)
  6074:   //    Z  Rn-LB==0||Rn-LB==UB-LB
  6075:   //    V  変化しない(M68000PRMでは未定義)
  6076:   //    C  Rn-LB>UB-LB(符号なし比較)
  6077:   //
  6078:   //CMP2.L <ea>,Rn
  6079:   //  <ea>から下限と上限をリードしてRnが範囲内か調べる
  6080:   //  Rnが下限または上限と等しいときZをセットする
  6081:   //  Rnが範囲外のときCをセットする
  6082:   //  060ISPのソースは注釈に誤りが多いので注釈ではなくコードを参考にする
  6083:   //  CCR
  6084:   //    X  変化しない
  6085:   //    N  変化しない(M68000PRMでは未定義)
  6086:   //    Z  Rn-LB==0||Rn-LB==UB-LB
  6087:   //    V  変化しない(M68000PRMでは未定義)
  6088:   //    C  Rn-LB>UB-LB(符号なし比較)
  6089:   //
  6090:   //FF1.L Dr
  6091:   //  Drの最上位の1のbit31からのオフセットをDrに格納する
  6092:   //  Drが0のときは32になる
  6093:   public static void irpCmp2Chk2Long () throws M68kException {
  6094:     if (Profiling.PFF_ON) {
  6095:       Profiling.pffStart[Profiling.PRF.irpCmp2Chk2Long.ordinal ()] = System.nanoTime ();
  6096:     }
  6097:     int ea = XEiJ.regOC & 63;
  6098:     if (ea < XEiJ.EA_AR) {  //FF1.L Dr
  6099:       XEiJ.mpuCycleCount += 4;
  6100:       int z = XEiJ.regRn[ea];
  6101:       if (true) {
  6102:         XEiJ.regRn[ea] = Integer.numberOfLeadingZeros (z);
  6103:       } else {
  6104:         if (z == 0) {
  6105:           XEiJ.regRn[ea] = 32;
  6106:         } else {
  6107:           int k = -(z >>> 16) >> 16 & 16;
  6108:           k += -(z >>> k + 8) >> 8 & 8;
  6109:           k += -(z >>> k + 4) >> 4 & 4;
  6110:           //     bit3  1  1  1  1  1  1  1  1  0  0  0  0  0  0  0  0
  6111:           //     bit2  1  1  1  1  0  0  0  0  1  1  1  1  0  0  0  0
  6112:           //     bit1  1  1  0  0  1  1  0  0  1  1  0  0  1  1  0  0
  6113:           //     bit0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1  0
  6114:           XEiJ.regRn[ea] = ((0b11_11_11_11_11_11_11_11_10_10_10_10_01_01_00_00 >>> (z >>> k << 1)) & 3) + k;  //intのシフトカウントは下位5bitだけが使用される
  6115:         }
  6116:       }
  6117:       XEiJ.regCCR = z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X);  //ccr_tst
  6118:     } else {  //CMP2/CHK2.L <ea>,Rn
  6119:       XEiJ.mpuCycleCount += 8;
  6120:       int w;
  6121:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6122:         w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz
  6123:       } else {
  6124:         w = XEiJ.regPC;
  6125:         XEiJ.regPC = w + 2;
  6126:         w = XEiJ.busRwze (w);  //pcwz
  6127:       }
  6128:       int d = XEiJ.regRn[w >> 12];  //Rn
  6129:       int a = efaCntLong (ea);
  6130:       int l = XEiJ.busRls (a);  //LB
  6131:       int u = XEiJ.busRls (a + 4);  //UB
  6132:       //U-D,L-D,D-Lのいずれかに帰着させる
  6133:       //  参考
  6134:       //    https://twitter.com/moveccr/status/814309539012976640
  6135:       //    https://twitter.com/moveccr/status/814309679845109760
  6136:       //    https://twitter.com/moveccr/status/814310106598871040
  6137:       int x, y;
  6138:       if (Integer.compareUnsigned (l, d) < 0 && Integer.compareUnsigned (l, u) <= 0 || d == u) {
  6139:         x = u;
  6140:         y = d;
  6141:       } else if (Integer.compareUnsigned (d, u) < 0 && Integer.compareUnsigned (u, l) < 0) {
  6142:         x = l;
  6143:         y = d;
  6144:       } else {
  6145:         x = d;
  6146:         y = l;
  6147:       }
  6148:       int z = x - y;
  6149:       int c = (x & (y ^ z) ^ (y | z)) >>> 31;
  6150:       XEiJ.regCCR = (XEiJ.regCCR & XEiJ.REG_CCR_X |  //X
  6151:                      z >>> 28 & XEiJ.REG_CCR_N |  //N
  6152:                      (z == 0 ? XEiJ.REG_CCR_Z : 0) |  //Z
  6153:                      ((x ^ y) & (x ^ z)) >>> 31 << 1 |  //V
  6154:                      c);  //C
  6155:       if ((w >> 11 & c) != 0) {  //CHK2でCがセットされたとき
  6156:         XEiJ.mpuCycleCount += 40 - 8 - 34;
  6157:         M68kException.m6eAddress = XEiJ.regPC0;  //アドレスは命令の先頭
  6158:         M68kException.m6eNumber = M68kException.M6E_CHK_INSTRUCTION;
  6159:         throw M68kException.m6eSignal;
  6160:       }
  6161:     }
  6162:     if (Profiling.PFF_ON) {
  6163:       Profiling.pffTotal[Profiling.PRF.irpCmp2Chk2Long.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpCmp2Chk2Long.ordinal ()];
  6164:       Profiling.pffCount[Profiling.PRF.irpCmp2Chk2Long.ordinal ()]++;
  6165:     }
  6166:   }  //irpCmp2Chk2Long
  6167: 
  6168:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6169:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6170:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6171:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6172:   //ADDI.B #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0000_011_000_mmm_rrr-{data}
  6173:   public static void irpAddiByte () throws M68kException {
  6174:     if (Profiling.PFF_ON) {
  6175:       Profiling.pffStart[Profiling.PRF.irpAddiByte.ordinal ()] = System.nanoTime ();
  6176:     }
  6177:     int ea = XEiJ.regOC & 63;
  6178:     int x;
  6179:     int y;
  6180:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6181:       y = XEiJ.busRbs ((XEiJ.regPC += 2) - 1);  //pcbs
  6182:     } else {
  6183:       y = XEiJ.regPC;
  6184:       XEiJ.regPC = y + 2;
  6185:       y = XEiJ.busRbs (y + 1);  //pcbs
  6186:     }
  6187:     int z;
  6188:     if (ea < XEiJ.EA_AR) {  //ADDI.B #<data>,Dr
  6189:       XEiJ.mpuCycleCount += 8;
  6190:       z = (byte) (XEiJ.regRn[ea] = ~0xff & (x = XEiJ.regRn[ea]) | 0xff & (x = (byte) x) + y);
  6191:     } else {  //ADDI.B #<data>,<mem>
  6192:       XEiJ.mpuCycleCount += 12;
  6193:       int a = efaMltByte (ea);
  6194:       XEiJ.busWb (a, z = (byte) ((x = XEiJ.busRbs (a)) + y));
  6195:     }
  6196:     XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.REG_CCR_Z : 0) |
  6197:            ((x ^ z) & (y ^ z)) >>> 31 << 1 |
  6198:            ((x | y) ^ (x ^ y) & z) >> 31 & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_C));  //ccr_add
  6199:     if (Profiling.PFF_ON) {
  6200:       Profiling.pffTotal[Profiling.PRF.irpAddiByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpAddiByte.ordinal ()];
  6201:       Profiling.pffCount[Profiling.PRF.irpAddiByte.ordinal ()]++;
  6202:     }
  6203:   }  //irpAddiByte
  6204: 
  6205:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6206:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6207:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6208:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6209:   //ADDI.W #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0000_011_001_mmm_rrr-{data}
  6210:   public static void irpAddiWord () throws M68kException {
  6211:     if (Profiling.PFF_ON) {
  6212:       Profiling.pffStart[Profiling.PRF.irpAddiWord.ordinal ()] = System.nanoTime ();
  6213:     }
  6214:     int ea = XEiJ.regOC & 63;
  6215:     int x;
  6216:     int y;
  6217:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6218:       y = XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
  6219:     } else {
  6220:       y = XEiJ.regPC;
  6221:       XEiJ.regPC = y + 2;
  6222:       y = XEiJ.busRwse (y);  //pcws
  6223:     }
  6224:     int z;
  6225:     if (ea < XEiJ.EA_AR) {  //ADDI.W #<data>,Dr
  6226:       XEiJ.mpuCycleCount += 8;
  6227:       z = (short) (XEiJ.regRn[ea] = ~0xffff & (x = XEiJ.regRn[ea]) | (char) ((x = (short) x) + y));
  6228:     } else {  //ADDI.W #<data>,<mem>
  6229:       XEiJ.mpuCycleCount += 12;
  6230:       int a = efaMltWord (ea);
  6231:       XEiJ.busWw (a, z = (short) ((x = XEiJ.busRws (a)) + y));
  6232:     }
  6233:     XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.REG_CCR_Z : 0) |
  6234:            ((x ^ z) & (y ^ z)) >>> 31 << 1 |
  6235:            ((x | y) ^ (x ^ y) & z) >> 31 & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_C));  //ccr_add
  6236:     if (Profiling.PFF_ON) {
  6237:       Profiling.pffTotal[Profiling.PRF.irpAddiWord.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpAddiWord.ordinal ()];
  6238:       Profiling.pffCount[Profiling.PRF.irpAddiWord.ordinal ()]++;
  6239:     }
  6240:   }  //irpAddiWord
  6241: 
  6242:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6243:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6244:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6245:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6246:   //ADDI.L #<data>,<ea>                             |-|012346|-|UUUUU|*****|D M+-WXZ  |0000_011_010_mmm_rrr-{data}
  6247:   public static void irpAddiLong () throws M68kException {
  6248:     if (Profiling.PFF_ON) {
  6249:       Profiling.pffStart[Profiling.PRF.irpAddiLong.ordinal ()] = System.nanoTime ();
  6250:     }
  6251:     int ea = XEiJ.regOC & 63;
  6252:     int x;
  6253:     int y;
  6254:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6255:       y = XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
  6256:     } else {
  6257:       y = XEiJ.regPC;
  6258:       XEiJ.regPC = y + 4;
  6259:       y = XEiJ.busRlse (y);  //pcls
  6260:     }
  6261:     int z;
  6262:     if (ea < XEiJ.EA_AR) {  //ADDI.L #<data>,Dr
  6263:       XEiJ.mpuCycleCount += 16;
  6264:       XEiJ.regRn[ea] = z = (x = XEiJ.regRn[ea]) + y;
  6265:     } else {  //ADDI.L #<data>,<mem>
  6266:       XEiJ.mpuCycleCount += 20;
  6267:       int a = efaMltLong (ea);
  6268:       XEiJ.busWl (a, z = (x = XEiJ.busRls (a)) + y);
  6269:     }
  6270:     XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.REG_CCR_Z : 0) |
  6271:            ((x ^ z) & (y ^ z)) >>> 31 << 1 |
  6272:            ((x | y) ^ (x ^ y) & z) >> 31 & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_C));  //ccr_add
  6273:     if (Profiling.PFF_ON) {
  6274:       Profiling.pffTotal[Profiling.PRF.irpAddiLong.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpAddiLong.ordinal ()];
  6275:       Profiling.pffCount[Profiling.PRF.irpAddiLong.ordinal ()]++;
  6276:     }
  6277:   }  //irpAddiLong
  6278: 
  6279:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6280:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6281:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6282:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6283:   //BTST.L #<data>,Dr                               |-|012346|-|--U--|--*--|D         |0000_100_000_000_rrr-{data}
  6284:   //BTST.B #<data>,<ea>                             |-|012346|-|--U--|--*--|  M+-WXZP |0000_100_000_mmm_rrr-{data}
  6285:   public static void irpBtstImm () throws M68kException {
  6286:     if (Profiling.PFF_ON) {
  6287:       Profiling.pffStart[Profiling.PRF.irpBtstImm.ordinal ()] = System.nanoTime ();
  6288:     }
  6289:     int ea = XEiJ.regOC & 63;
  6290:     int y;
  6291:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6292:       y = XEiJ.busRbs ((XEiJ.regPC += 2) - 1);  //pcbs
  6293:     } else {
  6294:       y = XEiJ.regPC;
  6295:       XEiJ.regPC = y + 2;
  6296:       y = XEiJ.busRbs (y + 1);  //pcbs
  6297:     }
  6298:     if (ea < XEiJ.EA_AR) {  //BTST.L #<data>,Dr
  6299:       XEiJ.mpuCycleCount += 10;
  6300:       XEiJ.regCCR = XEiJ.regCCR & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_N | XEiJ.REG_CCR_V | XEiJ.REG_CCR_C) | (~XEiJ.regRn[ea] >>> y & 1) << 2;  //ccr_btst。intのシフトは5bitでマスクされるので&31を省略
  6301:     } else {  //BTST.B #<data>,<ea>
  6302:       XEiJ.mpuCycleCount += 8;
  6303:       XEiJ.regCCR = XEiJ.regCCR & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_N | XEiJ.REG_CCR_V | XEiJ.REG_CCR_C) | (~XEiJ.busRbs (efaMemByte (ea)) >>> (y & 7) & 1) << 2;  //ccr_btst
  6304:     }
  6305:     if (Profiling.PFF_ON) {
  6306:       Profiling.pffTotal[Profiling.PRF.irpBtstImm.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpBtstImm.ordinal ()];
  6307:       Profiling.pffCount[Profiling.PRF.irpBtstImm.ordinal ()]++;
  6308:     }
  6309:   }  //irpBtstImm
  6310: 
  6311:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6312:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6313:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6314:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6315:   //BCHG.L #<data>,Dr                               |-|012346|-|--U--|--*--|D         |0000_100_001_000_rrr-{data}
  6316:   //BCHG.B #<data>,<ea>                             |-|012346|-|--U--|--*--|  M+-WXZ  |0000_100_001_mmm_rrr-{data}
  6317:   public static void irpBchgImm () throws M68kException {
  6318:     if (Profiling.PFF_ON) {
  6319:       Profiling.pffStart[Profiling.PRF.irpBchgImm.ordinal ()] = System.nanoTime ();
  6320:     }
  6321:     int ea = XEiJ.regOC & 63;
  6322:     int x;
  6323:     int y;
  6324:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6325:       y = XEiJ.busRbs ((XEiJ.regPC += 2) - 1);  //pcbs
  6326:     } else {
  6327:       y = XEiJ.regPC;
  6328:       XEiJ.regPC = y + 2;
  6329:       y = XEiJ.busRbs (y + 1);  //pcbs
  6330:     }
  6331:     if (ea < XEiJ.EA_AR) {  //BCHG.L #<data>,Dr
  6332:       XEiJ.regRn[ea] = (x = XEiJ.regRn[ea]) ^ (y = 1 << y);  //intのシフトは5bitでマスクされるので1<<(y&0x1f)の&0x1fを省略
  6333:       XEiJ.mpuCycleCount += (char) y != 0 ? 10 : 12;  //(0xffff&y)!=0
  6334:     } else {  //BCHG.B #<data>,<ea>
  6335:       XEiJ.mpuCycleCount += 12;
  6336:       int a = efaMltByte (ea);
  6337:       XEiJ.busWb (a, (x = XEiJ.busRbs (a)) ^ (y = 1 << (y & 7)));
  6338:     }
  6339:     XEiJ.regCCR = XEiJ.regCCR & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_N | XEiJ.REG_CCR_V | XEiJ.REG_CCR_C) | (x & y) - 1 >>> 31 << 2;  //ccr_btst
  6340:     if (Profiling.PFF_ON) {
  6341:       Profiling.pffTotal[Profiling.PRF.irpBchgImm.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpBchgImm.ordinal ()];
  6342:       Profiling.pffCount[Profiling.PRF.irpBchgImm.ordinal ()]++;
  6343:     }
  6344:   }  //irpBchgImm
  6345: 
  6346:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6347:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6348:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6349:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6350:   //BCLR.L #<data>,Dr                               |-|012346|-|--U--|--*--|D         |0000_100_010_000_rrr-{data}
  6351:   //BCLR.B #<data>,<ea>                             |-|012346|-|--U--|--*--|  M+-WXZ  |0000_100_010_mmm_rrr-{data}
  6352:   public static void irpBclrImm () throws M68kException {
  6353:     if (Profiling.PFF_ON) {
  6354:       Profiling.pffStart[Profiling.PRF.irpBclrImm.ordinal ()] = System.nanoTime ();
  6355:     }
  6356:     int ea = XEiJ.regOC & 63;
  6357:     int x;
  6358:     int y;
  6359:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6360:       y = XEiJ.busRbs ((XEiJ.regPC += 2) - 1);  //pcbs
  6361:     } else {
  6362:       y = XEiJ.regPC;
  6363:       XEiJ.regPC = y + 2;
  6364:       y = XEiJ.busRbs (y + 1);  //pcbs
  6365:     }
  6366:     if (ea < XEiJ.EA_AR) {  //BCLR.L #<data>,Dr
  6367:       XEiJ.regRn[ea] = (x = XEiJ.regRn[ea]) & ~(y = 1 << y);  //intのシフトは5bitでマスクされるので1<<(y&0x1f)の&0x1fを省略
  6368:       XEiJ.mpuCycleCount += (char) y != 0 ? 12 : 14;  //(0xffff&y)!=0
  6369:     } else {  //BCLR.B #<data>,<ea>
  6370:       XEiJ.mpuCycleCount += 12;
  6371:       int a = efaMltByte (ea);
  6372:       XEiJ.busWb (a, (x = XEiJ.busRbs (a)) & ~(y = 1 << (y & 7)));
  6373:     }
  6374:     XEiJ.regCCR = XEiJ.regCCR & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_N | XEiJ.REG_CCR_V | XEiJ.REG_CCR_C) | (x & y) - 1 >>> 31 << 2;  //ccr_btst
  6375:     if (Profiling.PFF_ON) {
  6376:       Profiling.pffTotal[Profiling.PRF.irpBclrImm.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpBclrImm.ordinal ()];
  6377:       Profiling.pffCount[Profiling.PRF.irpBclrImm.ordinal ()]++;
  6378:     }
  6379:   }  //irpBclrImm
  6380: 
  6381:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6382:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6383:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6384:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6385:   //BSET.L #<data>,Dr                               |-|012346|-|--U--|--*--|D         |0000_100_011_000_rrr-{data}
  6386:   //BSET.B #<data>,<ea>                             |-|012346|-|--U--|--*--|  M+-WXZ  |0000_100_011_mmm_rrr-{data}
  6387:   public static void irpBsetImm () throws M68kException {
  6388:     if (Profiling.PFF_ON) {
  6389:       Profiling.pffStart[Profiling.PRF.irpBsetImm.ordinal ()] = System.nanoTime ();
  6390:     }
  6391:     int ea = XEiJ.regOC & 63;
  6392:     int x;
  6393:     int y;
  6394:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6395:       y = XEiJ.busRbs ((XEiJ.regPC += 2) - 1);  //pcbs
  6396:     } else {
  6397:       y = XEiJ.regPC;
  6398:       XEiJ.regPC = y + 2;
  6399:       y = XEiJ.busRbs (y + 1);  //pcbs
  6400:     }
  6401:     if (ea < XEiJ.EA_AR) {  //BSET.L #<data>,Dr
  6402:       XEiJ.regRn[ea] = (x = XEiJ.regRn[ea]) | (y = 1 << y);  //intのシフトは5bitでマスクされるので1<<(y&0x1f)の&0x1fを省略
  6403:       XEiJ.mpuCycleCount += (char) y != 0 ? 10 : 12;  //(0xffff&y)!=0
  6404:     } else {  //BSET.B #<data>,<ea>
  6405:       XEiJ.mpuCycleCount += 12;
  6406:       int a = efaMltByte (ea);
  6407:       XEiJ.busWb (a, (x = XEiJ.busRbs (a)) | (y = 1 << (y & 7)));
  6408:     }
  6409:     XEiJ.regCCR = XEiJ.regCCR & (XEiJ.REG_CCR_X | XEiJ.REG_CCR_N | XEiJ.REG_CCR_V | XEiJ.REG_CCR_C) | (x & y) - 1 >>> 31 << 2;  //ccr_btst
  6410:     if (Profiling.PFF_ON) {
  6411:       Profiling.pffTotal[Profiling.PRF.irpBsetImm.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpBsetImm.ordinal ()];
  6412:       Profiling.pffCount[Profiling.PRF.irpBsetImm.ordinal ()]++;
  6413:     }
  6414:   }  //irpBsetImm
  6415: 
  6416:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6417:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6418:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6419:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6420:   //EORI.B #<data>,<ea>                             |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_101_000_mmm_rrr-{data}
  6421:   //EOR.B #<data>,<ea>                              |A|012346|-|-UUUU|-**00|D M+-WXZ  |0000_101_000_mmm_rrr-{data}  [EORI.B #<data>,<ea>]
  6422:   //EORI.B #<data>,CCR                              |-|012346|-|*****|*****|          |0000_101_000_111_100-{data}
  6423:   public static void irpEoriByte () throws M68kException {
  6424:     if (Profiling.PFF_ON) {
  6425:       Profiling.pffStart[Profiling.PRF.irpEoriByte.ordinal ()] = System.nanoTime ();
  6426:     }
  6427:     int ea = XEiJ.regOC & 63;
  6428:     int z;
  6429:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6430:       z = XEiJ.busRbs ((XEiJ.regPC += 2) - 1);  //pcbs
  6431:     } else {
  6432:       z = XEiJ.regPC;
  6433:       XEiJ.regPC = z + 2;
  6434:       z = XEiJ.busRbs (z + 1);  //pcbs
  6435:     }
  6436:     if (ea < XEiJ.EA_AR) {  //EORI.B #<data>,Dr
  6437:       XEiJ.mpuCycleCount += 8;
  6438:       z = XEiJ.regRn[ea] ^= 255 & z;  //0拡張してからEOR
  6439:       XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  6440:     } else if (ea == XEiJ.EA_IM) {  //EORI.B #<data>,CCR
  6441:       XEiJ.mpuCycleCount += 20;
  6442:       XEiJ.regCCR ^= XEiJ.REG_CCR_MASK & z;
  6443:     } else {  //EORI.B #<data>,<mem>
  6444:       XEiJ.mpuCycleCount += 12;
  6445:       int a = efaMltByte (ea);
  6446:       XEiJ.busWb (a, z ^= XEiJ.busRbs (a));
  6447:       XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  6448:     }
  6449:     if (Profiling.PFF_ON) {
  6450:       Profiling.pffTotal[Profiling.PRF.irpEoriByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpEoriByte.ordinal ()];
  6451:       Profiling.pffCount[Profiling.PRF.irpEoriByte.ordinal ()]++;
  6452:     }
  6453:   }  //irpEoriByte
  6454: 
  6455:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6456:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6457:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6458:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6459:   //EORI.W #<data>,<ea>                             |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_101_001_mmm_rrr-{data}
  6460:   //EOR.W #<data>,<ea>                              |A|012346|-|-UUUU|-**00|D M+-WXZ  |0000_101_001_mmm_rrr-{data}  [EORI.W #<data>,<ea>]
  6461:   //EORI.W #<data>,SR                               |-|012346|P|*****|*****|          |0000_101_001_111_100-{data}
  6462:   public static void irpEoriWord () throws M68kException {
  6463:     if (Profiling.PFF_ON) {
  6464:       Profiling.pffStart[Profiling.PRF.irpEoriWord.ordinal ()] = System.nanoTime ();
  6465:     }
  6466:     int ea = XEiJ.regOC & 63;
  6467:     if (ea < XEiJ.EA_AR) {  //EORI.W #<data>,Dr
  6468:       int z;
  6469:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6470:         z = XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
  6471:       } else {
  6472:         z = XEiJ.regPC;
  6473:         XEiJ.regPC = z + 2;
  6474:         z = XEiJ.busRwse (z);  //pcws
  6475:       }
  6476:       XEiJ.mpuCycleCount += 8;
  6477:       z = XEiJ.regRn[ea] ^= (char) z;  //0拡張してからEOR
  6478:       XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | (char) z - 1 >> 31 & XEiJ.REG_CCR_Z | ((short) z < 0 ? XEiJ.REG_CCR_N : 0);  //ccr_tst_word
  6479:     } else if (ea == XEiJ.EA_IM) {  //EORI.W #<data>,SR
  6480:       if (XEiJ.regSRS == 0) {  //ユーザモードのとき
  6481:         M68kException.m6eNumber = M68kException.M6E_PRIVILEGE_VIOLATION;
  6482:         throw M68kException.m6eSignal;
  6483:       }
  6484:       //以下はスーパーバイザモード
  6485:       XEiJ.mpuCycleCount += 20;
  6486:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6487:         irpSetSR ((XEiJ.regSRT1 | XEiJ.regSRT0 | XEiJ.regSRS | XEiJ.regSRM | XEiJ.regSRI | XEiJ.regCCR) ^ XEiJ.busRwse ((XEiJ.regPC += 2) - 2));  //pcws。特権違反チェックが先
  6488:       } else {
  6489:         int t = XEiJ.regPC;
  6490:         XEiJ.regPC = t + 2;
  6491:         irpSetSR ((XEiJ.regSRT1 | XEiJ.regSRT0 | XEiJ.regSRS | XEiJ.regSRM | XEiJ.regSRI | XEiJ.regCCR) ^ XEiJ.busRwse (t));  //pcws。特権違反チェックが先
  6492:       }
  6493:     } else {  //EORI.W #<data>,<mem>
  6494:       int z;
  6495:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6496:         z = XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
  6497:       } else {
  6498:         z = XEiJ.regPC;
  6499:         XEiJ.regPC = z + 2;
  6500:         z = XEiJ.busRwse (z);  //pcws
  6501:       }
  6502:       XEiJ.mpuCycleCount += 12;
  6503:       int a = efaMltWord (ea);
  6504:       XEiJ.busWw (a, z ^= XEiJ.busRws (a));
  6505:       XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | (char) z - 1 >> 31 & XEiJ.REG_CCR_Z | ((short) z < 0 ? XEiJ.REG_CCR_N : 0);  //ccr_tst_word
  6506:     }
  6507:     if (Profiling.PFF_ON) {
  6508:       Profiling.pffTotal[Profiling.PRF.irpEoriWord.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpEoriWord.ordinal ()];
  6509:       Profiling.pffCount[Profiling.PRF.irpEoriWord.ordinal ()]++;
  6510:     }
  6511:   }  //irpEoriWord
  6512: 
  6513:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6514:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6515:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6516:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6517:   //EORI.L #<data>,<ea>                             |-|012346|-|-UUUU|-**00|D M+-WXZ  |0000_101_010_mmm_rrr-{data}
  6518:   //EOR.L #<data>,<ea>                              |A|012346|-|-UUUU|-**00|D M+-WXZ  |0000_101_010_mmm_rrr-{data}  [EORI.L #<data>,<ea>]
  6519:   public static void irpEoriLong () throws M68kException {
  6520:     if (Profiling.PFF_ON) {
  6521:       Profiling.pffStart[Profiling.PRF.irpEoriLong.ordinal ()] = System.nanoTime ();
  6522:     }
  6523:     int ea = XEiJ.regOC & 63;
  6524:     int y;
  6525:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6526:       y = XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
  6527:     } else {
  6528:       y = XEiJ.regPC;
  6529:       XEiJ.regPC = y + 4;
  6530:       y = XEiJ.busRlse (y);  //pcls
  6531:     }
  6532:     int z;
  6533:     if (ea < XEiJ.EA_AR) {  //EORI.L #<data>,Dr
  6534:       XEiJ.mpuCycleCount += 16;
  6535:       z = XEiJ.regRn[ea] ^= y;
  6536:     } else {  //EORI.L #<data>,<mem>
  6537:       XEiJ.mpuCycleCount += 20;
  6538:       int a = efaMltLong (ea);
  6539:       XEiJ.busWl (a, z = XEiJ.busRls (a) ^ y);
  6540:     }
  6541:     XEiJ.regCCR = z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X);  //ccr_tst
  6542:     if (Profiling.PFF_ON) {
  6543:       Profiling.pffTotal[Profiling.PRF.irpEoriLong.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpEoriLong.ordinal ()];
  6544:       Profiling.pffCount[Profiling.PRF.irpEoriLong.ordinal ()]++;
  6545:     }
  6546:   }  //irpEoriLong
  6547: 
  6548:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6549:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6550:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6551:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6552:   //CAS.B Dc,Du,<ea>                                |-|--2346|-|-UUUU|-****|  M+-WXZ  |0000_101_011_mmm_rrr-0000000uuu000ccc
  6553:   public static void irpCasByte () throws M68kException {
  6554:     if (Profiling.PFF_ON) {
  6555:       Profiling.pffStart[Profiling.PRF.irpCasByte.ordinal ()] = System.nanoTime ();
  6556:     }
  6557:     int w;
  6558:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6559:       w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
  6560:     } else {
  6561:       w = XEiJ.regPC;
  6562:       XEiJ.regPC = w + 2;
  6563:       w = XEiJ.busRwze (w);  //pcwz。拡張ワード
  6564:     }
  6565:     if ((w & ~0b0000_000_111_000_111) != 0) {
  6566:       M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
  6567:       throw M68kException.m6eSignal;
  6568:     }
  6569:     int c = w & 7;
  6570:     int y = (byte) XEiJ.regRn[c];  //y=Dc
  6571:     int a = efaMltByte (XEiJ.regOC & 63);
  6572:     int x = XEiJ.busRbs (a);  //x=<ea>
  6573:     int z = (byte) (x - y);  //z=<ea>-Dc
  6574:     XEiJ.regCCR = (XEiJ.regCCR & XEiJ.REG_CCR_X |
  6575:                    (z < 0 ? XEiJ.REG_CCR_N : 0) |
  6576:                    (z == 0 ? XEiJ.REG_CCR_Z : 0) |
  6577:                    ((x ^ y) & (x ^ z)) >>> 31 << 1 |
  6578:                    (x & (y ^ z) ^ (y | z)) >>> 31);  //ccr_cmp
  6579:     if (z == 0) {  //<ea>==Dc
  6580:       XEiJ.mpuCycleCount += 16;
  6581:       XEiJ.busWb (a, XEiJ.regRn[w >> 6]);  //Du→<ea>
  6582:     } else {  //<ea>!=Dc
  6583:       XEiJ.mpuCycleCount += 12;
  6584:       XEiJ.regRn[c] = ~0xff & XEiJ.regRn[c] | 0xff & x;  //<ea>→Dc
  6585:     }
  6586:     if (Profiling.PFF_ON) {
  6587:       Profiling.pffTotal[Profiling.PRF.irpCasByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpCasByte.ordinal ()];
  6588:       Profiling.pffCount[Profiling.PRF.irpCasByte.ordinal ()]++;
  6589:     }
  6590:   }  //irpCasByte
  6591: 
  6592:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6593:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6594:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6595:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6596:   //CMPI.B #<data>,<ea>                             |-|--2346|-|-UUUU|-****|D M+-WXZP |0000_110_000_mmm_rrr-{data}
  6597:   //CMP.B #<data>,<ea>                              |A|--2346|-|-UUUU|-****|  M+-WXZP |0000_110_000_mmm_rrr-{data}  [CMPI.B #<data>,<ea>]
  6598:   public static void irpCmpiByte () throws M68kException {
  6599:     if (Profiling.PFF_ON) {
  6600:       Profiling.pffStart[Profiling.PRF.irpCmpiByte.ordinal ()] = System.nanoTime ();
  6601:     }
  6602:     XEiJ.mpuCycleCount += 8;
  6603:     int ea = XEiJ.regOC & 63;
  6604:     int x;
  6605:     int y;
  6606:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6607:       y = XEiJ.busRbs ((XEiJ.regPC += 2) - 1);  //pcbs
  6608:     } else {
  6609:       y = XEiJ.regPC;
  6610:       XEiJ.regPC = y + 2;
  6611:       y = XEiJ.busRbs (y + 1);  //pcbs
  6612:     }
  6613:     int z = (byte) ((x = ea < XEiJ.EA_AR ? (byte) XEiJ.regRn[ea] : XEiJ.busRbs (efaMemByte (ea))) - y);  //アドレッシングモードに注意
  6614:     XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X) |
  6615:            ((x ^ y) & (x ^ z)) >>> 31 << 1 |
  6616:            (x & (y ^ z) ^ (y | z)) >>> 31);  //ccr_cmp
  6617:     if (Profiling.PFF_ON) {
  6618:       Profiling.pffTotal[Profiling.PRF.irpCmpiByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpCmpiByte.ordinal ()];
  6619:       Profiling.pffCount[Profiling.PRF.irpCmpiByte.ordinal ()]++;
  6620:     }
  6621:   }  //irpCmpiByte
  6622: 
  6623:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6624:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6625:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6626:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6627:   //CMPI.W #<data>,<ea>                             |-|--2346|-|-UUUU|-****|D M+-WXZP |0000_110_001_mmm_rrr-{data}
  6628:   //CMP.W #<data>,<ea>                              |A|--2346|-|-UUUU|-****|  M+-WXZP |0000_110_001_mmm_rrr-{data}  [CMPI.W #<data>,<ea>]
  6629:   public static void irpCmpiWord () throws M68kException {
  6630:     if (Profiling.PFF_ON) {
  6631:       Profiling.pffStart[Profiling.PRF.irpCmpiWord.ordinal ()] = System.nanoTime ();
  6632:     }
  6633:     XEiJ.mpuCycleCount += 8;
  6634:     int ea = XEiJ.regOC & 63;
  6635:     int x;
  6636:     int y;
  6637:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6638:       y = XEiJ.busRwse ((XEiJ.regPC += 2) - 2);  //pcws
  6639:     } else {
  6640:       y = XEiJ.regPC;
  6641:       XEiJ.regPC = y + 2;
  6642:       y = XEiJ.busRwse (y);  //pcws
  6643:     }
  6644:     int z = (short) ((x = ea < XEiJ.EA_AR ? (short) XEiJ.regRn[ea] : XEiJ.busRws (efaMemWord (ea))) - y);  //アドレッシングモードに注意
  6645:     XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X) |
  6646:            ((x ^ y) & (x ^ z)) >>> 31 << 1 |
  6647:            (x & (y ^ z) ^ (y | z)) >>> 31);  //ccr_cmp
  6648:     if (Profiling.PFF_ON) {
  6649:       Profiling.pffTotal[Profiling.PRF.irpCmpiWord.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpCmpiWord.ordinal ()];
  6650:       Profiling.pffCount[Profiling.PRF.irpCmpiWord.ordinal ()]++;
  6651:     }
  6652:   }  //irpCmpiWord
  6653: 
  6654:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6655:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6656:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6657:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6658:   //CMPI.L #<data>,<ea>                             |-|--2346|-|-UUUU|-****|D M+-WXZP |0000_110_010_mmm_rrr-{data}
  6659:   //CMP.L #<data>,<ea>                              |A|--2346|-|-UUUU|-****|  M+-WXZP |0000_110_010_mmm_rrr-{data}  [CMPI.L #<data>,<ea>]
  6660:   public static void irpCmpiLong () throws M68kException {
  6661:     if (Profiling.PFF_ON) {
  6662:       Profiling.pffStart[Profiling.PRF.irpCmpiLong.ordinal ()] = System.nanoTime ();
  6663:     }
  6664:     int ea = XEiJ.regOC & 63;
  6665:     int x;
  6666:     int y;
  6667:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6668:       y = XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
  6669:     } else {
  6670:       y = XEiJ.regPC;
  6671:       XEiJ.regPC = y + 4;
  6672:       y = XEiJ.busRlse (y);  //pcls
  6673:     }
  6674:     int z;
  6675:     if (ea < XEiJ.EA_AR) {  //CMPI.L #<data>,Dr
  6676:       XEiJ.mpuCycleCount += 14;
  6677:       z = (x = XEiJ.regRn[ea]) - y;
  6678:     } else {  //CMPI.L #<data>,<mem>
  6679:       XEiJ.mpuCycleCount += 12;
  6680:       z = (x = XEiJ.busRls (efaMemLong (ea))) - y;  //アドレッシングモードに注意
  6681:     }
  6682:     XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X) |
  6683:            ((x ^ y) & (x ^ z)) >>> 31 << 1 |
  6684:            (x & (y ^ z) ^ (y | z)) >>> 31);  //ccr_cmp
  6685:     if (Profiling.PFF_ON) {
  6686:       Profiling.pffTotal[Profiling.PRF.irpCmpiLong.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpCmpiLong.ordinal ()];
  6687:       Profiling.pffCount[Profiling.PRF.irpCmpiLong.ordinal ()]++;
  6688:     }
  6689:   }  //irpCmpiLong
  6690: 
  6691:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6692:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6693:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6694:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6695:   //CAS.W Dc,Du,<ea>                                |-|--2346|-|-UUUU|-****|  M+-WXZ  |0000_110_011_mmm_rrr-0000000uuu000ccc        (68060 software emulate misaligned <ea>)
  6696:   //CAS2.W Dc1:Dc2,Du1:Du2,(Rn1):(Rn2)              |-|--234S|-|-UUUU|-****|          |0000_110_011_111_100-rnnn000uuu000ccc(1)-rnnn_000_uuu_000_ccc(2)
  6697:   public static void irpCasWord () throws M68kException {
  6698:     if (Profiling.PFF_ON) {
  6699:       Profiling.pffStart[Profiling.PRF.irpCasWord.ordinal ()] = System.nanoTime ();
  6700:     }
  6701:     int ea = XEiJ.regOC & 63;
  6702:     if (ea == XEiJ.EA_IM) {  //CAS2.W Dc1:Dc2,Du1:Du2,(Rn1):(Rn2)
  6703:       int w;
  6704:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6705:         w = XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
  6706:       } else {
  6707:         w = XEiJ.regPC;
  6708:         XEiJ.regPC = w + 4;
  6709:         w = XEiJ.busRlse (w);  //pcls
  6710:       }
  6711:       if ((w & ~0b1111_000_111_000_111_1111_000_111_000_111) != 0) {
  6712:         M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
  6713:         throw M68kException.m6eSignal;
  6714:       }
  6715:       int c1 = w >>> 16 & 7;
  6716:       int c2 = w        & 7;
  6717:       int a1 = XEiJ.regRn[w >>> 16 + 12     ];  //a1=Rn1
  6718:       int a2 = XEiJ.regRn[w >>>      12 & 15];  //a2=Rn2
  6719:       int x1 = XEiJ.busRws (a1);  //x1=(Rn1)
  6720:       int x2 = XEiJ.busRws (a2);  //x2=(Rn2)
  6721:       int y = (short) XEiJ.regRn[c1];  //y=Dc1
  6722:       int z = (short) (x1 - y);  //z=(Rn1)-Dc1
  6723:       if (z == 0) {  //(Rn1)==Dc1
  6724:         y = (short) XEiJ.regRn[c2];  //y=Dc2
  6725:         z = (short) (x2 - y);  //z=(Rn2)-Dc2
  6726:         XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X) |
  6727:                ((x2 ^ y) & (x2 ^ z)) >>> 31 << 1 |
  6728:                (x2 & (y ^ z) ^ (y | z)) >>> 31);  //ccr_cmp
  6729:         if (z == 0) {  //(Rn1)==Dc1&&(Rn2)==Dc2
  6730:           XEiJ.mpuCycleCount += 28;
  6731:           XEiJ.busWw (a1, XEiJ.regRn[w >>> 16 + 6 & 7]);  //Du1→(Rn1)
  6732:           XEiJ.busWw (a2, XEiJ.regRn[w >>>      6 & 7]);  //Du2→(Rn2)
  6733:         } else {  //(Rn1)==Dc1&&(Rn2)!=Dc2
  6734:           XEiJ.mpuCycleCount += 20;
  6735:           XEiJ.regRn[c1] = ~0xffff & XEiJ.regRn[c1] | (char) x1;  //(Rn1)→Dc1
  6736:           XEiJ.regRn[c2] = ~0xffff & XEiJ.regRn[c2] | (char) x2;  //(Rn2)→Dc2
  6737:         }
  6738:       } else {  //(Rn1)!=Dc1
  6739:         XEiJ.mpuCycleCount += 20;
  6740:         XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X) |
  6741:                ((x1 ^ y) & (x1 ^ z)) >>> 31 << 1 |
  6742:                (x1 & (y ^ z) ^ (y | z)) >>> 31);  //ccr_cmp
  6743:         XEiJ.regRn[c1] = ~0xffff & XEiJ.regRn[c1] | (char) x1;  //(Rn1)→Dc1
  6744:         XEiJ.regRn[c2] = ~0xffff & XEiJ.regRn[c2] | (char) x2;  //(Rn2)→Dc2
  6745:       }
  6746:     } else {  //CAS.W Dc,Du,<ea>
  6747:       int w;
  6748:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  6749:         w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz
  6750:       } else {
  6751:         w = XEiJ.regPC;
  6752:         XEiJ.regPC = w + 2;
  6753:         w = XEiJ.busRwze (w);  //pcwz
  6754:       }
  6755:       if ((w & ~0b0000_000_111_000_111) != 0) {
  6756:         M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
  6757:         throw M68kException.m6eSignal;
  6758:       }
  6759:       int c = w & 7;
  6760:       int y = (short) XEiJ.regRn[c];  //y=Dc
  6761:       int a = efaMltWord (ea);  //a=ea
  6762:       int x = XEiJ.busRws (a);  //x=<ea>
  6763:       int z = (short) (x - y);  //z=<ea>-Dc
  6764:       XEiJ.regCCR = (XEiJ.regCCR & XEiJ.REG_CCR_X |
  6765:                      (z < 0 ? XEiJ.REG_CCR_N : 0) |
  6766:                      (z == 0 ? XEiJ.REG_CCR_Z : 0) |
  6767:                      ((x ^ y) & (x ^ z)) >>> 31 << 1 |
  6768:                      (x & (y ^ z) ^ (y | z)) >>> 31);  //ccr_cmp
  6769:       if (z == 0) {  //<ea>==Dc
  6770:         XEiJ.mpuCycleCount += 16;
  6771:         XEiJ.busWw (a, XEiJ.regRn[w >> 6]);  //Du→<ea>
  6772:       } else {  //<ea>!=Dc
  6773:         XEiJ.mpuCycleCount += 12;
  6774:         XEiJ.regRn[c] = ~0xffff & XEiJ.regRn[c] | (char) x;  //<ea>→Dc
  6775:       }
  6776:     }
  6777:     if (Profiling.PFF_ON) {
  6778:       Profiling.pffTotal[Profiling.PRF.irpCasWord.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpCasWord.ordinal ()];
  6779:       Profiling.pffCount[Profiling.PRF.irpCasWord.ordinal ()]++;
  6780:     }
  6781:   }  //irpCasWord
  6782: 
  6783:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6784:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6785:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6786:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6787:   //MOVES.B <ea>,Rn                                 |-|-12346|P|-----|-----|  M+-WXZ  |0000_111_000_mmm_rrr-rnnn000000000000
  6788:   //MOVES.B Rn,<ea>                                 |-|-12346|P|-----|-----|  M+-WXZ  |0000_111_000_mmm_rrr-rnnn100000000000
  6789:   //
  6790:   //MOVES.B <ea>,Rn
  6791:   //  MOVES.B <ea>,DnはDnの最下位バイトだけ更新する
  6792:   //  MOVES.B <ea>,Anはバイトデータをロングに符号拡張してAnの全体を更新する
  6793:   //  SFC=1,2,5,6はアドレス変換あり、SFC=0,3,4はアドレス変換なし、
  6794:   //  SFC=7はCPU空間なのでコプロセッサが割り当てられている領域以外はバスエラーになる
  6795:   //
  6796:   //MOVES.B Rn,<ea>
  6797:   //  DFC=1,2,5,6はアドレス変換あり、DFC=0,3,4はアドレス変換なし、
  6798:   //  DFC=7はCPU空間なのでコプロセッサが割り当てられている領域以外はバスエラーになる
  6799:   public static void irpMovesByte () throws M68kException {
  6800:     if (Profiling.PFF_ON) {
  6801:       Profiling.pffStart[Profiling.PRF.irpMovesByte.ordinal ()] = System.nanoTime ();
  6802:     }
  6803:     int w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz
  6804:     if (w << -11 != 0) {
  6805:       M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
  6806:       throw M68kException.m6eSignal;
  6807:     }
  6808:     if (XEiJ.regSRS == 0) {  //ユーザモードのとき
  6809:       M68kException.m6eNumber = M68kException.M6E_PRIVILEGE_VIOLATION;
  6810:       throw M68kException.m6eSignal;
  6811:     }
  6812:     //以下はスーパーバイザモード
  6813:     XEiJ.mpuCycleCount += 4;
  6814:     int a = efaMltByte (XEiJ.regOC & 63);
  6815:     int n = w >>> 12;  //n
  6816:     if (w << 31 - 11 >= 0) {  //MOVES.B <ea>,Rn。リード
  6817:       MemoryMappedDevice[] mm;
  6818:       if (XEiJ.mpuSFC == 1 || XEiJ.mpuSFC == 2) {  //ユーザモード
  6819:         mm = DataBreakPoint.DBP_ON ? DataBreakPoint.dbpUserMap : XEiJ.busUserMap;
  6820:       } else if (XEiJ.mpuSFC == 5 || XEiJ.mpuSFC == 6) {  //スーパーバイザモード
  6821:         mm = DataBreakPoint.DBP_ON ? DataBreakPoint.dbpSuperMap : XEiJ.busSuperMap;
  6822:       } else {  //CPU空間などは不可
  6823:         M68kException.m6eFSLW |= M68kException.M6E_FSLW_BUS_ERROR_ON_READ;
  6824:         M68kException.m6eNumber = M68kException.M6E_ACCESS_FAULT;
  6825:         M68kException.m6eAddress = a;
  6826:         M68kException.m6eDirection = XEiJ.MPU_WR_READ;
  6827:         M68kException.m6eSize = XEiJ.MPU_SS_BYTE;
  6828:         throw M68kException.m6eSignal;
  6829:       }
  6830:       if (n < 8) {  //MOVES.B <ea>,Dn
  6831:         XEiJ.regRn[n] = XEiJ.regRn[n] & ~255 | mm[a >>> XEiJ.BUS_PAGE_BITS].mmdRbz (a);
  6832:       } else {  //MOVES.B <ea>,An
  6833:         XEiJ.regRn[n] = mm[a >>> XEiJ.BUS_PAGE_BITS].mmdRbs (a);
  6834:       }
  6835:     } else {  //MOVES.B Rn,<ea>。ライト
  6836:       MemoryMappedDevice[] mm;
  6837:       if (XEiJ.mpuDFC == 1 || XEiJ.mpuDFC == 2) {  //ユーザモード
  6838:         mm = DataBreakPoint.DBP_ON ? DataBreakPoint.dbpUserMap : XEiJ.busUserMap;
  6839:       } else if (XEiJ.mpuDFC == 5 || XEiJ.mpuDFC == 6) {  //スーパーバイザモード
  6840:         mm = DataBreakPoint.DBP_ON ? DataBreakPoint.dbpSuperMap : XEiJ.busSuperMap;
  6841:       } else {  //CPU空間などは不可
  6842:         M68kException.m6eFSLW |= M68kException.M6E_FSLW_BUS_ERROR_ON_WRITE;
  6843:         M68kException.m6eNumber = M68kException.M6E_ACCESS_FAULT;
  6844:         M68kException.m6eAddress = a;
  6845:         M68kException.m6eDirection = XEiJ.MPU_WR_WRITE;
  6846:         M68kException.m6eSize = XEiJ.MPU_SS_BYTE;
  6847:         throw M68kException.m6eSignal;
  6848:       }
  6849:       mm[a >>> XEiJ.BUS_PAGE_BITS].mmdWb (a, XEiJ.regRn[n]);
  6850:     }
  6851:     if (Profiling.PFF_ON) {
  6852:       Profiling.pffTotal[Profiling.PRF.irpMovesByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMovesByte.ordinal ()];
  6853:       Profiling.pffCount[Profiling.PRF.irpMovesByte.ordinal ()]++;
  6854:     }
  6855:   }  //irpMovesByte
  6856: 
  6857:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6858:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6859:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6860:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6861:   //MOVES.W <ea>,Rn                                 |-|-12346|P|-----|-----|  M+-WXZ  |0000_111_001_mmm_rrr-rnnn000000000000
  6862:   //MOVES.W Rn,<ea>                                 |-|-12346|P|-----|-----|  M+-WXZ  |0000_111_001_mmm_rrr-rnnn100000000000
  6863:   //
  6864:   //MOVES.W <ea>,Rn
  6865:   //  MOVES.W <ea>,DnはDnの下位ワードだけ更新する
  6866:   //  MOVES.W <ea>,Anはワードデータをロングに符号拡張してAnの全体を更新する
  6867:   //  SFC=1,2,5,6はアドレス変換あり、SFC=0,3,4はアドレス変換なし、
  6868:   //  SFC=7はCPU空間なのでコプロセッサが割り当てられている領域以外はバスエラーになる
  6869:   //
  6870:   //MOVES.W Rn,<ea>
  6871:   //  DFC=1,2,5,6はアドレス変換あり、DFC=0,3,4はアドレス変換なし、
  6872:   //  DFC=7はCPU空間なのでコプロセッサが割り当てられている領域以外はバスエラーになる
  6873:   public static void irpMovesWord () throws M68kException {
  6874:     if (Profiling.PFF_ON) {
  6875:       Profiling.pffStart[Profiling.PRF.irpMovesWord.ordinal ()] = System.nanoTime ();
  6876:     }
  6877:     int w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz
  6878:     if (w << -11 != 0) {
  6879:       M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
  6880:       throw M68kException.m6eSignal;
  6881:     }
  6882:     if (XEiJ.regSRS == 0) {  //ユーザモードのとき
  6883:       M68kException.m6eNumber = M68kException.M6E_PRIVILEGE_VIOLATION;
  6884:       throw M68kException.m6eSignal;
  6885:     }
  6886:     //以下はスーパーバイザモード
  6887:     XEiJ.mpuCycleCount += 4;
  6888:     int a = efaMltWord (XEiJ.regOC & 63);
  6889:     int n = w >>> 12;  //n
  6890:     if (w << 31 - 11 >= 0) {  //MOVES.W <ea>,Rn。リード
  6891:       MemoryMappedDevice[] mm;
  6892:       if (XEiJ.mpuSFC == 1 || XEiJ.mpuSFC == 2) {  //ユーザモード
  6893:         mm = DataBreakPoint.DBP_ON ? DataBreakPoint.dbpUserMap : XEiJ.busUserMap;
  6894:       } else if (XEiJ.mpuSFC == 5 || XEiJ.mpuSFC == 6) {  //スーパーバイザモード
  6895:         mm = DataBreakPoint.DBP_ON ? DataBreakPoint.dbpSuperMap : XEiJ.busSuperMap;
  6896:       } else {  //CPU空間などは不可
  6897:         M68kException.m6eFSLW |= M68kException.M6E_FSLW_BUS_ERROR_ON_READ;
  6898:         M68kException.m6eNumber = M68kException.M6E_ACCESS_FAULT;
  6899:         M68kException.m6eAddress = a;
  6900:         M68kException.m6eDirection = XEiJ.MPU_WR_READ;
  6901:         M68kException.m6eSize = XEiJ.MPU_SS_WORD;
  6902:         throw M68kException.m6eSignal;
  6903:       }
  6904:       int z;
  6905:       if ((a & 1) == 0) {  //偶数
  6906:         z = mm[a >>> XEiJ.BUS_PAGE_BITS].mmdRwz (a);
  6907:       } else {  //奇数
  6908:         z = mm[a >>> XEiJ.BUS_PAGE_BITS].mmdRbz (a) << 8;
  6909:         a++;
  6910:         z |= mm[a >>> XEiJ.BUS_PAGE_BITS].mmdRbz (a);
  6911:       }
  6912:       if (n < 8) {  //MOVES.W <ea>,Dn
  6913:         XEiJ.regRn[n] = XEiJ.regRn[n] & ~65535 | z;
  6914:       } else {  //MOVES.W <ea>,An
  6915:         XEiJ.regRn[n] = (short) z;
  6916:       }
  6917:     } else {  //MOVES.W Rn,<ea>。ライト
  6918:       MemoryMappedDevice[] mm;
  6919:       if (XEiJ.mpuDFC == 1 || XEiJ.mpuDFC == 2) {  //ユーザモード
  6920:         mm = DataBreakPoint.DBP_ON ? DataBreakPoint.dbpUserMap : XEiJ.busUserMap;
  6921:       } else if (XEiJ.mpuDFC == 5 || XEiJ.mpuDFC == 6) {  //スーパーバイザモード
  6922:         mm = DataBreakPoint.DBP_ON ? DataBreakPoint.dbpSuperMap : XEiJ.busSuperMap;
  6923:       } else {  //CPU空間などは不可
  6924:         M68kException.m6eFSLW |= M68kException.M6E_FSLW_BUS_ERROR_ON_WRITE;
  6925:         M68kException.m6eNumber = M68kException.M6E_ACCESS_FAULT;
  6926:         M68kException.m6eAddress = a;
  6927:         M68kException.m6eDirection = XEiJ.MPU_WR_WRITE;
  6928:         M68kException.m6eSize = XEiJ.MPU_SS_WORD;
  6929:         throw M68kException.m6eSignal;
  6930:       }
  6931:       int z = XEiJ.regRn[n];
  6932:       if ((a & 1) == 0) {  //偶数
  6933:         mm[a >>> XEiJ.BUS_PAGE_BITS].mmdWw (a, z);
  6934:       } else {  //奇数
  6935:         mm[a >>> XEiJ.BUS_PAGE_BITS].mmdWb (a, z >> 8);
  6936:         a++;
  6937:         mm[a >>> XEiJ.BUS_PAGE_BITS].mmdWb (a, z);
  6938:       }
  6939:     }
  6940:     if (Profiling.PFF_ON) {
  6941:       Profiling.pffTotal[Profiling.PRF.irpMovesWord.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMovesWord.ordinal ()];
  6942:       Profiling.pffCount[Profiling.PRF.irpMovesWord.ordinal ()]++;
  6943:     }
  6944:   }  //irpMovesWord
  6945: 
  6946:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6947:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  6948:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  6949:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  6950:   //MOVES.L <ea>,Rn                                 |-|-12346|P|-----|-----|  M+-WXZ  |0000_111_010_mmm_rrr-rnnn000000000000
  6951:   //MOVES.L Rn,<ea>                                 |-|-12346|P|-----|-----|  M+-WXZ  |0000_111_010_mmm_rrr-rnnn100000000000
  6952:   //
  6953:   //MOVES.L <ea>,Rn
  6954:   //  SFC=1,2,5,6はアドレス変換あり、SFC=0,3,4はアドレス変換なし、
  6955:   //  SFC=7はCPU空間なのでコプロセッサが割り当てられている領域以外はバスエラーになる
  6956:   //
  6957:   //MOVES.L Rn,<ea>
  6958:   //  DFC=1,2,5,6はアドレス変換あり、DFC=0,3,4はアドレス変換なし、
  6959:   //  DFC=7はCPU空間なのでコプロセッサが割り当てられている領域以外はバスエラーになる
  6960:   public static void irpMovesLong () throws M68kException {
  6961:     if (Profiling.PFF_ON) {
  6962:       Profiling.pffStart[Profiling.PRF.irpMovesLong.ordinal ()] = System.nanoTime ();
  6963:     }
  6964:     int w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz
  6965:     if (w << -11 != 0) {
  6966:       M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
  6967:       throw M68kException.m6eSignal;
  6968:     }
  6969:     if (XEiJ.regSRS == 0) {  //ユーザモードのとき
  6970:       M68kException.m6eNumber = M68kException.M6E_PRIVILEGE_VIOLATION;
  6971:       throw M68kException.m6eSignal;
  6972:     }
  6973:     //以下はスーパーバイザモード
  6974:     XEiJ.mpuCycleCount += 4;
  6975:     int a = efaMltLong (XEiJ.regOC & 63);
  6976:     int n = w >>> 12;  //n
  6977:     if (w << 31 - 11 >= 0) {  //MOVES.L <ea>,Rn。リード
  6978:       MemoryMappedDevice[] mm;
  6979:       if (XEiJ.mpuSFC == 1 || XEiJ.mpuSFC == 2) {  //ユーザモード
  6980:         mm = DataBreakPoint.DBP_ON ? DataBreakPoint.dbpUserMap : XEiJ.busUserMap;
  6981:       } else if (XEiJ.mpuSFC == 5 || XEiJ.mpuSFC == 6) {  //スーパーバイザモード
  6982:         mm = DataBreakPoint.DBP_ON ? DataBreakPoint.dbpSuperMap : XEiJ.busSuperMap;
  6983:       } else {  //CPU空間などは不可
  6984:         M68kException.m6eFSLW |= M68kException.M6E_FSLW_BUS_ERROR_ON_READ;
  6985:         M68kException.m6eNumber = M68kException.M6E_ACCESS_FAULT;
  6986:         M68kException.m6eAddress = a;
  6987:         M68kException.m6eDirection = XEiJ.MPU_WR_READ;
  6988:         M68kException.m6eSize = XEiJ.MPU_SS_LONG;
  6989:         throw M68kException.m6eSignal;
  6990:       }
  6991:       int z;
  6992:       if ((a & 3) == 0) {  //4の倍数
  6993:         z = mm[a >>> XEiJ.BUS_PAGE_BITS].mmdRls (a);
  6994:       } else if ((a & 1) == 0) {  //4の倍数+2
  6995:         z = mm[a >>> XEiJ.BUS_PAGE_BITS].mmdRws (a) << 16;
  6996:         a += 2;
  6997:         z |= mm[a >>> XEiJ.BUS_PAGE_BITS].mmdRwz (a);
  6998:       } else {  //奇数
  6999:         z = mm[a >>> XEiJ.BUS_PAGE_BITS].mmdRbs (a) << 24;
  7000:         a++;
  7001:         z |= mm[a >>> XEiJ.BUS_PAGE_BITS].mmdRwz (a) << 8;
  7002:         a += 2;
  7003:         z |= mm[a >>> XEiJ.BUS_PAGE_BITS].mmdRbz (a);
  7004:       }
  7005:       XEiJ.regRn[n] = z;
  7006:     } else {  //MOVES.L Rn,<ea>。ライト
  7007:       MemoryMappedDevice[] mm;
  7008:       if (XEiJ.mpuDFC == 1 || XEiJ.mpuDFC == 2) {  //ユーザモード
  7009:         mm = DataBreakPoint.DBP_ON ? DataBreakPoint.dbpUserMap : XEiJ.busUserMap;
  7010:       } else if (XEiJ.mpuDFC == 5 || XEiJ.mpuDFC == 6) {  //スーパーバイザモード
  7011:         mm = DataBreakPoint.DBP_ON ? DataBreakPoint.dbpSuperMap : XEiJ.busSuperMap;
  7012:       } else {  //CPU空間などは不可
  7013:         M68kException.m6eFSLW |= M68kException.M6E_FSLW_BUS_ERROR_ON_WRITE;
  7014:         M68kException.m6eNumber = M68kException.M6E_ACCESS_FAULT;
  7015:         M68kException.m6eAddress = a;
  7016:         M68kException.m6eDirection = XEiJ.MPU_WR_WRITE;
  7017:         M68kException.m6eSize = XEiJ.MPU_SS_LONG;
  7018:         throw M68kException.m6eSignal;
  7019:       }
  7020:       int z = XEiJ.regRn[n];
  7021:       if ((a & 3) == 0) {  //4の倍数
  7022:         mm[a >>> XEiJ.BUS_PAGE_BITS].mmdWl (a, z);
  7023:       } else if ((a & 1) == 0) {  //4の倍数+2
  7024:         mm[a >>> XEiJ.BUS_PAGE_BITS].mmdWw (a, z >> 16);
  7025:         a += 2;
  7026:         mm[a >>> XEiJ.BUS_PAGE_BITS].mmdWw (a, z);
  7027:       } else {  //奇数
  7028:         mm[a >>> XEiJ.BUS_PAGE_BITS].mmdWb (a, z >> 24);
  7029:         a++;
  7030:         mm[a >>> XEiJ.BUS_PAGE_BITS].mmdWw (a, z >> 8);
  7031:         a += 2;
  7032:         mm[a >>> XEiJ.BUS_PAGE_BITS].mmdWb (a, z);
  7033:       }
  7034:     }
  7035:     if (Profiling.PFF_ON) {
  7036:       Profiling.pffTotal[Profiling.PRF.irpMovesLong.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMovesLong.ordinal ()];
  7037:       Profiling.pffCount[Profiling.PRF.irpMovesLong.ordinal ()]++;
  7038:     }
  7039:   }  //irpMovesLong
  7040: 
  7041:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7042:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7043:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  7044:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7045:   //CAS.L Dc,Du,<ea>                                |-|--2346|-|-UUUU|-****|  M+-WXZ  |0000_111_011_mmm_rrr-0000000uuu000ccc        (68060 software emulate misaligned <ea>)
  7046:   //CAS2.L Dc1:Dc2,Du1:Du2,(Rn1):(Rn2)              |-|--234S|-|-UUUU|-****|          |0000_111_011_111_100-rnnn000uuu000ccc(1)-rnnn_000_uuu_000_ccc(2)
  7047:   public static void irpCasLong () throws M68kException {
  7048:     if (Profiling.PFF_ON) {
  7049:       Profiling.pffStart[Profiling.PRF.irpCasLong.ordinal ()] = System.nanoTime ();
  7050:     }
  7051:     int ea = XEiJ.regOC & 63;
  7052:     if (ea == XEiJ.EA_IM) {  //CAS2.L Dc1:Dc2,Du1:Du2,(Rn1):(Rn2)
  7053:       int w;
  7054:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  7055:         w = XEiJ.busRlse ((XEiJ.regPC += 4) - 4);  //pcls
  7056:       } else {
  7057:         w = XEiJ.regPC;
  7058:         XEiJ.regPC = w + 4;
  7059:         w = XEiJ.busRlse (w);  //pcls
  7060:       }
  7061:       if ((w & ~0b1111_000_111_000_111_1111_000_111_000_111) != 0) {
  7062:         M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
  7063:         throw M68kException.m6eSignal;
  7064:       }
  7065:       int c1 = w >>> 16 & 7;
  7066:       int c2 = w        & 7;
  7067:       int a1 = XEiJ.regRn[w >>> 16 + 12     ];  //a1=Rn1
  7068:       int a2 = XEiJ.regRn[w >>>      12 & 15];  //a2=Rn2
  7069:       int x1 = XEiJ.busRls (a1);  //x1=(Rn1)
  7070:       int x2 = XEiJ.busRls (a2);  //x2=(Rn2)
  7071:       int y = XEiJ.regRn[c1];  //y=Dc1
  7072:       int z = x1 - y;  //z=(Rn1)-Dc1
  7073:       if (z == 0) {  //(Rn1)==Dc1
  7074:         y = XEiJ.regRn[c2];  //y=Dc2
  7075:         z = x2 - y;  //z=(Rn2)-Dc2
  7076:         XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X) |
  7077:                ((x2 ^ y) & (x2 ^ z)) >>> 31 << 1 |
  7078:                (x2 & (y ^ z) ^ (y | z)) >>> 31);  //ccr_cmp
  7079:         if (z == 0) {  //(Rn1)==Dc1&&(Rn2)==Dc2
  7080:           XEiJ.mpuCycleCount += 44;
  7081:           XEiJ.busWl (a1, XEiJ.regRn[w >>> 16 + 6 & 7]);  //Du1→(Rn1)
  7082:           XEiJ.busWl (a2, XEiJ.regRn[w >>>      6 & 7]);  //Du2→(Rn2)
  7083:         } else {  //(Rn1)==Dc1&&(Rn2)!=Dc2
  7084:           XEiJ.mpuCycleCount += 28;
  7085:           XEiJ.regRn[c1] = x1;  //(Rn1)→Dc1
  7086:           XEiJ.regRn[c2] = x2;  //(Rn2)→Dc2
  7087:         }
  7088:       } else {  //(Rn1)!=Dc1
  7089:         XEiJ.mpuCycleCount += 28;
  7090:         XEiJ.regCCR = (z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X) |
  7091:                ((x1 ^ y) & (x1 ^ z)) >>> 31 << 1 |
  7092:                (x1 & (y ^ z) ^ (y | z)) >>> 31);  //ccr_cmp
  7093:         XEiJ.regRn[c1] = x1;  //(Rn1)→Dc1
  7094:         XEiJ.regRn[c2] = x2;  //(Rn2)→Dc2
  7095:       }
  7096:     } else {  //CAS.L Dc,Du,<ea>
  7097:       int w;
  7098:       if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  7099:         w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz
  7100:       } else {
  7101:         w = XEiJ.regPC;
  7102:         XEiJ.regPC = w + 2;
  7103:         w = XEiJ.busRwze (w);  //pcwz
  7104:       }
  7105:       if ((w & ~0b0000_000_111_000_111) != 0) {
  7106:         M68kException.m6eNumber = M68kException.M6E_ILLEGAL_INSTRUCTION;
  7107:         throw M68kException.m6eSignal;
  7108:       }
  7109:       int c = w & 7;
  7110:       int y = XEiJ.regRn[c];  //y=Dc
  7111:       int a = efaMltLong (ea);  //a=ea
  7112:       int x = XEiJ.busRls (a);  //x=<ea>
  7113:       int z = x - y;  //z=<ea>-Dc
  7114:       XEiJ.regCCR = (XEiJ.regCCR & XEiJ.REG_CCR_X |
  7115:                      (z < 0 ? XEiJ.REG_CCR_N : 0) |
  7116:                      (z == 0 ? XEiJ.REG_CCR_Z : 0) |
  7117:                      ((x ^ y) & (x ^ z)) >>> 31 << 1 |
  7118:                      (x & (y ^ z) ^ (y | z)) >>> 31);  //ccr_cmp
  7119:       if (z == 0) {  //<ea>==Dc
  7120:         XEiJ.mpuCycleCount += 24;
  7121:         XEiJ.busWl (a, XEiJ.regRn[w >> 6]);  //Du→<ea>
  7122:       } else {  //<ea>!=Dc
  7123:         XEiJ.mpuCycleCount += 16;
  7124:         XEiJ.regRn[c] = x;  //<ea>→Dc
  7125:       }
  7126:     }
  7127:     if (Profiling.PFF_ON) {
  7128:       Profiling.pffTotal[Profiling.PRF.irpCasLong.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpCasLong.ordinal ()];
  7129:       Profiling.pffCount[Profiling.PRF.irpCasLong.ordinal ()]++;
  7130:     }
  7131:   }  //irpCasLong
  7132: 
  7133:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7134:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7135:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  7136:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7137:   //MOVE.B <ea>,Dq                                  |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_qqq_000_mmm_rrr
  7138:   public static void irpMoveToDRByte () throws M68kException {
  7139:     if (Profiling.PFF_ON) {
  7140:       Profiling.pffStart[Profiling.PRF.irpMoveToDRByte.ordinal ()] = System.nanoTime ();
  7141:     }
  7142:     XEiJ.mpuCycleCount += 4;
  7143:     int ea = XEiJ.regOC & 63;
  7144:     int qqq = XEiJ.regOC >> 9 & 7;
  7145:     int z = ea < XEiJ.EA_AR ? XEiJ.regRn[ea] : XEiJ.busRbs (efaAnyByte (ea));
  7146:     XEiJ.regRn[qqq] = ~255 & XEiJ.regRn[qqq] | 255 & z;
  7147:     XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  7148:     if (Profiling.PFF_ON) {
  7149:       Profiling.pffTotal[Profiling.PRF.irpMoveToDRByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMoveToDRByte.ordinal ()];
  7150:       Profiling.pffCount[Profiling.PRF.irpMoveToDRByte.ordinal ()]++;
  7151:     }
  7152:   }  //irpMoveToDRByte
  7153: 
  7154:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7155:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7156:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  7157:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7158:   //MOVE.B <ea>,(Aq)                                |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_qqq_010_mmm_rrr
  7159:   public static void irpMoveToMMByte () throws M68kException {
  7160:     if (Profiling.PFF_ON) {
  7161:       Profiling.pffStart[Profiling.PRF.irpMoveToMMByte.ordinal ()] = System.nanoTime ();
  7162:     }
  7163:     XEiJ.mpuCycleCount += 8;
  7164:     int ea = XEiJ.regOC & 63;
  7165:     int z = ea < XEiJ.EA_AR ? XEiJ.regRn[ea] : XEiJ.busRbs (efaAnyByte (ea));  //ここでAqが変化する可能性があることに注意
  7166:     XEiJ.busWb (XEiJ.regRn[XEiJ.regOC >> 9], z);  //1qqq=aqq
  7167:     XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  7168:     if (Profiling.PFF_ON) {
  7169:       Profiling.pffTotal[Profiling.PRF.irpMoveToMMByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMoveToMMByte.ordinal ()];
  7170:       Profiling.pffCount[Profiling.PRF.irpMoveToMMByte.ordinal ()]++;
  7171:     }
  7172:   }  //irpMoveToMMByte
  7173: 
  7174:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7175:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7176:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  7177:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7178:   //MOVE.B <ea>,(Aq)+                               |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_qqq_011_mmm_rrr
  7179:   public static void irpMoveToMPByte () throws M68kException {
  7180:     if (Profiling.PFF_ON) {
  7181:       Profiling.pffStart[Profiling.PRF.irpMoveToMPByte.ordinal ()] = System.nanoTime ();
  7182:     }
  7183:     XEiJ.mpuCycleCount += 8;
  7184:     int ea = XEiJ.regOC & 63;
  7185:     int aqq = XEiJ.regOC >> 9;  //1qqq=aqq
  7186:     int z = ea < XEiJ.EA_AR ? XEiJ.regRn[ea] : XEiJ.busRbs (efaAnyByte (ea));  //ここでAqが変化する可能性があることに注意
  7187:     XEiJ.busWb (aqq < 15 ? XEiJ.regRn[aqq]++ : (XEiJ.regRn[15] += 2) - 2, z);
  7188:     XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  7189:     if (Profiling.PFF_ON) {
  7190:       Profiling.pffTotal[Profiling.PRF.irpMoveToMPByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMoveToMPByte.ordinal ()];
  7191:       Profiling.pffCount[Profiling.PRF.irpMoveToMPByte.ordinal ()]++;
  7192:     }
  7193:   }  //irpMoveToMPByte
  7194: 
  7195:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7196:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7197:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  7198:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7199:   //MOVE.B <ea>,-(Aq)                               |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_qqq_100_mmm_rrr
  7200:   public static void irpMoveToMNByte () throws M68kException {
  7201:     if (Profiling.PFF_ON) {
  7202:       Profiling.pffStart[Profiling.PRF.irpMoveToMNByte.ordinal ()] = System.nanoTime ();
  7203:     }
  7204:     XEiJ.mpuCycleCount += 8;
  7205:     int ea = XEiJ.regOC & 63;
  7206:     int aqq = XEiJ.regOC >> 9;  //1qqq=aqq
  7207:     int z = ea < XEiJ.EA_AR ? XEiJ.regRn[ea] : XEiJ.busRbs (efaAnyByte (ea));  //ここでAqが変化する可能性があることに注意
  7208:     XEiJ.busWb (aqq < 15 ? --XEiJ.regRn[aqq] : (XEiJ.regRn[15] -= 2), z);
  7209:     XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  7210:     if (Profiling.PFF_ON) {
  7211:       Profiling.pffTotal[Profiling.PRF.irpMoveToMNByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMoveToMNByte.ordinal ()];
  7212:       Profiling.pffCount[Profiling.PRF.irpMoveToMNByte.ordinal ()]++;
  7213:     }
  7214:   }  //irpMoveToMNByte
  7215: 
  7216:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7217:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7218:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  7219:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7220:   //MOVE.B <ea>,(d16,Aq)                            |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_qqq_101_mmm_rrr
  7221:   public static void irpMoveToMWByte () throws M68kException {
  7222:     if (Profiling.PFF_ON) {
  7223:       Profiling.pffStart[Profiling.PRF.irpMoveToMWByte.ordinal ()] = System.nanoTime ();
  7224:     }
  7225:     XEiJ.mpuCycleCount += 12;
  7226:     int ea = XEiJ.regOC & 63;
  7227:     int aqq = XEiJ.regOC >> 9;  //1qqq=aqq
  7228:     int z = ea < XEiJ.EA_AR ? XEiJ.regRn[ea] : XEiJ.busRbs (efaAnyByte (ea));  //ここでAqが変化する可能性があることに注意
  7229:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  7230:       XEiJ.busWb (XEiJ.regRn[aqq]  //ベースレジスタ
  7231:           + XEiJ.busRwse ((XEiJ.regPC += 2) - 2),  //pcws。ワードディスプレースメント
  7232:           z);
  7233:     } else {
  7234:       int t = XEiJ.regPC;
  7235:       XEiJ.regPC = t + 2;
  7236:       XEiJ.busWb (XEiJ.regRn[aqq]  //ベースレジスタ
  7237:           + XEiJ.busRwse (t),  //pcws。ワードディスプレースメント
  7238:           z);
  7239:     }
  7240:     XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  7241:     if (Profiling.PFF_ON) {
  7242:       Profiling.pffTotal[Profiling.PRF.irpMoveToMWByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMoveToMWByte.ordinal ()];
  7243:       Profiling.pffCount[Profiling.PRF.irpMoveToMWByte.ordinal ()]++;
  7244:     }
  7245:   }  //irpMoveToMWByte
  7246: 
  7247:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7248:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7249:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  7250:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7251:   //MOVE.B <ea>,(d8,Aq,Rn.wl)                       |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_qqq_110_mmm_rrr
  7252:   public static void irpMoveToMXByte () throws M68kException {
  7253:     if (Profiling.PFF_ON) {
  7254:       Profiling.pffStart[Profiling.PRF.irpMoveToMXByte.ordinal ()] = System.nanoTime ();
  7255:     }
  7256:     XEiJ.mpuCycleCount += 14;
  7257:     int ea = XEiJ.regOC & 63;
  7258:     int aqq = XEiJ.regOC >> 9;  //1qqq=aqq
  7259:     int z = ea < XEiJ.EA_AR ? XEiJ.regRn[ea] : XEiJ.busRbs (efaAnyByte (ea));  //ここでAqが変化する可能性があることに注意
  7260:     int w;
  7261:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  7262:       w = XEiJ.busRwze ((XEiJ.regPC += 2) - 2);  //pcwz。拡張ワード
  7263:     } else {
  7264:       w = XEiJ.regPC;
  7265:       XEiJ.regPC = w + 2;
  7266:       w = XEiJ.busRwze (w);  //pcwz。拡張ワード
  7267:     }
  7268:     XEiJ.mpuCycleCount += XEiJ.EFA_EXTENSION_CLK[w & 511];
  7269:     int t = (((~w & 0x0180) == 0 ? 0 :  //ベースレジスタサプレス
  7270:               XEiJ.regRn[aqq])  //ベースレジスタ
  7271:              + (w << 31 - 8 >= 0 ? (byte) w :  //バイトディスプレースメント
  7272:                 w << 31 - 5 >= 0 ? 0 :  //ヌルベースディスプレースメント
  7273:                 w << 31 - 4 >= 0 ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードベースディスプレースメント
  7274:                 XEiJ.busRlse ((XEiJ.regPC += 4) - 4)));  //pcls。ロングベースディスプレースメント
  7275:     int x = ((~w & 0x0140) == 0 ? 0 :  //インデックスサプレス
  7276:              (w << 31 - 11 >= 0 ? (short) XEiJ.regRn[w >> 12] :  //ワードインデックス
  7277:               XEiJ.regRn[w >> 12])  //ロングインデックス
  7278:              << (w >> 9 & 3));  //スケールファクタ。ワードインデックスのときは符号拡張してから掛ける
  7279:     XEiJ.busWb ((w & 0x0103) <= 0x0100 ? t + x :  //メモリ間接なし
  7280:         ((XEiJ.TEST_BIT_2_SHIFT ? w << 31 - 2 >= 0 : (w & 4) == 0) ? XEiJ.busRls (t + x) :  //プリインデックス
  7281:          XEiJ.busRls (t) + x)  //ポストインデックス
  7282:         + ((XEiJ.TEST_BIT_1_SHIFT ? w << 31 - 1 >= 0 : (w & 2) == 0) ? 0 :  //ヌルアウタディスプレースメント
  7283:            (XEiJ.TEST_BIT_0_SHIFT ? w << 31 - 0 >= 0 : (w & 1) == 0) ? XEiJ.busRwse ((XEiJ.regPC += 2) - 2) :  //pcws。ワードアウタディスプレースメント
  7284:            XEiJ.busRlse ((XEiJ.regPC += 4) - 4)),  //pcls。ロングアウタディスプレースメント
  7285:         z);
  7286:     XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  7287:     if (Profiling.PFF_ON) {
  7288:       Profiling.pffTotal[Profiling.PRF.irpMoveToMXByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMoveToMXByte.ordinal ()];
  7289:       Profiling.pffCount[Profiling.PRF.irpMoveToMXByte.ordinal ()]++;
  7290:     }
  7291:   }  //irpMoveToMXByte
  7292: 
  7293:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7294:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7295:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  7296:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7297:   //MOVE.B <ea>,(xxx).W                             |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_000_111_mmm_rrr
  7298:   public static void irpMoveToZWByte () throws M68kException {
  7299:     if (Profiling.PFF_ON) {
  7300:       Profiling.pffStart[Profiling.PRF.irpMoveToZWByte.ordinal ()] = System.nanoTime ();
  7301:     }
  7302:     XEiJ.mpuCycleCount += 12;
  7303:     int ea = XEiJ.regOC & 63;
  7304:     int z = ea < XEiJ.EA_AR ? XEiJ.regRn[ea] : XEiJ.busRbs (efaAnyByte (ea));
  7305:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  7306:       XEiJ.busWb (XEiJ.busRwse ((XEiJ.regPC += 2) - 2),  //pcws
  7307:           z);
  7308:     } else {
  7309:       int t = XEiJ.regPC;
  7310:       XEiJ.regPC = t + 2;
  7311:       XEiJ.busWb (XEiJ.busRwse (t),  //pcws
  7312:           z);
  7313:     }
  7314:     XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  7315:     if (Profiling.PFF_ON) {
  7316:       Profiling.pffTotal[Profiling.PRF.irpMoveToZWByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMoveToZWByte.ordinal ()];
  7317:       Profiling.pffCount[Profiling.PRF.irpMoveToZWByte.ordinal ()]++;
  7318:     }
  7319:   }  //irpMoveToZWByte
  7320: 
  7321:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7322:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7323:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  7324:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7325:   //MOVE.B <ea>,(xxx).L                             |-|012346|-|-UUUU|-**00|D M+-WXZPI|0001_001_111_mmm_rrr
  7326:   public static void irpMoveToZLByte () throws M68kException {
  7327:     if (Profiling.PFF_ON) {
  7328:       Profiling.pffStart[Profiling.PRF.irpMoveToZLByte.ordinal ()] = System.nanoTime ();
  7329:     }
  7330:     XEiJ.mpuCycleCount += 16;
  7331:     int ea = XEiJ.regOC & 63;
  7332:     int z = ea < XEiJ.EA_AR ? XEiJ.regRn[ea] : XEiJ.busRbs (efaAnyByte (ea));
  7333:     if (XEiJ.MPU_COMPOUND_POSTINCREMENT) {
  7334:       XEiJ.busWb (XEiJ.busRlse ((XEiJ.regPC += 4) - 4),  //pcls
  7335:           z);
  7336:     } else {
  7337:       int t = XEiJ.regPC;
  7338:       XEiJ.regPC = t + 4;
  7339:       XEiJ.busWb (XEiJ.busRlse (t),  //pcls
  7340:           z);
  7341:     }
  7342:     XEiJ.regCCR = XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.MPU_TSTB_TABLE[255 & z];  //ccr_tst_byte
  7343:     if (Profiling.PFF_ON) {
  7344:       Profiling.pffTotal[Profiling.PRF.irpMoveToZLByte.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMoveToZLByte.ordinal ()];
  7345:       Profiling.pffCount[Profiling.PRF.irpMoveToZLByte.ordinal ()]++;
  7346:     }
  7347:   }  //irpMoveToZLByte
  7348: 
  7349:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7350:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7351:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  7352:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7353:   //MOVE.L <ea>,Dq                                  |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0010_qqq_000_mmm_rrr
  7354:   public static void irpMoveToDRLong () throws M68kException {
  7355:     if (Profiling.PFF_ON) {
  7356:       Profiling.pffStart[Profiling.PRF.irpMoveToDRLong.ordinal ()] = System.nanoTime ();
  7357:     }
  7358:     XEiJ.mpuCycleCount += 4;
  7359:     int ea = XEiJ.regOC & 63;
  7360:     int z;
  7361:     XEiJ.regRn[XEiJ.regOC >> 9 & 7] = z = ea < XEiJ.EA_MM ? XEiJ.regRn[ea] : XEiJ.busRls (efaAnyLong (ea));  //このr[ea]はデータレジスタまたはアドレスレジスタ
  7362:     XEiJ.regCCR = z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X);  //ccr_tst
  7363:     if (Profiling.PFF_ON) {
  7364:       Profiling.pffTotal[Profiling.PRF.irpMoveToDRLong.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMoveToDRLong.ordinal ()];
  7365:       Profiling.pffCount[Profiling.PRF.irpMoveToDRLong.ordinal ()]++;
  7366:     }
  7367:   }  //irpMoveToDRLong
  7368: 
  7369:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7370:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7371:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  7372:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7373:   //MOVEA.L <ea>,Aq                                 |-|012346|-|-----|-----|DAM+-WXZPI|0010_qqq_001_mmm_rrr
  7374:   //MOVE.L <ea>,Aq                                  |A|012346|-|-----|-----|DAM+-WXZPI|0010_qqq_001_mmm_rrr [MOVEA.L <ea>,Aq]
  7375:   public static void irpMoveaLong () throws M68kException {
  7376:     if (Profiling.PFF_ON) {
  7377:       Profiling.pffStart[Profiling.PRF.irpMoveaLong.ordinal ()] = System.nanoTime ();
  7378:     }
  7379:     XEiJ.mpuCycleCount += 4;
  7380:     int ea = XEiJ.regOC & 63;
  7381:     XEiJ.regRn[(XEiJ.regOC >> 9) - (16 - 8)] = ea < XEiJ.EA_MM ? XEiJ.regRn[ea] : XEiJ.busRls (efaAnyLong (ea));  //このr[ea]はデータレジスタまたはアドレスレジスタ。右辺でAqが変化する可能性があることに注意
  7382:     if (Profiling.PFF_ON) {
  7383:       Profiling.pffTotal[Profiling.PRF.irpMoveaLong.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMoveaLong.ordinal ()];
  7384:       Profiling.pffCount[Profiling.PRF.irpMoveaLong.ordinal ()]++;
  7385:     }
  7386:   }  //irpMoveaLong
  7387: 
  7388:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7389:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7390:   //                           A:alias P:privileged |A|012346|P|XNZVC|XNZVC|DAM+-WXZPI|bbbb_bbb_bbb_bbb_bbb-bbbbbbbbbbbbbbbb
  7391:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7392:   //MOVE.L <ea>,(Aq)                                |-|012346|-|-UUUU|-**00|DAM+-WXZPI|0010_qqq_010_mmm_rrr
  7393:   public static void irpMoveToMMLong () throws M68kException {
  7394:     if (Profiling.PFF_ON) {
  7395:       Profiling.pffStart[Profiling.PRF.irpMoveToMMLong.ordinal ()] = System.nanoTime ();
  7396:     }
  7397:     XEiJ.mpuCycleCount += 12;
  7398:     int ea = XEiJ.regOC & 63;
  7399:     int z = ea < XEiJ.EA_MM ? XEiJ.regRn[ea] : XEiJ.busRls (efaAnyLong (ea));  //このr[ea]はデータレジスタまたはアドレスレジスタ。ここでAqが変化する可能性があることに注意
  7400:     XEiJ.busWl (XEiJ.regRn[(XEiJ.regOC >> 9) - (16 - 8)], z);
  7401:     XEiJ.regCCR = z >> 28 & XEiJ.REG_CCR_N | (z == 0 ? XEiJ.regCCR & XEiJ.REG_CCR_X | XEiJ.REG_CCR_Z : XEiJ.regCCR & XEiJ.REG_CCR_X);  //ccr_tst
  7402:     if (Profiling.PFF_ON) {
  7403:       Profiling.pffTotal[Profiling.PRF.irpMoveToMMLong.ordinal ()] += System.nanoTime () - Profiling.pffStart[Profiling.PRF.irpMoveToMMLong.ordinal ()];
  7404:       Profiling.pffCount[Profiling.PRF.irpMoveToMMLong.ordinal ()]++;
  7405:     }
  7406:   }  //irpMoveToMMLong
  7407: 
  7408:   //------------------------------------------------+-+------+-+-----+-----+----------+-------------------------------------
  7409:   //                                                | |  MPU | |CCin |CCout|addressing|     1st opcode         2nd opcode
  7410: <