|
|
1.1 ! root 1: /*****************************************************************************/ ! 2: /* Generator - Sega Genesis emulation - (c) James Ponder 1997-1998 */ ! 3: /*****************************************************************************/ ! 4: /* */ ! 5: /* cpu68k-b.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_1229a(t_ipc *ipc) /* CMP */ { ! 19: /* mask f1f8, bits b000, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 20: int srcreg = (ipc->opcode >> 0) & 7; ! 21: uint8 srcdata = DATAREG(srcreg); ! 22: int dstreg = (ipc->opcode >> 9) & 7; ! 23: uint8 dstdata = DATAREG(dstreg); ! 24: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 25: PC+= 2; ! 26: } ! 27: ! 28: void cpu_op_1229b(t_ipc *ipc) /* CMP */ { ! 29: /* mask f1f8, bits b000, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 30: int srcreg = (ipc->opcode >> 0) & 7; ! 31: uint8 srcdata = DATAREG(srcreg); ! 32: int dstreg = (ipc->opcode >> 9) & 7; ! 33: uint8 dstdata = DATAREG(dstreg); ! 34: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 35: ! 36: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 37: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 38: CFLAG = srcdata > dstdata; ! 39: NFLAG = ((sint8)outdata) < 0; ! 40: ZFLAG = !outdata; ! 41: PC+= 2; ! 42: } ! 43: ! 44: void cpu_op_1230a(t_ipc *ipc) /* CMP */ { ! 45: /* mask f1f8, bits b008, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 46: int srcreg = (ipc->opcode >> 0) & 7; ! 47: uint8 srcdata = ADDRREG(srcreg); ! 48: int dstreg = (ipc->opcode >> 9) & 7; ! 49: uint8 dstdata = DATAREG(dstreg); ! 50: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 51: PC+= 2; ! 52: } ! 53: ! 54: void cpu_op_1230b(t_ipc *ipc) /* CMP */ { ! 55: /* mask f1f8, bits b008, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 56: int srcreg = (ipc->opcode >> 0) & 7; ! 57: uint8 srcdata = ADDRREG(srcreg); ! 58: int dstreg = (ipc->opcode >> 9) & 7; ! 59: uint8 dstdata = DATAREG(dstreg); ! 60: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 61: ! 62: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 63: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 64: CFLAG = srcdata > dstdata; ! 65: NFLAG = ((sint8)outdata) < 0; ! 66: ZFLAG = !outdata; ! 67: PC+= 2; ! 68: } ! 69: ! 70: void cpu_op_1231a(t_ipc *ipc) /* CMP */ { ! 71: /* mask f1f8, bits b010, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 72: int srcreg = (ipc->opcode >> 0) & 7; ! 73: uint32 srcaddr = ADDRREG(srcreg); ! 74: uint8 srcdata = fetchbyte(srcaddr); ! 75: int dstreg = (ipc->opcode >> 9) & 7; ! 76: uint8 dstdata = DATAREG(dstreg); ! 77: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 78: PC+= 2; ! 79: } ! 80: ! 81: void cpu_op_1231b(t_ipc *ipc) /* CMP */ { ! 82: /* mask f1f8, bits b010, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 83: int srcreg = (ipc->opcode >> 0) & 7; ! 84: uint32 srcaddr = ADDRREG(srcreg); ! 85: uint8 srcdata = fetchbyte(srcaddr); ! 86: int dstreg = (ipc->opcode >> 9) & 7; ! 87: uint8 dstdata = DATAREG(dstreg); ! 88: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 89: ! 90: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 91: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 92: CFLAG = srcdata > dstdata; ! 93: NFLAG = ((sint8)outdata) < 0; ! 94: ZFLAG = !outdata; ! 95: PC+= 2; ! 96: } ! 97: ! 98: void cpu_op_1232a(t_ipc *ipc) /* CMP */ { ! 99: /* mask f1f8, bits b018, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 100: int srcreg = (ipc->opcode >> 0) & 7; ! 101: uint32 srcaddr = ADDRREG(srcreg); ! 102: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 103: uint8 srcdata = fetchbyte(srcaddr); ! 104: int dstreg = (ipc->opcode >> 9) & 7; ! 105: uint8 dstdata = DATAREG(dstreg); ! 106: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 107: PC+= 2; ! 108: } ! 109: ! 110: void cpu_op_1232b(t_ipc *ipc) /* CMP */ { ! 111: /* mask f1f8, bits b018, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 112: int srcreg = (ipc->opcode >> 0) & 7; ! 113: uint32 srcaddr = ADDRREG(srcreg); ! 114: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 115: uint8 srcdata = fetchbyte(srcaddr); ! 116: int dstreg = (ipc->opcode >> 9) & 7; ! 117: uint8 dstdata = DATAREG(dstreg); ! 118: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 119: ! 120: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 121: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 122: CFLAG = srcdata > dstdata; ! 123: NFLAG = ((sint8)outdata) < 0; ! 124: ZFLAG = !outdata; ! 125: PC+= 2; ! 126: } ! 127: ! 128: void cpu_op_1233a(t_ipc *ipc) /* CMP */ { ! 129: /* mask f1f8, bits b020, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 130: int srcreg = (ipc->opcode >> 0) & 7; ! 131: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 132: uint8 srcdata = fetchbyte(srcaddr); ! 133: int dstreg = (ipc->opcode >> 9) & 7; ! 134: uint8 dstdata = DATAREG(dstreg); ! 135: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 136: PC+= 2; ! 137: } ! 138: ! 139: void cpu_op_1233b(t_ipc *ipc) /* CMP */ { ! 140: /* mask f1f8, bits b020, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 141: int srcreg = (ipc->opcode >> 0) & 7; ! 142: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 143: uint8 srcdata = fetchbyte(srcaddr); ! 144: int dstreg = (ipc->opcode >> 9) & 7; ! 145: uint8 dstdata = DATAREG(dstreg); ! 146: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 147: ! 148: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 149: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 150: CFLAG = srcdata > dstdata; ! 151: NFLAG = ((sint8)outdata) < 0; ! 152: ZFLAG = !outdata; ! 153: PC+= 2; ! 154: } ! 155: ! 156: void cpu_op_1234a(t_ipc *ipc) /* CMP */ { ! 157: /* mask f1f8, bits b028, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 158: int srcreg = (ipc->opcode >> 0) & 7; ! 159: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 160: uint8 srcdata = fetchbyte(srcaddr); ! 161: int dstreg = (ipc->opcode >> 9) & 7; ! 162: uint8 dstdata = DATAREG(dstreg); ! 163: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 164: PC+= 4; ! 165: } ! 166: ! 167: void cpu_op_1234b(t_ipc *ipc) /* CMP */ { ! 168: /* mask f1f8, bits b028, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 169: int srcreg = (ipc->opcode >> 0) & 7; ! 170: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 171: uint8 srcdata = fetchbyte(srcaddr); ! 172: int dstreg = (ipc->opcode >> 9) & 7; ! 173: uint8 dstdata = DATAREG(dstreg); ! 174: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 175: ! 176: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 177: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 178: CFLAG = srcdata > dstdata; ! 179: NFLAG = ((sint8)outdata) < 0; ! 180: ZFLAG = !outdata; ! 181: PC+= 4; ! 182: } ! 183: ! 184: void cpu_op_1235a(t_ipc *ipc) /* CMP */ { ! 185: /* mask f1f8, bits b030, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 186: int srcreg = (ipc->opcode >> 0) & 7; ! 187: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 188: uint8 srcdata = fetchbyte(srcaddr); ! 189: int dstreg = (ipc->opcode >> 9) & 7; ! 190: uint8 dstdata = DATAREG(dstreg); ! 191: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 192: PC+= 4; ! 193: } ! 194: ! 195: void cpu_op_1235b(t_ipc *ipc) /* CMP */ { ! 196: /* mask f1f8, bits b030, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 197: int srcreg = (ipc->opcode >> 0) & 7; ! 198: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 199: uint8 srcdata = fetchbyte(srcaddr); ! 200: int dstreg = (ipc->opcode >> 9) & 7; ! 201: uint8 dstdata = DATAREG(dstreg); ! 202: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 203: ! 204: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 205: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 206: CFLAG = srcdata > dstdata; ! 207: NFLAG = ((sint8)outdata) < 0; ! 208: ZFLAG = !outdata; ! 209: PC+= 4; ! 210: } ! 211: ! 212: void cpu_op_1236a(t_ipc *ipc) /* CMP */ { ! 213: /* mask f1ff, bits b038, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 214: uint32 srcaddr = ipc->src; ! 215: uint8 srcdata = fetchbyte(srcaddr); ! 216: int dstreg = (ipc->opcode >> 9) & 7; ! 217: uint8 dstdata = DATAREG(dstreg); ! 218: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 219: PC+= 4; ! 220: } ! 221: ! 222: void cpu_op_1236b(t_ipc *ipc) /* CMP */ { ! 223: /* mask f1ff, bits b038, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 224: uint32 srcaddr = ipc->src; ! 225: uint8 srcdata = fetchbyte(srcaddr); ! 226: int dstreg = (ipc->opcode >> 9) & 7; ! 227: uint8 dstdata = DATAREG(dstreg); ! 228: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 229: ! 230: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 231: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 232: CFLAG = srcdata > dstdata; ! 233: NFLAG = ((sint8)outdata) < 0; ! 234: ZFLAG = !outdata; ! 235: PC+= 4; ! 236: } ! 237: ! 238: void cpu_op_1237a(t_ipc *ipc) /* CMP */ { ! 239: /* mask f1ff, bits b039, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 240: uint32 srcaddr = ipc->src; ! 241: uint8 srcdata = fetchbyte(srcaddr); ! 242: int dstreg = (ipc->opcode >> 9) & 7; ! 243: uint8 dstdata = DATAREG(dstreg); ! 244: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 245: PC+= 6; ! 246: } ! 247: ! 248: void cpu_op_1237b(t_ipc *ipc) /* CMP */ { ! 249: /* mask f1ff, bits b039, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 250: uint32 srcaddr = ipc->src; ! 251: uint8 srcdata = fetchbyte(srcaddr); ! 252: int dstreg = (ipc->opcode >> 9) & 7; ! 253: uint8 dstdata = DATAREG(dstreg); ! 254: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 255: ! 256: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 257: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 258: CFLAG = srcdata > dstdata; ! 259: NFLAG = ((sint8)outdata) < 0; ! 260: ZFLAG = !outdata; ! 261: PC+= 6; ! 262: } ! 263: ! 264: void cpu_op_1238a(t_ipc *ipc) /* CMP */ { ! 265: /* mask f1ff, bits b03a, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 266: uint32 srcaddr = ipc->src; ! 267: uint8 srcdata = fetchbyte(srcaddr); ! 268: int dstreg = (ipc->opcode >> 9) & 7; ! 269: uint8 dstdata = DATAREG(dstreg); ! 270: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 271: PC+= 4; ! 272: } ! 273: ! 274: void cpu_op_1238b(t_ipc *ipc) /* CMP */ { ! 275: /* mask f1ff, bits b03a, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 276: uint32 srcaddr = ipc->src; ! 277: uint8 srcdata = fetchbyte(srcaddr); ! 278: int dstreg = (ipc->opcode >> 9) & 7; ! 279: uint8 dstdata = DATAREG(dstreg); ! 280: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 281: ! 282: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 283: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 284: CFLAG = srcdata > dstdata; ! 285: NFLAG = ((sint8)outdata) < 0; ! 286: ZFLAG = !outdata; ! 287: PC+= 4; ! 288: } ! 289: ! 290: void cpu_op_1239a(t_ipc *ipc) /* CMP */ { ! 291: /* mask f1ff, bits b03b, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 292: uint32 srcaddr = idxval_src(ipc); ! 293: uint8 srcdata = fetchbyte(srcaddr); ! 294: int dstreg = (ipc->opcode >> 9) & 7; ! 295: uint8 dstdata = DATAREG(dstreg); ! 296: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 297: PC+= 4; ! 298: } ! 299: ! 300: void cpu_op_1239b(t_ipc *ipc) /* CMP */ { ! 301: /* mask f1ff, bits b03b, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 302: uint32 srcaddr = idxval_src(ipc); ! 303: uint8 srcdata = fetchbyte(srcaddr); ! 304: int dstreg = (ipc->opcode >> 9) & 7; ! 305: uint8 dstdata = DATAREG(dstreg); ! 306: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 307: ! 308: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 309: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 310: CFLAG = srcdata > dstdata; ! 311: NFLAG = ((sint8)outdata) < 0; ! 312: ZFLAG = !outdata; ! 313: PC+= 4; ! 314: } ! 315: ! 316: void cpu_op_1240a(t_ipc *ipc) /* CMP */ { ! 317: /* mask f1ff, bits b03c, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 11, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 318: uint8 srcdata = ipc->src; ! 319: int dstreg = (ipc->opcode >> 9) & 7; ! 320: uint8 dstdata = DATAREG(dstreg); ! 321: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 322: PC+= 4; ! 323: } ! 324: ! 325: void cpu_op_1240b(t_ipc *ipc) /* CMP */ { ! 326: /* mask f1ff, bits b03c, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 11, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 327: uint8 srcdata = ipc->src; ! 328: int dstreg = (ipc->opcode >> 9) & 7; ! 329: uint8 dstdata = DATAREG(dstreg); ! 330: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 331: ! 332: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 333: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 334: CFLAG = srcdata > dstdata; ! 335: NFLAG = ((sint8)outdata) < 0; ! 336: ZFLAG = !outdata; ! 337: PC+= 4; ! 338: } ! 339: ! 340: void cpu_op_1241a(t_ipc *ipc) /* CMP */ { ! 341: /* mask f1f8, bits b040, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 342: int srcreg = (ipc->opcode >> 0) & 7; ! 343: uint16 srcdata = DATAREG(srcreg); ! 344: int dstreg = (ipc->opcode >> 9) & 7; ! 345: uint16 dstdata = DATAREG(dstreg); ! 346: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 347: PC+= 2; ! 348: } ! 349: ! 350: void cpu_op_1241b(t_ipc *ipc) /* CMP */ { ! 351: /* mask f1f8, bits b040, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 352: int srcreg = (ipc->opcode >> 0) & 7; ! 353: uint16 srcdata = DATAREG(srcreg); ! 354: int dstreg = (ipc->opcode >> 9) & 7; ! 355: uint16 dstdata = DATAREG(dstreg); ! 356: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 357: ! 358: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 359: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 360: CFLAG = srcdata > dstdata; ! 361: NFLAG = ((sint16)outdata) < 0; ! 362: ZFLAG = !outdata; ! 363: PC+= 2; ! 364: } ! 365: ! 366: void cpu_op_1242a(t_ipc *ipc) /* CMP */ { ! 367: /* mask f1f8, bits b048, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 368: int srcreg = (ipc->opcode >> 0) & 7; ! 369: uint16 srcdata = ADDRREG(srcreg); ! 370: int dstreg = (ipc->opcode >> 9) & 7; ! 371: uint16 dstdata = DATAREG(dstreg); ! 372: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 373: PC+= 2; ! 374: } ! 375: ! 376: void cpu_op_1242b(t_ipc *ipc) /* CMP */ { ! 377: /* mask f1f8, bits b048, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 378: int srcreg = (ipc->opcode >> 0) & 7; ! 379: uint16 srcdata = ADDRREG(srcreg); ! 380: int dstreg = (ipc->opcode >> 9) & 7; ! 381: uint16 dstdata = DATAREG(dstreg); ! 382: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 383: ! 384: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 385: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 386: CFLAG = srcdata > dstdata; ! 387: NFLAG = ((sint16)outdata) < 0; ! 388: ZFLAG = !outdata; ! 389: PC+= 2; ! 390: } ! 391: ! 392: void cpu_op_1243a(t_ipc *ipc) /* CMP */ { ! 393: /* mask f1f8, bits b050, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 394: int srcreg = (ipc->opcode >> 0) & 7; ! 395: uint32 srcaddr = ADDRREG(srcreg); ! 396: uint16 srcdata = fetchword(srcaddr); ! 397: int dstreg = (ipc->opcode >> 9) & 7; ! 398: uint16 dstdata = DATAREG(dstreg); ! 399: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 400: PC+= 2; ! 401: } ! 402: ! 403: void cpu_op_1243b(t_ipc *ipc) /* CMP */ { ! 404: /* mask f1f8, bits b050, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 405: int srcreg = (ipc->opcode >> 0) & 7; ! 406: uint32 srcaddr = ADDRREG(srcreg); ! 407: uint16 srcdata = fetchword(srcaddr); ! 408: int dstreg = (ipc->opcode >> 9) & 7; ! 409: uint16 dstdata = DATAREG(dstreg); ! 410: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 411: ! 412: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 413: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 414: CFLAG = srcdata > dstdata; ! 415: NFLAG = ((sint16)outdata) < 0; ! 416: ZFLAG = !outdata; ! 417: PC+= 2; ! 418: } ! 419: ! 420: void cpu_op_1244a(t_ipc *ipc) /* CMP */ { ! 421: /* mask f1f8, bits b058, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 422: int srcreg = (ipc->opcode >> 0) & 7; ! 423: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 424: uint16 srcdata = fetchword(srcaddr); ! 425: int dstreg = (ipc->opcode >> 9) & 7; ! 426: uint16 dstdata = DATAREG(dstreg); ! 427: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 428: PC+= 2; ! 429: } ! 430: ! 431: void cpu_op_1244b(t_ipc *ipc) /* CMP */ { ! 432: /* mask f1f8, bits b058, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 433: int srcreg = (ipc->opcode >> 0) & 7; ! 434: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 435: uint16 srcdata = fetchword(srcaddr); ! 436: int dstreg = (ipc->opcode >> 9) & 7; ! 437: uint16 dstdata = DATAREG(dstreg); ! 438: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 439: ! 440: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 441: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 442: CFLAG = srcdata > dstdata; ! 443: NFLAG = ((sint16)outdata) < 0; ! 444: ZFLAG = !outdata; ! 445: PC+= 2; ! 446: } ! 447: ! 448: void cpu_op_1245a(t_ipc *ipc) /* CMP */ { ! 449: /* mask f1f8, bits b060, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 450: int srcreg = (ipc->opcode >> 0) & 7; ! 451: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 452: uint16 srcdata = fetchword(srcaddr); ! 453: int dstreg = (ipc->opcode >> 9) & 7; ! 454: uint16 dstdata = DATAREG(dstreg); ! 455: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 456: PC+= 2; ! 457: } ! 458: ! 459: void cpu_op_1245b(t_ipc *ipc) /* CMP */ { ! 460: /* mask f1f8, bits b060, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 461: int srcreg = (ipc->opcode >> 0) & 7; ! 462: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 463: uint16 srcdata = fetchword(srcaddr); ! 464: int dstreg = (ipc->opcode >> 9) & 7; ! 465: uint16 dstdata = DATAREG(dstreg); ! 466: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 467: ! 468: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 469: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 470: CFLAG = srcdata > dstdata; ! 471: NFLAG = ((sint16)outdata) < 0; ! 472: ZFLAG = !outdata; ! 473: PC+= 2; ! 474: } ! 475: ! 476: void cpu_op_1246a(t_ipc *ipc) /* CMP */ { ! 477: /* mask f1f8, bits b068, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 478: int srcreg = (ipc->opcode >> 0) & 7; ! 479: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 480: uint16 srcdata = fetchword(srcaddr); ! 481: int dstreg = (ipc->opcode >> 9) & 7; ! 482: uint16 dstdata = DATAREG(dstreg); ! 483: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 484: PC+= 4; ! 485: } ! 486: ! 487: void cpu_op_1246b(t_ipc *ipc) /* CMP */ { ! 488: /* mask f1f8, bits b068, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 489: int srcreg = (ipc->opcode >> 0) & 7; ! 490: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 491: uint16 srcdata = fetchword(srcaddr); ! 492: int dstreg = (ipc->opcode >> 9) & 7; ! 493: uint16 dstdata = DATAREG(dstreg); ! 494: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 495: ! 496: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 497: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 498: CFLAG = srcdata > dstdata; ! 499: NFLAG = ((sint16)outdata) < 0; ! 500: ZFLAG = !outdata; ! 501: PC+= 4; ! 502: } ! 503: ! 504: void cpu_op_1247a(t_ipc *ipc) /* CMP */ { ! 505: /* mask f1f8, bits b070, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 506: int srcreg = (ipc->opcode >> 0) & 7; ! 507: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 508: uint16 srcdata = fetchword(srcaddr); ! 509: int dstreg = (ipc->opcode >> 9) & 7; ! 510: uint16 dstdata = DATAREG(dstreg); ! 511: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 512: PC+= 4; ! 513: } ! 514: ! 515: void cpu_op_1247b(t_ipc *ipc) /* CMP */ { ! 516: /* mask f1f8, bits b070, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 517: int srcreg = (ipc->opcode >> 0) & 7; ! 518: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 519: uint16 srcdata = fetchword(srcaddr); ! 520: int dstreg = (ipc->opcode >> 9) & 7; ! 521: uint16 dstdata = DATAREG(dstreg); ! 522: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 523: ! 524: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 525: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 526: CFLAG = srcdata > dstdata; ! 527: NFLAG = ((sint16)outdata) < 0; ! 528: ZFLAG = !outdata; ! 529: PC+= 4; ! 530: } ! 531: ! 532: void cpu_op_1248a(t_ipc *ipc) /* CMP */ { ! 533: /* mask f1ff, bits b078, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 534: uint32 srcaddr = ipc->src; ! 535: uint16 srcdata = fetchword(srcaddr); ! 536: int dstreg = (ipc->opcode >> 9) & 7; ! 537: uint16 dstdata = DATAREG(dstreg); ! 538: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 539: PC+= 4; ! 540: } ! 541: ! 542: void cpu_op_1248b(t_ipc *ipc) /* CMP */ { ! 543: /* mask f1ff, bits b078, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 544: uint32 srcaddr = ipc->src; ! 545: uint16 srcdata = fetchword(srcaddr); ! 546: int dstreg = (ipc->opcode >> 9) & 7; ! 547: uint16 dstdata = DATAREG(dstreg); ! 548: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 549: ! 550: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 551: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 552: CFLAG = srcdata > dstdata; ! 553: NFLAG = ((sint16)outdata) < 0; ! 554: ZFLAG = !outdata; ! 555: PC+= 4; ! 556: } ! 557: ! 558: void cpu_op_1249a(t_ipc *ipc) /* CMP */ { ! 559: /* mask f1ff, bits b079, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 560: uint32 srcaddr = ipc->src; ! 561: uint16 srcdata = fetchword(srcaddr); ! 562: int dstreg = (ipc->opcode >> 9) & 7; ! 563: uint16 dstdata = DATAREG(dstreg); ! 564: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 565: PC+= 6; ! 566: } ! 567: ! 568: void cpu_op_1249b(t_ipc *ipc) /* CMP */ { ! 569: /* mask f1ff, bits b079, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 570: uint32 srcaddr = ipc->src; ! 571: uint16 srcdata = fetchword(srcaddr); ! 572: int dstreg = (ipc->opcode >> 9) & 7; ! 573: uint16 dstdata = DATAREG(dstreg); ! 574: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 575: ! 576: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 577: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 578: CFLAG = srcdata > dstdata; ! 579: NFLAG = ((sint16)outdata) < 0; ! 580: ZFLAG = !outdata; ! 581: PC+= 6; ! 582: } ! 583: ! 584: void cpu_op_1250a(t_ipc *ipc) /* CMP */ { ! 585: /* mask f1ff, bits b07a, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 586: uint32 srcaddr = ipc->src; ! 587: uint16 srcdata = fetchword(srcaddr); ! 588: int dstreg = (ipc->opcode >> 9) & 7; ! 589: uint16 dstdata = DATAREG(dstreg); ! 590: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 591: PC+= 4; ! 592: } ! 593: ! 594: void cpu_op_1250b(t_ipc *ipc) /* CMP */ { ! 595: /* mask f1ff, bits b07a, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 596: uint32 srcaddr = ipc->src; ! 597: uint16 srcdata = fetchword(srcaddr); ! 598: int dstreg = (ipc->opcode >> 9) & 7; ! 599: uint16 dstdata = DATAREG(dstreg); ! 600: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 601: ! 602: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 603: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 604: CFLAG = srcdata > dstdata; ! 605: NFLAG = ((sint16)outdata) < 0; ! 606: ZFLAG = !outdata; ! 607: PC+= 4; ! 608: } ! 609: ! 610: void cpu_op_1251a(t_ipc *ipc) /* CMP */ { ! 611: /* mask f1ff, bits b07b, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 612: uint32 srcaddr = idxval_src(ipc); ! 613: uint16 srcdata = fetchword(srcaddr); ! 614: int dstreg = (ipc->opcode >> 9) & 7; ! 615: uint16 dstdata = DATAREG(dstreg); ! 616: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 617: PC+= 4; ! 618: } ! 619: ! 620: void cpu_op_1251b(t_ipc *ipc) /* CMP */ { ! 621: /* mask f1ff, bits b07b, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 622: uint32 srcaddr = idxval_src(ipc); ! 623: uint16 srcdata = fetchword(srcaddr); ! 624: int dstreg = (ipc->opcode >> 9) & 7; ! 625: uint16 dstdata = DATAREG(dstreg); ! 626: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 627: ! 628: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 629: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 630: CFLAG = srcdata > dstdata; ! 631: NFLAG = ((sint16)outdata) < 0; ! 632: ZFLAG = !outdata; ! 633: PC+= 4; ! 634: } ! 635: ! 636: void cpu_op_1252a(t_ipc *ipc) /* CMP */ { ! 637: /* mask f1ff, bits b07c, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 638: uint16 srcdata = ipc->src; ! 639: int dstreg = (ipc->opcode >> 9) & 7; ! 640: uint16 dstdata = DATAREG(dstreg); ! 641: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 642: PC+= 4; ! 643: } ! 644: ! 645: void cpu_op_1252b(t_ipc *ipc) /* CMP */ { ! 646: /* mask f1ff, bits b07c, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 647: uint16 srcdata = ipc->src; ! 648: int dstreg = (ipc->opcode >> 9) & 7; ! 649: uint16 dstdata = DATAREG(dstreg); ! 650: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 651: ! 652: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 653: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 654: CFLAG = srcdata > dstdata; ! 655: NFLAG = ((sint16)outdata) < 0; ! 656: ZFLAG = !outdata; ! 657: PC+= 4; ! 658: } ! 659: ! 660: void cpu_op_1253a(t_ipc *ipc) /* CMP */ { ! 661: /* mask f1f8, bits b080, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 662: int srcreg = (ipc->opcode >> 0) & 7; ! 663: uint32 srcdata = DATAREG(srcreg); ! 664: int dstreg = (ipc->opcode >> 9) & 7; ! 665: uint32 dstdata = DATAREG(dstreg); ! 666: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 667: PC+= 2; ! 668: } ! 669: ! 670: void cpu_op_1253b(t_ipc *ipc) /* CMP */ { ! 671: /* mask f1f8, bits b080, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 672: int srcreg = (ipc->opcode >> 0) & 7; ! 673: uint32 srcdata = DATAREG(srcreg); ! 674: int dstreg = (ipc->opcode >> 9) & 7; ! 675: uint32 dstdata = DATAREG(dstreg); ! 676: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 677: ! 678: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 679: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 680: CFLAG = srcdata > dstdata; ! 681: NFLAG = ((sint32)outdata) < 0; ! 682: ZFLAG = !outdata; ! 683: PC+= 2; ! 684: } ! 685: ! 686: void cpu_op_1254a(t_ipc *ipc) /* CMP */ { ! 687: /* mask f1f8, bits b088, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 688: int srcreg = (ipc->opcode >> 0) & 7; ! 689: uint32 srcdata = ADDRREG(srcreg); ! 690: int dstreg = (ipc->opcode >> 9) & 7; ! 691: uint32 dstdata = DATAREG(dstreg); ! 692: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 693: PC+= 2; ! 694: } ! 695: ! 696: void cpu_op_1254b(t_ipc *ipc) /* CMP */ { ! 697: /* mask f1f8, bits b088, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 698: int srcreg = (ipc->opcode >> 0) & 7; ! 699: uint32 srcdata = ADDRREG(srcreg); ! 700: int dstreg = (ipc->opcode >> 9) & 7; ! 701: uint32 dstdata = DATAREG(dstreg); ! 702: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 703: ! 704: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 705: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 706: CFLAG = srcdata > dstdata; ! 707: NFLAG = ((sint32)outdata) < 0; ! 708: ZFLAG = !outdata; ! 709: PC+= 2; ! 710: } ! 711: ! 712: void cpu_op_1255a(t_ipc *ipc) /* CMP */ { ! 713: /* mask f1f8, bits b090, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 714: int srcreg = (ipc->opcode >> 0) & 7; ! 715: uint32 srcaddr = ADDRREG(srcreg); ! 716: uint32 srcdata = fetchlong(srcaddr); ! 717: int dstreg = (ipc->opcode >> 9) & 7; ! 718: uint32 dstdata = DATAREG(dstreg); ! 719: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 720: PC+= 2; ! 721: } ! 722: ! 723: void cpu_op_1255b(t_ipc *ipc) /* CMP */ { ! 724: /* mask f1f8, bits b090, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 725: int srcreg = (ipc->opcode >> 0) & 7; ! 726: uint32 srcaddr = ADDRREG(srcreg); ! 727: uint32 srcdata = fetchlong(srcaddr); ! 728: int dstreg = (ipc->opcode >> 9) & 7; ! 729: uint32 dstdata = DATAREG(dstreg); ! 730: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 731: ! 732: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 733: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 734: CFLAG = srcdata > dstdata; ! 735: NFLAG = ((sint32)outdata) < 0; ! 736: ZFLAG = !outdata; ! 737: PC+= 2; ! 738: } ! 739: ! 740: void cpu_op_1256a(t_ipc *ipc) /* CMP */ { ! 741: /* mask f1f8, bits b098, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 742: int srcreg = (ipc->opcode >> 0) & 7; ! 743: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 744: uint32 srcdata = fetchlong(srcaddr); ! 745: int dstreg = (ipc->opcode >> 9) & 7; ! 746: uint32 dstdata = DATAREG(dstreg); ! 747: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 748: PC+= 2; ! 749: } ! 750: ! 751: void cpu_op_1256b(t_ipc *ipc) /* CMP */ { ! 752: /* mask f1f8, bits b098, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 753: int srcreg = (ipc->opcode >> 0) & 7; ! 754: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 755: uint32 srcdata = fetchlong(srcaddr); ! 756: int dstreg = (ipc->opcode >> 9) & 7; ! 757: uint32 dstdata = DATAREG(dstreg); ! 758: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 759: ! 760: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 761: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 762: CFLAG = srcdata > dstdata; ! 763: NFLAG = ((sint32)outdata) < 0; ! 764: ZFLAG = !outdata; ! 765: PC+= 2; ! 766: } ! 767: ! 768: void cpu_op_1257a(t_ipc *ipc) /* CMP */ { ! 769: /* mask f1f8, bits b0a0, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 770: int srcreg = (ipc->opcode >> 0) & 7; ! 771: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 772: uint32 srcdata = fetchlong(srcaddr); ! 773: int dstreg = (ipc->opcode >> 9) & 7; ! 774: uint32 dstdata = DATAREG(dstreg); ! 775: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 776: PC+= 2; ! 777: } ! 778: ! 779: void cpu_op_1257b(t_ipc *ipc) /* CMP */ { ! 780: /* mask f1f8, bits b0a0, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 781: int srcreg = (ipc->opcode >> 0) & 7; ! 782: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 783: uint32 srcdata = fetchlong(srcaddr); ! 784: int dstreg = (ipc->opcode >> 9) & 7; ! 785: uint32 dstdata = DATAREG(dstreg); ! 786: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 787: ! 788: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 789: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 790: CFLAG = srcdata > dstdata; ! 791: NFLAG = ((sint32)outdata) < 0; ! 792: ZFLAG = !outdata; ! 793: PC+= 2; ! 794: } ! 795: ! 796: void cpu_op_1258a(t_ipc *ipc) /* CMP */ { ! 797: /* mask f1f8, bits b0a8, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 798: int srcreg = (ipc->opcode >> 0) & 7; ! 799: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 800: uint32 srcdata = fetchlong(srcaddr); ! 801: int dstreg = (ipc->opcode >> 9) & 7; ! 802: uint32 dstdata = DATAREG(dstreg); ! 803: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 804: PC+= 4; ! 805: } ! 806: ! 807: void cpu_op_1258b(t_ipc *ipc) /* CMP */ { ! 808: /* mask f1f8, bits b0a8, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 809: int srcreg = (ipc->opcode >> 0) & 7; ! 810: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 811: uint32 srcdata = fetchlong(srcaddr); ! 812: int dstreg = (ipc->opcode >> 9) & 7; ! 813: uint32 dstdata = DATAREG(dstreg); ! 814: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 815: ! 816: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 817: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 818: CFLAG = srcdata > dstdata; ! 819: NFLAG = ((sint32)outdata) < 0; ! 820: ZFLAG = !outdata; ! 821: PC+= 4; ! 822: } ! 823: ! 824: void cpu_op_1259a(t_ipc *ipc) /* CMP */ { ! 825: /* mask f1f8, bits b0b0, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 826: int srcreg = (ipc->opcode >> 0) & 7; ! 827: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 828: uint32 srcdata = fetchlong(srcaddr); ! 829: int dstreg = (ipc->opcode >> 9) & 7; ! 830: uint32 dstdata = DATAREG(dstreg); ! 831: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 832: PC+= 4; ! 833: } ! 834: ! 835: void cpu_op_1259b(t_ipc *ipc) /* CMP */ { ! 836: /* mask f1f8, bits b0b0, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 837: int srcreg = (ipc->opcode >> 0) & 7; ! 838: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 839: uint32 srcdata = fetchlong(srcaddr); ! 840: int dstreg = (ipc->opcode >> 9) & 7; ! 841: uint32 dstdata = DATAREG(dstreg); ! 842: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 843: ! 844: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 845: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 846: CFLAG = srcdata > dstdata; ! 847: NFLAG = ((sint32)outdata) < 0; ! 848: ZFLAG = !outdata; ! 849: PC+= 4; ! 850: } ! 851: ! 852: void cpu_op_1260a(t_ipc *ipc) /* CMP */ { ! 853: /* mask f1ff, bits b0b8, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 854: uint32 srcaddr = ipc->src; ! 855: uint32 srcdata = fetchlong(srcaddr); ! 856: int dstreg = (ipc->opcode >> 9) & 7; ! 857: uint32 dstdata = DATAREG(dstreg); ! 858: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 859: PC+= 4; ! 860: } ! 861: ! 862: void cpu_op_1260b(t_ipc *ipc) /* CMP */ { ! 863: /* mask f1ff, bits b0b8, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 864: uint32 srcaddr = ipc->src; ! 865: uint32 srcdata = fetchlong(srcaddr); ! 866: int dstreg = (ipc->opcode >> 9) & 7; ! 867: uint32 dstdata = DATAREG(dstreg); ! 868: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 869: ! 870: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 871: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 872: CFLAG = srcdata > dstdata; ! 873: NFLAG = ((sint32)outdata) < 0; ! 874: ZFLAG = !outdata; ! 875: PC+= 4; ! 876: } ! 877: ! 878: void cpu_op_1261a(t_ipc *ipc) /* CMP */ { ! 879: /* mask f1ff, bits b0b9, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 880: uint32 srcaddr = ipc->src; ! 881: uint32 srcdata = fetchlong(srcaddr); ! 882: int dstreg = (ipc->opcode >> 9) & 7; ! 883: uint32 dstdata = DATAREG(dstreg); ! 884: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 885: PC+= 6; ! 886: } ! 887: ! 888: void cpu_op_1261b(t_ipc *ipc) /* CMP */ { ! 889: /* mask f1ff, bits b0b9, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 890: uint32 srcaddr = ipc->src; ! 891: uint32 srcdata = fetchlong(srcaddr); ! 892: int dstreg = (ipc->opcode >> 9) & 7; ! 893: uint32 dstdata = DATAREG(dstreg); ! 894: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 895: ! 896: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 897: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 898: CFLAG = srcdata > dstdata; ! 899: NFLAG = ((sint32)outdata) < 0; ! 900: ZFLAG = !outdata; ! 901: PC+= 6; ! 902: } ! 903: ! 904: void cpu_op_1262a(t_ipc *ipc) /* CMP */ { ! 905: /* mask f1ff, bits b0ba, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 906: uint32 srcaddr = ipc->src; ! 907: uint32 srcdata = fetchlong(srcaddr); ! 908: int dstreg = (ipc->opcode >> 9) & 7; ! 909: uint32 dstdata = DATAREG(dstreg); ! 910: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 911: PC+= 4; ! 912: } ! 913: ! 914: void cpu_op_1262b(t_ipc *ipc) /* CMP */ { ! 915: /* mask f1ff, bits b0ba, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 916: uint32 srcaddr = ipc->src; ! 917: uint32 srcdata = fetchlong(srcaddr); ! 918: int dstreg = (ipc->opcode >> 9) & 7; ! 919: uint32 dstdata = DATAREG(dstreg); ! 920: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 921: ! 922: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 923: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 924: CFLAG = srcdata > dstdata; ! 925: NFLAG = ((sint32)outdata) < 0; ! 926: ZFLAG = !outdata; ! 927: PC+= 4; ! 928: } ! 929: ! 930: void cpu_op_1263a(t_ipc *ipc) /* CMP */ { ! 931: /* mask f1ff, bits b0bb, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 932: uint32 srcaddr = idxval_src(ipc); ! 933: uint32 srcdata = fetchlong(srcaddr); ! 934: int dstreg = (ipc->opcode >> 9) & 7; ! 935: uint32 dstdata = DATAREG(dstreg); ! 936: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 937: PC+= 4; ! 938: } ! 939: ! 940: void cpu_op_1263b(t_ipc *ipc) /* CMP */ { ! 941: /* mask f1ff, bits b0bb, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 942: uint32 srcaddr = idxval_src(ipc); ! 943: uint32 srcdata = fetchlong(srcaddr); ! 944: int dstreg = (ipc->opcode >> 9) & 7; ! 945: uint32 dstdata = DATAREG(dstreg); ! 946: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 947: ! 948: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 949: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 950: CFLAG = srcdata > dstdata; ! 951: NFLAG = ((sint32)outdata) < 0; ! 952: ZFLAG = !outdata; ! 953: PC+= 4; ! 954: } ! 955: ! 956: void cpu_op_1264a(t_ipc *ipc) /* CMP */ { ! 957: /* mask f1ff, bits b0bc, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 13, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 958: uint32 srcdata = ipc->src; ! 959: int dstreg = (ipc->opcode >> 9) & 7; ! 960: uint32 dstdata = DATAREG(dstreg); ! 961: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 962: PC+= 6; ! 963: } ! 964: ! 965: void cpu_op_1264b(t_ipc *ipc) /* CMP */ { ! 966: /* mask f1ff, bits b0bc, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 13, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */ ! 967: uint32 srcdata = ipc->src; ! 968: int dstreg = (ipc->opcode >> 9) & 7; ! 969: uint32 dstdata = DATAREG(dstreg); ! 970: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 971: ! 972: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 973: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 974: CFLAG = srcdata > dstdata; ! 975: NFLAG = ((sint32)outdata) < 0; ! 976: ZFLAG = !outdata; ! 977: PC+= 6; ! 978: } ! 979: ! 980: void cpu_op_1265a(t_ipc *ipc) /* CMPA */ { ! 981: /* mask f1f8, bits b0c0, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 982: int srcreg = (ipc->opcode >> 0) & 7; ! 983: uint16 srcdata = DATAREG(srcreg); ! 984: int dstreg = (ipc->opcode >> 9) & 7; ! 985: uint32 dstdata = ADDRREG(dstreg); ! 986: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 987: PC+= 2; ! 988: } ! 989: ! 990: void cpu_op_1265b(t_ipc *ipc) /* CMPA */ { ! 991: /* mask f1f8, bits b0c0, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 992: int srcreg = (ipc->opcode >> 0) & 7; ! 993: uint16 srcdata = DATAREG(srcreg); ! 994: int dstreg = (ipc->opcode >> 9) & 7; ! 995: uint32 dstdata = ADDRREG(dstreg); ! 996: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 997: ! 998: VFLAG = (((sint32)(sint16)srcdata < 0) != ((sint32)dstdata < 0)) && ! 999: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1000: CFLAG = (uint32)(sint32)(sint16)srcdata > dstdata; ! 1001: NFLAG = ((sint32)outdata) < 0; ! 1002: ZFLAG = !outdata; ! 1003: PC+= 2; ! 1004: } ! 1005: ! 1006: void cpu_op_1266a(t_ipc *ipc) /* CMPA */ { ! 1007: /* mask f1f8, bits b0c8, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1008: int srcreg = (ipc->opcode >> 0) & 7; ! 1009: uint16 srcdata = ADDRREG(srcreg); ! 1010: int dstreg = (ipc->opcode >> 9) & 7; ! 1011: uint32 dstdata = ADDRREG(dstreg); ! 1012: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1013: PC+= 2; ! 1014: } ! 1015: ! 1016: void cpu_op_1266b(t_ipc *ipc) /* CMPA */ { ! 1017: /* mask f1f8, bits b0c8, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1018: int srcreg = (ipc->opcode >> 0) & 7; ! 1019: uint16 srcdata = ADDRREG(srcreg); ! 1020: int dstreg = (ipc->opcode >> 9) & 7; ! 1021: uint32 dstdata = ADDRREG(dstreg); ! 1022: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1023: ! 1024: VFLAG = (((sint32)(sint16)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1025: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1026: CFLAG = (uint32)(sint32)(sint16)srcdata > dstdata; ! 1027: NFLAG = ((sint32)outdata) < 0; ! 1028: ZFLAG = !outdata; ! 1029: PC+= 2; ! 1030: } ! 1031: ! 1032: void cpu_op_1267a(t_ipc *ipc) /* CMPA */ { ! 1033: /* mask f1f8, bits b0d0, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1034: int srcreg = (ipc->opcode >> 0) & 7; ! 1035: uint32 srcaddr = ADDRREG(srcreg); ! 1036: uint16 srcdata = fetchword(srcaddr); ! 1037: int dstreg = (ipc->opcode >> 9) & 7; ! 1038: uint32 dstdata = ADDRREG(dstreg); ! 1039: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1040: PC+= 2; ! 1041: } ! 1042: ! 1043: void cpu_op_1267b(t_ipc *ipc) /* CMPA */ { ! 1044: /* mask f1f8, bits b0d0, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1045: int srcreg = (ipc->opcode >> 0) & 7; ! 1046: uint32 srcaddr = ADDRREG(srcreg); ! 1047: uint16 srcdata = fetchword(srcaddr); ! 1048: int dstreg = (ipc->opcode >> 9) & 7; ! 1049: uint32 dstdata = ADDRREG(dstreg); ! 1050: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1051: ! 1052: VFLAG = (((sint32)(sint16)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1053: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1054: CFLAG = (uint32)(sint32)(sint16)srcdata > dstdata; ! 1055: NFLAG = ((sint32)outdata) < 0; ! 1056: ZFLAG = !outdata; ! 1057: PC+= 2; ! 1058: } ! 1059: ! 1060: void cpu_op_1268a(t_ipc *ipc) /* CMPA */ { ! 1061: /* mask f1f8, bits b0d8, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1062: int srcreg = (ipc->opcode >> 0) & 7; ! 1063: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 1064: uint16 srcdata = fetchword(srcaddr); ! 1065: int dstreg = (ipc->opcode >> 9) & 7; ! 1066: uint32 dstdata = ADDRREG(dstreg); ! 1067: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1068: PC+= 2; ! 1069: } ! 1070: ! 1071: void cpu_op_1268b(t_ipc *ipc) /* CMPA */ { ! 1072: /* mask f1f8, bits b0d8, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1073: int srcreg = (ipc->opcode >> 0) & 7; ! 1074: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 1075: uint16 srcdata = fetchword(srcaddr); ! 1076: int dstreg = (ipc->opcode >> 9) & 7; ! 1077: uint32 dstdata = ADDRREG(dstreg); ! 1078: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1079: ! 1080: VFLAG = (((sint32)(sint16)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1081: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1082: CFLAG = (uint32)(sint32)(sint16)srcdata > dstdata; ! 1083: NFLAG = ((sint32)outdata) < 0; ! 1084: ZFLAG = !outdata; ! 1085: PC+= 2; ! 1086: } ! 1087: ! 1088: void cpu_op_1269a(t_ipc *ipc) /* CMPA */ { ! 1089: /* mask f1f8, bits b0e0, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1090: int srcreg = (ipc->opcode >> 0) & 7; ! 1091: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 1092: uint16 srcdata = fetchword(srcaddr); ! 1093: int dstreg = (ipc->opcode >> 9) & 7; ! 1094: uint32 dstdata = ADDRREG(dstreg); ! 1095: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1096: PC+= 2; ! 1097: } ! 1098: ! 1099: void cpu_op_1269b(t_ipc *ipc) /* CMPA */ { ! 1100: /* mask f1f8, bits b0e0, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1101: int srcreg = (ipc->opcode >> 0) & 7; ! 1102: uint32 srcaddr = ADDRREG(srcreg)-=2; ! 1103: uint16 srcdata = fetchword(srcaddr); ! 1104: int dstreg = (ipc->opcode >> 9) & 7; ! 1105: uint32 dstdata = ADDRREG(dstreg); ! 1106: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1107: ! 1108: VFLAG = (((sint32)(sint16)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1109: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1110: CFLAG = (uint32)(sint32)(sint16)srcdata > dstdata; ! 1111: NFLAG = ((sint32)outdata) < 0; ! 1112: ZFLAG = !outdata; ! 1113: PC+= 2; ! 1114: } ! 1115: ! 1116: void cpu_op_1270a(t_ipc *ipc) /* CMPA */ { ! 1117: /* mask f1f8, bits b0e8, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1118: int srcreg = (ipc->opcode >> 0) & 7; ! 1119: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 1120: uint16 srcdata = fetchword(srcaddr); ! 1121: int dstreg = (ipc->opcode >> 9) & 7; ! 1122: uint32 dstdata = ADDRREG(dstreg); ! 1123: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1124: PC+= 4; ! 1125: } ! 1126: ! 1127: void cpu_op_1270b(t_ipc *ipc) /* CMPA */ { ! 1128: /* mask f1f8, bits b0e8, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1129: int srcreg = (ipc->opcode >> 0) & 7; ! 1130: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 1131: uint16 srcdata = fetchword(srcaddr); ! 1132: int dstreg = (ipc->opcode >> 9) & 7; ! 1133: uint32 dstdata = ADDRREG(dstreg); ! 1134: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1135: ! 1136: VFLAG = (((sint32)(sint16)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1137: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1138: CFLAG = (uint32)(sint32)(sint16)srcdata > dstdata; ! 1139: NFLAG = ((sint32)outdata) < 0; ! 1140: ZFLAG = !outdata; ! 1141: PC+= 4; ! 1142: } ! 1143: ! 1144: void cpu_op_1271a(t_ipc *ipc) /* CMPA */ { ! 1145: /* mask f1f8, bits b0f0, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1146: int srcreg = (ipc->opcode >> 0) & 7; ! 1147: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 1148: uint16 srcdata = fetchword(srcaddr); ! 1149: int dstreg = (ipc->opcode >> 9) & 7; ! 1150: uint32 dstdata = ADDRREG(dstreg); ! 1151: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1152: PC+= 4; ! 1153: } ! 1154: ! 1155: void cpu_op_1271b(t_ipc *ipc) /* CMPA */ { ! 1156: /* mask f1f8, bits b0f0, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1157: int srcreg = (ipc->opcode >> 0) & 7; ! 1158: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 1159: uint16 srcdata = fetchword(srcaddr); ! 1160: int dstreg = (ipc->opcode >> 9) & 7; ! 1161: uint32 dstdata = ADDRREG(dstreg); ! 1162: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1163: ! 1164: VFLAG = (((sint32)(sint16)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1165: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1166: CFLAG = (uint32)(sint32)(sint16)srcdata > dstdata; ! 1167: NFLAG = ((sint32)outdata) < 0; ! 1168: ZFLAG = !outdata; ! 1169: PC+= 4; ! 1170: } ! 1171: ! 1172: void cpu_op_1272a(t_ipc *ipc) /* CMPA */ { ! 1173: /* mask f1ff, bits b0f8, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1174: uint32 srcaddr = ipc->src; ! 1175: uint16 srcdata = fetchword(srcaddr); ! 1176: int dstreg = (ipc->opcode >> 9) & 7; ! 1177: uint32 dstdata = ADDRREG(dstreg); ! 1178: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1179: PC+= 4; ! 1180: } ! 1181: ! 1182: void cpu_op_1272b(t_ipc *ipc) /* CMPA */ { ! 1183: /* mask f1ff, bits b0f8, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1184: uint32 srcaddr = ipc->src; ! 1185: uint16 srcdata = fetchword(srcaddr); ! 1186: int dstreg = (ipc->opcode >> 9) & 7; ! 1187: uint32 dstdata = ADDRREG(dstreg); ! 1188: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1189: ! 1190: VFLAG = (((sint32)(sint16)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1191: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1192: CFLAG = (uint32)(sint32)(sint16)srcdata > dstdata; ! 1193: NFLAG = ((sint32)outdata) < 0; ! 1194: ZFLAG = !outdata; ! 1195: PC+= 4; ! 1196: } ! 1197: ! 1198: void cpu_op_1273a(t_ipc *ipc) /* CMPA */ { ! 1199: /* mask f1ff, bits b0f9, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1200: uint32 srcaddr = ipc->src; ! 1201: uint16 srcdata = fetchword(srcaddr); ! 1202: int dstreg = (ipc->opcode >> 9) & 7; ! 1203: uint32 dstdata = ADDRREG(dstreg); ! 1204: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1205: PC+= 6; ! 1206: } ! 1207: ! 1208: void cpu_op_1273b(t_ipc *ipc) /* CMPA */ { ! 1209: /* mask f1ff, bits b0f9, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1210: uint32 srcaddr = ipc->src; ! 1211: uint16 srcdata = fetchword(srcaddr); ! 1212: int dstreg = (ipc->opcode >> 9) & 7; ! 1213: uint32 dstdata = ADDRREG(dstreg); ! 1214: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1215: ! 1216: VFLAG = (((sint32)(sint16)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1217: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1218: CFLAG = (uint32)(sint32)(sint16)srcdata > dstdata; ! 1219: NFLAG = ((sint32)outdata) < 0; ! 1220: ZFLAG = !outdata; ! 1221: PC+= 6; ! 1222: } ! 1223: ! 1224: void cpu_op_1274a(t_ipc *ipc) /* CMPA */ { ! 1225: /* mask f1ff, bits b0fa, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1226: uint32 srcaddr = ipc->src; ! 1227: uint16 srcdata = fetchword(srcaddr); ! 1228: int dstreg = (ipc->opcode >> 9) & 7; ! 1229: uint32 dstdata = ADDRREG(dstreg); ! 1230: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1231: PC+= 4; ! 1232: } ! 1233: ! 1234: void cpu_op_1274b(t_ipc *ipc) /* CMPA */ { ! 1235: /* mask f1ff, bits b0fa, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1236: uint32 srcaddr = ipc->src; ! 1237: uint16 srcdata = fetchword(srcaddr); ! 1238: int dstreg = (ipc->opcode >> 9) & 7; ! 1239: uint32 dstdata = ADDRREG(dstreg); ! 1240: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1241: ! 1242: VFLAG = (((sint32)(sint16)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1243: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1244: CFLAG = (uint32)(sint32)(sint16)srcdata > dstdata; ! 1245: NFLAG = ((sint32)outdata) < 0; ! 1246: ZFLAG = !outdata; ! 1247: PC+= 4; ! 1248: } ! 1249: ! 1250: void cpu_op_1275a(t_ipc *ipc) /* CMPA */ { ! 1251: /* mask f1ff, bits b0fb, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1252: uint32 srcaddr = idxval_src(ipc); ! 1253: uint16 srcdata = fetchword(srcaddr); ! 1254: int dstreg = (ipc->opcode >> 9) & 7; ! 1255: uint32 dstdata = ADDRREG(dstreg); ! 1256: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1257: PC+= 4; ! 1258: } ! 1259: ! 1260: void cpu_op_1275b(t_ipc *ipc) /* CMPA */ { ! 1261: /* mask f1ff, bits b0fb, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1262: uint32 srcaddr = idxval_src(ipc); ! 1263: uint16 srcdata = fetchword(srcaddr); ! 1264: int dstreg = (ipc->opcode >> 9) & 7; ! 1265: uint32 dstdata = ADDRREG(dstreg); ! 1266: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1267: ! 1268: VFLAG = (((sint32)(sint16)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1269: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1270: CFLAG = (uint32)(sint32)(sint16)srcdata > dstdata; ! 1271: NFLAG = ((sint32)outdata) < 0; ! 1272: ZFLAG = !outdata; ! 1273: PC+= 4; ! 1274: } ! 1275: ! 1276: void cpu_op_1276a(t_ipc *ipc) /* CMPA */ { ! 1277: /* mask f1ff, bits b0fc, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1278: uint16 srcdata = ipc->src; ! 1279: int dstreg = (ipc->opcode >> 9) & 7; ! 1280: uint32 dstdata = ADDRREG(dstreg); ! 1281: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1282: PC+= 4; ! 1283: } ! 1284: ! 1285: void cpu_op_1276b(t_ipc *ipc) /* CMPA */ { ! 1286: /* mask f1ff, bits b0fc, mnemonic 16, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 1287: uint16 srcdata = ipc->src; ! 1288: int dstreg = (ipc->opcode >> 9) & 7; ! 1289: uint32 dstdata = ADDRREG(dstreg); ! 1290: uint32 outdata = (sint32)dstdata - (sint32)(sint16)srcdata; ! 1291: ! 1292: VFLAG = (((sint32)(sint16)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1293: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1294: CFLAG = (uint32)(sint32)(sint16)srcdata > dstdata; ! 1295: NFLAG = ((sint32)outdata) < 0; ! 1296: ZFLAG = !outdata; ! 1297: PC+= 4; ! 1298: } ! 1299: ! 1300: void cpu_op_1277a(t_ipc *ipc) /* EOR */ { ! 1301: /* mask f1f8, bits b100, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1302: int srcreg = (ipc->opcode >> 9) & 7; ! 1303: uint8 srcdata = DATAREG(srcreg); ! 1304: int dstreg = (ipc->opcode >> 0) & 7; ! 1305: uint8 dstdata = DATAREG(dstreg); ! 1306: uint8 outdata = dstdata; ! 1307: ! 1308: outdata^= srcdata; ! 1309: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata; ! 1310: PC+= 2; ! 1311: } ! 1312: ! 1313: void cpu_op_1277b(t_ipc *ipc) /* EOR */ { ! 1314: /* mask f1f8, bits b100, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1315: int srcreg = (ipc->opcode >> 9) & 7; ! 1316: uint8 srcdata = DATAREG(srcreg); ! 1317: int dstreg = (ipc->opcode >> 0) & 7; ! 1318: uint8 dstdata = DATAREG(dstreg); ! 1319: uint8 outdata = dstdata; ! 1320: ! 1321: outdata^= srcdata; ! 1322: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata; ! 1323: ! 1324: NFLAG = ((sint8)outdata) < 0; ! 1325: ZFLAG = !outdata; ! 1326: VFLAG = 0; ! 1327: CFLAG = 0; ! 1328: PC+= 2; ! 1329: } ! 1330: ! 1331: void cpu_op_1278a(t_ipc *ipc) /* EOR */ { ! 1332: /* mask f1f8, bits b110, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1333: int srcreg = (ipc->opcode >> 9) & 7; ! 1334: uint8 srcdata = DATAREG(srcreg); ! 1335: int dstreg = (ipc->opcode >> 0) & 7; ! 1336: uint32 dstaddr = ADDRREG(dstreg); ! 1337: uint8 dstdata = fetchbyte(dstaddr); ! 1338: uint8 outdata = dstdata; ! 1339: ! 1340: outdata^= srcdata; ! 1341: storebyte(dstaddr, outdata); ! 1342: PC+= 2; ! 1343: } ! 1344: ! 1345: void cpu_op_1278b(t_ipc *ipc) /* EOR */ { ! 1346: /* mask f1f8, bits b110, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1347: int srcreg = (ipc->opcode >> 9) & 7; ! 1348: uint8 srcdata = DATAREG(srcreg); ! 1349: int dstreg = (ipc->opcode >> 0) & 7; ! 1350: uint32 dstaddr = ADDRREG(dstreg); ! 1351: uint8 dstdata = fetchbyte(dstaddr); ! 1352: uint8 outdata = dstdata; ! 1353: ! 1354: outdata^= srcdata; ! 1355: storebyte(dstaddr, outdata); ! 1356: ! 1357: NFLAG = ((sint8)outdata) < 0; ! 1358: ZFLAG = !outdata; ! 1359: VFLAG = 0; ! 1360: CFLAG = 0; ! 1361: PC+= 2; ! 1362: } ! 1363: ! 1364: void cpu_op_1279a(t_ipc *ipc) /* EOR */ { ! 1365: /* mask f1f8, bits b118, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1366: int srcreg = (ipc->opcode >> 9) & 7; ! 1367: uint8 srcdata = DATAREG(srcreg); ! 1368: int dstreg = (ipc->opcode >> 0) & 7; ! 1369: uint32 dstaddr = ADDRREG(dstreg); ! 1370: uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0); ! 1371: uint8 dstdata = fetchbyte(dstaddr); ! 1372: uint8 outdata = dstdata; ! 1373: ! 1374: outdata^= srcdata; ! 1375: storebyte(dstaddr, outdata); ! 1376: PC+= 2; ! 1377: } ! 1378: ! 1379: void cpu_op_1279b(t_ipc *ipc) /* EOR */ { ! 1380: /* mask f1f8, bits b118, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1381: int srcreg = (ipc->opcode >> 9) & 7; ! 1382: uint8 srcdata = DATAREG(srcreg); ! 1383: int dstreg = (ipc->opcode >> 0) & 7; ! 1384: uint32 dstaddr = ADDRREG(dstreg); ! 1385: uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0); ! 1386: uint8 dstdata = fetchbyte(dstaddr); ! 1387: uint8 outdata = dstdata; ! 1388: ! 1389: outdata^= srcdata; ! 1390: storebyte(dstaddr, outdata); ! 1391: ! 1392: NFLAG = ((sint8)outdata) < 0; ! 1393: ZFLAG = !outdata; ! 1394: VFLAG = 0; ! 1395: CFLAG = 0; ! 1396: PC+= 2; ! 1397: } ! 1398: ! 1399: void cpu_op_1280a(t_ipc *ipc) /* EOR */ { ! 1400: /* mask f1f8, bits b120, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1401: int srcreg = (ipc->opcode >> 9) & 7; ! 1402: uint8 srcdata = DATAREG(srcreg); ! 1403: int dstreg = (ipc->opcode >> 0) & 7; ! 1404: uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1)); ! 1405: uint8 dstdata = fetchbyte(dstaddr); ! 1406: uint8 outdata = dstdata; ! 1407: ! 1408: outdata^= srcdata; ! 1409: storebyte(dstaddr, outdata); ! 1410: PC+= 2; ! 1411: } ! 1412: ! 1413: void cpu_op_1280b(t_ipc *ipc) /* EOR */ { ! 1414: /* mask f1f8, bits b120, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1415: int srcreg = (ipc->opcode >> 9) & 7; ! 1416: uint8 srcdata = DATAREG(srcreg); ! 1417: int dstreg = (ipc->opcode >> 0) & 7; ! 1418: uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1)); ! 1419: uint8 dstdata = fetchbyte(dstaddr); ! 1420: uint8 outdata = dstdata; ! 1421: ! 1422: outdata^= srcdata; ! 1423: storebyte(dstaddr, outdata); ! 1424: ! 1425: NFLAG = ((sint8)outdata) < 0; ! 1426: ZFLAG = !outdata; ! 1427: VFLAG = 0; ! 1428: CFLAG = 0; ! 1429: PC+= 2; ! 1430: } ! 1431: ! 1432: void cpu_op_1281a(t_ipc *ipc) /* EOR */ { ! 1433: /* mask f1f8, bits b128, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1434: int srcreg = (ipc->opcode >> 9) & 7; ! 1435: uint8 srcdata = DATAREG(srcreg); ! 1436: int dstreg = (ipc->opcode >> 0) & 7; ! 1437: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1438: uint8 dstdata = fetchbyte(dstaddr); ! 1439: uint8 outdata = dstdata; ! 1440: ! 1441: outdata^= srcdata; ! 1442: storebyte(dstaddr, outdata); ! 1443: PC+= 4; ! 1444: } ! 1445: ! 1446: void cpu_op_1281b(t_ipc *ipc) /* EOR */ { ! 1447: /* mask f1f8, bits b128, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1448: int srcreg = (ipc->opcode >> 9) & 7; ! 1449: uint8 srcdata = DATAREG(srcreg); ! 1450: int dstreg = (ipc->opcode >> 0) & 7; ! 1451: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1452: uint8 dstdata = fetchbyte(dstaddr); ! 1453: uint8 outdata = dstdata; ! 1454: ! 1455: outdata^= srcdata; ! 1456: storebyte(dstaddr, outdata); ! 1457: ! 1458: NFLAG = ((sint8)outdata) < 0; ! 1459: ZFLAG = !outdata; ! 1460: VFLAG = 0; ! 1461: CFLAG = 0; ! 1462: PC+= 4; ! 1463: } ! 1464: ! 1465: void cpu_op_1282a(t_ipc *ipc) /* EOR */ { ! 1466: /* mask f1f8, bits b130, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1467: int srcreg = (ipc->opcode >> 9) & 7; ! 1468: uint8 srcdata = DATAREG(srcreg); ! 1469: int dstreg = (ipc->opcode >> 0) & 7; ! 1470: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1471: uint8 dstdata = fetchbyte(dstaddr); ! 1472: uint8 outdata = dstdata; ! 1473: ! 1474: outdata^= srcdata; ! 1475: storebyte(dstaddr, outdata); ! 1476: PC+= 4; ! 1477: } ! 1478: ! 1479: void cpu_op_1282b(t_ipc *ipc) /* EOR */ { ! 1480: /* mask f1f8, bits b130, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1481: int srcreg = (ipc->opcode >> 9) & 7; ! 1482: uint8 srcdata = DATAREG(srcreg); ! 1483: int dstreg = (ipc->opcode >> 0) & 7; ! 1484: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1485: uint8 dstdata = fetchbyte(dstaddr); ! 1486: uint8 outdata = dstdata; ! 1487: ! 1488: outdata^= srcdata; ! 1489: storebyte(dstaddr, outdata); ! 1490: ! 1491: NFLAG = ((sint8)outdata) < 0; ! 1492: ZFLAG = !outdata; ! 1493: VFLAG = 0; ! 1494: CFLAG = 0; ! 1495: PC+= 4; ! 1496: } ! 1497: ! 1498: void cpu_op_1283a(t_ipc *ipc) /* EOR */ { ! 1499: /* mask f1ff, bits b138, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1500: int srcreg = (ipc->opcode >> 9) & 7; ! 1501: uint8 srcdata = DATAREG(srcreg); ! 1502: uint32 dstaddr = ipc->dst; ! 1503: uint8 dstdata = fetchbyte(dstaddr); ! 1504: uint8 outdata = dstdata; ! 1505: ! 1506: outdata^= srcdata; ! 1507: storebyte(dstaddr, outdata); ! 1508: PC+= 4; ! 1509: } ! 1510: ! 1511: void cpu_op_1283b(t_ipc *ipc) /* EOR */ { ! 1512: /* mask f1ff, bits b138, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1513: int srcreg = (ipc->opcode >> 9) & 7; ! 1514: uint8 srcdata = DATAREG(srcreg); ! 1515: uint32 dstaddr = ipc->dst; ! 1516: uint8 dstdata = fetchbyte(dstaddr); ! 1517: uint8 outdata = dstdata; ! 1518: ! 1519: outdata^= srcdata; ! 1520: storebyte(dstaddr, outdata); ! 1521: ! 1522: NFLAG = ((sint8)outdata) < 0; ! 1523: ZFLAG = !outdata; ! 1524: VFLAG = 0; ! 1525: CFLAG = 0; ! 1526: PC+= 4; ! 1527: } ! 1528: ! 1529: void cpu_op_1284a(t_ipc *ipc) /* EOR */ { ! 1530: /* mask f1ff, bits b139, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1531: int srcreg = (ipc->opcode >> 9) & 7; ! 1532: uint8 srcdata = DATAREG(srcreg); ! 1533: uint32 dstaddr = ipc->dst; ! 1534: uint8 dstdata = fetchbyte(dstaddr); ! 1535: uint8 outdata = dstdata; ! 1536: ! 1537: outdata^= srcdata; ! 1538: storebyte(dstaddr, outdata); ! 1539: PC+= 6; ! 1540: } ! 1541: ! 1542: void cpu_op_1284b(t_ipc *ipc) /* EOR */ { ! 1543: /* mask f1ff, bits b139, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1544: int srcreg = (ipc->opcode >> 9) & 7; ! 1545: uint8 srcdata = DATAREG(srcreg); ! 1546: uint32 dstaddr = ipc->dst; ! 1547: uint8 dstdata = fetchbyte(dstaddr); ! 1548: uint8 outdata = dstdata; ! 1549: ! 1550: outdata^= srcdata; ! 1551: storebyte(dstaddr, outdata); ! 1552: ! 1553: NFLAG = ((sint8)outdata) < 0; ! 1554: ZFLAG = !outdata; ! 1555: VFLAG = 0; ! 1556: CFLAG = 0; ! 1557: PC+= 6; ! 1558: } ! 1559: ! 1560: void cpu_op_1285a(t_ipc *ipc) /* EOR */ { ! 1561: /* mask f1f8, bits b140, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1562: int srcreg = (ipc->opcode >> 9) & 7; ! 1563: uint16 srcdata = DATAREG(srcreg); ! 1564: int dstreg = (ipc->opcode >> 0) & 7; ! 1565: uint16 dstdata = DATAREG(dstreg); ! 1566: uint16 outdata = dstdata; ! 1567: ! 1568: outdata^= srcdata; ! 1569: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata; ! 1570: PC+= 2; ! 1571: } ! 1572: ! 1573: void cpu_op_1285b(t_ipc *ipc) /* EOR */ { ! 1574: /* mask f1f8, bits b140, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1575: int srcreg = (ipc->opcode >> 9) & 7; ! 1576: uint16 srcdata = DATAREG(srcreg); ! 1577: int dstreg = (ipc->opcode >> 0) & 7; ! 1578: uint16 dstdata = DATAREG(dstreg); ! 1579: uint16 outdata = dstdata; ! 1580: ! 1581: outdata^= srcdata; ! 1582: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata; ! 1583: ! 1584: NFLAG = ((sint16)outdata) < 0; ! 1585: ZFLAG = !outdata; ! 1586: VFLAG = 0; ! 1587: CFLAG = 0; ! 1588: PC+= 2; ! 1589: } ! 1590: ! 1591: void cpu_op_1286a(t_ipc *ipc) /* EOR */ { ! 1592: /* mask f1f8, bits b150, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1593: int srcreg = (ipc->opcode >> 9) & 7; ! 1594: uint16 srcdata = DATAREG(srcreg); ! 1595: int dstreg = (ipc->opcode >> 0) & 7; ! 1596: uint32 dstaddr = ADDRREG(dstreg); ! 1597: uint16 dstdata = fetchword(dstaddr); ! 1598: uint16 outdata = dstdata; ! 1599: ! 1600: outdata^= srcdata; ! 1601: storeword(dstaddr, outdata); ! 1602: PC+= 2; ! 1603: } ! 1604: ! 1605: void cpu_op_1286b(t_ipc *ipc) /* EOR */ { ! 1606: /* mask f1f8, bits b150, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1607: int srcreg = (ipc->opcode >> 9) & 7; ! 1608: uint16 srcdata = DATAREG(srcreg); ! 1609: int dstreg = (ipc->opcode >> 0) & 7; ! 1610: uint32 dstaddr = ADDRREG(dstreg); ! 1611: uint16 dstdata = fetchword(dstaddr); ! 1612: uint16 outdata = dstdata; ! 1613: ! 1614: outdata^= srcdata; ! 1615: storeword(dstaddr, outdata); ! 1616: ! 1617: NFLAG = ((sint16)outdata) < 0; ! 1618: ZFLAG = !outdata; ! 1619: VFLAG = 0; ! 1620: CFLAG = 0; ! 1621: PC+= 2; ! 1622: } ! 1623: ! 1624: void cpu_op_1287a(t_ipc *ipc) /* EOR */ { ! 1625: /* mask f1f8, bits b158, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1626: int srcreg = (ipc->opcode >> 9) & 7; ! 1627: uint16 srcdata = DATAREG(srcreg); ! 1628: int dstreg = (ipc->opcode >> 0) & 7; ! 1629: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2); ! 1630: uint16 dstdata = fetchword(dstaddr); ! 1631: uint16 outdata = dstdata; ! 1632: ! 1633: outdata^= srcdata; ! 1634: storeword(dstaddr, outdata); ! 1635: PC+= 2; ! 1636: } ! 1637: ! 1638: void cpu_op_1287b(t_ipc *ipc) /* EOR */ { ! 1639: /* mask f1f8, bits b158, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1640: int srcreg = (ipc->opcode >> 9) & 7; ! 1641: uint16 srcdata = DATAREG(srcreg); ! 1642: int dstreg = (ipc->opcode >> 0) & 7; ! 1643: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2); ! 1644: uint16 dstdata = fetchword(dstaddr); ! 1645: uint16 outdata = dstdata; ! 1646: ! 1647: outdata^= srcdata; ! 1648: storeword(dstaddr, outdata); ! 1649: ! 1650: NFLAG = ((sint16)outdata) < 0; ! 1651: ZFLAG = !outdata; ! 1652: VFLAG = 0; ! 1653: CFLAG = 0; ! 1654: PC+= 2; ! 1655: } ! 1656: ! 1657: void cpu_op_1288a(t_ipc *ipc) /* EOR */ { ! 1658: /* mask f1f8, bits b160, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1659: int srcreg = (ipc->opcode >> 9) & 7; ! 1660: uint16 srcdata = DATAREG(srcreg); ! 1661: int dstreg = (ipc->opcode >> 0) & 7; ! 1662: uint32 dstaddr = ADDRREG(dstreg)-=2; ! 1663: uint16 dstdata = fetchword(dstaddr); ! 1664: uint16 outdata = dstdata; ! 1665: ! 1666: outdata^= srcdata; ! 1667: storeword(dstaddr, outdata); ! 1668: PC+= 2; ! 1669: } ! 1670: ! 1671: void cpu_op_1288b(t_ipc *ipc) /* EOR */ { ! 1672: /* mask f1f8, bits b160, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1673: int srcreg = (ipc->opcode >> 9) & 7; ! 1674: uint16 srcdata = DATAREG(srcreg); ! 1675: int dstreg = (ipc->opcode >> 0) & 7; ! 1676: uint32 dstaddr = ADDRREG(dstreg)-=2; ! 1677: uint16 dstdata = fetchword(dstaddr); ! 1678: uint16 outdata = dstdata; ! 1679: ! 1680: outdata^= srcdata; ! 1681: storeword(dstaddr, outdata); ! 1682: ! 1683: NFLAG = ((sint16)outdata) < 0; ! 1684: ZFLAG = !outdata; ! 1685: VFLAG = 0; ! 1686: CFLAG = 0; ! 1687: PC+= 2; ! 1688: } ! 1689: ! 1690: void cpu_op_1289a(t_ipc *ipc) /* EOR */ { ! 1691: /* mask f1f8, bits b168, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1692: int srcreg = (ipc->opcode >> 9) & 7; ! 1693: uint16 srcdata = DATAREG(srcreg); ! 1694: int dstreg = (ipc->opcode >> 0) & 7; ! 1695: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1696: uint16 dstdata = fetchword(dstaddr); ! 1697: uint16 outdata = dstdata; ! 1698: ! 1699: outdata^= srcdata; ! 1700: storeword(dstaddr, outdata); ! 1701: PC+= 4; ! 1702: } ! 1703: ! 1704: void cpu_op_1289b(t_ipc *ipc) /* EOR */ { ! 1705: /* mask f1f8, bits b168, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1706: int srcreg = (ipc->opcode >> 9) & 7; ! 1707: uint16 srcdata = DATAREG(srcreg); ! 1708: int dstreg = (ipc->opcode >> 0) & 7; ! 1709: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1710: uint16 dstdata = fetchword(dstaddr); ! 1711: uint16 outdata = dstdata; ! 1712: ! 1713: outdata^= srcdata; ! 1714: storeword(dstaddr, outdata); ! 1715: ! 1716: NFLAG = ((sint16)outdata) < 0; ! 1717: ZFLAG = !outdata; ! 1718: VFLAG = 0; ! 1719: CFLAG = 0; ! 1720: PC+= 4; ! 1721: } ! 1722: ! 1723: void cpu_op_1290a(t_ipc *ipc) /* EOR */ { ! 1724: /* mask f1f8, bits b170, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1725: int srcreg = (ipc->opcode >> 9) & 7; ! 1726: uint16 srcdata = DATAREG(srcreg); ! 1727: int dstreg = (ipc->opcode >> 0) & 7; ! 1728: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1729: uint16 dstdata = fetchword(dstaddr); ! 1730: uint16 outdata = dstdata; ! 1731: ! 1732: outdata^= srcdata; ! 1733: storeword(dstaddr, outdata); ! 1734: PC+= 4; ! 1735: } ! 1736: ! 1737: void cpu_op_1290b(t_ipc *ipc) /* EOR */ { ! 1738: /* mask f1f8, bits b170, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1739: int srcreg = (ipc->opcode >> 9) & 7; ! 1740: uint16 srcdata = DATAREG(srcreg); ! 1741: int dstreg = (ipc->opcode >> 0) & 7; ! 1742: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1743: uint16 dstdata = fetchword(dstaddr); ! 1744: uint16 outdata = dstdata; ! 1745: ! 1746: outdata^= srcdata; ! 1747: storeword(dstaddr, outdata); ! 1748: ! 1749: NFLAG = ((sint16)outdata) < 0; ! 1750: ZFLAG = !outdata; ! 1751: VFLAG = 0; ! 1752: CFLAG = 0; ! 1753: PC+= 4; ! 1754: } ! 1755: ! 1756: void cpu_op_1291a(t_ipc *ipc) /* EOR */ { ! 1757: /* mask f1ff, bits b178, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1758: int srcreg = (ipc->opcode >> 9) & 7; ! 1759: uint16 srcdata = DATAREG(srcreg); ! 1760: uint32 dstaddr = ipc->dst; ! 1761: uint16 dstdata = fetchword(dstaddr); ! 1762: uint16 outdata = dstdata; ! 1763: ! 1764: outdata^= srcdata; ! 1765: storeword(dstaddr, outdata); ! 1766: PC+= 4; ! 1767: } ! 1768: ! 1769: void cpu_op_1291b(t_ipc *ipc) /* EOR */ { ! 1770: /* mask f1ff, bits b178, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1771: int srcreg = (ipc->opcode >> 9) & 7; ! 1772: uint16 srcdata = DATAREG(srcreg); ! 1773: uint32 dstaddr = ipc->dst; ! 1774: uint16 dstdata = fetchword(dstaddr); ! 1775: uint16 outdata = dstdata; ! 1776: ! 1777: outdata^= srcdata; ! 1778: storeword(dstaddr, outdata); ! 1779: ! 1780: NFLAG = ((sint16)outdata) < 0; ! 1781: ZFLAG = !outdata; ! 1782: VFLAG = 0; ! 1783: CFLAG = 0; ! 1784: PC+= 4; ! 1785: } ! 1786: ! 1787: void cpu_op_1292a(t_ipc *ipc) /* EOR */ { ! 1788: /* mask f1ff, bits b179, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1789: int srcreg = (ipc->opcode >> 9) & 7; ! 1790: uint16 srcdata = DATAREG(srcreg); ! 1791: uint32 dstaddr = ipc->dst; ! 1792: uint16 dstdata = fetchword(dstaddr); ! 1793: uint16 outdata = dstdata; ! 1794: ! 1795: outdata^= srcdata; ! 1796: storeword(dstaddr, outdata); ! 1797: PC+= 6; ! 1798: } ! 1799: ! 1800: void cpu_op_1292b(t_ipc *ipc) /* EOR */ { ! 1801: /* mask f1ff, bits b179, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1802: int srcreg = (ipc->opcode >> 9) & 7; ! 1803: uint16 srcdata = DATAREG(srcreg); ! 1804: uint32 dstaddr = ipc->dst; ! 1805: uint16 dstdata = fetchword(dstaddr); ! 1806: uint16 outdata = dstdata; ! 1807: ! 1808: outdata^= srcdata; ! 1809: storeword(dstaddr, outdata); ! 1810: ! 1811: NFLAG = ((sint16)outdata) < 0; ! 1812: ZFLAG = !outdata; ! 1813: VFLAG = 0; ! 1814: CFLAG = 0; ! 1815: PC+= 6; ! 1816: } ! 1817: ! 1818: void cpu_op_1293a(t_ipc *ipc) /* EOR */ { ! 1819: /* mask f1f8, bits b180, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1820: int srcreg = (ipc->opcode >> 9) & 7; ! 1821: uint32 srcdata = DATAREG(srcreg); ! 1822: int dstreg = (ipc->opcode >> 0) & 7; ! 1823: uint32 dstdata = DATAREG(dstreg); ! 1824: uint32 outdata = dstdata; ! 1825: ! 1826: outdata^= srcdata; ! 1827: DATAREG(dstreg) = outdata; ! 1828: PC+= 2; ! 1829: } ! 1830: ! 1831: void cpu_op_1293b(t_ipc *ipc) /* EOR */ { ! 1832: /* mask f1f8, bits b180, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1833: int srcreg = (ipc->opcode >> 9) & 7; ! 1834: uint32 srcdata = DATAREG(srcreg); ! 1835: int dstreg = (ipc->opcode >> 0) & 7; ! 1836: uint32 dstdata = DATAREG(dstreg); ! 1837: uint32 outdata = dstdata; ! 1838: ! 1839: outdata^= srcdata; ! 1840: DATAREG(dstreg) = outdata; ! 1841: ! 1842: NFLAG = ((sint32)outdata) < 0; ! 1843: ZFLAG = !outdata; ! 1844: VFLAG = 0; ! 1845: CFLAG = 0; ! 1846: PC+= 2; ! 1847: } ! 1848: ! 1849: void cpu_op_1294a(t_ipc *ipc) /* EOR */ { ! 1850: /* mask f1f8, bits b190, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1851: int srcreg = (ipc->opcode >> 9) & 7; ! 1852: uint32 srcdata = DATAREG(srcreg); ! 1853: int dstreg = (ipc->opcode >> 0) & 7; ! 1854: uint32 dstaddr = ADDRREG(dstreg); ! 1855: uint32 dstdata = fetchlong(dstaddr); ! 1856: uint32 outdata = dstdata; ! 1857: ! 1858: outdata^= srcdata; ! 1859: storelong(dstaddr, outdata); ! 1860: PC+= 2; ! 1861: } ! 1862: ! 1863: void cpu_op_1294b(t_ipc *ipc) /* EOR */ { ! 1864: /* mask f1f8, bits b190, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1865: int srcreg = (ipc->opcode >> 9) & 7; ! 1866: uint32 srcdata = DATAREG(srcreg); ! 1867: int dstreg = (ipc->opcode >> 0) & 7; ! 1868: uint32 dstaddr = ADDRREG(dstreg); ! 1869: uint32 dstdata = fetchlong(dstaddr); ! 1870: uint32 outdata = dstdata; ! 1871: ! 1872: outdata^= srcdata; ! 1873: storelong(dstaddr, outdata); ! 1874: ! 1875: NFLAG = ((sint32)outdata) < 0; ! 1876: ZFLAG = !outdata; ! 1877: VFLAG = 0; ! 1878: CFLAG = 0; ! 1879: PC+= 2; ! 1880: } ! 1881: ! 1882: void cpu_op_1295a(t_ipc *ipc) /* EOR */ { ! 1883: /* mask f1f8, bits b198, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1884: int srcreg = (ipc->opcode >> 9) & 7; ! 1885: uint32 srcdata = DATAREG(srcreg); ! 1886: int dstreg = (ipc->opcode >> 0) & 7; ! 1887: uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4); ! 1888: uint32 dstdata = fetchlong(dstaddr); ! 1889: uint32 outdata = dstdata; ! 1890: ! 1891: outdata^= srcdata; ! 1892: storelong(dstaddr, outdata); ! 1893: PC+= 2; ! 1894: } ! 1895: ! 1896: void cpu_op_1295b(t_ipc *ipc) /* EOR */ { ! 1897: /* mask f1f8, bits b198, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1898: int srcreg = (ipc->opcode >> 9) & 7; ! 1899: uint32 srcdata = DATAREG(srcreg); ! 1900: int dstreg = (ipc->opcode >> 0) & 7; ! 1901: uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4); ! 1902: uint32 dstdata = fetchlong(dstaddr); ! 1903: uint32 outdata = dstdata; ! 1904: ! 1905: outdata^= srcdata; ! 1906: storelong(dstaddr, outdata); ! 1907: ! 1908: NFLAG = ((sint32)outdata) < 0; ! 1909: ZFLAG = !outdata; ! 1910: VFLAG = 0; ! 1911: CFLAG = 0; ! 1912: PC+= 2; ! 1913: } ! 1914: ! 1915: void cpu_op_1296a(t_ipc *ipc) /* EOR */ { ! 1916: /* mask f1f8, bits b1a0, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1917: int srcreg = (ipc->opcode >> 9) & 7; ! 1918: uint32 srcdata = DATAREG(srcreg); ! 1919: int dstreg = (ipc->opcode >> 0) & 7; ! 1920: uint32 dstaddr = ADDRREG(dstreg)-=4; ! 1921: uint32 dstdata = fetchlong(dstaddr); ! 1922: uint32 outdata = dstdata; ! 1923: ! 1924: outdata^= srcdata; ! 1925: storelong(dstaddr, outdata); ! 1926: PC+= 2; ! 1927: } ! 1928: ! 1929: void cpu_op_1296b(t_ipc *ipc) /* EOR */ { ! 1930: /* mask f1f8, bits b1a0, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1931: int srcreg = (ipc->opcode >> 9) & 7; ! 1932: uint32 srcdata = DATAREG(srcreg); ! 1933: int dstreg = (ipc->opcode >> 0) & 7; ! 1934: uint32 dstaddr = ADDRREG(dstreg)-=4; ! 1935: uint32 dstdata = fetchlong(dstaddr); ! 1936: uint32 outdata = dstdata; ! 1937: ! 1938: outdata^= srcdata; ! 1939: storelong(dstaddr, outdata); ! 1940: ! 1941: NFLAG = ((sint32)outdata) < 0; ! 1942: ZFLAG = !outdata; ! 1943: VFLAG = 0; ! 1944: CFLAG = 0; ! 1945: PC+= 2; ! 1946: } ! 1947: ! 1948: void cpu_op_1297a(t_ipc *ipc) /* EOR */ { ! 1949: /* mask f1f8, bits b1a8, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1950: int srcreg = (ipc->opcode >> 9) & 7; ! 1951: uint32 srcdata = DATAREG(srcreg); ! 1952: int dstreg = (ipc->opcode >> 0) & 7; ! 1953: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1954: uint32 dstdata = fetchlong(dstaddr); ! 1955: uint32 outdata = dstdata; ! 1956: ! 1957: outdata^= srcdata; ! 1958: storelong(dstaddr, outdata); ! 1959: PC+= 4; ! 1960: } ! 1961: ! 1962: void cpu_op_1297b(t_ipc *ipc) /* EOR */ { ! 1963: /* mask f1f8, bits b1a8, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1964: int srcreg = (ipc->opcode >> 9) & 7; ! 1965: uint32 srcdata = DATAREG(srcreg); ! 1966: int dstreg = (ipc->opcode >> 0) & 7; ! 1967: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1968: uint32 dstdata = fetchlong(dstaddr); ! 1969: uint32 outdata = dstdata; ! 1970: ! 1971: outdata^= srcdata; ! 1972: storelong(dstaddr, outdata); ! 1973: ! 1974: NFLAG = ((sint32)outdata) < 0; ! 1975: ZFLAG = !outdata; ! 1976: VFLAG = 0; ! 1977: CFLAG = 0; ! 1978: PC+= 4; ! 1979: } ! 1980: ! 1981: void cpu_op_1298a(t_ipc *ipc) /* EOR */ { ! 1982: /* mask f1f8, bits b1b0, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1983: int srcreg = (ipc->opcode >> 9) & 7; ! 1984: uint32 srcdata = DATAREG(srcreg); ! 1985: int dstreg = (ipc->opcode >> 0) & 7; ! 1986: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1987: uint32 dstdata = fetchlong(dstaddr); ! 1988: uint32 outdata = dstdata; ! 1989: ! 1990: outdata^= srcdata; ! 1991: storelong(dstaddr, outdata); ! 1992: PC+= 4; ! 1993: } ! 1994: ! 1995: void cpu_op_1298b(t_ipc *ipc) /* EOR */ { ! 1996: /* mask f1f8, bits b1b0, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1997: int srcreg = (ipc->opcode >> 9) & 7; ! 1998: uint32 srcdata = DATAREG(srcreg); ! 1999: int dstreg = (ipc->opcode >> 0) & 7; ! 2000: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 2001: uint32 dstdata = fetchlong(dstaddr); ! 2002: uint32 outdata = dstdata; ! 2003: ! 2004: outdata^= srcdata; ! 2005: storelong(dstaddr, outdata); ! 2006: ! 2007: NFLAG = ((sint32)outdata) < 0; ! 2008: ZFLAG = !outdata; ! 2009: VFLAG = 0; ! 2010: CFLAG = 0; ! 2011: PC+= 4; ! 2012: } ! 2013: ! 2014: void cpu_op_1299a(t_ipc *ipc) /* EOR */ { ! 2015: /* mask f1ff, bits b1b8, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 2016: int srcreg = (ipc->opcode >> 9) & 7; ! 2017: uint32 srcdata = DATAREG(srcreg); ! 2018: uint32 dstaddr = ipc->dst; ! 2019: uint32 dstdata = fetchlong(dstaddr); ! 2020: uint32 outdata = dstdata; ! 2021: ! 2022: outdata^= srcdata; ! 2023: storelong(dstaddr, outdata); ! 2024: PC+= 4; ! 2025: } ! 2026: ! 2027: void cpu_op_1299b(t_ipc *ipc) /* EOR */ { ! 2028: /* mask f1ff, bits b1b8, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 2029: int srcreg = (ipc->opcode >> 9) & 7; ! 2030: uint32 srcdata = DATAREG(srcreg); ! 2031: uint32 dstaddr = ipc->dst; ! 2032: uint32 dstdata = fetchlong(dstaddr); ! 2033: uint32 outdata = dstdata; ! 2034: ! 2035: outdata^= srcdata; ! 2036: storelong(dstaddr, outdata); ! 2037: ! 2038: NFLAG = ((sint32)outdata) < 0; ! 2039: ZFLAG = !outdata; ! 2040: VFLAG = 0; ! 2041: CFLAG = 0; ! 2042: PC+= 4; ! 2043: } ! 2044: ! 2045: void cpu_op_1300a(t_ipc *ipc) /* EOR */ { ! 2046: /* mask f1ff, bits b1b9, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 2047: int srcreg = (ipc->opcode >> 9) & 7; ! 2048: uint32 srcdata = DATAREG(srcreg); ! 2049: uint32 dstaddr = ipc->dst; ! 2050: uint32 dstdata = fetchlong(dstaddr); ! 2051: uint32 outdata = dstdata; ! 2052: ! 2053: outdata^= srcdata; ! 2054: storelong(dstaddr, outdata); ! 2055: PC+= 6; ! 2056: } ! 2057: ! 2058: void cpu_op_1300b(t_ipc *ipc) /* EOR */ { ! 2059: /* mask f1ff, bits b1b9, mnemonic 5, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 2060: int srcreg = (ipc->opcode >> 9) & 7; ! 2061: uint32 srcdata = DATAREG(srcreg); ! 2062: uint32 dstaddr = ipc->dst; ! 2063: uint32 dstdata = fetchlong(dstaddr); ! 2064: uint32 outdata = dstdata; ! 2065: ! 2066: outdata^= srcdata; ! 2067: storelong(dstaddr, outdata); ! 2068: ! 2069: NFLAG = ((sint32)outdata) < 0; ! 2070: ZFLAG = !outdata; ! 2071: VFLAG = 0; ! 2072: CFLAG = 0; ! 2073: PC+= 6; ! 2074: } ! 2075: ! 2076: void cpu_op_1301a(t_ipc *ipc) /* CMP */ { ! 2077: /* mask f1f8, bits b108, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 3, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2078: int srcreg = (ipc->opcode >> 0) & 7; ! 2079: uint32 srcaddr = ADDRREG(srcreg); ! 2080: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 2081: uint8 srcdata = fetchbyte(srcaddr); ! 2082: int dstreg = (ipc->opcode >> 9) & 7; ! 2083: uint32 dstaddr = ADDRREG(dstreg); ! 2084: uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0); ! 2085: uint8 dstdata = fetchbyte(dstaddr); ! 2086: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2087: PC+= 2; ! 2088: } ! 2089: ! 2090: void cpu_op_1301b(t_ipc *ipc) /* CMP */ { ! 2091: /* mask f1f8, bits b108, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 1, stype 3, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2092: int srcreg = (ipc->opcode >> 0) & 7; ! 2093: uint32 srcaddr = ADDRREG(srcreg); ! 2094: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 2095: uint8 srcdata = fetchbyte(srcaddr); ! 2096: int dstreg = (ipc->opcode >> 9) & 7; ! 2097: uint32 dstaddr = ADDRREG(dstreg); ! 2098: uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0); ! 2099: uint8 dstdata = fetchbyte(dstaddr); ! 2100: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2101: ! 2102: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 2103: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 2104: CFLAG = srcdata > dstdata; ! 2105: NFLAG = ((sint8)outdata) < 0; ! 2106: ZFLAG = !outdata; ! 2107: PC+= 2; ! 2108: } ! 2109: ! 2110: void cpu_op_1302a(t_ipc *ipc) /* CMP */ { ! 2111: /* mask f1f8, bits b148, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2112: int srcreg = (ipc->opcode >> 0) & 7; ! 2113: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 2114: uint16 srcdata = fetchword(srcaddr); ! 2115: int dstreg = (ipc->opcode >> 9) & 7; ! 2116: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2); ! 2117: uint16 dstdata = fetchword(dstaddr); ! 2118: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2119: PC+= 2; ! 2120: } ! 2121: ! 2122: void cpu_op_1302b(t_ipc *ipc) /* CMP */ { ! 2123: /* mask f1f8, bits b148, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2124: int srcreg = (ipc->opcode >> 0) & 7; ! 2125: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2); ! 2126: uint16 srcdata = fetchword(srcaddr); ! 2127: int dstreg = (ipc->opcode >> 9) & 7; ! 2128: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2); ! 2129: uint16 dstdata = fetchword(dstaddr); ! 2130: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2131: ! 2132: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 2133: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 2134: CFLAG = srcdata > dstdata; ! 2135: NFLAG = ((sint16)outdata) < 0; ! 2136: ZFLAG = !outdata; ! 2137: PC+= 2; ! 2138: } ! 2139: ! 2140: void cpu_op_1303a(t_ipc *ipc) /* CMP */ { ! 2141: /* mask f1f8, bits b188, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 3, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2142: int srcreg = (ipc->opcode >> 0) & 7; ! 2143: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 2144: uint32 srcdata = fetchlong(srcaddr); ! 2145: int dstreg = (ipc->opcode >> 9) & 7; ! 2146: uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4); ! 2147: uint32 dstdata = fetchlong(dstaddr); ! 2148: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2149: PC+= 2; ! 2150: } ! 2151: ! 2152: void cpu_op_1303b(t_ipc *ipc) /* CMP */ { ! 2153: /* mask f1f8, bits b188, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 3, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2154: int srcreg = (ipc->opcode >> 0) & 7; ! 2155: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 2156: uint32 srcdata = fetchlong(srcaddr); ! 2157: int dstreg = (ipc->opcode >> 9) & 7; ! 2158: uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4); ! 2159: uint32 dstdata = fetchlong(dstaddr); ! 2160: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2161: ! 2162: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2163: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2164: CFLAG = srcdata > dstdata; ! 2165: NFLAG = ((sint32)outdata) < 0; ! 2166: ZFLAG = !outdata; ! 2167: PC+= 2; ! 2168: } ! 2169: ! 2170: void cpu_op_1304a(t_ipc *ipc) /* CMP */ { ! 2171: /* mask f1f8, bits b1c0, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2172: int srcreg = (ipc->opcode >> 0) & 7; ! 2173: uint32 srcdata = DATAREG(srcreg); ! 2174: int dstreg = (ipc->opcode >> 9) & 7; ! 2175: uint32 dstdata = ADDRREG(dstreg); ! 2176: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2177: PC+= 2; ! 2178: } ! 2179: ! 2180: void cpu_op_1304b(t_ipc *ipc) /* CMP */ { ! 2181: /* mask f1f8, bits b1c0, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 0, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2182: int srcreg = (ipc->opcode >> 0) & 7; ! 2183: uint32 srcdata = DATAREG(srcreg); ! 2184: int dstreg = (ipc->opcode >> 9) & 7; ! 2185: uint32 dstdata = ADDRREG(dstreg); ! 2186: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2187: ! 2188: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2189: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2190: CFLAG = srcdata > dstdata; ! 2191: NFLAG = ((sint32)outdata) < 0; ! 2192: ZFLAG = !outdata; ! 2193: PC+= 2; ! 2194: } ! 2195: ! 2196: void cpu_op_1305a(t_ipc *ipc) /* CMP */ { ! 2197: /* mask f1f8, bits b1c8, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 1, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2198: int srcreg = (ipc->opcode >> 0) & 7; ! 2199: uint32 srcdata = ADDRREG(srcreg); ! 2200: int dstreg = (ipc->opcode >> 9) & 7; ! 2201: uint32 dstdata = ADDRREG(dstreg); ! 2202: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2203: PC+= 2; ! 2204: } ! 2205: ! 2206: void cpu_op_1305b(t_ipc *ipc) /* CMP */ { ! 2207: /* mask f1f8, bits b1c8, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 1, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2208: int srcreg = (ipc->opcode >> 0) & 7; ! 2209: uint32 srcdata = ADDRREG(srcreg); ! 2210: int dstreg = (ipc->opcode >> 9) & 7; ! 2211: uint32 dstdata = ADDRREG(dstreg); ! 2212: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2213: ! 2214: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2215: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2216: CFLAG = srcdata > dstdata; ! 2217: NFLAG = ((sint32)outdata) < 0; ! 2218: ZFLAG = !outdata; ! 2219: PC+= 2; ! 2220: } ! 2221: ! 2222: void cpu_op_1306a(t_ipc *ipc) /* CMP */ { ! 2223: /* mask f1f8, bits b1d0, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 2, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2224: int srcreg = (ipc->opcode >> 0) & 7; ! 2225: uint32 srcaddr = ADDRREG(srcreg); ! 2226: uint32 srcdata = fetchlong(srcaddr); ! 2227: int dstreg = (ipc->opcode >> 9) & 7; ! 2228: uint32 dstdata = ADDRREG(dstreg); ! 2229: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2230: PC+= 2; ! 2231: } ! 2232: ! 2233: void cpu_op_1306b(t_ipc *ipc) /* CMP */ { ! 2234: /* mask f1f8, bits b1d0, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 2, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2235: int srcreg = (ipc->opcode >> 0) & 7; ! 2236: uint32 srcaddr = ADDRREG(srcreg); ! 2237: uint32 srcdata = fetchlong(srcaddr); ! 2238: int dstreg = (ipc->opcode >> 9) & 7; ! 2239: uint32 dstdata = ADDRREG(dstreg); ! 2240: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2241: ! 2242: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2243: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2244: CFLAG = srcdata > dstdata; ! 2245: NFLAG = ((sint32)outdata) < 0; ! 2246: ZFLAG = !outdata; ! 2247: PC+= 2; ! 2248: } ! 2249: ! 2250: void cpu_op_1307a(t_ipc *ipc) /* CMP */ { ! 2251: /* mask f1f8, bits b1d8, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 3, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2252: int srcreg = (ipc->opcode >> 0) & 7; ! 2253: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 2254: uint32 srcdata = fetchlong(srcaddr); ! 2255: int dstreg = (ipc->opcode >> 9) & 7; ! 2256: uint32 dstdata = ADDRREG(dstreg); ! 2257: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2258: PC+= 2; ! 2259: } ! 2260: ! 2261: void cpu_op_1307b(t_ipc *ipc) /* CMP */ { ! 2262: /* mask f1f8, bits b1d8, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 3, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2263: int srcreg = (ipc->opcode >> 0) & 7; ! 2264: uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4); ! 2265: uint32 srcdata = fetchlong(srcaddr); ! 2266: int dstreg = (ipc->opcode >> 9) & 7; ! 2267: uint32 dstdata = ADDRREG(dstreg); ! 2268: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2269: ! 2270: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2271: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2272: CFLAG = srcdata > dstdata; ! 2273: NFLAG = ((sint32)outdata) < 0; ! 2274: ZFLAG = !outdata; ! 2275: PC+= 2; ! 2276: } ! 2277: ! 2278: void cpu_op_1308a(t_ipc *ipc) /* CMP */ { ! 2279: /* mask f1f8, bits b1e0, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 4, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2280: int srcreg = (ipc->opcode >> 0) & 7; ! 2281: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 2282: uint32 srcdata = fetchlong(srcaddr); ! 2283: int dstreg = (ipc->opcode >> 9) & 7; ! 2284: uint32 dstdata = ADDRREG(dstreg); ! 2285: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2286: PC+= 2; ! 2287: } ! 2288: ! 2289: void cpu_op_1308b(t_ipc *ipc) /* CMP */ { ! 2290: /* mask f1f8, bits b1e0, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 4, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2291: int srcreg = (ipc->opcode >> 0) & 7; ! 2292: uint32 srcaddr = ADDRREG(srcreg)-=4; ! 2293: uint32 srcdata = fetchlong(srcaddr); ! 2294: int dstreg = (ipc->opcode >> 9) & 7; ! 2295: uint32 dstdata = ADDRREG(dstreg); ! 2296: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2297: ! 2298: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2299: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2300: CFLAG = srcdata > dstdata; ! 2301: NFLAG = ((sint32)outdata) < 0; ! 2302: ZFLAG = !outdata; ! 2303: PC+= 2; ! 2304: } ! 2305: ! 2306: void cpu_op_1309a(t_ipc *ipc) /* CMP */ { ! 2307: /* mask f1f8, bits b1e8, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 5, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2308: int srcreg = (ipc->opcode >> 0) & 7; ! 2309: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 2310: uint32 srcdata = fetchlong(srcaddr); ! 2311: int dstreg = (ipc->opcode >> 9) & 7; ! 2312: uint32 dstdata = ADDRREG(dstreg); ! 2313: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2314: PC+= 4; ! 2315: } ! 2316: ! 2317: void cpu_op_1309b(t_ipc *ipc) /* CMP */ { ! 2318: /* mask f1f8, bits b1e8, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 5, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2319: int srcreg = (ipc->opcode >> 0) & 7; ! 2320: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 2321: uint32 srcdata = fetchlong(srcaddr); ! 2322: int dstreg = (ipc->opcode >> 9) & 7; ! 2323: uint32 dstdata = ADDRREG(dstreg); ! 2324: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2325: ! 2326: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2327: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2328: CFLAG = srcdata > dstdata; ! 2329: NFLAG = ((sint32)outdata) < 0; ! 2330: ZFLAG = !outdata; ! 2331: PC+= 4; ! 2332: } ! 2333: ! 2334: void cpu_op_1310a(t_ipc *ipc) /* CMP */ { ! 2335: /* mask f1f8, bits b1f0, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 6, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2336: int srcreg = (ipc->opcode >> 0) & 7; ! 2337: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 2338: uint32 srcdata = fetchlong(srcaddr); ! 2339: int dstreg = (ipc->opcode >> 9) & 7; ! 2340: uint32 dstdata = ADDRREG(dstreg); ! 2341: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2342: PC+= 4; ! 2343: } ! 2344: ! 2345: void cpu_op_1310b(t_ipc *ipc) /* CMP */ { ! 2346: /* mask f1f8, bits b1f0, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 6, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2347: int srcreg = (ipc->opcode >> 0) & 7; ! 2348: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 2349: uint32 srcdata = fetchlong(srcaddr); ! 2350: int dstreg = (ipc->opcode >> 9) & 7; ! 2351: uint32 dstdata = ADDRREG(dstreg); ! 2352: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2353: ! 2354: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2355: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2356: CFLAG = srcdata > dstdata; ! 2357: NFLAG = ((sint32)outdata) < 0; ! 2358: ZFLAG = !outdata; ! 2359: PC+= 4; ! 2360: } ! 2361: ! 2362: void cpu_op_1311a(t_ipc *ipc) /* CMP */ { ! 2363: /* mask f1ff, bits b1f8, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 7, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2364: uint32 srcaddr = ipc->src; ! 2365: uint32 srcdata = fetchlong(srcaddr); ! 2366: int dstreg = (ipc->opcode >> 9) & 7; ! 2367: uint32 dstdata = ADDRREG(dstreg); ! 2368: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2369: PC+= 4; ! 2370: } ! 2371: ! 2372: void cpu_op_1311b(t_ipc *ipc) /* CMP */ { ! 2373: /* mask f1ff, bits b1f8, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 7, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2374: uint32 srcaddr = ipc->src; ! 2375: uint32 srcdata = fetchlong(srcaddr); ! 2376: int dstreg = (ipc->opcode >> 9) & 7; ! 2377: uint32 dstdata = ADDRREG(dstreg); ! 2378: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2379: ! 2380: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2381: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2382: CFLAG = srcdata > dstdata; ! 2383: NFLAG = ((sint32)outdata) < 0; ! 2384: ZFLAG = !outdata; ! 2385: PC+= 4; ! 2386: } ! 2387: ! 2388: void cpu_op_1312a(t_ipc *ipc) /* CMP */ { ! 2389: /* mask f1ff, bits b1f9, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 8, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2390: uint32 srcaddr = ipc->src; ! 2391: uint32 srcdata = fetchlong(srcaddr); ! 2392: int dstreg = (ipc->opcode >> 9) & 7; ! 2393: uint32 dstdata = ADDRREG(dstreg); ! 2394: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2395: PC+= 6; ! 2396: } ! 2397: ! 2398: void cpu_op_1312b(t_ipc *ipc) /* CMP */ { ! 2399: /* mask f1ff, bits b1f9, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 8, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2400: uint32 srcaddr = ipc->src; ! 2401: uint32 srcdata = fetchlong(srcaddr); ! 2402: int dstreg = (ipc->opcode >> 9) & 7; ! 2403: uint32 dstdata = ADDRREG(dstreg); ! 2404: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2405: ! 2406: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2407: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2408: CFLAG = srcdata > dstdata; ! 2409: NFLAG = ((sint32)outdata) < 0; ! 2410: ZFLAG = !outdata; ! 2411: PC+= 6; ! 2412: } ! 2413: ! 2414: void cpu_op_1313a(t_ipc *ipc) /* CMP */ { ! 2415: /* mask f1ff, bits b1fa, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 9, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2416: uint32 srcaddr = ipc->src; ! 2417: uint32 srcdata = fetchlong(srcaddr); ! 2418: int dstreg = (ipc->opcode >> 9) & 7; ! 2419: uint32 dstdata = ADDRREG(dstreg); ! 2420: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2421: PC+= 4; ! 2422: } ! 2423: ! 2424: void cpu_op_1313b(t_ipc *ipc) /* CMP */ { ! 2425: /* mask f1ff, bits b1fa, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 9, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2426: uint32 srcaddr = ipc->src; ! 2427: uint32 srcdata = fetchlong(srcaddr); ! 2428: int dstreg = (ipc->opcode >> 9) & 7; ! 2429: uint32 dstdata = ADDRREG(dstreg); ! 2430: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2431: ! 2432: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2433: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2434: CFLAG = srcdata > dstdata; ! 2435: NFLAG = ((sint32)outdata) < 0; ! 2436: ZFLAG = !outdata; ! 2437: PC+= 4; ! 2438: } ! 2439: ! 2440: void cpu_op_1314a(t_ipc *ipc) /* CMP */ { ! 2441: /* mask f1ff, bits b1fb, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 10, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2442: uint32 srcaddr = idxval_src(ipc); ! 2443: uint32 srcdata = fetchlong(srcaddr); ! 2444: int dstreg = (ipc->opcode >> 9) & 7; ! 2445: uint32 dstdata = ADDRREG(dstreg); ! 2446: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2447: PC+= 4; ! 2448: } ! 2449: ! 2450: void cpu_op_1314b(t_ipc *ipc) /* CMP */ { ! 2451: /* mask f1ff, bits b1fb, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 10, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2452: uint32 srcaddr = idxval_src(ipc); ! 2453: uint32 srcdata = fetchlong(srcaddr); ! 2454: int dstreg = (ipc->opcode >> 9) & 7; ! 2455: uint32 dstdata = ADDRREG(dstreg); ! 2456: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2457: ! 2458: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2459: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2460: CFLAG = srcdata > dstdata; ! 2461: NFLAG = ((sint32)outdata) < 0; ! 2462: ZFLAG = !outdata; ! 2463: PC+= 4; ! 2464: } ! 2465: ! 2466: void cpu_op_1315a(t_ipc *ipc) /* CMP */ { ! 2467: /* mask f1ff, bits b1fc, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 13, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2468: uint32 srcdata = ipc->src; ! 2469: int dstreg = (ipc->opcode >> 9) & 7; ! 2470: uint32 dstdata = ADDRREG(dstreg); ! 2471: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2472: PC+= 6; ! 2473: } ! 2474: ! 2475: void cpu_op_1315b(t_ipc *ipc) /* CMP */ { ! 2476: /* mask f1ff, bits b1fc, mnemonic 15, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 3, stype 13, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */ ! 2477: uint32 srcdata = ipc->src; ! 2478: int dstreg = (ipc->opcode >> 9) & 7; ! 2479: uint32 dstdata = ADDRREG(dstreg); ! 2480: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2481: ! 2482: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2483: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2484: CFLAG = srcdata > dstdata; ! 2485: NFLAG = ((sint32)outdata) < 0; ! 2486: ZFLAG = !outdata; ! 2487: PC+= 6; ! 2488: } ! 2489:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.