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