|
|
1.1 ! root 1: #include "config.h" ! 2: #include "amiga.h" ! 3: #include "options.h" ! 4: #include <stdlib.h> ! 5: #include "memory.h" ! 6: #include "custom.h" ! 7: #include "newcpu.h" ! 8: #include "cputbl.h" ! 9: void op_2000(UWORD opcode) ! 10: { ! 11: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 12: ULONG dstreg = (opcode & 3584) >> 9; ! 13: {{ LONG src = regs.d[srcreg]; ! 14: { regs.v = regs.c = 0; ! 15: regs.z = ((LONG)(src)) == 0; ! 16: regs.n = ((LONG)(src)) < 0; ! 17: regs.d[dstreg] = (src); ! 18: }}}} ! 19: void op_2008(UWORD opcode) ! 20: { ! 21: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 22: ULONG dstreg = (opcode & 3584) >> 9; ! 23: {{ LONG src = regs.a[srcreg]; ! 24: { regs.v = regs.c = 0; ! 25: regs.z = ((LONG)(src)) == 0; ! 26: regs.n = ((LONG)(src)) < 0; ! 27: regs.d[dstreg] = (src); ! 28: }}}} ! 29: void op_2010(UWORD opcode) ! 30: { ! 31: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 32: ULONG dstreg = (opcode & 3584) >> 9; ! 33: {{ CPTR srca = regs.a[srcreg]; ! 34: LONG src = get_long(srca); ! 35: { regs.v = regs.c = 0; ! 36: regs.z = ((LONG)(src)) == 0; ! 37: regs.n = ((LONG)(src)) < 0; ! 38: regs.d[dstreg] = (src); ! 39: }}}} ! 40: void op_2018(UWORD opcode) ! 41: { ! 42: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 43: ULONG dstreg = (opcode & 3584) >> 9; ! 44: {{ CPTR srca = regs.a[srcreg]; ! 45: LONG src = get_long(srca); ! 46: { regs.a[srcreg] += 4; ! 47: { regs.v = regs.c = 0; ! 48: regs.z = ((LONG)(src)) == 0; ! 49: regs.n = ((LONG)(src)) < 0; ! 50: regs.d[dstreg] = (src); ! 51: }}}}} ! 52: void op_2020(UWORD opcode) ! 53: { ! 54: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 55: ULONG dstreg = (opcode & 3584) >> 9; ! 56: {{ regs.a[srcreg] -= 4; ! 57: { CPTR srca = regs.a[srcreg]; ! 58: LONG src = get_long(srca); ! 59: { regs.v = regs.c = 0; ! 60: regs.z = ((LONG)(src)) == 0; ! 61: regs.n = ((LONG)(src)) < 0; ! 62: regs.d[dstreg] = (src); ! 63: }}}}} ! 64: void op_2028(UWORD opcode) ! 65: { ! 66: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 67: ULONG dstreg = (opcode & 3584) >> 9; ! 68: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 69: LONG src = get_long(srca); ! 70: { regs.v = regs.c = 0; ! 71: regs.z = ((LONG)(src)) == 0; ! 72: regs.n = ((LONG)(src)) < 0; ! 73: regs.d[dstreg] = (src); ! 74: }}}} ! 75: void op_2030(UWORD opcode) ! 76: { ! 77: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 78: ULONG dstreg = (opcode & 3584) >> 9; ! 79: {{ CPTR srca = regs.a[srcreg]; ! 80: UWORD srcdp = nextiword(); ! 81: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 82: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 83: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 84: srca += srcdpr; ! 85: { LONG src = get_long(srca); ! 86: { regs.v = regs.c = 0; ! 87: regs.z = ((LONG)(src)) == 0; ! 88: regs.n = ((LONG)(src)) < 0; ! 89: regs.d[dstreg] = (src); ! 90: }}}}}} ! 91: void op_2038(UWORD opcode) ! 92: { ! 93: ULONG dstreg = (opcode & 3584) >> 9; ! 94: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 95: LONG src = get_long(srca); ! 96: { regs.v = regs.c = 0; ! 97: regs.z = ((LONG)(src)) == 0; ! 98: regs.n = ((LONG)(src)) < 0; ! 99: regs.d[dstreg] = (src); ! 100: }}}} ! 101: void op_2039(UWORD opcode) ! 102: { ! 103: ULONG dstreg = (opcode & 3584) >> 9; ! 104: {{ CPTR srca = nextilong(); ! 105: LONG src = get_long(srca); ! 106: { regs.v = regs.c = 0; ! 107: regs.z = ((LONG)(src)) == 0; ! 108: regs.n = ((LONG)(src)) < 0; ! 109: regs.d[dstreg] = (src); ! 110: }}}} ! 111: void op_203a(UWORD opcode) ! 112: { ! 113: ULONG dstreg = (opcode & 3584) >> 9; ! 114: {{ CPTR srca = m68k_getpc(); ! 115: srca += (LONG)(WORD)nextiword(); ! 116: { LONG src = get_long(srca); ! 117: { regs.v = regs.c = 0; ! 118: regs.z = ((LONG)(src)) == 0; ! 119: regs.n = ((LONG)(src)) < 0; ! 120: regs.d[dstreg] = (src); ! 121: }}}}} ! 122: void op_203b(UWORD opcode) ! 123: { ! 124: ULONG dstreg = (opcode & 3584) >> 9; ! 125: {{ CPTR srca = m68k_getpc(); ! 126: UWORD srcdp = nextiword(); ! 127: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 128: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 129: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 130: srca += srcdpr; ! 131: { LONG src = get_long(srca); ! 132: { regs.v = regs.c = 0; ! 133: regs.z = ((LONG)(src)) == 0; ! 134: regs.n = ((LONG)(src)) < 0; ! 135: regs.d[dstreg] = (src); ! 136: }}}}}} ! 137: void op_203c(UWORD opcode) ! 138: { ! 139: ULONG dstreg = (opcode & 3584) >> 9; ! 140: {{ LONG src = nextilong(); ! 141: { regs.v = regs.c = 0; ! 142: regs.z = ((LONG)(src)) == 0; ! 143: regs.n = ((LONG)(src)) < 0; ! 144: regs.d[dstreg] = (src); ! 145: }}}} ! 146: void op_2040(UWORD opcode) ! 147: { ! 148: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 149: ULONG dstreg = (opcode & 3584) >> 9; ! 150: {{ LONG src = regs.d[srcreg]; ! 151: { regs.a[dstreg] = (src); ! 152: }}}} ! 153: void op_2048(UWORD opcode) ! 154: { ! 155: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 156: ULONG dstreg = (opcode & 3584) >> 9; ! 157: {{ LONG src = regs.a[srcreg]; ! 158: { regs.a[dstreg] = (src); ! 159: }}}} ! 160: void op_2050(UWORD opcode) ! 161: { ! 162: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 163: ULONG dstreg = (opcode & 3584) >> 9; ! 164: {{ CPTR srca = regs.a[srcreg]; ! 165: LONG src = get_long(srca); ! 166: { regs.a[dstreg] = (src); ! 167: }}}} ! 168: void op_2058(UWORD opcode) ! 169: { ! 170: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 171: ULONG dstreg = (opcode & 3584) >> 9; ! 172: {{ CPTR srca = regs.a[srcreg]; ! 173: LONG src = get_long(srca); ! 174: { regs.a[srcreg] += 4; ! 175: { regs.a[dstreg] = (src); ! 176: }}}}} ! 177: void op_2060(UWORD opcode) ! 178: { ! 179: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 180: ULONG dstreg = (opcode & 3584) >> 9; ! 181: {{ regs.a[srcreg] -= 4; ! 182: { CPTR srca = regs.a[srcreg]; ! 183: LONG src = get_long(srca); ! 184: { regs.a[dstreg] = (src); ! 185: }}}}} ! 186: void op_2068(UWORD opcode) ! 187: { ! 188: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 189: ULONG dstreg = (opcode & 3584) >> 9; ! 190: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 191: LONG src = get_long(srca); ! 192: { regs.a[dstreg] = (src); ! 193: }}}} ! 194: void op_2070(UWORD opcode) ! 195: { ! 196: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 197: ULONG dstreg = (opcode & 3584) >> 9; ! 198: {{ CPTR srca = regs.a[srcreg]; ! 199: UWORD srcdp = nextiword(); ! 200: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 201: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 202: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 203: srca += srcdpr; ! 204: { LONG src = get_long(srca); ! 205: { regs.a[dstreg] = (src); ! 206: }}}}}} ! 207: void op_2078(UWORD opcode) ! 208: { ! 209: ULONG dstreg = (opcode & 3584) >> 9; ! 210: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 211: LONG src = get_long(srca); ! 212: { regs.a[dstreg] = (src); ! 213: }}}} ! 214: void op_2079(UWORD opcode) ! 215: { ! 216: ULONG dstreg = (opcode & 3584) >> 9; ! 217: {{ CPTR srca = nextilong(); ! 218: LONG src = get_long(srca); ! 219: { regs.a[dstreg] = (src); ! 220: }}}} ! 221: void op_207a(UWORD opcode) ! 222: { ! 223: ULONG dstreg = (opcode & 3584) >> 9; ! 224: {{ CPTR srca = m68k_getpc(); ! 225: srca += (LONG)(WORD)nextiword(); ! 226: { LONG src = get_long(srca); ! 227: { regs.a[dstreg] = (src); ! 228: }}}}} ! 229: void op_207b(UWORD opcode) ! 230: { ! 231: ULONG dstreg = (opcode & 3584) >> 9; ! 232: {{ CPTR srca = m68k_getpc(); ! 233: UWORD srcdp = nextiword(); ! 234: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 235: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 236: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 237: srca += srcdpr; ! 238: { LONG src = get_long(srca); ! 239: { regs.a[dstreg] = (src); ! 240: }}}}}} ! 241: void op_207c(UWORD opcode) ! 242: { ! 243: ULONG dstreg = (opcode & 3584) >> 9; ! 244: {{ LONG src = nextilong(); ! 245: { regs.a[dstreg] = (src); ! 246: }}}} ! 247: void op_2080(UWORD opcode) ! 248: { ! 249: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 250: ULONG dstreg = (opcode & 3584) >> 9; ! 251: {{ LONG src = regs.d[srcreg]; ! 252: { CPTR dsta = regs.a[dstreg]; ! 253: regs.v = regs.c = 0; ! 254: regs.z = ((LONG)(src)) == 0; ! 255: regs.n = ((LONG)(src)) < 0; ! 256: put_long(dsta,src); ! 257: }}}} ! 258: void op_2088(UWORD opcode) ! 259: { ! 260: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 261: ULONG dstreg = (opcode & 3584) >> 9; ! 262: {{ LONG src = regs.a[srcreg]; ! 263: { CPTR dsta = regs.a[dstreg]; ! 264: regs.v = regs.c = 0; ! 265: regs.z = ((LONG)(src)) == 0; ! 266: regs.n = ((LONG)(src)) < 0; ! 267: put_long(dsta,src); ! 268: }}}} ! 269: void op_2090(UWORD opcode) ! 270: { ! 271: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 272: ULONG dstreg = (opcode & 3584) >> 9; ! 273: {{ CPTR srca = regs.a[srcreg]; ! 274: LONG src = get_long(srca); ! 275: { CPTR dsta = regs.a[dstreg]; ! 276: regs.v = regs.c = 0; ! 277: regs.z = ((LONG)(src)) == 0; ! 278: regs.n = ((LONG)(src)) < 0; ! 279: put_long(dsta,src); ! 280: }}}} ! 281: void op_2098(UWORD opcode) ! 282: { ! 283: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 284: ULONG dstreg = (opcode & 3584) >> 9; ! 285: {{ CPTR srca = regs.a[srcreg]; ! 286: LONG src = get_long(srca); ! 287: { regs.a[srcreg] += 4; ! 288: { CPTR dsta = regs.a[dstreg]; ! 289: regs.v = regs.c = 0; ! 290: regs.z = ((LONG)(src)) == 0; ! 291: regs.n = ((LONG)(src)) < 0; ! 292: put_long(dsta,src); ! 293: }}}}} ! 294: void op_20a0(UWORD opcode) ! 295: { ! 296: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 297: ULONG dstreg = (opcode & 3584) >> 9; ! 298: {{ regs.a[srcreg] -= 4; ! 299: { CPTR srca = regs.a[srcreg]; ! 300: LONG src = get_long(srca); ! 301: { CPTR dsta = regs.a[dstreg]; ! 302: regs.v = regs.c = 0; ! 303: regs.z = ((LONG)(src)) == 0; ! 304: regs.n = ((LONG)(src)) < 0; ! 305: put_long(dsta,src); ! 306: }}}}} ! 307: void op_20a8(UWORD opcode) ! 308: { ! 309: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 310: ULONG dstreg = (opcode & 3584) >> 9; ! 311: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 312: LONG src = get_long(srca); ! 313: { CPTR dsta = regs.a[dstreg]; ! 314: regs.v = regs.c = 0; ! 315: regs.z = ((LONG)(src)) == 0; ! 316: regs.n = ((LONG)(src)) < 0; ! 317: put_long(dsta,src); ! 318: }}}} ! 319: void op_20b0(UWORD opcode) ! 320: { ! 321: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 322: ULONG dstreg = (opcode & 3584) >> 9; ! 323: {{ CPTR srca = regs.a[srcreg]; ! 324: UWORD srcdp = nextiword(); ! 325: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 326: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 327: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 328: srca += srcdpr; ! 329: { LONG src = get_long(srca); ! 330: { CPTR dsta = regs.a[dstreg]; ! 331: regs.v = regs.c = 0; ! 332: regs.z = ((LONG)(src)) == 0; ! 333: regs.n = ((LONG)(src)) < 0; ! 334: put_long(dsta,src); ! 335: }}}}}} ! 336: void op_20b8(UWORD opcode) ! 337: { ! 338: ULONG dstreg = (opcode & 3584) >> 9; ! 339: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 340: LONG src = get_long(srca); ! 341: { CPTR dsta = regs.a[dstreg]; ! 342: regs.v = regs.c = 0; ! 343: regs.z = ((LONG)(src)) == 0; ! 344: regs.n = ((LONG)(src)) < 0; ! 345: put_long(dsta,src); ! 346: }}}} ! 347: void op_20b9(UWORD opcode) ! 348: { ! 349: ULONG dstreg = (opcode & 3584) >> 9; ! 350: {{ CPTR srca = nextilong(); ! 351: LONG src = get_long(srca); ! 352: { CPTR dsta = regs.a[dstreg]; ! 353: regs.v = regs.c = 0; ! 354: regs.z = ((LONG)(src)) == 0; ! 355: regs.n = ((LONG)(src)) < 0; ! 356: put_long(dsta,src); ! 357: }}}} ! 358: void op_20ba(UWORD opcode) ! 359: { ! 360: ULONG dstreg = (opcode & 3584) >> 9; ! 361: {{ CPTR srca = m68k_getpc(); ! 362: srca += (LONG)(WORD)nextiword(); ! 363: { LONG src = get_long(srca); ! 364: { CPTR dsta = regs.a[dstreg]; ! 365: regs.v = regs.c = 0; ! 366: regs.z = ((LONG)(src)) == 0; ! 367: regs.n = ((LONG)(src)) < 0; ! 368: put_long(dsta,src); ! 369: }}}}} ! 370: void op_20bb(UWORD opcode) ! 371: { ! 372: ULONG dstreg = (opcode & 3584) >> 9; ! 373: {{ CPTR srca = m68k_getpc(); ! 374: UWORD srcdp = nextiword(); ! 375: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 376: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 377: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 378: srca += srcdpr; ! 379: { LONG src = get_long(srca); ! 380: { CPTR dsta = regs.a[dstreg]; ! 381: regs.v = regs.c = 0; ! 382: regs.z = ((LONG)(src)) == 0; ! 383: regs.n = ((LONG)(src)) < 0; ! 384: put_long(dsta,src); ! 385: }}}}}} ! 386: void op_20bc(UWORD opcode) ! 387: { ! 388: ULONG dstreg = (opcode & 3584) >> 9; ! 389: {{ LONG src = nextilong(); ! 390: { CPTR dsta = regs.a[dstreg]; ! 391: regs.v = regs.c = 0; ! 392: regs.z = ((LONG)(src)) == 0; ! 393: regs.n = ((LONG)(src)) < 0; ! 394: put_long(dsta,src); ! 395: }}}} ! 396: void op_20c0(UWORD opcode) ! 397: { ! 398: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 399: ULONG dstreg = (opcode & 3584) >> 9; ! 400: {{ LONG src = regs.d[srcreg]; ! 401: { CPTR dsta = regs.a[dstreg]; ! 402: { regs.a[dstreg] += 4; ! 403: regs.v = regs.c = 0; ! 404: regs.z = ((LONG)(src)) == 0; ! 405: regs.n = ((LONG)(src)) < 0; ! 406: put_long(dsta,src); ! 407: }}}}} ! 408: void op_20c8(UWORD opcode) ! 409: { ! 410: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 411: ULONG dstreg = (opcode & 3584) >> 9; ! 412: {{ LONG src = regs.a[srcreg]; ! 413: { CPTR dsta = regs.a[dstreg]; ! 414: { regs.a[dstreg] += 4; ! 415: regs.v = regs.c = 0; ! 416: regs.z = ((LONG)(src)) == 0; ! 417: regs.n = ((LONG)(src)) < 0; ! 418: put_long(dsta,src); ! 419: }}}}} ! 420: void op_20d0(UWORD opcode) ! 421: { ! 422: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 423: ULONG dstreg = (opcode & 3584) >> 9; ! 424: {{ CPTR srca = regs.a[srcreg]; ! 425: LONG src = get_long(srca); ! 426: { CPTR dsta = regs.a[dstreg]; ! 427: { regs.a[dstreg] += 4; ! 428: regs.v = regs.c = 0; ! 429: regs.z = ((LONG)(src)) == 0; ! 430: regs.n = ((LONG)(src)) < 0; ! 431: put_long(dsta,src); ! 432: }}}}} ! 433: void op_20d8(UWORD opcode) ! 434: { ! 435: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 436: ULONG dstreg = (opcode & 3584) >> 9; ! 437: {{ CPTR srca = regs.a[srcreg]; ! 438: LONG src = get_long(srca); ! 439: { regs.a[srcreg] += 4; ! 440: { CPTR dsta = regs.a[dstreg]; ! 441: { regs.a[dstreg] += 4; ! 442: regs.v = regs.c = 0; ! 443: regs.z = ((LONG)(src)) == 0; ! 444: regs.n = ((LONG)(src)) < 0; ! 445: put_long(dsta,src); ! 446: }}}}}} ! 447: void op_20e0(UWORD opcode) ! 448: { ! 449: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 450: ULONG dstreg = (opcode & 3584) >> 9; ! 451: {{ regs.a[srcreg] -= 4; ! 452: { CPTR srca = regs.a[srcreg]; ! 453: LONG src = get_long(srca); ! 454: { CPTR dsta = regs.a[dstreg]; ! 455: { regs.a[dstreg] += 4; ! 456: regs.v = regs.c = 0; ! 457: regs.z = ((LONG)(src)) == 0; ! 458: regs.n = ((LONG)(src)) < 0; ! 459: put_long(dsta,src); ! 460: }}}}}} ! 461: void op_20e8(UWORD opcode) ! 462: { ! 463: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 464: ULONG dstreg = (opcode & 3584) >> 9; ! 465: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 466: LONG src = get_long(srca); ! 467: { CPTR dsta = regs.a[dstreg]; ! 468: { regs.a[dstreg] += 4; ! 469: regs.v = regs.c = 0; ! 470: regs.z = ((LONG)(src)) == 0; ! 471: regs.n = ((LONG)(src)) < 0; ! 472: put_long(dsta,src); ! 473: }}}}} ! 474: void op_20f0(UWORD opcode) ! 475: { ! 476: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 477: ULONG dstreg = (opcode & 3584) >> 9; ! 478: {{ CPTR srca = regs.a[srcreg]; ! 479: UWORD srcdp = nextiword(); ! 480: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 481: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 482: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 483: srca += srcdpr; ! 484: { LONG src = get_long(srca); ! 485: { CPTR dsta = regs.a[dstreg]; ! 486: { regs.a[dstreg] += 4; ! 487: regs.v = regs.c = 0; ! 488: regs.z = ((LONG)(src)) == 0; ! 489: regs.n = ((LONG)(src)) < 0; ! 490: put_long(dsta,src); ! 491: }}}}}}} ! 492: void op_20f8(UWORD opcode) ! 493: { ! 494: ULONG dstreg = (opcode & 3584) >> 9; ! 495: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 496: LONG src = get_long(srca); ! 497: { CPTR dsta = regs.a[dstreg]; ! 498: { regs.a[dstreg] += 4; ! 499: regs.v = regs.c = 0; ! 500: regs.z = ((LONG)(src)) == 0; ! 501: regs.n = ((LONG)(src)) < 0; ! 502: put_long(dsta,src); ! 503: }}}}} ! 504: void op_20f9(UWORD opcode) ! 505: { ! 506: ULONG dstreg = (opcode & 3584) >> 9; ! 507: {{ CPTR srca = nextilong(); ! 508: LONG src = get_long(srca); ! 509: { CPTR dsta = regs.a[dstreg]; ! 510: { regs.a[dstreg] += 4; ! 511: regs.v = regs.c = 0; ! 512: regs.z = ((LONG)(src)) == 0; ! 513: regs.n = ((LONG)(src)) < 0; ! 514: put_long(dsta,src); ! 515: }}}}} ! 516: void op_20fa(UWORD opcode) ! 517: { ! 518: ULONG dstreg = (opcode & 3584) >> 9; ! 519: {{ CPTR srca = m68k_getpc(); ! 520: srca += (LONG)(WORD)nextiword(); ! 521: { LONG src = get_long(srca); ! 522: { CPTR dsta = regs.a[dstreg]; ! 523: { regs.a[dstreg] += 4; ! 524: regs.v = regs.c = 0; ! 525: regs.z = ((LONG)(src)) == 0; ! 526: regs.n = ((LONG)(src)) < 0; ! 527: put_long(dsta,src); ! 528: }}}}}} ! 529: void op_20fb(UWORD opcode) ! 530: { ! 531: ULONG dstreg = (opcode & 3584) >> 9; ! 532: {{ CPTR srca = m68k_getpc(); ! 533: UWORD srcdp = nextiword(); ! 534: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 535: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 536: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 537: srca += srcdpr; ! 538: { LONG src = get_long(srca); ! 539: { CPTR dsta = regs.a[dstreg]; ! 540: { regs.a[dstreg] += 4; ! 541: regs.v = regs.c = 0; ! 542: regs.z = ((LONG)(src)) == 0; ! 543: regs.n = ((LONG)(src)) < 0; ! 544: put_long(dsta,src); ! 545: }}}}}}} ! 546: void op_20fc(UWORD opcode) ! 547: { ! 548: ULONG dstreg = (opcode & 3584) >> 9; ! 549: {{ LONG src = nextilong(); ! 550: { CPTR dsta = regs.a[dstreg]; ! 551: { regs.a[dstreg] += 4; ! 552: regs.v = regs.c = 0; ! 553: regs.z = ((LONG)(src)) == 0; ! 554: regs.n = ((LONG)(src)) < 0; ! 555: put_long(dsta,src); ! 556: }}}}} ! 557: void op_2100(UWORD opcode) ! 558: { ! 559: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 560: ULONG dstreg = (opcode & 3584) >> 9; ! 561: {{ LONG src = regs.d[srcreg]; ! 562: { regs.a[dstreg] -= 4; ! 563: { CPTR dsta = regs.a[dstreg]; ! 564: regs.v = regs.c = 0; ! 565: regs.z = ((LONG)(src)) == 0; ! 566: regs.n = ((LONG)(src)) < 0; ! 567: put_long(dsta,src); ! 568: }}}}} ! 569: void op_2108(UWORD opcode) ! 570: { ! 571: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 572: ULONG dstreg = (opcode & 3584) >> 9; ! 573: {{ LONG src = regs.a[srcreg]; ! 574: { regs.a[dstreg] -= 4; ! 575: { CPTR dsta = regs.a[dstreg]; ! 576: regs.v = regs.c = 0; ! 577: regs.z = ((LONG)(src)) == 0; ! 578: regs.n = ((LONG)(src)) < 0; ! 579: put_long(dsta,src); ! 580: }}}}} ! 581: void op_2110(UWORD opcode) ! 582: { ! 583: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 584: ULONG dstreg = (opcode & 3584) >> 9; ! 585: {{ CPTR srca = regs.a[srcreg]; ! 586: LONG src = get_long(srca); ! 587: { regs.a[dstreg] -= 4; ! 588: { CPTR dsta = regs.a[dstreg]; ! 589: regs.v = regs.c = 0; ! 590: regs.z = ((LONG)(src)) == 0; ! 591: regs.n = ((LONG)(src)) < 0; ! 592: put_long(dsta,src); ! 593: }}}}} ! 594: void op_2118(UWORD opcode) ! 595: { ! 596: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 597: ULONG dstreg = (opcode & 3584) >> 9; ! 598: {{ CPTR srca = regs.a[srcreg]; ! 599: LONG src = get_long(srca); ! 600: { regs.a[srcreg] += 4; ! 601: { regs.a[dstreg] -= 4; ! 602: { CPTR dsta = regs.a[dstreg]; ! 603: regs.v = regs.c = 0; ! 604: regs.z = ((LONG)(src)) == 0; ! 605: regs.n = ((LONG)(src)) < 0; ! 606: put_long(dsta,src); ! 607: }}}}}} ! 608: void op_2120(UWORD opcode) ! 609: { ! 610: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 611: ULONG dstreg = (opcode & 3584) >> 9; ! 612: {{ regs.a[srcreg] -= 4; ! 613: { CPTR srca = regs.a[srcreg]; ! 614: LONG src = get_long(srca); ! 615: { regs.a[dstreg] -= 4; ! 616: { CPTR dsta = regs.a[dstreg]; ! 617: regs.v = regs.c = 0; ! 618: regs.z = ((LONG)(src)) == 0; ! 619: regs.n = ((LONG)(src)) < 0; ! 620: put_long(dsta,src); ! 621: }}}}}} ! 622: void op_2128(UWORD opcode) ! 623: { ! 624: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 625: ULONG dstreg = (opcode & 3584) >> 9; ! 626: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 627: LONG src = get_long(srca); ! 628: { regs.a[dstreg] -= 4; ! 629: { CPTR dsta = regs.a[dstreg]; ! 630: regs.v = regs.c = 0; ! 631: regs.z = ((LONG)(src)) == 0; ! 632: regs.n = ((LONG)(src)) < 0; ! 633: put_long(dsta,src); ! 634: }}}}} ! 635: void op_2130(UWORD opcode) ! 636: { ! 637: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 638: ULONG dstreg = (opcode & 3584) >> 9; ! 639: {{ CPTR srca = regs.a[srcreg]; ! 640: UWORD srcdp = nextiword(); ! 641: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 642: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 643: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 644: srca += srcdpr; ! 645: { LONG src = get_long(srca); ! 646: { regs.a[dstreg] -= 4; ! 647: { CPTR dsta = regs.a[dstreg]; ! 648: regs.v = regs.c = 0; ! 649: regs.z = ((LONG)(src)) == 0; ! 650: regs.n = ((LONG)(src)) < 0; ! 651: put_long(dsta,src); ! 652: }}}}}}} ! 653: void op_2138(UWORD opcode) ! 654: { ! 655: ULONG dstreg = (opcode & 3584) >> 9; ! 656: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 657: LONG src = get_long(srca); ! 658: { regs.a[dstreg] -= 4; ! 659: { CPTR dsta = regs.a[dstreg]; ! 660: regs.v = regs.c = 0; ! 661: regs.z = ((LONG)(src)) == 0; ! 662: regs.n = ((LONG)(src)) < 0; ! 663: put_long(dsta,src); ! 664: }}}}} ! 665: void op_2139(UWORD opcode) ! 666: { ! 667: ULONG dstreg = (opcode & 3584) >> 9; ! 668: {{ CPTR srca = nextilong(); ! 669: LONG src = get_long(srca); ! 670: { regs.a[dstreg] -= 4; ! 671: { CPTR dsta = regs.a[dstreg]; ! 672: regs.v = regs.c = 0; ! 673: regs.z = ((LONG)(src)) == 0; ! 674: regs.n = ((LONG)(src)) < 0; ! 675: put_long(dsta,src); ! 676: }}}}} ! 677: void op_213a(UWORD opcode) ! 678: { ! 679: ULONG dstreg = (opcode & 3584) >> 9; ! 680: {{ CPTR srca = m68k_getpc(); ! 681: srca += (LONG)(WORD)nextiword(); ! 682: { LONG src = get_long(srca); ! 683: { regs.a[dstreg] -= 4; ! 684: { CPTR dsta = regs.a[dstreg]; ! 685: regs.v = regs.c = 0; ! 686: regs.z = ((LONG)(src)) == 0; ! 687: regs.n = ((LONG)(src)) < 0; ! 688: put_long(dsta,src); ! 689: }}}}}} ! 690: void op_213b(UWORD opcode) ! 691: { ! 692: ULONG dstreg = (opcode & 3584) >> 9; ! 693: {{ CPTR srca = m68k_getpc(); ! 694: UWORD srcdp = nextiword(); ! 695: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 696: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 697: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 698: srca += srcdpr; ! 699: { LONG src = get_long(srca); ! 700: { regs.a[dstreg] -= 4; ! 701: { CPTR dsta = regs.a[dstreg]; ! 702: regs.v = regs.c = 0; ! 703: regs.z = ((LONG)(src)) == 0; ! 704: regs.n = ((LONG)(src)) < 0; ! 705: put_long(dsta,src); ! 706: }}}}}}} ! 707: void op_213c(UWORD opcode) ! 708: { ! 709: ULONG dstreg = (opcode & 3584) >> 9; ! 710: {{ LONG src = nextilong(); ! 711: { regs.a[dstreg] -= 4; ! 712: { CPTR dsta = regs.a[dstreg]; ! 713: regs.v = regs.c = 0; ! 714: regs.z = ((LONG)(src)) == 0; ! 715: regs.n = ((LONG)(src)) < 0; ! 716: put_long(dsta,src); ! 717: }}}}} ! 718: void op_2140(UWORD opcode) ! 719: { ! 720: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 721: ULONG dstreg = (opcode & 3584) >> 9; ! 722: {{ LONG src = regs.d[srcreg]; ! 723: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 724: regs.v = regs.c = 0; ! 725: regs.z = ((LONG)(src)) == 0; ! 726: regs.n = ((LONG)(src)) < 0; ! 727: put_long(dsta,src); ! 728: }}}} ! 729: void op_2148(UWORD opcode) ! 730: { ! 731: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 732: ULONG dstreg = (opcode & 3584) >> 9; ! 733: {{ LONG src = regs.a[srcreg]; ! 734: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 735: regs.v = regs.c = 0; ! 736: regs.z = ((LONG)(src)) == 0; ! 737: regs.n = ((LONG)(src)) < 0; ! 738: put_long(dsta,src); ! 739: }}}} ! 740: void op_2150(UWORD opcode) ! 741: { ! 742: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 743: ULONG dstreg = (opcode & 3584) >> 9; ! 744: {{ CPTR srca = regs.a[srcreg]; ! 745: LONG src = get_long(srca); ! 746: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 747: regs.v = regs.c = 0; ! 748: regs.z = ((LONG)(src)) == 0; ! 749: regs.n = ((LONG)(src)) < 0; ! 750: put_long(dsta,src); ! 751: }}}} ! 752: void op_2158(UWORD opcode) ! 753: { ! 754: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 755: ULONG dstreg = (opcode & 3584) >> 9; ! 756: {{ CPTR srca = regs.a[srcreg]; ! 757: LONG src = get_long(srca); ! 758: { regs.a[srcreg] += 4; ! 759: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 760: regs.v = regs.c = 0; ! 761: regs.z = ((LONG)(src)) == 0; ! 762: regs.n = ((LONG)(src)) < 0; ! 763: put_long(dsta,src); ! 764: }}}}} ! 765: void op_2160(UWORD opcode) ! 766: { ! 767: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 768: ULONG dstreg = (opcode & 3584) >> 9; ! 769: {{ regs.a[srcreg] -= 4; ! 770: { CPTR srca = regs.a[srcreg]; ! 771: LONG src = get_long(srca); ! 772: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 773: regs.v = regs.c = 0; ! 774: regs.z = ((LONG)(src)) == 0; ! 775: regs.n = ((LONG)(src)) < 0; ! 776: put_long(dsta,src); ! 777: }}}}} ! 778: void op_2168(UWORD opcode) ! 779: { ! 780: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 781: ULONG dstreg = (opcode & 3584) >> 9; ! 782: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 783: LONG src = get_long(srca); ! 784: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 785: regs.v = regs.c = 0; ! 786: regs.z = ((LONG)(src)) == 0; ! 787: regs.n = ((LONG)(src)) < 0; ! 788: put_long(dsta,src); ! 789: }}}} ! 790: void op_2170(UWORD opcode) ! 791: { ! 792: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 793: ULONG dstreg = (opcode & 3584) >> 9; ! 794: {{ CPTR srca = regs.a[srcreg]; ! 795: UWORD srcdp = nextiword(); ! 796: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 797: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 798: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 799: srca += srcdpr; ! 800: { LONG src = get_long(srca); ! 801: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 802: regs.v = regs.c = 0; ! 803: regs.z = ((LONG)(src)) == 0; ! 804: regs.n = ((LONG)(src)) < 0; ! 805: put_long(dsta,src); ! 806: }}}}}} ! 807: void op_2178(UWORD opcode) ! 808: { ! 809: ULONG dstreg = (opcode & 3584) >> 9; ! 810: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 811: LONG src = get_long(srca); ! 812: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 813: regs.v = regs.c = 0; ! 814: regs.z = ((LONG)(src)) == 0; ! 815: regs.n = ((LONG)(src)) < 0; ! 816: put_long(dsta,src); ! 817: }}}} ! 818: void op_2179(UWORD opcode) ! 819: { ! 820: ULONG dstreg = (opcode & 3584) >> 9; ! 821: {{ CPTR srca = nextilong(); ! 822: LONG src = get_long(srca); ! 823: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 824: regs.v = regs.c = 0; ! 825: regs.z = ((LONG)(src)) == 0; ! 826: regs.n = ((LONG)(src)) < 0; ! 827: put_long(dsta,src); ! 828: }}}} ! 829: void op_217a(UWORD opcode) ! 830: { ! 831: ULONG dstreg = (opcode & 3584) >> 9; ! 832: {{ CPTR srca = m68k_getpc(); ! 833: srca += (LONG)(WORD)nextiword(); ! 834: { LONG src = get_long(srca); ! 835: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 836: regs.v = regs.c = 0; ! 837: regs.z = ((LONG)(src)) == 0; ! 838: regs.n = ((LONG)(src)) < 0; ! 839: put_long(dsta,src); ! 840: }}}}} ! 841: void op_217b(UWORD opcode) ! 842: { ! 843: ULONG dstreg = (opcode & 3584) >> 9; ! 844: {{ CPTR srca = m68k_getpc(); ! 845: UWORD srcdp = nextiword(); ! 846: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 847: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 848: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 849: srca += srcdpr; ! 850: { LONG src = get_long(srca); ! 851: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 852: regs.v = regs.c = 0; ! 853: regs.z = ((LONG)(src)) == 0; ! 854: regs.n = ((LONG)(src)) < 0; ! 855: put_long(dsta,src); ! 856: }}}}}} ! 857: void op_217c(UWORD opcode) ! 858: { ! 859: ULONG dstreg = (opcode & 3584) >> 9; ! 860: {{ LONG src = nextilong(); ! 861: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 862: regs.v = regs.c = 0; ! 863: regs.z = ((LONG)(src)) == 0; ! 864: regs.n = ((LONG)(src)) < 0; ! 865: put_long(dsta,src); ! 866: }}}} ! 867: void op_2180(UWORD opcode) ! 868: { ! 869: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 870: ULONG dstreg = (opcode & 3584) >> 9; ! 871: {{ LONG src = regs.d[srcreg]; ! 872: { CPTR dsta = regs.a[dstreg]; ! 873: UWORD dstdp = nextiword(); ! 874: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 875: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 876: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 877: dsta += dstdpr; ! 878: regs.v = regs.c = 0; ! 879: regs.z = ((LONG)(src)) == 0; ! 880: regs.n = ((LONG)(src)) < 0; ! 881: put_long(dsta,src); ! 882: }}}}} ! 883: void op_2188(UWORD opcode) ! 884: { ! 885: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 886: ULONG dstreg = (opcode & 3584) >> 9; ! 887: {{ LONG src = regs.a[srcreg]; ! 888: { CPTR dsta = regs.a[dstreg]; ! 889: UWORD dstdp = nextiword(); ! 890: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 891: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 892: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 893: dsta += dstdpr; ! 894: regs.v = regs.c = 0; ! 895: regs.z = ((LONG)(src)) == 0; ! 896: regs.n = ((LONG)(src)) < 0; ! 897: put_long(dsta,src); ! 898: }}}}} ! 899: void op_2190(UWORD opcode) ! 900: { ! 901: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 902: ULONG dstreg = (opcode & 3584) >> 9; ! 903: {{ CPTR srca = regs.a[srcreg]; ! 904: LONG src = get_long(srca); ! 905: { CPTR dsta = regs.a[dstreg]; ! 906: UWORD dstdp = nextiword(); ! 907: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 908: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 909: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 910: dsta += dstdpr; ! 911: regs.v = regs.c = 0; ! 912: regs.z = ((LONG)(src)) == 0; ! 913: regs.n = ((LONG)(src)) < 0; ! 914: put_long(dsta,src); ! 915: }}}}} ! 916: void op_2198(UWORD opcode) ! 917: { ! 918: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 919: ULONG dstreg = (opcode & 3584) >> 9; ! 920: {{ CPTR srca = regs.a[srcreg]; ! 921: LONG src = get_long(srca); ! 922: { regs.a[srcreg] += 4; ! 923: { CPTR dsta = regs.a[dstreg]; ! 924: UWORD dstdp = nextiword(); ! 925: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 926: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 927: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 928: dsta += dstdpr; ! 929: regs.v = regs.c = 0; ! 930: regs.z = ((LONG)(src)) == 0; ! 931: regs.n = ((LONG)(src)) < 0; ! 932: put_long(dsta,src); ! 933: }}}}}} ! 934: void op_21a0(UWORD opcode) ! 935: { ! 936: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 937: ULONG dstreg = (opcode & 3584) >> 9; ! 938: {{ regs.a[srcreg] -= 4; ! 939: { CPTR srca = regs.a[srcreg]; ! 940: LONG src = get_long(srca); ! 941: { CPTR dsta = regs.a[dstreg]; ! 942: UWORD dstdp = nextiword(); ! 943: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 944: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 945: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 946: dsta += dstdpr; ! 947: regs.v = regs.c = 0; ! 948: regs.z = ((LONG)(src)) == 0; ! 949: regs.n = ((LONG)(src)) < 0; ! 950: put_long(dsta,src); ! 951: }}}}}} ! 952: void op_21a8(UWORD opcode) ! 953: { ! 954: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 955: ULONG dstreg = (opcode & 3584) >> 9; ! 956: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 957: LONG src = get_long(srca); ! 958: { CPTR dsta = regs.a[dstreg]; ! 959: UWORD dstdp = nextiword(); ! 960: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 961: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 962: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 963: dsta += dstdpr; ! 964: regs.v = regs.c = 0; ! 965: regs.z = ((LONG)(src)) == 0; ! 966: regs.n = ((LONG)(src)) < 0; ! 967: put_long(dsta,src); ! 968: }}}}} ! 969: void op_21b0(UWORD opcode) ! 970: { ! 971: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 972: ULONG dstreg = (opcode & 3584) >> 9; ! 973: {{ CPTR srca = regs.a[srcreg]; ! 974: UWORD srcdp = nextiword(); ! 975: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 976: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 977: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 978: srca += srcdpr; ! 979: { LONG src = get_long(srca); ! 980: { CPTR dsta = regs.a[dstreg]; ! 981: UWORD dstdp = nextiword(); ! 982: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 983: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 984: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 985: dsta += dstdpr; ! 986: regs.v = regs.c = 0; ! 987: regs.z = ((LONG)(src)) == 0; ! 988: regs.n = ((LONG)(src)) < 0; ! 989: put_long(dsta,src); ! 990: }}}}}}} ! 991: void op_21b8(UWORD opcode) ! 992: { ! 993: ULONG dstreg = (opcode & 3584) >> 9; ! 994: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 995: LONG src = get_long(srca); ! 996: { CPTR dsta = regs.a[dstreg]; ! 997: UWORD dstdp = nextiword(); ! 998: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 999: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 1000: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 1001: dsta += dstdpr; ! 1002: regs.v = regs.c = 0; ! 1003: regs.z = ((LONG)(src)) == 0; ! 1004: regs.n = ((LONG)(src)) < 0; ! 1005: put_long(dsta,src); ! 1006: }}}}} ! 1007: void op_21b9(UWORD opcode) ! 1008: { ! 1009: ULONG dstreg = (opcode & 3584) >> 9; ! 1010: {{ CPTR srca = nextilong(); ! 1011: LONG src = get_long(srca); ! 1012: { CPTR dsta = regs.a[dstreg]; ! 1013: UWORD dstdp = nextiword(); ! 1014: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 1015: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 1016: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 1017: dsta += dstdpr; ! 1018: regs.v = regs.c = 0; ! 1019: regs.z = ((LONG)(src)) == 0; ! 1020: regs.n = ((LONG)(src)) < 0; ! 1021: put_long(dsta,src); ! 1022: }}}}} ! 1023: void op_21ba(UWORD opcode) ! 1024: { ! 1025: ULONG dstreg = (opcode & 3584) >> 9; ! 1026: {{ CPTR srca = m68k_getpc(); ! 1027: srca += (LONG)(WORD)nextiword(); ! 1028: { LONG src = get_long(srca); ! 1029: { CPTR dsta = regs.a[dstreg]; ! 1030: UWORD dstdp = nextiword(); ! 1031: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 1032: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 1033: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 1034: dsta += dstdpr; ! 1035: regs.v = regs.c = 0; ! 1036: regs.z = ((LONG)(src)) == 0; ! 1037: regs.n = ((LONG)(src)) < 0; ! 1038: put_long(dsta,src); ! 1039: }}}}}} ! 1040: void op_21bb(UWORD opcode) ! 1041: { ! 1042: ULONG dstreg = (opcode & 3584) >> 9; ! 1043: {{ CPTR srca = m68k_getpc(); ! 1044: UWORD srcdp = nextiword(); ! 1045: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 1046: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 1047: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 1048: srca += srcdpr; ! 1049: { LONG src = get_long(srca); ! 1050: { CPTR dsta = regs.a[dstreg]; ! 1051: UWORD dstdp = nextiword(); ! 1052: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 1053: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 1054: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 1055: dsta += dstdpr; ! 1056: regs.v = regs.c = 0; ! 1057: regs.z = ((LONG)(src)) == 0; ! 1058: regs.n = ((LONG)(src)) < 0; ! 1059: put_long(dsta,src); ! 1060: }}}}}}} ! 1061: void op_21bc(UWORD opcode) ! 1062: { ! 1063: ULONG dstreg = (opcode & 3584) >> 9; ! 1064: {{ LONG src = nextilong(); ! 1065: { CPTR dsta = regs.a[dstreg]; ! 1066: UWORD dstdp = nextiword(); ! 1067: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 1068: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 1069: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 1070: dsta += dstdpr; ! 1071: regs.v = regs.c = 0; ! 1072: regs.z = ((LONG)(src)) == 0; ! 1073: regs.n = ((LONG)(src)) < 0; ! 1074: put_long(dsta,src); ! 1075: }}}}} ! 1076: void op_21c0(UWORD opcode) ! 1077: { ! 1078: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1079: {{ LONG src = regs.d[srcreg]; ! 1080: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1081: regs.v = regs.c = 0; ! 1082: regs.z = ((LONG)(src)) == 0; ! 1083: regs.n = ((LONG)(src)) < 0; ! 1084: put_long(dsta,src); ! 1085: }}}} ! 1086: void op_21c8(UWORD opcode) ! 1087: { ! 1088: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1089: {{ LONG src = regs.a[srcreg]; ! 1090: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1091: regs.v = regs.c = 0; ! 1092: regs.z = ((LONG)(src)) == 0; ! 1093: regs.n = ((LONG)(src)) < 0; ! 1094: put_long(dsta,src); ! 1095: }}}} ! 1096: void op_21d0(UWORD opcode) ! 1097: { ! 1098: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1099: {{ CPTR srca = regs.a[srcreg]; ! 1100: LONG src = get_long(srca); ! 1101: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1102: regs.v = regs.c = 0; ! 1103: regs.z = ((LONG)(src)) == 0; ! 1104: regs.n = ((LONG)(src)) < 0; ! 1105: put_long(dsta,src); ! 1106: }}}} ! 1107: void op_21d8(UWORD opcode) ! 1108: { ! 1109: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1110: {{ CPTR srca = regs.a[srcreg]; ! 1111: LONG src = get_long(srca); ! 1112: { regs.a[srcreg] += 4; ! 1113: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1114: regs.v = regs.c = 0; ! 1115: regs.z = ((LONG)(src)) == 0; ! 1116: regs.n = ((LONG)(src)) < 0; ! 1117: put_long(dsta,src); ! 1118: }}}}} ! 1119: void op_21e0(UWORD opcode) ! 1120: { ! 1121: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1122: {{ regs.a[srcreg] -= 4; ! 1123: { CPTR srca = regs.a[srcreg]; ! 1124: LONG src = get_long(srca); ! 1125: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1126: regs.v = regs.c = 0; ! 1127: regs.z = ((LONG)(src)) == 0; ! 1128: regs.n = ((LONG)(src)) < 0; ! 1129: put_long(dsta,src); ! 1130: }}}}} ! 1131: void op_21e8(UWORD opcode) ! 1132: { ! 1133: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1134: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 1135: LONG src = get_long(srca); ! 1136: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1137: regs.v = regs.c = 0; ! 1138: regs.z = ((LONG)(src)) == 0; ! 1139: regs.n = ((LONG)(src)) < 0; ! 1140: put_long(dsta,src); ! 1141: }}}} ! 1142: void op_21f0(UWORD opcode) ! 1143: { ! 1144: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1145: {{ CPTR srca = regs.a[srcreg]; ! 1146: UWORD srcdp = nextiword(); ! 1147: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 1148: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 1149: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 1150: srca += srcdpr; ! 1151: { LONG src = get_long(srca); ! 1152: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1153: regs.v = regs.c = 0; ! 1154: regs.z = ((LONG)(src)) == 0; ! 1155: regs.n = ((LONG)(src)) < 0; ! 1156: put_long(dsta,src); ! 1157: }}}}}} ! 1158: void op_21f8(UWORD opcode) ! 1159: { ! 1160: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 1161: LONG src = get_long(srca); ! 1162: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1163: regs.v = regs.c = 0; ! 1164: regs.z = ((LONG)(src)) == 0; ! 1165: regs.n = ((LONG)(src)) < 0; ! 1166: put_long(dsta,src); ! 1167: }}}} ! 1168: void op_21f9(UWORD opcode) ! 1169: { ! 1170: {{ CPTR srca = nextilong(); ! 1171: LONG src = get_long(srca); ! 1172: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1173: regs.v = regs.c = 0; ! 1174: regs.z = ((LONG)(src)) == 0; ! 1175: regs.n = ((LONG)(src)) < 0; ! 1176: put_long(dsta,src); ! 1177: }}}} ! 1178: void op_21fa(UWORD opcode) ! 1179: { ! 1180: {{ CPTR srca = m68k_getpc(); ! 1181: srca += (LONG)(WORD)nextiword(); ! 1182: { LONG src = get_long(srca); ! 1183: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1184: regs.v = regs.c = 0; ! 1185: regs.z = ((LONG)(src)) == 0; ! 1186: regs.n = ((LONG)(src)) < 0; ! 1187: put_long(dsta,src); ! 1188: }}}}} ! 1189: void op_21fb(UWORD opcode) ! 1190: { ! 1191: {{ CPTR srca = m68k_getpc(); ! 1192: UWORD srcdp = nextiword(); ! 1193: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 1194: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 1195: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 1196: srca += srcdpr; ! 1197: { LONG src = get_long(srca); ! 1198: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1199: regs.v = regs.c = 0; ! 1200: regs.z = ((LONG)(src)) == 0; ! 1201: regs.n = ((LONG)(src)) < 0; ! 1202: put_long(dsta,src); ! 1203: }}}}}} ! 1204: void op_21fc(UWORD opcode) ! 1205: { ! 1206: {{ LONG src = nextilong(); ! 1207: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1208: regs.v = regs.c = 0; ! 1209: regs.z = ((LONG)(src)) == 0; ! 1210: regs.n = ((LONG)(src)) < 0; ! 1211: put_long(dsta,src); ! 1212: }}}} ! 1213: void op_23c0(UWORD opcode) ! 1214: { ! 1215: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1216: {{ LONG src = regs.d[srcreg]; ! 1217: { CPTR dsta = nextilong(); ! 1218: regs.v = regs.c = 0; ! 1219: regs.z = ((LONG)(src)) == 0; ! 1220: regs.n = ((LONG)(src)) < 0; ! 1221: put_long(dsta,src); ! 1222: }}}} ! 1223: void op_23c8(UWORD opcode) ! 1224: { ! 1225: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1226: {{ LONG src = regs.a[srcreg]; ! 1227: { CPTR dsta = nextilong(); ! 1228: regs.v = regs.c = 0; ! 1229: regs.z = ((LONG)(src)) == 0; ! 1230: regs.n = ((LONG)(src)) < 0; ! 1231: put_long(dsta,src); ! 1232: }}}} ! 1233: void op_23d0(UWORD opcode) ! 1234: { ! 1235: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1236: {{ CPTR srca = regs.a[srcreg]; ! 1237: LONG src = get_long(srca); ! 1238: { CPTR dsta = nextilong(); ! 1239: regs.v = regs.c = 0; ! 1240: regs.z = ((LONG)(src)) == 0; ! 1241: regs.n = ((LONG)(src)) < 0; ! 1242: put_long(dsta,src); ! 1243: }}}} ! 1244: void op_23d8(UWORD opcode) ! 1245: { ! 1246: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1247: {{ CPTR srca = regs.a[srcreg]; ! 1248: LONG src = get_long(srca); ! 1249: { regs.a[srcreg] += 4; ! 1250: { CPTR dsta = nextilong(); ! 1251: regs.v = regs.c = 0; ! 1252: regs.z = ((LONG)(src)) == 0; ! 1253: regs.n = ((LONG)(src)) < 0; ! 1254: put_long(dsta,src); ! 1255: }}}}} ! 1256: void op_23e0(UWORD opcode) ! 1257: { ! 1258: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1259: {{ regs.a[srcreg] -= 4; ! 1260: { CPTR srca = regs.a[srcreg]; ! 1261: LONG src = get_long(srca); ! 1262: { CPTR dsta = nextilong(); ! 1263: regs.v = regs.c = 0; ! 1264: regs.z = ((LONG)(src)) == 0; ! 1265: regs.n = ((LONG)(src)) < 0; ! 1266: put_long(dsta,src); ! 1267: }}}}} ! 1268: void op_23e8(UWORD opcode) ! 1269: { ! 1270: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1271: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 1272: LONG src = get_long(srca); ! 1273: { CPTR dsta = nextilong(); ! 1274: regs.v = regs.c = 0; ! 1275: regs.z = ((LONG)(src)) == 0; ! 1276: regs.n = ((LONG)(src)) < 0; ! 1277: put_long(dsta,src); ! 1278: }}}} ! 1279: void op_23f0(UWORD opcode) ! 1280: { ! 1281: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1282: {{ CPTR srca = regs.a[srcreg]; ! 1283: UWORD srcdp = nextiword(); ! 1284: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 1285: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 1286: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 1287: srca += srcdpr; ! 1288: { LONG src = get_long(srca); ! 1289: { CPTR dsta = nextilong(); ! 1290: regs.v = regs.c = 0; ! 1291: regs.z = ((LONG)(src)) == 0; ! 1292: regs.n = ((LONG)(src)) < 0; ! 1293: put_long(dsta,src); ! 1294: }}}}}} ! 1295: void op_23f8(UWORD opcode) ! 1296: { ! 1297: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 1298: LONG src = get_long(srca); ! 1299: { CPTR dsta = nextilong(); ! 1300: regs.v = regs.c = 0; ! 1301: regs.z = ((LONG)(src)) == 0; ! 1302: regs.n = ((LONG)(src)) < 0; ! 1303: put_long(dsta,src); ! 1304: }}}} ! 1305: void op_23f9(UWORD opcode) ! 1306: { ! 1307: {{ CPTR srca = nextilong(); ! 1308: LONG src = get_long(srca); ! 1309: { CPTR dsta = nextilong(); ! 1310: regs.v = regs.c = 0; ! 1311: regs.z = ((LONG)(src)) == 0; ! 1312: regs.n = ((LONG)(src)) < 0; ! 1313: put_long(dsta,src); ! 1314: }}}} ! 1315: void op_23fa(UWORD opcode) ! 1316: { ! 1317: {{ CPTR srca = m68k_getpc(); ! 1318: srca += (LONG)(WORD)nextiword(); ! 1319: { LONG src = get_long(srca); ! 1320: { CPTR dsta = nextilong(); ! 1321: regs.v = regs.c = 0; ! 1322: regs.z = ((LONG)(src)) == 0; ! 1323: regs.n = ((LONG)(src)) < 0; ! 1324: put_long(dsta,src); ! 1325: }}}}} ! 1326: void op_23fb(UWORD opcode) ! 1327: { ! 1328: {{ CPTR srca = m68k_getpc(); ! 1329: UWORD srcdp = nextiword(); ! 1330: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 1331: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 1332: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 1333: srca += srcdpr; ! 1334: { LONG src = get_long(srca); ! 1335: { CPTR dsta = nextilong(); ! 1336: regs.v = regs.c = 0; ! 1337: regs.z = ((LONG)(src)) == 0; ! 1338: regs.n = ((LONG)(src)) < 0; ! 1339: put_long(dsta,src); ! 1340: }}}}}} ! 1341: void op_23fc(UWORD opcode) ! 1342: { ! 1343: {{ LONG src = nextilong(); ! 1344: { CPTR dsta = nextilong(); ! 1345: regs.v = regs.c = 0; ! 1346: regs.z = ((LONG)(src)) == 0; ! 1347: regs.n = ((LONG)(src)) < 0; ! 1348: put_long(dsta,src); ! 1349: }}}}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.