|
|
1.1 ! root 1: /*****************************************************************************/ ! 2: /* Generator - Sega Genesis emulation - (c) James Ponder 1997-1998 */ ! 3: /*****************************************************************************/ ! 4: /* */ ! 5: /* cpu68k-5.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_783a(t_ipc *ipc) /* ADD */ { ! 19: /* mask f1f8, bits 5000, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 20: unsigned int srcdata = ipc->src; ! 21: int dstreg = (ipc->opcode >> 0) & 7; ! 22: uint8 dstdata = DATAREG(dstreg); ! 23: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 24: ! 25: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata; ! 26: PC+= 2; ! 27: } ! 28: ! 29: void cpu_op_783b(t_ipc *ipc) /* ADD */ { ! 30: /* mask f1f8, bits 5000, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 31: unsigned int srcdata = ipc->src; ! 32: int dstreg = (ipc->opcode >> 0) & 7; ! 33: uint8 dstdata = DATAREG(dstreg); ! 34: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 35: ! 36: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata; ! 37: ! 38: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 39: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 40: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 41: NFLAG = ((sint8)outdata) < 0; ! 42: ZFLAG = !outdata; ! 43: PC+= 2; ! 44: } ! 45: ! 46: void cpu_op_784a(t_ipc *ipc) /* ADD */ { ! 47: /* mask f1f8, bits 5010, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 48: unsigned int srcdata = ipc->src; ! 49: int dstreg = (ipc->opcode >> 0) & 7; ! 50: uint32 dstaddr = ADDRREG(dstreg); ! 51: uint8 dstdata = fetchbyte(dstaddr); ! 52: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 53: ! 54: storebyte(dstaddr, outdata); ! 55: PC+= 2; ! 56: } ! 57: ! 58: void cpu_op_784b(t_ipc *ipc) /* ADD */ { ! 59: /* mask f1f8, bits 5010, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 60: unsigned int srcdata = ipc->src; ! 61: int dstreg = (ipc->opcode >> 0) & 7; ! 62: uint32 dstaddr = ADDRREG(dstreg); ! 63: uint8 dstdata = fetchbyte(dstaddr); ! 64: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 65: ! 66: storebyte(dstaddr, outdata); ! 67: ! 68: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 69: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 70: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 71: NFLAG = ((sint8)outdata) < 0; ! 72: ZFLAG = !outdata; ! 73: PC+= 2; ! 74: } ! 75: ! 76: void cpu_op_785a(t_ipc *ipc) /* ADD */ { ! 77: /* mask f1f8, bits 5018, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 78: unsigned int srcdata = ipc->src; ! 79: int dstreg = (ipc->opcode >> 0) & 7; ! 80: uint32 dstaddr = ADDRREG(dstreg); ! 81: uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0); ! 82: uint8 dstdata = fetchbyte(dstaddr); ! 83: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 84: ! 85: storebyte(dstaddr, outdata); ! 86: PC+= 2; ! 87: } ! 88: ! 89: void cpu_op_785b(t_ipc *ipc) /* ADD */ { ! 90: /* mask f1f8, bits 5018, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 91: unsigned int srcdata = ipc->src; ! 92: int dstreg = (ipc->opcode >> 0) & 7; ! 93: uint32 dstaddr = ADDRREG(dstreg); ! 94: uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0); ! 95: uint8 dstdata = fetchbyte(dstaddr); ! 96: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 97: ! 98: storebyte(dstaddr, outdata); ! 99: ! 100: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 101: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 102: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 103: NFLAG = ((sint8)outdata) < 0; ! 104: ZFLAG = !outdata; ! 105: PC+= 2; ! 106: } ! 107: ! 108: void cpu_op_786a(t_ipc *ipc) /* ADD */ { ! 109: /* mask f1f8, bits 5020, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 110: unsigned int srcdata = ipc->src; ! 111: int dstreg = (ipc->opcode >> 0) & 7; ! 112: uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1)); ! 113: uint8 dstdata = fetchbyte(dstaddr); ! 114: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 115: ! 116: storebyte(dstaddr, outdata); ! 117: PC+= 2; ! 118: } ! 119: ! 120: void cpu_op_786b(t_ipc *ipc) /* ADD */ { ! 121: /* mask f1f8, bits 5020, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 122: unsigned int srcdata = ipc->src; ! 123: int dstreg = (ipc->opcode >> 0) & 7; ! 124: uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1)); ! 125: uint8 dstdata = fetchbyte(dstaddr); ! 126: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 127: ! 128: storebyte(dstaddr, outdata); ! 129: ! 130: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 131: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 132: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 133: NFLAG = ((sint8)outdata) < 0; ! 134: ZFLAG = !outdata; ! 135: PC+= 2; ! 136: } ! 137: ! 138: void cpu_op_787a(t_ipc *ipc) /* ADD */ { ! 139: /* mask f1f8, bits 5028, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 140: unsigned int srcdata = ipc->src; ! 141: int dstreg = (ipc->opcode >> 0) & 7; ! 142: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 143: uint8 dstdata = fetchbyte(dstaddr); ! 144: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 145: ! 146: storebyte(dstaddr, outdata); ! 147: PC+= 4; ! 148: } ! 149: ! 150: void cpu_op_787b(t_ipc *ipc) /* ADD */ { ! 151: /* mask f1f8, bits 5028, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 152: unsigned int srcdata = ipc->src; ! 153: int dstreg = (ipc->opcode >> 0) & 7; ! 154: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 155: uint8 dstdata = fetchbyte(dstaddr); ! 156: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 157: ! 158: storebyte(dstaddr, outdata); ! 159: ! 160: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 161: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 162: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 163: NFLAG = ((sint8)outdata) < 0; ! 164: ZFLAG = !outdata; ! 165: PC+= 4; ! 166: } ! 167: ! 168: void cpu_op_788a(t_ipc *ipc) /* ADD */ { ! 169: /* mask f1f8, bits 5030, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 170: unsigned int srcdata = ipc->src; ! 171: int dstreg = (ipc->opcode >> 0) & 7; ! 172: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 173: uint8 dstdata = fetchbyte(dstaddr); ! 174: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 175: ! 176: storebyte(dstaddr, outdata); ! 177: PC+= 4; ! 178: } ! 179: ! 180: void cpu_op_788b(t_ipc *ipc) /* ADD */ { ! 181: /* mask f1f8, bits 5030, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 182: unsigned int srcdata = ipc->src; ! 183: int dstreg = (ipc->opcode >> 0) & 7; ! 184: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 185: uint8 dstdata = fetchbyte(dstaddr); ! 186: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 187: ! 188: storebyte(dstaddr, outdata); ! 189: ! 190: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 191: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 192: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 193: NFLAG = ((sint8)outdata) < 0; ! 194: ZFLAG = !outdata; ! 195: PC+= 4; ! 196: } ! 197: ! 198: void cpu_op_789a(t_ipc *ipc) /* ADD */ { ! 199: /* mask f1ff, bits 5038, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 200: unsigned int srcdata = ipc->src; ! 201: uint32 dstaddr = ipc->dst; ! 202: uint8 dstdata = fetchbyte(dstaddr); ! 203: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 204: ! 205: storebyte(dstaddr, outdata); ! 206: PC+= 4; ! 207: } ! 208: ! 209: void cpu_op_789b(t_ipc *ipc) /* ADD */ { ! 210: /* mask f1ff, bits 5038, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 211: unsigned int srcdata = ipc->src; ! 212: uint32 dstaddr = ipc->dst; ! 213: uint8 dstdata = fetchbyte(dstaddr); ! 214: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 215: ! 216: storebyte(dstaddr, outdata); ! 217: ! 218: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 219: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 220: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 221: NFLAG = ((sint8)outdata) < 0; ! 222: ZFLAG = !outdata; ! 223: PC+= 4; ! 224: } ! 225: ! 226: void cpu_op_790a(t_ipc *ipc) /* ADD */ { ! 227: /* mask f1ff, bits 5039, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 228: unsigned int srcdata = ipc->src; ! 229: uint32 dstaddr = ipc->dst; ! 230: uint8 dstdata = fetchbyte(dstaddr); ! 231: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 232: ! 233: storebyte(dstaddr, outdata); ! 234: PC+= 6; ! 235: } ! 236: ! 237: void cpu_op_790b(t_ipc *ipc) /* ADD */ { ! 238: /* mask f1ff, bits 5039, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 239: unsigned int srcdata = ipc->src; ! 240: uint32 dstaddr = ipc->dst; ! 241: uint8 dstdata = fetchbyte(dstaddr); ! 242: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 243: ! 244: storebyte(dstaddr, outdata); ! 245: ! 246: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 247: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 248: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 249: NFLAG = ((sint8)outdata) < 0; ! 250: ZFLAG = !outdata; ! 251: PC+= 6; ! 252: } ! 253: ! 254: void cpu_op_791a(t_ipc *ipc) /* ADD */ { ! 255: /* mask f1f8, bits 5040, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 256: unsigned int srcdata = ipc->src; ! 257: int dstreg = (ipc->opcode >> 0) & 7; ! 258: uint16 dstdata = DATAREG(dstreg); ! 259: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 260: ! 261: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata; ! 262: PC+= 2; ! 263: } ! 264: ! 265: void cpu_op_791b(t_ipc *ipc) /* ADD */ { ! 266: /* mask f1f8, bits 5040, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 267: unsigned int srcdata = ipc->src; ! 268: int dstreg = (ipc->opcode >> 0) & 7; ! 269: uint16 dstdata = DATAREG(dstreg); ! 270: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 271: ! 272: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata; ! 273: ! 274: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 275: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 276: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 277: NFLAG = ((sint16)outdata) < 0; ! 278: ZFLAG = !outdata; ! 279: PC+= 2; ! 280: } ! 281: ! 282: void cpu_op_792a(t_ipc *ipc) /* ADD */ { ! 283: /* mask f1f8, bits 5050, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 284: unsigned int srcdata = ipc->src; ! 285: int dstreg = (ipc->opcode >> 0) & 7; ! 286: uint32 dstaddr = ADDRREG(dstreg); ! 287: uint16 dstdata = fetchword(dstaddr); ! 288: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 289: ! 290: storeword(dstaddr, outdata); ! 291: PC+= 2; ! 292: } ! 293: ! 294: void cpu_op_792b(t_ipc *ipc) /* ADD */ { ! 295: /* mask f1f8, bits 5050, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 296: unsigned int srcdata = ipc->src; ! 297: int dstreg = (ipc->opcode >> 0) & 7; ! 298: uint32 dstaddr = ADDRREG(dstreg); ! 299: uint16 dstdata = fetchword(dstaddr); ! 300: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 301: ! 302: storeword(dstaddr, outdata); ! 303: ! 304: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 305: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 306: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 307: NFLAG = ((sint16)outdata) < 0; ! 308: ZFLAG = !outdata; ! 309: PC+= 2; ! 310: } ! 311: ! 312: void cpu_op_793a(t_ipc *ipc) /* ADD */ { ! 313: /* mask f1f8, bits 5058, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 314: unsigned int srcdata = ipc->src; ! 315: int dstreg = (ipc->opcode >> 0) & 7; ! 316: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2); ! 317: uint16 dstdata = fetchword(dstaddr); ! 318: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 319: ! 320: storeword(dstaddr, outdata); ! 321: PC+= 2; ! 322: } ! 323: ! 324: void cpu_op_793b(t_ipc *ipc) /* ADD */ { ! 325: /* mask f1f8, bits 5058, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 326: unsigned int srcdata = ipc->src; ! 327: int dstreg = (ipc->opcode >> 0) & 7; ! 328: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2); ! 329: uint16 dstdata = fetchword(dstaddr); ! 330: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 331: ! 332: storeword(dstaddr, outdata); ! 333: ! 334: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 335: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 336: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 337: NFLAG = ((sint16)outdata) < 0; ! 338: ZFLAG = !outdata; ! 339: PC+= 2; ! 340: } ! 341: ! 342: void cpu_op_794a(t_ipc *ipc) /* ADD */ { ! 343: /* mask f1f8, bits 5060, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 344: unsigned int srcdata = ipc->src; ! 345: int dstreg = (ipc->opcode >> 0) & 7; ! 346: uint32 dstaddr = ADDRREG(dstreg)-=2; ! 347: uint16 dstdata = fetchword(dstaddr); ! 348: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 349: ! 350: storeword(dstaddr, outdata); ! 351: PC+= 2; ! 352: } ! 353: ! 354: void cpu_op_794b(t_ipc *ipc) /* ADD */ { ! 355: /* mask f1f8, bits 5060, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 356: unsigned int srcdata = ipc->src; ! 357: int dstreg = (ipc->opcode >> 0) & 7; ! 358: uint32 dstaddr = ADDRREG(dstreg)-=2; ! 359: uint16 dstdata = fetchword(dstaddr); ! 360: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 361: ! 362: storeword(dstaddr, outdata); ! 363: ! 364: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 365: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 366: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 367: NFLAG = ((sint16)outdata) < 0; ! 368: ZFLAG = !outdata; ! 369: PC+= 2; ! 370: } ! 371: ! 372: void cpu_op_795a(t_ipc *ipc) /* ADD */ { ! 373: /* mask f1f8, bits 5068, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 374: unsigned int srcdata = ipc->src; ! 375: int dstreg = (ipc->opcode >> 0) & 7; ! 376: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 377: uint16 dstdata = fetchword(dstaddr); ! 378: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 379: ! 380: storeword(dstaddr, outdata); ! 381: PC+= 4; ! 382: } ! 383: ! 384: void cpu_op_795b(t_ipc *ipc) /* ADD */ { ! 385: /* mask f1f8, bits 5068, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 386: unsigned int srcdata = ipc->src; ! 387: int dstreg = (ipc->opcode >> 0) & 7; ! 388: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 389: uint16 dstdata = fetchword(dstaddr); ! 390: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 391: ! 392: storeword(dstaddr, outdata); ! 393: ! 394: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 395: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 396: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 397: NFLAG = ((sint16)outdata) < 0; ! 398: ZFLAG = !outdata; ! 399: PC+= 4; ! 400: } ! 401: ! 402: void cpu_op_796a(t_ipc *ipc) /* ADD */ { ! 403: /* mask f1f8, bits 5070, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 404: unsigned int srcdata = ipc->src; ! 405: int dstreg = (ipc->opcode >> 0) & 7; ! 406: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 407: uint16 dstdata = fetchword(dstaddr); ! 408: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 409: ! 410: storeword(dstaddr, outdata); ! 411: PC+= 4; ! 412: } ! 413: ! 414: void cpu_op_796b(t_ipc *ipc) /* ADD */ { ! 415: /* mask f1f8, bits 5070, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 416: unsigned int srcdata = ipc->src; ! 417: int dstreg = (ipc->opcode >> 0) & 7; ! 418: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 419: uint16 dstdata = fetchword(dstaddr); ! 420: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 421: ! 422: storeword(dstaddr, outdata); ! 423: ! 424: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 425: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 426: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 427: NFLAG = ((sint16)outdata) < 0; ! 428: ZFLAG = !outdata; ! 429: PC+= 4; ! 430: } ! 431: ! 432: void cpu_op_797a(t_ipc *ipc) /* ADD */ { ! 433: /* mask f1ff, bits 5078, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 434: unsigned int srcdata = ipc->src; ! 435: uint32 dstaddr = ipc->dst; ! 436: uint16 dstdata = fetchword(dstaddr); ! 437: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 438: ! 439: storeword(dstaddr, outdata); ! 440: PC+= 4; ! 441: } ! 442: ! 443: void cpu_op_797b(t_ipc *ipc) /* ADD */ { ! 444: /* mask f1ff, bits 5078, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 445: unsigned int srcdata = ipc->src; ! 446: uint32 dstaddr = ipc->dst; ! 447: uint16 dstdata = fetchword(dstaddr); ! 448: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 449: ! 450: storeword(dstaddr, outdata); ! 451: ! 452: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 453: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 454: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 455: NFLAG = ((sint16)outdata) < 0; ! 456: ZFLAG = !outdata; ! 457: PC+= 4; ! 458: } ! 459: ! 460: void cpu_op_798a(t_ipc *ipc) /* ADD */ { ! 461: /* mask f1ff, bits 5079, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 462: unsigned int srcdata = ipc->src; ! 463: uint32 dstaddr = ipc->dst; ! 464: uint16 dstdata = fetchword(dstaddr); ! 465: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 466: ! 467: storeword(dstaddr, outdata); ! 468: PC+= 6; ! 469: } ! 470: ! 471: void cpu_op_798b(t_ipc *ipc) /* ADD */ { ! 472: /* mask f1ff, bits 5079, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 473: unsigned int srcdata = ipc->src; ! 474: uint32 dstaddr = ipc->dst; ! 475: uint16 dstdata = fetchword(dstaddr); ! 476: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 477: ! 478: storeword(dstaddr, outdata); ! 479: ! 480: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 481: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 482: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 483: NFLAG = ((sint16)outdata) < 0; ! 484: ZFLAG = !outdata; ! 485: PC+= 6; ! 486: } ! 487: ! 488: void cpu_op_799a(t_ipc *ipc) /* ADD */ { ! 489: /* mask f1f8, bits 5080, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 490: unsigned int srcdata = ipc->src; ! 491: int dstreg = (ipc->opcode >> 0) & 7; ! 492: uint32 dstdata = DATAREG(dstreg); ! 493: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 494: ! 495: DATAREG(dstreg) = outdata; ! 496: PC+= 2; ! 497: } ! 498: ! 499: void cpu_op_799b(t_ipc *ipc) /* ADD */ { ! 500: /* mask f1f8, bits 5080, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 501: unsigned int srcdata = ipc->src; ! 502: int dstreg = (ipc->opcode >> 0) & 7; ! 503: uint32 dstdata = DATAREG(dstreg); ! 504: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 505: ! 506: DATAREG(dstreg) = outdata; ! 507: ! 508: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 509: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 510: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 511: NFLAG = ((sint32)outdata) < 0; ! 512: ZFLAG = !outdata; ! 513: PC+= 2; ! 514: } ! 515: ! 516: void cpu_op_800a(t_ipc *ipc) /* ADD */ { ! 517: /* mask f1f8, bits 5090, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 518: unsigned int srcdata = ipc->src; ! 519: int dstreg = (ipc->opcode >> 0) & 7; ! 520: uint32 dstaddr = ADDRREG(dstreg); ! 521: uint32 dstdata = fetchlong(dstaddr); ! 522: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 523: ! 524: storelong(dstaddr, outdata); ! 525: PC+= 2; ! 526: } ! 527: ! 528: void cpu_op_800b(t_ipc *ipc) /* ADD */ { ! 529: /* mask f1f8, bits 5090, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 530: unsigned int srcdata = ipc->src; ! 531: int dstreg = (ipc->opcode >> 0) & 7; ! 532: uint32 dstaddr = ADDRREG(dstreg); ! 533: uint32 dstdata = fetchlong(dstaddr); ! 534: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 535: ! 536: storelong(dstaddr, outdata); ! 537: ! 538: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 539: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 540: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 541: NFLAG = ((sint32)outdata) < 0; ! 542: ZFLAG = !outdata; ! 543: PC+= 2; ! 544: } ! 545: ! 546: void cpu_op_801a(t_ipc *ipc) /* ADD */ { ! 547: /* mask f1f8, bits 5098, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 548: unsigned int srcdata = ipc->src; ! 549: int dstreg = (ipc->opcode >> 0) & 7; ! 550: uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4); ! 551: uint32 dstdata = fetchlong(dstaddr); ! 552: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 553: ! 554: storelong(dstaddr, outdata); ! 555: PC+= 2; ! 556: } ! 557: ! 558: void cpu_op_801b(t_ipc *ipc) /* ADD */ { ! 559: /* mask f1f8, bits 5098, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 560: unsigned int srcdata = ipc->src; ! 561: int dstreg = (ipc->opcode >> 0) & 7; ! 562: uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4); ! 563: uint32 dstdata = fetchlong(dstaddr); ! 564: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 565: ! 566: storelong(dstaddr, outdata); ! 567: ! 568: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 569: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 570: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 571: NFLAG = ((sint32)outdata) < 0; ! 572: ZFLAG = !outdata; ! 573: PC+= 2; ! 574: } ! 575: ! 576: void cpu_op_802a(t_ipc *ipc) /* ADD */ { ! 577: /* mask f1f8, bits 50a0, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 578: unsigned int srcdata = ipc->src; ! 579: int dstreg = (ipc->opcode >> 0) & 7; ! 580: uint32 dstaddr = ADDRREG(dstreg)-=4; ! 581: uint32 dstdata = fetchlong(dstaddr); ! 582: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 583: ! 584: storelong(dstaddr, outdata); ! 585: PC+= 2; ! 586: } ! 587: ! 588: void cpu_op_802b(t_ipc *ipc) /* ADD */ { ! 589: /* mask f1f8, bits 50a0, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 590: unsigned int srcdata = ipc->src; ! 591: int dstreg = (ipc->opcode >> 0) & 7; ! 592: uint32 dstaddr = ADDRREG(dstreg)-=4; ! 593: uint32 dstdata = fetchlong(dstaddr); ! 594: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 595: ! 596: storelong(dstaddr, outdata); ! 597: ! 598: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 599: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 600: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 601: NFLAG = ((sint32)outdata) < 0; ! 602: ZFLAG = !outdata; ! 603: PC+= 2; ! 604: } ! 605: ! 606: void cpu_op_803a(t_ipc *ipc) /* ADD */ { ! 607: /* mask f1f8, bits 50a8, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 608: unsigned int srcdata = ipc->src; ! 609: int dstreg = (ipc->opcode >> 0) & 7; ! 610: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 611: uint32 dstdata = fetchlong(dstaddr); ! 612: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 613: ! 614: storelong(dstaddr, outdata); ! 615: PC+= 4; ! 616: } ! 617: ! 618: void cpu_op_803b(t_ipc *ipc) /* ADD */ { ! 619: /* mask f1f8, bits 50a8, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 620: unsigned int srcdata = ipc->src; ! 621: int dstreg = (ipc->opcode >> 0) & 7; ! 622: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 623: uint32 dstdata = fetchlong(dstaddr); ! 624: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 625: ! 626: storelong(dstaddr, outdata); ! 627: ! 628: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 629: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 630: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 631: NFLAG = ((sint32)outdata) < 0; ! 632: ZFLAG = !outdata; ! 633: PC+= 4; ! 634: } ! 635: ! 636: void cpu_op_804a(t_ipc *ipc) /* ADD */ { ! 637: /* mask f1f8, bits 50b0, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 638: unsigned int srcdata = ipc->src; ! 639: int dstreg = (ipc->opcode >> 0) & 7; ! 640: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 641: uint32 dstdata = fetchlong(dstaddr); ! 642: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 643: ! 644: storelong(dstaddr, outdata); ! 645: PC+= 4; ! 646: } ! 647: ! 648: void cpu_op_804b(t_ipc *ipc) /* ADD */ { ! 649: /* mask f1f8, bits 50b0, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 650: unsigned int srcdata = ipc->src; ! 651: int dstreg = (ipc->opcode >> 0) & 7; ! 652: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 653: uint32 dstdata = fetchlong(dstaddr); ! 654: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 655: ! 656: storelong(dstaddr, outdata); ! 657: ! 658: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 659: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 660: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 661: NFLAG = ((sint32)outdata) < 0; ! 662: ZFLAG = !outdata; ! 663: PC+= 4; ! 664: } ! 665: ! 666: void cpu_op_805a(t_ipc *ipc) /* ADD */ { ! 667: /* mask f1ff, bits 50b8, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 668: unsigned int srcdata = ipc->src; ! 669: uint32 dstaddr = ipc->dst; ! 670: uint32 dstdata = fetchlong(dstaddr); ! 671: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 672: ! 673: storelong(dstaddr, outdata); ! 674: PC+= 4; ! 675: } ! 676: ! 677: void cpu_op_805b(t_ipc *ipc) /* ADD */ { ! 678: /* mask f1ff, bits 50b8, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 679: unsigned int srcdata = ipc->src; ! 680: uint32 dstaddr = ipc->dst; ! 681: uint32 dstdata = fetchlong(dstaddr); ! 682: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 683: ! 684: storelong(dstaddr, outdata); ! 685: ! 686: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 687: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 688: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 689: NFLAG = ((sint32)outdata) < 0; ! 690: ZFLAG = !outdata; ! 691: PC+= 4; ! 692: } ! 693: ! 694: void cpu_op_806a(t_ipc *ipc) /* ADD */ { ! 695: /* mask f1ff, bits 50b9, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 696: unsigned int srcdata = ipc->src; ! 697: uint32 dstaddr = ipc->dst; ! 698: uint32 dstdata = fetchlong(dstaddr); ! 699: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 700: ! 701: storelong(dstaddr, outdata); ! 702: PC+= 6; ! 703: } ! 704: ! 705: void cpu_op_806b(t_ipc *ipc) /* ADD */ { ! 706: /* mask f1ff, bits 50b9, mnemonic 10, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 707: unsigned int srcdata = ipc->src; ! 708: uint32 dstaddr = ipc->dst; ! 709: uint32 dstdata = fetchlong(dstaddr); ! 710: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 711: ! 712: storelong(dstaddr, outdata); ! 713: ! 714: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 715: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 716: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 717: NFLAG = ((sint32)outdata) < 0; ! 718: ZFLAG = !outdata; ! 719: PC+= 6; ! 720: } ! 721: ! 722: void cpu_op_807a(t_ipc *ipc) /* ADDA */ { ! 723: /* mask f1f8, bits 5048, mnemonic 11, priv 0, endblk 0, imm_notzero -1, used 0 set 0, size 2, stype 15, dtype 1, sbitpos 9, dbitpos 0, immvalue 0 */ ! 724: unsigned int srcdata = ipc->src; ! 725: int dstreg = (ipc->opcode >> 0) & 7; ! 726: uint32 dstdata = ADDRREG(dstreg); ! 727: uint32 outdata = (sint32)dstdata + (sint16)srcdata; ! 728: ! 729: ADDRREG(dstreg) = outdata; ! 730: PC+= 2; ! 731: } ! 732: ! 733: void cpu_op_808a(t_ipc *ipc) /* ADDA */ { ! 734: /* mask f1f8, bits 5088, mnemonic 11, priv 0, endblk 0, imm_notzero -1, used 0 set 0, size 3, stype 15, dtype 1, sbitpos 9, dbitpos 0, immvalue 0 */ ! 735: unsigned int srcdata = ipc->src; ! 736: int dstreg = (ipc->opcode >> 0) & 7; ! 737: uint32 dstdata = ADDRREG(dstreg); ! 738: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 739: ! 740: ADDRREG(dstreg) = outdata; ! 741: PC+= 2; ! 742: } ! 743: ! 744: void cpu_op_809a(t_ipc *ipc) /* SUB */ { ! 745: /* mask f1f8, bits 5100, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 746: unsigned int srcdata = ipc->src; ! 747: int dstreg = (ipc->opcode >> 0) & 7; ! 748: uint8 dstdata = DATAREG(dstreg); ! 749: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 750: ! 751: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata; ! 752: PC+= 2; ! 753: } ! 754: ! 755: void cpu_op_809b(t_ipc *ipc) /* SUB */ { ! 756: /* mask f1f8, bits 5100, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 757: unsigned int srcdata = ipc->src; ! 758: int dstreg = (ipc->opcode >> 0) & 7; ! 759: uint8 dstdata = DATAREG(dstreg); ! 760: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 761: ! 762: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata; ! 763: ! 764: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 765: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 766: XFLAG = CFLAG = srcdata > dstdata; ! 767: NFLAG = ((sint8)outdata) < 0; ! 768: ZFLAG = !outdata; ! 769: PC+= 2; ! 770: } ! 771: ! 772: void cpu_op_810a(t_ipc *ipc) /* SUB */ { ! 773: /* mask f1f8, bits 5110, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 774: unsigned int srcdata = ipc->src; ! 775: int dstreg = (ipc->opcode >> 0) & 7; ! 776: uint32 dstaddr = ADDRREG(dstreg); ! 777: uint8 dstdata = fetchbyte(dstaddr); ! 778: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 779: ! 780: storebyte(dstaddr, outdata); ! 781: PC+= 2; ! 782: } ! 783: ! 784: void cpu_op_810b(t_ipc *ipc) /* SUB */ { ! 785: /* mask f1f8, bits 5110, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 786: unsigned int srcdata = ipc->src; ! 787: int dstreg = (ipc->opcode >> 0) & 7; ! 788: uint32 dstaddr = ADDRREG(dstreg); ! 789: uint8 dstdata = fetchbyte(dstaddr); ! 790: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 791: ! 792: storebyte(dstaddr, outdata); ! 793: ! 794: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 795: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 796: XFLAG = CFLAG = srcdata > dstdata; ! 797: NFLAG = ((sint8)outdata) < 0; ! 798: ZFLAG = !outdata; ! 799: PC+= 2; ! 800: } ! 801: ! 802: void cpu_op_811a(t_ipc *ipc) /* SUB */ { ! 803: /* mask f1f8, bits 5118, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 804: unsigned int srcdata = ipc->src; ! 805: int dstreg = (ipc->opcode >> 0) & 7; ! 806: uint32 dstaddr = ADDRREG(dstreg); ! 807: uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0); ! 808: uint8 dstdata = fetchbyte(dstaddr); ! 809: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 810: ! 811: storebyte(dstaddr, outdata); ! 812: PC+= 2; ! 813: } ! 814: ! 815: void cpu_op_811b(t_ipc *ipc) /* SUB */ { ! 816: /* mask f1f8, bits 5118, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 817: unsigned int srcdata = ipc->src; ! 818: int dstreg = (ipc->opcode >> 0) & 7; ! 819: uint32 dstaddr = ADDRREG(dstreg); ! 820: uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0); ! 821: uint8 dstdata = fetchbyte(dstaddr); ! 822: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 823: ! 824: storebyte(dstaddr, outdata); ! 825: ! 826: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 827: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 828: XFLAG = CFLAG = srcdata > dstdata; ! 829: NFLAG = ((sint8)outdata) < 0; ! 830: ZFLAG = !outdata; ! 831: PC+= 2; ! 832: } ! 833: ! 834: void cpu_op_812a(t_ipc *ipc) /* SUB */ { ! 835: /* mask f1f8, bits 5120, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 836: unsigned int srcdata = ipc->src; ! 837: int dstreg = (ipc->opcode >> 0) & 7; ! 838: uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1)); ! 839: uint8 dstdata = fetchbyte(dstaddr); ! 840: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 841: ! 842: storebyte(dstaddr, outdata); ! 843: PC+= 2; ! 844: } ! 845: ! 846: void cpu_op_812b(t_ipc *ipc) /* SUB */ { ! 847: /* mask f1f8, bits 5120, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 848: unsigned int srcdata = ipc->src; ! 849: int dstreg = (ipc->opcode >> 0) & 7; ! 850: uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1)); ! 851: uint8 dstdata = fetchbyte(dstaddr); ! 852: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 853: ! 854: storebyte(dstaddr, outdata); ! 855: ! 856: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 857: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 858: XFLAG = CFLAG = srcdata > dstdata; ! 859: NFLAG = ((sint8)outdata) < 0; ! 860: ZFLAG = !outdata; ! 861: PC+= 2; ! 862: } ! 863: ! 864: void cpu_op_813a(t_ipc *ipc) /* SUB */ { ! 865: /* mask f1f8, bits 5128, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 866: unsigned int srcdata = ipc->src; ! 867: int dstreg = (ipc->opcode >> 0) & 7; ! 868: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 869: uint8 dstdata = fetchbyte(dstaddr); ! 870: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 871: ! 872: storebyte(dstaddr, outdata); ! 873: PC+= 4; ! 874: } ! 875: ! 876: void cpu_op_813b(t_ipc *ipc) /* SUB */ { ! 877: /* mask f1f8, bits 5128, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 878: unsigned int srcdata = ipc->src; ! 879: int dstreg = (ipc->opcode >> 0) & 7; ! 880: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 881: uint8 dstdata = fetchbyte(dstaddr); ! 882: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 883: ! 884: storebyte(dstaddr, outdata); ! 885: ! 886: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 887: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 888: XFLAG = CFLAG = srcdata > dstdata; ! 889: NFLAG = ((sint8)outdata) < 0; ! 890: ZFLAG = !outdata; ! 891: PC+= 4; ! 892: } ! 893: ! 894: void cpu_op_814a(t_ipc *ipc) /* SUB */ { ! 895: /* mask f1f8, bits 5130, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 896: unsigned int srcdata = ipc->src; ! 897: int dstreg = (ipc->opcode >> 0) & 7; ! 898: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 899: uint8 dstdata = fetchbyte(dstaddr); ! 900: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 901: ! 902: storebyte(dstaddr, outdata); ! 903: PC+= 4; ! 904: } ! 905: ! 906: void cpu_op_814b(t_ipc *ipc) /* SUB */ { ! 907: /* mask f1f8, bits 5130, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 908: unsigned int srcdata = ipc->src; ! 909: int dstreg = (ipc->opcode >> 0) & 7; ! 910: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 911: uint8 dstdata = fetchbyte(dstaddr); ! 912: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 913: ! 914: storebyte(dstaddr, outdata); ! 915: ! 916: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 917: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 918: XFLAG = CFLAG = srcdata > dstdata; ! 919: NFLAG = ((sint8)outdata) < 0; ! 920: ZFLAG = !outdata; ! 921: PC+= 4; ! 922: } ! 923: ! 924: void cpu_op_815a(t_ipc *ipc) /* SUB */ { ! 925: /* mask f1ff, bits 5138, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 926: unsigned int srcdata = ipc->src; ! 927: uint32 dstaddr = ipc->dst; ! 928: uint8 dstdata = fetchbyte(dstaddr); ! 929: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 930: ! 931: storebyte(dstaddr, outdata); ! 932: PC+= 4; ! 933: } ! 934: ! 935: void cpu_op_815b(t_ipc *ipc) /* SUB */ { ! 936: /* mask f1ff, bits 5138, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 937: unsigned int srcdata = ipc->src; ! 938: uint32 dstaddr = ipc->dst; ! 939: uint8 dstdata = fetchbyte(dstaddr); ! 940: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 941: ! 942: storebyte(dstaddr, outdata); ! 943: ! 944: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 945: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 946: XFLAG = CFLAG = srcdata > dstdata; ! 947: NFLAG = ((sint8)outdata) < 0; ! 948: ZFLAG = !outdata; ! 949: PC+= 4; ! 950: } ! 951: ! 952: void cpu_op_816a(t_ipc *ipc) /* SUB */ { ! 953: /* mask f1ff, bits 5139, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 954: unsigned int srcdata = ipc->src; ! 955: uint32 dstaddr = ipc->dst; ! 956: uint8 dstdata = fetchbyte(dstaddr); ! 957: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 958: ! 959: storebyte(dstaddr, outdata); ! 960: PC+= 6; ! 961: } ! 962: ! 963: void cpu_op_816b(t_ipc *ipc) /* SUB */ { ! 964: /* mask f1ff, bits 5139, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 1, stype 15, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 965: unsigned int srcdata = ipc->src; ! 966: uint32 dstaddr = ipc->dst; ! 967: uint8 dstdata = fetchbyte(dstaddr); ! 968: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 969: ! 970: storebyte(dstaddr, outdata); ! 971: ! 972: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 973: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 974: XFLAG = CFLAG = srcdata > dstdata; ! 975: NFLAG = ((sint8)outdata) < 0; ! 976: ZFLAG = !outdata; ! 977: PC+= 6; ! 978: } ! 979: ! 980: void cpu_op_817a(t_ipc *ipc) /* SUB */ { ! 981: /* mask f1f8, bits 5140, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 982: unsigned int srcdata = ipc->src; ! 983: int dstreg = (ipc->opcode >> 0) & 7; ! 984: uint16 dstdata = DATAREG(dstreg); ! 985: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 986: ! 987: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata; ! 988: PC+= 2; ! 989: } ! 990: ! 991: void cpu_op_817b(t_ipc *ipc) /* SUB */ { ! 992: /* mask f1f8, bits 5140, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 993: unsigned int srcdata = ipc->src; ! 994: int dstreg = (ipc->opcode >> 0) & 7; ! 995: uint16 dstdata = DATAREG(dstreg); ! 996: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 997: ! 998: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata; ! 999: ! 1000: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 1001: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1002: XFLAG = CFLAG = srcdata > dstdata; ! 1003: NFLAG = ((sint16)outdata) < 0; ! 1004: ZFLAG = !outdata; ! 1005: PC+= 2; ! 1006: } ! 1007: ! 1008: void cpu_op_818a(t_ipc *ipc) /* SUB */ { ! 1009: /* mask f1f8, bits 5150, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1010: unsigned int srcdata = ipc->src; ! 1011: int dstreg = (ipc->opcode >> 0) & 7; ! 1012: uint32 dstaddr = ADDRREG(dstreg); ! 1013: uint16 dstdata = fetchword(dstaddr); ! 1014: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1015: ! 1016: storeword(dstaddr, outdata); ! 1017: PC+= 2; ! 1018: } ! 1019: ! 1020: void cpu_op_818b(t_ipc *ipc) /* SUB */ { ! 1021: /* mask f1f8, bits 5150, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1022: unsigned int srcdata = ipc->src; ! 1023: int dstreg = (ipc->opcode >> 0) & 7; ! 1024: uint32 dstaddr = ADDRREG(dstreg); ! 1025: uint16 dstdata = fetchword(dstaddr); ! 1026: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1027: ! 1028: storeword(dstaddr, outdata); ! 1029: ! 1030: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 1031: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1032: XFLAG = CFLAG = srcdata > dstdata; ! 1033: NFLAG = ((sint16)outdata) < 0; ! 1034: ZFLAG = !outdata; ! 1035: PC+= 2; ! 1036: } ! 1037: ! 1038: void cpu_op_819a(t_ipc *ipc) /* SUB */ { ! 1039: /* mask f1f8, bits 5158, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1040: unsigned int srcdata = ipc->src; ! 1041: int dstreg = (ipc->opcode >> 0) & 7; ! 1042: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2); ! 1043: uint16 dstdata = fetchword(dstaddr); ! 1044: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1045: ! 1046: storeword(dstaddr, outdata); ! 1047: PC+= 2; ! 1048: } ! 1049: ! 1050: void cpu_op_819b(t_ipc *ipc) /* SUB */ { ! 1051: /* mask f1f8, bits 5158, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1052: unsigned int srcdata = ipc->src; ! 1053: int dstreg = (ipc->opcode >> 0) & 7; ! 1054: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2); ! 1055: uint16 dstdata = fetchword(dstaddr); ! 1056: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1057: ! 1058: storeword(dstaddr, outdata); ! 1059: ! 1060: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 1061: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1062: XFLAG = CFLAG = srcdata > dstdata; ! 1063: NFLAG = ((sint16)outdata) < 0; ! 1064: ZFLAG = !outdata; ! 1065: PC+= 2; ! 1066: } ! 1067: ! 1068: void cpu_op_820a(t_ipc *ipc) /* SUB */ { ! 1069: /* mask f1f8, bits 5160, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1070: unsigned int srcdata = ipc->src; ! 1071: int dstreg = (ipc->opcode >> 0) & 7; ! 1072: uint32 dstaddr = ADDRREG(dstreg)-=2; ! 1073: uint16 dstdata = fetchword(dstaddr); ! 1074: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1075: ! 1076: storeword(dstaddr, outdata); ! 1077: PC+= 2; ! 1078: } ! 1079: ! 1080: void cpu_op_820b(t_ipc *ipc) /* SUB */ { ! 1081: /* mask f1f8, bits 5160, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1082: unsigned int srcdata = ipc->src; ! 1083: int dstreg = (ipc->opcode >> 0) & 7; ! 1084: uint32 dstaddr = ADDRREG(dstreg)-=2; ! 1085: uint16 dstdata = fetchword(dstaddr); ! 1086: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1087: ! 1088: storeword(dstaddr, outdata); ! 1089: ! 1090: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 1091: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1092: XFLAG = CFLAG = srcdata > dstdata; ! 1093: NFLAG = ((sint16)outdata) < 0; ! 1094: ZFLAG = !outdata; ! 1095: PC+= 2; ! 1096: } ! 1097: ! 1098: void cpu_op_821a(t_ipc *ipc) /* SUB */ { ! 1099: /* mask f1f8, bits 5168, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1100: unsigned int srcdata = ipc->src; ! 1101: int dstreg = (ipc->opcode >> 0) & 7; ! 1102: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1103: uint16 dstdata = fetchword(dstaddr); ! 1104: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1105: ! 1106: storeword(dstaddr, outdata); ! 1107: PC+= 4; ! 1108: } ! 1109: ! 1110: void cpu_op_821b(t_ipc *ipc) /* SUB */ { ! 1111: /* mask f1f8, bits 5168, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1112: unsigned int srcdata = ipc->src; ! 1113: int dstreg = (ipc->opcode >> 0) & 7; ! 1114: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1115: uint16 dstdata = fetchword(dstaddr); ! 1116: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1117: ! 1118: storeword(dstaddr, outdata); ! 1119: ! 1120: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 1121: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1122: XFLAG = CFLAG = srcdata > dstdata; ! 1123: NFLAG = ((sint16)outdata) < 0; ! 1124: ZFLAG = !outdata; ! 1125: PC+= 4; ! 1126: } ! 1127: ! 1128: void cpu_op_822a(t_ipc *ipc) /* SUB */ { ! 1129: /* mask f1f8, bits 5170, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1130: unsigned int srcdata = ipc->src; ! 1131: int dstreg = (ipc->opcode >> 0) & 7; ! 1132: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1133: uint16 dstdata = fetchword(dstaddr); ! 1134: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1135: ! 1136: storeword(dstaddr, outdata); ! 1137: PC+= 4; ! 1138: } ! 1139: ! 1140: void cpu_op_822b(t_ipc *ipc) /* SUB */ { ! 1141: /* mask f1f8, bits 5170, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1142: unsigned int srcdata = ipc->src; ! 1143: int dstreg = (ipc->opcode >> 0) & 7; ! 1144: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1145: uint16 dstdata = fetchword(dstaddr); ! 1146: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1147: ! 1148: storeword(dstaddr, outdata); ! 1149: ! 1150: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 1151: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1152: XFLAG = CFLAG = srcdata > dstdata; ! 1153: NFLAG = ((sint16)outdata) < 0; ! 1154: ZFLAG = !outdata; ! 1155: PC+= 4; ! 1156: } ! 1157: ! 1158: void cpu_op_823a(t_ipc *ipc) /* SUB */ { ! 1159: /* mask f1ff, bits 5178, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1160: unsigned int srcdata = ipc->src; ! 1161: uint32 dstaddr = ipc->dst; ! 1162: uint16 dstdata = fetchword(dstaddr); ! 1163: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1164: ! 1165: storeword(dstaddr, outdata); ! 1166: PC+= 4; ! 1167: } ! 1168: ! 1169: void cpu_op_823b(t_ipc *ipc) /* SUB */ { ! 1170: /* mask f1ff, bits 5178, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1171: unsigned int srcdata = ipc->src; ! 1172: uint32 dstaddr = ipc->dst; ! 1173: uint16 dstdata = fetchword(dstaddr); ! 1174: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1175: ! 1176: storeword(dstaddr, outdata); ! 1177: ! 1178: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 1179: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1180: XFLAG = CFLAG = srcdata > dstdata; ! 1181: NFLAG = ((sint16)outdata) < 0; ! 1182: ZFLAG = !outdata; ! 1183: PC+= 4; ! 1184: } ! 1185: ! 1186: void cpu_op_824a(t_ipc *ipc) /* SUB */ { ! 1187: /* mask f1ff, bits 5179, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1188: unsigned int srcdata = ipc->src; ! 1189: uint32 dstaddr = ipc->dst; ! 1190: uint16 dstdata = fetchword(dstaddr); ! 1191: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1192: ! 1193: storeword(dstaddr, outdata); ! 1194: PC+= 6; ! 1195: } ! 1196: ! 1197: void cpu_op_824b(t_ipc *ipc) /* SUB */ { ! 1198: /* mask f1ff, bits 5179, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 2, stype 15, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1199: unsigned int srcdata = ipc->src; ! 1200: uint32 dstaddr = ipc->dst; ! 1201: uint16 dstdata = fetchword(dstaddr); ! 1202: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 1203: ! 1204: storeword(dstaddr, outdata); ! 1205: ! 1206: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 1207: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1208: XFLAG = CFLAG = srcdata > dstdata; ! 1209: NFLAG = ((sint16)outdata) < 0; ! 1210: ZFLAG = !outdata; ! 1211: PC+= 6; ! 1212: } ! 1213: ! 1214: void cpu_op_825a(t_ipc *ipc) /* SUB */ { ! 1215: /* mask f1f8, bits 5180, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1216: unsigned int srcdata = ipc->src; ! 1217: int dstreg = (ipc->opcode >> 0) & 7; ! 1218: uint32 dstdata = DATAREG(dstreg); ! 1219: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1220: ! 1221: DATAREG(dstreg) = outdata; ! 1222: PC+= 2; ! 1223: } ! 1224: ! 1225: void cpu_op_825b(t_ipc *ipc) /* SUB */ { ! 1226: /* mask f1f8, bits 5180, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1227: unsigned int srcdata = ipc->src; ! 1228: int dstreg = (ipc->opcode >> 0) & 7; ! 1229: uint32 dstdata = DATAREG(dstreg); ! 1230: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1231: ! 1232: DATAREG(dstreg) = outdata; ! 1233: ! 1234: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1235: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1236: XFLAG = CFLAG = srcdata > dstdata; ! 1237: NFLAG = ((sint32)outdata) < 0; ! 1238: ZFLAG = !outdata; ! 1239: PC+= 2; ! 1240: } ! 1241: ! 1242: void cpu_op_826a(t_ipc *ipc) /* SUB */ { ! 1243: /* mask f1f8, bits 5190, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1244: unsigned int srcdata = ipc->src; ! 1245: int dstreg = (ipc->opcode >> 0) & 7; ! 1246: uint32 dstaddr = ADDRREG(dstreg); ! 1247: uint32 dstdata = fetchlong(dstaddr); ! 1248: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1249: ! 1250: storelong(dstaddr, outdata); ! 1251: PC+= 2; ! 1252: } ! 1253: ! 1254: void cpu_op_826b(t_ipc *ipc) /* SUB */ { ! 1255: /* mask f1f8, bits 5190, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1256: unsigned int srcdata = ipc->src; ! 1257: int dstreg = (ipc->opcode >> 0) & 7; ! 1258: uint32 dstaddr = ADDRREG(dstreg); ! 1259: uint32 dstdata = fetchlong(dstaddr); ! 1260: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1261: ! 1262: storelong(dstaddr, outdata); ! 1263: ! 1264: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1265: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1266: XFLAG = CFLAG = srcdata > dstdata; ! 1267: NFLAG = ((sint32)outdata) < 0; ! 1268: ZFLAG = !outdata; ! 1269: PC+= 2; ! 1270: } ! 1271: ! 1272: void cpu_op_827a(t_ipc *ipc) /* SUB */ { ! 1273: /* mask f1f8, bits 5198, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1274: unsigned int srcdata = ipc->src; ! 1275: int dstreg = (ipc->opcode >> 0) & 7; ! 1276: uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4); ! 1277: uint32 dstdata = fetchlong(dstaddr); ! 1278: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1279: ! 1280: storelong(dstaddr, outdata); ! 1281: PC+= 2; ! 1282: } ! 1283: ! 1284: void cpu_op_827b(t_ipc *ipc) /* SUB */ { ! 1285: /* mask f1f8, bits 5198, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1286: unsigned int srcdata = ipc->src; ! 1287: int dstreg = (ipc->opcode >> 0) & 7; ! 1288: uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4); ! 1289: uint32 dstdata = fetchlong(dstaddr); ! 1290: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1291: ! 1292: storelong(dstaddr, outdata); ! 1293: ! 1294: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1295: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1296: XFLAG = CFLAG = srcdata > dstdata; ! 1297: NFLAG = ((sint32)outdata) < 0; ! 1298: ZFLAG = !outdata; ! 1299: PC+= 2; ! 1300: } ! 1301: ! 1302: void cpu_op_828a(t_ipc *ipc) /* SUB */ { ! 1303: /* mask f1f8, bits 51a0, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1304: unsigned int srcdata = ipc->src; ! 1305: int dstreg = (ipc->opcode >> 0) & 7; ! 1306: uint32 dstaddr = ADDRREG(dstreg)-=4; ! 1307: uint32 dstdata = fetchlong(dstaddr); ! 1308: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1309: ! 1310: storelong(dstaddr, outdata); ! 1311: PC+= 2; ! 1312: } ! 1313: ! 1314: void cpu_op_828b(t_ipc *ipc) /* SUB */ { ! 1315: /* mask f1f8, bits 51a0, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1316: unsigned int srcdata = ipc->src; ! 1317: int dstreg = (ipc->opcode >> 0) & 7; ! 1318: uint32 dstaddr = ADDRREG(dstreg)-=4; ! 1319: uint32 dstdata = fetchlong(dstaddr); ! 1320: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1321: ! 1322: storelong(dstaddr, outdata); ! 1323: ! 1324: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1325: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1326: XFLAG = CFLAG = srcdata > dstdata; ! 1327: NFLAG = ((sint32)outdata) < 0; ! 1328: ZFLAG = !outdata; ! 1329: PC+= 2; ! 1330: } ! 1331: ! 1332: void cpu_op_829a(t_ipc *ipc) /* SUB */ { ! 1333: /* mask f1f8, bits 51a8, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1334: unsigned int srcdata = ipc->src; ! 1335: int dstreg = (ipc->opcode >> 0) & 7; ! 1336: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1337: uint32 dstdata = fetchlong(dstaddr); ! 1338: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1339: ! 1340: storelong(dstaddr, outdata); ! 1341: PC+= 4; ! 1342: } ! 1343: ! 1344: void cpu_op_829b(t_ipc *ipc) /* SUB */ { ! 1345: /* mask f1f8, bits 51a8, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1346: unsigned int srcdata = ipc->src; ! 1347: int dstreg = (ipc->opcode >> 0) & 7; ! 1348: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1349: uint32 dstdata = fetchlong(dstaddr); ! 1350: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1351: ! 1352: storelong(dstaddr, outdata); ! 1353: ! 1354: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1355: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1356: XFLAG = CFLAG = srcdata > dstdata; ! 1357: NFLAG = ((sint32)outdata) < 0; ! 1358: ZFLAG = !outdata; ! 1359: PC+= 4; ! 1360: } ! 1361: ! 1362: void cpu_op_830a(t_ipc *ipc) /* SUB */ { ! 1363: /* mask f1f8, bits 51b0, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1364: unsigned int srcdata = ipc->src; ! 1365: int dstreg = (ipc->opcode >> 0) & 7; ! 1366: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1367: uint32 dstdata = fetchlong(dstaddr); ! 1368: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1369: ! 1370: storelong(dstaddr, outdata); ! 1371: PC+= 4; ! 1372: } ! 1373: ! 1374: void cpu_op_830b(t_ipc *ipc) /* SUB */ { ! 1375: /* mask f1f8, bits 51b0, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1376: unsigned int srcdata = ipc->src; ! 1377: int dstreg = (ipc->opcode >> 0) & 7; ! 1378: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1379: uint32 dstdata = fetchlong(dstaddr); ! 1380: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1381: ! 1382: storelong(dstaddr, outdata); ! 1383: ! 1384: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1385: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1386: XFLAG = CFLAG = srcdata > dstdata; ! 1387: NFLAG = ((sint32)outdata) < 0; ! 1388: ZFLAG = !outdata; ! 1389: PC+= 4; ! 1390: } ! 1391: ! 1392: void cpu_op_831a(t_ipc *ipc) /* SUB */ { ! 1393: /* mask f1ff, bits 51b8, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1394: unsigned int srcdata = ipc->src; ! 1395: uint32 dstaddr = ipc->dst; ! 1396: uint32 dstdata = fetchlong(dstaddr); ! 1397: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1398: ! 1399: storelong(dstaddr, outdata); ! 1400: PC+= 4; ! 1401: } ! 1402: ! 1403: void cpu_op_831b(t_ipc *ipc) /* SUB */ { ! 1404: /* mask f1ff, bits 51b8, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1405: unsigned int srcdata = ipc->src; ! 1406: uint32 dstaddr = ipc->dst; ! 1407: uint32 dstdata = fetchlong(dstaddr); ! 1408: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1409: ! 1410: storelong(dstaddr, outdata); ! 1411: ! 1412: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1413: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1414: XFLAG = CFLAG = srcdata > dstdata; ! 1415: NFLAG = ((sint32)outdata) < 0; ! 1416: ZFLAG = !outdata; ! 1417: PC+= 4; ! 1418: } ! 1419: ! 1420: void cpu_op_832a(t_ipc *ipc) /* SUB */ { ! 1421: /* mask f1ff, bits 51b9, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1422: unsigned int srcdata = ipc->src; ! 1423: uint32 dstaddr = ipc->dst; ! 1424: uint32 dstdata = fetchlong(dstaddr); ! 1425: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1426: ! 1427: storelong(dstaddr, outdata); ! 1428: PC+= 6; ! 1429: } ! 1430: ! 1431: void cpu_op_832b(t_ipc *ipc) /* SUB */ { ! 1432: /* mask f1ff, bits 51b9, mnemonic 7, priv 0, endblk 0, imm_notzero -1, used 0 set -1, size 3, stype 15, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1433: unsigned int srcdata = ipc->src; ! 1434: uint32 dstaddr = ipc->dst; ! 1435: uint32 dstdata = fetchlong(dstaddr); ! 1436: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1437: ! 1438: storelong(dstaddr, outdata); ! 1439: ! 1440: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 1441: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1442: XFLAG = CFLAG = srcdata > dstdata; ! 1443: NFLAG = ((sint32)outdata) < 0; ! 1444: ZFLAG = !outdata; ! 1445: PC+= 6; ! 1446: } ! 1447: ! 1448: void cpu_op_833a(t_ipc *ipc) /* SUBA */ { ! 1449: /* mask f1f8, bits 5148, mnemonic 8, priv 0, endblk 0, imm_notzero -1, used 0 set 0, size 3, stype 15, dtype 1, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1450: unsigned int srcdata = ipc->src; ! 1451: int dstreg = (ipc->opcode >> 0) & 7; ! 1452: uint32 dstdata = ADDRREG(dstreg); ! 1453: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1454: ! 1455: ADDRREG(dstreg) = outdata; ! 1456: PC+= 2; ! 1457: } ! 1458: ! 1459: void cpu_op_834a(t_ipc *ipc) /* SUBA */ { ! 1460: /* mask f1f8, bits 5188, mnemonic 8, priv 0, endblk 0, imm_notzero -1, used 0 set 0, size 3, stype 15, dtype 1, sbitpos 9, dbitpos 0, immvalue 0 */ ! 1461: unsigned int srcdata = ipc->src; ! 1462: int dstreg = (ipc->opcode >> 0) & 7; ! 1463: uint32 dstdata = ADDRREG(dstreg); ! 1464: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 1465: ! 1466: ADDRREG(dstreg) = outdata; ! 1467: PC+= 2; ! 1468: } ! 1469: ! 1470: void cpu_op_835a(t_ipc *ipc) /* ADD */ { ! 1471: /* mask fff8, bits 5000, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1472: unsigned int srcdata = 8; ! 1473: int dstreg = (ipc->opcode >> 0) & 7; ! 1474: uint8 dstdata = DATAREG(dstreg); ! 1475: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1476: ! 1477: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata; ! 1478: PC+= 2; ! 1479: } ! 1480: ! 1481: void cpu_op_835b(t_ipc *ipc) /* ADD */ { ! 1482: /* mask fff8, bits 5000, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1483: unsigned int srcdata = 8; ! 1484: int dstreg = (ipc->opcode >> 0) & 7; ! 1485: uint8 dstdata = DATAREG(dstreg); ! 1486: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1487: ! 1488: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata; ! 1489: ! 1490: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 1491: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 1492: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 1493: NFLAG = ((sint8)outdata) < 0; ! 1494: ZFLAG = !outdata; ! 1495: PC+= 2; ! 1496: } ! 1497: ! 1498: void cpu_op_836a(t_ipc *ipc) /* ADD */ { ! 1499: /* mask fff8, bits 5010, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1500: unsigned int srcdata = 8; ! 1501: int dstreg = (ipc->opcode >> 0) & 7; ! 1502: uint32 dstaddr = ADDRREG(dstreg); ! 1503: uint8 dstdata = fetchbyte(dstaddr); ! 1504: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1505: ! 1506: storebyte(dstaddr, outdata); ! 1507: PC+= 2; ! 1508: } ! 1509: ! 1510: void cpu_op_836b(t_ipc *ipc) /* ADD */ { ! 1511: /* mask fff8, bits 5010, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1512: unsigned int srcdata = 8; ! 1513: int dstreg = (ipc->opcode >> 0) & 7; ! 1514: uint32 dstaddr = ADDRREG(dstreg); ! 1515: uint8 dstdata = fetchbyte(dstaddr); ! 1516: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1517: ! 1518: storebyte(dstaddr, outdata); ! 1519: ! 1520: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 1521: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 1522: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 1523: NFLAG = ((sint8)outdata) < 0; ! 1524: ZFLAG = !outdata; ! 1525: PC+= 2; ! 1526: } ! 1527: ! 1528: void cpu_op_837a(t_ipc *ipc) /* ADD */ { ! 1529: /* mask fff8, bits 5018, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1530: unsigned int srcdata = 8; ! 1531: int dstreg = (ipc->opcode >> 0) & 7; ! 1532: uint32 dstaddr = ADDRREG(dstreg); ! 1533: uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0); ! 1534: uint8 dstdata = fetchbyte(dstaddr); ! 1535: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1536: ! 1537: storebyte(dstaddr, outdata); ! 1538: PC+= 2; ! 1539: } ! 1540: ! 1541: void cpu_op_837b(t_ipc *ipc) /* ADD */ { ! 1542: /* mask fff8, bits 5018, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1543: unsigned int srcdata = 8; ! 1544: int dstreg = (ipc->opcode >> 0) & 7; ! 1545: uint32 dstaddr = ADDRREG(dstreg); ! 1546: uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0); ! 1547: uint8 dstdata = fetchbyte(dstaddr); ! 1548: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1549: ! 1550: storebyte(dstaddr, outdata); ! 1551: ! 1552: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 1553: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 1554: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 1555: NFLAG = ((sint8)outdata) < 0; ! 1556: ZFLAG = !outdata; ! 1557: PC+= 2; ! 1558: } ! 1559: ! 1560: void cpu_op_838a(t_ipc *ipc) /* ADD */ { ! 1561: /* mask fff8, bits 5020, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1562: unsigned int srcdata = 8; ! 1563: int dstreg = (ipc->opcode >> 0) & 7; ! 1564: uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1)); ! 1565: uint8 dstdata = fetchbyte(dstaddr); ! 1566: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1567: ! 1568: storebyte(dstaddr, outdata); ! 1569: PC+= 2; ! 1570: } ! 1571: ! 1572: void cpu_op_838b(t_ipc *ipc) /* ADD */ { ! 1573: /* mask fff8, bits 5020, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1574: unsigned int srcdata = 8; ! 1575: int dstreg = (ipc->opcode >> 0) & 7; ! 1576: uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1)); ! 1577: uint8 dstdata = fetchbyte(dstaddr); ! 1578: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1579: ! 1580: storebyte(dstaddr, outdata); ! 1581: ! 1582: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 1583: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 1584: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 1585: NFLAG = ((sint8)outdata) < 0; ! 1586: ZFLAG = !outdata; ! 1587: PC+= 2; ! 1588: } ! 1589: ! 1590: void cpu_op_839a(t_ipc *ipc) /* ADD */ { ! 1591: /* mask fff8, bits 5028, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1592: unsigned int srcdata = 8; ! 1593: int dstreg = (ipc->opcode >> 0) & 7; ! 1594: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1595: uint8 dstdata = fetchbyte(dstaddr); ! 1596: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1597: ! 1598: storebyte(dstaddr, outdata); ! 1599: PC+= 4; ! 1600: } ! 1601: ! 1602: void cpu_op_839b(t_ipc *ipc) /* ADD */ { ! 1603: /* mask fff8, bits 5028, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1604: unsigned int srcdata = 8; ! 1605: int dstreg = (ipc->opcode >> 0) & 7; ! 1606: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1607: uint8 dstdata = fetchbyte(dstaddr); ! 1608: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1609: ! 1610: storebyte(dstaddr, outdata); ! 1611: ! 1612: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 1613: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 1614: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 1615: NFLAG = ((sint8)outdata) < 0; ! 1616: ZFLAG = !outdata; ! 1617: PC+= 4; ! 1618: } ! 1619: ! 1620: void cpu_op_840a(t_ipc *ipc) /* ADD */ { ! 1621: /* mask fff8, bits 5030, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1622: unsigned int srcdata = 8; ! 1623: int dstreg = (ipc->opcode >> 0) & 7; ! 1624: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1625: uint8 dstdata = fetchbyte(dstaddr); ! 1626: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1627: ! 1628: storebyte(dstaddr, outdata); ! 1629: PC+= 4; ! 1630: } ! 1631: ! 1632: void cpu_op_840b(t_ipc *ipc) /* ADD */ { ! 1633: /* mask fff8, bits 5030, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1634: unsigned int srcdata = 8; ! 1635: int dstreg = (ipc->opcode >> 0) & 7; ! 1636: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1637: uint8 dstdata = fetchbyte(dstaddr); ! 1638: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1639: ! 1640: storebyte(dstaddr, outdata); ! 1641: ! 1642: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 1643: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 1644: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 1645: NFLAG = ((sint8)outdata) < 0; ! 1646: ZFLAG = !outdata; ! 1647: PC+= 4; ! 1648: } ! 1649: ! 1650: void cpu_op_841a(t_ipc *ipc) /* ADD */ { ! 1651: /* mask ffff, bits 5038, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1652: unsigned int srcdata = 8; ! 1653: uint32 dstaddr = ipc->dst; ! 1654: uint8 dstdata = fetchbyte(dstaddr); ! 1655: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1656: ! 1657: storebyte(dstaddr, outdata); ! 1658: PC+= 4; ! 1659: } ! 1660: ! 1661: void cpu_op_841b(t_ipc *ipc) /* ADD */ { ! 1662: /* mask ffff, bits 5038, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1663: unsigned int srcdata = 8; ! 1664: uint32 dstaddr = ipc->dst; ! 1665: uint8 dstdata = fetchbyte(dstaddr); ! 1666: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1667: ! 1668: storebyte(dstaddr, outdata); ! 1669: ! 1670: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 1671: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 1672: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 1673: NFLAG = ((sint8)outdata) < 0; ! 1674: ZFLAG = !outdata; ! 1675: PC+= 4; ! 1676: } ! 1677: ! 1678: void cpu_op_842a(t_ipc *ipc) /* ADD */ { ! 1679: /* mask ffff, bits 5039, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1680: unsigned int srcdata = 8; ! 1681: uint32 dstaddr = ipc->dst; ! 1682: uint8 dstdata = fetchbyte(dstaddr); ! 1683: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1684: ! 1685: storebyte(dstaddr, outdata); ! 1686: PC+= 6; ! 1687: } ! 1688: ! 1689: void cpu_op_842b(t_ipc *ipc) /* ADD */ { ! 1690: /* mask ffff, bits 5039, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1691: unsigned int srcdata = 8; ! 1692: uint32 dstaddr = ipc->dst; ! 1693: uint8 dstdata = fetchbyte(dstaddr); ! 1694: uint8 outdata = (sint8)dstdata + (sint8)srcdata; ! 1695: ! 1696: storebyte(dstaddr, outdata); ! 1697: ! 1698: VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) && ! 1699: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 1700: XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata); ! 1701: NFLAG = ((sint8)outdata) < 0; ! 1702: ZFLAG = !outdata; ! 1703: PC+= 6; ! 1704: } ! 1705: ! 1706: void cpu_op_843a(t_ipc *ipc) /* ADD */ { ! 1707: /* mask fff8, bits 5040, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1708: unsigned int srcdata = 8; ! 1709: int dstreg = (ipc->opcode >> 0) & 7; ! 1710: uint16 dstdata = DATAREG(dstreg); ! 1711: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1712: ! 1713: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata; ! 1714: PC+= 2; ! 1715: } ! 1716: ! 1717: void cpu_op_843b(t_ipc *ipc) /* ADD */ { ! 1718: /* mask fff8, bits 5040, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1719: unsigned int srcdata = 8; ! 1720: int dstreg = (ipc->opcode >> 0) & 7; ! 1721: uint16 dstdata = DATAREG(dstreg); ! 1722: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1723: ! 1724: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata; ! 1725: ! 1726: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 1727: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1728: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 1729: NFLAG = ((sint16)outdata) < 0; ! 1730: ZFLAG = !outdata; ! 1731: PC+= 2; ! 1732: } ! 1733: ! 1734: void cpu_op_844a(t_ipc *ipc) /* ADD */ { ! 1735: /* mask fff8, bits 5050, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1736: unsigned int srcdata = 8; ! 1737: int dstreg = (ipc->opcode >> 0) & 7; ! 1738: uint32 dstaddr = ADDRREG(dstreg); ! 1739: uint16 dstdata = fetchword(dstaddr); ! 1740: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1741: ! 1742: storeword(dstaddr, outdata); ! 1743: PC+= 2; ! 1744: } ! 1745: ! 1746: void cpu_op_844b(t_ipc *ipc) /* ADD */ { ! 1747: /* mask fff8, bits 5050, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1748: unsigned int srcdata = 8; ! 1749: int dstreg = (ipc->opcode >> 0) & 7; ! 1750: uint32 dstaddr = ADDRREG(dstreg); ! 1751: uint16 dstdata = fetchword(dstaddr); ! 1752: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1753: ! 1754: storeword(dstaddr, outdata); ! 1755: ! 1756: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 1757: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1758: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 1759: NFLAG = ((sint16)outdata) < 0; ! 1760: ZFLAG = !outdata; ! 1761: PC+= 2; ! 1762: } ! 1763: ! 1764: void cpu_op_845a(t_ipc *ipc) /* ADD */ { ! 1765: /* mask fff8, bits 5058, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1766: unsigned int srcdata = 8; ! 1767: int dstreg = (ipc->opcode >> 0) & 7; ! 1768: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2); ! 1769: uint16 dstdata = fetchword(dstaddr); ! 1770: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1771: ! 1772: storeword(dstaddr, outdata); ! 1773: PC+= 2; ! 1774: } ! 1775: ! 1776: void cpu_op_845b(t_ipc *ipc) /* ADD */ { ! 1777: /* mask fff8, bits 5058, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1778: unsigned int srcdata = 8; ! 1779: int dstreg = (ipc->opcode >> 0) & 7; ! 1780: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2); ! 1781: uint16 dstdata = fetchword(dstaddr); ! 1782: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1783: ! 1784: storeword(dstaddr, outdata); ! 1785: ! 1786: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 1787: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1788: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 1789: NFLAG = ((sint16)outdata) < 0; ! 1790: ZFLAG = !outdata; ! 1791: PC+= 2; ! 1792: } ! 1793: ! 1794: void cpu_op_846a(t_ipc *ipc) /* ADD */ { ! 1795: /* mask fff8, bits 5060, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1796: unsigned int srcdata = 8; ! 1797: int dstreg = (ipc->opcode >> 0) & 7; ! 1798: uint32 dstaddr = ADDRREG(dstreg)-=2; ! 1799: uint16 dstdata = fetchword(dstaddr); ! 1800: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1801: ! 1802: storeword(dstaddr, outdata); ! 1803: PC+= 2; ! 1804: } ! 1805: ! 1806: void cpu_op_846b(t_ipc *ipc) /* ADD */ { ! 1807: /* mask fff8, bits 5060, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1808: unsigned int srcdata = 8; ! 1809: int dstreg = (ipc->opcode >> 0) & 7; ! 1810: uint32 dstaddr = ADDRREG(dstreg)-=2; ! 1811: uint16 dstdata = fetchword(dstaddr); ! 1812: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1813: ! 1814: storeword(dstaddr, outdata); ! 1815: ! 1816: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 1817: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1818: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 1819: NFLAG = ((sint16)outdata) < 0; ! 1820: ZFLAG = !outdata; ! 1821: PC+= 2; ! 1822: } ! 1823: ! 1824: void cpu_op_847a(t_ipc *ipc) /* ADD */ { ! 1825: /* mask fff8, bits 5068, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1826: unsigned int srcdata = 8; ! 1827: int dstreg = (ipc->opcode >> 0) & 7; ! 1828: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1829: uint16 dstdata = fetchword(dstaddr); ! 1830: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1831: ! 1832: storeword(dstaddr, outdata); ! 1833: PC+= 4; ! 1834: } ! 1835: ! 1836: void cpu_op_847b(t_ipc *ipc) /* ADD */ { ! 1837: /* mask fff8, bits 5068, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1838: unsigned int srcdata = 8; ! 1839: int dstreg = (ipc->opcode >> 0) & 7; ! 1840: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 1841: uint16 dstdata = fetchword(dstaddr); ! 1842: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1843: ! 1844: storeword(dstaddr, outdata); ! 1845: ! 1846: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 1847: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1848: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 1849: NFLAG = ((sint16)outdata) < 0; ! 1850: ZFLAG = !outdata; ! 1851: PC+= 4; ! 1852: } ! 1853: ! 1854: void cpu_op_848a(t_ipc *ipc) /* ADD */ { ! 1855: /* mask fff8, bits 5070, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1856: unsigned int srcdata = 8; ! 1857: int dstreg = (ipc->opcode >> 0) & 7; ! 1858: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1859: uint16 dstdata = fetchword(dstaddr); ! 1860: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1861: ! 1862: storeword(dstaddr, outdata); ! 1863: PC+= 4; ! 1864: } ! 1865: ! 1866: void cpu_op_848b(t_ipc *ipc) /* ADD */ { ! 1867: /* mask fff8, bits 5070, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1868: unsigned int srcdata = 8; ! 1869: int dstreg = (ipc->opcode >> 0) & 7; ! 1870: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 1871: uint16 dstdata = fetchword(dstaddr); ! 1872: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1873: ! 1874: storeword(dstaddr, outdata); ! 1875: ! 1876: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 1877: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1878: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 1879: NFLAG = ((sint16)outdata) < 0; ! 1880: ZFLAG = !outdata; ! 1881: PC+= 4; ! 1882: } ! 1883: ! 1884: void cpu_op_849a(t_ipc *ipc) /* ADD */ { ! 1885: /* mask ffff, bits 5078, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1886: unsigned int srcdata = 8; ! 1887: uint32 dstaddr = ipc->dst; ! 1888: uint16 dstdata = fetchword(dstaddr); ! 1889: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1890: ! 1891: storeword(dstaddr, outdata); ! 1892: PC+= 4; ! 1893: } ! 1894: ! 1895: void cpu_op_849b(t_ipc *ipc) /* ADD */ { ! 1896: /* mask ffff, bits 5078, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1897: unsigned int srcdata = 8; ! 1898: uint32 dstaddr = ipc->dst; ! 1899: uint16 dstdata = fetchword(dstaddr); ! 1900: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1901: ! 1902: storeword(dstaddr, outdata); ! 1903: ! 1904: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 1905: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1906: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 1907: NFLAG = ((sint16)outdata) < 0; ! 1908: ZFLAG = !outdata; ! 1909: PC+= 4; ! 1910: } ! 1911: ! 1912: void cpu_op_850a(t_ipc *ipc) /* ADD */ { ! 1913: /* mask ffff, bits 5079, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1914: unsigned int srcdata = 8; ! 1915: uint32 dstaddr = ipc->dst; ! 1916: uint16 dstdata = fetchword(dstaddr); ! 1917: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1918: ! 1919: storeword(dstaddr, outdata); ! 1920: PC+= 6; ! 1921: } ! 1922: ! 1923: void cpu_op_850b(t_ipc *ipc) /* ADD */ { ! 1924: /* mask ffff, bits 5079, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1925: unsigned int srcdata = 8; ! 1926: uint32 dstaddr = ipc->dst; ! 1927: uint16 dstdata = fetchword(dstaddr); ! 1928: uint16 outdata = (sint16)dstdata + (sint16)srcdata; ! 1929: ! 1930: storeword(dstaddr, outdata); ! 1931: ! 1932: VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) && ! 1933: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 1934: XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata); ! 1935: NFLAG = ((sint16)outdata) < 0; ! 1936: ZFLAG = !outdata; ! 1937: PC+= 6; ! 1938: } ! 1939: ! 1940: void cpu_op_851a(t_ipc *ipc) /* ADD */ { ! 1941: /* mask fff8, bits 5080, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1942: unsigned int srcdata = 8; ! 1943: int dstreg = (ipc->opcode >> 0) & 7; ! 1944: uint32 dstdata = DATAREG(dstreg); ! 1945: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 1946: ! 1947: DATAREG(dstreg) = outdata; ! 1948: PC+= 2; ! 1949: } ! 1950: ! 1951: void cpu_op_851b(t_ipc *ipc) /* ADD */ { ! 1952: /* mask fff8, bits 5080, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1953: unsigned int srcdata = 8; ! 1954: int dstreg = (ipc->opcode >> 0) & 7; ! 1955: uint32 dstdata = DATAREG(dstreg); ! 1956: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 1957: ! 1958: DATAREG(dstreg) = outdata; ! 1959: ! 1960: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 1961: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1962: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 1963: NFLAG = ((sint32)outdata) < 0; ! 1964: ZFLAG = !outdata; ! 1965: PC+= 2; ! 1966: } ! 1967: ! 1968: void cpu_op_852a(t_ipc *ipc) /* ADD */ { ! 1969: /* mask fff8, bits 5090, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1970: unsigned int srcdata = 8; ! 1971: int dstreg = (ipc->opcode >> 0) & 7; ! 1972: uint32 dstaddr = ADDRREG(dstreg); ! 1973: uint32 dstdata = fetchlong(dstaddr); ! 1974: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 1975: ! 1976: storelong(dstaddr, outdata); ! 1977: PC+= 2; ! 1978: } ! 1979: ! 1980: void cpu_op_852b(t_ipc *ipc) /* ADD */ { ! 1981: /* mask fff8, bits 5090, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 8 */ ! 1982: unsigned int srcdata = 8; ! 1983: int dstreg = (ipc->opcode >> 0) & 7; ! 1984: uint32 dstaddr = ADDRREG(dstreg); ! 1985: uint32 dstdata = fetchlong(dstaddr); ! 1986: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 1987: ! 1988: storelong(dstaddr, outdata); ! 1989: ! 1990: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 1991: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 1992: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 1993: NFLAG = ((sint32)outdata) < 0; ! 1994: ZFLAG = !outdata; ! 1995: PC+= 2; ! 1996: } ! 1997: ! 1998: void cpu_op_853a(t_ipc *ipc) /* ADD */ { ! 1999: /* mask fff8, bits 5098, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2000: unsigned int srcdata = 8; ! 2001: int dstreg = (ipc->opcode >> 0) & 7; ! 2002: uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4); ! 2003: uint32 dstdata = fetchlong(dstaddr); ! 2004: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2005: ! 2006: storelong(dstaddr, outdata); ! 2007: PC+= 2; ! 2008: } ! 2009: ! 2010: void cpu_op_853b(t_ipc *ipc) /* ADD */ { ! 2011: /* mask fff8, bits 5098, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2012: unsigned int srcdata = 8; ! 2013: int dstreg = (ipc->opcode >> 0) & 7; ! 2014: uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4); ! 2015: uint32 dstdata = fetchlong(dstaddr); ! 2016: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2017: ! 2018: storelong(dstaddr, outdata); ! 2019: ! 2020: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 2021: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2022: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 2023: NFLAG = ((sint32)outdata) < 0; ! 2024: ZFLAG = !outdata; ! 2025: PC+= 2; ! 2026: } ! 2027: ! 2028: void cpu_op_854a(t_ipc *ipc) /* ADD */ { ! 2029: /* mask fff8, bits 50a0, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2030: unsigned int srcdata = 8; ! 2031: int dstreg = (ipc->opcode >> 0) & 7; ! 2032: uint32 dstaddr = ADDRREG(dstreg)-=4; ! 2033: uint32 dstdata = fetchlong(dstaddr); ! 2034: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2035: ! 2036: storelong(dstaddr, outdata); ! 2037: PC+= 2; ! 2038: } ! 2039: ! 2040: void cpu_op_854b(t_ipc *ipc) /* ADD */ { ! 2041: /* mask fff8, bits 50a0, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2042: unsigned int srcdata = 8; ! 2043: int dstreg = (ipc->opcode >> 0) & 7; ! 2044: uint32 dstaddr = ADDRREG(dstreg)-=4; ! 2045: uint32 dstdata = fetchlong(dstaddr); ! 2046: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2047: ! 2048: storelong(dstaddr, outdata); ! 2049: ! 2050: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 2051: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2052: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 2053: NFLAG = ((sint32)outdata) < 0; ! 2054: ZFLAG = !outdata; ! 2055: PC+= 2; ! 2056: } ! 2057: ! 2058: void cpu_op_855a(t_ipc *ipc) /* ADD */ { ! 2059: /* mask fff8, bits 50a8, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2060: unsigned int srcdata = 8; ! 2061: int dstreg = (ipc->opcode >> 0) & 7; ! 2062: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 2063: uint32 dstdata = fetchlong(dstaddr); ! 2064: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2065: ! 2066: storelong(dstaddr, outdata); ! 2067: PC+= 4; ! 2068: } ! 2069: ! 2070: void cpu_op_855b(t_ipc *ipc) /* ADD */ { ! 2071: /* mask fff8, bits 50a8, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2072: unsigned int srcdata = 8; ! 2073: int dstreg = (ipc->opcode >> 0) & 7; ! 2074: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 2075: uint32 dstdata = fetchlong(dstaddr); ! 2076: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2077: ! 2078: storelong(dstaddr, outdata); ! 2079: ! 2080: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 2081: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2082: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 2083: NFLAG = ((sint32)outdata) < 0; ! 2084: ZFLAG = !outdata; ! 2085: PC+= 4; ! 2086: } ! 2087: ! 2088: void cpu_op_856a(t_ipc *ipc) /* ADD */ { ! 2089: /* mask fff8, bits 50b0, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2090: unsigned int srcdata = 8; ! 2091: int dstreg = (ipc->opcode >> 0) & 7; ! 2092: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 2093: uint32 dstdata = fetchlong(dstaddr); ! 2094: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2095: ! 2096: storelong(dstaddr, outdata); ! 2097: PC+= 4; ! 2098: } ! 2099: ! 2100: void cpu_op_856b(t_ipc *ipc) /* ADD */ { ! 2101: /* mask fff8, bits 50b0, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2102: unsigned int srcdata = 8; ! 2103: int dstreg = (ipc->opcode >> 0) & 7; ! 2104: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 2105: uint32 dstdata = fetchlong(dstaddr); ! 2106: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2107: ! 2108: storelong(dstaddr, outdata); ! 2109: ! 2110: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 2111: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2112: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 2113: NFLAG = ((sint32)outdata) < 0; ! 2114: ZFLAG = !outdata; ! 2115: PC+= 4; ! 2116: } ! 2117: ! 2118: void cpu_op_857a(t_ipc *ipc) /* ADD */ { ! 2119: /* mask ffff, bits 50b8, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2120: unsigned int srcdata = 8; ! 2121: uint32 dstaddr = ipc->dst; ! 2122: uint32 dstdata = fetchlong(dstaddr); ! 2123: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2124: ! 2125: storelong(dstaddr, outdata); ! 2126: PC+= 4; ! 2127: } ! 2128: ! 2129: void cpu_op_857b(t_ipc *ipc) /* ADD */ { ! 2130: /* mask ffff, bits 50b8, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2131: unsigned int srcdata = 8; ! 2132: uint32 dstaddr = ipc->dst; ! 2133: uint32 dstdata = fetchlong(dstaddr); ! 2134: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2135: ! 2136: storelong(dstaddr, outdata); ! 2137: ! 2138: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 2139: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2140: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 2141: NFLAG = ((sint32)outdata) < 0; ! 2142: ZFLAG = !outdata; ! 2143: PC+= 4; ! 2144: } ! 2145: ! 2146: void cpu_op_858a(t_ipc *ipc) /* ADD */ { ! 2147: /* mask ffff, bits 50b9, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2148: unsigned int srcdata = 8; ! 2149: uint32 dstaddr = ipc->dst; ! 2150: uint32 dstdata = fetchlong(dstaddr); ! 2151: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2152: ! 2153: storelong(dstaddr, outdata); ! 2154: PC+= 6; ! 2155: } ! 2156: ! 2157: void cpu_op_858b(t_ipc *ipc) /* ADD */ { ! 2158: /* mask ffff, bits 50b9, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2159: unsigned int srcdata = 8; ! 2160: uint32 dstaddr = ipc->dst; ! 2161: uint32 dstdata = fetchlong(dstaddr); ! 2162: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2163: ! 2164: storelong(dstaddr, outdata); ! 2165: ! 2166: VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) && ! 2167: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2168: XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata; ! 2169: NFLAG = ((sint32)outdata) < 0; ! 2170: ZFLAG = !outdata; ! 2171: PC+= 6; ! 2172: } ! 2173: ! 2174: void cpu_op_859a(t_ipc *ipc) /* ADDA */ { ! 2175: /* mask fff8, bits 5048, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 14, dtype 1, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2176: unsigned int srcdata = 8; ! 2177: int dstreg = (ipc->opcode >> 0) & 7; ! 2178: uint32 dstdata = ADDRREG(dstreg); ! 2179: uint32 outdata = (sint32)dstdata + (sint16)srcdata; ! 2180: ! 2181: ADDRREG(dstreg) = outdata; ! 2182: PC+= 2; ! 2183: } ! 2184: ! 2185: void cpu_op_860a(t_ipc *ipc) /* ADDA */ { ! 2186: /* mask fff8, bits 5088, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 14, dtype 1, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2187: unsigned int srcdata = 8; ! 2188: int dstreg = (ipc->opcode >> 0) & 7; ! 2189: uint32 dstdata = ADDRREG(dstreg); ! 2190: uint32 outdata = (sint32)dstdata + (sint32)srcdata; ! 2191: ! 2192: ADDRREG(dstreg) = outdata; ! 2193: PC+= 2; ! 2194: } ! 2195: ! 2196: void cpu_op_861a(t_ipc *ipc) /* SUB */ { ! 2197: /* mask fff8, bits 5100, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2198: unsigned int srcdata = 8; ! 2199: int dstreg = (ipc->opcode >> 0) & 7; ! 2200: uint8 dstdata = DATAREG(dstreg); ! 2201: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2202: ! 2203: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata; ! 2204: PC+= 2; ! 2205: } ! 2206: ! 2207: void cpu_op_861b(t_ipc *ipc) /* SUB */ { ! 2208: /* mask fff8, bits 5100, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2209: unsigned int srcdata = 8; ! 2210: int dstreg = (ipc->opcode >> 0) & 7; ! 2211: uint8 dstdata = DATAREG(dstreg); ! 2212: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2213: ! 2214: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata; ! 2215: ! 2216: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 2217: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 2218: XFLAG = CFLAG = srcdata > dstdata; ! 2219: NFLAG = ((sint8)outdata) < 0; ! 2220: ZFLAG = !outdata; ! 2221: PC+= 2; ! 2222: } ! 2223: ! 2224: void cpu_op_862a(t_ipc *ipc) /* SUB */ { ! 2225: /* mask fff8, bits 5110, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2226: unsigned int srcdata = 8; ! 2227: int dstreg = (ipc->opcode >> 0) & 7; ! 2228: uint32 dstaddr = ADDRREG(dstreg); ! 2229: uint8 dstdata = fetchbyte(dstaddr); ! 2230: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2231: ! 2232: storebyte(dstaddr, outdata); ! 2233: PC+= 2; ! 2234: } ! 2235: ! 2236: void cpu_op_862b(t_ipc *ipc) /* SUB */ { ! 2237: /* mask fff8, bits 5110, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2238: unsigned int srcdata = 8; ! 2239: int dstreg = (ipc->opcode >> 0) & 7; ! 2240: uint32 dstaddr = ADDRREG(dstreg); ! 2241: uint8 dstdata = fetchbyte(dstaddr); ! 2242: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2243: ! 2244: storebyte(dstaddr, outdata); ! 2245: ! 2246: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 2247: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 2248: XFLAG = CFLAG = srcdata > dstdata; ! 2249: NFLAG = ((sint8)outdata) < 0; ! 2250: ZFLAG = !outdata; ! 2251: PC+= 2; ! 2252: } ! 2253: ! 2254: void cpu_op_863a(t_ipc *ipc) /* SUB */ { ! 2255: /* mask fff8, bits 5118, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2256: unsigned int srcdata = 8; ! 2257: int dstreg = (ipc->opcode >> 0) & 7; ! 2258: uint32 dstaddr = ADDRREG(dstreg); ! 2259: uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0); ! 2260: uint8 dstdata = fetchbyte(dstaddr); ! 2261: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2262: ! 2263: storebyte(dstaddr, outdata); ! 2264: PC+= 2; ! 2265: } ! 2266: ! 2267: void cpu_op_863b(t_ipc *ipc) /* SUB */ { ! 2268: /* mask fff8, bits 5118, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2269: unsigned int srcdata = 8; ! 2270: int dstreg = (ipc->opcode >> 0) & 7; ! 2271: uint32 dstaddr = ADDRREG(dstreg); ! 2272: uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0); ! 2273: uint8 dstdata = fetchbyte(dstaddr); ! 2274: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2275: ! 2276: storebyte(dstaddr, outdata); ! 2277: ! 2278: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 2279: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 2280: XFLAG = CFLAG = srcdata > dstdata; ! 2281: NFLAG = ((sint8)outdata) < 0; ! 2282: ZFLAG = !outdata; ! 2283: PC+= 2; ! 2284: } ! 2285: ! 2286: void cpu_op_864a(t_ipc *ipc) /* SUB */ { ! 2287: /* mask fff8, bits 5120, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2288: unsigned int srcdata = 8; ! 2289: int dstreg = (ipc->opcode >> 0) & 7; ! 2290: uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1)); ! 2291: uint8 dstdata = fetchbyte(dstaddr); ! 2292: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2293: ! 2294: storebyte(dstaddr, outdata); ! 2295: PC+= 2; ! 2296: } ! 2297: ! 2298: void cpu_op_864b(t_ipc *ipc) /* SUB */ { ! 2299: /* mask fff8, bits 5120, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2300: unsigned int srcdata = 8; ! 2301: int dstreg = (ipc->opcode >> 0) & 7; ! 2302: uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1)); ! 2303: uint8 dstdata = fetchbyte(dstaddr); ! 2304: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2305: ! 2306: storebyte(dstaddr, outdata); ! 2307: ! 2308: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 2309: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 2310: XFLAG = CFLAG = srcdata > dstdata; ! 2311: NFLAG = ((sint8)outdata) < 0; ! 2312: ZFLAG = !outdata; ! 2313: PC+= 2; ! 2314: } ! 2315: ! 2316: void cpu_op_865a(t_ipc *ipc) /* SUB */ { ! 2317: /* mask fff8, bits 5128, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2318: unsigned int srcdata = 8; ! 2319: int dstreg = (ipc->opcode >> 0) & 7; ! 2320: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 2321: uint8 dstdata = fetchbyte(dstaddr); ! 2322: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2323: ! 2324: storebyte(dstaddr, outdata); ! 2325: PC+= 4; ! 2326: } ! 2327: ! 2328: void cpu_op_865b(t_ipc *ipc) /* SUB */ { ! 2329: /* mask fff8, bits 5128, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2330: unsigned int srcdata = 8; ! 2331: int dstreg = (ipc->opcode >> 0) & 7; ! 2332: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 2333: uint8 dstdata = fetchbyte(dstaddr); ! 2334: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2335: ! 2336: storebyte(dstaddr, outdata); ! 2337: ! 2338: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 2339: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 2340: XFLAG = CFLAG = srcdata > dstdata; ! 2341: NFLAG = ((sint8)outdata) < 0; ! 2342: ZFLAG = !outdata; ! 2343: PC+= 4; ! 2344: } ! 2345: ! 2346: void cpu_op_866a(t_ipc *ipc) /* SUB */ { ! 2347: /* mask fff8, bits 5130, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2348: unsigned int srcdata = 8; ! 2349: int dstreg = (ipc->opcode >> 0) & 7; ! 2350: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 2351: uint8 dstdata = fetchbyte(dstaddr); ! 2352: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2353: ! 2354: storebyte(dstaddr, outdata); ! 2355: PC+= 4; ! 2356: } ! 2357: ! 2358: void cpu_op_866b(t_ipc *ipc) /* SUB */ { ! 2359: /* mask fff8, bits 5130, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2360: unsigned int srcdata = 8; ! 2361: int dstreg = (ipc->opcode >> 0) & 7; ! 2362: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 2363: uint8 dstdata = fetchbyte(dstaddr); ! 2364: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2365: ! 2366: storebyte(dstaddr, outdata); ! 2367: ! 2368: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 2369: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 2370: XFLAG = CFLAG = srcdata > dstdata; ! 2371: NFLAG = ((sint8)outdata) < 0; ! 2372: ZFLAG = !outdata; ! 2373: PC+= 4; ! 2374: } ! 2375: ! 2376: void cpu_op_867a(t_ipc *ipc) /* SUB */ { ! 2377: /* mask ffff, bits 5138, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2378: unsigned int srcdata = 8; ! 2379: uint32 dstaddr = ipc->dst; ! 2380: uint8 dstdata = fetchbyte(dstaddr); ! 2381: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2382: ! 2383: storebyte(dstaddr, outdata); ! 2384: PC+= 4; ! 2385: } ! 2386: ! 2387: void cpu_op_867b(t_ipc *ipc) /* SUB */ { ! 2388: /* mask ffff, bits 5138, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2389: unsigned int srcdata = 8; ! 2390: uint32 dstaddr = ipc->dst; ! 2391: uint8 dstdata = fetchbyte(dstaddr); ! 2392: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2393: ! 2394: storebyte(dstaddr, outdata); ! 2395: ! 2396: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 2397: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 2398: XFLAG = CFLAG = srcdata > dstdata; ! 2399: NFLAG = ((sint8)outdata) < 0; ! 2400: ZFLAG = !outdata; ! 2401: PC+= 4; ! 2402: } ! 2403: ! 2404: void cpu_op_868a(t_ipc *ipc) /* SUB */ { ! 2405: /* mask ffff, bits 5139, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2406: unsigned int srcdata = 8; ! 2407: uint32 dstaddr = ipc->dst; ! 2408: uint8 dstdata = fetchbyte(dstaddr); ! 2409: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2410: ! 2411: storebyte(dstaddr, outdata); ! 2412: PC+= 6; ! 2413: } ! 2414: ! 2415: void cpu_op_868b(t_ipc *ipc) /* SUB */ { ! 2416: /* mask ffff, bits 5139, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 1, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2417: unsigned int srcdata = 8; ! 2418: uint32 dstaddr = ipc->dst; ! 2419: uint8 dstdata = fetchbyte(dstaddr); ! 2420: uint8 outdata = (sint8)dstdata - (sint8)srcdata; ! 2421: ! 2422: storebyte(dstaddr, outdata); ! 2423: ! 2424: VFLAG = (((sint8)srcdata < 0) != ((sint8)dstdata < 0)) && ! 2425: (((sint8)dstdata < 0) != ((sint8)outdata < 0)); ! 2426: XFLAG = CFLAG = srcdata > dstdata; ! 2427: NFLAG = ((sint8)outdata) < 0; ! 2428: ZFLAG = !outdata; ! 2429: PC+= 6; ! 2430: } ! 2431: ! 2432: void cpu_op_869a(t_ipc *ipc) /* SUB */ { ! 2433: /* mask fff8, bits 5140, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2434: unsigned int srcdata = 8; ! 2435: int dstreg = (ipc->opcode >> 0) & 7; ! 2436: uint16 dstdata = DATAREG(dstreg); ! 2437: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2438: ! 2439: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata; ! 2440: PC+= 2; ! 2441: } ! 2442: ! 2443: void cpu_op_869b(t_ipc *ipc) /* SUB */ { ! 2444: /* mask fff8, bits 5140, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2445: unsigned int srcdata = 8; ! 2446: int dstreg = (ipc->opcode >> 0) & 7; ! 2447: uint16 dstdata = DATAREG(dstreg); ! 2448: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2449: ! 2450: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata; ! 2451: ! 2452: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 2453: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 2454: XFLAG = CFLAG = srcdata > dstdata; ! 2455: NFLAG = ((sint16)outdata) < 0; ! 2456: ZFLAG = !outdata; ! 2457: PC+= 2; ! 2458: } ! 2459: ! 2460: void cpu_op_870a(t_ipc *ipc) /* SUB */ { ! 2461: /* mask fff8, bits 5150, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2462: unsigned int srcdata = 8; ! 2463: int dstreg = (ipc->opcode >> 0) & 7; ! 2464: uint32 dstaddr = ADDRREG(dstreg); ! 2465: uint16 dstdata = fetchword(dstaddr); ! 2466: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2467: ! 2468: storeword(dstaddr, outdata); ! 2469: PC+= 2; ! 2470: } ! 2471: ! 2472: void cpu_op_870b(t_ipc *ipc) /* SUB */ { ! 2473: /* mask fff8, bits 5150, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2474: unsigned int srcdata = 8; ! 2475: int dstreg = (ipc->opcode >> 0) & 7; ! 2476: uint32 dstaddr = ADDRREG(dstreg); ! 2477: uint16 dstdata = fetchword(dstaddr); ! 2478: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2479: ! 2480: storeword(dstaddr, outdata); ! 2481: ! 2482: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 2483: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 2484: XFLAG = CFLAG = srcdata > dstdata; ! 2485: NFLAG = ((sint16)outdata) < 0; ! 2486: ZFLAG = !outdata; ! 2487: PC+= 2; ! 2488: } ! 2489: ! 2490: void cpu_op_871a(t_ipc *ipc) /* SUB */ { ! 2491: /* mask fff8, bits 5158, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2492: unsigned int srcdata = 8; ! 2493: int dstreg = (ipc->opcode >> 0) & 7; ! 2494: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2); ! 2495: uint16 dstdata = fetchword(dstaddr); ! 2496: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2497: ! 2498: storeword(dstaddr, outdata); ! 2499: PC+= 2; ! 2500: } ! 2501: ! 2502: void cpu_op_871b(t_ipc *ipc) /* SUB */ { ! 2503: /* mask fff8, bits 5158, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2504: unsigned int srcdata = 8; ! 2505: int dstreg = (ipc->opcode >> 0) & 7; ! 2506: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2); ! 2507: uint16 dstdata = fetchword(dstaddr); ! 2508: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2509: ! 2510: storeword(dstaddr, outdata); ! 2511: ! 2512: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 2513: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 2514: XFLAG = CFLAG = srcdata > dstdata; ! 2515: NFLAG = ((sint16)outdata) < 0; ! 2516: ZFLAG = !outdata; ! 2517: PC+= 2; ! 2518: } ! 2519: ! 2520: void cpu_op_872a(t_ipc *ipc) /* SUB */ { ! 2521: /* mask fff8, bits 5160, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2522: unsigned int srcdata = 8; ! 2523: int dstreg = (ipc->opcode >> 0) & 7; ! 2524: uint32 dstaddr = ADDRREG(dstreg)-=2; ! 2525: uint16 dstdata = fetchword(dstaddr); ! 2526: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2527: ! 2528: storeword(dstaddr, outdata); ! 2529: PC+= 2; ! 2530: } ! 2531: ! 2532: void cpu_op_872b(t_ipc *ipc) /* SUB */ { ! 2533: /* mask fff8, bits 5160, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2534: unsigned int srcdata = 8; ! 2535: int dstreg = (ipc->opcode >> 0) & 7; ! 2536: uint32 dstaddr = ADDRREG(dstreg)-=2; ! 2537: uint16 dstdata = fetchword(dstaddr); ! 2538: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2539: ! 2540: storeword(dstaddr, outdata); ! 2541: ! 2542: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 2543: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 2544: XFLAG = CFLAG = srcdata > dstdata; ! 2545: NFLAG = ((sint16)outdata) < 0; ! 2546: ZFLAG = !outdata; ! 2547: PC+= 2; ! 2548: } ! 2549: ! 2550: void cpu_op_873a(t_ipc *ipc) /* SUB */ { ! 2551: /* mask fff8, bits 5168, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2552: unsigned int srcdata = 8; ! 2553: int dstreg = (ipc->opcode >> 0) & 7; ! 2554: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 2555: uint16 dstdata = fetchword(dstaddr); ! 2556: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2557: ! 2558: storeword(dstaddr, outdata); ! 2559: PC+= 4; ! 2560: } ! 2561: ! 2562: void cpu_op_873b(t_ipc *ipc) /* SUB */ { ! 2563: /* mask fff8, bits 5168, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2564: unsigned int srcdata = 8; ! 2565: int dstreg = (ipc->opcode >> 0) & 7; ! 2566: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 2567: uint16 dstdata = fetchword(dstaddr); ! 2568: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2569: ! 2570: storeword(dstaddr, outdata); ! 2571: ! 2572: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 2573: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 2574: XFLAG = CFLAG = srcdata > dstdata; ! 2575: NFLAG = ((sint16)outdata) < 0; ! 2576: ZFLAG = !outdata; ! 2577: PC+= 4; ! 2578: } ! 2579: ! 2580: void cpu_op_874a(t_ipc *ipc) /* SUB */ { ! 2581: /* mask fff8, bits 5170, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2582: unsigned int srcdata = 8; ! 2583: int dstreg = (ipc->opcode >> 0) & 7; ! 2584: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 2585: uint16 dstdata = fetchword(dstaddr); ! 2586: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2587: ! 2588: storeword(dstaddr, outdata); ! 2589: PC+= 4; ! 2590: } ! 2591: ! 2592: void cpu_op_874b(t_ipc *ipc) /* SUB */ { ! 2593: /* mask fff8, bits 5170, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2594: unsigned int srcdata = 8; ! 2595: int dstreg = (ipc->opcode >> 0) & 7; ! 2596: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 2597: uint16 dstdata = fetchword(dstaddr); ! 2598: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2599: ! 2600: storeword(dstaddr, outdata); ! 2601: ! 2602: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 2603: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 2604: XFLAG = CFLAG = srcdata > dstdata; ! 2605: NFLAG = ((sint16)outdata) < 0; ! 2606: ZFLAG = !outdata; ! 2607: PC+= 4; ! 2608: } ! 2609: ! 2610: void cpu_op_875a(t_ipc *ipc) /* SUB */ { ! 2611: /* mask ffff, bits 5178, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2612: unsigned int srcdata = 8; ! 2613: uint32 dstaddr = ipc->dst; ! 2614: uint16 dstdata = fetchword(dstaddr); ! 2615: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2616: ! 2617: storeword(dstaddr, outdata); ! 2618: PC+= 4; ! 2619: } ! 2620: ! 2621: void cpu_op_875b(t_ipc *ipc) /* SUB */ { ! 2622: /* mask ffff, bits 5178, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2623: unsigned int srcdata = 8; ! 2624: uint32 dstaddr = ipc->dst; ! 2625: uint16 dstdata = fetchword(dstaddr); ! 2626: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2627: ! 2628: storeword(dstaddr, outdata); ! 2629: ! 2630: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 2631: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 2632: XFLAG = CFLAG = srcdata > dstdata; ! 2633: NFLAG = ((sint16)outdata) < 0; ! 2634: ZFLAG = !outdata; ! 2635: PC+= 4; ! 2636: } ! 2637: ! 2638: void cpu_op_876a(t_ipc *ipc) /* SUB */ { ! 2639: /* mask ffff, bits 5179, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2640: unsigned int srcdata = 8; ! 2641: uint32 dstaddr = ipc->dst; ! 2642: uint16 dstdata = fetchword(dstaddr); ! 2643: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2644: ! 2645: storeword(dstaddr, outdata); ! 2646: PC+= 6; ! 2647: } ! 2648: ! 2649: void cpu_op_876b(t_ipc *ipc) /* SUB */ { ! 2650: /* mask ffff, bits 5179, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2651: unsigned int srcdata = 8; ! 2652: uint32 dstaddr = ipc->dst; ! 2653: uint16 dstdata = fetchword(dstaddr); ! 2654: uint16 outdata = (sint16)dstdata - (sint16)srcdata; ! 2655: ! 2656: storeword(dstaddr, outdata); ! 2657: ! 2658: VFLAG = (((sint16)srcdata < 0) != ((sint16)dstdata < 0)) && ! 2659: (((sint16)dstdata < 0) != ((sint16)outdata < 0)); ! 2660: XFLAG = CFLAG = srcdata > dstdata; ! 2661: NFLAG = ((sint16)outdata) < 0; ! 2662: ZFLAG = !outdata; ! 2663: PC+= 6; ! 2664: } ! 2665: ! 2666: void cpu_op_877a(t_ipc *ipc) /* SUB */ { ! 2667: /* mask fff8, bits 5180, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2668: unsigned int srcdata = 8; ! 2669: int dstreg = (ipc->opcode >> 0) & 7; ! 2670: uint32 dstdata = DATAREG(dstreg); ! 2671: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2672: ! 2673: DATAREG(dstreg) = outdata; ! 2674: PC+= 2; ! 2675: } ! 2676: ! 2677: void cpu_op_877b(t_ipc *ipc) /* SUB */ { ! 2678: /* mask fff8, bits 5180, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2679: unsigned int srcdata = 8; ! 2680: int dstreg = (ipc->opcode >> 0) & 7; ! 2681: uint32 dstdata = DATAREG(dstreg); ! 2682: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2683: ! 2684: DATAREG(dstreg) = outdata; ! 2685: ! 2686: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2687: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2688: XFLAG = CFLAG = srcdata > dstdata; ! 2689: NFLAG = ((sint32)outdata) < 0; ! 2690: ZFLAG = !outdata; ! 2691: PC+= 2; ! 2692: } ! 2693: ! 2694: void cpu_op_878a(t_ipc *ipc) /* SUB */ { ! 2695: /* mask fff8, bits 5190, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2696: unsigned int srcdata = 8; ! 2697: int dstreg = (ipc->opcode >> 0) & 7; ! 2698: uint32 dstaddr = ADDRREG(dstreg); ! 2699: uint32 dstdata = fetchlong(dstaddr); ! 2700: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2701: ! 2702: storelong(dstaddr, outdata); ! 2703: PC+= 2; ! 2704: } ! 2705: ! 2706: void cpu_op_878b(t_ipc *ipc) /* SUB */ { ! 2707: /* mask fff8, bits 5190, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2708: unsigned int srcdata = 8; ! 2709: int dstreg = (ipc->opcode >> 0) & 7; ! 2710: uint32 dstaddr = ADDRREG(dstreg); ! 2711: uint32 dstdata = fetchlong(dstaddr); ! 2712: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2713: ! 2714: storelong(dstaddr, outdata); ! 2715: ! 2716: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2717: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2718: XFLAG = CFLAG = srcdata > dstdata; ! 2719: NFLAG = ((sint32)outdata) < 0; ! 2720: ZFLAG = !outdata; ! 2721: PC+= 2; ! 2722: } ! 2723: ! 2724: void cpu_op_879a(t_ipc *ipc) /* SUB */ { ! 2725: /* mask fff8, bits 5198, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2726: unsigned int srcdata = 8; ! 2727: int dstreg = (ipc->opcode >> 0) & 7; ! 2728: uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4); ! 2729: uint32 dstdata = fetchlong(dstaddr); ! 2730: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2731: ! 2732: storelong(dstaddr, outdata); ! 2733: PC+= 2; ! 2734: } ! 2735: ! 2736: void cpu_op_879b(t_ipc *ipc) /* SUB */ { ! 2737: /* mask fff8, bits 5198, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2738: unsigned int srcdata = 8; ! 2739: int dstreg = (ipc->opcode >> 0) & 7; ! 2740: uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4); ! 2741: uint32 dstdata = fetchlong(dstaddr); ! 2742: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2743: ! 2744: storelong(dstaddr, outdata); ! 2745: ! 2746: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2747: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2748: XFLAG = CFLAG = srcdata > dstdata; ! 2749: NFLAG = ((sint32)outdata) < 0; ! 2750: ZFLAG = !outdata; ! 2751: PC+= 2; ! 2752: } ! 2753: ! 2754: void cpu_op_880a(t_ipc *ipc) /* SUB */ { ! 2755: /* mask fff8, bits 51a0, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2756: unsigned int srcdata = 8; ! 2757: int dstreg = (ipc->opcode >> 0) & 7; ! 2758: uint32 dstaddr = ADDRREG(dstreg)-=4; ! 2759: uint32 dstdata = fetchlong(dstaddr); ! 2760: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2761: ! 2762: storelong(dstaddr, outdata); ! 2763: PC+= 2; ! 2764: } ! 2765: ! 2766: void cpu_op_880b(t_ipc *ipc) /* SUB */ { ! 2767: /* mask fff8, bits 51a0, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2768: unsigned int srcdata = 8; ! 2769: int dstreg = (ipc->opcode >> 0) & 7; ! 2770: uint32 dstaddr = ADDRREG(dstreg)-=4; ! 2771: uint32 dstdata = fetchlong(dstaddr); ! 2772: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2773: ! 2774: storelong(dstaddr, outdata); ! 2775: ! 2776: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2777: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2778: XFLAG = CFLAG = srcdata > dstdata; ! 2779: NFLAG = ((sint32)outdata) < 0; ! 2780: ZFLAG = !outdata; ! 2781: PC+= 2; ! 2782: } ! 2783: ! 2784: void cpu_op_881a(t_ipc *ipc) /* SUB */ { ! 2785: /* mask fff8, bits 51a8, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2786: unsigned int srcdata = 8; ! 2787: int dstreg = (ipc->opcode >> 0) & 7; ! 2788: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 2789: uint32 dstdata = fetchlong(dstaddr); ! 2790: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2791: ! 2792: storelong(dstaddr, outdata); ! 2793: PC+= 4; ! 2794: } ! 2795: ! 2796: void cpu_op_881b(t_ipc *ipc) /* SUB */ { ! 2797: /* mask fff8, bits 51a8, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2798: unsigned int srcdata = 8; ! 2799: int dstreg = (ipc->opcode >> 0) & 7; ! 2800: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst; ! 2801: uint32 dstdata = fetchlong(dstaddr); ! 2802: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2803: ! 2804: storelong(dstaddr, outdata); ! 2805: ! 2806: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2807: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2808: XFLAG = CFLAG = srcdata > dstdata; ! 2809: NFLAG = ((sint32)outdata) < 0; ! 2810: ZFLAG = !outdata; ! 2811: PC+= 4; ! 2812: } ! 2813: ! 2814: void cpu_op_882a(t_ipc *ipc) /* SUB */ { ! 2815: /* mask fff8, bits 51b0, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2816: unsigned int srcdata = 8; ! 2817: int dstreg = (ipc->opcode >> 0) & 7; ! 2818: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 2819: uint32 dstdata = fetchlong(dstaddr); ! 2820: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2821: ! 2822: storelong(dstaddr, outdata); ! 2823: PC+= 4; ! 2824: } ! 2825: ! 2826: void cpu_op_882b(t_ipc *ipc) /* SUB */ { ! 2827: /* mask fff8, bits 51b0, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2828: unsigned int srcdata = 8; ! 2829: int dstreg = (ipc->opcode >> 0) & 7; ! 2830: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc); ! 2831: uint32 dstdata = fetchlong(dstaddr); ! 2832: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2833: ! 2834: storelong(dstaddr, outdata); ! 2835: ! 2836: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2837: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2838: XFLAG = CFLAG = srcdata > dstdata; ! 2839: NFLAG = ((sint32)outdata) < 0; ! 2840: ZFLAG = !outdata; ! 2841: PC+= 4; ! 2842: } ! 2843: ! 2844: void cpu_op_883a(t_ipc *ipc) /* SUB */ { ! 2845: /* mask ffff, bits 51b8, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2846: unsigned int srcdata = 8; ! 2847: uint32 dstaddr = ipc->dst; ! 2848: uint32 dstdata = fetchlong(dstaddr); ! 2849: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2850: ! 2851: storelong(dstaddr, outdata); ! 2852: PC+= 4; ! 2853: } ! 2854: ! 2855: void cpu_op_883b(t_ipc *ipc) /* SUB */ { ! 2856: /* mask ffff, bits 51b8, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2857: unsigned int srcdata = 8; ! 2858: uint32 dstaddr = ipc->dst; ! 2859: uint32 dstdata = fetchlong(dstaddr); ! 2860: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2861: ! 2862: storelong(dstaddr, outdata); ! 2863: ! 2864: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2865: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2866: XFLAG = CFLAG = srcdata > dstdata; ! 2867: NFLAG = ((sint32)outdata) < 0; ! 2868: ZFLAG = !outdata; ! 2869: PC+= 4; ! 2870: } ! 2871: ! 2872: void cpu_op_884a(t_ipc *ipc) /* SUB */ { ! 2873: /* mask ffff, bits 51b9, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2874: unsigned int srcdata = 8; ! 2875: uint32 dstaddr = ipc->dst; ! 2876: uint32 dstdata = fetchlong(dstaddr); ! 2877: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2878: ! 2879: storelong(dstaddr, outdata); ! 2880: PC+= 6; ! 2881: } ! 2882: ! 2883: void cpu_op_884b(t_ipc *ipc) /* SUB */ { ! 2884: /* mask ffff, bits 51b9, mnemonic 7, priv 0, endblk 0, imm_notzero 0, used 0 set -1, size 3, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2885: unsigned int srcdata = 8; ! 2886: uint32 dstaddr = ipc->dst; ! 2887: uint32 dstdata = fetchlong(dstaddr); ! 2888: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2889: ! 2890: storelong(dstaddr, outdata); ! 2891: ! 2892: VFLAG = (((sint32)srcdata < 0) != ((sint32)dstdata < 0)) && ! 2893: (((sint32)dstdata < 0) != ((sint32)outdata < 0)); ! 2894: XFLAG = CFLAG = srcdata > dstdata; ! 2895: NFLAG = ((sint32)outdata) < 0; ! 2896: ZFLAG = !outdata; ! 2897: PC+= 6; ! 2898: } ! 2899: ! 2900: void cpu_op_885a(t_ipc *ipc) /* SUBA */ { ! 2901: /* mask fff8, bits 5148, mnemonic 8, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 14, dtype 1, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2902: unsigned int srcdata = 8; ! 2903: int dstreg = (ipc->opcode >> 0) & 7; ! 2904: uint32 dstdata = ADDRREG(dstreg); ! 2905: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2906: ! 2907: ADDRREG(dstreg) = outdata; ! 2908: PC+= 2; ! 2909: } ! 2910: ! 2911: void cpu_op_886a(t_ipc *ipc) /* SUBA */ { ! 2912: /* mask fff8, bits 5188, mnemonic 8, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 3, stype 14, dtype 1, sbitpos 0, dbitpos 0, immvalue 8 */ ! 2913: unsigned int srcdata = 8; ! 2914: int dstreg = (ipc->opcode >> 0) & 7; ! 2915: uint32 dstdata = ADDRREG(dstreg); ! 2916: uint32 outdata = (sint32)dstdata - (sint32)srcdata; ! 2917: ! 2918: ADDRREG(dstreg) = outdata; ! 2919: PC+= 2; ! 2920: } ! 2921: ! 2922: void cpu_op_887a(t_ipc *ipc) /* Scc */ { ! 2923: /* mask fff8, bits 50c0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2924: int srcreg = (ipc->opcode >> 0) & 7; ! 2925: uint8 cc = 1; ! 2926: uint8 outdata = cc ? (uint8)(-1) : 0; ! 2927: ! 2928: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 2929: PC+= 2; ! 2930: } ! 2931: ! 2932: void cpu_op_888a(t_ipc *ipc) /* Scc */ { ! 2933: /* mask fff8, bits 52c0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2934: int srcreg = (ipc->opcode >> 0) & 7; ! 2935: uint8 cc = !(CFLAG || ZFLAG); ! 2936: uint8 outdata = cc ? (uint8)(-1) : 0; ! 2937: ! 2938: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 2939: PC+= 2; ! 2940: } ! 2941: ! 2942: void cpu_op_889a(t_ipc *ipc) /* Scc */ { ! 2943: /* mask fff8, bits 53c0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2944: int srcreg = (ipc->opcode >> 0) & 7; ! 2945: uint8 cc = CFLAG || ZFLAG; ! 2946: uint8 outdata = cc ? (uint8)(-1) : 0; ! 2947: ! 2948: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 2949: PC+= 2; ! 2950: } ! 2951: ! 2952: void cpu_op_890a(t_ipc *ipc) /* Scc */ { ! 2953: /* mask fff8, bits 54c0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2954: int srcreg = (ipc->opcode >> 0) & 7; ! 2955: uint8 cc = !CFLAG; ! 2956: uint8 outdata = cc ? (uint8)(-1) : 0; ! 2957: ! 2958: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 2959: PC+= 2; ! 2960: } ! 2961: ! 2962: void cpu_op_891a(t_ipc *ipc) /* Scc */ { ! 2963: /* mask fff8, bits 55c0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2964: int srcreg = (ipc->opcode >> 0) & 7; ! 2965: uint8 cc = CFLAG; ! 2966: uint8 outdata = cc ? (uint8)(-1) : 0; ! 2967: ! 2968: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 2969: PC+= 2; ! 2970: } ! 2971: ! 2972: void cpu_op_892a(t_ipc *ipc) /* Scc */ { ! 2973: /* mask fff8, bits 56c0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2974: int srcreg = (ipc->opcode >> 0) & 7; ! 2975: uint8 cc = !ZFLAG; ! 2976: uint8 outdata = cc ? (uint8)(-1) : 0; ! 2977: ! 2978: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 2979: PC+= 2; ! 2980: } ! 2981: ! 2982: void cpu_op_893a(t_ipc *ipc) /* Scc */ { ! 2983: /* mask fff8, bits 57c0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2984: int srcreg = (ipc->opcode >> 0) & 7; ! 2985: uint8 cc = ZFLAG; ! 2986: uint8 outdata = cc ? (uint8)(-1) : 0; ! 2987: ! 2988: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 2989: PC+= 2; ! 2990: } ! 2991: ! 2992: void cpu_op_894a(t_ipc *ipc) /* Scc */ { ! 2993: /* mask fff8, bits 58c0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 2994: int srcreg = (ipc->opcode >> 0) & 7; ! 2995: uint8 cc = !VFLAG; ! 2996: uint8 outdata = cc ? (uint8)(-1) : 0; ! 2997: ! 2998: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 2999: PC+= 2; ! 3000: } ! 3001: ! 3002: void cpu_op_895a(t_ipc *ipc) /* Scc */ { ! 3003: /* mask fff8, bits 59c0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3004: int srcreg = (ipc->opcode >> 0) & 7; ! 3005: uint8 cc = VFLAG; ! 3006: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3007: ! 3008: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 3009: PC+= 2; ! 3010: } ! 3011: ! 3012: void cpu_op_896a(t_ipc *ipc) /* Scc */ { ! 3013: /* mask fff8, bits 5ac0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3014: int srcreg = (ipc->opcode >> 0) & 7; ! 3015: uint8 cc = !NFLAG; ! 3016: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3017: ! 3018: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 3019: PC+= 2; ! 3020: } ! 3021: ! 3022: void cpu_op_897a(t_ipc *ipc) /* Scc */ { ! 3023: /* mask fff8, bits 5bc0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3024: int srcreg = (ipc->opcode >> 0) & 7; ! 3025: uint8 cc = NFLAG; ! 3026: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3027: ! 3028: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 3029: PC+= 2; ! 3030: } ! 3031: ! 3032: void cpu_op_898a(t_ipc *ipc) /* Scc */ { ! 3033: /* mask fff8, bits 5cc0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3034: int srcreg = (ipc->opcode >> 0) & 7; ! 3035: uint8 cc = (NFLAG == VFLAG); ! 3036: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3037: ! 3038: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 3039: PC+= 2; ! 3040: } ! 3041: ! 3042: void cpu_op_899a(t_ipc *ipc) /* Scc */ { ! 3043: /* mask fff8, bits 5dc0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3044: int srcreg = (ipc->opcode >> 0) & 7; ! 3045: uint8 cc = (NFLAG != VFLAG); ! 3046: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3047: ! 3048: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 3049: PC+= 2; ! 3050: } ! 3051: ! 3052: void cpu_op_900a(t_ipc *ipc) /* Scc */ { ! 3053: /* mask fff8, bits 5ec0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3054: int srcreg = (ipc->opcode >> 0) & 7; ! 3055: uint8 cc = !ZFLAG && (NFLAG == VFLAG); ! 3056: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3057: ! 3058: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 3059: PC+= 2; ! 3060: } ! 3061: ! 3062: void cpu_op_901a(t_ipc *ipc) /* Scc */ { ! 3063: /* mask fff8, bits 5fc0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3064: int srcreg = (ipc->opcode >> 0) & 7; ! 3065: uint8 cc = ZFLAG || (NFLAG != VFLAG); ! 3066: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3067: ! 3068: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 3069: PC+= 2; ! 3070: } ! 3071: ! 3072: void cpu_op_902a(t_ipc *ipc) /* Scc */ { ! 3073: /* mask fff8, bits 50d0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3074: int srcreg = (ipc->opcode >> 0) & 7; ! 3075: uint32 srcaddr = ADDRREG(srcreg); ! 3076: uint8 cc = 1; ! 3077: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3078: ! 3079: storebyte(srcaddr, outdata); ! 3080: PC+= 2; ! 3081: } ! 3082: ! 3083: void cpu_op_903a(t_ipc *ipc) /* Scc */ { ! 3084: /* mask fff8, bits 52d0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3085: int srcreg = (ipc->opcode >> 0) & 7; ! 3086: uint32 srcaddr = ADDRREG(srcreg); ! 3087: uint8 cc = !(CFLAG || ZFLAG); ! 3088: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3089: ! 3090: storebyte(srcaddr, outdata); ! 3091: PC+= 2; ! 3092: } ! 3093: ! 3094: void cpu_op_904a(t_ipc *ipc) /* Scc */ { ! 3095: /* mask fff8, bits 53d0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3096: int srcreg = (ipc->opcode >> 0) & 7; ! 3097: uint32 srcaddr = ADDRREG(srcreg); ! 3098: uint8 cc = CFLAG || ZFLAG; ! 3099: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3100: ! 3101: storebyte(srcaddr, outdata); ! 3102: PC+= 2; ! 3103: } ! 3104: ! 3105: void cpu_op_905a(t_ipc *ipc) /* Scc */ { ! 3106: /* mask fff8, bits 54d0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3107: int srcreg = (ipc->opcode >> 0) & 7; ! 3108: uint32 srcaddr = ADDRREG(srcreg); ! 3109: uint8 cc = !CFLAG; ! 3110: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3111: ! 3112: storebyte(srcaddr, outdata); ! 3113: PC+= 2; ! 3114: } ! 3115: ! 3116: void cpu_op_906a(t_ipc *ipc) /* Scc */ { ! 3117: /* mask fff8, bits 55d0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3118: int srcreg = (ipc->opcode >> 0) & 7; ! 3119: uint32 srcaddr = ADDRREG(srcreg); ! 3120: uint8 cc = CFLAG; ! 3121: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3122: ! 3123: storebyte(srcaddr, outdata); ! 3124: PC+= 2; ! 3125: } ! 3126: ! 3127: void cpu_op_907a(t_ipc *ipc) /* Scc */ { ! 3128: /* mask fff8, bits 56d0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3129: int srcreg = (ipc->opcode >> 0) & 7; ! 3130: uint32 srcaddr = ADDRREG(srcreg); ! 3131: uint8 cc = !ZFLAG; ! 3132: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3133: ! 3134: storebyte(srcaddr, outdata); ! 3135: PC+= 2; ! 3136: } ! 3137: ! 3138: void cpu_op_908a(t_ipc *ipc) /* Scc */ { ! 3139: /* mask fff8, bits 57d0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3140: int srcreg = (ipc->opcode >> 0) & 7; ! 3141: uint32 srcaddr = ADDRREG(srcreg); ! 3142: uint8 cc = ZFLAG; ! 3143: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3144: ! 3145: storebyte(srcaddr, outdata); ! 3146: PC+= 2; ! 3147: } ! 3148: ! 3149: void cpu_op_909a(t_ipc *ipc) /* Scc */ { ! 3150: /* mask fff8, bits 58d0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3151: int srcreg = (ipc->opcode >> 0) & 7; ! 3152: uint32 srcaddr = ADDRREG(srcreg); ! 3153: uint8 cc = !VFLAG; ! 3154: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3155: ! 3156: storebyte(srcaddr, outdata); ! 3157: PC+= 2; ! 3158: } ! 3159: ! 3160: void cpu_op_910a(t_ipc *ipc) /* Scc */ { ! 3161: /* mask fff8, bits 59d0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3162: int srcreg = (ipc->opcode >> 0) & 7; ! 3163: uint32 srcaddr = ADDRREG(srcreg); ! 3164: uint8 cc = VFLAG; ! 3165: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3166: ! 3167: storebyte(srcaddr, outdata); ! 3168: PC+= 2; ! 3169: } ! 3170: ! 3171: void cpu_op_911a(t_ipc *ipc) /* Scc */ { ! 3172: /* mask fff8, bits 5ad0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3173: int srcreg = (ipc->opcode >> 0) & 7; ! 3174: uint32 srcaddr = ADDRREG(srcreg); ! 3175: uint8 cc = !NFLAG; ! 3176: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3177: ! 3178: storebyte(srcaddr, outdata); ! 3179: PC+= 2; ! 3180: } ! 3181: ! 3182: void cpu_op_912a(t_ipc *ipc) /* Scc */ { ! 3183: /* mask fff8, bits 5bd0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3184: int srcreg = (ipc->opcode >> 0) & 7; ! 3185: uint32 srcaddr = ADDRREG(srcreg); ! 3186: uint8 cc = NFLAG; ! 3187: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3188: ! 3189: storebyte(srcaddr, outdata); ! 3190: PC+= 2; ! 3191: } ! 3192: ! 3193: void cpu_op_913a(t_ipc *ipc) /* Scc */ { ! 3194: /* mask fff8, bits 5cd0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3195: int srcreg = (ipc->opcode >> 0) & 7; ! 3196: uint32 srcaddr = ADDRREG(srcreg); ! 3197: uint8 cc = (NFLAG == VFLAG); ! 3198: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3199: ! 3200: storebyte(srcaddr, outdata); ! 3201: PC+= 2; ! 3202: } ! 3203: ! 3204: void cpu_op_914a(t_ipc *ipc) /* Scc */ { ! 3205: /* mask fff8, bits 5dd0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3206: int srcreg = (ipc->opcode >> 0) & 7; ! 3207: uint32 srcaddr = ADDRREG(srcreg); ! 3208: uint8 cc = (NFLAG != VFLAG); ! 3209: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3210: ! 3211: storebyte(srcaddr, outdata); ! 3212: PC+= 2; ! 3213: } ! 3214: ! 3215: void cpu_op_915a(t_ipc *ipc) /* Scc */ { ! 3216: /* mask fff8, bits 5ed0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3217: int srcreg = (ipc->opcode >> 0) & 7; ! 3218: uint32 srcaddr = ADDRREG(srcreg); ! 3219: uint8 cc = !ZFLAG && (NFLAG == VFLAG); ! 3220: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3221: ! 3222: storebyte(srcaddr, outdata); ! 3223: PC+= 2; ! 3224: } ! 3225: ! 3226: void cpu_op_916a(t_ipc *ipc) /* Scc */ { ! 3227: /* mask fff8, bits 5fd0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3228: int srcreg = (ipc->opcode >> 0) & 7; ! 3229: uint32 srcaddr = ADDRREG(srcreg); ! 3230: uint8 cc = ZFLAG || (NFLAG != VFLAG); ! 3231: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3232: ! 3233: storebyte(srcaddr, outdata); ! 3234: PC+= 2; ! 3235: } ! 3236: ! 3237: void cpu_op_917a(t_ipc *ipc) /* Scc */ { ! 3238: /* mask fff8, bits 50d8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3239: int srcreg = (ipc->opcode >> 0) & 7; ! 3240: uint32 srcaddr = ADDRREG(srcreg); ! 3241: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3242: uint8 cc = 1; ! 3243: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3244: ! 3245: storebyte(srcaddr, outdata); ! 3246: PC+= 2; ! 3247: } ! 3248: ! 3249: void cpu_op_918a(t_ipc *ipc) /* Scc */ { ! 3250: /* mask fff8, bits 52d8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3251: int srcreg = (ipc->opcode >> 0) & 7; ! 3252: uint32 srcaddr = ADDRREG(srcreg); ! 3253: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3254: uint8 cc = !(CFLAG || ZFLAG); ! 3255: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3256: ! 3257: storebyte(srcaddr, outdata); ! 3258: PC+= 2; ! 3259: } ! 3260: ! 3261: void cpu_op_919a(t_ipc *ipc) /* Scc */ { ! 3262: /* mask fff8, bits 53d8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3263: int srcreg = (ipc->opcode >> 0) & 7; ! 3264: uint32 srcaddr = ADDRREG(srcreg); ! 3265: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3266: uint8 cc = CFLAG || ZFLAG; ! 3267: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3268: ! 3269: storebyte(srcaddr, outdata); ! 3270: PC+= 2; ! 3271: } ! 3272: ! 3273: void cpu_op_920a(t_ipc *ipc) /* Scc */ { ! 3274: /* mask fff8, bits 54d8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3275: int srcreg = (ipc->opcode >> 0) & 7; ! 3276: uint32 srcaddr = ADDRREG(srcreg); ! 3277: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3278: uint8 cc = !CFLAG; ! 3279: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3280: ! 3281: storebyte(srcaddr, outdata); ! 3282: PC+= 2; ! 3283: } ! 3284: ! 3285: void cpu_op_921a(t_ipc *ipc) /* Scc */ { ! 3286: /* mask fff8, bits 55d8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3287: int srcreg = (ipc->opcode >> 0) & 7; ! 3288: uint32 srcaddr = ADDRREG(srcreg); ! 3289: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3290: uint8 cc = CFLAG; ! 3291: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3292: ! 3293: storebyte(srcaddr, outdata); ! 3294: PC+= 2; ! 3295: } ! 3296: ! 3297: void cpu_op_922a(t_ipc *ipc) /* Scc */ { ! 3298: /* mask fff8, bits 56d8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3299: int srcreg = (ipc->opcode >> 0) & 7; ! 3300: uint32 srcaddr = ADDRREG(srcreg); ! 3301: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3302: uint8 cc = !ZFLAG; ! 3303: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3304: ! 3305: storebyte(srcaddr, outdata); ! 3306: PC+= 2; ! 3307: } ! 3308: ! 3309: void cpu_op_923a(t_ipc *ipc) /* Scc */ { ! 3310: /* mask fff8, bits 57d8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3311: int srcreg = (ipc->opcode >> 0) & 7; ! 3312: uint32 srcaddr = ADDRREG(srcreg); ! 3313: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3314: uint8 cc = ZFLAG; ! 3315: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3316: ! 3317: storebyte(srcaddr, outdata); ! 3318: PC+= 2; ! 3319: } ! 3320: ! 3321: void cpu_op_924a(t_ipc *ipc) /* Scc */ { ! 3322: /* mask fff8, bits 58d8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3323: int srcreg = (ipc->opcode >> 0) & 7; ! 3324: uint32 srcaddr = ADDRREG(srcreg); ! 3325: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3326: uint8 cc = !VFLAG; ! 3327: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3328: ! 3329: storebyte(srcaddr, outdata); ! 3330: PC+= 2; ! 3331: } ! 3332: ! 3333: void cpu_op_925a(t_ipc *ipc) /* Scc */ { ! 3334: /* mask fff8, bits 59d8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3335: int srcreg = (ipc->opcode >> 0) & 7; ! 3336: uint32 srcaddr = ADDRREG(srcreg); ! 3337: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3338: uint8 cc = VFLAG; ! 3339: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3340: ! 3341: storebyte(srcaddr, outdata); ! 3342: PC+= 2; ! 3343: } ! 3344: ! 3345: void cpu_op_926a(t_ipc *ipc) /* Scc */ { ! 3346: /* mask fff8, bits 5ad8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3347: int srcreg = (ipc->opcode >> 0) & 7; ! 3348: uint32 srcaddr = ADDRREG(srcreg); ! 3349: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3350: uint8 cc = !NFLAG; ! 3351: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3352: ! 3353: storebyte(srcaddr, outdata); ! 3354: PC+= 2; ! 3355: } ! 3356: ! 3357: void cpu_op_927a(t_ipc *ipc) /* Scc */ { ! 3358: /* mask fff8, bits 5bd8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3359: int srcreg = (ipc->opcode >> 0) & 7; ! 3360: uint32 srcaddr = ADDRREG(srcreg); ! 3361: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3362: uint8 cc = NFLAG; ! 3363: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3364: ! 3365: storebyte(srcaddr, outdata); ! 3366: PC+= 2; ! 3367: } ! 3368: ! 3369: void cpu_op_928a(t_ipc *ipc) /* Scc */ { ! 3370: /* mask fff8, bits 5cd8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3371: int srcreg = (ipc->opcode >> 0) & 7; ! 3372: uint32 srcaddr = ADDRREG(srcreg); ! 3373: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3374: uint8 cc = (NFLAG == VFLAG); ! 3375: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3376: ! 3377: storebyte(srcaddr, outdata); ! 3378: PC+= 2; ! 3379: } ! 3380: ! 3381: void cpu_op_929a(t_ipc *ipc) /* Scc */ { ! 3382: /* mask fff8, bits 5dd8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3383: int srcreg = (ipc->opcode >> 0) & 7; ! 3384: uint32 srcaddr = ADDRREG(srcreg); ! 3385: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3386: uint8 cc = (NFLAG != VFLAG); ! 3387: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3388: ! 3389: storebyte(srcaddr, outdata); ! 3390: PC+= 2; ! 3391: } ! 3392: ! 3393: void cpu_op_930a(t_ipc *ipc) /* Scc */ { ! 3394: /* mask fff8, bits 5ed8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3395: int srcreg = (ipc->opcode >> 0) & 7; ! 3396: uint32 srcaddr = ADDRREG(srcreg); ! 3397: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3398: uint8 cc = !ZFLAG && (NFLAG == VFLAG); ! 3399: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3400: ! 3401: storebyte(srcaddr, outdata); ! 3402: PC+= 2; ! 3403: } ! 3404: ! 3405: void cpu_op_931a(t_ipc *ipc) /* Scc */ { ! 3406: /* mask fff8, bits 5fd8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3407: int srcreg = (ipc->opcode >> 0) & 7; ! 3408: uint32 srcaddr = ADDRREG(srcreg); ! 3409: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 3410: uint8 cc = ZFLAG || (NFLAG != VFLAG); ! 3411: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3412: ! 3413: storebyte(srcaddr, outdata); ! 3414: PC+= 2; ! 3415: } ! 3416: ! 3417: void cpu_op_932a(t_ipc *ipc) /* Scc */ { ! 3418: /* mask fff8, bits 50e0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3419: int srcreg = (ipc->opcode >> 0) & 7; ! 3420: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3421: uint8 cc = 1; ! 3422: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3423: ! 3424: storebyte(srcaddr, outdata); ! 3425: PC+= 2; ! 3426: } ! 3427: ! 3428: void cpu_op_933a(t_ipc *ipc) /* Scc */ { ! 3429: /* mask fff8, bits 52e0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3430: int srcreg = (ipc->opcode >> 0) & 7; ! 3431: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3432: uint8 cc = !(CFLAG || ZFLAG); ! 3433: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3434: ! 3435: storebyte(srcaddr, outdata); ! 3436: PC+= 2; ! 3437: } ! 3438: ! 3439: void cpu_op_934a(t_ipc *ipc) /* Scc */ { ! 3440: /* mask fff8, bits 53e0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3441: int srcreg = (ipc->opcode >> 0) & 7; ! 3442: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3443: uint8 cc = CFLAG || ZFLAG; ! 3444: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3445: ! 3446: storebyte(srcaddr, outdata); ! 3447: PC+= 2; ! 3448: } ! 3449: ! 3450: void cpu_op_935a(t_ipc *ipc) /* Scc */ { ! 3451: /* mask fff8, bits 54e0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3452: int srcreg = (ipc->opcode >> 0) & 7; ! 3453: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3454: uint8 cc = !CFLAG; ! 3455: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3456: ! 3457: storebyte(srcaddr, outdata); ! 3458: PC+= 2; ! 3459: } ! 3460: ! 3461: void cpu_op_936a(t_ipc *ipc) /* Scc */ { ! 3462: /* mask fff8, bits 55e0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3463: int srcreg = (ipc->opcode >> 0) & 7; ! 3464: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3465: uint8 cc = CFLAG; ! 3466: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3467: ! 3468: storebyte(srcaddr, outdata); ! 3469: PC+= 2; ! 3470: } ! 3471: ! 3472: void cpu_op_937a(t_ipc *ipc) /* Scc */ { ! 3473: /* mask fff8, bits 56e0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3474: int srcreg = (ipc->opcode >> 0) & 7; ! 3475: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3476: uint8 cc = !ZFLAG; ! 3477: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3478: ! 3479: storebyte(srcaddr, outdata); ! 3480: PC+= 2; ! 3481: } ! 3482: ! 3483: void cpu_op_938a(t_ipc *ipc) /* Scc */ { ! 3484: /* mask fff8, bits 57e0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3485: int srcreg = (ipc->opcode >> 0) & 7; ! 3486: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3487: uint8 cc = ZFLAG; ! 3488: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3489: ! 3490: storebyte(srcaddr, outdata); ! 3491: PC+= 2; ! 3492: } ! 3493: ! 3494: void cpu_op_939a(t_ipc *ipc) /* Scc */ { ! 3495: /* mask fff8, bits 58e0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3496: int srcreg = (ipc->opcode >> 0) & 7; ! 3497: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3498: uint8 cc = !VFLAG; ! 3499: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3500: ! 3501: storebyte(srcaddr, outdata); ! 3502: PC+= 2; ! 3503: } ! 3504: ! 3505: void cpu_op_940a(t_ipc *ipc) /* Scc */ { ! 3506: /* mask fff8, bits 59e0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3507: int srcreg = (ipc->opcode >> 0) & 7; ! 3508: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3509: uint8 cc = VFLAG; ! 3510: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3511: ! 3512: storebyte(srcaddr, outdata); ! 3513: PC+= 2; ! 3514: } ! 3515: ! 3516: void cpu_op_941a(t_ipc *ipc) /* Scc */ { ! 3517: /* mask fff8, bits 5ae0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3518: int srcreg = (ipc->opcode >> 0) & 7; ! 3519: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3520: uint8 cc = !NFLAG; ! 3521: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3522: ! 3523: storebyte(srcaddr, outdata); ! 3524: PC+= 2; ! 3525: } ! 3526: ! 3527: void cpu_op_942a(t_ipc *ipc) /* Scc */ { ! 3528: /* mask fff8, bits 5be0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3529: int srcreg = (ipc->opcode >> 0) & 7; ! 3530: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3531: uint8 cc = NFLAG; ! 3532: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3533: ! 3534: storebyte(srcaddr, outdata); ! 3535: PC+= 2; ! 3536: } ! 3537: ! 3538: void cpu_op_943a(t_ipc *ipc) /* Scc */ { ! 3539: /* mask fff8, bits 5ce0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3540: int srcreg = (ipc->opcode >> 0) & 7; ! 3541: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3542: uint8 cc = (NFLAG == VFLAG); ! 3543: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3544: ! 3545: storebyte(srcaddr, outdata); ! 3546: PC+= 2; ! 3547: } ! 3548: ! 3549: void cpu_op_944a(t_ipc *ipc) /* Scc */ { ! 3550: /* mask fff8, bits 5de0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3551: int srcreg = (ipc->opcode >> 0) & 7; ! 3552: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3553: uint8 cc = (NFLAG != VFLAG); ! 3554: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3555: ! 3556: storebyte(srcaddr, outdata); ! 3557: PC+= 2; ! 3558: } ! 3559: ! 3560: void cpu_op_945a(t_ipc *ipc) /* Scc */ { ! 3561: /* mask fff8, bits 5ee0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3562: int srcreg = (ipc->opcode >> 0) & 7; ! 3563: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3564: uint8 cc = !ZFLAG && (NFLAG == VFLAG); ! 3565: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3566: ! 3567: storebyte(srcaddr, outdata); ! 3568: PC+= 2; ! 3569: } ! 3570: ! 3571: void cpu_op_946a(t_ipc *ipc) /* Scc */ { ! 3572: /* mask fff8, bits 5fe0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3573: int srcreg = (ipc->opcode >> 0) & 7; ! 3574: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 3575: uint8 cc = ZFLAG || (NFLAG != VFLAG); ! 3576: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3577: ! 3578: storebyte(srcaddr, outdata); ! 3579: PC+= 2; ! 3580: } ! 3581: ! 3582: void cpu_op_947a(t_ipc *ipc) /* Scc */ { ! 3583: /* mask fff8, bits 50e8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3584: int srcreg = (ipc->opcode >> 0) & 7; ! 3585: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3586: uint8 cc = 1; ! 3587: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3588: ! 3589: storebyte(srcaddr, outdata); ! 3590: PC+= 4; ! 3591: } ! 3592: ! 3593: void cpu_op_948a(t_ipc *ipc) /* Scc */ { ! 3594: /* mask fff8, bits 52e8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3595: int srcreg = (ipc->opcode >> 0) & 7; ! 3596: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3597: uint8 cc = !(CFLAG || ZFLAG); ! 3598: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3599: ! 3600: storebyte(srcaddr, outdata); ! 3601: PC+= 4; ! 3602: } ! 3603: ! 3604: void cpu_op_949a(t_ipc *ipc) /* Scc */ { ! 3605: /* mask fff8, bits 53e8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3606: int srcreg = (ipc->opcode >> 0) & 7; ! 3607: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3608: uint8 cc = CFLAG || ZFLAG; ! 3609: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3610: ! 3611: storebyte(srcaddr, outdata); ! 3612: PC+= 4; ! 3613: } ! 3614: ! 3615: void cpu_op_950a(t_ipc *ipc) /* Scc */ { ! 3616: /* mask fff8, bits 54e8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3617: int srcreg = (ipc->opcode >> 0) & 7; ! 3618: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3619: uint8 cc = !CFLAG; ! 3620: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3621: ! 3622: storebyte(srcaddr, outdata); ! 3623: PC+= 4; ! 3624: } ! 3625: ! 3626: void cpu_op_951a(t_ipc *ipc) /* Scc */ { ! 3627: /* mask fff8, bits 55e8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3628: int srcreg = (ipc->opcode >> 0) & 7; ! 3629: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3630: uint8 cc = CFLAG; ! 3631: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3632: ! 3633: storebyte(srcaddr, outdata); ! 3634: PC+= 4; ! 3635: } ! 3636: ! 3637: void cpu_op_952a(t_ipc *ipc) /* Scc */ { ! 3638: /* mask fff8, bits 56e8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3639: int srcreg = (ipc->opcode >> 0) & 7; ! 3640: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3641: uint8 cc = !ZFLAG; ! 3642: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3643: ! 3644: storebyte(srcaddr, outdata); ! 3645: PC+= 4; ! 3646: } ! 3647: ! 3648: void cpu_op_953a(t_ipc *ipc) /* Scc */ { ! 3649: /* mask fff8, bits 57e8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3650: int srcreg = (ipc->opcode >> 0) & 7; ! 3651: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3652: uint8 cc = ZFLAG; ! 3653: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3654: ! 3655: storebyte(srcaddr, outdata); ! 3656: PC+= 4; ! 3657: } ! 3658: ! 3659: void cpu_op_954a(t_ipc *ipc) /* Scc */ { ! 3660: /* mask fff8, bits 58e8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3661: int srcreg = (ipc->opcode >> 0) & 7; ! 3662: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3663: uint8 cc = !VFLAG; ! 3664: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3665: ! 3666: storebyte(srcaddr, outdata); ! 3667: PC+= 4; ! 3668: } ! 3669: ! 3670: void cpu_op_955a(t_ipc *ipc) /* Scc */ { ! 3671: /* mask fff8, bits 59e8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3672: int srcreg = (ipc->opcode >> 0) & 7; ! 3673: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3674: uint8 cc = VFLAG; ! 3675: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3676: ! 3677: storebyte(srcaddr, outdata); ! 3678: PC+= 4; ! 3679: } ! 3680: ! 3681: void cpu_op_956a(t_ipc *ipc) /* Scc */ { ! 3682: /* mask fff8, bits 5ae8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3683: int srcreg = (ipc->opcode >> 0) & 7; ! 3684: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3685: uint8 cc = !NFLAG; ! 3686: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3687: ! 3688: storebyte(srcaddr, outdata); ! 3689: PC+= 4; ! 3690: } ! 3691: ! 3692: void cpu_op_957a(t_ipc *ipc) /* Scc */ { ! 3693: /* mask fff8, bits 5be8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3694: int srcreg = (ipc->opcode >> 0) & 7; ! 3695: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3696: uint8 cc = NFLAG; ! 3697: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3698: ! 3699: storebyte(srcaddr, outdata); ! 3700: PC+= 4; ! 3701: } ! 3702: ! 3703: void cpu_op_958a(t_ipc *ipc) /* Scc */ { ! 3704: /* mask fff8, bits 5ce8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3705: int srcreg = (ipc->opcode >> 0) & 7; ! 3706: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3707: uint8 cc = (NFLAG == VFLAG); ! 3708: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3709: ! 3710: storebyte(srcaddr, outdata); ! 3711: PC+= 4; ! 3712: } ! 3713: ! 3714: void cpu_op_959a(t_ipc *ipc) /* Scc */ { ! 3715: /* mask fff8, bits 5de8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3716: int srcreg = (ipc->opcode >> 0) & 7; ! 3717: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3718: uint8 cc = (NFLAG != VFLAG); ! 3719: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3720: ! 3721: storebyte(srcaddr, outdata); ! 3722: PC+= 4; ! 3723: } ! 3724: ! 3725: void cpu_op_960a(t_ipc *ipc) /* Scc */ { ! 3726: /* mask fff8, bits 5ee8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3727: int srcreg = (ipc->opcode >> 0) & 7; ! 3728: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3729: uint8 cc = !ZFLAG && (NFLAG == VFLAG); ! 3730: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3731: ! 3732: storebyte(srcaddr, outdata); ! 3733: PC+= 4; ! 3734: } ! 3735: ! 3736: void cpu_op_961a(t_ipc *ipc) /* Scc */ { ! 3737: /* mask fff8, bits 5fe8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3738: int srcreg = (ipc->opcode >> 0) & 7; ! 3739: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 3740: uint8 cc = ZFLAG || (NFLAG != VFLAG); ! 3741: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3742: ! 3743: storebyte(srcaddr, outdata); ! 3744: PC+= 4; ! 3745: } ! 3746: ! 3747: void cpu_op_962a(t_ipc *ipc) /* Scc */ { ! 3748: /* mask fff8, bits 50f0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3749: int srcreg = (ipc->opcode >> 0) & 7; ! 3750: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3751: uint8 cc = 1; ! 3752: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3753: ! 3754: storebyte(srcaddr, outdata); ! 3755: PC+= 4; ! 3756: } ! 3757: ! 3758: void cpu_op_963a(t_ipc *ipc) /* Scc */ { ! 3759: /* mask fff8, bits 52f0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3760: int srcreg = (ipc->opcode >> 0) & 7; ! 3761: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3762: uint8 cc = !(CFLAG || ZFLAG); ! 3763: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3764: ! 3765: storebyte(srcaddr, outdata); ! 3766: PC+= 4; ! 3767: } ! 3768: ! 3769: void cpu_op_964a(t_ipc *ipc) /* Scc */ { ! 3770: /* mask fff8, bits 53f0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3771: int srcreg = (ipc->opcode >> 0) & 7; ! 3772: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3773: uint8 cc = CFLAG || ZFLAG; ! 3774: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3775: ! 3776: storebyte(srcaddr, outdata); ! 3777: PC+= 4; ! 3778: } ! 3779: ! 3780: void cpu_op_965a(t_ipc *ipc) /* Scc */ { ! 3781: /* mask fff8, bits 54f0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3782: int srcreg = (ipc->opcode >> 0) & 7; ! 3783: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3784: uint8 cc = !CFLAG; ! 3785: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3786: ! 3787: storebyte(srcaddr, outdata); ! 3788: PC+= 4; ! 3789: } ! 3790: ! 3791: void cpu_op_966a(t_ipc *ipc) /* Scc */ { ! 3792: /* mask fff8, bits 55f0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3793: int srcreg = (ipc->opcode >> 0) & 7; ! 3794: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3795: uint8 cc = CFLAG; ! 3796: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3797: ! 3798: storebyte(srcaddr, outdata); ! 3799: PC+= 4; ! 3800: } ! 3801: ! 3802: void cpu_op_967a(t_ipc *ipc) /* Scc */ { ! 3803: /* mask fff8, bits 56f0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3804: int srcreg = (ipc->opcode >> 0) & 7; ! 3805: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3806: uint8 cc = !ZFLAG; ! 3807: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3808: ! 3809: storebyte(srcaddr, outdata); ! 3810: PC+= 4; ! 3811: } ! 3812: ! 3813: void cpu_op_968a(t_ipc *ipc) /* Scc */ { ! 3814: /* mask fff8, bits 57f0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3815: int srcreg = (ipc->opcode >> 0) & 7; ! 3816: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3817: uint8 cc = ZFLAG; ! 3818: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3819: ! 3820: storebyte(srcaddr, outdata); ! 3821: PC+= 4; ! 3822: } ! 3823: ! 3824: void cpu_op_969a(t_ipc *ipc) /* Scc */ { ! 3825: /* mask fff8, bits 58f0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3826: int srcreg = (ipc->opcode >> 0) & 7; ! 3827: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3828: uint8 cc = !VFLAG; ! 3829: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3830: ! 3831: storebyte(srcaddr, outdata); ! 3832: PC+= 4; ! 3833: } ! 3834: ! 3835: void cpu_op_970a(t_ipc *ipc) /* Scc */ { ! 3836: /* mask fff8, bits 59f0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3837: int srcreg = (ipc->opcode >> 0) & 7; ! 3838: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3839: uint8 cc = VFLAG; ! 3840: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3841: ! 3842: storebyte(srcaddr, outdata); ! 3843: PC+= 4; ! 3844: } ! 3845: ! 3846: void cpu_op_971a(t_ipc *ipc) /* Scc */ { ! 3847: /* mask fff8, bits 5af0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3848: int srcreg = (ipc->opcode >> 0) & 7; ! 3849: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3850: uint8 cc = !NFLAG; ! 3851: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3852: ! 3853: storebyte(srcaddr, outdata); ! 3854: PC+= 4; ! 3855: } ! 3856: ! 3857: void cpu_op_972a(t_ipc *ipc) /* Scc */ { ! 3858: /* mask fff8, bits 5bf0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3859: int srcreg = (ipc->opcode >> 0) & 7; ! 3860: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3861: uint8 cc = NFLAG; ! 3862: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3863: ! 3864: storebyte(srcaddr, outdata); ! 3865: PC+= 4; ! 3866: } ! 3867: ! 3868: void cpu_op_973a(t_ipc *ipc) /* Scc */ { ! 3869: /* mask fff8, bits 5cf0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3870: int srcreg = (ipc->opcode >> 0) & 7; ! 3871: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3872: uint8 cc = (NFLAG == VFLAG); ! 3873: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3874: ! 3875: storebyte(srcaddr, outdata); ! 3876: PC+= 4; ! 3877: } ! 3878: ! 3879: void cpu_op_974a(t_ipc *ipc) /* Scc */ { ! 3880: /* mask fff8, bits 5df0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3881: int srcreg = (ipc->opcode >> 0) & 7; ! 3882: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3883: uint8 cc = (NFLAG != VFLAG); ! 3884: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3885: ! 3886: storebyte(srcaddr, outdata); ! 3887: PC+= 4; ! 3888: } ! 3889: ! 3890: void cpu_op_975a(t_ipc *ipc) /* Scc */ { ! 3891: /* mask fff8, bits 5ef0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3892: int srcreg = (ipc->opcode >> 0) & 7; ! 3893: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3894: uint8 cc = !ZFLAG && (NFLAG == VFLAG); ! 3895: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3896: ! 3897: storebyte(srcaddr, outdata); ! 3898: PC+= 4; ! 3899: } ! 3900: ! 3901: void cpu_op_976a(t_ipc *ipc) /* Scc */ { ! 3902: /* mask fff8, bits 5ff0, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3903: int srcreg = (ipc->opcode >> 0) & 7; ! 3904: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 3905: uint8 cc = ZFLAG || (NFLAG != VFLAG); ! 3906: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3907: ! 3908: storebyte(srcaddr, outdata); ! 3909: PC+= 4; ! 3910: } ! 3911: ! 3912: void cpu_op_977a(t_ipc *ipc) /* Scc */ { ! 3913: /* mask ffff, bits 50f8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3914: uint32 srcaddr = ipc->src; ! 3915: uint8 cc = 1; ! 3916: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3917: ! 3918: storebyte(srcaddr, outdata); ! 3919: PC+= 4; ! 3920: } ! 3921: ! 3922: void cpu_op_978a(t_ipc *ipc) /* Scc */ { ! 3923: /* mask ffff, bits 52f8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3924: uint32 srcaddr = ipc->src; ! 3925: uint8 cc = !(CFLAG || ZFLAG); ! 3926: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3927: ! 3928: storebyte(srcaddr, outdata); ! 3929: PC+= 4; ! 3930: } ! 3931: ! 3932: void cpu_op_979a(t_ipc *ipc) /* Scc */ { ! 3933: /* mask ffff, bits 53f8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3934: uint32 srcaddr = ipc->src; ! 3935: uint8 cc = CFLAG || ZFLAG; ! 3936: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3937: ! 3938: storebyte(srcaddr, outdata); ! 3939: PC+= 4; ! 3940: } ! 3941: ! 3942: void cpu_op_980a(t_ipc *ipc) /* Scc */ { ! 3943: /* mask ffff, bits 54f8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3944: uint32 srcaddr = ipc->src; ! 3945: uint8 cc = !CFLAG; ! 3946: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3947: ! 3948: storebyte(srcaddr, outdata); ! 3949: PC+= 4; ! 3950: } ! 3951: ! 3952: void cpu_op_981a(t_ipc *ipc) /* Scc */ { ! 3953: /* mask ffff, bits 55f8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3954: uint32 srcaddr = ipc->src; ! 3955: uint8 cc = CFLAG; ! 3956: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3957: ! 3958: storebyte(srcaddr, outdata); ! 3959: PC+= 4; ! 3960: } ! 3961: ! 3962: void cpu_op_982a(t_ipc *ipc) /* Scc */ { ! 3963: /* mask ffff, bits 56f8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3964: uint32 srcaddr = ipc->src; ! 3965: uint8 cc = !ZFLAG; ! 3966: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3967: ! 3968: storebyte(srcaddr, outdata); ! 3969: PC+= 4; ! 3970: } ! 3971: ! 3972: void cpu_op_983a(t_ipc *ipc) /* Scc */ { ! 3973: /* mask ffff, bits 57f8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3974: uint32 srcaddr = ipc->src; ! 3975: uint8 cc = ZFLAG; ! 3976: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3977: ! 3978: storebyte(srcaddr, outdata); ! 3979: PC+= 4; ! 3980: } ! 3981: ! 3982: void cpu_op_984a(t_ipc *ipc) /* Scc */ { ! 3983: /* mask ffff, bits 58f8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3984: uint32 srcaddr = ipc->src; ! 3985: uint8 cc = !VFLAG; ! 3986: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3987: ! 3988: storebyte(srcaddr, outdata); ! 3989: PC+= 4; ! 3990: } ! 3991: ! 3992: void cpu_op_985a(t_ipc *ipc) /* Scc */ { ! 3993: /* mask ffff, bits 59f8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 3994: uint32 srcaddr = ipc->src; ! 3995: uint8 cc = VFLAG; ! 3996: uint8 outdata = cc ? (uint8)(-1) : 0; ! 3997: ! 3998: storebyte(srcaddr, outdata); ! 3999: PC+= 4; ! 4000: } ! 4001: ! 4002: void cpu_op_986a(t_ipc *ipc) /* Scc */ { ! 4003: /* mask ffff, bits 5af8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4004: uint32 srcaddr = ipc->src; ! 4005: uint8 cc = !NFLAG; ! 4006: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4007: ! 4008: storebyte(srcaddr, outdata); ! 4009: PC+= 4; ! 4010: } ! 4011: ! 4012: void cpu_op_987a(t_ipc *ipc) /* Scc */ { ! 4013: /* mask ffff, bits 5bf8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4014: uint32 srcaddr = ipc->src; ! 4015: uint8 cc = NFLAG; ! 4016: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4017: ! 4018: storebyte(srcaddr, outdata); ! 4019: PC+= 4; ! 4020: } ! 4021: ! 4022: void cpu_op_988a(t_ipc *ipc) /* Scc */ { ! 4023: /* mask ffff, bits 5cf8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4024: uint32 srcaddr = ipc->src; ! 4025: uint8 cc = (NFLAG == VFLAG); ! 4026: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4027: ! 4028: storebyte(srcaddr, outdata); ! 4029: PC+= 4; ! 4030: } ! 4031: ! 4032: void cpu_op_989a(t_ipc *ipc) /* Scc */ { ! 4033: /* mask ffff, bits 5df8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4034: uint32 srcaddr = ipc->src; ! 4035: uint8 cc = (NFLAG != VFLAG); ! 4036: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4037: ! 4038: storebyte(srcaddr, outdata); ! 4039: PC+= 4; ! 4040: } ! 4041: ! 4042: void cpu_op_990a(t_ipc *ipc) /* Scc */ { ! 4043: /* mask ffff, bits 5ef8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4044: uint32 srcaddr = ipc->src; ! 4045: uint8 cc = !ZFLAG && (NFLAG == VFLAG); ! 4046: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4047: ! 4048: storebyte(srcaddr, outdata); ! 4049: PC+= 4; ! 4050: } ! 4051: ! 4052: void cpu_op_991a(t_ipc *ipc) /* Scc */ { ! 4053: /* mask ffff, bits 5ff8, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4054: uint32 srcaddr = ipc->src; ! 4055: uint8 cc = ZFLAG || (NFLAG != VFLAG); ! 4056: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4057: ! 4058: storebyte(srcaddr, outdata); ! 4059: PC+= 4; ! 4060: } ! 4061: ! 4062: void cpu_op_992a(t_ipc *ipc) /* Scc */ { ! 4063: /* mask ffff, bits 50f9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4064: uint32 srcaddr = ipc->src; ! 4065: uint8 cc = 1; ! 4066: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4067: ! 4068: storebyte(srcaddr, outdata); ! 4069: PC+= 6; ! 4070: } ! 4071: ! 4072: void cpu_op_993a(t_ipc *ipc) /* Scc */ { ! 4073: /* mask ffff, bits 52f9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4074: uint32 srcaddr = ipc->src; ! 4075: uint8 cc = !(CFLAG || ZFLAG); ! 4076: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4077: ! 4078: storebyte(srcaddr, outdata); ! 4079: PC+= 6; ! 4080: } ! 4081: ! 4082: void cpu_op_994a(t_ipc *ipc) /* Scc */ { ! 4083: /* mask ffff, bits 53f9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4084: uint32 srcaddr = ipc->src; ! 4085: uint8 cc = CFLAG || ZFLAG; ! 4086: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4087: ! 4088: storebyte(srcaddr, outdata); ! 4089: PC+= 6; ! 4090: } ! 4091: ! 4092: void cpu_op_995a(t_ipc *ipc) /* Scc */ { ! 4093: /* mask ffff, bits 54f9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4094: uint32 srcaddr = ipc->src; ! 4095: uint8 cc = !CFLAG; ! 4096: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4097: ! 4098: storebyte(srcaddr, outdata); ! 4099: PC+= 6; ! 4100: } ! 4101: ! 4102: void cpu_op_996a(t_ipc *ipc) /* Scc */ { ! 4103: /* mask ffff, bits 55f9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4104: uint32 srcaddr = ipc->src; ! 4105: uint8 cc = CFLAG; ! 4106: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4107: ! 4108: storebyte(srcaddr, outdata); ! 4109: PC+= 6; ! 4110: } ! 4111: ! 4112: void cpu_op_997a(t_ipc *ipc) /* Scc */ { ! 4113: /* mask ffff, bits 56f9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4114: uint32 srcaddr = ipc->src; ! 4115: uint8 cc = !ZFLAG; ! 4116: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4117: ! 4118: storebyte(srcaddr, outdata); ! 4119: PC+= 6; ! 4120: } ! 4121: ! 4122: void cpu_op_998a(t_ipc *ipc) /* Scc */ { ! 4123: /* mask ffff, bits 57f9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4124: uint32 srcaddr = ipc->src; ! 4125: uint8 cc = ZFLAG; ! 4126: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4127: ! 4128: storebyte(srcaddr, outdata); ! 4129: PC+= 6; ! 4130: } ! 4131: ! 4132: void cpu_op_999a(t_ipc *ipc) /* Scc */ { ! 4133: /* mask ffff, bits 58f9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4134: uint32 srcaddr = ipc->src; ! 4135: uint8 cc = !VFLAG; ! 4136: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4137: ! 4138: storebyte(srcaddr, outdata); ! 4139: PC+= 6; ! 4140: } ! 4141: ! 4142: void cpu_op_1000a(t_ipc *ipc) /* Scc */ { ! 4143: /* mask ffff, bits 59f9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4144: uint32 srcaddr = ipc->src; ! 4145: uint8 cc = VFLAG; ! 4146: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4147: ! 4148: storebyte(srcaddr, outdata); ! 4149: PC+= 6; ! 4150: } ! 4151: ! 4152: void cpu_op_1001a(t_ipc *ipc) /* Scc */ { ! 4153: /* mask ffff, bits 5af9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4154: uint32 srcaddr = ipc->src; ! 4155: uint8 cc = !NFLAG; ! 4156: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4157: ! 4158: storebyte(srcaddr, outdata); ! 4159: PC+= 6; ! 4160: } ! 4161: ! 4162: void cpu_op_1002a(t_ipc *ipc) /* Scc */ { ! 4163: /* mask ffff, bits 5bf9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4164: uint32 srcaddr = ipc->src; ! 4165: uint8 cc = NFLAG; ! 4166: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4167: ! 4168: storebyte(srcaddr, outdata); ! 4169: PC+= 6; ! 4170: } ! 4171: ! 4172: void cpu_op_1003a(t_ipc *ipc) /* Scc */ { ! 4173: /* mask ffff, bits 5cf9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4174: uint32 srcaddr = ipc->src; ! 4175: uint8 cc = (NFLAG == VFLAG); ! 4176: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4177: ! 4178: storebyte(srcaddr, outdata); ! 4179: PC+= 6; ! 4180: } ! 4181: ! 4182: void cpu_op_1004a(t_ipc *ipc) /* Scc */ { ! 4183: /* mask ffff, bits 5df9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4184: uint32 srcaddr = ipc->src; ! 4185: uint8 cc = (NFLAG != VFLAG); ! 4186: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4187: ! 4188: storebyte(srcaddr, outdata); ! 4189: PC+= 6; ! 4190: } ! 4191: ! 4192: void cpu_op_1005a(t_ipc *ipc) /* Scc */ { ! 4193: /* mask ffff, bits 5ef9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4194: uint32 srcaddr = ipc->src; ! 4195: uint8 cc = !ZFLAG && (NFLAG == VFLAG); ! 4196: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4197: ! 4198: storebyte(srcaddr, outdata); ! 4199: PC+= 6; ! 4200: } ! 4201: ! 4202: void cpu_op_1006a(t_ipc *ipc) /* Scc */ { ! 4203: /* mask ffff, bits 5ff9, mnemonic 58, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4204: uint32 srcaddr = ipc->src; ! 4205: uint8 cc = ZFLAG || (NFLAG != VFLAG); ! 4206: uint8 outdata = cc ? (uint8)(-1) : 0; ! 4207: ! 4208: storebyte(srcaddr, outdata); ! 4209: PC+= 6; ! 4210: } ! 4211: ! 4212: void cpu_op_1007a(t_ipc *ipc) /* SF */ { ! 4213: /* mask fff8, bits 51c0, mnemonic 59, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 0, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4214: int srcreg = (ipc->opcode >> 0) & 7; ! 4215: uint8 outdata = 0; ! 4216: ! 4217: DATAREG(srcreg) = (DATAREG(srcreg) & ~0xff) | outdata; ! 4218: PC+= 2; ! 4219: } ! 4220: ! 4221: void cpu_op_1008a(t_ipc *ipc) /* SF */ { ! 4222: /* mask fff8, bits 51d0, mnemonic 59, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 2, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4223: int srcreg = (ipc->opcode >> 0) & 7; ! 4224: uint32 srcaddr = ADDRREG(srcreg); ! 4225: uint8 outdata = 0; ! 4226: ! 4227: storebyte(srcaddr, outdata); ! 4228: PC+= 2; ! 4229: } ! 4230: ! 4231: void cpu_op_1009a(t_ipc *ipc) /* SF */ { ! 4232: /* mask fff8, bits 51d8, mnemonic 59, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 3, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4233: int srcreg = (ipc->opcode >> 0) & 7; ! 4234: uint32 srcaddr = ADDRREG(srcreg); ! 4235: uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0); ! 4236: uint8 outdata = 0; ! 4237: ! 4238: storebyte(srcaddr, outdata); ! 4239: PC+= 2; ! 4240: } ! 4241: ! 4242: void cpu_op_1010a(t_ipc *ipc) /* SF */ { ! 4243: /* mask fff8, bits 51e0, mnemonic 59, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 4, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4244: int srcreg = (ipc->opcode >> 0) & 7; ! 4245: uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1)); ! 4246: uint8 outdata = 0; ! 4247: ! 4248: storebyte(srcaddr, outdata); ! 4249: PC+= 2; ! 4250: } ! 4251: ! 4252: void cpu_op_1011a(t_ipc *ipc) /* SF */ { ! 4253: /* mask fff8, bits 51e8, mnemonic 59, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 5, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4254: int srcreg = (ipc->opcode >> 0) & 7; ! 4255: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src; ! 4256: uint8 outdata = 0; ! 4257: ! 4258: storebyte(srcaddr, outdata); ! 4259: PC+= 4; ! 4260: } ! 4261: ! 4262: void cpu_op_1012a(t_ipc *ipc) /* SF */ { ! 4263: /* mask fff8, bits 51f0, mnemonic 59, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 6, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4264: int srcreg = (ipc->opcode >> 0) & 7; ! 4265: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc); ! 4266: uint8 outdata = 0; ! 4267: ! 4268: storebyte(srcaddr, outdata); ! 4269: PC+= 4; ! 4270: } ! 4271: ! 4272: void cpu_op_1013a(t_ipc *ipc) /* SF */ { ! 4273: /* mask ffff, bits 51f8, mnemonic 59, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 7, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4274: uint32 srcaddr = ipc->src; ! 4275: uint8 outdata = 0; ! 4276: ! 4277: storebyte(srcaddr, outdata); ! 4278: PC+= 4; ! 4279: } ! 4280: ! 4281: void cpu_op_1014a(t_ipc *ipc) /* SF */ { ! 4282: /* mask ffff, bits 51f9, mnemonic 59, priv 0, endblk 0, imm_notzero 0, used -1 set 0, size 1, stype 8, dtype 20, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4283: uint32 srcaddr = ipc->src; ! 4284: uint8 outdata = 0; ! 4285: ! 4286: storebyte(srcaddr, outdata); ! 4287: PC+= 6; ! 4288: } ! 4289: ! 4290: void cpu_op_1015a(t_ipc *ipc) /* DBcc */ { ! 4291: /* mask fff8, bits 50c8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4292: uint32 srcdata = ipc->src; ! 4293: int dstreg = (ipc->opcode >> 0) & 7; ! 4294: uint16 dstdata = DATAREG(dstreg); ! 4295: uint8 cc = 1; ! 4296: ! 4297: if (!cc) { ! 4298: dstdata-= 1; ! 4299: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4300: | (dstdata & 0xFFFF); ! 4301: if ((sint16)dstdata != -1) ! 4302: PC = srcdata; ! 4303: else ! 4304: PC+= 4; ! 4305: } else ! 4306: PC+= 4; ! 4307: } ! 4308: ! 4309: void cpu_op_1016a(t_ipc *ipc) /* DBcc */ { ! 4310: /* mask fff8, bits 52c8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4311: uint32 srcdata = ipc->src; ! 4312: int dstreg = (ipc->opcode >> 0) & 7; ! 4313: uint16 dstdata = DATAREG(dstreg); ! 4314: uint8 cc = !(CFLAG || ZFLAG); ! 4315: ! 4316: if (!cc) { ! 4317: dstdata-= 1; ! 4318: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4319: | (dstdata & 0xFFFF); ! 4320: if ((sint16)dstdata != -1) ! 4321: PC = srcdata; ! 4322: else ! 4323: PC+= 4; ! 4324: } else ! 4325: PC+= 4; ! 4326: } ! 4327: ! 4328: void cpu_op_1017a(t_ipc *ipc) /* DBcc */ { ! 4329: /* mask fff8, bits 53c8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4330: uint32 srcdata = ipc->src; ! 4331: int dstreg = (ipc->opcode >> 0) & 7; ! 4332: uint16 dstdata = DATAREG(dstreg); ! 4333: uint8 cc = CFLAG || ZFLAG; ! 4334: ! 4335: if (!cc) { ! 4336: dstdata-= 1; ! 4337: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4338: | (dstdata & 0xFFFF); ! 4339: if ((sint16)dstdata != -1) ! 4340: PC = srcdata; ! 4341: else ! 4342: PC+= 4; ! 4343: } else ! 4344: PC+= 4; ! 4345: } ! 4346: ! 4347: void cpu_op_1018a(t_ipc *ipc) /* DBcc */ { ! 4348: /* mask fff8, bits 54c8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4349: uint32 srcdata = ipc->src; ! 4350: int dstreg = (ipc->opcode >> 0) & 7; ! 4351: uint16 dstdata = DATAREG(dstreg); ! 4352: uint8 cc = !CFLAG; ! 4353: ! 4354: if (!cc) { ! 4355: dstdata-= 1; ! 4356: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4357: | (dstdata & 0xFFFF); ! 4358: if ((sint16)dstdata != -1) ! 4359: PC = srcdata; ! 4360: else ! 4361: PC+= 4; ! 4362: } else ! 4363: PC+= 4; ! 4364: } ! 4365: ! 4366: void cpu_op_1019a(t_ipc *ipc) /* DBcc */ { ! 4367: /* mask fff8, bits 55c8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4368: uint32 srcdata = ipc->src; ! 4369: int dstreg = (ipc->opcode >> 0) & 7; ! 4370: uint16 dstdata = DATAREG(dstreg); ! 4371: uint8 cc = CFLAG; ! 4372: ! 4373: if (!cc) { ! 4374: dstdata-= 1; ! 4375: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4376: | (dstdata & 0xFFFF); ! 4377: if ((sint16)dstdata != -1) ! 4378: PC = srcdata; ! 4379: else ! 4380: PC+= 4; ! 4381: } else ! 4382: PC+= 4; ! 4383: } ! 4384: ! 4385: void cpu_op_1020a(t_ipc *ipc) /* DBcc */ { ! 4386: /* mask fff8, bits 56c8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4387: uint32 srcdata = ipc->src; ! 4388: int dstreg = (ipc->opcode >> 0) & 7; ! 4389: uint16 dstdata = DATAREG(dstreg); ! 4390: uint8 cc = !ZFLAG; ! 4391: ! 4392: if (!cc) { ! 4393: dstdata-= 1; ! 4394: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4395: | (dstdata & 0xFFFF); ! 4396: if ((sint16)dstdata != -1) ! 4397: PC = srcdata; ! 4398: else ! 4399: PC+= 4; ! 4400: } else ! 4401: PC+= 4; ! 4402: } ! 4403: ! 4404: void cpu_op_1021a(t_ipc *ipc) /* DBcc */ { ! 4405: /* mask fff8, bits 57c8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4406: uint32 srcdata = ipc->src; ! 4407: int dstreg = (ipc->opcode >> 0) & 7; ! 4408: uint16 dstdata = DATAREG(dstreg); ! 4409: uint8 cc = ZFLAG; ! 4410: ! 4411: if (!cc) { ! 4412: dstdata-= 1; ! 4413: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4414: | (dstdata & 0xFFFF); ! 4415: if ((sint16)dstdata != -1) ! 4416: PC = srcdata; ! 4417: else ! 4418: PC+= 4; ! 4419: } else ! 4420: PC+= 4; ! 4421: } ! 4422: ! 4423: void cpu_op_1022a(t_ipc *ipc) /* DBcc */ { ! 4424: /* mask fff8, bits 58c8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4425: uint32 srcdata = ipc->src; ! 4426: int dstreg = (ipc->opcode >> 0) & 7; ! 4427: uint16 dstdata = DATAREG(dstreg); ! 4428: uint8 cc = !VFLAG; ! 4429: ! 4430: if (!cc) { ! 4431: dstdata-= 1; ! 4432: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4433: | (dstdata & 0xFFFF); ! 4434: if ((sint16)dstdata != -1) ! 4435: PC = srcdata; ! 4436: else ! 4437: PC+= 4; ! 4438: } else ! 4439: PC+= 4; ! 4440: } ! 4441: ! 4442: void cpu_op_1023a(t_ipc *ipc) /* DBcc */ { ! 4443: /* mask fff8, bits 59c8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4444: uint32 srcdata = ipc->src; ! 4445: int dstreg = (ipc->opcode >> 0) & 7; ! 4446: uint16 dstdata = DATAREG(dstreg); ! 4447: uint8 cc = VFLAG; ! 4448: ! 4449: if (!cc) { ! 4450: dstdata-= 1; ! 4451: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4452: | (dstdata & 0xFFFF); ! 4453: if ((sint16)dstdata != -1) ! 4454: PC = srcdata; ! 4455: else ! 4456: PC+= 4; ! 4457: } else ! 4458: PC+= 4; ! 4459: } ! 4460: ! 4461: void cpu_op_1024a(t_ipc *ipc) /* DBcc */ { ! 4462: /* mask fff8, bits 5ac8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4463: uint32 srcdata = ipc->src; ! 4464: int dstreg = (ipc->opcode >> 0) & 7; ! 4465: uint16 dstdata = DATAREG(dstreg); ! 4466: uint8 cc = !NFLAG; ! 4467: ! 4468: if (!cc) { ! 4469: dstdata-= 1; ! 4470: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4471: | (dstdata & 0xFFFF); ! 4472: if ((sint16)dstdata != -1) ! 4473: PC = srcdata; ! 4474: else ! 4475: PC+= 4; ! 4476: } else ! 4477: PC+= 4; ! 4478: } ! 4479: ! 4480: void cpu_op_1025a(t_ipc *ipc) /* DBcc */ { ! 4481: /* mask fff8, bits 5bc8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4482: uint32 srcdata = ipc->src; ! 4483: int dstreg = (ipc->opcode >> 0) & 7; ! 4484: uint16 dstdata = DATAREG(dstreg); ! 4485: uint8 cc = NFLAG; ! 4486: ! 4487: if (!cc) { ! 4488: dstdata-= 1; ! 4489: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4490: | (dstdata & 0xFFFF); ! 4491: if ((sint16)dstdata != -1) ! 4492: PC = srcdata; ! 4493: else ! 4494: PC+= 4; ! 4495: } else ! 4496: PC+= 4; ! 4497: } ! 4498: ! 4499: void cpu_op_1026a(t_ipc *ipc) /* DBcc */ { ! 4500: /* mask fff8, bits 5cc8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4501: uint32 srcdata = ipc->src; ! 4502: int dstreg = (ipc->opcode >> 0) & 7; ! 4503: uint16 dstdata = DATAREG(dstreg); ! 4504: uint8 cc = (NFLAG == VFLAG); ! 4505: ! 4506: if (!cc) { ! 4507: dstdata-= 1; ! 4508: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4509: | (dstdata & 0xFFFF); ! 4510: if ((sint16)dstdata != -1) ! 4511: PC = srcdata; ! 4512: else ! 4513: PC+= 4; ! 4514: } else ! 4515: PC+= 4; ! 4516: } ! 4517: ! 4518: void cpu_op_1027a(t_ipc *ipc) /* DBcc */ { ! 4519: /* mask fff8, bits 5dc8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4520: uint32 srcdata = ipc->src; ! 4521: int dstreg = (ipc->opcode >> 0) & 7; ! 4522: uint16 dstdata = DATAREG(dstreg); ! 4523: uint8 cc = (NFLAG != VFLAG); ! 4524: ! 4525: if (!cc) { ! 4526: dstdata-= 1; ! 4527: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4528: | (dstdata & 0xFFFF); ! 4529: if ((sint16)dstdata != -1) ! 4530: PC = srcdata; ! 4531: else ! 4532: PC+= 4; ! 4533: } else ! 4534: PC+= 4; ! 4535: } ! 4536: ! 4537: void cpu_op_1028a(t_ipc *ipc) /* DBcc */ { ! 4538: /* mask fff8, bits 5ec8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4539: uint32 srcdata = ipc->src; ! 4540: int dstreg = (ipc->opcode >> 0) & 7; ! 4541: uint16 dstdata = DATAREG(dstreg); ! 4542: uint8 cc = !ZFLAG && (NFLAG == VFLAG); ! 4543: ! 4544: if (!cc) { ! 4545: dstdata-= 1; ! 4546: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4547: | (dstdata & 0xFFFF); ! 4548: if ((sint16)dstdata != -1) ! 4549: PC = srcdata; ! 4550: else ! 4551: PC+= 4; ! 4552: } else ! 4553: PC+= 4; ! 4554: } ! 4555: ! 4556: void cpu_op_1029a(t_ipc *ipc) /* DBcc */ { ! 4557: /* mask fff8, bits 5fc8, mnemonic 60, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4558: uint32 srcdata = ipc->src; ! 4559: int dstreg = (ipc->opcode >> 0) & 7; ! 4560: uint16 dstdata = DATAREG(dstreg); ! 4561: uint8 cc = ZFLAG || (NFLAG != VFLAG); ! 4562: ! 4563: if (!cc) { ! 4564: dstdata-= 1; ! 4565: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) ! 4566: | (dstdata & 0xFFFF); ! 4567: if ((sint16)dstdata != -1) ! 4568: PC = srcdata; ! 4569: else ! 4570: PC+= 4; ! 4571: } else ! 4572: PC+= 4; ! 4573: } ! 4574: ! 4575: void cpu_op_1030a(t_ipc *ipc) /* DBRA */ { ! 4576: /* mask fff8, bits 51c8, mnemonic 61, priv 0, endblk -1, imm_notzero 0, used -1 set 0, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 0, immvalue 0 */ ! 4577: uint32 srcdata = ipc->src; ! 4578: int dstreg = (ipc->opcode >> 0) & 7; ! 4579: uint16 dstdata = DATAREG(dstreg); ! 4580: ! 4581: dstdata-= 1; ! 4582: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xFFFF) | (dstdata & 0xFFFF); ! 4583: if ((sint16)dstdata != -1) ! 4584: PC = srcdata; ! 4585: else ! 4586: PC+= 4; ! 4587: } ! 4588:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.