|
|
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_1000(UWORD opcode) ! 10: { ! 11: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 12: ULONG dstreg = (opcode & 3584) >> 9; ! 13: {{ BYTE src = regs.d[srcreg]; ! 14: { regs.v = regs.c = 0; ! 15: regs.z = ((BYTE)(src)) == 0; ! 16: regs.n = ((BYTE)(src)) < 0; ! 17: regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff; ! 18: }}}} ! 19: void op_1010(UWORD opcode) ! 20: { ! 21: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 22: ULONG dstreg = (opcode & 3584) >> 9; ! 23: {{ CPTR srca = regs.a[srcreg]; ! 24: BYTE src = get_byte(srca); ! 25: { regs.v = regs.c = 0; ! 26: regs.z = ((BYTE)(src)) == 0; ! 27: regs.n = ((BYTE)(src)) < 0; ! 28: regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff; ! 29: }}}} ! 30: void op_1018(UWORD opcode) ! 31: { ! 32: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 33: ULONG dstreg = (opcode & 3584) >> 9; ! 34: {{ CPTR srca = regs.a[srcreg]; ! 35: BYTE src = get_byte(srca); ! 36: { regs.a[srcreg] += (srcreg == 7) ? 2 : 1; ! 37: { regs.v = regs.c = 0; ! 38: regs.z = ((BYTE)(src)) == 0; ! 39: regs.n = ((BYTE)(src)) < 0; ! 40: regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff; ! 41: }}}}} ! 42: void op_1020(UWORD opcode) ! 43: { ! 44: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 45: ULONG dstreg = (opcode & 3584) >> 9; ! 46: {{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1; ! 47: { CPTR srca = regs.a[srcreg]; ! 48: BYTE src = get_byte(srca); ! 49: { regs.v = regs.c = 0; ! 50: regs.z = ((BYTE)(src)) == 0; ! 51: regs.n = ((BYTE)(src)) < 0; ! 52: regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff; ! 53: }}}}} ! 54: void op_1028(UWORD opcode) ! 55: { ! 56: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 57: ULONG dstreg = (opcode & 3584) >> 9; ! 58: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 59: BYTE src = get_byte(srca); ! 60: { regs.v = regs.c = 0; ! 61: regs.z = ((BYTE)(src)) == 0; ! 62: regs.n = ((BYTE)(src)) < 0; ! 63: regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff; ! 64: }}}} ! 65: void op_1030(UWORD opcode) ! 66: { ! 67: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 68: ULONG dstreg = (opcode & 3584) >> 9; ! 69: {{ CPTR srca = regs.a[srcreg]; ! 70: UWORD srcdp = nextiword(); ! 71: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 72: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 73: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 74: srca += srcdpr; ! 75: { BYTE src = get_byte(srca); ! 76: { regs.v = regs.c = 0; ! 77: regs.z = ((BYTE)(src)) == 0; ! 78: regs.n = ((BYTE)(src)) < 0; ! 79: regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff; ! 80: }}}}}} ! 81: void op_1038(UWORD opcode) ! 82: { ! 83: ULONG dstreg = (opcode & 3584) >> 9; ! 84: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 85: BYTE src = get_byte(srca); ! 86: { regs.v = regs.c = 0; ! 87: regs.z = ((BYTE)(src)) == 0; ! 88: regs.n = ((BYTE)(src)) < 0; ! 89: regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff; ! 90: }}}} ! 91: void op_1039(UWORD opcode) ! 92: { ! 93: ULONG dstreg = (opcode & 3584) >> 9; ! 94: {{ CPTR srca = nextilong(); ! 95: BYTE src = get_byte(srca); ! 96: { regs.v = regs.c = 0; ! 97: regs.z = ((BYTE)(src)) == 0; ! 98: regs.n = ((BYTE)(src)) < 0; ! 99: regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff; ! 100: }}}} ! 101: void op_103a(UWORD opcode) ! 102: { ! 103: ULONG dstreg = (opcode & 3584) >> 9; ! 104: {{ CPTR srca = m68k_getpc(); ! 105: srca += (LONG)(WORD)nextiword(); ! 106: { BYTE src = get_byte(srca); ! 107: { regs.v = regs.c = 0; ! 108: regs.z = ((BYTE)(src)) == 0; ! 109: regs.n = ((BYTE)(src)) < 0; ! 110: regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff; ! 111: }}}}} ! 112: void op_103b(UWORD opcode) ! 113: { ! 114: ULONG dstreg = (opcode & 3584) >> 9; ! 115: {{ CPTR srca = m68k_getpc(); ! 116: UWORD srcdp = nextiword(); ! 117: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 118: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 119: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 120: srca += srcdpr; ! 121: { BYTE src = get_byte(srca); ! 122: { regs.v = regs.c = 0; ! 123: regs.z = ((BYTE)(src)) == 0; ! 124: regs.n = ((BYTE)(src)) < 0; ! 125: regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff; ! 126: }}}}}} ! 127: void op_103c(UWORD opcode) ! 128: { ! 129: ULONG dstreg = (opcode & 3584) >> 9; ! 130: {{ BYTE src = nextiword(); ! 131: { regs.v = regs.c = 0; ! 132: regs.z = ((BYTE)(src)) == 0; ! 133: regs.n = ((BYTE)(src)) < 0; ! 134: regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff; ! 135: }}}} ! 136: void op_1080(UWORD opcode) ! 137: { ! 138: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 139: ULONG dstreg = (opcode & 3584) >> 9; ! 140: {{ BYTE src = regs.d[srcreg]; ! 141: { CPTR dsta = regs.a[dstreg]; ! 142: regs.v = regs.c = 0; ! 143: regs.z = ((BYTE)(src)) == 0; ! 144: regs.n = ((BYTE)(src)) < 0; ! 145: put_byte(dsta,src); ! 146: }}}} ! 147: void op_1090(UWORD opcode) ! 148: { ! 149: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 150: ULONG dstreg = (opcode & 3584) >> 9; ! 151: {{ CPTR srca = regs.a[srcreg]; ! 152: BYTE src = get_byte(srca); ! 153: { CPTR dsta = regs.a[dstreg]; ! 154: regs.v = regs.c = 0; ! 155: regs.z = ((BYTE)(src)) == 0; ! 156: regs.n = ((BYTE)(src)) < 0; ! 157: put_byte(dsta,src); ! 158: }}}} ! 159: void op_1098(UWORD opcode) ! 160: { ! 161: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 162: ULONG dstreg = (opcode & 3584) >> 9; ! 163: {{ CPTR srca = regs.a[srcreg]; ! 164: BYTE src = get_byte(srca); ! 165: { regs.a[srcreg] += (srcreg == 7) ? 2 : 1; ! 166: { CPTR dsta = regs.a[dstreg]; ! 167: regs.v = regs.c = 0; ! 168: regs.z = ((BYTE)(src)) == 0; ! 169: regs.n = ((BYTE)(src)) < 0; ! 170: put_byte(dsta,src); ! 171: }}}}} ! 172: void op_10a0(UWORD opcode) ! 173: { ! 174: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 175: ULONG dstreg = (opcode & 3584) >> 9; ! 176: {{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1; ! 177: { CPTR srca = regs.a[srcreg]; ! 178: BYTE src = get_byte(srca); ! 179: { CPTR dsta = regs.a[dstreg]; ! 180: regs.v = regs.c = 0; ! 181: regs.z = ((BYTE)(src)) == 0; ! 182: regs.n = ((BYTE)(src)) < 0; ! 183: put_byte(dsta,src); ! 184: }}}}} ! 185: void op_10a8(UWORD opcode) ! 186: { ! 187: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 188: ULONG dstreg = (opcode & 3584) >> 9; ! 189: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 190: BYTE src = get_byte(srca); ! 191: { CPTR dsta = regs.a[dstreg]; ! 192: regs.v = regs.c = 0; ! 193: regs.z = ((BYTE)(src)) == 0; ! 194: regs.n = ((BYTE)(src)) < 0; ! 195: put_byte(dsta,src); ! 196: }}}} ! 197: void op_10b0(UWORD opcode) ! 198: { ! 199: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 200: ULONG dstreg = (opcode & 3584) >> 9; ! 201: {{ CPTR srca = regs.a[srcreg]; ! 202: UWORD srcdp = nextiword(); ! 203: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 204: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 205: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 206: srca += srcdpr; ! 207: { BYTE src = get_byte(srca); ! 208: { CPTR dsta = regs.a[dstreg]; ! 209: regs.v = regs.c = 0; ! 210: regs.z = ((BYTE)(src)) == 0; ! 211: regs.n = ((BYTE)(src)) < 0; ! 212: put_byte(dsta,src); ! 213: }}}}}} ! 214: void op_10b8(UWORD opcode) ! 215: { ! 216: ULONG dstreg = (opcode & 3584) >> 9; ! 217: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 218: BYTE src = get_byte(srca); ! 219: { CPTR dsta = regs.a[dstreg]; ! 220: regs.v = regs.c = 0; ! 221: regs.z = ((BYTE)(src)) == 0; ! 222: regs.n = ((BYTE)(src)) < 0; ! 223: put_byte(dsta,src); ! 224: }}}} ! 225: void op_10b9(UWORD opcode) ! 226: { ! 227: ULONG dstreg = (opcode & 3584) >> 9; ! 228: {{ CPTR srca = nextilong(); ! 229: BYTE src = get_byte(srca); ! 230: { CPTR dsta = regs.a[dstreg]; ! 231: regs.v = regs.c = 0; ! 232: regs.z = ((BYTE)(src)) == 0; ! 233: regs.n = ((BYTE)(src)) < 0; ! 234: put_byte(dsta,src); ! 235: }}}} ! 236: void op_10ba(UWORD opcode) ! 237: { ! 238: ULONG dstreg = (opcode & 3584) >> 9; ! 239: {{ CPTR srca = m68k_getpc(); ! 240: srca += (LONG)(WORD)nextiword(); ! 241: { BYTE src = get_byte(srca); ! 242: { CPTR dsta = regs.a[dstreg]; ! 243: regs.v = regs.c = 0; ! 244: regs.z = ((BYTE)(src)) == 0; ! 245: regs.n = ((BYTE)(src)) < 0; ! 246: put_byte(dsta,src); ! 247: }}}}} ! 248: void op_10bb(UWORD opcode) ! 249: { ! 250: ULONG dstreg = (opcode & 3584) >> 9; ! 251: {{ CPTR srca = m68k_getpc(); ! 252: UWORD srcdp = nextiword(); ! 253: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 254: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 255: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 256: srca += srcdpr; ! 257: { BYTE src = get_byte(srca); ! 258: { CPTR dsta = regs.a[dstreg]; ! 259: regs.v = regs.c = 0; ! 260: regs.z = ((BYTE)(src)) == 0; ! 261: regs.n = ((BYTE)(src)) < 0; ! 262: put_byte(dsta,src); ! 263: }}}}}} ! 264: void op_10bc(UWORD opcode) ! 265: { ! 266: ULONG dstreg = (opcode & 3584) >> 9; ! 267: {{ BYTE src = nextiword(); ! 268: { CPTR dsta = regs.a[dstreg]; ! 269: regs.v = regs.c = 0; ! 270: regs.z = ((BYTE)(src)) == 0; ! 271: regs.n = ((BYTE)(src)) < 0; ! 272: put_byte(dsta,src); ! 273: }}}} ! 274: void op_10c0(UWORD opcode) ! 275: { ! 276: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 277: ULONG dstreg = (opcode & 3584) >> 9; ! 278: {{ BYTE src = regs.d[srcreg]; ! 279: { CPTR dsta = regs.a[dstreg]; ! 280: { regs.a[dstreg] += (dstreg == 7) ? 2 : 1; ! 281: regs.v = regs.c = 0; ! 282: regs.z = ((BYTE)(src)) == 0; ! 283: regs.n = ((BYTE)(src)) < 0; ! 284: put_byte(dsta,src); ! 285: }}}}} ! 286: void op_10d0(UWORD opcode) ! 287: { ! 288: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 289: ULONG dstreg = (opcode & 3584) >> 9; ! 290: {{ CPTR srca = regs.a[srcreg]; ! 291: BYTE src = get_byte(srca); ! 292: { CPTR dsta = regs.a[dstreg]; ! 293: { regs.a[dstreg] += (dstreg == 7) ? 2 : 1; ! 294: regs.v = regs.c = 0; ! 295: regs.z = ((BYTE)(src)) == 0; ! 296: regs.n = ((BYTE)(src)) < 0; ! 297: put_byte(dsta,src); ! 298: }}}}} ! 299: void op_10d8(UWORD opcode) ! 300: { ! 301: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 302: ULONG dstreg = (opcode & 3584) >> 9; ! 303: {{ CPTR srca = regs.a[srcreg]; ! 304: BYTE src = get_byte(srca); ! 305: { regs.a[srcreg] += (srcreg == 7) ? 2 : 1; ! 306: { CPTR dsta = regs.a[dstreg]; ! 307: { regs.a[dstreg] += (dstreg == 7) ? 2 : 1; ! 308: regs.v = regs.c = 0; ! 309: regs.z = ((BYTE)(src)) == 0; ! 310: regs.n = ((BYTE)(src)) < 0; ! 311: put_byte(dsta,src); ! 312: }}}}}} ! 313: void op_10e0(UWORD opcode) ! 314: { ! 315: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 316: ULONG dstreg = (opcode & 3584) >> 9; ! 317: {{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1; ! 318: { CPTR srca = regs.a[srcreg]; ! 319: BYTE src = get_byte(srca); ! 320: { CPTR dsta = regs.a[dstreg]; ! 321: { regs.a[dstreg] += (dstreg == 7) ? 2 : 1; ! 322: regs.v = regs.c = 0; ! 323: regs.z = ((BYTE)(src)) == 0; ! 324: regs.n = ((BYTE)(src)) < 0; ! 325: put_byte(dsta,src); ! 326: }}}}}} ! 327: void op_10e8(UWORD opcode) ! 328: { ! 329: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 330: ULONG dstreg = (opcode & 3584) >> 9; ! 331: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 332: BYTE src = get_byte(srca); ! 333: { CPTR dsta = regs.a[dstreg]; ! 334: { regs.a[dstreg] += (dstreg == 7) ? 2 : 1; ! 335: regs.v = regs.c = 0; ! 336: regs.z = ((BYTE)(src)) == 0; ! 337: regs.n = ((BYTE)(src)) < 0; ! 338: put_byte(dsta,src); ! 339: }}}}} ! 340: void op_10f0(UWORD opcode) ! 341: { ! 342: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 343: ULONG dstreg = (opcode & 3584) >> 9; ! 344: {{ CPTR srca = regs.a[srcreg]; ! 345: UWORD srcdp = nextiword(); ! 346: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 347: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 348: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 349: srca += srcdpr; ! 350: { BYTE src = get_byte(srca); ! 351: { CPTR dsta = regs.a[dstreg]; ! 352: { regs.a[dstreg] += (dstreg == 7) ? 2 : 1; ! 353: regs.v = regs.c = 0; ! 354: regs.z = ((BYTE)(src)) == 0; ! 355: regs.n = ((BYTE)(src)) < 0; ! 356: put_byte(dsta,src); ! 357: }}}}}}} ! 358: void op_10f8(UWORD opcode) ! 359: { ! 360: ULONG dstreg = (opcode & 3584) >> 9; ! 361: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 362: BYTE src = get_byte(srca); ! 363: { CPTR dsta = regs.a[dstreg]; ! 364: { regs.a[dstreg] += (dstreg == 7) ? 2 : 1; ! 365: regs.v = regs.c = 0; ! 366: regs.z = ((BYTE)(src)) == 0; ! 367: regs.n = ((BYTE)(src)) < 0; ! 368: put_byte(dsta,src); ! 369: }}}}} ! 370: void op_10f9(UWORD opcode) ! 371: { ! 372: ULONG dstreg = (opcode & 3584) >> 9; ! 373: {{ CPTR srca = nextilong(); ! 374: BYTE src = get_byte(srca); ! 375: { CPTR dsta = regs.a[dstreg]; ! 376: { regs.a[dstreg] += (dstreg == 7) ? 2 : 1; ! 377: regs.v = regs.c = 0; ! 378: regs.z = ((BYTE)(src)) == 0; ! 379: regs.n = ((BYTE)(src)) < 0; ! 380: put_byte(dsta,src); ! 381: }}}}} ! 382: void op_10fa(UWORD opcode) ! 383: { ! 384: ULONG dstreg = (opcode & 3584) >> 9; ! 385: {{ CPTR srca = m68k_getpc(); ! 386: srca += (LONG)(WORD)nextiword(); ! 387: { BYTE src = get_byte(srca); ! 388: { CPTR dsta = regs.a[dstreg]; ! 389: { regs.a[dstreg] += (dstreg == 7) ? 2 : 1; ! 390: regs.v = regs.c = 0; ! 391: regs.z = ((BYTE)(src)) == 0; ! 392: regs.n = ((BYTE)(src)) < 0; ! 393: put_byte(dsta,src); ! 394: }}}}}} ! 395: void op_10fb(UWORD opcode) ! 396: { ! 397: ULONG dstreg = (opcode & 3584) >> 9; ! 398: {{ CPTR srca = m68k_getpc(); ! 399: UWORD srcdp = nextiword(); ! 400: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 401: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 402: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 403: srca += srcdpr; ! 404: { BYTE src = get_byte(srca); ! 405: { CPTR dsta = regs.a[dstreg]; ! 406: { regs.a[dstreg] += (dstreg == 7) ? 2 : 1; ! 407: regs.v = regs.c = 0; ! 408: regs.z = ((BYTE)(src)) == 0; ! 409: regs.n = ((BYTE)(src)) < 0; ! 410: put_byte(dsta,src); ! 411: }}}}}}} ! 412: void op_10fc(UWORD opcode) ! 413: { ! 414: ULONG dstreg = (opcode & 3584) >> 9; ! 415: {{ BYTE src = nextiword(); ! 416: { CPTR dsta = regs.a[dstreg]; ! 417: { regs.a[dstreg] += (dstreg == 7) ? 2 : 1; ! 418: regs.v = regs.c = 0; ! 419: regs.z = ((BYTE)(src)) == 0; ! 420: regs.n = ((BYTE)(src)) < 0; ! 421: put_byte(dsta,src); ! 422: }}}}} ! 423: void op_1100(UWORD opcode) ! 424: { ! 425: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 426: ULONG dstreg = (opcode & 3584) >> 9; ! 427: {{ BYTE src = regs.d[srcreg]; ! 428: { regs.a[dstreg] -= (dstreg == 7) ? 2 : 1; ! 429: { CPTR dsta = regs.a[dstreg]; ! 430: regs.v = regs.c = 0; ! 431: regs.z = ((BYTE)(src)) == 0; ! 432: regs.n = ((BYTE)(src)) < 0; ! 433: put_byte(dsta,src); ! 434: }}}}} ! 435: void op_1110(UWORD opcode) ! 436: { ! 437: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 438: ULONG dstreg = (opcode & 3584) >> 9; ! 439: {{ CPTR srca = regs.a[srcreg]; ! 440: BYTE src = get_byte(srca); ! 441: { regs.a[dstreg] -= (dstreg == 7) ? 2 : 1; ! 442: { CPTR dsta = regs.a[dstreg]; ! 443: regs.v = regs.c = 0; ! 444: regs.z = ((BYTE)(src)) == 0; ! 445: regs.n = ((BYTE)(src)) < 0; ! 446: put_byte(dsta,src); ! 447: }}}}} ! 448: void op_1118(UWORD opcode) ! 449: { ! 450: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 451: ULONG dstreg = (opcode & 3584) >> 9; ! 452: {{ CPTR srca = regs.a[srcreg]; ! 453: BYTE src = get_byte(srca); ! 454: { regs.a[srcreg] += (srcreg == 7) ? 2 : 1; ! 455: { regs.a[dstreg] -= (dstreg == 7) ? 2 : 1; ! 456: { CPTR dsta = regs.a[dstreg]; ! 457: regs.v = regs.c = 0; ! 458: regs.z = ((BYTE)(src)) == 0; ! 459: regs.n = ((BYTE)(src)) < 0; ! 460: put_byte(dsta,src); ! 461: }}}}}} ! 462: void op_1120(UWORD opcode) ! 463: { ! 464: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 465: ULONG dstreg = (opcode & 3584) >> 9; ! 466: {{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1; ! 467: { CPTR srca = regs.a[srcreg]; ! 468: BYTE src = get_byte(srca); ! 469: { regs.a[dstreg] -= (dstreg == 7) ? 2 : 1; ! 470: { CPTR dsta = regs.a[dstreg]; ! 471: regs.v = regs.c = 0; ! 472: regs.z = ((BYTE)(src)) == 0; ! 473: regs.n = ((BYTE)(src)) < 0; ! 474: put_byte(dsta,src); ! 475: }}}}}} ! 476: void op_1128(UWORD opcode) ! 477: { ! 478: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 479: ULONG dstreg = (opcode & 3584) >> 9; ! 480: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 481: BYTE src = get_byte(srca); ! 482: { regs.a[dstreg] -= (dstreg == 7) ? 2 : 1; ! 483: { CPTR dsta = regs.a[dstreg]; ! 484: regs.v = regs.c = 0; ! 485: regs.z = ((BYTE)(src)) == 0; ! 486: regs.n = ((BYTE)(src)) < 0; ! 487: put_byte(dsta,src); ! 488: }}}}} ! 489: void op_1130(UWORD opcode) ! 490: { ! 491: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 492: ULONG dstreg = (opcode & 3584) >> 9; ! 493: {{ CPTR srca = regs.a[srcreg]; ! 494: UWORD srcdp = nextiword(); ! 495: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 496: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 497: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 498: srca += srcdpr; ! 499: { BYTE src = get_byte(srca); ! 500: { regs.a[dstreg] -= (dstreg == 7) ? 2 : 1; ! 501: { CPTR dsta = regs.a[dstreg]; ! 502: regs.v = regs.c = 0; ! 503: regs.z = ((BYTE)(src)) == 0; ! 504: regs.n = ((BYTE)(src)) < 0; ! 505: put_byte(dsta,src); ! 506: }}}}}}} ! 507: void op_1138(UWORD opcode) ! 508: { ! 509: ULONG dstreg = (opcode & 3584) >> 9; ! 510: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 511: BYTE src = get_byte(srca); ! 512: { regs.a[dstreg] -= (dstreg == 7) ? 2 : 1; ! 513: { CPTR dsta = regs.a[dstreg]; ! 514: regs.v = regs.c = 0; ! 515: regs.z = ((BYTE)(src)) == 0; ! 516: regs.n = ((BYTE)(src)) < 0; ! 517: put_byte(dsta,src); ! 518: }}}}} ! 519: void op_1139(UWORD opcode) ! 520: { ! 521: ULONG dstreg = (opcode & 3584) >> 9; ! 522: {{ CPTR srca = nextilong(); ! 523: BYTE src = get_byte(srca); ! 524: { regs.a[dstreg] -= (dstreg == 7) ? 2 : 1; ! 525: { CPTR dsta = regs.a[dstreg]; ! 526: regs.v = regs.c = 0; ! 527: regs.z = ((BYTE)(src)) == 0; ! 528: regs.n = ((BYTE)(src)) < 0; ! 529: put_byte(dsta,src); ! 530: }}}}} ! 531: void op_113a(UWORD opcode) ! 532: { ! 533: ULONG dstreg = (opcode & 3584) >> 9; ! 534: {{ CPTR srca = m68k_getpc(); ! 535: srca += (LONG)(WORD)nextiword(); ! 536: { BYTE src = get_byte(srca); ! 537: { regs.a[dstreg] -= (dstreg == 7) ? 2 : 1; ! 538: { CPTR dsta = regs.a[dstreg]; ! 539: regs.v = regs.c = 0; ! 540: regs.z = ((BYTE)(src)) == 0; ! 541: regs.n = ((BYTE)(src)) < 0; ! 542: put_byte(dsta,src); ! 543: }}}}}} ! 544: void op_113b(UWORD opcode) ! 545: { ! 546: ULONG dstreg = (opcode & 3584) >> 9; ! 547: {{ CPTR srca = m68k_getpc(); ! 548: UWORD srcdp = nextiword(); ! 549: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 550: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 551: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 552: srca += srcdpr; ! 553: { BYTE src = get_byte(srca); ! 554: { regs.a[dstreg] -= (dstreg == 7) ? 2 : 1; ! 555: { CPTR dsta = regs.a[dstreg]; ! 556: regs.v = regs.c = 0; ! 557: regs.z = ((BYTE)(src)) == 0; ! 558: regs.n = ((BYTE)(src)) < 0; ! 559: put_byte(dsta,src); ! 560: }}}}}}} ! 561: void op_113c(UWORD opcode) ! 562: { ! 563: ULONG dstreg = (opcode & 3584) >> 9; ! 564: {{ BYTE src = nextiword(); ! 565: { regs.a[dstreg] -= (dstreg == 7) ? 2 : 1; ! 566: { CPTR dsta = regs.a[dstreg]; ! 567: regs.v = regs.c = 0; ! 568: regs.z = ((BYTE)(src)) == 0; ! 569: regs.n = ((BYTE)(src)) < 0; ! 570: put_byte(dsta,src); ! 571: }}}}} ! 572: void op_1140(UWORD opcode) ! 573: { ! 574: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 575: ULONG dstreg = (opcode & 3584) >> 9; ! 576: {{ BYTE src = regs.d[srcreg]; ! 577: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 578: regs.v = regs.c = 0; ! 579: regs.z = ((BYTE)(src)) == 0; ! 580: regs.n = ((BYTE)(src)) < 0; ! 581: put_byte(dsta,src); ! 582: }}}} ! 583: void op_1150(UWORD opcode) ! 584: { ! 585: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 586: ULONG dstreg = (opcode & 3584) >> 9; ! 587: {{ CPTR srca = regs.a[srcreg]; ! 588: BYTE src = get_byte(srca); ! 589: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 590: regs.v = regs.c = 0; ! 591: regs.z = ((BYTE)(src)) == 0; ! 592: regs.n = ((BYTE)(src)) < 0; ! 593: put_byte(dsta,src); ! 594: }}}} ! 595: void op_1158(UWORD opcode) ! 596: { ! 597: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 598: ULONG dstreg = (opcode & 3584) >> 9; ! 599: {{ CPTR srca = regs.a[srcreg]; ! 600: BYTE src = get_byte(srca); ! 601: { regs.a[srcreg] += (srcreg == 7) ? 2 : 1; ! 602: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 603: regs.v = regs.c = 0; ! 604: regs.z = ((BYTE)(src)) == 0; ! 605: regs.n = ((BYTE)(src)) < 0; ! 606: put_byte(dsta,src); ! 607: }}}}} ! 608: void op_1160(UWORD opcode) ! 609: { ! 610: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 611: ULONG dstreg = (opcode & 3584) >> 9; ! 612: {{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1; ! 613: { CPTR srca = regs.a[srcreg]; ! 614: BYTE src = get_byte(srca); ! 615: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 616: regs.v = regs.c = 0; ! 617: regs.z = ((BYTE)(src)) == 0; ! 618: regs.n = ((BYTE)(src)) < 0; ! 619: put_byte(dsta,src); ! 620: }}}}} ! 621: void op_1168(UWORD opcode) ! 622: { ! 623: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 624: ULONG dstreg = (opcode & 3584) >> 9; ! 625: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 626: BYTE src = get_byte(srca); ! 627: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 628: regs.v = regs.c = 0; ! 629: regs.z = ((BYTE)(src)) == 0; ! 630: regs.n = ((BYTE)(src)) < 0; ! 631: put_byte(dsta,src); ! 632: }}}} ! 633: void op_1170(UWORD opcode) ! 634: { ! 635: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 636: ULONG dstreg = (opcode & 3584) >> 9; ! 637: {{ CPTR srca = regs.a[srcreg]; ! 638: UWORD srcdp = nextiword(); ! 639: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 640: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 641: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 642: srca += srcdpr; ! 643: { BYTE src = get_byte(srca); ! 644: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 645: regs.v = regs.c = 0; ! 646: regs.z = ((BYTE)(src)) == 0; ! 647: regs.n = ((BYTE)(src)) < 0; ! 648: put_byte(dsta,src); ! 649: }}}}}} ! 650: void op_1178(UWORD opcode) ! 651: { ! 652: ULONG dstreg = (opcode & 3584) >> 9; ! 653: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 654: BYTE src = get_byte(srca); ! 655: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 656: regs.v = regs.c = 0; ! 657: regs.z = ((BYTE)(src)) == 0; ! 658: regs.n = ((BYTE)(src)) < 0; ! 659: put_byte(dsta,src); ! 660: }}}} ! 661: void op_1179(UWORD opcode) ! 662: { ! 663: ULONG dstreg = (opcode & 3584) >> 9; ! 664: {{ CPTR srca = nextilong(); ! 665: BYTE src = get_byte(srca); ! 666: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 667: regs.v = regs.c = 0; ! 668: regs.z = ((BYTE)(src)) == 0; ! 669: regs.n = ((BYTE)(src)) < 0; ! 670: put_byte(dsta,src); ! 671: }}}} ! 672: void op_117a(UWORD opcode) ! 673: { ! 674: ULONG dstreg = (opcode & 3584) >> 9; ! 675: {{ CPTR srca = m68k_getpc(); ! 676: srca += (LONG)(WORD)nextiword(); ! 677: { BYTE src = get_byte(srca); ! 678: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 679: regs.v = regs.c = 0; ! 680: regs.z = ((BYTE)(src)) == 0; ! 681: regs.n = ((BYTE)(src)) < 0; ! 682: put_byte(dsta,src); ! 683: }}}}} ! 684: void op_117b(UWORD opcode) ! 685: { ! 686: ULONG dstreg = (opcode & 3584) >> 9; ! 687: {{ CPTR srca = m68k_getpc(); ! 688: UWORD srcdp = nextiword(); ! 689: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 690: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 691: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 692: srca += srcdpr; ! 693: { BYTE src = get_byte(srca); ! 694: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 695: regs.v = regs.c = 0; ! 696: regs.z = ((BYTE)(src)) == 0; ! 697: regs.n = ((BYTE)(src)) < 0; ! 698: put_byte(dsta,src); ! 699: }}}}}} ! 700: void op_117c(UWORD opcode) ! 701: { ! 702: ULONG dstreg = (opcode & 3584) >> 9; ! 703: {{ BYTE src = nextiword(); ! 704: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword(); ! 705: regs.v = regs.c = 0; ! 706: regs.z = ((BYTE)(src)) == 0; ! 707: regs.n = ((BYTE)(src)) < 0; ! 708: put_byte(dsta,src); ! 709: }}}} ! 710: void op_1180(UWORD opcode) ! 711: { ! 712: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 713: ULONG dstreg = (opcode & 3584) >> 9; ! 714: {{ BYTE src = regs.d[srcreg]; ! 715: { CPTR dsta = regs.a[dstreg]; ! 716: UWORD dstdp = nextiword(); ! 717: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 718: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 719: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 720: dsta += dstdpr; ! 721: regs.v = regs.c = 0; ! 722: regs.z = ((BYTE)(src)) == 0; ! 723: regs.n = ((BYTE)(src)) < 0; ! 724: put_byte(dsta,src); ! 725: }}}}} ! 726: void op_1190(UWORD opcode) ! 727: { ! 728: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 729: ULONG dstreg = (opcode & 3584) >> 9; ! 730: {{ CPTR srca = regs.a[srcreg]; ! 731: BYTE src = get_byte(srca); ! 732: { CPTR dsta = regs.a[dstreg]; ! 733: UWORD dstdp = nextiword(); ! 734: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 735: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 736: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 737: dsta += dstdpr; ! 738: regs.v = regs.c = 0; ! 739: regs.z = ((BYTE)(src)) == 0; ! 740: regs.n = ((BYTE)(src)) < 0; ! 741: put_byte(dsta,src); ! 742: }}}}} ! 743: void op_1198(UWORD opcode) ! 744: { ! 745: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 746: ULONG dstreg = (opcode & 3584) >> 9; ! 747: {{ CPTR srca = regs.a[srcreg]; ! 748: BYTE src = get_byte(srca); ! 749: { regs.a[srcreg] += (srcreg == 7) ? 2 : 1; ! 750: { CPTR dsta = regs.a[dstreg]; ! 751: UWORD dstdp = nextiword(); ! 752: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 753: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 754: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 755: dsta += dstdpr; ! 756: regs.v = regs.c = 0; ! 757: regs.z = ((BYTE)(src)) == 0; ! 758: regs.n = ((BYTE)(src)) < 0; ! 759: put_byte(dsta,src); ! 760: }}}}}} ! 761: void op_11a0(UWORD opcode) ! 762: { ! 763: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 764: ULONG dstreg = (opcode & 3584) >> 9; ! 765: {{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1; ! 766: { CPTR srca = regs.a[srcreg]; ! 767: BYTE src = get_byte(srca); ! 768: { CPTR dsta = regs.a[dstreg]; ! 769: UWORD dstdp = nextiword(); ! 770: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 771: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 772: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 773: dsta += dstdpr; ! 774: regs.v = regs.c = 0; ! 775: regs.z = ((BYTE)(src)) == 0; ! 776: regs.n = ((BYTE)(src)) < 0; ! 777: put_byte(dsta,src); ! 778: }}}}}} ! 779: void op_11a8(UWORD opcode) ! 780: { ! 781: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 782: ULONG dstreg = (opcode & 3584) >> 9; ! 783: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 784: BYTE src = get_byte(srca); ! 785: { CPTR dsta = regs.a[dstreg]; ! 786: UWORD dstdp = nextiword(); ! 787: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 788: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 789: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 790: dsta += dstdpr; ! 791: regs.v = regs.c = 0; ! 792: regs.z = ((BYTE)(src)) == 0; ! 793: regs.n = ((BYTE)(src)) < 0; ! 794: put_byte(dsta,src); ! 795: }}}}} ! 796: void op_11b0(UWORD opcode) ! 797: { ! 798: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 799: ULONG dstreg = (opcode & 3584) >> 9; ! 800: {{ CPTR srca = regs.a[srcreg]; ! 801: UWORD srcdp = nextiword(); ! 802: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 803: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 804: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 805: srca += srcdpr; ! 806: { BYTE src = get_byte(srca); ! 807: { CPTR dsta = regs.a[dstreg]; ! 808: UWORD dstdp = nextiword(); ! 809: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 810: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 811: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 812: dsta += dstdpr; ! 813: regs.v = regs.c = 0; ! 814: regs.z = ((BYTE)(src)) == 0; ! 815: regs.n = ((BYTE)(src)) < 0; ! 816: put_byte(dsta,src); ! 817: }}}}}}} ! 818: void op_11b8(UWORD opcode) ! 819: { ! 820: ULONG dstreg = (opcode & 3584) >> 9; ! 821: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 822: BYTE src = get_byte(srca); ! 823: { CPTR dsta = regs.a[dstreg]; ! 824: UWORD dstdp = nextiword(); ! 825: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 826: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 827: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 828: dsta += dstdpr; ! 829: regs.v = regs.c = 0; ! 830: regs.z = ((BYTE)(src)) == 0; ! 831: regs.n = ((BYTE)(src)) < 0; ! 832: put_byte(dsta,src); ! 833: }}}}} ! 834: void op_11b9(UWORD opcode) ! 835: { ! 836: ULONG dstreg = (opcode & 3584) >> 9; ! 837: {{ CPTR srca = nextilong(); ! 838: BYTE src = get_byte(srca); ! 839: { CPTR dsta = regs.a[dstreg]; ! 840: UWORD dstdp = nextiword(); ! 841: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 842: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 843: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 844: dsta += dstdpr; ! 845: regs.v = regs.c = 0; ! 846: regs.z = ((BYTE)(src)) == 0; ! 847: regs.n = ((BYTE)(src)) < 0; ! 848: put_byte(dsta,src); ! 849: }}}}} ! 850: void op_11ba(UWORD opcode) ! 851: { ! 852: ULONG dstreg = (opcode & 3584) >> 9; ! 853: {{ CPTR srca = m68k_getpc(); ! 854: srca += (LONG)(WORD)nextiword(); ! 855: { BYTE src = get_byte(srca); ! 856: { CPTR dsta = regs.a[dstreg]; ! 857: UWORD dstdp = nextiword(); ! 858: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 859: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 860: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 861: dsta += dstdpr; ! 862: regs.v = regs.c = 0; ! 863: regs.z = ((BYTE)(src)) == 0; ! 864: regs.n = ((BYTE)(src)) < 0; ! 865: put_byte(dsta,src); ! 866: }}}}}} ! 867: void op_11bb(UWORD opcode) ! 868: { ! 869: ULONG dstreg = (opcode & 3584) >> 9; ! 870: {{ CPTR srca = m68k_getpc(); ! 871: UWORD srcdp = nextiword(); ! 872: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 873: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 874: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 875: srca += srcdpr; ! 876: { BYTE src = get_byte(srca); ! 877: { CPTR dsta = regs.a[dstreg]; ! 878: UWORD dstdp = nextiword(); ! 879: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 880: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 881: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 882: dsta += dstdpr; ! 883: regs.v = regs.c = 0; ! 884: regs.z = ((BYTE)(src)) == 0; ! 885: regs.n = ((BYTE)(src)) < 0; ! 886: put_byte(dsta,src); ! 887: }}}}}}} ! 888: void op_11bc(UWORD opcode) ! 889: { ! 890: ULONG dstreg = (opcode & 3584) >> 9; ! 891: {{ BYTE src = nextiword(); ! 892: { CPTR dsta = regs.a[dstreg]; ! 893: UWORD dstdp = nextiword(); ! 894: dsta += (LONG)(BYTE)(dstdp & 0xFF); ! 895: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12]; ! 896: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr; ! 897: dsta += dstdpr; ! 898: regs.v = regs.c = 0; ! 899: regs.z = ((BYTE)(src)) == 0; ! 900: regs.n = ((BYTE)(src)) < 0; ! 901: put_byte(dsta,src); ! 902: }}}}} ! 903: void op_11c0(UWORD opcode) ! 904: { ! 905: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 906: {{ BYTE src = regs.d[srcreg]; ! 907: { CPTR dsta = (LONG)(WORD)nextiword(); ! 908: regs.v = regs.c = 0; ! 909: regs.z = ((BYTE)(src)) == 0; ! 910: regs.n = ((BYTE)(src)) < 0; ! 911: put_byte(dsta,src); ! 912: }}}} ! 913: void op_11d0(UWORD opcode) ! 914: { ! 915: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 916: {{ CPTR srca = regs.a[srcreg]; ! 917: BYTE src = get_byte(srca); ! 918: { CPTR dsta = (LONG)(WORD)nextiword(); ! 919: regs.v = regs.c = 0; ! 920: regs.z = ((BYTE)(src)) == 0; ! 921: regs.n = ((BYTE)(src)) < 0; ! 922: put_byte(dsta,src); ! 923: }}}} ! 924: void op_11d8(UWORD opcode) ! 925: { ! 926: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 927: {{ CPTR srca = regs.a[srcreg]; ! 928: BYTE src = get_byte(srca); ! 929: { regs.a[srcreg] += (srcreg == 7) ? 2 : 1; ! 930: { CPTR dsta = (LONG)(WORD)nextiword(); ! 931: regs.v = regs.c = 0; ! 932: regs.z = ((BYTE)(src)) == 0; ! 933: regs.n = ((BYTE)(src)) < 0; ! 934: put_byte(dsta,src); ! 935: }}}}} ! 936: void op_11e0(UWORD opcode) ! 937: { ! 938: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 939: {{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1; ! 940: { CPTR srca = regs.a[srcreg]; ! 941: BYTE src = get_byte(srca); ! 942: { CPTR dsta = (LONG)(WORD)nextiword(); ! 943: regs.v = regs.c = 0; ! 944: regs.z = ((BYTE)(src)) == 0; ! 945: regs.n = ((BYTE)(src)) < 0; ! 946: put_byte(dsta,src); ! 947: }}}}} ! 948: void op_11e8(UWORD opcode) ! 949: { ! 950: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 951: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 952: BYTE src = get_byte(srca); ! 953: { CPTR dsta = (LONG)(WORD)nextiword(); ! 954: regs.v = regs.c = 0; ! 955: regs.z = ((BYTE)(src)) == 0; ! 956: regs.n = ((BYTE)(src)) < 0; ! 957: put_byte(dsta,src); ! 958: }}}} ! 959: void op_11f0(UWORD opcode) ! 960: { ! 961: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 962: {{ CPTR srca = regs.a[srcreg]; ! 963: UWORD srcdp = nextiword(); ! 964: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 965: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 966: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 967: srca += srcdpr; ! 968: { BYTE src = get_byte(srca); ! 969: { CPTR dsta = (LONG)(WORD)nextiword(); ! 970: regs.v = regs.c = 0; ! 971: regs.z = ((BYTE)(src)) == 0; ! 972: regs.n = ((BYTE)(src)) < 0; ! 973: put_byte(dsta,src); ! 974: }}}}}} ! 975: void op_11f8(UWORD opcode) ! 976: { ! 977: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 978: BYTE src = get_byte(srca); ! 979: { CPTR dsta = (LONG)(WORD)nextiword(); ! 980: regs.v = regs.c = 0; ! 981: regs.z = ((BYTE)(src)) == 0; ! 982: regs.n = ((BYTE)(src)) < 0; ! 983: put_byte(dsta,src); ! 984: }}}} ! 985: void op_11f9(UWORD opcode) ! 986: { ! 987: {{ CPTR srca = nextilong(); ! 988: BYTE src = get_byte(srca); ! 989: { CPTR dsta = (LONG)(WORD)nextiword(); ! 990: regs.v = regs.c = 0; ! 991: regs.z = ((BYTE)(src)) == 0; ! 992: regs.n = ((BYTE)(src)) < 0; ! 993: put_byte(dsta,src); ! 994: }}}} ! 995: void op_11fa(UWORD opcode) ! 996: { ! 997: {{ CPTR srca = m68k_getpc(); ! 998: srca += (LONG)(WORD)nextiword(); ! 999: { BYTE src = get_byte(srca); ! 1000: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1001: regs.v = regs.c = 0; ! 1002: regs.z = ((BYTE)(src)) == 0; ! 1003: regs.n = ((BYTE)(src)) < 0; ! 1004: put_byte(dsta,src); ! 1005: }}}}} ! 1006: void op_11fb(UWORD opcode) ! 1007: { ! 1008: {{ CPTR srca = m68k_getpc(); ! 1009: UWORD srcdp = nextiword(); ! 1010: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 1011: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 1012: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 1013: srca += srcdpr; ! 1014: { BYTE src = get_byte(srca); ! 1015: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1016: regs.v = regs.c = 0; ! 1017: regs.z = ((BYTE)(src)) == 0; ! 1018: regs.n = ((BYTE)(src)) < 0; ! 1019: put_byte(dsta,src); ! 1020: }}}}}} ! 1021: void op_11fc(UWORD opcode) ! 1022: { ! 1023: {{ BYTE src = nextiword(); ! 1024: { CPTR dsta = (LONG)(WORD)nextiword(); ! 1025: regs.v = regs.c = 0; ! 1026: regs.z = ((BYTE)(src)) == 0; ! 1027: regs.n = ((BYTE)(src)) < 0; ! 1028: put_byte(dsta,src); ! 1029: }}}} ! 1030: void op_13c0(UWORD opcode) ! 1031: { ! 1032: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1033: {{ BYTE src = regs.d[srcreg]; ! 1034: { CPTR dsta = nextilong(); ! 1035: regs.v = regs.c = 0; ! 1036: regs.z = ((BYTE)(src)) == 0; ! 1037: regs.n = ((BYTE)(src)) < 0; ! 1038: put_byte(dsta,src); ! 1039: }}}} ! 1040: void op_13d0(UWORD opcode) ! 1041: { ! 1042: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1043: {{ CPTR srca = regs.a[srcreg]; ! 1044: BYTE src = get_byte(srca); ! 1045: { CPTR dsta = nextilong(); ! 1046: regs.v = regs.c = 0; ! 1047: regs.z = ((BYTE)(src)) == 0; ! 1048: regs.n = ((BYTE)(src)) < 0; ! 1049: put_byte(dsta,src); ! 1050: }}}} ! 1051: void op_13d8(UWORD opcode) ! 1052: { ! 1053: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1054: {{ CPTR srca = regs.a[srcreg]; ! 1055: BYTE src = get_byte(srca); ! 1056: { regs.a[srcreg] += (srcreg == 7) ? 2 : 1; ! 1057: { CPTR dsta = nextilong(); ! 1058: regs.v = regs.c = 0; ! 1059: regs.z = ((BYTE)(src)) == 0; ! 1060: regs.n = ((BYTE)(src)) < 0; ! 1061: put_byte(dsta,src); ! 1062: }}}}} ! 1063: void op_13e0(UWORD opcode) ! 1064: { ! 1065: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1066: {{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1; ! 1067: { CPTR srca = regs.a[srcreg]; ! 1068: BYTE src = get_byte(srca); ! 1069: { CPTR dsta = nextilong(); ! 1070: regs.v = regs.c = 0; ! 1071: regs.z = ((BYTE)(src)) == 0; ! 1072: regs.n = ((BYTE)(src)) < 0; ! 1073: put_byte(dsta,src); ! 1074: }}}}} ! 1075: void op_13e8(UWORD opcode) ! 1076: { ! 1077: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1078: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword(); ! 1079: BYTE src = get_byte(srca); ! 1080: { CPTR dsta = nextilong(); ! 1081: regs.v = regs.c = 0; ! 1082: regs.z = ((BYTE)(src)) == 0; ! 1083: regs.n = ((BYTE)(src)) < 0; ! 1084: put_byte(dsta,src); ! 1085: }}}} ! 1086: void op_13f0(UWORD opcode) ! 1087: { ! 1088: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0); ! 1089: {{ CPTR srca = regs.a[srcreg]; ! 1090: UWORD srcdp = nextiword(); ! 1091: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 1092: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 1093: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 1094: srca += srcdpr; ! 1095: { BYTE src = get_byte(srca); ! 1096: { CPTR dsta = nextilong(); ! 1097: regs.v = regs.c = 0; ! 1098: regs.z = ((BYTE)(src)) == 0; ! 1099: regs.n = ((BYTE)(src)) < 0; ! 1100: put_byte(dsta,src); ! 1101: }}}}}} ! 1102: void op_13f8(UWORD opcode) ! 1103: { ! 1104: {{ CPTR srca = (LONG)(WORD)nextiword(); ! 1105: BYTE src = get_byte(srca); ! 1106: { CPTR dsta = nextilong(); ! 1107: regs.v = regs.c = 0; ! 1108: regs.z = ((BYTE)(src)) == 0; ! 1109: regs.n = ((BYTE)(src)) < 0; ! 1110: put_byte(dsta,src); ! 1111: }}}} ! 1112: void op_13f9(UWORD opcode) ! 1113: { ! 1114: {{ CPTR srca = nextilong(); ! 1115: BYTE src = get_byte(srca); ! 1116: { CPTR dsta = nextilong(); ! 1117: regs.v = regs.c = 0; ! 1118: regs.z = ((BYTE)(src)) == 0; ! 1119: regs.n = ((BYTE)(src)) < 0; ! 1120: put_byte(dsta,src); ! 1121: }}}} ! 1122: void op_13fa(UWORD opcode) ! 1123: { ! 1124: {{ CPTR srca = m68k_getpc(); ! 1125: srca += (LONG)(WORD)nextiword(); ! 1126: { BYTE src = get_byte(srca); ! 1127: { CPTR dsta = nextilong(); ! 1128: regs.v = regs.c = 0; ! 1129: regs.z = ((BYTE)(src)) == 0; ! 1130: regs.n = ((BYTE)(src)) < 0; ! 1131: put_byte(dsta,src); ! 1132: }}}}} ! 1133: void op_13fb(UWORD opcode) ! 1134: { ! 1135: {{ CPTR srca = m68k_getpc(); ! 1136: UWORD srcdp = nextiword(); ! 1137: srca += (LONG)(BYTE)(srcdp & 0xFF); ! 1138: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12]; ! 1139: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr; ! 1140: srca += srcdpr; ! 1141: { BYTE src = get_byte(srca); ! 1142: { CPTR dsta = nextilong(); ! 1143: regs.v = regs.c = 0; ! 1144: regs.z = ((BYTE)(src)) == 0; ! 1145: regs.n = ((BYTE)(src)) < 0; ! 1146: put_byte(dsta,src); ! 1147: }}}}}} ! 1148: void op_13fc(UWORD opcode) ! 1149: { ! 1150: {{ BYTE src = nextiword(); ! 1151: { CPTR dsta = nextilong(); ! 1152: regs.v = regs.c = 0; ! 1153: regs.z = ((BYTE)(src)) == 0; ! 1154: regs.n = ((BYTE)(src)) < 0; ! 1155: put_byte(dsta,src); ! 1156: }}}}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.