|
|
1.1 ! root 1: /*****************************************************************************/ ! 2: /* Generator - Sega Genesis emulation - (c) James Ponder 1997-1998 */ ! 3: /*****************************************************************************/ ! 4: /* */ ! 5: /* cpu68k-4.c */ ! 6: /* */ ! 7: /*****************************************************************************/ ! 8: ! 9: #include "generator.h" ! 10: #include "cpu68k.h" ! 11: #include "mem68k.h" ! 12: #include "reg68k.h" ! 13: ! 14: #include "cpu68k-inline.h" ! 15: ! 16: #include <stdio.h> ! 17: ! 18: void cpu_op_534a(t_ipc *ipc) /* NEGX */ { ! 19: /* mask fff8, bits 4000, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 20: int srcreg = (ipc->opcode >> 0) & 7; ! 21: uint8 srcdata = DATAREG(srcreg); ! 22: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 23: ! 24: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 25: PC+= 2; ! 26: } ! 27: ! 28: void cpu_op_534b(t_ipc *ipc) /* NEGX */ { ! 29: /* mask fff8, bits 4000, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 30: int srcreg = (ipc->opcode >> 0) & 7; ! 31: uint8 srcdata = DATAREG(srcreg); ! 32: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 33: ! 34: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 35: ! 36: VFLAG = ((sint8)srcdata < 0) && ((sint8)outdata < 0); ! 37: XFLAG = CFLAG = ((sint8)srcdata < 0) || ((sint8)outdata < 0); ! 38: NFLAG = ((sint8)outdata) < 0; ! 39: if (outdata) ZFLAG = 0; ! 40: PC+= 2; ! 41: } ! 42: ! 43: void cpu_op_535a(t_ipc *ipc) /* NEGX */ { ! 44: /* mask fff8, bits 4010, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 45: int srcreg = (ipc->opcode >> 0) & 7; ! 46: uint32 srcaddr = ADDRREG(srcreg); ! 47: uint8 srcdata = fetchbyte(srcaddr); ! 48: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 49: ! 50: storebyte(srcaddr, outdata); ! 51: PC+= 2; ! 52: } ! 53: ! 54: void cpu_op_535b(t_ipc *ipc) /* NEGX */ { ! 55: /* mask fff8, bits 4010, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 56: int srcreg = (ipc->opcode >> 0) & 7; ! 57: uint32 srcaddr = ADDRREG(srcreg); ! 58: uint8 srcdata = fetchbyte(srcaddr); ! 59: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 60: ! 61: storebyte(srcaddr, outdata); ! 62: ! 63: VFLAG = ((sint8)srcdata < 0) && ((sint8)outdata < 0); ! 64: XFLAG = CFLAG = ((sint8)srcdata < 0) || ((sint8)outdata < 0); ! 65: NFLAG = ((sint8)outdata) < 0; ! 66: if (outdata) ZFLAG = 0; ! 67: PC+= 2; ! 68: } ! 69: ! 70: void cpu_op_536a(t_ipc *ipc) /* NEGX */ { ! 71: /* mask fff8, bits 4018, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 72: int srcreg = (ipc->opcode >> 0) & 7; ! 73: uint32 srcaddr = ADDRREG(srcreg); ! 74: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 75: uint8 srcdata = fetchbyte(srcaddr); ! 76: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 77: ! 78: storebyte(srcaddr, outdata); ! 79: PC+= 2; ! 80: } ! 81: ! 82: void cpu_op_536b(t_ipc *ipc) /* NEGX */ { ! 83: /* mask fff8, bits 4018, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 84: int srcreg = (ipc->opcode >> 0) & 7; ! 85: uint32 srcaddr = ADDRREG(srcreg); ! 86: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 87: uint8 srcdata = fetchbyte(srcaddr); ! 88: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 89: ! 90: storebyte(srcaddr, outdata); ! 91: ! 92: VFLAG = ((sint8)srcdata < 0) && ((sint8)outdata < 0); ! 93: XFLAG = CFLAG = ((sint8)srcdata < 0) || ((sint8)outdata < 0); ! 94: NFLAG = ((sint8)outdata) < 0; ! 95: if (outdata) ZFLAG = 0; ! 96: PC+= 2; ! 97: } ! 98: ! 99: void cpu_op_537a(t_ipc *ipc) /* NEGX */ { ! 100: /* mask fff8, bits 4020, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 101: int srcreg = (ipc->opcode >> 0) & 7; ! 102: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 103: uint8 srcdata = fetchbyte(srcaddr); ! 104: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 105: ! 106: storebyte(srcaddr, outdata); ! 107: PC+= 2; ! 108: } ! 109: ! 110: void cpu_op_537b(t_ipc *ipc) /* NEGX */ { ! 111: /* mask fff8, bits 4020, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 112: int srcreg = (ipc->opcode >> 0) & 7; ! 113: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 114: uint8 srcdata = fetchbyte(srcaddr); ! 115: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 116: ! 117: storebyte(srcaddr, outdata); ! 118: ! 119: VFLAG = ((sint8)srcdata < 0) && ((sint8)outdata < 0); ! 120: XFLAG = CFLAG = ((sint8)srcdata < 0) || ((sint8)outdata < 0); ! 121: NFLAG = ((sint8)outdata) < 0; ! 122: if (outdata) ZFLAG = 0; ! 123: PC+= 2; ! 124: } ! 125: ! 126: void cpu_op_538a(t_ipc *ipc) /* NEGX */ { ! 127: /* mask fff8, bits 4028, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 128: int srcreg = (ipc->opcode >> 0) & 7; ! 129: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 130: uint8 srcdata = fetchbyte(srcaddr); ! 131: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 132: ! 133: storebyte(srcaddr, outdata); ! 134: PC+= 4; ! 135: } ! 136: ! 137: void cpu_op_538b(t_ipc *ipc) /* NEGX */ { ! 138: /* mask fff8, bits 4028, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 139: int srcreg = (ipc->opcode >> 0) & 7; ! 140: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 141: uint8 srcdata = fetchbyte(srcaddr); ! 142: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 143: ! 144: storebyte(srcaddr, outdata); ! 145: ! 146: VFLAG = ((sint8)srcdata < 0) && ((sint8)outdata < 0); ! 147: XFLAG = CFLAG = ((sint8)srcdata < 0) || ((sint8)outdata < 0); ! 148: NFLAG = ((sint8)outdata) < 0; ! 149: if (outdata) ZFLAG = 0; ! 150: PC+= 4; ! 151: } ! 152: ! 153: void cpu_op_539a(t_ipc *ipc) /* NEGX */ { ! 154: /* mask fff8, bits 4030, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 155: int srcreg = (ipc->opcode >> 0) & 7; ! 156: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 157: uint8 srcdata = fetchbyte(srcaddr); ! 158: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 159: ! 160: storebyte(srcaddr, outdata); ! 161: PC+= 4; ! 162: } ! 163: ! 164: void cpu_op_539b(t_ipc *ipc) /* NEGX */ { ! 165: /* mask fff8, bits 4030, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 166: int srcreg = (ipc->opcode >> 0) & 7; ! 167: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 168: uint8 srcdata = fetchbyte(srcaddr); ! 169: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 170: ! 171: storebyte(srcaddr, outdata); ! 172: ! 173: VFLAG = ((sint8)srcdata < 0) && ((sint8)outdata < 0); ! 174: XFLAG = CFLAG = ((sint8)srcdata < 0) || ((sint8)outdata < 0); ! 175: NFLAG = ((sint8)outdata) < 0; ! 176: if (outdata) ZFLAG = 0; ! 177: PC+= 4; ! 178: } ! 179: ! 180: void cpu_op_540a(t_ipc *ipc) /* NEGX */ { ! 181: /* mask ffff, bits 4038, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 182: uint32 srcaddr = ipc->src; ! 183: uint8 srcdata = fetchbyte(srcaddr); ! 184: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 185: ! 186: storebyte(srcaddr, outdata); ! 187: PC+= 4; ! 188: } ! 189: ! 190: void cpu_op_540b(t_ipc *ipc) /* NEGX */ { ! 191: /* mask ffff, bits 4038, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 192: uint32 srcaddr = ipc->src; ! 193: uint8 srcdata = fetchbyte(srcaddr); ! 194: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 195: ! 196: storebyte(srcaddr, outdata); ! 197: ! 198: VFLAG = ((sint8)srcdata < 0) && ((sint8)outdata < 0); ! 199: XFLAG = CFLAG = ((sint8)srcdata < 0) || ((sint8)outdata < 0); ! 200: NFLAG = ((sint8)outdata) < 0; ! 201: if (outdata) ZFLAG = 0; ! 202: PC+= 4; ! 203: } ! 204: ! 205: void cpu_op_541a(t_ipc *ipc) /* NEGX */ { ! 206: /* mask ffff, bits 4039, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 207: uint32 srcaddr = ipc->src; ! 208: uint8 srcdata = fetchbyte(srcaddr); ! 209: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 210: ! 211: storebyte(srcaddr, outdata); ! 212: PC+= 6; ! 213: } ! 214: ! 215: void cpu_op_541b(t_ipc *ipc) /* NEGX */ { ! 216: /* mask ffff, bits 4039, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 217: uint32 srcaddr = ipc->src; ! 218: uint8 srcdata = fetchbyte(srcaddr); ! 219: uint8 outdata = 0 - (sint8)srcdata - XFLAG; ! 220: ! 221: storebyte(srcaddr, outdata); ! 222: ! 223: VFLAG = ((sint8)srcdata < 0) && ((sint8)outdata < 0); ! 224: XFLAG = CFLAG = ((sint8)srcdata < 0) || ((sint8)outdata < 0); ! 225: NFLAG = ((sint8)outdata) < 0; ! 226: if (outdata) ZFLAG = 0; ! 227: PC+= 6; ! 228: } ! 229: ! 230: void cpu_op_542a(t_ipc *ipc) /* NEGX */ { ! 231: /* mask fff8, bits 4040, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 232: int srcreg = (ipc->opcode >> 0) & 7; ! 233: uint16 srcdata = DATAREG(srcreg); ! 234: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 235: ! 236: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xffff) | outdata; ! 237: PC+= 2; ! 238: } ! 239: ! 240: void cpu_op_542b(t_ipc *ipc) /* NEGX */ { ! 241: /* mask fff8, bits 4040, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 242: int srcreg = (ipc->opcode >> 0) & 7; ! 243: uint16 srcdata = DATAREG(srcreg); ! 244: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 245: ! 246: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xffff) | outdata; ! 247: ! 248: VFLAG = ((sint16)srcdata < 0) && ((sint16)outdata < 0); ! 249: XFLAG = CFLAG = ((sint16)srcdata < 0) || ((sint16)outdata < 0); ! 250: NFLAG = ((sint16)outdata) < 0; ! 251: if (outdata) ZFLAG = 0; ! 252: PC+= 2; ! 253: } ! 254: ! 255: void cpu_op_543a(t_ipc *ipc) /* NEGX */ { ! 256: /* mask fff8, bits 4050, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 257: int srcreg = (ipc->opcode >> 0) & 7; ! 258: uint32 srcaddr = ADDRREG(srcreg); ! 259: uint16 srcdata = fetchword(srcaddr); ! 260: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 261: ! 262: storeword(srcaddr, outdata); ! 263: PC+= 2; ! 264: } ! 265: ! 266: void cpu_op_543b(t_ipc *ipc) /* NEGX */ { ! 267: /* mask fff8, bits 4050, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 268: int srcreg = (ipc->opcode >> 0) & 7; ! 269: uint32 srcaddr = ADDRREG(srcreg); ! 270: uint16 srcdata = fetchword(srcaddr); ! 271: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 272: ! 273: storeword(srcaddr, outdata); ! 274: ! 275: VFLAG = ((sint16)srcdata < 0) && ((sint16)outdata < 0); ! 276: XFLAG = CFLAG = ((sint16)srcdata < 0) || ((sint16)outdata < 0); ! 277: NFLAG = ((sint16)outdata) < 0; ! 278: if (outdata) ZFLAG = 0; ! 279: PC+= 2; ! 280: } ! 281: ! 282: void cpu_op_544a(t_ipc *ipc) /* NEGX */ { ! 283: /* mask fff8, bits 4058, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 284: int srcreg = (ipc->opcode >> 0) & 7; ! 285: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 286: uint16 srcdata = fetchword(srcaddr); ! 287: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 288: ! 289: storeword(srcaddr, outdata); ! 290: PC+= 2; ! 291: } ! 292: ! 293: void cpu_op_544b(t_ipc *ipc) /* NEGX */ { ! 294: /* mask fff8, bits 4058, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 295: int srcreg = (ipc->opcode >> 0) & 7; ! 296: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 297: uint16 srcdata = fetchword(srcaddr); ! 298: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 299: ! 300: storeword(srcaddr, outdata); ! 301: ! 302: VFLAG = ((sint16)srcdata < 0) && ((sint16)outdata < 0); ! 303: XFLAG = CFLAG = ((sint16)srcdata < 0) || ((sint16)outdata < 0); ! 304: NFLAG = ((sint16)outdata) < 0; ! 305: if (outdata) ZFLAG = 0; ! 306: PC+= 2; ! 307: } ! 308: ! 309: void cpu_op_545a(t_ipc *ipc) /* NEGX */ { ! 310: /* mask fff8, bits 4060, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 311: int srcreg = (ipc->opcode >> 0) & 7; ! 312: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 313: uint16 srcdata = fetchword(srcaddr); ! 314: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 315: ! 316: storeword(srcaddr, outdata); ! 317: PC+= 2; ! 318: } ! 319: ! 320: void cpu_op_545b(t_ipc *ipc) /* NEGX */ { ! 321: /* mask fff8, bits 4060, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 322: int srcreg = (ipc->opcode >> 0) & 7; ! 323: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 324: uint16 srcdata = fetchword(srcaddr); ! 325: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 326: ! 327: storeword(srcaddr, outdata); ! 328: ! 329: VFLAG = ((sint16)srcdata < 0) && ((sint16)outdata < 0); ! 330: XFLAG = CFLAG = ((sint16)srcdata < 0) || ((sint16)outdata < 0); ! 331: NFLAG = ((sint16)outdata) < 0; ! 332: if (outdata) ZFLAG = 0; ! 333: PC+= 2; ! 334: } ! 335: ! 336: void cpu_op_546a(t_ipc *ipc) /* NEGX */ { ! 337: /* mask fff8, bits 4068, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 338: int srcreg = (ipc->opcode >> 0) & 7; ! 339: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 340: uint16 srcdata = fetchword(srcaddr); ! 341: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 342: ! 343: storeword(srcaddr, outdata); ! 344: PC+= 4; ! 345: } ! 346: ! 347: void cpu_op_546b(t_ipc *ipc) /* NEGX */ { ! 348: /* mask fff8, bits 4068, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 349: int srcreg = (ipc->opcode >> 0) & 7; ! 350: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 351: uint16 srcdata = fetchword(srcaddr); ! 352: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 353: ! 354: storeword(srcaddr, outdata); ! 355: ! 356: VFLAG = ((sint16)srcdata < 0) && ((sint16)outdata < 0); ! 357: XFLAG = CFLAG = ((sint16)srcdata < 0) || ((sint16)outdata < 0); ! 358: NFLAG = ((sint16)outdata) < 0; ! 359: if (outdata) ZFLAG = 0; ! 360: PC+= 4; ! 361: } ! 362: ! 363: void cpu_op_547a(t_ipc *ipc) /* NEGX */ { ! 364: /* mask fff8, bits 4070, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 365: int srcreg = (ipc->opcode >> 0) & 7; ! 366: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 367: uint16 srcdata = fetchword(srcaddr); ! 368: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 369: ! 370: storeword(srcaddr, outdata); ! 371: PC+= 4; ! 372: } ! 373: ! 374: void cpu_op_547b(t_ipc *ipc) /* NEGX */ { ! 375: /* mask fff8, bits 4070, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 376: int srcreg = (ipc->opcode >> 0) & 7; ! 377: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 378: uint16 srcdata = fetchword(srcaddr); ! 379: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 380: ! 381: storeword(srcaddr, outdata); ! 382: ! 383: VFLAG = ((sint16)srcdata < 0) && ((sint16)outdata < 0); ! 384: XFLAG = CFLAG = ((sint16)srcdata < 0) || ((sint16)outdata < 0); ! 385: NFLAG = ((sint16)outdata) < 0; ! 386: if (outdata) ZFLAG = 0; ! 387: PC+= 4; ! 388: } ! 389: ! 390: void cpu_op_548a(t_ipc *ipc) /* NEGX */ { ! 391: /* mask ffff, bits 4078, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 392: uint32 srcaddr = ipc->src; ! 393: uint16 srcdata = fetchword(srcaddr); ! 394: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 395: ! 396: storeword(srcaddr, outdata); ! 397: PC+= 4; ! 398: } ! 399: ! 400: void cpu_op_548b(t_ipc *ipc) /* NEGX */ { ! 401: /* mask ffff, bits 4078, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 402: uint32 srcaddr = ipc->src; ! 403: uint16 srcdata = fetchword(srcaddr); ! 404: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 405: ! 406: storeword(srcaddr, outdata); ! 407: ! 408: VFLAG = ((sint16)srcdata < 0) && ((sint16)outdata < 0); ! 409: XFLAG = CFLAG = ((sint16)srcdata < 0) || ((sint16)outdata < 0); ! 410: NFLAG = ((sint16)outdata) < 0; ! 411: if (outdata) ZFLAG = 0; ! 412: PC+= 4; ! 413: } ! 414: ! 415: void cpu_op_549a(t_ipc *ipc) /* NEGX */ { ! 416: /* mask ffff, bits 4079, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 417: uint32 srcaddr = ipc->src; ! 418: uint16 srcdata = fetchword(srcaddr); ! 419: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 420: ! 421: storeword(srcaddr, outdata); ! 422: PC+= 6; ! 423: } ! 424: ! 425: void cpu_op_549b(t_ipc *ipc) /* NEGX */ { ! 426: /* mask ffff, bits 4079, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 427: uint32 srcaddr = ipc->src; ! 428: uint16 srcdata = fetchword(srcaddr); ! 429: uint16 outdata = 0 - (sint16)srcdata - XFLAG; ! 430: ! 431: storeword(srcaddr, outdata); ! 432: ! 433: VFLAG = ((sint16)srcdata < 0) && ((sint16)outdata < 0); ! 434: XFLAG = CFLAG = ((sint16)srcdata < 0) || ((sint16)outdata < 0); ! 435: NFLAG = ((sint16)outdata) < 0; ! 436: if (outdata) ZFLAG = 0; ! 437: PC+= 6; ! 438: } ! 439: ! 440: void cpu_op_550a(t_ipc *ipc) /* NEGX */ { ! 441: /* mask fff8, bits 4080, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 442: int srcreg = (ipc->opcode >> 0) & 7; ! 443: uint32 srcdata = DATAREG(srcreg); ! 444: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 445: ! 446: DATAREG(srcreg) = outdata; ! 447: PC+= 2; ! 448: } ! 449: ! 450: void cpu_op_550b(t_ipc *ipc) /* NEGX */ { ! 451: /* mask fff8, bits 4080, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 452: int srcreg = (ipc->opcode >> 0) & 7; ! 453: uint32 srcdata = DATAREG(srcreg); ! 454: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 455: ! 456: DATAREG(srcreg) = outdata; ! 457: ! 458: VFLAG = ((sint32)srcdata < 0) && ((sint32)outdata < 0); ! 459: XFLAG = CFLAG = ((sint32)srcdata < 0) || ((sint32)outdata < 0); ! 460: NFLAG = ((sint32)outdata) < 0; ! 461: if (outdata) ZFLAG = 0; ! 462: PC+= 2; ! 463: } ! 464: ! 465: void cpu_op_551a(t_ipc *ipc) /* NEGX */ { ! 466: /* mask fff8, bits 4090, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 467: int srcreg = (ipc->opcode >> 0) & 7; ! 468: uint32 srcaddr = ADDRREG(srcreg); ! 469: uint32 srcdata = fetchlong(srcaddr); ! 470: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 471: ! 472: storelong(srcaddr, outdata); ! 473: PC+= 2; ! 474: } ! 475: ! 476: void cpu_op_551b(t_ipc *ipc) /* NEGX */ { ! 477: /* mask fff8, bits 4090, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 478: int srcreg = (ipc->opcode >> 0) & 7; ! 479: uint32 srcaddr = ADDRREG(srcreg); ! 480: uint32 srcdata = fetchlong(srcaddr); ! 481: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 482: ! 483: storelong(srcaddr, outdata); ! 484: ! 485: VFLAG = ((sint32)srcdata < 0) && ((sint32)outdata < 0); ! 486: XFLAG = CFLAG = ((sint32)srcdata < 0) || ((sint32)outdata < 0); ! 487: NFLAG = ((sint32)outdata) < 0; ! 488: if (outdata) ZFLAG = 0; ! 489: PC+= 2; ! 490: } ! 491: ! 492: void cpu_op_552a(t_ipc *ipc) /* NEGX */ { ! 493: /* mask fff8, bits 4098, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 494: int srcreg = (ipc->opcode >> 0) & 7; ! 495: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 496: uint32 srcdata = fetchlong(srcaddr); ! 497: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 498: ! 499: storelong(srcaddr, outdata); ! 500: PC+= 2; ! 501: } ! 502: ! 503: void cpu_op_552b(t_ipc *ipc) /* NEGX */ { ! 504: /* mask fff8, bits 4098, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 505: int srcreg = (ipc->opcode >> 0) & 7; ! 506: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 507: uint32 srcdata = fetchlong(srcaddr); ! 508: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 509: ! 510: storelong(srcaddr, outdata); ! 511: ! 512: VFLAG = ((sint32)srcdata < 0) && ((sint32)outdata < 0); ! 513: XFLAG = CFLAG = ((sint32)srcdata < 0) || ((sint32)outdata < 0); ! 514: NFLAG = ((sint32)outdata) < 0; ! 515: if (outdata) ZFLAG = 0; ! 516: PC+= 2; ! 517: } ! 518: ! 519: void cpu_op_553a(t_ipc *ipc) /* NEGX */ { ! 520: /* mask fff8, bits 40a0, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 521: int srcreg = (ipc->opcode >> 0) & 7; ! 522: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 523: uint32 srcdata = fetchlong(srcaddr); ! 524: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 525: ! 526: storelong(srcaddr, outdata); ! 527: PC+= 2; ! 528: } ! 529: ! 530: void cpu_op_553b(t_ipc *ipc) /* NEGX */ { ! 531: /* mask fff8, bits 40a0, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 532: int srcreg = (ipc->opcode >> 0) & 7; ! 533: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 534: uint32 srcdata = fetchlong(srcaddr); ! 535: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 536: ! 537: storelong(srcaddr, outdata); ! 538: ! 539: VFLAG = ((sint32)srcdata < 0) && ((sint32)outdata < 0); ! 540: XFLAG = CFLAG = ((sint32)srcdata < 0) || ((sint32)outdata < 0); ! 541: NFLAG = ((sint32)outdata) < 0; ! 542: if (outdata) ZFLAG = 0; ! 543: PC+= 2; ! 544: } ! 545: ! 546: void cpu_op_554a(t_ipc *ipc) /* NEGX */ { ! 547: /* mask fff8, bits 40a8, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 548: int srcreg = (ipc->opcode >> 0) & 7; ! 549: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 550: uint32 srcdata = fetchlong(srcaddr); ! 551: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 552: ! 553: storelong(srcaddr, outdata); ! 554: PC+= 4; ! 555: } ! 556: ! 557: void cpu_op_554b(t_ipc *ipc) /* NEGX */ { ! 558: /* mask fff8, bits 40a8, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 559: int srcreg = (ipc->opcode >> 0) & 7; ! 560: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 561: uint32 srcdata = fetchlong(srcaddr); ! 562: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 563: ! 564: storelong(srcaddr, outdata); ! 565: ! 566: VFLAG = ((sint32)srcdata < 0) && ((sint32)outdata < 0); ! 567: XFLAG = CFLAG = ((sint32)srcdata < 0) || ((sint32)outdata < 0); ! 568: NFLAG = ((sint32)outdata) < 0; ! 569: if (outdata) ZFLAG = 0; ! 570: PC+= 4; ! 571: } ! 572: ! 573: void cpu_op_555a(t_ipc *ipc) /* NEGX */ { ! 574: /* mask fff8, bits 40b0, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 575: int srcreg = (ipc->opcode >> 0) & 7; ! 576: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 577: uint32 srcdata = fetchlong(srcaddr); ! 578: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 579: ! 580: storelong(srcaddr, outdata); ! 581: PC+= 4; ! 582: } ! 583: ! 584: void cpu_op_555b(t_ipc *ipc) /* NEGX */ { ! 585: /* mask fff8, bits 40b0, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 586: int srcreg = (ipc->opcode >> 0) & 7; ! 587: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 588: uint32 srcdata = fetchlong(srcaddr); ! 589: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 590: ! 591: storelong(srcaddr, outdata); ! 592: ! 593: VFLAG = ((sint32)srcdata < 0) && ((sint32)outdata < 0); ! 594: XFLAG = CFLAG = ((sint32)srcdata < 0) || ((sint32)outdata < 0); ! 595: NFLAG = ((sint32)outdata) < 0; ! 596: if (outdata) ZFLAG = 0; ! 597: PC+= 4; ! 598: } ! 599: ! 600: void cpu_op_556a(t_ipc *ipc) /* NEGX */ { ! 601: /* mask ffff, bits 40b8, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 602: uint32 srcaddr = ipc->src; ! 603: uint32 srcdata = fetchlong(srcaddr); ! 604: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 605: ! 606: storelong(srcaddr, outdata); ! 607: PC+= 4; ! 608: } ! 609: ! 610: void cpu_op_556b(t_ipc *ipc) /* NEGX */ { ! 611: /* mask ffff, bits 40b8, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 612: uint32 srcaddr = ipc->src; ! 613: uint32 srcdata = fetchlong(srcaddr); ! 614: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 615: ! 616: storelong(srcaddr, outdata); ! 617: ! 618: VFLAG = ((sint32)srcdata < 0) && ((sint32)outdata < 0); ! 619: XFLAG = CFLAG = ((sint32)srcdata < 0) || ((sint32)outdata < 0); ! 620: NFLAG = ((sint32)outdata) < 0; ! 621: if (outdata) ZFLAG = 0; ! 622: PC+= 4; ! 623: } ! 624: ! 625: void cpu_op_557a(t_ipc *ipc) /* NEGX */ { ! 626: /* mask ffff, bits 40b9, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 627: uint32 srcaddr = ipc->src; ! 628: uint32 srcdata = fetchlong(srcaddr); ! 629: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 630: ! 631: storelong(srcaddr, outdata); ! 632: PC+= 6; ! 633: } ! 634: ! 635: void cpu_op_557b(t_ipc *ipc) /* NEGX */ { ! 636: /* mask ffff, bits 40b9, mnemonic 32, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 637: uint32 srcaddr = ipc->src; ! 638: uint32 srcdata = fetchlong(srcaddr); ! 639: uint32 outdata = 0 - (sint32)srcdata - XFLAG; ! 640: ! 641: storelong(srcaddr, outdata); ! 642: ! 643: VFLAG = ((sint32)srcdata < 0) && ((sint32)outdata < 0); ! 644: XFLAG = CFLAG = ((sint32)srcdata < 0) || ((sint32)outdata < 0); ! 645: NFLAG = ((sint32)outdata) < 0; ! 646: if (outdata) ZFLAG = 0; ! 647: PC+= 6; ! 648: } ! 649: ! 650: void cpu_op_558a(t_ipc *ipc) /* CLR */ { ! 651: /* mask fff8, bits 4200, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 652: int srcreg = (ipc->opcode >> 0) & 7; ! 653: uint8 srcdata = DATAREG(srcreg); ! 654: uint8 outdata = 0; ! 655: ! 656: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 657: PC+= 2; ! 658: } ! 659: ! 660: void cpu_op_558b(t_ipc *ipc) /* CLR */ { ! 661: /* mask fff8, bits 4200, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 662: int srcreg = (ipc->opcode >> 0) & 7; ! 663: uint8 srcdata = DATAREG(srcreg); ! 664: uint8 outdata = 0; ! 665: ! 666: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 667: ! 668: VFLAG = 0; ! 669: CFLAG = 0; ! 670: NFLAG = 0; ! 671: ZFLAG = 1; ! 672: PC+= 2; ! 673: } ! 674: ! 675: void cpu_op_559a(t_ipc *ipc) /* CLR */ { ! 676: /* mask fff8, bits 4210, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 677: int srcreg = (ipc->opcode >> 0) & 7; ! 678: uint32 srcaddr = ADDRREG(srcreg); ! 679: uint8 srcdata = fetchbyte(srcaddr); ! 680: uint8 outdata = 0; ! 681: ! 682: storebyte(srcaddr, outdata); ! 683: PC+= 2; ! 684: } ! 685: ! 686: void cpu_op_559b(t_ipc *ipc) /* CLR */ { ! 687: /* mask fff8, bits 4210, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 688: int srcreg = (ipc->opcode >> 0) & 7; ! 689: uint32 srcaddr = ADDRREG(srcreg); ! 690: uint8 srcdata = fetchbyte(srcaddr); ! 691: uint8 outdata = 0; ! 692: ! 693: storebyte(srcaddr, outdata); ! 694: ! 695: VFLAG = 0; ! 696: CFLAG = 0; ! 697: NFLAG = 0; ! 698: ZFLAG = 1; ! 699: PC+= 2; ! 700: } ! 701: ! 702: void cpu_op_560a(t_ipc *ipc) /* CLR */ { ! 703: /* mask fff8, bits 4218, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 704: int srcreg = (ipc->opcode >> 0) & 7; ! 705: uint32 srcaddr = ADDRREG(srcreg); ! 706: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 707: uint8 srcdata = fetchbyte(srcaddr); ! 708: uint8 outdata = 0; ! 709: ! 710: storebyte(srcaddr, outdata); ! 711: PC+= 2; ! 712: } ! 713: ! 714: void cpu_op_560b(t_ipc *ipc) /* CLR */ { ! 715: /* mask fff8, bits 4218, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 716: int srcreg = (ipc->opcode >> 0) & 7; ! 717: uint32 srcaddr = ADDRREG(srcreg); ! 718: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 719: uint8 srcdata = fetchbyte(srcaddr); ! 720: uint8 outdata = 0; ! 721: ! 722: storebyte(srcaddr, outdata); ! 723: ! 724: VFLAG = 0; ! 725: CFLAG = 0; ! 726: NFLAG = 0; ! 727: ZFLAG = 1; ! 728: PC+= 2; ! 729: } ! 730: ! 731: void cpu_op_561a(t_ipc *ipc) /* CLR */ { ! 732: /* mask fff8, bits 4220, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 733: int srcreg = (ipc->opcode >> 0) & 7; ! 734: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 735: uint8 srcdata = fetchbyte(srcaddr); ! 736: uint8 outdata = 0; ! 737: ! 738: storebyte(srcaddr, outdata); ! 739: PC+= 2; ! 740: } ! 741: ! 742: void cpu_op_561b(t_ipc *ipc) /* CLR */ { ! 743: /* mask fff8, bits 4220, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 744: int srcreg = (ipc->opcode >> 0) & 7; ! 745: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 746: uint8 srcdata = fetchbyte(srcaddr); ! 747: uint8 outdata = 0; ! 748: ! 749: storebyte(srcaddr, outdata); ! 750: ! 751: VFLAG = 0; ! 752: CFLAG = 0; ! 753: NFLAG = 0; ! 754: ZFLAG = 1; ! 755: PC+= 2; ! 756: } ! 757: ! 758: void cpu_op_562a(t_ipc *ipc) /* CLR */ { ! 759: /* mask fff8, bits 4228, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 760: int srcreg = (ipc->opcode >> 0) & 7; ! 761: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 762: uint8 srcdata = fetchbyte(srcaddr); ! 763: uint8 outdata = 0; ! 764: ! 765: storebyte(srcaddr, outdata); ! 766: PC+= 4; ! 767: } ! 768: ! 769: void cpu_op_562b(t_ipc *ipc) /* CLR */ { ! 770: /* mask fff8, bits 4228, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 771: int srcreg = (ipc->opcode >> 0) & 7; ! 772: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 773: uint8 srcdata = fetchbyte(srcaddr); ! 774: uint8 outdata = 0; ! 775: ! 776: storebyte(srcaddr, outdata); ! 777: ! 778: VFLAG = 0; ! 779: CFLAG = 0; ! 780: NFLAG = 0; ! 781: ZFLAG = 1; ! 782: PC+= 4; ! 783: } ! 784: ! 785: void cpu_op_563a(t_ipc *ipc) /* CLR */ { ! 786: /* mask fff8, bits 4230, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 787: int srcreg = (ipc->opcode >> 0) & 7; ! 788: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 789: uint8 srcdata = fetchbyte(srcaddr); ! 790: uint8 outdata = 0; ! 791: ! 792: storebyte(srcaddr, outdata); ! 793: PC+= 4; ! 794: } ! 795: ! 796: void cpu_op_563b(t_ipc *ipc) /* CLR */ { ! 797: /* mask fff8, bits 4230, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 798: int srcreg = (ipc->opcode >> 0) & 7; ! 799: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 800: uint8 srcdata = fetchbyte(srcaddr); ! 801: uint8 outdata = 0; ! 802: ! 803: storebyte(srcaddr, outdata); ! 804: ! 805: VFLAG = 0; ! 806: CFLAG = 0; ! 807: NFLAG = 0; ! 808: ZFLAG = 1; ! 809: PC+= 4; ! 810: } ! 811: ! 812: void cpu_op_564a(t_ipc *ipc) /* CLR */ { ! 813: /* mask ffff, bits 4238, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 814: uint32 srcaddr = ipc->src; ! 815: uint8 srcdata = fetchbyte(srcaddr); ! 816: uint8 outdata = 0; ! 817: ! 818: storebyte(srcaddr, outdata); ! 819: PC+= 4; ! 820: } ! 821: ! 822: void cpu_op_564b(t_ipc *ipc) /* CLR */ { ! 823: /* mask ffff, bits 4238, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 824: uint32 srcaddr = ipc->src; ! 825: uint8 srcdata = fetchbyte(srcaddr); ! 826: uint8 outdata = 0; ! 827: ! 828: storebyte(srcaddr, outdata); ! 829: ! 830: VFLAG = 0; ! 831: CFLAG = 0; ! 832: NFLAG = 0; ! 833: ZFLAG = 1; ! 834: PC+= 4; ! 835: } ! 836: ! 837: void cpu_op_565a(t_ipc *ipc) /* CLR */ { ! 838: /* mask ffff, bits 4239, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 839: uint32 srcaddr = ipc->src; ! 840: uint8 srcdata = fetchbyte(srcaddr); ! 841: uint8 outdata = 0; ! 842: ! 843: storebyte(srcaddr, outdata); ! 844: PC+= 6; ! 845: } ! 846: ! 847: void cpu_op_565b(t_ipc *ipc) /* CLR */ { ! 848: /* mask ffff, bits 4239, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 849: uint32 srcaddr = ipc->src; ! 850: uint8 srcdata = fetchbyte(srcaddr); ! 851: uint8 outdata = 0; ! 852: ! 853: storebyte(srcaddr, outdata); ! 854: ! 855: VFLAG = 0; ! 856: CFLAG = 0; ! 857: NFLAG = 0; ! 858: ZFLAG = 1; ! 859: PC+= 6; ! 860: } ! 861: ! 862: void cpu_op_566a(t_ipc *ipc) /* CLR */ { ! 863: /* mask fff8, bits 4240, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 864: int srcreg = (ipc->opcode >> 0) & 7; ! 865: uint16 srcdata = DATAREG(srcreg); ! 866: uint16 outdata = 0; ! 867: ! 868: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xffff) | outdata; ! 869: PC+= 2; ! 870: } ! 871: ! 872: void cpu_op_566b(t_ipc *ipc) /* CLR */ { ! 873: /* mask fff8, bits 4240, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 874: int srcreg = (ipc->opcode >> 0) & 7; ! 875: uint16 srcdata = DATAREG(srcreg); ! 876: uint16 outdata = 0; ! 877: ! 878: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xffff) | outdata; ! 879: ! 880: VFLAG = 0; ! 881: CFLAG = 0; ! 882: NFLAG = 0; ! 883: ZFLAG = 1; ! 884: PC+= 2; ! 885: } ! 886: ! 887: void cpu_op_567a(t_ipc *ipc) /* CLR */ { ! 888: /* mask fff8, bits 4250, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 889: int srcreg = (ipc->opcode >> 0) & 7; ! 890: uint32 srcaddr = ADDRREG(srcreg); ! 891: uint16 srcdata = fetchword(srcaddr); ! 892: uint16 outdata = 0; ! 893: ! 894: storeword(srcaddr, outdata); ! 895: PC+= 2; ! 896: } ! 897: ! 898: void cpu_op_567b(t_ipc *ipc) /* CLR */ { ! 899: /* mask fff8, bits 4250, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 900: int srcreg = (ipc->opcode >> 0) & 7; ! 901: uint32 srcaddr = ADDRREG(srcreg); ! 902: uint16 srcdata = fetchword(srcaddr); ! 903: uint16 outdata = 0; ! 904: ! 905: storeword(srcaddr, outdata); ! 906: ! 907: VFLAG = 0; ! 908: CFLAG = 0; ! 909: NFLAG = 0; ! 910: ZFLAG = 1; ! 911: PC+= 2; ! 912: } ! 913: ! 914: void cpu_op_568a(t_ipc *ipc) /* CLR */ { ! 915: /* mask fff8, bits 4258, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 916: int srcreg = (ipc->opcode >> 0) & 7; ! 917: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 918: uint16 srcdata = fetchword(srcaddr); ! 919: uint16 outdata = 0; ! 920: ! 921: storeword(srcaddr, outdata); ! 922: PC+= 2; ! 923: } ! 924: ! 925: void cpu_op_568b(t_ipc *ipc) /* CLR */ { ! 926: /* mask fff8, bits 4258, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 927: int srcreg = (ipc->opcode >> 0) & 7; ! 928: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 929: uint16 srcdata = fetchword(srcaddr); ! 930: uint16 outdata = 0; ! 931: ! 932: storeword(srcaddr, outdata); ! 933: ! 934: VFLAG = 0; ! 935: CFLAG = 0; ! 936: NFLAG = 0; ! 937: ZFLAG = 1; ! 938: PC+= 2; ! 939: } ! 940: ! 941: void cpu_op_569a(t_ipc *ipc) /* CLR */ { ! 942: /* mask fff8, bits 4260, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 943: int srcreg = (ipc->opcode >> 0) & 7; ! 944: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 945: uint16 srcdata = fetchword(srcaddr); ! 946: uint16 outdata = 0; ! 947: ! 948: storeword(srcaddr, outdata); ! 949: PC+= 2; ! 950: } ! 951: ! 952: void cpu_op_569b(t_ipc *ipc) /* CLR */ { ! 953: /* mask fff8, bits 4260, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 954: int srcreg = (ipc->opcode >> 0) & 7; ! 955: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 956: uint16 srcdata = fetchword(srcaddr); ! 957: uint16 outdata = 0; ! 958: ! 959: storeword(srcaddr, outdata); ! 960: ! 961: VFLAG = 0; ! 962: CFLAG = 0; ! 963: NFLAG = 0; ! 964: ZFLAG = 1; ! 965: PC+= 2; ! 966: } ! 967: ! 968: void cpu_op_570a(t_ipc *ipc) /* CLR */ { ! 969: /* mask fff8, bits 4268, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 970: int srcreg = (ipc->opcode >> 0) & 7; ! 971: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 972: uint16 srcdata = fetchword(srcaddr); ! 973: uint16 outdata = 0; ! 974: ! 975: storeword(srcaddr, outdata); ! 976: PC+= 4; ! 977: } ! 978: ! 979: void cpu_op_570b(t_ipc *ipc) /* CLR */ { ! 980: /* mask fff8, bits 4268, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 981: int srcreg = (ipc->opcode >> 0) & 7; ! 982: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 983: uint16 srcdata = fetchword(srcaddr); ! 984: uint16 outdata = 0; ! 985: ! 986: storeword(srcaddr, outdata); ! 987: ! 988: VFLAG = 0; ! 989: CFLAG = 0; ! 990: NFLAG = 0; ! 991: ZFLAG = 1; ! 992: PC+= 4; ! 993: } ! 994: ! 995: void cpu_op_571a(t_ipc *ipc) /* CLR */ { ! 996: /* mask fff8, bits 4270, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 997: int srcreg = (ipc->opcode >> 0) & 7; ! 998: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 999: uint16 srcdata = fetchword(srcaddr); ! 1000: uint16 outdata = 0; ! 1001: ! 1002: storeword(srcaddr, outdata); ! 1003: PC+= 4; ! 1004: } ! 1005: ! 1006: void cpu_op_571b(t_ipc *ipc) /* CLR */ { ! 1007: /* mask fff8, bits 4270, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1008: int srcreg = (ipc->opcode >> 0) & 7; ! 1009: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 1010: uint16 srcdata = fetchword(srcaddr); ! 1011: uint16 outdata = 0; ! 1012: ! 1013: storeword(srcaddr, outdata); ! 1014: ! 1015: VFLAG = 0; ! 1016: CFLAG = 0; ! 1017: NFLAG = 0; ! 1018: ZFLAG = 1; ! 1019: PC+= 4; ! 1020: } ! 1021: ! 1022: void cpu_op_572a(t_ipc *ipc) /* CLR */ { ! 1023: /* mask ffff, bits 4278, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1024: uint32 srcaddr = ipc->src; ! 1025: uint16 srcdata = fetchword(srcaddr); ! 1026: uint16 outdata = 0; ! 1027: ! 1028: storeword(srcaddr, outdata); ! 1029: PC+= 4; ! 1030: } ! 1031: ! 1032: void cpu_op_572b(t_ipc *ipc) /* CLR */ { ! 1033: /* mask ffff, bits 4278, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1034: uint32 srcaddr = ipc->src; ! 1035: uint16 srcdata = fetchword(srcaddr); ! 1036: uint16 outdata = 0; ! 1037: ! 1038: storeword(srcaddr, outdata); ! 1039: ! 1040: VFLAG = 0; ! 1041: CFLAG = 0; ! 1042: NFLAG = 0; ! 1043: ZFLAG = 1; ! 1044: PC+= 4; ! 1045: } ! 1046: ! 1047: void cpu_op_573a(t_ipc *ipc) /* CLR */ { ! 1048: /* mask ffff, bits 4279, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1049: uint32 srcaddr = ipc->src; ! 1050: uint16 srcdata = fetchword(srcaddr); ! 1051: uint16 outdata = 0; ! 1052: ! 1053: storeword(srcaddr, outdata); ! 1054: PC+= 6; ! 1055: } ! 1056: ! 1057: void cpu_op_573b(t_ipc *ipc) /* CLR */ { ! 1058: /* mask ffff, bits 4279, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1059: uint32 srcaddr = ipc->src; ! 1060: uint16 srcdata = fetchword(srcaddr); ! 1061: uint16 outdata = 0; ! 1062: ! 1063: storeword(srcaddr, outdata); ! 1064: ! 1065: VFLAG = 0; ! 1066: CFLAG = 0; ! 1067: NFLAG = 0; ! 1068: ZFLAG = 1; ! 1069: PC+= 6; ! 1070: } ! 1071: ! 1072: void cpu_op_574a(t_ipc *ipc) /* CLR */ { ! 1073: /* mask fff8, bits 4280, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1074: int srcreg = (ipc->opcode >> 0) & 7; ! 1075: uint32 srcdata = DATAREG(srcreg); ! 1076: uint32 outdata = 0; ! 1077: ! 1078: DATAREG(srcreg) = outdata; ! 1079: PC+= 2; ! 1080: } ! 1081: ! 1082: void cpu_op_574b(t_ipc *ipc) /* CLR */ { ! 1083: /* mask fff8, bits 4280, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1084: int srcreg = (ipc->opcode >> 0) & 7; ! 1085: uint32 srcdata = DATAREG(srcreg); ! 1086: uint32 outdata = 0; ! 1087: ! 1088: DATAREG(srcreg) = outdata; ! 1089: ! 1090: VFLAG = 0; ! 1091: CFLAG = 0; ! 1092: NFLAG = 0; ! 1093: ZFLAG = 1; ! 1094: PC+= 2; ! 1095: } ! 1096: ! 1097: void cpu_op_575a(t_ipc *ipc) /* CLR */ { ! 1098: /* mask fff8, bits 4290, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1099: int srcreg = (ipc->opcode >> 0) & 7; ! 1100: uint32 srcaddr = ADDRREG(srcreg); ! 1101: uint32 srcdata = fetchlong(srcaddr); ! 1102: uint32 outdata = 0; ! 1103: ! 1104: storelong(srcaddr, outdata); ! 1105: PC+= 2; ! 1106: } ! 1107: ! 1108: void cpu_op_575b(t_ipc *ipc) /* CLR */ { ! 1109: /* mask fff8, bits 4290, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1110: int srcreg = (ipc->opcode >> 0) & 7; ! 1111: uint32 srcaddr = ADDRREG(srcreg); ! 1112: uint32 srcdata = fetchlong(srcaddr); ! 1113: uint32 outdata = 0; ! 1114: ! 1115: storelong(srcaddr, outdata); ! 1116: ! 1117: VFLAG = 0; ! 1118: CFLAG = 0; ! 1119: NFLAG = 0; ! 1120: ZFLAG = 1; ! 1121: PC+= 2; ! 1122: } ! 1123: ! 1124: void cpu_op_576a(t_ipc *ipc) /* CLR */ { ! 1125: /* mask fff8, bits 4298, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1126: int srcreg = (ipc->opcode >> 0) & 7; ! 1127: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 1128: uint32 srcdata = fetchlong(srcaddr); ! 1129: uint32 outdata = 0; ! 1130: ! 1131: storelong(srcaddr, outdata); ! 1132: PC+= 2; ! 1133: } ! 1134: ! 1135: void cpu_op_576b(t_ipc *ipc) /* CLR */ { ! 1136: /* mask fff8, bits 4298, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1137: int srcreg = (ipc->opcode >> 0) & 7; ! 1138: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 1139: uint32 srcdata = fetchlong(srcaddr); ! 1140: uint32 outdata = 0; ! 1141: ! 1142: storelong(srcaddr, outdata); ! 1143: ! 1144: VFLAG = 0; ! 1145: CFLAG = 0; ! 1146: NFLAG = 0; ! 1147: ZFLAG = 1; ! 1148: PC+= 2; ! 1149: } ! 1150: ! 1151: void cpu_op_577a(t_ipc *ipc) /* CLR */ { ! 1152: /* mask fff8, bits 42a0, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1153: int srcreg = (ipc->opcode >> 0) & 7; ! 1154: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 1155: uint32 srcdata = fetchlong(srcaddr); ! 1156: uint32 outdata = 0; ! 1157: ! 1158: storelong(srcaddr, outdata); ! 1159: PC+= 2; ! 1160: } ! 1161: ! 1162: void cpu_op_577b(t_ipc *ipc) /* CLR */ { ! 1163: /* mask fff8, bits 42a0, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1164: int srcreg = (ipc->opcode >> 0) & 7; ! 1165: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 1166: uint32 srcdata = fetchlong(srcaddr); ! 1167: uint32 outdata = 0; ! 1168: ! 1169: storelong(srcaddr, outdata); ! 1170: ! 1171: VFLAG = 0; ! 1172: CFLAG = 0; ! 1173: NFLAG = 0; ! 1174: ZFLAG = 1; ! 1175: PC+= 2; ! 1176: } ! 1177: ! 1178: void cpu_op_578a(t_ipc *ipc) /* CLR */ { ! 1179: /* mask fff8, bits 42a8, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1180: int srcreg = (ipc->opcode >> 0) & 7; ! 1181: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 1182: uint32 srcdata = fetchlong(srcaddr); ! 1183: uint32 outdata = 0; ! 1184: ! 1185: storelong(srcaddr, outdata); ! 1186: PC+= 4; ! 1187: } ! 1188: ! 1189: void cpu_op_578b(t_ipc *ipc) /* CLR */ { ! 1190: /* mask fff8, bits 42a8, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1191: int srcreg = (ipc->opcode >> 0) & 7; ! 1192: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 1193: uint32 srcdata = fetchlong(srcaddr); ! 1194: uint32 outdata = 0; ! 1195: ! 1196: storelong(srcaddr, outdata); ! 1197: ! 1198: VFLAG = 0; ! 1199: CFLAG = 0; ! 1200: NFLAG = 0; ! 1201: ZFLAG = 1; ! 1202: PC+= 4; ! 1203: } ! 1204: ! 1205: void cpu_op_579a(t_ipc *ipc) /* CLR */ { ! 1206: /* mask fff8, bits 42b0, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1207: int srcreg = (ipc->opcode >> 0) & 7; ! 1208: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 1209: uint32 srcdata = fetchlong(srcaddr); ! 1210: uint32 outdata = 0; ! 1211: ! 1212: storelong(srcaddr, outdata); ! 1213: PC+= 4; ! 1214: } ! 1215: ! 1216: void cpu_op_579b(t_ipc *ipc) /* CLR */ { ! 1217: /* mask fff8, bits 42b0, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1218: int srcreg = (ipc->opcode >> 0) & 7; ! 1219: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 1220: uint32 srcdata = fetchlong(srcaddr); ! 1221: uint32 outdata = 0; ! 1222: ! 1223: storelong(srcaddr, outdata); ! 1224: ! 1225: VFLAG = 0; ! 1226: CFLAG = 0; ! 1227: NFLAG = 0; ! 1228: ZFLAG = 1; ! 1229: PC+= 4; ! 1230: } ! 1231: ! 1232: void cpu_op_580a(t_ipc *ipc) /* CLR */ { ! 1233: /* mask ffff, bits 42b8, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1234: uint32 srcaddr = ipc->src; ! 1235: uint32 srcdata = fetchlong(srcaddr); ! 1236: uint32 outdata = 0; ! 1237: ! 1238: storelong(srcaddr, outdata); ! 1239: PC+= 4; ! 1240: } ! 1241: ! 1242: void cpu_op_580b(t_ipc *ipc) /* CLR */ { ! 1243: /* mask ffff, bits 42b8, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1244: uint32 srcaddr = ipc->src; ! 1245: uint32 srcdata = fetchlong(srcaddr); ! 1246: uint32 outdata = 0; ! 1247: ! 1248: storelong(srcaddr, outdata); ! 1249: ! 1250: VFLAG = 0; ! 1251: CFLAG = 0; ! 1252: NFLAG = 0; ! 1253: ZFLAG = 1; ! 1254: PC+= 4; ! 1255: } ! 1256: ! 1257: void cpu_op_581a(t_ipc *ipc) /* CLR */ { ! 1258: /* mask ffff, bits 42b9, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1259: uint32 srcaddr = ipc->src; ! 1260: uint32 srcdata = fetchlong(srcaddr); ! 1261: uint32 outdata = 0; ! 1262: ! 1263: storelong(srcaddr, outdata); ! 1264: PC+= 6; ! 1265: } ! 1266: ! 1267: void cpu_op_581b(t_ipc *ipc) /* CLR */ { ! 1268: /* mask ffff, bits 42b9, mnemonic 33, priv 0, endblk 0, imm_notzero 0, used -2 set -1, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1269: uint32 srcaddr = ipc->src; ! 1270: uint32 srcdata = fetchlong(srcaddr); ! 1271: uint32 outdata = 0; ! 1272: ! 1273: storelong(srcaddr, outdata); ! 1274: ! 1275: VFLAG = 0; ! 1276: CFLAG = 0; ! 1277: NFLAG = 0; ! 1278: ZFLAG = 1; ! 1279: PC+= 6; ! 1280: } ! 1281: ! 1282: void cpu_op_582a(t_ipc *ipc) /* NEG */ { ! 1283: /* mask fff8, bits 4400, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1284: int srcreg = (ipc->opcode >> 0) & 7; ! 1285: uint8 srcdata = DATAREG(srcreg); ! 1286: uint8 outdata = 0 - (sint8)srcdata; ! 1287: ! 1288: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 1289: PC+= 2; ! 1290: } ! 1291: ! 1292: void cpu_op_582b(t_ipc *ipc) /* NEG */ { ! 1293: /* mask fff8, bits 4400, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1294: int srcreg = (ipc->opcode >> 0) & 7; ! 1295: uint8 srcdata = DATAREG(srcreg); ! 1296: uint8 outdata = 0 - (sint8)srcdata; ! 1297: ! 1298: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 1299: ! 1300: VFLAG = (srcdata == (1u<<7)); ! 1301: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1302: NFLAG = ((sint8)outdata) < 0; ! 1303: ZFLAG = !outdata; ! 1304: PC+= 2; ! 1305: } ! 1306: ! 1307: void cpu_op_583a(t_ipc *ipc) /* NEG */ { ! 1308: /* mask fff8, bits 4410, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1309: int srcreg = (ipc->opcode >> 0) & 7; ! 1310: uint32 srcaddr = ADDRREG(srcreg); ! 1311: uint8 srcdata = fetchbyte(srcaddr); ! 1312: uint8 outdata = 0 - (sint8)srcdata; ! 1313: ! 1314: storebyte(srcaddr, outdata); ! 1315: PC+= 2; ! 1316: } ! 1317: ! 1318: void cpu_op_583b(t_ipc *ipc) /* NEG */ { ! 1319: /* mask fff8, bits 4410, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1320: int srcreg = (ipc->opcode >> 0) & 7; ! 1321: uint32 srcaddr = ADDRREG(srcreg); ! 1322: uint8 srcdata = fetchbyte(srcaddr); ! 1323: uint8 outdata = 0 - (sint8)srcdata; ! 1324: ! 1325: storebyte(srcaddr, outdata); ! 1326: ! 1327: VFLAG = (srcdata == (1u<<7)); ! 1328: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1329: NFLAG = ((sint8)outdata) < 0; ! 1330: ZFLAG = !outdata; ! 1331: PC+= 2; ! 1332: } ! 1333: ! 1334: void cpu_op_584a(t_ipc *ipc) /* NEG */ { ! 1335: /* mask fff8, bits 4418, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1336: int srcreg = (ipc->opcode >> 0) & 7; ! 1337: uint32 srcaddr = ADDRREG(srcreg); ! 1338: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 1339: uint8 srcdata = fetchbyte(srcaddr); ! 1340: uint8 outdata = 0 - (sint8)srcdata; ! 1341: ! 1342: storebyte(srcaddr, outdata); ! 1343: PC+= 2; ! 1344: } ! 1345: ! 1346: void cpu_op_584b(t_ipc *ipc) /* NEG */ { ! 1347: /* mask fff8, bits 4418, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1348: int srcreg = (ipc->opcode >> 0) & 7; ! 1349: uint32 srcaddr = ADDRREG(srcreg); ! 1350: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 1351: uint8 srcdata = fetchbyte(srcaddr); ! 1352: uint8 outdata = 0 - (sint8)srcdata; ! 1353: ! 1354: storebyte(srcaddr, outdata); ! 1355: ! 1356: VFLAG = (srcdata == (1u<<7)); ! 1357: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1358: NFLAG = ((sint8)outdata) < 0; ! 1359: ZFLAG = !outdata; ! 1360: PC+= 2; ! 1361: } ! 1362: ! 1363: void cpu_op_585a(t_ipc *ipc) /* NEG */ { ! 1364: /* mask fff8, bits 4420, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1365: int srcreg = (ipc->opcode >> 0) & 7; ! 1366: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 1367: uint8 srcdata = fetchbyte(srcaddr); ! 1368: uint8 outdata = 0 - (sint8)srcdata; ! 1369: ! 1370: storebyte(srcaddr, outdata); ! 1371: PC+= 2; ! 1372: } ! 1373: ! 1374: void cpu_op_585b(t_ipc *ipc) /* NEG */ { ! 1375: /* mask fff8, bits 4420, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1376: int srcreg = (ipc->opcode >> 0) & 7; ! 1377: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 1378: uint8 srcdata = fetchbyte(srcaddr); ! 1379: uint8 outdata = 0 - (sint8)srcdata; ! 1380: ! 1381: storebyte(srcaddr, outdata); ! 1382: ! 1383: VFLAG = (srcdata == (1u<<7)); ! 1384: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1385: NFLAG = ((sint8)outdata) < 0; ! 1386: ZFLAG = !outdata; ! 1387: PC+= 2; ! 1388: } ! 1389: ! 1390: void cpu_op_586a(t_ipc *ipc) /* NEG */ { ! 1391: /* mask fff8, bits 4428, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1392: int srcreg = (ipc->opcode >> 0) & 7; ! 1393: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 1394: uint8 srcdata = fetchbyte(srcaddr); ! 1395: uint8 outdata = 0 - (sint8)srcdata; ! 1396: ! 1397: storebyte(srcaddr, outdata); ! 1398: PC+= 4; ! 1399: } ! 1400: ! 1401: void cpu_op_586b(t_ipc *ipc) /* NEG */ { ! 1402: /* mask fff8, bits 4428, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1403: int srcreg = (ipc->opcode >> 0) & 7; ! 1404: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 1405: uint8 srcdata = fetchbyte(srcaddr); ! 1406: uint8 outdata = 0 - (sint8)srcdata; ! 1407: ! 1408: storebyte(srcaddr, outdata); ! 1409: ! 1410: VFLAG = (srcdata == (1u<<7)); ! 1411: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1412: NFLAG = ((sint8)outdata) < 0; ! 1413: ZFLAG = !outdata; ! 1414: PC+= 4; ! 1415: } ! 1416: ! 1417: void cpu_op_587a(t_ipc *ipc) /* NEG */ { ! 1418: /* mask fff8, bits 4430, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1419: int srcreg = (ipc->opcode >> 0) & 7; ! 1420: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 1421: uint8 srcdata = fetchbyte(srcaddr); ! 1422: uint8 outdata = 0 - (sint8)srcdata; ! 1423: ! 1424: storebyte(srcaddr, outdata); ! 1425: PC+= 4; ! 1426: } ! 1427: ! 1428: void cpu_op_587b(t_ipc *ipc) /* NEG */ { ! 1429: /* mask fff8, bits 4430, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1430: int srcreg = (ipc->opcode >> 0) & 7; ! 1431: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 1432: uint8 srcdata = fetchbyte(srcaddr); ! 1433: uint8 outdata = 0 - (sint8)srcdata; ! 1434: ! 1435: storebyte(srcaddr, outdata); ! 1436: ! 1437: VFLAG = (srcdata == (1u<<7)); ! 1438: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1439: NFLAG = ((sint8)outdata) < 0; ! 1440: ZFLAG = !outdata; ! 1441: PC+= 4; ! 1442: } ! 1443: ! 1444: void cpu_op_588a(t_ipc *ipc) /* NEG */ { ! 1445: /* mask ffff, bits 4438, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1446: uint32 srcaddr = ipc->src; ! 1447: uint8 srcdata = fetchbyte(srcaddr); ! 1448: uint8 outdata = 0 - (sint8)srcdata; ! 1449: ! 1450: storebyte(srcaddr, outdata); ! 1451: PC+= 4; ! 1452: } ! 1453: ! 1454: void cpu_op_588b(t_ipc *ipc) /* NEG */ { ! 1455: /* mask ffff, bits 4438, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1456: uint32 srcaddr = ipc->src; ! 1457: uint8 srcdata = fetchbyte(srcaddr); ! 1458: uint8 outdata = 0 - (sint8)srcdata; ! 1459: ! 1460: storebyte(srcaddr, outdata); ! 1461: ! 1462: VFLAG = (srcdata == (1u<<7)); ! 1463: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1464: NFLAG = ((sint8)outdata) < 0; ! 1465: ZFLAG = !outdata; ! 1466: PC+= 4; ! 1467: } ! 1468: ! 1469: void cpu_op_589a(t_ipc *ipc) /* NEG */ { ! 1470: /* mask ffff, bits 4439, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1471: uint32 srcaddr = ipc->src; ! 1472: uint8 srcdata = fetchbyte(srcaddr); ! 1473: uint8 outdata = 0 - (sint8)srcdata; ! 1474: ! 1475: storebyte(srcaddr, outdata); ! 1476: PC+= 6; ! 1477: } ! 1478: ! 1479: void cpu_op_589b(t_ipc *ipc) /* NEG */ { ! 1480: /* mask ffff, bits 4439, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1481: uint32 srcaddr = ipc->src; ! 1482: uint8 srcdata = fetchbyte(srcaddr); ! 1483: uint8 outdata = 0 - (sint8)srcdata; ! 1484: ! 1485: storebyte(srcaddr, outdata); ! 1486: ! 1487: VFLAG = (srcdata == (1u<<7)); ! 1488: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1489: NFLAG = ((sint8)outdata) < 0; ! 1490: ZFLAG = !outdata; ! 1491: PC+= 6; ! 1492: } ! 1493: ! 1494: void cpu_op_590a(t_ipc *ipc) /* NEG */ { ! 1495: /* mask fff8, bits 4440, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1496: int srcreg = (ipc->opcode >> 0) & 7; ! 1497: uint16 srcdata = DATAREG(srcreg); ! 1498: uint16 outdata = 0 - (sint16)srcdata; ! 1499: ! 1500: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xffff) | outdata; ! 1501: PC+= 2; ! 1502: } ! 1503: ! 1504: void cpu_op_590b(t_ipc *ipc) /* NEG */ { ! 1505: /* mask fff8, bits 4440, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1506: int srcreg = (ipc->opcode >> 0) & 7; ! 1507: uint16 srcdata = DATAREG(srcreg); ! 1508: uint16 outdata = 0 - (sint16)srcdata; ! 1509: ! 1510: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xffff) | outdata; ! 1511: ! 1512: VFLAG = (srcdata == (1u<<15)); ! 1513: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1514: NFLAG = ((sint16)outdata) < 0; ! 1515: ZFLAG = !outdata; ! 1516: PC+= 2; ! 1517: } ! 1518: ! 1519: void cpu_op_591a(t_ipc *ipc) /* NEG */ { ! 1520: /* mask fff8, bits 4450, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1521: int srcreg = (ipc->opcode >> 0) & 7; ! 1522: uint32 srcaddr = ADDRREG(srcreg); ! 1523: uint16 srcdata = fetchword(srcaddr); ! 1524: uint16 outdata = 0 - (sint16)srcdata; ! 1525: ! 1526: storeword(srcaddr, outdata); ! 1527: PC+= 2; ! 1528: } ! 1529: ! 1530: void cpu_op_591b(t_ipc *ipc) /* NEG */ { ! 1531: /* mask fff8, bits 4450, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1532: int srcreg = (ipc->opcode >> 0) & 7; ! 1533: uint32 srcaddr = ADDRREG(srcreg); ! 1534: uint16 srcdata = fetchword(srcaddr); ! 1535: uint16 outdata = 0 - (sint16)srcdata; ! 1536: ! 1537: storeword(srcaddr, outdata); ! 1538: ! 1539: VFLAG = (srcdata == (1u<<15)); ! 1540: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1541: NFLAG = ((sint16)outdata) < 0; ! 1542: ZFLAG = !outdata; ! 1543: PC+= 2; ! 1544: } ! 1545: ! 1546: void cpu_op_592a(t_ipc *ipc) /* NEG */ { ! 1547: /* mask fff8, bits 4458, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1548: int srcreg = (ipc->opcode >> 0) & 7; ! 1549: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 1550: uint16 srcdata = fetchword(srcaddr); ! 1551: uint16 outdata = 0 - (sint16)srcdata; ! 1552: ! 1553: storeword(srcaddr, outdata); ! 1554: PC+= 2; ! 1555: } ! 1556: ! 1557: void cpu_op_592b(t_ipc *ipc) /* NEG */ { ! 1558: /* mask fff8, bits 4458, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1559: int srcreg = (ipc->opcode >> 0) & 7; ! 1560: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 1561: uint16 srcdata = fetchword(srcaddr); ! 1562: uint16 outdata = 0 - (sint16)srcdata; ! 1563: ! 1564: storeword(srcaddr, outdata); ! 1565: ! 1566: VFLAG = (srcdata == (1u<<15)); ! 1567: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1568: NFLAG = ((sint16)outdata) < 0; ! 1569: ZFLAG = !outdata; ! 1570: PC+= 2; ! 1571: } ! 1572: ! 1573: void cpu_op_593a(t_ipc *ipc) /* NEG */ { ! 1574: /* mask fff8, bits 4460, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1575: int srcreg = (ipc->opcode >> 0) & 7; ! 1576: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 1577: uint16 srcdata = fetchword(srcaddr); ! 1578: uint16 outdata = 0 - (sint16)srcdata; ! 1579: ! 1580: storeword(srcaddr, outdata); ! 1581: PC+= 2; ! 1582: } ! 1583: ! 1584: void cpu_op_593b(t_ipc *ipc) /* NEG */ { ! 1585: /* mask fff8, bits 4460, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1586: int srcreg = (ipc->opcode >> 0) & 7; ! 1587: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 1588: uint16 srcdata = fetchword(srcaddr); ! 1589: uint16 outdata = 0 - (sint16)srcdata; ! 1590: ! 1591: storeword(srcaddr, outdata); ! 1592: ! 1593: VFLAG = (srcdata == (1u<<15)); ! 1594: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1595: NFLAG = ((sint16)outdata) < 0; ! 1596: ZFLAG = !outdata; ! 1597: PC+= 2; ! 1598: } ! 1599: ! 1600: void cpu_op_594a(t_ipc *ipc) /* NEG */ { ! 1601: /* mask fff8, bits 4468, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1602: int srcreg = (ipc->opcode >> 0) & 7; ! 1603: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 1604: uint16 srcdata = fetchword(srcaddr); ! 1605: uint16 outdata = 0 - (sint16)srcdata; ! 1606: ! 1607: storeword(srcaddr, outdata); ! 1608: PC+= 4; ! 1609: } ! 1610: ! 1611: void cpu_op_594b(t_ipc *ipc) /* NEG */ { ! 1612: /* mask fff8, bits 4468, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1613: int srcreg = (ipc->opcode >> 0) & 7; ! 1614: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 1615: uint16 srcdata = fetchword(srcaddr); ! 1616: uint16 outdata = 0 - (sint16)srcdata; ! 1617: ! 1618: storeword(srcaddr, outdata); ! 1619: ! 1620: VFLAG = (srcdata == (1u<<15)); ! 1621: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1622: NFLAG = ((sint16)outdata) < 0; ! 1623: ZFLAG = !outdata; ! 1624: PC+= 4; ! 1625: } ! 1626: ! 1627: void cpu_op_595a(t_ipc *ipc) /* NEG */ { ! 1628: /* mask fff8, bits 4470, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1629: int srcreg = (ipc->opcode >> 0) & 7; ! 1630: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 1631: uint16 srcdata = fetchword(srcaddr); ! 1632: uint16 outdata = 0 - (sint16)srcdata; ! 1633: ! 1634: storeword(srcaddr, outdata); ! 1635: PC+= 4; ! 1636: } ! 1637: ! 1638: void cpu_op_595b(t_ipc *ipc) /* NEG */ { ! 1639: /* mask fff8, bits 4470, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1640: int srcreg = (ipc->opcode >> 0) & 7; ! 1641: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 1642: uint16 srcdata = fetchword(srcaddr); ! 1643: uint16 outdata = 0 - (sint16)srcdata; ! 1644: ! 1645: storeword(srcaddr, outdata); ! 1646: ! 1647: VFLAG = (srcdata == (1u<<15)); ! 1648: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1649: NFLAG = ((sint16)outdata) < 0; ! 1650: ZFLAG = !outdata; ! 1651: PC+= 4; ! 1652: } ! 1653: ! 1654: void cpu_op_596a(t_ipc *ipc) /* NEG */ { ! 1655: /* mask ffff, bits 4478, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1656: uint32 srcaddr = ipc->src; ! 1657: uint16 srcdata = fetchword(srcaddr); ! 1658: uint16 outdata = 0 - (sint16)srcdata; ! 1659: ! 1660: storeword(srcaddr, outdata); ! 1661: PC+= 4; ! 1662: } ! 1663: ! 1664: void cpu_op_596b(t_ipc *ipc) /* NEG */ { ! 1665: /* mask ffff, bits 4478, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1666: uint32 srcaddr = ipc->src; ! 1667: uint16 srcdata = fetchword(srcaddr); ! 1668: uint16 outdata = 0 - (sint16)srcdata; ! 1669: ! 1670: storeword(srcaddr, outdata); ! 1671: ! 1672: VFLAG = (srcdata == (1u<<15)); ! 1673: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1674: NFLAG = ((sint16)outdata) < 0; ! 1675: ZFLAG = !outdata; ! 1676: PC+= 4; ! 1677: } ! 1678: ! 1679: void cpu_op_597a(t_ipc *ipc) /* NEG */ { ! 1680: /* mask ffff, bits 4479, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1681: uint32 srcaddr = ipc->src; ! 1682: uint16 srcdata = fetchword(srcaddr); ! 1683: uint16 outdata = 0 - (sint16)srcdata; ! 1684: ! 1685: storeword(srcaddr, outdata); ! 1686: PC+= 6; ! 1687: } ! 1688: ! 1689: void cpu_op_597b(t_ipc *ipc) /* NEG */ { ! 1690: /* mask ffff, bits 4479, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1691: uint32 srcaddr = ipc->src; ! 1692: uint16 srcdata = fetchword(srcaddr); ! 1693: uint16 outdata = 0 - (sint16)srcdata; ! 1694: ! 1695: storeword(srcaddr, outdata); ! 1696: ! 1697: VFLAG = (srcdata == (1u<<15)); ! 1698: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1699: NFLAG = ((sint16)outdata) < 0; ! 1700: ZFLAG = !outdata; ! 1701: PC+= 6; ! 1702: } ! 1703: ! 1704: void cpu_op_598a(t_ipc *ipc) /* NEG */ { ! 1705: /* mask fff8, bits 4480, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1706: int srcreg = (ipc->opcode >> 0) & 7; ! 1707: uint32 srcdata = DATAREG(srcreg); ! 1708: uint32 outdata = 0 - (sint32)srcdata; ! 1709: ! 1710: DATAREG(srcreg) = outdata; ! 1711: PC+= 2; ! 1712: } ! 1713: ! 1714: void cpu_op_598b(t_ipc *ipc) /* NEG */ { ! 1715: /* mask fff8, bits 4480, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1716: int srcreg = (ipc->opcode >> 0) & 7; ! 1717: uint32 srcdata = DATAREG(srcreg); ! 1718: uint32 outdata = 0 - (sint32)srcdata; ! 1719: ! 1720: DATAREG(srcreg) = outdata; ! 1721: ! 1722: VFLAG = (srcdata == (1u<<31)); ! 1723: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1724: NFLAG = ((sint32)outdata) < 0; ! 1725: ZFLAG = !outdata; ! 1726: PC+= 2; ! 1727: } ! 1728: ! 1729: void cpu_op_599a(t_ipc *ipc) /* NEG */ { ! 1730: /* mask fff8, bits 4490, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1731: int srcreg = (ipc->opcode >> 0) & 7; ! 1732: uint32 srcaddr = ADDRREG(srcreg); ! 1733: uint32 srcdata = fetchlong(srcaddr); ! 1734: uint32 outdata = 0 - (sint32)srcdata; ! 1735: ! 1736: storelong(srcaddr, outdata); ! 1737: PC+= 2; ! 1738: } ! 1739: ! 1740: void cpu_op_599b(t_ipc *ipc) /* NEG */ { ! 1741: /* mask fff8, bits 4490, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1742: int srcreg = (ipc->opcode >> 0) & 7; ! 1743: uint32 srcaddr = ADDRREG(srcreg); ! 1744: uint32 srcdata = fetchlong(srcaddr); ! 1745: uint32 outdata = 0 - (sint32)srcdata; ! 1746: ! 1747: storelong(srcaddr, outdata); ! 1748: ! 1749: VFLAG = (srcdata == (1u<<31)); ! 1750: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1751: NFLAG = ((sint32)outdata) < 0; ! 1752: ZFLAG = !outdata; ! 1753: PC+= 2; ! 1754: } ! 1755: ! 1756: void cpu_op_600a(t_ipc *ipc) /* NEG */ { ! 1757: /* mask fff8, bits 4498, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1758: int srcreg = (ipc->opcode >> 0) & 7; ! 1759: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 1760: uint32 srcdata = fetchlong(srcaddr); ! 1761: uint32 outdata = 0 - (sint32)srcdata; ! 1762: ! 1763: storelong(srcaddr, outdata); ! 1764: PC+= 2; ! 1765: } ! 1766: ! 1767: void cpu_op_600b(t_ipc *ipc) /* NEG */ { ! 1768: /* mask fff8, bits 4498, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1769: int srcreg = (ipc->opcode >> 0) & 7; ! 1770: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 1771: uint32 srcdata = fetchlong(srcaddr); ! 1772: uint32 outdata = 0 - (sint32)srcdata; ! 1773: ! 1774: storelong(srcaddr, outdata); ! 1775: ! 1776: VFLAG = (srcdata == (1u<<31)); ! 1777: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1778: NFLAG = ((sint32)outdata) < 0; ! 1779: ZFLAG = !outdata; ! 1780: PC+= 2; ! 1781: } ! 1782: ! 1783: void cpu_op_601a(t_ipc *ipc) /* NEG */ { ! 1784: /* mask fff8, bits 44a0, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1785: int srcreg = (ipc->opcode >> 0) & 7; ! 1786: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 1787: uint32 srcdata = fetchlong(srcaddr); ! 1788: uint32 outdata = 0 - (sint32)srcdata; ! 1789: ! 1790: storelong(srcaddr, outdata); ! 1791: PC+= 2; ! 1792: } ! 1793: ! 1794: void cpu_op_601b(t_ipc *ipc) /* NEG */ { ! 1795: /* mask fff8, bits 44a0, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1796: int srcreg = (ipc->opcode >> 0) & 7; ! 1797: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 1798: uint32 srcdata = fetchlong(srcaddr); ! 1799: uint32 outdata = 0 - (sint32)srcdata; ! 1800: ! 1801: storelong(srcaddr, outdata); ! 1802: ! 1803: VFLAG = (srcdata == (1u<<31)); ! 1804: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1805: NFLAG = ((sint32)outdata) < 0; ! 1806: ZFLAG = !outdata; ! 1807: PC+= 2; ! 1808: } ! 1809: ! 1810: void cpu_op_602a(t_ipc *ipc) /* NEG */ { ! 1811: /* mask fff8, bits 44a8, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1812: int srcreg = (ipc->opcode >> 0) & 7; ! 1813: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 1814: uint32 srcdata = fetchlong(srcaddr); ! 1815: uint32 outdata = 0 - (sint32)srcdata; ! 1816: ! 1817: storelong(srcaddr, outdata); ! 1818: PC+= 4; ! 1819: } ! 1820: ! 1821: void cpu_op_602b(t_ipc *ipc) /* NEG */ { ! 1822: /* mask fff8, bits 44a8, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1823: int srcreg = (ipc->opcode >> 0) & 7; ! 1824: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 1825: uint32 srcdata = fetchlong(srcaddr); ! 1826: uint32 outdata = 0 - (sint32)srcdata; ! 1827: ! 1828: storelong(srcaddr, outdata); ! 1829: ! 1830: VFLAG = (srcdata == (1u<<31)); ! 1831: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1832: NFLAG = ((sint32)outdata) < 0; ! 1833: ZFLAG = !outdata; ! 1834: PC+= 4; ! 1835: } ! 1836: ! 1837: void cpu_op_603a(t_ipc *ipc) /* NEG */ { ! 1838: /* mask fff8, bits 44b0, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1839: int srcreg = (ipc->opcode >> 0) & 7; ! 1840: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 1841: uint32 srcdata = fetchlong(srcaddr); ! 1842: uint32 outdata = 0 - (sint32)srcdata; ! 1843: ! 1844: storelong(srcaddr, outdata); ! 1845: PC+= 4; ! 1846: } ! 1847: ! 1848: void cpu_op_603b(t_ipc *ipc) /* NEG */ { ! 1849: /* mask fff8, bits 44b0, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1850: int srcreg = (ipc->opcode >> 0) & 7; ! 1851: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 1852: uint32 srcdata = fetchlong(srcaddr); ! 1853: uint32 outdata = 0 - (sint32)srcdata; ! 1854: ! 1855: storelong(srcaddr, outdata); ! 1856: ! 1857: VFLAG = (srcdata == (1u<<31)); ! 1858: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1859: NFLAG = ((sint32)outdata) < 0; ! 1860: ZFLAG = !outdata; ! 1861: PC+= 4; ! 1862: } ! 1863: ! 1864: void cpu_op_604a(t_ipc *ipc) /* NEG */ { ! 1865: /* mask ffff, bits 44b8, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1866: uint32 srcaddr = ipc->src; ! 1867: uint32 srcdata = fetchlong(srcaddr); ! 1868: uint32 outdata = 0 - (sint32)srcdata; ! 1869: ! 1870: storelong(srcaddr, outdata); ! 1871: PC+= 4; ! 1872: } ! 1873: ! 1874: void cpu_op_604b(t_ipc *ipc) /* NEG */ { ! 1875: /* mask ffff, bits 44b8, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1876: uint32 srcaddr = ipc->src; ! 1877: uint32 srcdata = fetchlong(srcaddr); ! 1878: uint32 outdata = 0 - (sint32)srcdata; ! 1879: ! 1880: storelong(srcaddr, outdata); ! 1881: ! 1882: VFLAG = (srcdata == (1u<<31)); ! 1883: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1884: NFLAG = ((sint32)outdata) < 0; ! 1885: ZFLAG = !outdata; ! 1886: PC+= 4; ! 1887: } ! 1888: ! 1889: void cpu_op_605a(t_ipc *ipc) /* NEG */ { ! 1890: /* mask ffff, bits 44b9, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1891: uint32 srcaddr = ipc->src; ! 1892: uint32 srcdata = fetchlong(srcaddr); ! 1893: uint32 outdata = 0 - (sint32)srcdata; ! 1894: ! 1895: storelong(srcaddr, outdata); ! 1896: PC+= 6; ! 1897: } ! 1898: ! 1899: void cpu_op_605b(t_ipc *ipc) /* NEG */ { ! 1900: /* mask ffff, bits 44b9, mnemonic 31, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1901: uint32 srcaddr = ipc->src; ! 1902: uint32 srcdata = fetchlong(srcaddr); ! 1903: uint32 outdata = 0 - (sint32)srcdata; ! 1904: ! 1905: storelong(srcaddr, outdata); ! 1906: ! 1907: VFLAG = (srcdata == (1u<<31)); ! 1908: XFLAG = CFLAG = srcdata ? 1 : 0; ! 1909: NFLAG = ((sint32)outdata) < 0; ! 1910: ZFLAG = !outdata; ! 1911: PC+= 6; ! 1912: } ! 1913: ! 1914: void cpu_op_606a(t_ipc *ipc) /* NOT */ { ! 1915: /* mask fff8, bits 4600, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1916: int srcreg = (ipc->opcode >> 0) & 7; ! 1917: uint8 srcdata = DATAREG(srcreg); ! 1918: uint8 outdata = ~srcdata; ! 1919: ! 1920: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 1921: PC+= 2; ! 1922: } ! 1923: ! 1924: void cpu_op_606b(t_ipc *ipc) /* NOT */ { ! 1925: /* mask fff8, bits 4600, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1926: int srcreg = (ipc->opcode >> 0) & 7; ! 1927: uint8 srcdata = DATAREG(srcreg); ! 1928: uint8 outdata = ~srcdata; ! 1929: ! 1930: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 1931: ! 1932: VFLAG = 0; ! 1933: CFLAG = 0; ! 1934: NFLAG = ((sint8)outdata) < 0; ! 1935: ZFLAG = !outdata; ! 1936: PC+= 2; ! 1937: } ! 1938: ! 1939: void cpu_op_607a(t_ipc *ipc) /* NOT */ { ! 1940: /* mask fff8, bits 4610, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1941: int srcreg = (ipc->opcode >> 0) & 7; ! 1942: uint32 srcaddr = ADDRREG(srcreg); ! 1943: uint8 srcdata = fetchbyte(srcaddr); ! 1944: uint8 outdata = ~srcdata; ! 1945: ! 1946: storebyte(srcaddr, outdata); ! 1947: PC+= 2; ! 1948: } ! 1949: ! 1950: void cpu_op_607b(t_ipc *ipc) /* NOT */ { ! 1951: /* mask fff8, bits 4610, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1952: int srcreg = (ipc->opcode >> 0) & 7; ! 1953: uint32 srcaddr = ADDRREG(srcreg); ! 1954: uint8 srcdata = fetchbyte(srcaddr); ! 1955: uint8 outdata = ~srcdata; ! 1956: ! 1957: storebyte(srcaddr, outdata); ! 1958: ! 1959: VFLAG = 0; ! 1960: CFLAG = 0; ! 1961: NFLAG = ((sint8)outdata) < 0; ! 1962: ZFLAG = !outdata; ! 1963: PC+= 2; ! 1964: } ! 1965: ! 1966: void cpu_op_608a(t_ipc *ipc) /* NOT */ { ! 1967: /* mask fff8, bits 4618, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1968: int srcreg = (ipc->opcode >> 0) & 7; ! 1969: uint32 srcaddr = ADDRREG(srcreg); ! 1970: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 1971: uint8 srcdata = fetchbyte(srcaddr); ! 1972: uint8 outdata = ~srcdata; ! 1973: ! 1974: storebyte(srcaddr, outdata); ! 1975: PC+= 2; ! 1976: } ! 1977: ! 1978: void cpu_op_608b(t_ipc *ipc) /* NOT */ { ! 1979: /* mask fff8, bits 4618, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1980: int srcreg = (ipc->opcode >> 0) & 7; ! 1981: uint32 srcaddr = ADDRREG(srcreg); ! 1982: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 1983: uint8 srcdata = fetchbyte(srcaddr); ! 1984: uint8 outdata = ~srcdata; ! 1985: ! 1986: storebyte(srcaddr, outdata); ! 1987: ! 1988: VFLAG = 0; ! 1989: CFLAG = 0; ! 1990: NFLAG = ((sint8)outdata) < 0; ! 1991: ZFLAG = !outdata; ! 1992: PC+= 2; ! 1993: } ! 1994: ! 1995: void cpu_op_609a(t_ipc *ipc) /* NOT */ { ! 1996: /* mask fff8, bits 4620, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 1997: int srcreg = (ipc->opcode >> 0) & 7; ! 1998: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 1999: uint8 srcdata = fetchbyte(srcaddr); ! 2000: uint8 outdata = ~srcdata; ! 2001: ! 2002: storebyte(srcaddr, outdata); ! 2003: PC+= 2; ! 2004: } ! 2005: ! 2006: void cpu_op_609b(t_ipc *ipc) /* NOT */ { ! 2007: /* mask fff8, bits 4620, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2008: int srcreg = (ipc->opcode >> 0) & 7; ! 2009: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 2010: uint8 srcdata = fetchbyte(srcaddr); ! 2011: uint8 outdata = ~srcdata; ! 2012: ! 2013: storebyte(srcaddr, outdata); ! 2014: ! 2015: VFLAG = 0; ! 2016: CFLAG = 0; ! 2017: NFLAG = ((sint8)outdata) < 0; ! 2018: ZFLAG = !outdata; ! 2019: PC+= 2; ! 2020: } ! 2021: ! 2022: void cpu_op_610a(t_ipc *ipc) /* NOT */ { ! 2023: /* mask fff8, bits 4628, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2024: int srcreg = (ipc->opcode >> 0) & 7; ! 2025: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 2026: uint8 srcdata = fetchbyte(srcaddr); ! 2027: uint8 outdata = ~srcdata; ! 2028: ! 2029: storebyte(srcaddr, outdata); ! 2030: PC+= 4; ! 2031: } ! 2032: ! 2033: void cpu_op_610b(t_ipc *ipc) /* NOT */ { ! 2034: /* mask fff8, bits 4628, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2035: int srcreg = (ipc->opcode >> 0) & 7; ! 2036: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 2037: uint8 srcdata = fetchbyte(srcaddr); ! 2038: uint8 outdata = ~srcdata; ! 2039: ! 2040: storebyte(srcaddr, outdata); ! 2041: ! 2042: VFLAG = 0; ! 2043: CFLAG = 0; ! 2044: NFLAG = ((sint8)outdata) < 0; ! 2045: ZFLAG = !outdata; ! 2046: PC+= 4; ! 2047: } ! 2048: ! 2049: void cpu_op_611a(t_ipc *ipc) /* NOT */ { ! 2050: /* mask fff8, bits 4630, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2051: int srcreg = (ipc->opcode >> 0) & 7; ! 2052: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 2053: uint8 srcdata = fetchbyte(srcaddr); ! 2054: uint8 outdata = ~srcdata; ! 2055: ! 2056: storebyte(srcaddr, outdata); ! 2057: PC+= 4; ! 2058: } ! 2059: ! 2060: void cpu_op_611b(t_ipc *ipc) /* NOT */ { ! 2061: /* mask fff8, bits 4630, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2062: int srcreg = (ipc->opcode >> 0) & 7; ! 2063: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 2064: uint8 srcdata = fetchbyte(srcaddr); ! 2065: uint8 outdata = ~srcdata; ! 2066: ! 2067: storebyte(srcaddr, outdata); ! 2068: ! 2069: VFLAG = 0; ! 2070: CFLAG = 0; ! 2071: NFLAG = ((sint8)outdata) < 0; ! 2072: ZFLAG = !outdata; ! 2073: PC+= 4; ! 2074: } ! 2075: ! 2076: void cpu_op_612a(t_ipc *ipc) /* NOT */ { ! 2077: /* mask ffff, bits 4638, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2078: uint32 srcaddr = ipc->src; ! 2079: uint8 srcdata = fetchbyte(srcaddr); ! 2080: uint8 outdata = ~srcdata; ! 2081: ! 2082: storebyte(srcaddr, outdata); ! 2083: PC+= 4; ! 2084: } ! 2085: ! 2086: void cpu_op_612b(t_ipc *ipc) /* NOT */ { ! 2087: /* mask ffff, bits 4638, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2088: uint32 srcaddr = ipc->src; ! 2089: uint8 srcdata = fetchbyte(srcaddr); ! 2090: uint8 outdata = ~srcdata; ! 2091: ! 2092: storebyte(srcaddr, outdata); ! 2093: ! 2094: VFLAG = 0; ! 2095: CFLAG = 0; ! 2096: NFLAG = ((sint8)outdata) < 0; ! 2097: ZFLAG = !outdata; ! 2098: PC+= 4; ! 2099: } ! 2100: ! 2101: void cpu_op_613a(t_ipc *ipc) /* NOT */ { ! 2102: /* mask ffff, bits 4639, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2103: uint32 srcaddr = ipc->src; ! 2104: uint8 srcdata = fetchbyte(srcaddr); ! 2105: uint8 outdata = ~srcdata; ! 2106: ! 2107: storebyte(srcaddr, outdata); ! 2108: PC+= 6; ! 2109: } ! 2110: ! 2111: void cpu_op_613b(t_ipc *ipc) /* NOT */ { ! 2112: /* mask ffff, bits 4639, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2113: uint32 srcaddr = ipc->src; ! 2114: uint8 srcdata = fetchbyte(srcaddr); ! 2115: uint8 outdata = ~srcdata; ! 2116: ! 2117: storebyte(srcaddr, outdata); ! 2118: ! 2119: VFLAG = 0; ! 2120: CFLAG = 0; ! 2121: NFLAG = ((sint8)outdata) < 0; ! 2122: ZFLAG = !outdata; ! 2123: PC+= 6; ! 2124: } ! 2125: ! 2126: void cpu_op_614a(t_ipc *ipc) /* NOT */ { ! 2127: /* mask fff8, bits 4640, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2128: int srcreg = (ipc->opcode >> 0) & 7; ! 2129: uint16 srcdata = DATAREG(srcreg); ! 2130: uint16 outdata = ~srcdata; ! 2131: ! 2132: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xffff) | outdata; ! 2133: PC+= 2; ! 2134: } ! 2135: ! 2136: void cpu_op_614b(t_ipc *ipc) /* NOT */ { ! 2137: /* mask fff8, bits 4640, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2138: int srcreg = (ipc->opcode >> 0) & 7; ! 2139: uint16 srcdata = DATAREG(srcreg); ! 2140: uint16 outdata = ~srcdata; ! 2141: ! 2142: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xffff) | outdata; ! 2143: ! 2144: VFLAG = 0; ! 2145: CFLAG = 0; ! 2146: NFLAG = ((sint16)outdata) < 0; ! 2147: ZFLAG = !outdata; ! 2148: PC+= 2; ! 2149: } ! 2150: ! 2151: void cpu_op_615a(t_ipc *ipc) /* NOT */ { ! 2152: /* mask fff8, bits 4650, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2153: int srcreg = (ipc->opcode >> 0) & 7; ! 2154: uint32 srcaddr = ADDRREG(srcreg); ! 2155: uint16 srcdata = fetchword(srcaddr); ! 2156: uint16 outdata = ~srcdata; ! 2157: ! 2158: storeword(srcaddr, outdata); ! 2159: PC+= 2; ! 2160: } ! 2161: ! 2162: void cpu_op_615b(t_ipc *ipc) /* NOT */ { ! 2163: /* mask fff8, bits 4650, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2164: int srcreg = (ipc->opcode >> 0) & 7; ! 2165: uint32 srcaddr = ADDRREG(srcreg); ! 2166: uint16 srcdata = fetchword(srcaddr); ! 2167: uint16 outdata = ~srcdata; ! 2168: ! 2169: storeword(srcaddr, outdata); ! 2170: ! 2171: VFLAG = 0; ! 2172: CFLAG = 0; ! 2173: NFLAG = ((sint16)outdata) < 0; ! 2174: ZFLAG = !outdata; ! 2175: PC+= 2; ! 2176: } ! 2177: ! 2178: void cpu_op_616a(t_ipc *ipc) /* NOT */ { ! 2179: /* mask fff8, bits 4658, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2180: int srcreg = (ipc->opcode >> 0) & 7; ! 2181: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 2182: uint16 srcdata = fetchword(srcaddr); ! 2183: uint16 outdata = ~srcdata; ! 2184: ! 2185: storeword(srcaddr, outdata); ! 2186: PC+= 2; ! 2187: } ! 2188: ! 2189: void cpu_op_616b(t_ipc *ipc) /* NOT */ { ! 2190: /* mask fff8, bits 4658, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2191: int srcreg = (ipc->opcode >> 0) & 7; ! 2192: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 2193: uint16 srcdata = fetchword(srcaddr); ! 2194: uint16 outdata = ~srcdata; ! 2195: ! 2196: storeword(srcaddr, outdata); ! 2197: ! 2198: VFLAG = 0; ! 2199: CFLAG = 0; ! 2200: NFLAG = ((sint16)outdata) < 0; ! 2201: ZFLAG = !outdata; ! 2202: PC+= 2; ! 2203: } ! 2204: ! 2205: void cpu_op_617a(t_ipc *ipc) /* NOT */ { ! 2206: /* mask fff8, bits 4660, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2207: int srcreg = (ipc->opcode >> 0) & 7; ! 2208: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 2209: uint16 srcdata = fetchword(srcaddr); ! 2210: uint16 outdata = ~srcdata; ! 2211: ! 2212: storeword(srcaddr, outdata); ! 2213: PC+= 2; ! 2214: } ! 2215: ! 2216: void cpu_op_617b(t_ipc *ipc) /* NOT */ { ! 2217: /* mask fff8, bits 4660, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2218: int srcreg = (ipc->opcode >> 0) & 7; ! 2219: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 2220: uint16 srcdata = fetchword(srcaddr); ! 2221: uint16 outdata = ~srcdata; ! 2222: ! 2223: storeword(srcaddr, outdata); ! 2224: ! 2225: VFLAG = 0; ! 2226: CFLAG = 0; ! 2227: NFLAG = ((sint16)outdata) < 0; ! 2228: ZFLAG = !outdata; ! 2229: PC+= 2; ! 2230: } ! 2231: ! 2232: void cpu_op_618a(t_ipc *ipc) /* NOT */ { ! 2233: /* mask fff8, bits 4668, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2234: int srcreg = (ipc->opcode >> 0) & 7; ! 2235: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 2236: uint16 srcdata = fetchword(srcaddr); ! 2237: uint16 outdata = ~srcdata; ! 2238: ! 2239: storeword(srcaddr, outdata); ! 2240: PC+= 4; ! 2241: } ! 2242: ! 2243: void cpu_op_618b(t_ipc *ipc) /* NOT */ { ! 2244: /* mask fff8, bits 4668, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2245: int srcreg = (ipc->opcode >> 0) & 7; ! 2246: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 2247: uint16 srcdata = fetchword(srcaddr); ! 2248: uint16 outdata = ~srcdata; ! 2249: ! 2250: storeword(srcaddr, outdata); ! 2251: ! 2252: VFLAG = 0; ! 2253: CFLAG = 0; ! 2254: NFLAG = ((sint16)outdata) < 0; ! 2255: ZFLAG = !outdata; ! 2256: PC+= 4; ! 2257: } ! 2258: ! 2259: void cpu_op_619a(t_ipc *ipc) /* NOT */ { ! 2260: /* mask fff8, bits 4670, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2261: int srcreg = (ipc->opcode >> 0) & 7; ! 2262: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 2263: uint16 srcdata = fetchword(srcaddr); ! 2264: uint16 outdata = ~srcdata; ! 2265: ! 2266: storeword(srcaddr, outdata); ! 2267: PC+= 4; ! 2268: } ! 2269: ! 2270: void cpu_op_619b(t_ipc *ipc) /* NOT */ { ! 2271: /* mask fff8, bits 4670, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2272: int srcreg = (ipc->opcode >> 0) & 7; ! 2273: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 2274: uint16 srcdata = fetchword(srcaddr); ! 2275: uint16 outdata = ~srcdata; ! 2276: ! 2277: storeword(srcaddr, outdata); ! 2278: ! 2279: VFLAG = 0; ! 2280: CFLAG = 0; ! 2281: NFLAG = ((sint16)outdata) < 0; ! 2282: ZFLAG = !outdata; ! 2283: PC+= 4; ! 2284: } ! 2285: ! 2286: void cpu_op_620a(t_ipc *ipc) /* NOT */ { ! 2287: /* mask ffff, bits 4678, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2288: uint32 srcaddr = ipc->src; ! 2289: uint16 srcdata = fetchword(srcaddr); ! 2290: uint16 outdata = ~srcdata; ! 2291: ! 2292: storeword(srcaddr, outdata); ! 2293: PC+= 4; ! 2294: } ! 2295: ! 2296: void cpu_op_620b(t_ipc *ipc) /* NOT */ { ! 2297: /* mask ffff, bits 4678, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2298: uint32 srcaddr = ipc->src; ! 2299: uint16 srcdata = fetchword(srcaddr); ! 2300: uint16 outdata = ~srcdata; ! 2301: ! 2302: storeword(srcaddr, outdata); ! 2303: ! 2304: VFLAG = 0; ! 2305: CFLAG = 0; ! 2306: NFLAG = ((sint16)outdata) < 0; ! 2307: ZFLAG = !outdata; ! 2308: PC+= 4; ! 2309: } ! 2310: ! 2311: void cpu_op_621a(t_ipc *ipc) /* NOT */ { ! 2312: /* mask ffff, bits 4679, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2313: uint32 srcaddr = ipc->src; ! 2314: uint16 srcdata = fetchword(srcaddr); ! 2315: uint16 outdata = ~srcdata; ! 2316: ! 2317: storeword(srcaddr, outdata); ! 2318: PC+= 6; ! 2319: } ! 2320: ! 2321: void cpu_op_621b(t_ipc *ipc) /* NOT */ { ! 2322: /* mask ffff, bits 4679, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2323: uint32 srcaddr = ipc->src; ! 2324: uint16 srcdata = fetchword(srcaddr); ! 2325: uint16 outdata = ~srcdata; ! 2326: ! 2327: storeword(srcaddr, outdata); ! 2328: ! 2329: VFLAG = 0; ! 2330: CFLAG = 0; ! 2331: NFLAG = ((sint16)outdata) < 0; ! 2332: ZFLAG = !outdata; ! 2333: PC+= 6; ! 2334: } ! 2335: ! 2336: void cpu_op_622a(t_ipc *ipc) /* NOT */ { ! 2337: /* mask fff8, bits 4680, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2338: int srcreg = (ipc->opcode >> 0) & 7; ! 2339: uint32 srcdata = DATAREG(srcreg); ! 2340: uint32 outdata = ~srcdata; ! 2341: ! 2342: DATAREG(srcreg) = outdata; ! 2343: PC+= 2; ! 2344: } ! 2345: ! 2346: void cpu_op_622b(t_ipc *ipc) /* NOT */ { ! 2347: /* mask fff8, bits 4680, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2348: int srcreg = (ipc->opcode >> 0) & 7; ! 2349: uint32 srcdata = DATAREG(srcreg); ! 2350: uint32 outdata = ~srcdata; ! 2351: ! 2352: DATAREG(srcreg) = outdata; ! 2353: ! 2354: VFLAG = 0; ! 2355: CFLAG = 0; ! 2356: NFLAG = ((sint32)outdata) < 0; ! 2357: ZFLAG = !outdata; ! 2358: PC+= 2; ! 2359: } ! 2360: ! 2361: void cpu_op_623a(t_ipc *ipc) /* NOT */ { ! 2362: /* mask fff8, bits 4690, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2363: int srcreg = (ipc->opcode >> 0) & 7; ! 2364: uint32 srcaddr = ADDRREG(srcreg); ! 2365: uint32 srcdata = fetchlong(srcaddr); ! 2366: uint32 outdata = ~srcdata; ! 2367: ! 2368: storelong(srcaddr, outdata); ! 2369: PC+= 2; ! 2370: } ! 2371: ! 2372: void cpu_op_623b(t_ipc *ipc) /* NOT */ { ! 2373: /* mask fff8, bits 4690, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2374: int srcreg = (ipc->opcode >> 0) & 7; ! 2375: uint32 srcaddr = ADDRREG(srcreg); ! 2376: uint32 srcdata = fetchlong(srcaddr); ! 2377: uint32 outdata = ~srcdata; ! 2378: ! 2379: storelong(srcaddr, outdata); ! 2380: ! 2381: VFLAG = 0; ! 2382: CFLAG = 0; ! 2383: NFLAG = ((sint32)outdata) < 0; ! 2384: ZFLAG = !outdata; ! 2385: PC+= 2; ! 2386: } ! 2387: ! 2388: void cpu_op_624a(t_ipc *ipc) /* NOT */ { ! 2389: /* mask fff8, bits 4698, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2390: int srcreg = (ipc->opcode >> 0) & 7; ! 2391: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 2392: uint32 srcdata = fetchlong(srcaddr); ! 2393: uint32 outdata = ~srcdata; ! 2394: ! 2395: storelong(srcaddr, outdata); ! 2396: PC+= 2; ! 2397: } ! 2398: ! 2399: void cpu_op_624b(t_ipc *ipc) /* NOT */ { ! 2400: /* mask fff8, bits 4698, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2401: int srcreg = (ipc->opcode >> 0) & 7; ! 2402: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 2403: uint32 srcdata = fetchlong(srcaddr); ! 2404: uint32 outdata = ~srcdata; ! 2405: ! 2406: storelong(srcaddr, outdata); ! 2407: ! 2408: VFLAG = 0; ! 2409: CFLAG = 0; ! 2410: NFLAG = ((sint32)outdata) < 0; ! 2411: ZFLAG = !outdata; ! 2412: PC+= 2; ! 2413: } ! 2414: ! 2415: void cpu_op_625a(t_ipc *ipc) /* NOT */ { ! 2416: /* mask fff8, bits 46a0, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2417: int srcreg = (ipc->opcode >> 0) & 7; ! 2418: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 2419: uint32 srcdata = fetchlong(srcaddr); ! 2420: uint32 outdata = ~srcdata; ! 2421: ! 2422: storelong(srcaddr, outdata); ! 2423: PC+= 2; ! 2424: } ! 2425: ! 2426: void cpu_op_625b(t_ipc *ipc) /* NOT */ { ! 2427: /* mask fff8, bits 46a0, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2428: int srcreg = (ipc->opcode >> 0) & 7; ! 2429: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 2430: uint32 srcdata = fetchlong(srcaddr); ! 2431: uint32 outdata = ~srcdata; ! 2432: ! 2433: storelong(srcaddr, outdata); ! 2434: ! 2435: VFLAG = 0; ! 2436: CFLAG = 0; ! 2437: NFLAG = ((sint32)outdata) < 0; ! 2438: ZFLAG = !outdata; ! 2439: PC+= 2; ! 2440: } ! 2441: ! 2442: void cpu_op_626a(t_ipc *ipc) /* NOT */ { ! 2443: /* mask fff8, bits 46a8, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2444: int srcreg = (ipc->opcode >> 0) & 7; ! 2445: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 2446: uint32 srcdata = fetchlong(srcaddr); ! 2447: uint32 outdata = ~srcdata; ! 2448: ! 2449: storelong(srcaddr, outdata); ! 2450: PC+= 4; ! 2451: } ! 2452: ! 2453: void cpu_op_626b(t_ipc *ipc) /* NOT */ { ! 2454: /* mask fff8, bits 46a8, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2455: int srcreg = (ipc->opcode >> 0) & 7; ! 2456: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 2457: uint32 srcdata = fetchlong(srcaddr); ! 2458: uint32 outdata = ~srcdata; ! 2459: ! 2460: storelong(srcaddr, outdata); ! 2461: ! 2462: VFLAG = 0; ! 2463: CFLAG = 0; ! 2464: NFLAG = ((sint32)outdata) < 0; ! 2465: ZFLAG = !outdata; ! 2466: PC+= 4; ! 2467: } ! 2468: ! 2469: void cpu_op_627a(t_ipc *ipc) /* NOT */ { ! 2470: /* mask fff8, bits 46b0, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2471: int srcreg = (ipc->opcode >> 0) & 7; ! 2472: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 2473: uint32 srcdata = fetchlong(srcaddr); ! 2474: uint32 outdata = ~srcdata; ! 2475: ! 2476: storelong(srcaddr, outdata); ! 2477: PC+= 4; ! 2478: } ! 2479: ! 2480: void cpu_op_627b(t_ipc *ipc) /* NOT */ { ! 2481: /* mask fff8, bits 46b0, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2482: int srcreg = (ipc->opcode >> 0) & 7; ! 2483: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 2484: uint32 srcdata = fetchlong(srcaddr); ! 2485: uint32 outdata = ~srcdata; ! 2486: ! 2487: storelong(srcaddr, outdata); ! 2488: ! 2489: VFLAG = 0; ! 2490: CFLAG = 0; ! 2491: NFLAG = ((sint32)outdata) < 0; ! 2492: ZFLAG = !outdata; ! 2493: PC+= 4; ! 2494: } ! 2495: ! 2496: void cpu_op_628a(t_ipc *ipc) /* NOT */ { ! 2497: /* mask ffff, bits 46b8, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2498: uint32 srcaddr = ipc->src; ! 2499: uint32 srcdata = fetchlong(srcaddr); ! 2500: uint32 outdata = ~srcdata; ! 2501: ! 2502: storelong(srcaddr, outdata); ! 2503: PC+= 4; ! 2504: } ! 2505: ! 2506: void cpu_op_628b(t_ipc *ipc) /* NOT */ { ! 2507: /* mask ffff, bits 46b8, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2508: uint32 srcaddr = ipc->src; ! 2509: uint32 srcdata = fetchlong(srcaddr); ! 2510: uint32 outdata = ~srcdata; ! 2511: ! 2512: storelong(srcaddr, outdata); ! 2513: ! 2514: VFLAG = 0; ! 2515: CFLAG = 0; ! 2516: NFLAG = ((sint32)outdata) < 0; ! 2517: ZFLAG = !outdata; ! 2518: PC+= 4; ! 2519: } ! 2520: ! 2521: void cpu_op_629a(t_ipc *ipc) /* NOT */ { ! 2522: /* mask ffff, bits 46b9, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2523: uint32 srcaddr = ipc->src; ! 2524: uint32 srcdata = fetchlong(srcaddr); ! 2525: uint32 outdata = ~srcdata; ! 2526: ! 2527: storelong(srcaddr, outdata); ! 2528: PC+= 6; ! 2529: } ! 2530: ! 2531: void cpu_op_629b(t_ipc *ipc) /* NOT */ { ! 2532: /* mask ffff, bits 46b9, mnemonic 34, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2533: uint32 srcaddr = ipc->src; ! 2534: uint32 srcdata = fetchlong(srcaddr); ! 2535: uint32 outdata = ~srcdata; ! 2536: ! 2537: storelong(srcaddr, outdata); ! 2538: ! 2539: VFLAG = 0; ! 2540: CFLAG = 0; ! 2541: NFLAG = ((sint32)outdata) < 0; ! 2542: ZFLAG = !outdata; ! 2543: PC+= 6; ! 2544: } ! 2545: ! 2546: void cpu_op_630a(t_ipc *ipc) /* MOVEFSR */ { ! 2547: /* mask fff8, bits 40c0, mnemonic 25, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2548: int srcreg = (ipc->opcode >> 0) & 7; ! 2549: uint16 outdata; ! 2550: ! 2551: outdata = SR; ! 2552: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xffff) | outdata; ! 2553: PC+= 2; ! 2554: } ! 2555: ! 2556: void cpu_op_631a(t_ipc *ipc) /* MOVEFSR */ { ! 2557: /* mask fff8, bits 40d0, mnemonic 25, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2558: int srcreg = (ipc->opcode >> 0) & 7; ! 2559: uint32 srcaddr = ADDRREG(srcreg); ! 2560: uint16 outdata; ! 2561: ! 2562: outdata = SR; ! 2563: storeword(srcaddr, outdata); ! 2564: PC+= 2; ! 2565: } ! 2566: ! 2567: void cpu_op_632a(t_ipc *ipc) /* MOVEFSR */ { ! 2568: /* mask fff8, bits 40d8, mnemonic 25, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2569: int srcreg = (ipc->opcode >> 0) & 7; ! 2570: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 2571: uint16 outdata; ! 2572: ! 2573: outdata = SR; ! 2574: storeword(srcaddr, outdata); ! 2575: PC+= 2; ! 2576: } ! 2577: ! 2578: void cpu_op_633a(t_ipc *ipc) /* MOVEFSR */ { ! 2579: /* mask fff8, bits 40e0, mnemonic 25, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2580: int srcreg = (ipc->opcode >> 0) & 7; ! 2581: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 2582: uint16 outdata; ! 2583: ! 2584: outdata = SR; ! 2585: storeword(srcaddr, outdata); ! 2586: PC+= 2; ! 2587: } ! 2588: ! 2589: void cpu_op_634a(t_ipc *ipc) /* MOVEFSR */ { ! 2590: /* mask fff8, bits 40e8, mnemonic 25, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2591: int srcreg = (ipc->opcode >> 0) & 7; ! 2592: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 2593: uint16 outdata; ! 2594: ! 2595: outdata = SR; ! 2596: storeword(srcaddr, outdata); ! 2597: PC+= 4; ! 2598: } ! 2599: ! 2600: void cpu_op_635a(t_ipc *ipc) /* MOVEFSR */ { ! 2601: /* mask fff8, bits 40f0, mnemonic 25, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2602: int srcreg = (ipc->opcode >> 0) & 7; ! 2603: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 2604: uint16 outdata; ! 2605: ! 2606: outdata = SR; ! 2607: storeword(srcaddr, outdata); ! 2608: PC+= 4; ! 2609: } ! 2610: ! 2611: void cpu_op_636a(t_ipc *ipc) /* MOVEFSR */ { ! 2612: /* mask ffff, bits 40f8, mnemonic 25, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2613: uint32 srcaddr = ipc->src; ! 2614: uint16 outdata; ! 2615: ! 2616: outdata = SR; ! 2617: storeword(srcaddr, outdata); ! 2618: PC+= 4; ! 2619: } ! 2620: ! 2621: void cpu_op_637a(t_ipc *ipc) /* MOVEFSR */ { ! 2622: /* mask ffff, bits 40f9, mnemonic 25, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2623: uint32 srcaddr = ipc->src; ! 2624: uint16 outdata; ! 2625: ! 2626: outdata = SR; ! 2627: storeword(srcaddr, outdata); ! 2628: PC+= 6; ! 2629: } ! 2630: ! 2631: void cpu_op_638a(t_ipc *ipc) /* MOVETSR */ { ! 2632: /* mask fff8, bits 44c0, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2633: int srcreg = (ipc->opcode >> 0) & 7; ! 2634: uint8 srcdata = DATAREG(srcreg); ! 2635: unsigned int sr = reg68k_sr.sr_struct.s; ! 2636: ! 2637: SR = (SR & ~0xFF) | srcdata; ! 2638: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2639: /* mode change, swap SP and A7 */ ! 2640: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2641: } ! 2642: PC+= 2; ! 2643: } ! 2644: ! 2645: void cpu_op_638b(t_ipc *ipc) /* MOVETSR */ { ! 2646: /* mask fff8, bits 44c0, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2647: int srcreg = (ipc->opcode >> 0) & 7; ! 2648: uint8 srcdata = DATAREG(srcreg); ! 2649: unsigned int sr = reg68k_sr.sr_struct.s; ! 2650: ! 2651: SR = (SR & ~0xFF) | srcdata; ! 2652: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2653: /* mode change, swap SP and A7 */ ! 2654: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2655: } ! 2656: PC+= 2; ! 2657: } ! 2658: ! 2659: void cpu_op_639a(t_ipc *ipc) /* MOVETSR */ { ! 2660: /* mask fff8, bits 44d0, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2661: int srcreg = (ipc->opcode >> 0) & 7; ! 2662: uint32 srcaddr = ADDRREG(srcreg); ! 2663: uint8 srcdata = fetchbyte(srcaddr); ! 2664: unsigned int sr = reg68k_sr.sr_struct.s; ! 2665: ! 2666: SR = (SR & ~0xFF) | srcdata; ! 2667: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2668: /* mode change, swap SP and A7 */ ! 2669: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2670: } ! 2671: PC+= 2; ! 2672: } ! 2673: ! 2674: void cpu_op_639b(t_ipc *ipc) /* MOVETSR */ { ! 2675: /* mask fff8, bits 44d0, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2676: int srcreg = (ipc->opcode >> 0) & 7; ! 2677: uint32 srcaddr = ADDRREG(srcreg); ! 2678: uint8 srcdata = fetchbyte(srcaddr); ! 2679: unsigned int sr = reg68k_sr.sr_struct.s; ! 2680: ! 2681: SR = (SR & ~0xFF) | srcdata; ! 2682: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2683: /* mode change, swap SP and A7 */ ! 2684: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2685: } ! 2686: PC+= 2; ! 2687: } ! 2688: ! 2689: void cpu_op_640a(t_ipc *ipc) /* MOVETSR */ { ! 2690: /* mask fff8, bits 44d8, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2691: int srcreg = (ipc->opcode >> 0) & 7; ! 2692: uint32 srcaddr = ADDRREG(srcreg); ! 2693: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 2694: uint8 srcdata = fetchbyte(srcaddr); ! 2695: unsigned int sr = reg68k_sr.sr_struct.s; ! 2696: ! 2697: SR = (SR & ~0xFF) | srcdata; ! 2698: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2699: /* mode change, swap SP and A7 */ ! 2700: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2701: } ! 2702: PC+= 2; ! 2703: } ! 2704: ! 2705: void cpu_op_640b(t_ipc *ipc) /* MOVETSR */ { ! 2706: /* mask fff8, bits 44d8, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2707: int srcreg = (ipc->opcode >> 0) & 7; ! 2708: uint32 srcaddr = ADDRREG(srcreg); ! 2709: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 2710: uint8 srcdata = fetchbyte(srcaddr); ! 2711: unsigned int sr = reg68k_sr.sr_struct.s; ! 2712: ! 2713: SR = (SR & ~0xFF) | srcdata; ! 2714: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2715: /* mode change, swap SP and A7 */ ! 2716: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2717: } ! 2718: PC+= 2; ! 2719: } ! 2720: ! 2721: void cpu_op_641a(t_ipc *ipc) /* MOVETSR */ { ! 2722: /* mask fff8, bits 44e0, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2723: int srcreg = (ipc->opcode >> 0) & 7; ! 2724: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 2725: uint8 srcdata = fetchbyte(srcaddr); ! 2726: unsigned int sr = reg68k_sr.sr_struct.s; ! 2727: ! 2728: SR = (SR & ~0xFF) | srcdata; ! 2729: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2730: /* mode change, swap SP and A7 */ ! 2731: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2732: } ! 2733: PC+= 2; ! 2734: } ! 2735: ! 2736: void cpu_op_641b(t_ipc *ipc) /* MOVETSR */ { ! 2737: /* mask fff8, bits 44e0, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2738: int srcreg = (ipc->opcode >> 0) & 7; ! 2739: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 2740: uint8 srcdata = fetchbyte(srcaddr); ! 2741: unsigned int sr = reg68k_sr.sr_struct.s; ! 2742: ! 2743: SR = (SR & ~0xFF) | srcdata; ! 2744: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2745: /* mode change, swap SP and A7 */ ! 2746: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2747: } ! 2748: PC+= 2; ! 2749: } ! 2750: ! 2751: void cpu_op_642a(t_ipc *ipc) /* MOVETSR */ { ! 2752: /* mask fff8, bits 44e8, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2753: int srcreg = (ipc->opcode >> 0) & 7; ! 2754: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 2755: uint8 srcdata = fetchbyte(srcaddr); ! 2756: unsigned int sr = reg68k_sr.sr_struct.s; ! 2757: ! 2758: SR = (SR & ~0xFF) | srcdata; ! 2759: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2760: /* mode change, swap SP and A7 */ ! 2761: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2762: } ! 2763: PC+= 4; ! 2764: } ! 2765: ! 2766: void cpu_op_642b(t_ipc *ipc) /* MOVETSR */ { ! 2767: /* mask fff8, bits 44e8, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2768: int srcreg = (ipc->opcode >> 0) & 7; ! 2769: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 2770: uint8 srcdata = fetchbyte(srcaddr); ! 2771: unsigned int sr = reg68k_sr.sr_struct.s; ! 2772: ! 2773: SR = (SR & ~0xFF) | srcdata; ! 2774: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2775: /* mode change, swap SP and A7 */ ! 2776: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2777: } ! 2778: PC+= 4; ! 2779: } ! 2780: ! 2781: void cpu_op_643a(t_ipc *ipc) /* MOVETSR */ { ! 2782: /* mask fff8, bits 44f0, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2783: int srcreg = (ipc->opcode >> 0) & 7; ! 2784: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 2785: uint8 srcdata = fetchbyte(srcaddr); ! 2786: unsigned int sr = reg68k_sr.sr_struct.s; ! 2787: ! 2788: SR = (SR & ~0xFF) | srcdata; ! 2789: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2790: /* mode change, swap SP and A7 */ ! 2791: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2792: } ! 2793: PC+= 4; ! 2794: } ! 2795: ! 2796: void cpu_op_643b(t_ipc *ipc) /* MOVETSR */ { ! 2797: /* mask fff8, bits 44f0, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2798: int srcreg = (ipc->opcode >> 0) & 7; ! 2799: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 2800: uint8 srcdata = fetchbyte(srcaddr); ! 2801: unsigned int sr = reg68k_sr.sr_struct.s; ! 2802: ! 2803: SR = (SR & ~0xFF) | srcdata; ! 2804: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2805: /* mode change, swap SP and A7 */ ! 2806: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2807: } ! 2808: PC+= 4; ! 2809: } ! 2810: ! 2811: void cpu_op_644a(t_ipc *ipc) /* MOVETSR */ { ! 2812: /* mask ffff, bits 44f8, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2813: uint32 srcaddr = ipc->src; ! 2814: uint8 srcdata = fetchbyte(srcaddr); ! 2815: unsigned int sr = reg68k_sr.sr_struct.s; ! 2816: ! 2817: SR = (SR & ~0xFF) | srcdata; ! 2818: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2819: /* mode change, swap SP and A7 */ ! 2820: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2821: } ! 2822: PC+= 4; ! 2823: } ! 2824: ! 2825: void cpu_op_644b(t_ipc *ipc) /* MOVETSR */ { ! 2826: /* mask ffff, bits 44f8, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2827: uint32 srcaddr = ipc->src; ! 2828: uint8 srcdata = fetchbyte(srcaddr); ! 2829: unsigned int sr = reg68k_sr.sr_struct.s; ! 2830: ! 2831: SR = (SR & ~0xFF) | srcdata; ! 2832: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2833: /* mode change, swap SP and A7 */ ! 2834: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2835: } ! 2836: PC+= 4; ! 2837: } ! 2838: ! 2839: void cpu_op_645a(t_ipc *ipc) /* MOVETSR */ { ! 2840: /* mask ffff, bits 44f9, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2841: uint32 srcaddr = ipc->src; ! 2842: uint8 srcdata = fetchbyte(srcaddr); ! 2843: unsigned int sr = reg68k_sr.sr_struct.s; ! 2844: ! 2845: SR = (SR & ~0xFF) | srcdata; ! 2846: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2847: /* mode change, swap SP and A7 */ ! 2848: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2849: } ! 2850: PC+= 6; ! 2851: } ! 2852: ! 2853: void cpu_op_645b(t_ipc *ipc) /* MOVETSR */ { ! 2854: /* mask ffff, bits 44f9, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2855: uint32 srcaddr = ipc->src; ! 2856: uint8 srcdata = fetchbyte(srcaddr); ! 2857: unsigned int sr = reg68k_sr.sr_struct.s; ! 2858: ! 2859: SR = (SR & ~0xFF) | srcdata; ! 2860: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2861: /* mode change, swap SP and A7 */ ! 2862: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2863: } ! 2864: PC+= 6; ! 2865: } ! 2866: ! 2867: void cpu_op_646a(t_ipc *ipc) /* MOVETSR */ { ! 2868: /* mask ffff, bits 44fa, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 9, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2869: uint32 srcaddr = ipc->src; ! 2870: uint8 srcdata = fetchbyte(srcaddr); ! 2871: unsigned int sr = reg68k_sr.sr_struct.s; ! 2872: ! 2873: SR = (SR & ~0xFF) | srcdata; ! 2874: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2875: /* mode change, swap SP and A7 */ ! 2876: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2877: } ! 2878: PC+= 4; ! 2879: } ! 2880: ! 2881: void cpu_op_646b(t_ipc *ipc) /* MOVETSR */ { ! 2882: /* mask ffff, bits 44fa, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 9, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2883: uint32 srcaddr = ipc->src; ! 2884: uint8 srcdata = fetchbyte(srcaddr); ! 2885: unsigned int sr = reg68k_sr.sr_struct.s; ! 2886: ! 2887: SR = (SR & ~0xFF) | srcdata; ! 2888: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2889: /* mode change, swap SP and A7 */ ! 2890: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2891: } ! 2892: PC+= 4; ! 2893: } ! 2894: ! 2895: void cpu_op_647a(t_ipc *ipc) /* MOVETSR */ { ! 2896: /* mask ffff, bits 44fb, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 10, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2897: uint32 srcaddr = idxval_src(ipc); ! 2898: uint8 srcdata = fetchbyte(srcaddr); ! 2899: unsigned int sr = reg68k_sr.sr_struct.s; ! 2900: ! 2901: SR = (SR & ~0xFF) | srcdata; ! 2902: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2903: /* mode change, swap SP and A7 */ ! 2904: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2905: } ! 2906: PC+= 4; ! 2907: } ! 2908: ! 2909: void cpu_op_647b(t_ipc *ipc) /* MOVETSR */ { ! 2910: /* mask ffff, bits 44fb, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 10, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2911: uint32 srcaddr = idxval_src(ipc); ! 2912: uint8 srcdata = fetchbyte(srcaddr); ! 2913: unsigned int sr = reg68k_sr.sr_struct.s; ! 2914: ! 2915: SR = (SR & ~0xFF) | srcdata; ! 2916: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2917: /* mode change, swap SP and A7 */ ! 2918: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2919: } ! 2920: PC+= 4; ! 2921: } ! 2922: ! 2923: void cpu_op_648a(t_ipc *ipc) /* MOVETSR */ { ! 2924: /* mask ffff, bits 44fc, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 11, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2925: uint8 srcdata = ipc->src; ! 2926: unsigned int sr = reg68k_sr.sr_struct.s; ! 2927: ! 2928: SR = (SR & ~0xFF) | srcdata; ! 2929: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2930: /* mode change, swap SP and A7 */ ! 2931: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2932: } ! 2933: PC+= 4; ! 2934: } ! 2935: ! 2936: void cpu_op_648b(t_ipc *ipc) /* MOVETSR */ { ! 2937: /* mask ffff, bits 44fc, mnemonic 26, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 11, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2938: uint8 srcdata = ipc->src; ! 2939: unsigned int sr = reg68k_sr.sr_struct.s; ! 2940: ! 2941: SR = (SR & ~0xFF) | srcdata; ! 2942: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2943: /* mode change, swap SP and A7 */ ! 2944: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2945: } ! 2946: PC+= 4; ! 2947: } ! 2948: ! 2949: void cpu_op_649a(t_ipc *ipc) /* MOVETSR */ { ! 2950: /* mask fff8, bits 46c0, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2951: int srcreg = (ipc->opcode >> 0) & 7; ! 2952: uint16 srcdata = DATAREG(srcreg); ! 2953: unsigned int sr = reg68k_sr.sr_struct.s; ! 2954: ! 2955: if (!SFLAG) ! 2956: reg68k_vector(V_PRIVILEGE, PC+2); ! 2957: ! 2958: SR = srcdata; ! 2959: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2960: /* mode change, swap SP and A7 */ ! 2961: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2962: } ! 2963: PC+= 2; ! 2964: } ! 2965: ! 2966: void cpu_op_649b(t_ipc *ipc) /* MOVETSR */ { ! 2967: /* mask fff8, bits 46c0, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2968: int srcreg = (ipc->opcode >> 0) & 7; ! 2969: uint16 srcdata = DATAREG(srcreg); ! 2970: unsigned int sr = reg68k_sr.sr_struct.s; ! 2971: ! 2972: if (!SFLAG) ! 2973: reg68k_vector(V_PRIVILEGE, PC+2); ! 2974: ! 2975: SR = srcdata; ! 2976: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2977: /* mode change, swap SP and A7 */ ! 2978: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2979: } ! 2980: PC+= 2; ! 2981: } ! 2982: ! 2983: void cpu_op_650a(t_ipc *ipc) /* MOVETSR */ { ! 2984: /* mask fff8, bits 46d0, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2985: int srcreg = (ipc->opcode >> 0) & 7; ! 2986: uint32 srcaddr = ADDRREG(srcreg); ! 2987: uint16 srcdata = fetchword(srcaddr); ! 2988: unsigned int sr = reg68k_sr.sr_struct.s; ! 2989: ! 2990: if (!SFLAG) ! 2991: reg68k_vector(V_PRIVILEGE, PC+2); ! 2992: ! 2993: SR = srcdata; ! 2994: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 2995: /* mode change, swap SP and A7 */ ! 2996: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 2997: } ! 2998: PC+= 2; ! 2999: } ! 3000: ! 3001: void cpu_op_650b(t_ipc *ipc) /* MOVETSR */ { ! 3002: /* mask fff8, bits 46d0, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3003: int srcreg = (ipc->opcode >> 0) & 7; ! 3004: uint32 srcaddr = ADDRREG(srcreg); ! 3005: uint16 srcdata = fetchword(srcaddr); ! 3006: unsigned int sr = reg68k_sr.sr_struct.s; ! 3007: ! 3008: if (!SFLAG) ! 3009: reg68k_vector(V_PRIVILEGE, PC+2); ! 3010: ! 3011: SR = srcdata; ! 3012: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3013: /* mode change, swap SP and A7 */ ! 3014: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3015: } ! 3016: PC+= 2; ! 3017: } ! 3018: ! 3019: void cpu_op_651a(t_ipc *ipc) /* MOVETSR */ { ! 3020: /* mask fff8, bits 46d8, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3021: int srcreg = (ipc->opcode >> 0) & 7; ! 3022: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 3023: uint16 srcdata = fetchword(srcaddr); ! 3024: unsigned int sr = reg68k_sr.sr_struct.s; ! 3025: ! 3026: if (!SFLAG) ! 3027: reg68k_vector(V_PRIVILEGE, PC+2); ! 3028: ! 3029: SR = srcdata; ! 3030: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3031: /* mode change, swap SP and A7 */ ! 3032: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3033: } ! 3034: PC+= 2; ! 3035: } ! 3036: ! 3037: void cpu_op_651b(t_ipc *ipc) /* MOVETSR */ { ! 3038: /* mask fff8, bits 46d8, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3039: int srcreg = (ipc->opcode >> 0) & 7; ! 3040: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 3041: uint16 srcdata = fetchword(srcaddr); ! 3042: unsigned int sr = reg68k_sr.sr_struct.s; ! 3043: ! 3044: if (!SFLAG) ! 3045: reg68k_vector(V_PRIVILEGE, PC+2); ! 3046: ! 3047: SR = srcdata; ! 3048: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3049: /* mode change, swap SP and A7 */ ! 3050: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3051: } ! 3052: PC+= 2; ! 3053: } ! 3054: ! 3055: void cpu_op_652a(t_ipc *ipc) /* MOVETSR */ { ! 3056: /* mask fff8, bits 46e0, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3057: int srcreg = (ipc->opcode >> 0) & 7; ! 3058: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 3059: uint16 srcdata = fetchword(srcaddr); ! 3060: unsigned int sr = reg68k_sr.sr_struct.s; ! 3061: ! 3062: if (!SFLAG) ! 3063: reg68k_vector(V_PRIVILEGE, PC+2); ! 3064: ! 3065: SR = srcdata; ! 3066: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3067: /* mode change, swap SP and A7 */ ! 3068: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3069: } ! 3070: PC+= 2; ! 3071: } ! 3072: ! 3073: void cpu_op_652b(t_ipc *ipc) /* MOVETSR */ { ! 3074: /* mask fff8, bits 46e0, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3075: int srcreg = (ipc->opcode >> 0) & 7; ! 3076: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 3077: uint16 srcdata = fetchword(srcaddr); ! 3078: unsigned int sr = reg68k_sr.sr_struct.s; ! 3079: ! 3080: if (!SFLAG) ! 3081: reg68k_vector(V_PRIVILEGE, PC+2); ! 3082: ! 3083: SR = srcdata; ! 3084: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3085: /* mode change, swap SP and A7 */ ! 3086: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3087: } ! 3088: PC+= 2; ! 3089: } ! 3090: ! 3091: void cpu_op_653a(t_ipc *ipc) /* MOVETSR */ { ! 3092: /* mask fff8, bits 46e8, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3093: int srcreg = (ipc->opcode >> 0) & 7; ! 3094: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3095: uint16 srcdata = fetchword(srcaddr); ! 3096: unsigned int sr = reg68k_sr.sr_struct.s; ! 3097: ! 3098: if (!SFLAG) ! 3099: reg68k_vector(V_PRIVILEGE, PC+4); ! 3100: ! 3101: SR = srcdata; ! 3102: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3103: /* mode change, swap SP and A7 */ ! 3104: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3105: } ! 3106: PC+= 4; ! 3107: } ! 3108: ! 3109: void cpu_op_653b(t_ipc *ipc) /* MOVETSR */ { ! 3110: /* mask fff8, bits 46e8, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3111: int srcreg = (ipc->opcode >> 0) & 7; ! 3112: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3113: uint16 srcdata = fetchword(srcaddr); ! 3114: unsigned int sr = reg68k_sr.sr_struct.s; ! 3115: ! 3116: if (!SFLAG) ! 3117: reg68k_vector(V_PRIVILEGE, PC+4); ! 3118: ! 3119: SR = srcdata; ! 3120: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3121: /* mode change, swap SP and A7 */ ! 3122: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3123: } ! 3124: PC+= 4; ! 3125: } ! 3126: ! 3127: void cpu_op_654a(t_ipc *ipc) /* MOVETSR */ { ! 3128: /* mask fff8, bits 46f0, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3129: int srcreg = (ipc->opcode >> 0) & 7; ! 3130: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3131: uint16 srcdata = fetchword(srcaddr); ! 3132: unsigned int sr = reg68k_sr.sr_struct.s; ! 3133: ! 3134: if (!SFLAG) ! 3135: reg68k_vector(V_PRIVILEGE, PC+4); ! 3136: ! 3137: SR = srcdata; ! 3138: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3139: /* mode change, swap SP and A7 */ ! 3140: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3141: } ! 3142: PC+= 4; ! 3143: } ! 3144: ! 3145: void cpu_op_654b(t_ipc *ipc) /* MOVETSR */ { ! 3146: /* mask fff8, bits 46f0, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3147: int srcreg = (ipc->opcode >> 0) & 7; ! 3148: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3149: uint16 srcdata = fetchword(srcaddr); ! 3150: unsigned int sr = reg68k_sr.sr_struct.s; ! 3151: ! 3152: if (!SFLAG) ! 3153: reg68k_vector(V_PRIVILEGE, PC+4); ! 3154: ! 3155: SR = srcdata; ! 3156: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3157: /* mode change, swap SP and A7 */ ! 3158: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3159: } ! 3160: PC+= 4; ! 3161: } ! 3162: ! 3163: void cpu_op_655a(t_ipc *ipc) /* MOVETSR */ { ! 3164: /* mask ffff, bits 46f8, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3165: uint32 srcaddr = ipc->src; ! 3166: uint16 srcdata = fetchword(srcaddr); ! 3167: unsigned int sr = reg68k_sr.sr_struct.s; ! 3168: ! 3169: if (!SFLAG) ! 3170: reg68k_vector(V_PRIVILEGE, PC+4); ! 3171: ! 3172: SR = srcdata; ! 3173: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3174: /* mode change, swap SP and A7 */ ! 3175: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3176: } ! 3177: PC+= 4; ! 3178: } ! 3179: ! 3180: void cpu_op_655b(t_ipc *ipc) /* MOVETSR */ { ! 3181: /* mask ffff, bits 46f8, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3182: uint32 srcaddr = ipc->src; ! 3183: uint16 srcdata = fetchword(srcaddr); ! 3184: unsigned int sr = reg68k_sr.sr_struct.s; ! 3185: ! 3186: if (!SFLAG) ! 3187: reg68k_vector(V_PRIVILEGE, PC+4); ! 3188: ! 3189: SR = srcdata; ! 3190: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3191: /* mode change, swap SP and A7 */ ! 3192: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3193: } ! 3194: PC+= 4; ! 3195: } ! 3196: ! 3197: void cpu_op_656a(t_ipc *ipc) /* MOVETSR */ { ! 3198: /* mask ffff, bits 46f9, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3199: uint32 srcaddr = ipc->src; ! 3200: uint16 srcdata = fetchword(srcaddr); ! 3201: unsigned int sr = reg68k_sr.sr_struct.s; ! 3202: ! 3203: if (!SFLAG) ! 3204: reg68k_vector(V_PRIVILEGE, PC+6); ! 3205: ! 3206: SR = srcdata; ! 3207: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3208: /* mode change, swap SP and A7 */ ! 3209: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3210: } ! 3211: PC+= 6; ! 3212: } ! 3213: ! 3214: void cpu_op_656b(t_ipc *ipc) /* MOVETSR */ { ! 3215: /* mask ffff, bits 46f9, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3216: uint32 srcaddr = ipc->src; ! 3217: uint16 srcdata = fetchword(srcaddr); ! 3218: unsigned int sr = reg68k_sr.sr_struct.s; ! 3219: ! 3220: if (!SFLAG) ! 3221: reg68k_vector(V_PRIVILEGE, PC+6); ! 3222: ! 3223: SR = srcdata; ! 3224: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3225: /* mode change, swap SP and A7 */ ! 3226: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3227: } ! 3228: PC+= 6; ! 3229: } ! 3230: ! 3231: void cpu_op_657a(t_ipc *ipc) /* MOVETSR */ { ! 3232: /* mask ffff, bits 46fa, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 9, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3233: uint32 srcaddr = ipc->src; ! 3234: uint16 srcdata = fetchword(srcaddr); ! 3235: unsigned int sr = reg68k_sr.sr_struct.s; ! 3236: ! 3237: if (!SFLAG) ! 3238: reg68k_vector(V_PRIVILEGE, PC+4); ! 3239: ! 3240: SR = srcdata; ! 3241: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3242: /* mode change, swap SP and A7 */ ! 3243: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3244: } ! 3245: PC+= 4; ! 3246: } ! 3247: ! 3248: void cpu_op_657b(t_ipc *ipc) /* MOVETSR */ { ! 3249: /* mask ffff, bits 46fa, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 9, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3250: uint32 srcaddr = ipc->src; ! 3251: uint16 srcdata = fetchword(srcaddr); ! 3252: unsigned int sr = reg68k_sr.sr_struct.s; ! 3253: ! 3254: if (!SFLAG) ! 3255: reg68k_vector(V_PRIVILEGE, PC+4); ! 3256: ! 3257: SR = srcdata; ! 3258: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3259: /* mode change, swap SP and A7 */ ! 3260: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3261: } ! 3262: PC+= 4; ! 3263: } ! 3264: ! 3265: void cpu_op_658a(t_ipc *ipc) /* MOVETSR */ { ! 3266: /* mask ffff, bits 46fb, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 10, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3267: uint32 srcaddr = idxval_src(ipc); ! 3268: uint16 srcdata = fetchword(srcaddr); ! 3269: unsigned int sr = reg68k_sr.sr_struct.s; ! 3270: ! 3271: if (!SFLAG) ! 3272: reg68k_vector(V_PRIVILEGE, PC+4); ! 3273: ! 3274: SR = srcdata; ! 3275: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3276: /* mode change, swap SP and A7 */ ! 3277: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3278: } ! 3279: PC+= 4; ! 3280: } ! 3281: ! 3282: void cpu_op_658b(t_ipc *ipc) /* MOVETSR */ { ! 3283: /* mask ffff, bits 46fb, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 10, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3284: uint32 srcaddr = idxval_src(ipc); ! 3285: uint16 srcdata = fetchword(srcaddr); ! 3286: unsigned int sr = reg68k_sr.sr_struct.s; ! 3287: ! 3288: if (!SFLAG) ! 3289: reg68k_vector(V_PRIVILEGE, PC+4); ! 3290: ! 3291: SR = srcdata; ! 3292: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3293: /* mode change, swap SP and A7 */ ! 3294: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3295: } ! 3296: PC+= 4; ! 3297: } ! 3298: ! 3299: void cpu_op_659a(t_ipc *ipc) /* MOVETSR */ { ! 3300: /* mask ffff, bits 46fc, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 12, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3301: uint16 srcdata = ipc->src; ! 3302: unsigned int sr = reg68k_sr.sr_struct.s; ! 3303: ! 3304: if (!SFLAG) ! 3305: reg68k_vector(V_PRIVILEGE, PC+4); ! 3306: ! 3307: SR = srcdata; ! 3308: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3309: /* mode change, swap SP and A7 */ ! 3310: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3311: } ! 3312: PC+= 4; ! 3313: } ! 3314: ! 3315: void cpu_op_659b(t_ipc *ipc) /* MOVETSR */ { ! 3316: /* mask ffff, bits 46fc, mnemonic 26, priv -1, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 12, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3317: uint16 srcdata = ipc->src; ! 3318: unsigned int sr = reg68k_sr.sr_struct.s; ! 3319: ! 3320: if (!SFLAG) ! 3321: reg68k_vector(V_PRIVILEGE, PC+4); ! 3322: ! 3323: SR = srcdata; ! 3324: if (sr != (uint8)reg68k_sr.sr_struct.s) { ! 3325: /* mode change, swap SP and A7 */ ! 3326: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 3327: } ! 3328: PC+= 4; ! 3329: } ! 3330: ! 3331: void cpu_op_660a(t_ipc *ipc) /* NBCD */ { ! 3332: /* mask fff8, bits 4800, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3333: int srcreg = (ipc->opcode >> 0) & 7; ! 3334: uint8 srcdata = DATAREG(srcreg); ! 3335: uint8 outdata; ! 3336: ! 3337: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3338: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3339: ! 3340: if ((sint8)outdata_low < 0) { ! 3341: outdata_low+=10; outdata_high--; ! 3342: } ! 3343: if ((sint8)outdata_high < 0) { ! 3344: outdata_high+=10; ! 3345: } else { ! 3346: } ! 3347: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3348: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 3349: PC+= 2; ! 3350: } ! 3351: ! 3352: void cpu_op_660b(t_ipc *ipc) /* NBCD */ { ! 3353: /* mask fff8, bits 4800, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3354: int srcreg = (ipc->opcode >> 0) & 7; ! 3355: uint8 srcdata = DATAREG(srcreg); ! 3356: uint8 outdata; ! 3357: ! 3358: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3359: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3360: ! 3361: if ((sint8)outdata_low < 0) { ! 3362: outdata_low+=10; outdata_high--; ! 3363: } ! 3364: if ((sint8)outdata_high < 0) { ! 3365: outdata_high+=10; ! 3366: CFLAG = 1; ! 3367: XFLAG = 1; ! 3368: } else { ! 3369: CFLAG = 0; ! 3370: XFLAG = 0; ! 3371: } ! 3372: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3373: if (outdata) ZFLAG = 0; ! 3374: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 3375: PC+= 2; ! 3376: } ! 3377: ! 3378: void cpu_op_661a(t_ipc *ipc) /* NBCD */ { ! 3379: /* mask fff8, bits 4810, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3380: int srcreg = (ipc->opcode >> 0) & 7; ! 3381: uint32 srcaddr = ADDRREG(srcreg); ! 3382: uint8 srcdata = fetchbyte(srcaddr); ! 3383: uint8 outdata; ! 3384: ! 3385: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3386: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3387: ! 3388: if ((sint8)outdata_low < 0) { ! 3389: outdata_low+=10; outdata_high--; ! 3390: } ! 3391: if ((sint8)outdata_high < 0) { ! 3392: outdata_high+=10; ! 3393: } else { ! 3394: } ! 3395: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3396: storebyte(srcaddr, outdata); ! 3397: PC+= 2; ! 3398: } ! 3399: ! 3400: void cpu_op_661b(t_ipc *ipc) /* NBCD */ { ! 3401: /* mask fff8, bits 4810, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3402: int srcreg = (ipc->opcode >> 0) & 7; ! 3403: uint32 srcaddr = ADDRREG(srcreg); ! 3404: uint8 srcdata = fetchbyte(srcaddr); ! 3405: uint8 outdata; ! 3406: ! 3407: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3408: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3409: ! 3410: if ((sint8)outdata_low < 0) { ! 3411: outdata_low+=10; outdata_high--; ! 3412: } ! 3413: if ((sint8)outdata_high < 0) { ! 3414: outdata_high+=10; ! 3415: CFLAG = 1; ! 3416: XFLAG = 1; ! 3417: } else { ! 3418: CFLAG = 0; ! 3419: XFLAG = 0; ! 3420: } ! 3421: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3422: if (outdata) ZFLAG = 0; ! 3423: storebyte(srcaddr, outdata); ! 3424: PC+= 2; ! 3425: } ! 3426: ! 3427: void cpu_op_662a(t_ipc *ipc) /* NBCD */ { ! 3428: /* mask fff8, bits 4818, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3429: int srcreg = (ipc->opcode >> 0) & 7; ! 3430: uint32 srcaddr = ADDRREG(srcreg); ! 3431: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3432: uint8 srcdata = fetchbyte(srcaddr); ! 3433: uint8 outdata; ! 3434: ! 3435: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3436: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3437: ! 3438: if ((sint8)outdata_low < 0) { ! 3439: outdata_low+=10; outdata_high--; ! 3440: } ! 3441: if ((sint8)outdata_high < 0) { ! 3442: outdata_high+=10; ! 3443: } else { ! 3444: } ! 3445: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3446: storebyte(srcaddr, outdata); ! 3447: PC+= 2; ! 3448: } ! 3449: ! 3450: void cpu_op_662b(t_ipc *ipc) /* NBCD */ { ! 3451: /* mask fff8, bits 4818, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3452: int srcreg = (ipc->opcode >> 0) & 7; ! 3453: uint32 srcaddr = ADDRREG(srcreg); ! 3454: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3455: uint8 srcdata = fetchbyte(srcaddr); ! 3456: uint8 outdata; ! 3457: ! 3458: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3459: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3460: ! 3461: if ((sint8)outdata_low < 0) { ! 3462: outdata_low+=10; outdata_high--; ! 3463: } ! 3464: if ((sint8)outdata_high < 0) { ! 3465: outdata_high+=10; ! 3466: CFLAG = 1; ! 3467: XFLAG = 1; ! 3468: } else { ! 3469: CFLAG = 0; ! 3470: XFLAG = 0; ! 3471: } ! 3472: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3473: if (outdata) ZFLAG = 0; ! 3474: storebyte(srcaddr, outdata); ! 3475: PC+= 2; ! 3476: } ! 3477: ! 3478: void cpu_op_663a(t_ipc *ipc) /* NBCD */ { ! 3479: /* mask fff8, bits 4820, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3480: int srcreg = (ipc->opcode >> 0) & 7; ! 3481: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3482: uint8 srcdata = fetchbyte(srcaddr); ! 3483: uint8 outdata; ! 3484: ! 3485: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3486: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3487: ! 3488: if ((sint8)outdata_low < 0) { ! 3489: outdata_low+=10; outdata_high--; ! 3490: } ! 3491: if ((sint8)outdata_high < 0) { ! 3492: outdata_high+=10; ! 3493: } else { ! 3494: } ! 3495: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3496: storebyte(srcaddr, outdata); ! 3497: PC+= 2; ! 3498: } ! 3499: ! 3500: void cpu_op_663b(t_ipc *ipc) /* NBCD */ { ! 3501: /* mask fff8, bits 4820, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3502: int srcreg = (ipc->opcode >> 0) & 7; ! 3503: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3504: uint8 srcdata = fetchbyte(srcaddr); ! 3505: uint8 outdata; ! 3506: ! 3507: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3508: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3509: ! 3510: if ((sint8)outdata_low < 0) { ! 3511: outdata_low+=10; outdata_high--; ! 3512: } ! 3513: if ((sint8)outdata_high < 0) { ! 3514: outdata_high+=10; ! 3515: CFLAG = 1; ! 3516: XFLAG = 1; ! 3517: } else { ! 3518: CFLAG = 0; ! 3519: XFLAG = 0; ! 3520: } ! 3521: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3522: if (outdata) ZFLAG = 0; ! 3523: storebyte(srcaddr, outdata); ! 3524: PC+= 2; ! 3525: } ! 3526: ! 3527: void cpu_op_664a(t_ipc *ipc) /* NBCD */ { ! 3528: /* mask fff8, bits 4828, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3529: int srcreg = (ipc->opcode >> 0) & 7; ! 3530: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3531: uint8 srcdata = fetchbyte(srcaddr); ! 3532: uint8 outdata; ! 3533: ! 3534: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3535: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3536: ! 3537: if ((sint8)outdata_low < 0) { ! 3538: outdata_low+=10; outdata_high--; ! 3539: } ! 3540: if ((sint8)outdata_high < 0) { ! 3541: outdata_high+=10; ! 3542: } else { ! 3543: } ! 3544: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3545: storebyte(srcaddr, outdata); ! 3546: PC+= 4; ! 3547: } ! 3548: ! 3549: void cpu_op_664b(t_ipc *ipc) /* NBCD */ { ! 3550: /* mask fff8, bits 4828, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3551: int srcreg = (ipc->opcode >> 0) & 7; ! 3552: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3553: uint8 srcdata = fetchbyte(srcaddr); ! 3554: uint8 outdata; ! 3555: ! 3556: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3557: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3558: ! 3559: if ((sint8)outdata_low < 0) { ! 3560: outdata_low+=10; outdata_high--; ! 3561: } ! 3562: if ((sint8)outdata_high < 0) { ! 3563: outdata_high+=10; ! 3564: CFLAG = 1; ! 3565: XFLAG = 1; ! 3566: } else { ! 3567: CFLAG = 0; ! 3568: XFLAG = 0; ! 3569: } ! 3570: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3571: if (outdata) ZFLAG = 0; ! 3572: storebyte(srcaddr, outdata); ! 3573: PC+= 4; ! 3574: } ! 3575: ! 3576: void cpu_op_665a(t_ipc *ipc) /* NBCD */ { ! 3577: /* mask fff8, bits 4830, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3578: int srcreg = (ipc->opcode >> 0) & 7; ! 3579: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3580: uint8 srcdata = fetchbyte(srcaddr); ! 3581: uint8 outdata; ! 3582: ! 3583: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3584: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3585: ! 3586: if ((sint8)outdata_low < 0) { ! 3587: outdata_low+=10; outdata_high--; ! 3588: } ! 3589: if ((sint8)outdata_high < 0) { ! 3590: outdata_high+=10; ! 3591: } else { ! 3592: } ! 3593: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3594: storebyte(srcaddr, outdata); ! 3595: PC+= 4; ! 3596: } ! 3597: ! 3598: void cpu_op_665b(t_ipc *ipc) /* NBCD */ { ! 3599: /* mask fff8, bits 4830, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3600: int srcreg = (ipc->opcode >> 0) & 7; ! 3601: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3602: uint8 srcdata = fetchbyte(srcaddr); ! 3603: uint8 outdata; ! 3604: ! 3605: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3606: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3607: ! 3608: if ((sint8)outdata_low < 0) { ! 3609: outdata_low+=10; outdata_high--; ! 3610: } ! 3611: if ((sint8)outdata_high < 0) { ! 3612: outdata_high+=10; ! 3613: CFLAG = 1; ! 3614: XFLAG = 1; ! 3615: } else { ! 3616: CFLAG = 0; ! 3617: XFLAG = 0; ! 3618: } ! 3619: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3620: if (outdata) ZFLAG = 0; ! 3621: storebyte(srcaddr, outdata); ! 3622: PC+= 4; ! 3623: } ! 3624: ! 3625: void cpu_op_666a(t_ipc *ipc) /* NBCD */ { ! 3626: /* mask ffff, bits 4838, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3627: uint32 srcaddr = ipc->src; ! 3628: uint8 srcdata = fetchbyte(srcaddr); ! 3629: uint8 outdata; ! 3630: ! 3631: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3632: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3633: ! 3634: if ((sint8)outdata_low < 0) { ! 3635: outdata_low+=10; outdata_high--; ! 3636: } ! 3637: if ((sint8)outdata_high < 0) { ! 3638: outdata_high+=10; ! 3639: } else { ! 3640: } ! 3641: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3642: storebyte(srcaddr, outdata); ! 3643: PC+= 4; ! 3644: } ! 3645: ! 3646: void cpu_op_666b(t_ipc *ipc) /* NBCD */ { ! 3647: /* mask ffff, bits 4838, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3648: uint32 srcaddr = ipc->src; ! 3649: uint8 srcdata = fetchbyte(srcaddr); ! 3650: uint8 outdata; ! 3651: ! 3652: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3653: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3654: ! 3655: if ((sint8)outdata_low < 0) { ! 3656: outdata_low+=10; outdata_high--; ! 3657: } ! 3658: if ((sint8)outdata_high < 0) { ! 3659: outdata_high+=10; ! 3660: CFLAG = 1; ! 3661: XFLAG = 1; ! 3662: } else { ! 3663: CFLAG = 0; ! 3664: XFLAG = 0; ! 3665: } ! 3666: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3667: if (outdata) ZFLAG = 0; ! 3668: storebyte(srcaddr, outdata); ! 3669: PC+= 4; ! 3670: } ! 3671: ! 3672: void cpu_op_667a(t_ipc *ipc) /* NBCD */ { ! 3673: /* mask ffff, bits 4839, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3674: uint32 srcaddr = ipc->src; ! 3675: uint8 srcdata = fetchbyte(srcaddr); ! 3676: uint8 outdata; ! 3677: ! 3678: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3679: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3680: ! 3681: if ((sint8)outdata_low < 0) { ! 3682: outdata_low+=10; outdata_high--; ! 3683: } ! 3684: if ((sint8)outdata_high < 0) { ! 3685: outdata_high+=10; ! 3686: } else { ! 3687: } ! 3688: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3689: storebyte(srcaddr, outdata); ! 3690: PC+= 6; ! 3691: } ! 3692: ! 3693: void cpu_op_667b(t_ipc *ipc) /* NBCD */ { ! 3694: /* mask ffff, bits 4839, mnemonic 37, priv 0, endblk 0, imm_notzero 0, used 1 set -11, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3695: uint32 srcaddr = ipc->src; ! 3696: uint8 srcdata = fetchbyte(srcaddr); ! 3697: uint8 outdata; ! 3698: ! 3699: sint8 outdata_low = 0 - (sint8)(srcdata & 0xF) - XFLAG; ! 3700: sint8 outdata_high = 0 - (sint8)(srcdata>>4); ! 3701: ! 3702: if ((sint8)outdata_low < 0) { ! 3703: outdata_low+=10; outdata_high--; ! 3704: } ! 3705: if ((sint8)outdata_high < 0) { ! 3706: outdata_high+=10; ! 3707: CFLAG = 1; ! 3708: XFLAG = 1; ! 3709: } else { ! 3710: CFLAG = 0; ! 3711: XFLAG = 0; ! 3712: } ! 3713: outdata = (uint8)outdata_low |((uint8)outdata_high << 4); ! 3714: if (outdata) ZFLAG = 0; ! 3715: storebyte(srcaddr, outdata); ! 3716: PC+= 6; ! 3717: } ! 3718: ! 3719: void cpu_op_668a(t_ipc *ipc) /* SWAP */ { ! 3720: /* mask fff8, bits 4840, mnemonic 38, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3721: int srcreg = (ipc->opcode >> 0) & 7; ! 3722: uint32 srcdata = DATAREG(srcreg); ! 3723: uint32 outdata = (srcdata>>16) | (srcdata<<16); ! 3724: ! 3725: DATAREG(srcreg) = outdata; ! 3726: PC+= 2; ! 3727: } ! 3728: ! 3729: void cpu_op_668b(t_ipc *ipc) /* SWAP */ { ! 3730: /* mask fff8, bits 4840, mnemonic 38, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3731: int srcreg = (ipc->opcode >> 0) & 7; ! 3732: uint32 srcdata = DATAREG(srcreg); ! 3733: uint32 outdata = (srcdata>>16) | (srcdata<<16); ! 3734: ! 3735: DATAREG(srcreg) = outdata; ! 3736: ! 3737: VFLAG = 0; ! 3738: CFLAG = 0; ! 3739: NFLAG = ((sint32)outdata) < 0; ! 3740: ZFLAG = !outdata; ! 3741: PC+= 2; ! 3742: } ! 3743: ! 3744: void cpu_op_669a(t_ipc *ipc) /* PEA */ { ! 3745: /* mask fff8, bits 4850, mnemonic 39, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3746: int srcreg = (ipc->opcode >> 0) & 7; ! 3747: uint32 srcaddr = ADDRREG(srcreg); ! 3748: ! 3749: ADDRREG(7)-= 4; ! 3750: storelong(ADDRREG(7), srcaddr); ! 3751: PC+= 2; ! 3752: } ! 3753: ! 3754: void cpu_op_670a(t_ipc *ipc) /* PEA */ { ! 3755: /* mask fff8, bits 4868, mnemonic 39, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3756: int srcreg = (ipc->opcode >> 0) & 7; ! 3757: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3758: ! 3759: ADDRREG(7)-= 4; ! 3760: storelong(ADDRREG(7), srcaddr); ! 3761: PC+= 4; ! 3762: } ! 3763: ! 3764: void cpu_op_671a(t_ipc *ipc) /* PEA */ { ! 3765: /* mask fff8, bits 4870, mnemonic 39, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3766: int srcreg = (ipc->opcode >> 0) & 7; ! 3767: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3768: ! 3769: ADDRREG(7)-= 4; ! 3770: storelong(ADDRREG(7), srcaddr); ! 3771: PC+= 4; ! 3772: } ! 3773: ! 3774: void cpu_op_672a(t_ipc *ipc) /* PEA */ { ! 3775: /* mask ffff, bits 4878, mnemonic 39, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3776: uint32 srcaddr = ipc->src; ! 3777: ! 3778: ADDRREG(7)-= 4; ! 3779: storelong(ADDRREG(7), srcaddr); ! 3780: PC+= 4; ! 3781: } ! 3782: ! 3783: void cpu_op_673a(t_ipc *ipc) /* PEA */ { ! 3784: /* mask ffff, bits 4879, mnemonic 39, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3785: uint32 srcaddr = ipc->src; ! 3786: ! 3787: ADDRREG(7)-= 4; ! 3788: storelong(ADDRREG(7), srcaddr); ! 3789: PC+= 6; ! 3790: } ! 3791: ! 3792: void cpu_op_674a(t_ipc *ipc) /* PEA */ { ! 3793: /* mask ffff, bits 487a, mnemonic 39, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 9, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3794: uint32 srcaddr = ipc->src; ! 3795: ! 3796: ADDRREG(7)-= 4; ! 3797: storelong(ADDRREG(7), srcaddr); ! 3798: PC+= 4; ! 3799: } ! 3800: ! 3801: void cpu_op_675a(t_ipc *ipc) /* PEA */ { ! 3802: /* mask ffff, bits 487b, mnemonic 39, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 10, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3803: uint32 srcaddr = idxval_src(ipc); ! 3804: ! 3805: ADDRREG(7)-= 4; ! 3806: storelong(ADDRREG(7), srcaddr); ! 3807: PC+= 4; ! 3808: } ! 3809: ! 3810: void cpu_op_676a(t_ipc *ipc) /* EXT */ { ! 3811: /* mask fff8, bits 4880, mnemonic 41, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3812: int srcreg = (ipc->opcode >> 0) & 7; ! 3813: uint16 srcdata = DATAREG(srcreg); ! 3814: ! 3815: uint16 outdata = (sint16)(sint8)(srcdata); ! 3816: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xffff) | outdata; ! 3817: PC+= 2; ! 3818: } ! 3819: ! 3820: void cpu_op_676b(t_ipc *ipc) /* EXT */ { ! 3821: /* mask fff8, bits 4880, mnemonic 41, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3822: int srcreg = (ipc->opcode >> 0) & 7; ! 3823: uint16 srcdata = DATAREG(srcreg); ! 3824: ! 3825: uint16 outdata = (sint16)(sint8)(srcdata); ! 3826: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xffff) | outdata; ! 3827: ! 3828: VFLAG = 0; ! 3829: CFLAG = 0; ! 3830: NFLAG = ((sint16)outdata) < 0; ! 3831: ZFLAG = !outdata; ! 3832: PC+= 2; ! 3833: } ! 3834: ! 3835: void cpu_op_677a(t_ipc *ipc) /* MOVEMRM */ { ! 3836: /* mask fff8, bits 4890, mnemonic 27, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 2, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3837: uint16 srcdata = ipc->src; ! 3838: int dstreg = (ipc->opcode >> 0) & 7; ! 3839: uint32 dstaddr = ADDRREG(dstreg); ! 3840: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 3841: uint8 datamask = srcdata & 0xFF; ! 3842: while (datamask) { ! 3843: storeword(dstaddr, DATAREG(movem_bit[datamask])); ! 3844: datamask&= ~(1<<movem_bit[datamask]); ! 3845: dstaddr+= 2; ! 3846: } ! 3847: while (addrmask) { ! 3848: storeword(dstaddr, ADDRREG(movem_bit[addrmask])); ! 3849: addrmask&= ~(1<<movem_bit[addrmask]); ! 3850: dstaddr+= 2; ! 3851: } ! 3852: PC+= 4; ! 3853: } ! 3854: ! 3855: void cpu_op_678a(t_ipc *ipc) /* MOVEMRM */ { ! 3856: /* mask fff8, bits 48a0, mnemonic 27, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 4, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3857: uint16 srcdata = ipc->src; ! 3858: int dstreg = (ipc->opcode >> 0) & 7; ! 3859: uint32 dstaddr = ADDRREG(dstreg); ! 3860: uint8 datamask = (srcdata & 0xFF00) >> 8; ! 3861: uint8 addrmask = srcdata & 0xFF; ! 3862: while (addrmask) { ! 3863: dstaddr-= 2; ! 3864: storeword(dstaddr, ADDRREG((7-movem_bit[addrmask]))); ! 3865: addrmask&= ~(1<<movem_bit[addrmask]); ! 3866: } ! 3867: while (datamask) { ! 3868: dstaddr-= 2; ! 3869: storeword(dstaddr, DATAREG((7-movem_bit[datamask]))); ! 3870: datamask&= ~(1<<movem_bit[datamask]); ! 3871: } ! 3872: ADDRREG(dstreg) = dstaddr; PC+= 4; ! 3873: } ! 3874: ! 3875: void cpu_op_679a(t_ipc *ipc) /* MOVEMRM */ { ! 3876: /* mask fff8, bits 48a8, mnemonic 27, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 5, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3877: uint16 srcdata = ipc->src; ! 3878: int dstreg = (ipc->opcode >> 0) & 7; ! 3879: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 3880: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 3881: uint8 datamask = srcdata & 0xFF; ! 3882: while (datamask) { ! 3883: storeword(dstaddr, DATAREG(movem_bit[datamask])); ! 3884: datamask&= ~(1<<movem_bit[datamask]); ! 3885: dstaddr+= 2; ! 3886: } ! 3887: while (addrmask) { ! 3888: storeword(dstaddr, ADDRREG(movem_bit[addrmask])); ! 3889: addrmask&= ~(1<<movem_bit[addrmask]); ! 3890: dstaddr+= 2; ! 3891: } ! 3892: PC+= 6; ! 3893: } ! 3894: ! 3895: void cpu_op_680a(t_ipc *ipc) /* MOVEMRM */ { ! 3896: /* mask fff8, bits 48b0, mnemonic 27, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 6, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3897: uint16 srcdata = ipc->src; ! 3898: int dstreg = (ipc->opcode >> 0) & 7; ! 3899: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 3900: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 3901: uint8 datamask = srcdata & 0xFF; ! 3902: while (datamask) { ! 3903: storeword(dstaddr, DATAREG(movem_bit[datamask])); ! 3904: datamask&= ~(1<<movem_bit[datamask]); ! 3905: dstaddr+= 2; ! 3906: } ! 3907: while (addrmask) { ! 3908: storeword(dstaddr, ADDRREG(movem_bit[addrmask])); ! 3909: addrmask&= ~(1<<movem_bit[addrmask]); ! 3910: dstaddr+= 2; ! 3911: } ! 3912: PC+= 6; ! 3913: } ! 3914: ! 3915: void cpu_op_681a(t_ipc *ipc) /* MOVEMRM */ { ! 3916: /* mask ffff, bits 48b8, mnemonic 27, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 7, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3917: uint16 srcdata = ipc->src; ! 3918: uint32 dstaddr = ipc->dst; ! 3919: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 3920: uint8 datamask = srcdata & 0xFF; ! 3921: while (datamask) { ! 3922: storeword(dstaddr, DATAREG(movem_bit[datamask])); ! 3923: datamask&= ~(1<<movem_bit[datamask]); ! 3924: dstaddr+= 2; ! 3925: } ! 3926: while (addrmask) { ! 3927: storeword(dstaddr, ADDRREG(movem_bit[addrmask])); ! 3928: addrmask&= ~(1<<movem_bit[addrmask]); ! 3929: dstaddr+= 2; ! 3930: } ! 3931: PC+= 6; ! 3932: } ! 3933: ! 3934: void cpu_op_682a(t_ipc *ipc) /* MOVEMRM */ { ! 3935: /* mask ffff, bits 48b9, mnemonic 27, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 8, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3936: uint16 srcdata = ipc->src; ! 3937: uint32 dstaddr = ipc->dst; ! 3938: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 3939: uint8 datamask = srcdata & 0xFF; ! 3940: while (datamask) { ! 3941: storeword(dstaddr, DATAREG(movem_bit[datamask])); ! 3942: datamask&= ~(1<<movem_bit[datamask]); ! 3943: dstaddr+= 2; ! 3944: } ! 3945: while (addrmask) { ! 3946: storeword(dstaddr, ADDRREG(movem_bit[addrmask])); ! 3947: addrmask&= ~(1<<movem_bit[addrmask]); ! 3948: dstaddr+= 2; ! 3949: } ! 3950: PC+= 8; ! 3951: } ! 3952: ! 3953: void cpu_op_683a(t_ipc *ipc) /* EXT */ { ! 3954: /* mask fff8, bits 48c0, mnemonic 41, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3955: int srcreg = (ipc->opcode >> 0) & 7; ! 3956: uint32 srcdata = DATAREG(srcreg); ! 3957: ! 3958: uint32 outdata = (sint32)(sint16)(srcdata); ! 3959: DATAREG(srcreg) = outdata; ! 3960: PC+= 2; ! 3961: } ! 3962: ! 3963: void cpu_op_683b(t_ipc *ipc) /* EXT */ { ! 3964: /* mask fff8, bits 48c0, mnemonic 41, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3965: int srcreg = (ipc->opcode >> 0) & 7; ! 3966: uint32 srcdata = DATAREG(srcreg); ! 3967: ! 3968: uint32 outdata = (sint32)(sint16)(srcdata); ! 3969: DATAREG(srcreg) = outdata; ! 3970: ! 3971: VFLAG = 0; ! 3972: CFLAG = 0; ! 3973: NFLAG = ((sint32)outdata) < 0; ! 3974: ZFLAG = !outdata; ! 3975: PC+= 2; ! 3976: } ! 3977: ! 3978: void cpu_op_684a(t_ipc *ipc) /* MOVEMRM */ { ! 3979: /* mask fff8, bits 48d0, mnemonic 27, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 2, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3980: uint16 srcdata = ipc->src; ! 3981: int dstreg = (ipc->opcode >> 0) & 7; ! 3982: uint32 dstaddr = ADDRREG(dstreg); ! 3983: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 3984: uint8 datamask = srcdata & 0xFF; ! 3985: while (datamask) { ! 3986: storelong(dstaddr, DATAREG(movem_bit[datamask])); ! 3987: datamask&= ~(1<<movem_bit[datamask]); ! 3988: dstaddr+= 4; ! 3989: } ! 3990: while (addrmask) { ! 3991: storelong(dstaddr, ADDRREG(movem_bit[addrmask])); ! 3992: addrmask&= ~(1<<movem_bit[addrmask]); ! 3993: dstaddr+= 4; ! 3994: } ! 3995: PC+= 4; ! 3996: } ! 3997: ! 3998: void cpu_op_685a(t_ipc *ipc) /* MOVEMRM */ { ! 3999: /* mask fff8, bits 48e0, mnemonic 27, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 4, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4000: uint16 srcdata = ipc->src; ! 4001: int dstreg = (ipc->opcode >> 0) & 7; ! 4002: uint32 dstaddr = ADDRREG(dstreg); ! 4003: uint8 datamask = (srcdata & 0xFF00) >> 8; ! 4004: uint8 addrmask = srcdata & 0xFF; ! 4005: while (addrmask) { ! 4006: dstaddr-= 4; ! 4007: storelong(dstaddr, ADDRREG((7-movem_bit[addrmask]))); ! 4008: addrmask&= ~(1<<movem_bit[addrmask]); ! 4009: } ! 4010: while (datamask) { ! 4011: dstaddr-= 4; ! 4012: storelong(dstaddr, DATAREG((7-movem_bit[datamask]))); ! 4013: datamask&= ~(1<<movem_bit[datamask]); ! 4014: } ! 4015: ADDRREG(dstreg) = dstaddr; PC+= 4; ! 4016: } ! 4017: ! 4018: void cpu_op_686a(t_ipc *ipc) /* MOVEMRM */ { ! 4019: /* mask fff8, bits 48e8, mnemonic 27, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 5, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4020: uint16 srcdata = ipc->src; ! 4021: int dstreg = (ipc->opcode >> 0) & 7; ! 4022: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 4023: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 4024: uint8 datamask = srcdata & 0xFF; ! 4025: while (datamask) { ! 4026: storelong(dstaddr, DATAREG(movem_bit[datamask])); ! 4027: datamask&= ~(1<<movem_bit[datamask]); ! 4028: dstaddr+= 4; ! 4029: } ! 4030: while (addrmask) { ! 4031: storelong(dstaddr, ADDRREG(movem_bit[addrmask])); ! 4032: addrmask&= ~(1<<movem_bit[addrmask]); ! 4033: dstaddr+= 4; ! 4034: } ! 4035: PC+= 6; ! 4036: } ! 4037: ! 4038: void cpu_op_687a(t_ipc *ipc) /* MOVEMRM */ { ! 4039: /* mask fff8, bits 48f0, mnemonic 27, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 6, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4040: uint16 srcdata = ipc->src; ! 4041: int dstreg = (ipc->opcode >> 0) & 7; ! 4042: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 4043: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 4044: uint8 datamask = srcdata & 0xFF; ! 4045: while (datamask) { ! 4046: storelong(dstaddr, DATAREG(movem_bit[datamask])); ! 4047: datamask&= ~(1<<movem_bit[datamask]); ! 4048: dstaddr+= 4; ! 4049: } ! 4050: while (addrmask) { ! 4051: storelong(dstaddr, ADDRREG(movem_bit[addrmask])); ! 4052: addrmask&= ~(1<<movem_bit[addrmask]); ! 4053: dstaddr+= 4; ! 4054: } ! 4055: PC+= 6; ! 4056: } ! 4057: ! 4058: void cpu_op_688a(t_ipc *ipc) /* MOVEMRM */ { ! 4059: /* mask ffff, bits 48f8, mnemonic 27, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 7, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4060: uint16 srcdata = ipc->src; ! 4061: uint32 dstaddr = ipc->dst; ! 4062: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 4063: uint8 datamask = srcdata & 0xFF; ! 4064: while (datamask) { ! 4065: storelong(dstaddr, DATAREG(movem_bit[datamask])); ! 4066: datamask&= ~(1<<movem_bit[datamask]); ! 4067: dstaddr+= 4; ! 4068: } ! 4069: while (addrmask) { ! 4070: storelong(dstaddr, ADDRREG(movem_bit[addrmask])); ! 4071: addrmask&= ~(1<<movem_bit[addrmask]); ! 4072: dstaddr+= 4; ! 4073: } ! 4074: PC+= 6; ! 4075: } ! 4076: ! 4077: void cpu_op_689a(t_ipc *ipc) /* MOVEMRM */ { ! 4078: /* mask ffff, bits 48f9, mnemonic 27, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 8, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4079: uint16 srcdata = ipc->src; ! 4080: uint32 dstaddr = ipc->dst; ! 4081: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 4082: uint8 datamask = srcdata & 0xFF; ! 4083: while (datamask) { ! 4084: storelong(dstaddr, DATAREG(movem_bit[datamask])); ! 4085: datamask&= ~(1<<movem_bit[datamask]); ! 4086: dstaddr+= 4; ! 4087: } ! 4088: while (addrmask) { ! 4089: storelong(dstaddr, ADDRREG(movem_bit[addrmask])); ! 4090: addrmask&= ~(1<<movem_bit[addrmask]); ! 4091: dstaddr+= 4; ! 4092: } ! 4093: PC+= 8; ! 4094: } ! 4095: ! 4096: void cpu_op_690a(t_ipc *ipc) /* TST */ { ! 4097: /* mask fff8, bits 4a00, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4098: int srcreg = (ipc->opcode >> 0) & 7; ! 4099: uint8 srcdata = DATAREG(srcreg); ! 4100: uint8 outdata = srcdata; ! 4101: PC+= 2; ! 4102: } ! 4103: ! 4104: void cpu_op_690b(t_ipc *ipc) /* TST */ { ! 4105: /* mask fff8, bits 4a00, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4106: int srcreg = (ipc->opcode >> 0) & 7; ! 4107: uint8 srcdata = DATAREG(srcreg); ! 4108: uint8 outdata = srcdata; ! 4109: ! 4110: VFLAG = 0; ! 4111: CFLAG = 0; ! 4112: NFLAG = ((sint8)outdata) < 0; ! 4113: ZFLAG = !outdata; ! 4114: PC+= 2; ! 4115: } ! 4116: ! 4117: void cpu_op_691a(t_ipc *ipc) /* TST */ { ! 4118: /* mask fff8, bits 4a10, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4119: int srcreg = (ipc->opcode >> 0) & 7; ! 4120: uint32 srcaddr = ADDRREG(srcreg); ! 4121: uint8 srcdata = fetchbyte(srcaddr); ! 4122: uint8 outdata = srcdata; ! 4123: PC+= 2; ! 4124: } ! 4125: ! 4126: void cpu_op_691b(t_ipc *ipc) /* TST */ { ! 4127: /* mask fff8, bits 4a10, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4128: int srcreg = (ipc->opcode >> 0) & 7; ! 4129: uint32 srcaddr = ADDRREG(srcreg); ! 4130: uint8 srcdata = fetchbyte(srcaddr); ! 4131: uint8 outdata = srcdata; ! 4132: ! 4133: VFLAG = 0; ! 4134: CFLAG = 0; ! 4135: NFLAG = ((sint8)outdata) < 0; ! 4136: ZFLAG = !outdata; ! 4137: PC+= 2; ! 4138: } ! 4139: ! 4140: void cpu_op_692a(t_ipc *ipc) /* TST */ { ! 4141: /* mask fff8, bits 4a18, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4142: int srcreg = (ipc->opcode >> 0) & 7; ! 4143: uint32 srcaddr = ADDRREG(srcreg); ! 4144: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 4145: uint8 srcdata = fetchbyte(srcaddr); ! 4146: uint8 outdata = srcdata; ! 4147: PC+= 2; ! 4148: } ! 4149: ! 4150: void cpu_op_692b(t_ipc *ipc) /* TST */ { ! 4151: /* mask fff8, bits 4a18, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4152: int srcreg = (ipc->opcode >> 0) & 7; ! 4153: uint32 srcaddr = ADDRREG(srcreg); ! 4154: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 4155: uint8 srcdata = fetchbyte(srcaddr); ! 4156: uint8 outdata = srcdata; ! 4157: ! 4158: VFLAG = 0; ! 4159: CFLAG = 0; ! 4160: NFLAG = ((sint8)outdata) < 0; ! 4161: ZFLAG = !outdata; ! 4162: PC+= 2; ! 4163: } ! 4164: ! 4165: void cpu_op_693a(t_ipc *ipc) /* TST */ { ! 4166: /* mask fff8, bits 4a20, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4167: int srcreg = (ipc->opcode >> 0) & 7; ! 4168: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 4169: uint8 srcdata = fetchbyte(srcaddr); ! 4170: uint8 outdata = srcdata; ! 4171: PC+= 2; ! 4172: } ! 4173: ! 4174: void cpu_op_693b(t_ipc *ipc) /* TST */ { ! 4175: /* mask fff8, bits 4a20, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4176: int srcreg = (ipc->opcode >> 0) & 7; ! 4177: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 4178: uint8 srcdata = fetchbyte(srcaddr); ! 4179: uint8 outdata = srcdata; ! 4180: ! 4181: VFLAG = 0; ! 4182: CFLAG = 0; ! 4183: NFLAG = ((sint8)outdata) < 0; ! 4184: ZFLAG = !outdata; ! 4185: PC+= 2; ! 4186: } ! 4187: ! 4188: void cpu_op_694a(t_ipc *ipc) /* TST */ { ! 4189: /* mask fff8, bits 4a28, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4190: int srcreg = (ipc->opcode >> 0) & 7; ! 4191: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 4192: uint8 srcdata = fetchbyte(srcaddr); ! 4193: uint8 outdata = srcdata; ! 4194: PC+= 4; ! 4195: } ! 4196: ! 4197: void cpu_op_694b(t_ipc *ipc) /* TST */ { ! 4198: /* mask fff8, bits 4a28, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4199: int srcreg = (ipc->opcode >> 0) & 7; ! 4200: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 4201: uint8 srcdata = fetchbyte(srcaddr); ! 4202: uint8 outdata = srcdata; ! 4203: ! 4204: VFLAG = 0; ! 4205: CFLAG = 0; ! 4206: NFLAG = ((sint8)outdata) < 0; ! 4207: ZFLAG = !outdata; ! 4208: PC+= 4; ! 4209: } ! 4210: ! 4211: void cpu_op_695a(t_ipc *ipc) /* TST */ { ! 4212: /* mask fff8, bits 4a30, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4213: int srcreg = (ipc->opcode >> 0) & 7; ! 4214: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 4215: uint8 srcdata = fetchbyte(srcaddr); ! 4216: uint8 outdata = srcdata; ! 4217: PC+= 4; ! 4218: } ! 4219: ! 4220: void cpu_op_695b(t_ipc *ipc) /* TST */ { ! 4221: /* mask fff8, bits 4a30, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4222: int srcreg = (ipc->opcode >> 0) & 7; ! 4223: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 4224: uint8 srcdata = fetchbyte(srcaddr); ! 4225: uint8 outdata = srcdata; ! 4226: ! 4227: VFLAG = 0; ! 4228: CFLAG = 0; ! 4229: NFLAG = ((sint8)outdata) < 0; ! 4230: ZFLAG = !outdata; ! 4231: PC+= 4; ! 4232: } ! 4233: ! 4234: void cpu_op_696a(t_ipc *ipc) /* TST */ { ! 4235: /* mask ffff, bits 4a38, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4236: uint32 srcaddr = ipc->src; ! 4237: uint8 srcdata = fetchbyte(srcaddr); ! 4238: uint8 outdata = srcdata; ! 4239: PC+= 4; ! 4240: } ! 4241: ! 4242: void cpu_op_696b(t_ipc *ipc) /* TST */ { ! 4243: /* mask ffff, bits 4a38, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4244: uint32 srcaddr = ipc->src; ! 4245: uint8 srcdata = fetchbyte(srcaddr); ! 4246: uint8 outdata = srcdata; ! 4247: ! 4248: VFLAG = 0; ! 4249: CFLAG = 0; ! 4250: NFLAG = ((sint8)outdata) < 0; ! 4251: ZFLAG = !outdata; ! 4252: PC+= 4; ! 4253: } ! 4254: ! 4255: void cpu_op_697a(t_ipc *ipc) /* TST */ { ! 4256: /* mask ffff, bits 4a39, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4257: uint32 srcaddr = ipc->src; ! 4258: uint8 srcdata = fetchbyte(srcaddr); ! 4259: uint8 outdata = srcdata; ! 4260: PC+= 6; ! 4261: } ! 4262: ! 4263: void cpu_op_697b(t_ipc *ipc) /* TST */ { ! 4264: /* mask ffff, bits 4a39, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4265: uint32 srcaddr = ipc->src; ! 4266: uint8 srcdata = fetchbyte(srcaddr); ! 4267: uint8 outdata = srcdata; ! 4268: ! 4269: VFLAG = 0; ! 4270: CFLAG = 0; ! 4271: NFLAG = ((sint8)outdata) < 0; ! 4272: ZFLAG = !outdata; ! 4273: PC+= 6; ! 4274: } ! 4275: ! 4276: void cpu_op_698a(t_ipc *ipc) /* TST */ { ! 4277: /* mask fff8, bits 4a40, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4278: int srcreg = (ipc->opcode >> 0) & 7; ! 4279: uint16 srcdata = DATAREG(srcreg); ! 4280: uint16 outdata = srcdata; ! 4281: PC+= 2; ! 4282: } ! 4283: ! 4284: void cpu_op_698b(t_ipc *ipc) /* TST */ { ! 4285: /* mask fff8, bits 4a40, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4286: int srcreg = (ipc->opcode >> 0) & 7; ! 4287: uint16 srcdata = DATAREG(srcreg); ! 4288: uint16 outdata = srcdata; ! 4289: ! 4290: VFLAG = 0; ! 4291: CFLAG = 0; ! 4292: NFLAG = ((sint16)outdata) < 0; ! 4293: ZFLAG = !outdata; ! 4294: PC+= 2; ! 4295: } ! 4296: ! 4297: void cpu_op_699a(t_ipc *ipc) /* TST */ { ! 4298: /* mask fff8, bits 4a50, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4299: int srcreg = (ipc->opcode >> 0) & 7; ! 4300: uint32 srcaddr = ADDRREG(srcreg); ! 4301: uint16 srcdata = fetchword(srcaddr); ! 4302: uint16 outdata = srcdata; ! 4303: PC+= 2; ! 4304: } ! 4305: ! 4306: void cpu_op_699b(t_ipc *ipc) /* TST */ { ! 4307: /* mask fff8, bits 4a50, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4308: int srcreg = (ipc->opcode >> 0) & 7; ! 4309: uint32 srcaddr = ADDRREG(srcreg); ! 4310: uint16 srcdata = fetchword(srcaddr); ! 4311: uint16 outdata = srcdata; ! 4312: ! 4313: VFLAG = 0; ! 4314: CFLAG = 0; ! 4315: NFLAG = ((sint16)outdata) < 0; ! 4316: ZFLAG = !outdata; ! 4317: PC+= 2; ! 4318: } ! 4319: ! 4320: void cpu_op_700a(t_ipc *ipc) /* TST */ { ! 4321: /* mask fff8, bits 4a58, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4322: int srcreg = (ipc->opcode >> 0) & 7; ! 4323: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 4324: uint16 srcdata = fetchword(srcaddr); ! 4325: uint16 outdata = srcdata; ! 4326: PC+= 2; ! 4327: } ! 4328: ! 4329: void cpu_op_700b(t_ipc *ipc) /* TST */ { ! 4330: /* mask fff8, bits 4a58, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4331: int srcreg = (ipc->opcode >> 0) & 7; ! 4332: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 4333: uint16 srcdata = fetchword(srcaddr); ! 4334: uint16 outdata = srcdata; ! 4335: ! 4336: VFLAG = 0; ! 4337: CFLAG = 0; ! 4338: NFLAG = ((sint16)outdata) < 0; ! 4339: ZFLAG = !outdata; ! 4340: PC+= 2; ! 4341: } ! 4342: ! 4343: void cpu_op_701a(t_ipc *ipc) /* TST */ { ! 4344: /* mask fff8, bits 4a60, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4345: int srcreg = (ipc->opcode >> 0) & 7; ! 4346: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 4347: uint16 srcdata = fetchword(srcaddr); ! 4348: uint16 outdata = srcdata; ! 4349: PC+= 2; ! 4350: } ! 4351: ! 4352: void cpu_op_701b(t_ipc *ipc) /* TST */ { ! 4353: /* mask fff8, bits 4a60, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4354: int srcreg = (ipc->opcode >> 0) & 7; ! 4355: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 4356: uint16 srcdata = fetchword(srcaddr); ! 4357: uint16 outdata = srcdata; ! 4358: ! 4359: VFLAG = 0; ! 4360: CFLAG = 0; ! 4361: NFLAG = ((sint16)outdata) < 0; ! 4362: ZFLAG = !outdata; ! 4363: PC+= 2; ! 4364: } ! 4365: ! 4366: void cpu_op_702a(t_ipc *ipc) /* TST */ { ! 4367: /* mask fff8, bits 4a68, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4368: int srcreg = (ipc->opcode >> 0) & 7; ! 4369: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 4370: uint16 srcdata = fetchword(srcaddr); ! 4371: uint16 outdata = srcdata; ! 4372: PC+= 4; ! 4373: } ! 4374: ! 4375: void cpu_op_702b(t_ipc *ipc) /* TST */ { ! 4376: /* mask fff8, bits 4a68, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4377: int srcreg = (ipc->opcode >> 0) & 7; ! 4378: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 4379: uint16 srcdata = fetchword(srcaddr); ! 4380: uint16 outdata = srcdata; ! 4381: ! 4382: VFLAG = 0; ! 4383: CFLAG = 0; ! 4384: NFLAG = ((sint16)outdata) < 0; ! 4385: ZFLAG = !outdata; ! 4386: PC+= 4; ! 4387: } ! 4388: ! 4389: void cpu_op_703a(t_ipc *ipc) /* TST */ { ! 4390: /* mask fff8, bits 4a70, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4391: int srcreg = (ipc->opcode >> 0) & 7; ! 4392: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 4393: uint16 srcdata = fetchword(srcaddr); ! 4394: uint16 outdata = srcdata; ! 4395: PC+= 4; ! 4396: } ! 4397: ! 4398: void cpu_op_703b(t_ipc *ipc) /* TST */ { ! 4399: /* mask fff8, bits 4a70, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4400: int srcreg = (ipc->opcode >> 0) & 7; ! 4401: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 4402: uint16 srcdata = fetchword(srcaddr); ! 4403: uint16 outdata = srcdata; ! 4404: ! 4405: VFLAG = 0; ! 4406: CFLAG = 0; ! 4407: NFLAG = ((sint16)outdata) < 0; ! 4408: ZFLAG = !outdata; ! 4409: PC+= 4; ! 4410: } ! 4411: ! 4412: void cpu_op_704a(t_ipc *ipc) /* TST */ { ! 4413: /* mask ffff, bits 4a78, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4414: uint32 srcaddr = ipc->src; ! 4415: uint16 srcdata = fetchword(srcaddr); ! 4416: uint16 outdata = srcdata; ! 4417: PC+= 4; ! 4418: } ! 4419: ! 4420: void cpu_op_704b(t_ipc *ipc) /* TST */ { ! 4421: /* mask ffff, bits 4a78, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4422: uint32 srcaddr = ipc->src; ! 4423: uint16 srcdata = fetchword(srcaddr); ! 4424: uint16 outdata = srcdata; ! 4425: ! 4426: VFLAG = 0; ! 4427: CFLAG = 0; ! 4428: NFLAG = ((sint16)outdata) < 0; ! 4429: ZFLAG = !outdata; ! 4430: PC+= 4; ! 4431: } ! 4432: ! 4433: void cpu_op_705a(t_ipc *ipc) /* TST */ { ! 4434: /* mask ffff, bits 4a79, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4435: uint32 srcaddr = ipc->src; ! 4436: uint16 srcdata = fetchword(srcaddr); ! 4437: uint16 outdata = srcdata; ! 4438: PC+= 6; ! 4439: } ! 4440: ! 4441: void cpu_op_705b(t_ipc *ipc) /* TST */ { ! 4442: /* mask ffff, bits 4a79, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4443: uint32 srcaddr = ipc->src; ! 4444: uint16 srcdata = fetchword(srcaddr); ! 4445: uint16 outdata = srcdata; ! 4446: ! 4447: VFLAG = 0; ! 4448: CFLAG = 0; ! 4449: NFLAG = ((sint16)outdata) < 0; ! 4450: ZFLAG = !outdata; ! 4451: PC+= 6; ! 4452: } ! 4453: ! 4454: void cpu_op_706a(t_ipc *ipc) /* TST */ { ! 4455: /* mask fff8, bits 4a80, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4456: int srcreg = (ipc->opcode >> 0) & 7; ! 4457: uint32 srcdata = DATAREG(srcreg); ! 4458: uint32 outdata = srcdata; ! 4459: PC+= 2; ! 4460: } ! 4461: ! 4462: void cpu_op_706b(t_ipc *ipc) /* TST */ { ! 4463: /* mask fff8, bits 4a80, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4464: int srcreg = (ipc->opcode >> 0) & 7; ! 4465: uint32 srcdata = DATAREG(srcreg); ! 4466: uint32 outdata = srcdata; ! 4467: ! 4468: VFLAG = 0; ! 4469: CFLAG = 0; ! 4470: NFLAG = ((sint32)outdata) < 0; ! 4471: ZFLAG = !outdata; ! 4472: PC+= 2; ! 4473: } ! 4474: ! 4475: void cpu_op_707a(t_ipc *ipc) /* TST */ { ! 4476: /* mask fff8, bits 4a90, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4477: int srcreg = (ipc->opcode >> 0) & 7; ! 4478: uint32 srcaddr = ADDRREG(srcreg); ! 4479: uint32 srcdata = fetchlong(srcaddr); ! 4480: uint32 outdata = srcdata; ! 4481: PC+= 2; ! 4482: } ! 4483: ! 4484: void cpu_op_707b(t_ipc *ipc) /* TST */ { ! 4485: /* mask fff8, bits 4a90, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4486: int srcreg = (ipc->opcode >> 0) & 7; ! 4487: uint32 srcaddr = ADDRREG(srcreg); ! 4488: uint32 srcdata = fetchlong(srcaddr); ! 4489: uint32 outdata = srcdata; ! 4490: ! 4491: VFLAG = 0; ! 4492: CFLAG = 0; ! 4493: NFLAG = ((sint32)outdata) < 0; ! 4494: ZFLAG = !outdata; ! 4495: PC+= 2; ! 4496: } ! 4497: ! 4498: void cpu_op_708a(t_ipc *ipc) /* TST */ { ! 4499: /* mask fff8, bits 4a98, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4500: int srcreg = (ipc->opcode >> 0) & 7; ! 4501: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 4502: uint32 srcdata = fetchlong(srcaddr); ! 4503: uint32 outdata = srcdata; ! 4504: PC+= 2; ! 4505: } ! 4506: ! 4507: void cpu_op_708b(t_ipc *ipc) /* TST */ { ! 4508: /* mask fff8, bits 4a98, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4509: int srcreg = (ipc->opcode >> 0) & 7; ! 4510: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 4511: uint32 srcdata = fetchlong(srcaddr); ! 4512: uint32 outdata = srcdata; ! 4513: ! 4514: VFLAG = 0; ! 4515: CFLAG = 0; ! 4516: NFLAG = ((sint32)outdata) < 0; ! 4517: ZFLAG = !outdata; ! 4518: PC+= 2; ! 4519: } ! 4520: ! 4521: void cpu_op_709a(t_ipc *ipc) /* TST */ { ! 4522: /* mask fff8, bits 4aa0, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4523: int srcreg = (ipc->opcode >> 0) & 7; ! 4524: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 4525: uint32 srcdata = fetchlong(srcaddr); ! 4526: uint32 outdata = srcdata; ! 4527: PC+= 2; ! 4528: } ! 4529: ! 4530: void cpu_op_709b(t_ipc *ipc) /* TST */ { ! 4531: /* mask fff8, bits 4aa0, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4532: int srcreg = (ipc->opcode >> 0) & 7; ! 4533: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 4534: uint32 srcdata = fetchlong(srcaddr); ! 4535: uint32 outdata = srcdata; ! 4536: ! 4537: VFLAG = 0; ! 4538: CFLAG = 0; ! 4539: NFLAG = ((sint32)outdata) < 0; ! 4540: ZFLAG = !outdata; ! 4541: PC+= 2; ! 4542: } ! 4543: ! 4544: void cpu_op_710a(t_ipc *ipc) /* TST */ { ! 4545: /* mask fff8, bits 4aa8, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4546: int srcreg = (ipc->opcode >> 0) & 7; ! 4547: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 4548: uint32 srcdata = fetchlong(srcaddr); ! 4549: uint32 outdata = srcdata; ! 4550: PC+= 4; ! 4551: } ! 4552: ! 4553: void cpu_op_710b(t_ipc *ipc) /* TST */ { ! 4554: /* mask fff8, bits 4aa8, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4555: int srcreg = (ipc->opcode >> 0) & 7; ! 4556: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 4557: uint32 srcdata = fetchlong(srcaddr); ! 4558: uint32 outdata = srcdata; ! 4559: ! 4560: VFLAG = 0; ! 4561: CFLAG = 0; ! 4562: NFLAG = ((sint32)outdata) < 0; ! 4563: ZFLAG = !outdata; ! 4564: PC+= 4; ! 4565: } ! 4566: ! 4567: void cpu_op_711a(t_ipc *ipc) /* TST */ { ! 4568: /* mask fff8, bits 4ab0, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4569: int srcreg = (ipc->opcode >> 0) & 7; ! 4570: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 4571: uint32 srcdata = fetchlong(srcaddr); ! 4572: uint32 outdata = srcdata; ! 4573: PC+= 4; ! 4574: } ! 4575: ! 4576: void cpu_op_711b(t_ipc *ipc) /* TST */ { ! 4577: /* mask fff8, bits 4ab0, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4578: int srcreg = (ipc->opcode >> 0) & 7; ! 4579: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 4580: uint32 srcdata = fetchlong(srcaddr); ! 4581: uint32 outdata = srcdata; ! 4582: ! 4583: VFLAG = 0; ! 4584: CFLAG = 0; ! 4585: NFLAG = ((sint32)outdata) < 0; ! 4586: ZFLAG = !outdata; ! 4587: PC+= 4; ! 4588: } ! 4589: ! 4590: void cpu_op_712a(t_ipc *ipc) /* TST */ { ! 4591: /* mask ffff, bits 4ab8, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4592: uint32 srcaddr = ipc->src; ! 4593: uint32 srcdata = fetchlong(srcaddr); ! 4594: uint32 outdata = srcdata; ! 4595: PC+= 4; ! 4596: } ! 4597: ! 4598: void cpu_op_712b(t_ipc *ipc) /* TST */ { ! 4599: /* mask ffff, bits 4ab8, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4600: uint32 srcaddr = ipc->src; ! 4601: uint32 srcdata = fetchlong(srcaddr); ! 4602: uint32 outdata = srcdata; ! 4603: ! 4604: VFLAG = 0; ! 4605: CFLAG = 0; ! 4606: NFLAG = ((sint32)outdata) < 0; ! 4607: ZFLAG = !outdata; ! 4608: PC+= 4; ! 4609: } ! 4610: ! 4611: void cpu_op_713a(t_ipc *ipc) /* TST */ { ! 4612: /* mask ffff, bits 4ab9, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4613: uint32 srcaddr = ipc->src; ! 4614: uint32 srcdata = fetchlong(srcaddr); ! 4615: uint32 outdata = srcdata; ! 4616: PC+= 6; ! 4617: } ! 4618: ! 4619: void cpu_op_713b(t_ipc *ipc) /* TST */ { ! 4620: /* mask ffff, bits 4ab9, mnemonic 43, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4621: uint32 srcaddr = ipc->src; ! 4622: uint32 srcdata = fetchlong(srcaddr); ! 4623: uint32 outdata = srcdata; ! 4624: ! 4625: VFLAG = 0; ! 4626: CFLAG = 0; ! 4627: NFLAG = ((sint32)outdata) < 0; ! 4628: ZFLAG = !outdata; ! 4629: PC+= 6; ! 4630: } ! 4631: ! 4632: void cpu_op_714a(t_ipc *ipc) /* TAS */ { ! 4633: /* mask fff8, bits 4ac0, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4634: int srcreg = (ipc->opcode >> 0) & 7; ! 4635: uint8 srcdata = DATAREG(srcreg); ! 4636: uint8 outdata = srcdata; ! 4637: outdata|= 1<<7; ! 4638: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 4639: PC+= 2; ! 4640: } ! 4641: ! 4642: void cpu_op_714b(t_ipc *ipc) /* TAS */ { ! 4643: /* mask fff8, bits 4ac0, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4644: int srcreg = (ipc->opcode >> 0) & 7; ! 4645: uint8 srcdata = DATAREG(srcreg); ! 4646: uint8 outdata = srcdata; ! 4647: ! 4648: VFLAG = 0; ! 4649: CFLAG = 0; ! 4650: NFLAG = ((sint8)outdata) < 0; ! 4651: ZFLAG = !outdata; ! 4652: outdata|= 1<<7; ! 4653: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 4654: PC+= 2; ! 4655: } ! 4656: ! 4657: void cpu_op_715a(t_ipc *ipc) /* TAS */ { ! 4658: /* mask fff8, bits 4ad0, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4659: int srcreg = (ipc->opcode >> 0) & 7; ! 4660: uint32 srcaddr = ADDRREG(srcreg); ! 4661: uint8 srcdata = fetchbyte(srcaddr); ! 4662: uint8 outdata = srcdata; ! 4663: outdata|= 1<<7; ! 4664: storebyte(srcaddr, outdata); ! 4665: PC+= 2; ! 4666: } ! 4667: ! 4668: void cpu_op_715b(t_ipc *ipc) /* TAS */ { ! 4669: /* mask fff8, bits 4ad0, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4670: int srcreg = (ipc->opcode >> 0) & 7; ! 4671: uint32 srcaddr = ADDRREG(srcreg); ! 4672: uint8 srcdata = fetchbyte(srcaddr); ! 4673: uint8 outdata = srcdata; ! 4674: ! 4675: VFLAG = 0; ! 4676: CFLAG = 0; ! 4677: NFLAG = ((sint8)outdata) < 0; ! 4678: ZFLAG = !outdata; ! 4679: outdata|= 1<<7; ! 4680: storebyte(srcaddr, outdata); ! 4681: PC+= 2; ! 4682: } ! 4683: ! 4684: void cpu_op_716a(t_ipc *ipc) /* TAS */ { ! 4685: /* mask fff8, bits 4ad8, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4686: int srcreg = (ipc->opcode >> 0) & 7; ! 4687: uint32 srcaddr = ADDRREG(srcreg); ! 4688: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 4689: uint8 srcdata = fetchbyte(srcaddr); ! 4690: uint8 outdata = srcdata; ! 4691: outdata|= 1<<7; ! 4692: storebyte(srcaddr, outdata); ! 4693: PC+= 2; ! 4694: } ! 4695: ! 4696: void cpu_op_716b(t_ipc *ipc) /* TAS */ { ! 4697: /* mask fff8, bits 4ad8, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4698: int srcreg = (ipc->opcode >> 0) & 7; ! 4699: uint32 srcaddr = ADDRREG(srcreg); ! 4700: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 4701: uint8 srcdata = fetchbyte(srcaddr); ! 4702: uint8 outdata = srcdata; ! 4703: ! 4704: VFLAG = 0; ! 4705: CFLAG = 0; ! 4706: NFLAG = ((sint8)outdata) < 0; ! 4707: ZFLAG = !outdata; ! 4708: outdata|= 1<<7; ! 4709: storebyte(srcaddr, outdata); ! 4710: PC+= 2; ! 4711: } ! 4712: ! 4713: void cpu_op_717a(t_ipc *ipc) /* TAS */ { ! 4714: /* mask fff8, bits 4ae0, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4715: int srcreg = (ipc->opcode >> 0) & 7; ! 4716: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 4717: uint8 srcdata = fetchbyte(srcaddr); ! 4718: uint8 outdata = srcdata; ! 4719: outdata|= 1<<7; ! 4720: storebyte(srcaddr, outdata); ! 4721: PC+= 2; ! 4722: } ! 4723: ! 4724: void cpu_op_717b(t_ipc *ipc) /* TAS */ { ! 4725: /* mask fff8, bits 4ae0, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4726: int srcreg = (ipc->opcode >> 0) & 7; ! 4727: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 4728: uint8 srcdata = fetchbyte(srcaddr); ! 4729: uint8 outdata = srcdata; ! 4730: ! 4731: VFLAG = 0; ! 4732: CFLAG = 0; ! 4733: NFLAG = ((sint8)outdata) < 0; ! 4734: ZFLAG = !outdata; ! 4735: outdata|= 1<<7; ! 4736: storebyte(srcaddr, outdata); ! 4737: PC+= 2; ! 4738: } ! 4739: ! 4740: void cpu_op_718a(t_ipc *ipc) /* TAS */ { ! 4741: /* mask fff8, bits 4ae8, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4742: int srcreg = (ipc->opcode >> 0) & 7; ! 4743: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 4744: uint8 srcdata = fetchbyte(srcaddr); ! 4745: uint8 outdata = srcdata; ! 4746: outdata|= 1<<7; ! 4747: storebyte(srcaddr, outdata); ! 4748: PC+= 4; ! 4749: } ! 4750: ! 4751: void cpu_op_718b(t_ipc *ipc) /* TAS */ { ! 4752: /* mask fff8, bits 4ae8, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4753: int srcreg = (ipc->opcode >> 0) & 7; ! 4754: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 4755: uint8 srcdata = fetchbyte(srcaddr); ! 4756: uint8 outdata = srcdata; ! 4757: ! 4758: VFLAG = 0; ! 4759: CFLAG = 0; ! 4760: NFLAG = ((sint8)outdata) < 0; ! 4761: ZFLAG = !outdata; ! 4762: outdata|= 1<<7; ! 4763: storebyte(srcaddr, outdata); ! 4764: PC+= 4; ! 4765: } ! 4766: ! 4767: void cpu_op_719a(t_ipc *ipc) /* TAS */ { ! 4768: /* mask fff8, bits 4af0, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4769: int srcreg = (ipc->opcode >> 0) & 7; ! 4770: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 4771: uint8 srcdata = fetchbyte(srcaddr); ! 4772: uint8 outdata = srcdata; ! 4773: outdata|= 1<<7; ! 4774: storebyte(srcaddr, outdata); ! 4775: PC+= 4; ! 4776: } ! 4777: ! 4778: void cpu_op_719b(t_ipc *ipc) /* TAS */ { ! 4779: /* mask fff8, bits 4af0, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4780: int srcreg = (ipc->opcode >> 0) & 7; ! 4781: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 4782: uint8 srcdata = fetchbyte(srcaddr); ! 4783: uint8 outdata = srcdata; ! 4784: ! 4785: VFLAG = 0; ! 4786: CFLAG = 0; ! 4787: NFLAG = ((sint8)outdata) < 0; ! 4788: ZFLAG = !outdata; ! 4789: outdata|= 1<<7; ! 4790: storebyte(srcaddr, outdata); ! 4791: PC+= 4; ! 4792: } ! 4793: ! 4794: void cpu_op_720a(t_ipc *ipc) /* TAS */ { ! 4795: /* mask ffff, bits 4af8, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4796: uint32 srcaddr = ipc->src; ! 4797: uint8 srcdata = fetchbyte(srcaddr); ! 4798: uint8 outdata = srcdata; ! 4799: outdata|= 1<<7; ! 4800: storebyte(srcaddr, outdata); ! 4801: PC+= 4; ! 4802: } ! 4803: ! 4804: void cpu_op_720b(t_ipc *ipc) /* TAS */ { ! 4805: /* mask ffff, bits 4af8, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4806: uint32 srcaddr = ipc->src; ! 4807: uint8 srcdata = fetchbyte(srcaddr); ! 4808: uint8 outdata = srcdata; ! 4809: ! 4810: VFLAG = 0; ! 4811: CFLAG = 0; ! 4812: NFLAG = ((sint8)outdata) < 0; ! 4813: ZFLAG = !outdata; ! 4814: outdata|= 1<<7; ! 4815: storebyte(srcaddr, outdata); ! 4816: PC+= 4; ! 4817: } ! 4818: ! 4819: void cpu_op_721a(t_ipc *ipc) /* TAS */ { ! 4820: /* mask ffff, bits 4af9, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4821: uint32 srcaddr = ipc->src; ! 4822: uint8 srcdata = fetchbyte(srcaddr); ! 4823: uint8 outdata = srcdata; ! 4824: outdata|= 1<<7; ! 4825: storebyte(srcaddr, outdata); ! 4826: PC+= 6; ! 4827: } ! 4828: ! 4829: void cpu_op_721b(t_ipc *ipc) /* TAS */ { ! 4830: /* mask ffff, bits 4af9, mnemonic 44, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4831: uint32 srcaddr = ipc->src; ! 4832: uint8 srcdata = fetchbyte(srcaddr); ! 4833: uint8 outdata = srcdata; ! 4834: ! 4835: VFLAG = 0; ! 4836: CFLAG = 0; ! 4837: NFLAG = ((sint8)outdata) < 0; ! 4838: ZFLAG = !outdata; ! 4839: outdata|= 1<<7; ! 4840: storebyte(srcaddr, outdata); ! 4841: PC+= 6; ! 4842: } ! 4843: ! 4844: void cpu_op_722a(t_ipc *ipc) /* ILLEGAL */ { ! 4845: /* mask ffff, bits 4afc, mnemonic 0, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 0, stype 20, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4846: printf("Illegal instruction @ %x\n", PC); ! 4847: exit(1); ! 4848: PC+= 2; ! 4849: } ! 4850: ! 4851: void cpu_op_723a(t_ipc *ipc) /* MOVEMMR */ { ! 4852: /* mask fff8, bits 4c90, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 2, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4853: uint16 srcdata = ipc->src; ! 4854: int dstreg = (ipc->opcode >> 0) & 7; ! 4855: uint32 dstaddr = ADDRREG(dstreg); ! 4856: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 4857: uint8 datamask = srcdata & 0xFF; ! 4858: while (datamask) { ! 4859: DATAREG(movem_bit[datamask]) = (sint32)(sint16)fetchword(dstaddr); ! 4860: datamask&= ~(1<<movem_bit[datamask]); ! 4861: dstaddr+= 2; ! 4862: } ! 4863: while (addrmask) { ! 4864: ADDRREG(movem_bit[addrmask]) = (sint32)(sint16)fetchword(dstaddr); ! 4865: addrmask&= ~(1<<movem_bit[addrmask]); ! 4866: dstaddr+= 2; ! 4867: } ! 4868: PC+= 4; ! 4869: } ! 4870: ! 4871: void cpu_op_724a(t_ipc *ipc) /* MOVEMMR */ { ! 4872: /* mask fff8, bits 4c98, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 3, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4873: uint16 srcdata = ipc->src; ! 4874: int dstreg = (ipc->opcode >> 0) & 7; ! 4875: uint32 dstaddr = ADDRREG(dstreg); ! 4876: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 4877: uint8 datamask = srcdata & 0xFF; ! 4878: while (datamask) { ! 4879: DATAREG(movem_bit[datamask]) = (sint32)(sint16)fetchword(dstaddr); ! 4880: datamask&= ~(1<<movem_bit[datamask]); ! 4881: dstaddr+= 2; ! 4882: } ! 4883: while (addrmask) { ! 4884: ADDRREG(movem_bit[addrmask]) = (sint32)(sint16)fetchword(dstaddr); ! 4885: addrmask&= ~(1<<movem_bit[addrmask]); ! 4886: dstaddr+= 2; ! 4887: } ! 4888: ADDRREG(dstreg) = dstaddr; ! 4889: PC+= 4; ! 4890: } ! 4891: ! 4892: void cpu_op_725a(t_ipc *ipc) /* MOVEMMR */ { ! 4893: /* mask fff8, bits 4ca8, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 5, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4894: uint16 srcdata = ipc->src; ! 4895: int dstreg = (ipc->opcode >> 0) & 7; ! 4896: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 4897: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 4898: uint8 datamask = srcdata & 0xFF; ! 4899: while (datamask) { ! 4900: DATAREG(movem_bit[datamask]) = (sint32)(sint16)fetchword(dstaddr); ! 4901: datamask&= ~(1<<movem_bit[datamask]); ! 4902: dstaddr+= 2; ! 4903: } ! 4904: while (addrmask) { ! 4905: ADDRREG(movem_bit[addrmask]) = (sint32)(sint16)fetchword(dstaddr); ! 4906: addrmask&= ~(1<<movem_bit[addrmask]); ! 4907: dstaddr+= 2; ! 4908: } ! 4909: PC+= 6; ! 4910: } ! 4911: ! 4912: void cpu_op_726a(t_ipc *ipc) /* MOVEMMR */ { ! 4913: /* mask fff8, bits 4cb0, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 6, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4914: uint16 srcdata = ipc->src; ! 4915: int dstreg = (ipc->opcode >> 0) & 7; ! 4916: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 4917: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 4918: uint8 datamask = srcdata & 0xFF; ! 4919: while (datamask) { ! 4920: DATAREG(movem_bit[datamask]) = (sint32)(sint16)fetchword(dstaddr); ! 4921: datamask&= ~(1<<movem_bit[datamask]); ! 4922: dstaddr+= 2; ! 4923: } ! 4924: while (addrmask) { ! 4925: ADDRREG(movem_bit[addrmask]) = (sint32)(sint16)fetchword(dstaddr); ! 4926: addrmask&= ~(1<<movem_bit[addrmask]); ! 4927: dstaddr+= 2; ! 4928: } ! 4929: PC+= 6; ! 4930: } ! 4931: ! 4932: void cpu_op_727a(t_ipc *ipc) /* MOVEMMR */ { ! 4933: /* mask ffff, bits 4cb8, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 7, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4934: uint16 srcdata = ipc->src; ! 4935: uint32 dstaddr = ipc->dst; ! 4936: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 4937: uint8 datamask = srcdata & 0xFF; ! 4938: while (datamask) { ! 4939: DATAREG(movem_bit[datamask]) = (sint32)(sint16)fetchword(dstaddr); ! 4940: datamask&= ~(1<<movem_bit[datamask]); ! 4941: dstaddr+= 2; ! 4942: } ! 4943: while (addrmask) { ! 4944: ADDRREG(movem_bit[addrmask]) = (sint32)(sint16)fetchword(dstaddr); ! 4945: addrmask&= ~(1<<movem_bit[addrmask]); ! 4946: dstaddr+= 2; ! 4947: } ! 4948: PC+= 6; ! 4949: } ! 4950: ! 4951: void cpu_op_728a(t_ipc *ipc) /* MOVEMMR */ { ! 4952: /* mask ffff, bits 4cb9, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 8, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4953: uint16 srcdata = ipc->src; ! 4954: uint32 dstaddr = ipc->dst; ! 4955: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 4956: uint8 datamask = srcdata & 0xFF; ! 4957: while (datamask) { ! 4958: DATAREG(movem_bit[datamask]) = (sint32)(sint16)fetchword(dstaddr); ! 4959: datamask&= ~(1<<movem_bit[datamask]); ! 4960: dstaddr+= 2; ! 4961: } ! 4962: while (addrmask) { ! 4963: ADDRREG(movem_bit[addrmask]) = (sint32)(sint16)fetchword(dstaddr); ! 4964: addrmask&= ~(1<<movem_bit[addrmask]); ! 4965: dstaddr+= 2; ! 4966: } ! 4967: PC+= 8; ! 4968: } ! 4969: ! 4970: void cpu_op_729a(t_ipc *ipc) /* MOVEMMR */ { ! 4971: /* mask ffff, bits 4cba, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 9, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4972: uint16 srcdata = ipc->src; ! 4973: uint32 dstaddr = ipc->dst; ! 4974: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 4975: uint8 datamask = srcdata & 0xFF; ! 4976: while (datamask) { ! 4977: DATAREG(movem_bit[datamask]) = (sint32)(sint16)fetchword(dstaddr); ! 4978: datamask&= ~(1<<movem_bit[datamask]); ! 4979: dstaddr+= 2; ! 4980: } ! 4981: while (addrmask) { ! 4982: ADDRREG(movem_bit[addrmask]) = (sint32)(sint16)fetchword(dstaddr); ! 4983: addrmask&= ~(1<<movem_bit[addrmask]); ! 4984: dstaddr+= 2; ! 4985: } ! 4986: PC+= 6; ! 4987: } ! 4988: ! 4989: void cpu_op_730a(t_ipc *ipc) /* MOVEMMR */ { ! 4990: /* mask ffff, bits 4cbb, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 10, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4991: uint16 srcdata = ipc->src; ! 4992: uint32 dstaddr = idxval_dst(ipc); ! 4993: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 4994: uint8 datamask = srcdata & 0xFF; ! 4995: while (datamask) { ! 4996: DATAREG(movem_bit[datamask]) = (sint32)(sint16)fetchword(dstaddr); ! 4997: datamask&= ~(1<<movem_bit[datamask]); ! 4998: dstaddr+= 2; ! 4999: } ! 5000: while (addrmask) { ! 5001: ADDRREG(movem_bit[addrmask]) = (sint32)(sint16)fetchword(dstaddr); ! 5002: addrmask&= ~(1<<movem_bit[addrmask]); ! 5003: dstaddr+= 2; ! 5004: } ! 5005: PC+= 6; ! 5006: } ! 5007: ! 5008: void cpu_op_731a(t_ipc *ipc) /* MOVEMMR */ { ! 5009: /* mask fff8, bits 4cd0, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 2, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5010: uint16 srcdata = ipc->src; ! 5011: int dstreg = (ipc->opcode >> 0) & 7; ! 5012: uint32 dstaddr = ADDRREG(dstreg); ! 5013: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 5014: uint8 datamask = srcdata & 0xFF; ! 5015: while (datamask) { ! 5016: DATAREG(movem_bit[datamask]) = fetchlong(dstaddr); ! 5017: datamask&= ~(1<<movem_bit[datamask]); ! 5018: dstaddr+= 4; ! 5019: } ! 5020: while (addrmask) { ! 5021: ADDRREG(movem_bit[addrmask]) = fetchlong(dstaddr); ! 5022: addrmask&= ~(1<<movem_bit[addrmask]); ! 5023: dstaddr+= 4; ! 5024: } ! 5025: PC+= 4; ! 5026: } ! 5027: ! 5028: void cpu_op_732a(t_ipc *ipc) /* MOVEMMR */ { ! 5029: /* mask fff8, bits 4cd8, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 3, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5030: uint16 srcdata = ipc->src; ! 5031: int dstreg = (ipc->opcode >> 0) & 7; ! 5032: uint32 dstaddr = ADDRREG(dstreg); ! 5033: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 5034: uint8 datamask = srcdata & 0xFF; ! 5035: while (datamask) { ! 5036: DATAREG(movem_bit[datamask]) = fetchlong(dstaddr); ! 5037: datamask&= ~(1<<movem_bit[datamask]); ! 5038: dstaddr+= 4; ! 5039: } ! 5040: while (addrmask) { ! 5041: ADDRREG(movem_bit[addrmask]) = fetchlong(dstaddr); ! 5042: addrmask&= ~(1<<movem_bit[addrmask]); ! 5043: dstaddr+= 4; ! 5044: } ! 5045: ADDRREG(dstreg) = dstaddr; ! 5046: PC+= 4; ! 5047: } ! 5048: ! 5049: void cpu_op_733a(t_ipc *ipc) /* MOVEMMR */ { ! 5050: /* mask fff8, bits 4ce8, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 5, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5051: uint16 srcdata = ipc->src; ! 5052: int dstreg = (ipc->opcode >> 0) & 7; ! 5053: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 5054: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 5055: uint8 datamask = srcdata & 0xFF; ! 5056: while (datamask) { ! 5057: DATAREG(movem_bit[datamask]) = fetchlong(dstaddr); ! 5058: datamask&= ~(1<<movem_bit[datamask]); ! 5059: dstaddr+= 4; ! 5060: } ! 5061: while (addrmask) { ! 5062: ADDRREG(movem_bit[addrmask]) = fetchlong(dstaddr); ! 5063: addrmask&= ~(1<<movem_bit[addrmask]); ! 5064: dstaddr+= 4; ! 5065: } ! 5066: PC+= 6; ! 5067: } ! 5068: ! 5069: void cpu_op_734a(t_ipc *ipc) /* MOVEMMR */ { ! 5070: /* mask fff8, bits 4cf0, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 6, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5071: uint16 srcdata = ipc->src; ! 5072: int dstreg = (ipc->opcode >> 0) & 7; ! 5073: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 5074: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 5075: uint8 datamask = srcdata & 0xFF; ! 5076: while (datamask) { ! 5077: DATAREG(movem_bit[datamask]) = fetchlong(dstaddr); ! 5078: datamask&= ~(1<<movem_bit[datamask]); ! 5079: dstaddr+= 4; ! 5080: } ! 5081: while (addrmask) { ! 5082: ADDRREG(movem_bit[addrmask]) = fetchlong(dstaddr); ! 5083: addrmask&= ~(1<<movem_bit[addrmask]); ! 5084: dstaddr+= 4; ! 5085: } ! 5086: PC+= 6; ! 5087: } ! 5088: ! 5089: void cpu_op_735a(t_ipc *ipc) /* MOVEMMR */ { ! 5090: /* mask ffff, bits 4cf8, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 7, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5091: uint16 srcdata = ipc->src; ! 5092: uint32 dstaddr = ipc->dst; ! 5093: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 5094: uint8 datamask = srcdata & 0xFF; ! 5095: while (datamask) { ! 5096: DATAREG(movem_bit[datamask]) = fetchlong(dstaddr); ! 5097: datamask&= ~(1<<movem_bit[datamask]); ! 5098: dstaddr+= 4; ! 5099: } ! 5100: while (addrmask) { ! 5101: ADDRREG(movem_bit[addrmask]) = fetchlong(dstaddr); ! 5102: addrmask&= ~(1<<movem_bit[addrmask]); ! 5103: dstaddr+= 4; ! 5104: } ! 5105: PC+= 6; ! 5106: } ! 5107: ! 5108: void cpu_op_736a(t_ipc *ipc) /* MOVEMMR */ { ! 5109: /* mask ffff, bits 4cf9, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 8, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5110: uint16 srcdata = ipc->src; ! 5111: uint32 dstaddr = ipc->dst; ! 5112: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 5113: uint8 datamask = srcdata & 0xFF; ! 5114: while (datamask) { ! 5115: DATAREG(movem_bit[datamask]) = fetchlong(dstaddr); ! 5116: datamask&= ~(1<<movem_bit[datamask]); ! 5117: dstaddr+= 4; ! 5118: } ! 5119: while (addrmask) { ! 5120: ADDRREG(movem_bit[addrmask]) = fetchlong(dstaddr); ! 5121: addrmask&= ~(1<<movem_bit[addrmask]); ! 5122: dstaddr+= 4; ! 5123: } ! 5124: PC+= 8; ! 5125: } ! 5126: ! 5127: void cpu_op_737a(t_ipc *ipc) /* MOVEMMR */ { ! 5128: /* mask ffff, bits 4cfa, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 9, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5129: uint16 srcdata = ipc->src; ! 5130: uint32 dstaddr = ipc->dst; ! 5131: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 5132: uint8 datamask = srcdata & 0xFF; ! 5133: while (datamask) { ! 5134: DATAREG(movem_bit[datamask]) = fetchlong(dstaddr); ! 5135: datamask&= ~(1<<movem_bit[datamask]); ! 5136: dstaddr+= 4; ! 5137: } ! 5138: while (addrmask) { ! 5139: ADDRREG(movem_bit[addrmask]) = fetchlong(dstaddr); ! 5140: addrmask&= ~(1<<movem_bit[addrmask]); ! 5141: dstaddr+= 4; ! 5142: } ! 5143: PC+= 6; ! 5144: } ! 5145: ! 5146: void cpu_op_738a(t_ipc *ipc) /* MOVEMMR */ { ! 5147: /* mask ffff, bits 4cfb, mnemonic 28, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 10, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5148: uint16 srcdata = ipc->src; ! 5149: uint32 dstaddr = idxval_dst(ipc); ! 5150: uint8 addrmask = (srcdata & 0xFF00) >> 8; ! 5151: uint8 datamask = srcdata & 0xFF; ! 5152: while (datamask) { ! 5153: DATAREG(movem_bit[datamask]) = fetchlong(dstaddr); ! 5154: datamask&= ~(1<<movem_bit[datamask]); ! 5155: dstaddr+= 4; ! 5156: } ! 5157: while (addrmask) { ! 5158: ADDRREG(movem_bit[addrmask]) = fetchlong(dstaddr); ! 5159: addrmask&= ~(1<<movem_bit[addrmask]); ! 5160: dstaddr+= 4; ! 5161: } ! 5162: PC+= 6; ! 5163: } ! 5164: ! 5165: void cpu_op_739a(t_ipc *ipc) /* TRAP */ { ! 5166: /* mask fff0, bits 4e40, mnemonic 47, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 0, stype 16, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5167: unsigned int srcdata = ipc->src; ! 5168: ! 5169: reg68k_vector(V_TRAP+srcdata, PC+2); ! 5170: } ! 5171: ! 5172: void cpu_op_740a(t_ipc *ipc) /* LINK */ { ! 5173: /* mask fff8, bits 4e50, mnemonic 51, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 12, dtype 1, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5174: uint16 srcdata = ipc->src; ! 5175: int dstreg = (ipc->opcode >> 0) & 7; ! 5176: uint32 dstdata = ADDRREG(dstreg); ! 5177: ! 5178: ADDRREG(7)-= 4; ! 5179: storelong(ADDRREG(7), dstdata); ! 5180: ADDRREG(dstreg) = ADDRREG(7); ! 5181: ADDRREG(7)+= (sint16)srcdata; ! 5182: PC+= 4; ! 5183: } ! 5184: ! 5185: void cpu_op_741a(t_ipc *ipc) /* UNLK */ { ! 5186: /* mask fff8, bits 4e58, mnemonic 52, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 1, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5187: int srcreg = (ipc->opcode >> 0) & 7; ! 5188: uint32 srcdata = ADDRREG(srcreg); ! 5189: ! 5190: ADDRREG(srcreg) = fetchlong(srcdata); ! 5191: ADDRREG(7) = srcdata+4; ! 5192: PC+= 2; ! 5193: } ! 5194: ! 5195: void cpu_op_742a(t_ipc *ipc) /* MOVETUSP */ { ! 5196: /* mask fff8, bits 4e60, mnemonic 29, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 1, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5197: int srcreg = (ipc->opcode >> 0) & 7; ! 5198: uint32 srcdata = ADDRREG(srcreg); ! 5199: ! 5200: if (!SFLAG) ! 5201: reg68k_vector(V_PRIVILEGE, PC+2); ! 5202: ! 5203: SP = srcdata; ! 5204: PC+= 2; ! 5205: } ! 5206: ! 5207: void cpu_op_743a(t_ipc *ipc) /* MOVEFUSP */ { ! 5208: /* mask fff8, bits 4e68, mnemonic 30, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 1, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5209: int srcreg = (ipc->opcode >> 0) & 7; ! 5210: uint32 outdata; ! 5211: ! 5212: if (!SFLAG) ! 5213: reg68k_vector(V_PRIVILEGE, PC+2); ! 5214: ! 5215: outdata = SP; ! 5216: ADDRREG(srcreg) = outdata; ! 5217: PC+= 2; ! 5218: } ! 5219: ! 5220: void cpu_op_744a(t_ipc *ipc) /* RESET */ { ! 5221: /* mask ffff, bits 4e70, mnemonic 48, priv -1, endblk -1, imm_notzero 0, used 0 set 0, size 0, stype 20, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5222: printf("RESET @ %x\n", PC); ! 5223: exit(1); ! 5224: PC+= 2; ! 5225: } ! 5226: ! 5227: void cpu_op_745a(t_ipc *ipc) /* NOP */ { ! 5228: /* mask ffff, bits 4e71, mnemonic 49, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 0, stype 20, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5229: PC+= 2; ! 5230: } ! 5231: ! 5232: void cpu_op_746a(t_ipc *ipc) /* STOP */ { ! 5233: /* mask ffff, bits 4e72, mnemonic 50, priv -1, endblk -1, imm_notzero 0, used 0 set -1, size 0, stype 12, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5234: uint16 srcdata = ipc->src; ! 5235: ! 5236: switch(regs.stop) { ! 5237: case 1: ! 5238: break; ! 5239: case 2: ! 5240: PC+= 2; ! 5241: break; ! 5242: default: ! 5243: if (!(SFLAG && (srcdata & 1<<13))) ! 5244: reg68k_vector(V_PRIVILEGE, PC+4); ! 5245: SR = srcdata; ! 5246: STOP = 1; ! 5247: printf("STOP @ %%x\n", PC); ! 5248: exit(1); ! 5249: } ! 5250: PC+= 4; ! 5251: } ! 5252: ! 5253: void cpu_op_746b(t_ipc *ipc) /* STOP */ { ! 5254: /* mask ffff, bits 4e72, mnemonic 50, priv -1, endblk -1, imm_notzero 0, used 0 set -1, size 0, stype 12, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5255: uint16 srcdata = ipc->src; ! 5256: ! 5257: switch(regs.stop) { ! 5258: case 1: ! 5259: break; ! 5260: case 2: ! 5261: PC+= 2; ! 5262: break; ! 5263: default: ! 5264: if (!(SFLAG && (srcdata & 1<<13))) ! 5265: reg68k_vector(V_PRIVILEGE, PC+4); ! 5266: SR = srcdata; ! 5267: STOP = 1; ! 5268: printf("STOP @ %%x\n", PC); ! 5269: exit(1); ! 5270: } ! 5271: PC+= 4; ! 5272: } ! 5273: ! 5274: void cpu_op_747a(t_ipc *ipc) /* RTE */ { ! 5275: /* mask ffff, bits 4e73, mnemonic 53, priv -1, endblk -1, imm_notzero 0, used 0 set -1, size 0, stype 20, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5276: if (!SFLAG) ! 5277: reg68k_vector(V_PRIVILEGE, PC+2); ! 5278: ! 5279: SR = fetchword(ADDRREG(7)); ! 5280: PC = fetchlong(ADDRREG(7)+2); ! 5281: ADDRREG(7)+= 6; ! 5282: if (!reg68k_sr.sr_struct.s) { ! 5283: /* mode change, swap SP and A7 */ ! 5284: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 5285: } ! 5286: } ! 5287: ! 5288: void cpu_op_747b(t_ipc *ipc) /* RTE */ { ! 5289: /* mask ffff, bits 4e73, mnemonic 53, priv -1, endblk -1, imm_notzero 0, used 0 set -1, size 0, stype 20, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5290: if (!SFLAG) ! 5291: reg68k_vector(V_PRIVILEGE, PC+2); ! 5292: ! 5293: SR = fetchword(ADDRREG(7)); ! 5294: PC = fetchlong(ADDRREG(7)+2); ! 5295: ADDRREG(7)+= 6; ! 5296: if (!reg68k_sr.sr_struct.s) { ! 5297: /* mode change, swap SP and A7 */ ! 5298: ADDRREG(7)^= SP; SP^= ADDRREG(7); ADDRREG(7)^= SP; ! 5299: } ! 5300: } ! 5301: ! 5302: void cpu_op_748a(t_ipc *ipc) /* RTS */ { ! 5303: /* mask ffff, bits 4e75, mnemonic 54, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 0, stype 20, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5304: PC = fetchlong(ADDRREG(7)); ! 5305: ADDRREG(7)+= 4; ! 5306: } ! 5307: ! 5308: void cpu_op_749a(t_ipc *ipc) /* TRAPV */ { ! 5309: /* mask ffff, bits 4e76, mnemonic 46, priv 0, endblk -1, imm_notzero 0, used 8 set 0, size 0, stype 20, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5310: if (VFLAG) { ! 5311: reg68k_vector(V_TRAPV, PC+2); ! 5312: } ! 5313: PC+= 2; ! 5314: } ! 5315: ! 5316: void cpu_op_750a(t_ipc *ipc) /* RTR */ { ! 5317: /* mask ffff, bits 4e77, mnemonic 55, priv 0, endblk -1, imm_notzero 0, used 0 set -1, size 0, stype 20, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5318: SR = (SR & ~0xFF) | (fetchword(ADDRREG(7)) & 0xFF); ! 5319: PC = fetchlong(ADDRREG(7)+2); ! 5320: ADDRREG(7)+= 6; ! 5321: } ! 5322: ! 5323: void cpu_op_750b(t_ipc *ipc) /* RTR */ { ! 5324: /* mask ffff, bits 4e77, mnemonic 55, priv 0, endblk -1, imm_notzero 0, used 0 set -1, size 0, stype 20, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5325: SR = (SR & ~0xFF) | (fetchword(ADDRREG(7)) & 0xFF); ! 5326: PC = fetchlong(ADDRREG(7)+2); ! 5327: ADDRREG(7)+= 6; ! 5328: } ! 5329: ! 5330: void cpu_op_751a(t_ipc *ipc) /* JSR */ { ! 5331: /* mask fff8, bits 4e90, mnemonic 56, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5332: int srcreg = (ipc->opcode >> 0) & 7; ! 5333: uint32 srcaddr = ADDRREG(srcreg); ! 5334: ! 5335: ADDRREG(7)-= 4; ! 5336: storelong(ADDRREG(7), PC+2); ! 5337: PC = srcaddr; ! 5338: } ! 5339: ! 5340: void cpu_op_752a(t_ipc *ipc) /* JSR */ { ! 5341: /* mask fff8, bits 4ea8, mnemonic 56, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5342: int srcreg = (ipc->opcode >> 0) & 7; ! 5343: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 5344: ! 5345: ADDRREG(7)-= 4; ! 5346: storelong(ADDRREG(7), PC+4); ! 5347: PC = srcaddr; ! 5348: } ! 5349: ! 5350: void cpu_op_753a(t_ipc *ipc) /* JSR */ { ! 5351: /* mask fff8, bits 4eb0, mnemonic 56, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5352: int srcreg = (ipc->opcode >> 0) & 7; ! 5353: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 5354: ! 5355: ADDRREG(7)-= 4; ! 5356: storelong(ADDRREG(7), PC+4); ! 5357: PC = srcaddr; ! 5358: } ! 5359: ! 5360: void cpu_op_754a(t_ipc *ipc) /* JSR */ { ! 5361: /* mask ffff, bits 4eb8, mnemonic 56, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5362: uint32 srcaddr = ipc->src; ! 5363: ! 5364: ADDRREG(7)-= 4; ! 5365: storelong(ADDRREG(7), PC+4); ! 5366: PC = srcaddr; ! 5367: } ! 5368: ! 5369: void cpu_op_755a(t_ipc *ipc) /* JSR */ { ! 5370: /* mask ffff, bits 4eb9, mnemonic 56, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5371: uint32 srcaddr = ipc->src; ! 5372: ! 5373: ADDRREG(7)-= 4; ! 5374: storelong(ADDRREG(7), PC+6); ! 5375: PC = srcaddr; ! 5376: } ! 5377: ! 5378: void cpu_op_756a(t_ipc *ipc) /* JSR */ { ! 5379: /* mask ffff, bits 4eba, mnemonic 56, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 9, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5380: uint32 srcaddr = ipc->src; ! 5381: ! 5382: ADDRREG(7)-= 4; ! 5383: storelong(ADDRREG(7), PC+4); ! 5384: PC = srcaddr; ! 5385: } ! 5386: ! 5387: void cpu_op_757a(t_ipc *ipc) /* JSR */ { ! 5388: /* mask ffff, bits 4ebb, mnemonic 56, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 10, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5389: uint32 srcaddr = idxval_src(ipc); ! 5390: ! 5391: ADDRREG(7)-= 4; ! 5392: storelong(ADDRREG(7), PC+4); ! 5393: PC = srcaddr; ! 5394: } ! 5395: ! 5396: void cpu_op_758a(t_ipc *ipc) /* JMP */ { ! 5397: /* mask fff8, bits 4ed0, mnemonic 57, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5398: int srcreg = (ipc->opcode >> 0) & 7; ! 5399: uint32 srcaddr = ADDRREG(srcreg); ! 5400: ! 5401: PC = srcaddr; ! 5402: } ! 5403: ! 5404: void cpu_op_759a(t_ipc *ipc) /* JMP */ { ! 5405: /* mask fff8, bits 4ee8, mnemonic 57, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5406: int srcreg = (ipc->opcode >> 0) & 7; ! 5407: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 5408: ! 5409: PC = srcaddr; ! 5410: } ! 5411: ! 5412: void cpu_op_760a(t_ipc *ipc) /* JMP */ { ! 5413: /* mask fff8, bits 4ef0, mnemonic 57, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5414: int srcreg = (ipc->opcode >> 0) & 7; ! 5415: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 5416: ! 5417: PC = srcaddr; ! 5418: } ! 5419: ! 5420: void cpu_op_761a(t_ipc *ipc) /* JMP */ { ! 5421: /* mask ffff, bits 4ef8, mnemonic 57, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5422: uint32 srcaddr = ipc->src; ! 5423: ! 5424: PC = srcaddr; ! 5425: } ! 5426: ! 5427: void cpu_op_762a(t_ipc *ipc) /* JMP */ { ! 5428: /* mask ffff, bits 4ef9, mnemonic 57, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5429: uint32 srcaddr = ipc->src; ! 5430: ! 5431: PC = srcaddr; ! 5432: } ! 5433: ! 5434: void cpu_op_763a(t_ipc *ipc) /* JMP */ { ! 5435: /* mask ffff, bits 4efa, mnemonic 57, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 9, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5436: uint32 srcaddr = ipc->src; ! 5437: ! 5438: PC = srcaddr; ! 5439: } ! 5440: ! 5441: void cpu_op_764a(t_ipc *ipc) /* JMP */ { ! 5442: /* mask ffff, bits 4efb, mnemonic 57, priv 0, endblk -1, imm_notzero 0, used 0 set 0, size 3, stype 10, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 5443: uint32 srcaddr = idxval_src(ipc); ! 5444: ! 5445: PC = srcaddr; ! 5446: } ! 5447: ! 5448: void cpu_op_765a(t_ipc *ipc) /* CHK */ { ! 5449: /* mask f1f8, bits 4180, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5450: int srcreg = (ipc->opcode >> 0) & 7; ! 5451: uint16 srcdata = DATAREG(srcreg); ! 5452: int dstreg = (ipc->opcode >> 9) & 7; ! 5453: uint16 dstdata = DATAREG(dstreg); ! 5454: ! 5455: if ((sint16)srcdata < 0) { ! 5456: reg68k_vector(V_CHK, PC+2); ! 5457: } else if (dstdata > srcdata) { ! 5458: reg68k_vector(V_CHK, PC+2); ! 5459: } ! 5460: PC+= 2; ! 5461: } ! 5462: ! 5463: void cpu_op_765b(t_ipc *ipc) /* CHK */ { ! 5464: /* mask f1f8, bits 4180, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5465: int srcreg = (ipc->opcode >> 0) & 7; ! 5466: uint16 srcdata = DATAREG(srcreg); ! 5467: int dstreg = (ipc->opcode >> 9) & 7; ! 5468: uint16 dstdata = DATAREG(dstreg); ! 5469: ! 5470: if ((sint16)srcdata < 0) { ! 5471: NFLAG = 1; ! 5472: reg68k_vector(V_CHK, PC+2); ! 5473: } else if (dstdata > srcdata) { ! 5474: NFLAG = 0; ! 5475: reg68k_vector(V_CHK, PC+2); ! 5476: } ! 5477: PC+= 2; ! 5478: } ! 5479: ! 5480: void cpu_op_766a(t_ipc *ipc) /* CHK */ { ! 5481: /* mask f1f8, bits 4190, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5482: int srcreg = (ipc->opcode >> 0) & 7; ! 5483: uint32 srcaddr = ADDRREG(srcreg); ! 5484: uint16 srcdata = fetchword(srcaddr); ! 5485: int dstreg = (ipc->opcode >> 9) & 7; ! 5486: uint16 dstdata = DATAREG(dstreg); ! 5487: ! 5488: if ((sint16)srcdata < 0) { ! 5489: reg68k_vector(V_CHK, PC+2); ! 5490: } else if (dstdata > srcdata) { ! 5491: reg68k_vector(V_CHK, PC+2); ! 5492: } ! 5493: PC+= 2; ! 5494: } ! 5495: ! 5496: void cpu_op_766b(t_ipc *ipc) /* CHK */ { ! 5497: /* mask f1f8, bits 4190, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5498: int srcreg = (ipc->opcode >> 0) & 7; ! 5499: uint32 srcaddr = ADDRREG(srcreg); ! 5500: uint16 srcdata = fetchword(srcaddr); ! 5501: int dstreg = (ipc->opcode >> 9) & 7; ! 5502: uint16 dstdata = DATAREG(dstreg); ! 5503: ! 5504: if ((sint16)srcdata < 0) { ! 5505: NFLAG = 1; ! 5506: reg68k_vector(V_CHK, PC+2); ! 5507: } else if (dstdata > srcdata) { ! 5508: NFLAG = 0; ! 5509: reg68k_vector(V_CHK, PC+2); ! 5510: } ! 5511: PC+= 2; ! 5512: } ! 5513: ! 5514: void cpu_op_767a(t_ipc *ipc) /* CHK */ { ! 5515: /* mask f1f8, bits 4198, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5516: int srcreg = (ipc->opcode >> 0) & 7; ! 5517: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 5518: uint16 srcdata = fetchword(srcaddr); ! 5519: int dstreg = (ipc->opcode >> 9) & 7; ! 5520: uint16 dstdata = DATAREG(dstreg); ! 5521: ! 5522: if ((sint16)srcdata < 0) { ! 5523: reg68k_vector(V_CHK, PC+2); ! 5524: } else if (dstdata > srcdata) { ! 5525: reg68k_vector(V_CHK, PC+2); ! 5526: } ! 5527: PC+= 2; ! 5528: } ! 5529: ! 5530: void cpu_op_767b(t_ipc *ipc) /* CHK */ { ! 5531: /* mask f1f8, bits 4198, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5532: int srcreg = (ipc->opcode >> 0) & 7; ! 5533: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 5534: uint16 srcdata = fetchword(srcaddr); ! 5535: int dstreg = (ipc->opcode >> 9) & 7; ! 5536: uint16 dstdata = DATAREG(dstreg); ! 5537: ! 5538: if ((sint16)srcdata < 0) { ! 5539: NFLAG = 1; ! 5540: reg68k_vector(V_CHK, PC+2); ! 5541: } else if (dstdata > srcdata) { ! 5542: NFLAG = 0; ! 5543: reg68k_vector(V_CHK, PC+2); ! 5544: } ! 5545: PC+= 2; ! 5546: } ! 5547: ! 5548: void cpu_op_768a(t_ipc *ipc) /* CHK */ { ! 5549: /* mask f1f8, bits 41a0, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5550: int srcreg = (ipc->opcode >> 0) & 7; ! 5551: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 5552: uint16 srcdata = fetchword(srcaddr); ! 5553: int dstreg = (ipc->opcode >> 9) & 7; ! 5554: uint16 dstdata = DATAREG(dstreg); ! 5555: ! 5556: if ((sint16)srcdata < 0) { ! 5557: reg68k_vector(V_CHK, PC+2); ! 5558: } else if (dstdata > srcdata) { ! 5559: reg68k_vector(V_CHK, PC+2); ! 5560: } ! 5561: PC+= 2; ! 5562: } ! 5563: ! 5564: void cpu_op_768b(t_ipc *ipc) /* CHK */ { ! 5565: /* mask f1f8, bits 41a0, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5566: int srcreg = (ipc->opcode >> 0) & 7; ! 5567: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 5568: uint16 srcdata = fetchword(srcaddr); ! 5569: int dstreg = (ipc->opcode >> 9) & 7; ! 5570: uint16 dstdata = DATAREG(dstreg); ! 5571: ! 5572: if ((sint16)srcdata < 0) { ! 5573: NFLAG = 1; ! 5574: reg68k_vector(V_CHK, PC+2); ! 5575: } else if (dstdata > srcdata) { ! 5576: NFLAG = 0; ! 5577: reg68k_vector(V_CHK, PC+2); ! 5578: } ! 5579: PC+= 2; ! 5580: } ! 5581: ! 5582: void cpu_op_769a(t_ipc *ipc) /* CHK */ { ! 5583: /* mask f1f8, bits 41a8, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5584: int srcreg = (ipc->opcode >> 0) & 7; ! 5585: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 5586: uint16 srcdata = fetchword(srcaddr); ! 5587: int dstreg = (ipc->opcode >> 9) & 7; ! 5588: uint16 dstdata = DATAREG(dstreg); ! 5589: ! 5590: if ((sint16)srcdata < 0) { ! 5591: reg68k_vector(V_CHK, PC+4); ! 5592: } else if (dstdata > srcdata) { ! 5593: reg68k_vector(V_CHK, PC+4); ! 5594: } ! 5595: PC+= 4; ! 5596: } ! 5597: ! 5598: void cpu_op_769b(t_ipc *ipc) /* CHK */ { ! 5599: /* mask f1f8, bits 41a8, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5600: int srcreg = (ipc->opcode >> 0) & 7; ! 5601: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 5602: uint16 srcdata = fetchword(srcaddr); ! 5603: int dstreg = (ipc->opcode >> 9) & 7; ! 5604: uint16 dstdata = DATAREG(dstreg); ! 5605: ! 5606: if ((sint16)srcdata < 0) { ! 5607: NFLAG = 1; ! 5608: reg68k_vector(V_CHK, PC+4); ! 5609: } else if (dstdata > srcdata) { ! 5610: NFLAG = 0; ! 5611: reg68k_vector(V_CHK, PC+4); ! 5612: } ! 5613: PC+= 4; ! 5614: } ! 5615: ! 5616: void cpu_op_770a(t_ipc *ipc) /* CHK */ { ! 5617: /* mask f1f8, bits 41b0, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5618: int srcreg = (ipc->opcode >> 0) & 7; ! 5619: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 5620: uint16 srcdata = fetchword(srcaddr); ! 5621: int dstreg = (ipc->opcode >> 9) & 7; ! 5622: uint16 dstdata = DATAREG(dstreg); ! 5623: ! 5624: if ((sint16)srcdata < 0) { ! 5625: reg68k_vector(V_CHK, PC+4); ! 5626: } else if (dstdata > srcdata) { ! 5627: reg68k_vector(V_CHK, PC+4); ! 5628: } ! 5629: PC+= 4; ! 5630: } ! 5631: ! 5632: void cpu_op_770b(t_ipc *ipc) /* CHK */ { ! 5633: /* mask f1f8, bits 41b0, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5634: int srcreg = (ipc->opcode >> 0) & 7; ! 5635: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 5636: uint16 srcdata = fetchword(srcaddr); ! 5637: int dstreg = (ipc->opcode >> 9) & 7; ! 5638: uint16 dstdata = DATAREG(dstreg); ! 5639: ! 5640: if ((sint16)srcdata < 0) { ! 5641: NFLAG = 1; ! 5642: reg68k_vector(V_CHK, PC+4); ! 5643: } else if (dstdata > srcdata) { ! 5644: NFLAG = 0; ! 5645: reg68k_vector(V_CHK, PC+4); ! 5646: } ! 5647: PC+= 4; ! 5648: } ! 5649: ! 5650: void cpu_op_771a(t_ipc *ipc) /* CHK */ { ! 5651: /* mask f1ff, bits 41b8, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5652: uint32 srcaddr = ipc->src; ! 5653: uint16 srcdata = fetchword(srcaddr); ! 5654: int dstreg = (ipc->opcode >> 9) & 7; ! 5655: uint16 dstdata = DATAREG(dstreg); ! 5656: ! 5657: if ((sint16)srcdata < 0) { ! 5658: reg68k_vector(V_CHK, PC+4); ! 5659: } else if (dstdata > srcdata) { ! 5660: reg68k_vector(V_CHK, PC+4); ! 5661: } ! 5662: PC+= 4; ! 5663: } ! 5664: ! 5665: void cpu_op_771b(t_ipc *ipc) /* CHK */ { ! 5666: /* mask f1ff, bits 41b8, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5667: uint32 srcaddr = ipc->src; ! 5668: uint16 srcdata = fetchword(srcaddr); ! 5669: int dstreg = (ipc->opcode >> 9) & 7; ! 5670: uint16 dstdata = DATAREG(dstreg); ! 5671: ! 5672: if ((sint16)srcdata < 0) { ! 5673: NFLAG = 1; ! 5674: reg68k_vector(V_CHK, PC+4); ! 5675: } else if (dstdata > srcdata) { ! 5676: NFLAG = 0; ! 5677: reg68k_vector(V_CHK, PC+4); ! 5678: } ! 5679: PC+= 4; ! 5680: } ! 5681: ! 5682: void cpu_op_772a(t_ipc *ipc) /* CHK */ { ! 5683: /* mask f1ff, bits 41b9, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5684: uint32 srcaddr = ipc->src; ! 5685: uint16 srcdata = fetchword(srcaddr); ! 5686: int dstreg = (ipc->opcode >> 9) & 7; ! 5687: uint16 dstdata = DATAREG(dstreg); ! 5688: ! 5689: if ((sint16)srcdata < 0) { ! 5690: reg68k_vector(V_CHK, PC+6); ! 5691: } else if (dstdata > srcdata) { ! 5692: reg68k_vector(V_CHK, PC+6); ! 5693: } ! 5694: PC+= 6; ! 5695: } ! 5696: ! 5697: void cpu_op_772b(t_ipc *ipc) /* CHK */ { ! 5698: /* mask f1ff, bits 41b9, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5699: uint32 srcaddr = ipc->src; ! 5700: uint16 srcdata = fetchword(srcaddr); ! 5701: int dstreg = (ipc->opcode >> 9) & 7; ! 5702: uint16 dstdata = DATAREG(dstreg); ! 5703: ! 5704: if ((sint16)srcdata < 0) { ! 5705: NFLAG = 1; ! 5706: reg68k_vector(V_CHK, PC+6); ! 5707: } else if (dstdata > srcdata) { ! 5708: NFLAG = 0; ! 5709: reg68k_vector(V_CHK, PC+6); ! 5710: } ! 5711: PC+= 6; ! 5712: } ! 5713: ! 5714: void cpu_op_773a(t_ipc *ipc) /* CHK */ { ! 5715: /* mask f1ff, bits 41ba, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5716: uint32 srcaddr = ipc->src; ! 5717: uint16 srcdata = fetchword(srcaddr); ! 5718: int dstreg = (ipc->opcode >> 9) & 7; ! 5719: uint16 dstdata = DATAREG(dstreg); ! 5720: ! 5721: if ((sint16)srcdata < 0) { ! 5722: reg68k_vector(V_CHK, PC+4); ! 5723: } else if (dstdata > srcdata) { ! 5724: reg68k_vector(V_CHK, PC+4); ! 5725: } ! 5726: PC+= 4; ! 5727: } ! 5728: ! 5729: void cpu_op_773b(t_ipc *ipc) /* CHK */ { ! 5730: /* mask f1ff, bits 41ba, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5731: uint32 srcaddr = ipc->src; ! 5732: uint16 srcdata = fetchword(srcaddr); ! 5733: int dstreg = (ipc->opcode >> 9) & 7; ! 5734: uint16 dstdata = DATAREG(dstreg); ! 5735: ! 5736: if ((sint16)srcdata < 0) { ! 5737: NFLAG = 1; ! 5738: reg68k_vector(V_CHK, PC+4); ! 5739: } else if (dstdata > srcdata) { ! 5740: NFLAG = 0; ! 5741: reg68k_vector(V_CHK, PC+4); ! 5742: } ! 5743: PC+= 4; ! 5744: } ! 5745: ! 5746: void cpu_op_774a(t_ipc *ipc) /* CHK */ { ! 5747: /* mask f1ff, bits 41bb, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5748: uint32 srcaddr = idxval_src(ipc); ! 5749: uint16 srcdata = fetchword(srcaddr); ! 5750: int dstreg = (ipc->opcode >> 9) & 7; ! 5751: uint16 dstdata = DATAREG(dstreg); ! 5752: ! 5753: if ((sint16)srcdata < 0) { ! 5754: reg68k_vector(V_CHK, PC+4); ! 5755: } else if (dstdata > srcdata) { ! 5756: reg68k_vector(V_CHK, PC+4); ! 5757: } ! 5758: PC+= 4; ! 5759: } ! 5760: ! 5761: void cpu_op_774b(t_ipc *ipc) /* CHK */ { ! 5762: /* mask f1ff, bits 41bb, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5763: uint32 srcaddr = idxval_src(ipc); ! 5764: uint16 srcdata = fetchword(srcaddr); ! 5765: int dstreg = (ipc->opcode >> 9) & 7; ! 5766: uint16 dstdata = DATAREG(dstreg); ! 5767: ! 5768: if ((sint16)srcdata < 0) { ! 5769: NFLAG = 1; ! 5770: reg68k_vector(V_CHK, PC+4); ! 5771: } else if (dstdata > srcdata) { ! 5772: NFLAG = 0; ! 5773: reg68k_vector(V_CHK, PC+4); ! 5774: } ! 5775: PC+= 4; ! 5776: } ! 5777: ! 5778: void cpu_op_775a(t_ipc *ipc) /* CHK */ { ! 5779: /* mask f1ff, bits 41bc, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5780: uint16 srcdata = ipc->src; ! 5781: int dstreg = (ipc->opcode >> 9) & 7; ! 5782: uint16 dstdata = DATAREG(dstreg); ! 5783: ! 5784: if ((sint16)srcdata < 0) { ! 5785: reg68k_vector(V_CHK, PC+4); ! 5786: } else if (dstdata > srcdata) { ! 5787: reg68k_vector(V_CHK, PC+4); ! 5788: } ! 5789: PC+= 4; ! 5790: } ! 5791: ! 5792: void cpu_op_775b(t_ipc *ipc) /* CHK */ { ! 5793: /* mask f1ff, bits 41bc, mnemonic 45, priv 0, endblk 0, imm_notzero 0, used 0 set 2, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5794: uint16 srcdata = ipc->src; ! 5795: int dstreg = (ipc->opcode >> 9) & 7; ! 5796: uint16 dstdata = DATAREG(dstreg); ! 5797: ! 5798: if ((sint16)srcdata < 0) { ! 5799: NFLAG = 1; ! 5800: reg68k_vector(V_CHK, PC+4); ! 5801: } else if (dstdata > srcdata) { ! 5802: NFLAG = 0; ! 5803: reg68k_vector(V_CHK, PC+4); ! 5804: } ! 5805: PC+= 4; ! 5806: } ! 5807: ! 5808: void cpu_op_776a(t_ipc *ipc) /* LEA */ { ! 5809: /* mask f1f8, bits 41d0, mnemonic 40, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 2, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5810: int srcreg = (ipc->opcode >> 0) & 7; ! 5811: uint32 srcaddr = ADDRREG(srcreg); ! 5812: int dstreg = (ipc->opcode >> 9) & 7; ! 5813: uint32 outdata = srcaddr; ! 5814: ! 5815: ADDRREG(dstreg) = outdata; ! 5816: PC+= 2; ! 5817: } ! 5818: ! 5819: void cpu_op_777a(t_ipc *ipc) /* LEA */ { ! 5820: /* mask f1f8, bits 41e8, mnemonic 40, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 5, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5821: int srcreg = (ipc->opcode >> 0) & 7; ! 5822: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 5823: int dstreg = (ipc->opcode >> 9) & 7; ! 5824: uint32 outdata = srcaddr; ! 5825: ! 5826: ADDRREG(dstreg) = outdata; ! 5827: PC+= 4; ! 5828: } ! 5829: ! 5830: void cpu_op_778a(t_ipc *ipc) /* LEA */ { ! 5831: /* mask f1f8, bits 41f0, mnemonic 40, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 6, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5832: int srcreg = (ipc->opcode >> 0) & 7; ! 5833: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 5834: int dstreg = (ipc->opcode >> 9) & 7; ! 5835: uint32 outdata = srcaddr; ! 5836: ! 5837: ADDRREG(dstreg) = outdata; ! 5838: PC+= 4; ! 5839: } ! 5840: ! 5841: void cpu_op_779a(t_ipc *ipc) /* LEA */ { ! 5842: /* mask f1ff, bits 41f8, mnemonic 40, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 7, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5843: uint32 srcaddr = ipc->src; ! 5844: int dstreg = (ipc->opcode >> 9) & 7; ! 5845: uint32 outdata = srcaddr; ! 5846: ! 5847: ADDRREG(dstreg) = outdata; ! 5848: PC+= 4; ! 5849: } ! 5850: ! 5851: void cpu_op_780a(t_ipc *ipc) /* LEA */ { ! 5852: /* mask f1ff, bits 41f9, mnemonic 40, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 8, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5853: uint32 srcaddr = ipc->src; ! 5854: int dstreg = (ipc->opcode >> 9) & 7; ! 5855: uint32 outdata = srcaddr; ! 5856: ! 5857: ADDRREG(dstreg) = outdata; ! 5858: PC+= 6; ! 5859: } ! 5860: ! 5861: void cpu_op_781a(t_ipc *ipc) /* LEA */ { ! 5862: /* mask f1ff, bits 41fa, mnemonic 40, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 9, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5863: uint32 srcaddr = ipc->src; ! 5864: int dstreg = (ipc->opcode >> 9) & 7; ! 5865: uint32 outdata = srcaddr; ! 5866: ! 5867: ADDRREG(dstreg) = outdata; ! 5868: PC+= 4; ! 5869: } ! 5870: ! 5871: void cpu_op_782a(t_ipc *ipc) /* LEA */ { ! 5872: /* mask f1ff, bits 41fb, mnemonic 40, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 10, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 5873: uint32 srcaddr = idxval_src(ipc); ! 5874: int dstreg = (ipc->opcode >> 9) & 7; ! 5875: uint32 outdata = srcaddr; ! 5876: ! 5877: ADDRREG(dstreg) = outdata; ! 5878: PC+= 4; ! 5879: } ! 5880:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.