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